Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 55259)
+++ /trunk/Config.kmk	(revision 55260)
@@ -221,5 +221,5 @@
 #       publisher so that RTStrVersionCompare have a chance of comparing
 #       prerelease from different publishers correctly.
-VBOX_VERSION_STRING = $(VBOX_VERSION_STRING_RAW)_BETA1$(VBOX_BUILD_PUBLISHER)
+VBOX_VERSION_STRING = $(VBOX_VERSION_STRING_RAW)_BETA2$(VBOX_BUILD_PUBLISHER)
 
 # Force the additions.sh script to get an exact additions build when we're doing the release.
Index: /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.asm	(revision 55259)
+++ /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.asm	(revision 55260)
@@ -165,9 +165,9 @@
 
 
-section VGAROM progbits vstart=0x0 align=1 ; size=0x93e class=CODE group=AUTO
+section VGAROM progbits vstart=0x0 align=1 ; size=0x994 class=CODE group=AUTO
     db  055h, 0aah, 040h, 0e9h, 062h, 00ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 049h, 042h
     db  04dh, 000h
-vgabios_int10_handler:                       ; 0xc0022 LB 0x585
+vgabios_int10_handler:                       ; 0xc0022 LB 0x54e
     pushfw                                    ; 9c
     cmp ah, 00fh                              ; 80 fc 0f
@@ -223,29 +223,29 @@
     cmp AL, strict byte 003h                  ; 3c 03
     jne short 000afh                          ; 75 05
-    call 007b7h                               ; e8 0a 07
+    call 0080dh                               ; e8 60 07
     jmp short 000f3h                          ; eb 44
     cmp AL, strict byte 005h                  ; 3c 05
     jne short 000b8h                          ; 75 05
-    call 007dch                               ; e8 26 07
+    call 00832h                               ; e8 7c 07
     jmp short 000f3h                          ; eb 3b
     cmp AL, strict byte 006h                  ; 3c 06
     jne short 000c1h                          ; 75 05
-    call 00809h                               ; e8 4a 07
+    call 0085fh                               ; e8 a0 07
     jmp short 000f3h                          ; eb 32
     cmp AL, strict byte 007h                  ; 3c 07
     jne short 000cah                          ; 75 05
-    call 00856h                               ; e8 8e 07
+    call 008ach                               ; e8 e4 07
     jmp short 000f3h                          ; eb 29
     cmp AL, strict byte 008h                  ; 3c 08
     jne short 000d3h                          ; 75 05
-    call 0088ah                               ; e8 b9 07
+    call 008e0h                               ; e8 0f 08
     jmp short 000f3h                          ; eb 20
     cmp AL, strict byte 009h                  ; 3c 09
     jne short 000dch                          ; 75 05
-    call 008c1h                               ; e8 e7 07
+    call 00917h                               ; e8 3d 08
     jmp short 000f3h                          ; eb 17
     cmp AL, strict byte 00ah                  ; 3c 0a
     jne short 000e5h                          ; 75 05
-    call 00925h                               ; e8 42 08
+    call 0097bh                               ; e8 98 08
     jmp short 000f3h                          ; eb 0e
     push ES                                   ; 06
@@ -948,11 +948,22 @@
     pop DS                                    ; 1f
     retn                                      ; c3
-    add byte [bx+si], al                      ; 00 00
-    add byte [bx+si], al                      ; 00 00
-    add byte [bx+si+052h], dl                 ; 00 50 52
+    times 0x5 db 0
+do_out_dx_ax:                                ; 0xc0570 LB 0x7
+    xchg ah, al                               ; 86 c4
+    out DX, AL                                ; ee
+    xchg ah, al                               ; 86 c4
+    out DX, AL                                ; ee
+    retn                                      ; c3
+do_in_ax_dx:                                 ; 0xc0577 LB 0x40
+    in AL, DX                                 ; ec
+    xchg ah, al                               ; 86 c4
+    in AL, DX                                 ; ec
+    retn                                      ; c3
+    push ax                                   ; 50
+    push dx                                   ; 52
     mov dx, 003dah                            ; ba da 03
     in AL, DX                                 ; ec
     test AL, strict byte 008h                 ; a8 08
-    je short 00575h                           ; 74 fb
+    je short 00581h                           ; 74 fb
     pop dx                                    ; 5a
     pop ax                                    ; 58
@@ -963,5 +974,5 @@
     in AL, DX                                 ; ec
     test AL, strict byte 008h                 ; a8 08
-    jne short 00582h                          ; 75 fb
+    jne short 0058eh                          ; 75 fb
     pop dx                                    ; 5a
     pop ax                                    ; 58
@@ -970,48 +981,48 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00003h                ; b8 03 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 d0 ff
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 d1 ff
     cmp AL, strict byte 004h                  ; 3c 04
-    jbe short 005a5h                          ; 76 0b
+    jbe short 005b5h                          ; 76 0b
     db  08ah, 0e0h
     ; mov ah, al                                ; 8a e0
     shr ah, 003h                              ; c0 ec 03
     test AL, strict byte 007h                 ; a8 07
-    je short 005a5h                           ; 74 02
+    je short 005b5h                           ; 74 02
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
     pop dx                                    ; 5a
     retn                                      ; c3
-_dispi_get_max_bpp:                          ; 0xc05a7 LB 0x22
+_dispi_get_max_bpp:                          ; 0xc05b7 LB 0x26
     push dx                                   ; 52
     push bx                                   ; 53
-    call 005d9h                               ; e8 2d 00
+    call 005f1h                               ; e8 35 00
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
     or ax, strict byte 00002h                 ; 83 c8 02
-    call 005c9h                               ; e8 15 00
+    call 005ddh                               ; e8 19 00
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00003h                ; b8 03 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 a3 ff
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 a4 ff
     push ax                                   ; 50
     db  08bh, 0c3h
     ; mov ax, bx                                ; 8b c3
-    call 005c9h                               ; e8 04 00
+    call 005ddh                               ; e8 04 00
     pop ax                                    ; 58
     pop bx                                    ; 5b
     pop dx                                    ; 5a
     retn                                      ; c3
-dispi_set_enable_:                           ; 0xc05c9 LB 0x1e
+dispi_set_enable_:                           ; 0xc05dd LB 0x26
     push dx                                   ; 52
     push ax                                   ; 50
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00004h                ; b8 04 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 88 ff
     pop ax                                    ; 58
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 81 ff
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1019,18 +1030,18 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00004h                ; b8 04 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 75 ff
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 76 ff
     pop dx                                    ; 5a
     retn                                      ; c3
-dispi_set_bank_:                             ; 0xc05e7 LB 0x1e
+dispi_set_bank_:                             ; 0xc0603 LB 0x26
     push dx                                   ; 52
     push ax                                   ; 50
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00005h                ; b8 05 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 62 ff
     pop ax                                    ; 58
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 5b ff
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1038,15 +1049,15 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00005h                ; b8 05 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 4f ff
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 50 ff
     pop dx                                    ; 5a
     retn                                      ; c3
-_dispi_set_bank_farcall:                     ; 0xc0605 LB 0xbe
+_dispi_set_bank_farcall:                     ; 0xc0629 LB 0xe4
     cmp bx, 00100h                            ; 81 fb 00 01
-    je short 00629h                           ; 74 1e
+    je short 00653h                           ; 74 24
     db  00bh, 0dbh
     ; or bx, bx                                 ; 0b db
-    jne short 00637h                          ; 75 28
+    jne short 00665h                          ; 75 32
     db  08bh, 0c2h
     ; mov ax, dx                                ; 8b c2
@@ -1055,20 +1066,20 @@
     mov ax, strict word 00005h                ; b8 05 00
     mov dx, 001ceh                            ; ba ce 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 30 ff
     pop ax                                    ; 58
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
-    in ax, DX                                 ; ed
+    call 00570h                               ; e8 29 ff
+    call 00577h                               ; e8 2d ff
     pop dx                                    ; 5a
     db  03bh, 0d0h
     ; cmp dx, ax                                ; 3b d0
-    jne short 00637h                          ; 75 12
+    jne short 00665h                          ; 75 16
     mov ax, strict word 0004fh                ; b8 4f 00
     retf                                      ; cb
     mov ax, strict word 00005h                ; b8 05 00
     mov dx, 001ceh                            ; ba ce 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 14 ff
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 15 ff
     db  08bh, 0d0h
     ; mov dx, ax                                ; 8b d0
@@ -1080,8 +1091,8 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00008h                ; b8 08 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 fc fe
     pop ax                                    ; 58
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 f5 fe
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1089,7 +1100,7 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00008h                ; b8 08 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 e9 fe
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 ea fe
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1098,8 +1109,8 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00009h                ; b8 09 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 d6 fe
     pop ax                                    ; 58
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 cf fe
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1107,7 +1118,7 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00009h                ; b8 09 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 c3 fe
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 c4 fe
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1117,7 +1128,7 @@
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
-    call 0058ah                               ; e8 0b ff
+    call 00596h                               ; e8 d9 fe
     cmp AL, strict byte 004h                  ; 3c 04
-    jnbe short 00685h                         ; 77 02
+    jnbe short 006c3h                         ; 77 02
     shr bx, 1                                 ; d1 eb
     shr bx, 003h                              ; c1 eb 03
@@ -1131,13 +1142,13 @@
     pop ax                                    ; 58
     retn                                      ; c3
-    call 00677h                               ; e8 e0 ff
+    call 006b5h                               ; e8 e0 ff
     push dx                                   ; 52
     push ax                                   ; 50
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00006h                ; b8 06 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 90 fe
     pop ax                                    ; 58
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 89 fe
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1145,7 +1156,7 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00006h                ; b8 06 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 7d fe
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 7e fe
     pop dx                                    ; 5a
     retn                                      ; c3
@@ -1153,17 +1164,17 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00007h                ; b8 07 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 6b fe
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 6c fe
     pop dx                                    ; 5a
     retn                                      ; c3
-_vga_compat_setup:                           ; 0xc06c3 LB 0xe1
+_vga_compat_setup:                           ; 0xc070d LB 0xed
     push ax                                   ; 50
     push dx                                   ; 52
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00001h                ; b8 01 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 58 fe
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 59 fe
     push ax                                   ; 50
     mov dx, 003d4h                            ; ba d4 03
@@ -1179,10 +1190,10 @@
     out DX, ax                                ; ef
     pop ax                                    ; 58
-    call 00677h                               ; e8 90 ff
+    call 006b5h                               ; e8 80 ff
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00002h                ; b8 02 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 32 fe
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 33 fe
     dec ax                                    ; 48
     push ax                                   ; 50
@@ -1199,8 +1210,8 @@
     and AL, strict byte 0bdh                  ; 24 bd
     test ah, 001h                             ; f6 c4 01
-    je short 0070bh                           ; 74 02
+    je short 0075dh                           ; 74 02
     or AL, strict byte 002h                   ; 0c 02
     test ah, 002h                             ; f6 c4 02
-    je short 00712h                           ; 74 02
+    je short 00764h                           ; 74 02
     or AL, strict byte 040h                   ; 0c 40
     out DX, AL                                ; ee
@@ -1239,9 +1250,9 @@
     mov dx, 001ceh                            ; ba ce 01
     mov ax, strict word 00003h                ; b8 03 00
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 c2 fd
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 c3 fd
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 007a2h                           ; 72 40
+    jc short 007f8h                           ; 72 40
     mov dx, 003d4h                            ; ba d4 03
     mov AL, strict byte 014h                  ; b0 14
@@ -1280,5 +1291,5 @@
     pop dx                                    ; 5a
     pop ax                                    ; 58
-_vbe_has_vbe_display:                        ; 0xc07a4 LB 0x13
+_vbe_has_vbe_display:                        ; 0xc07fa LB 0x13
     push DS                                   ; 1e
     push bx                                   ; 53
@@ -1293,16 +1304,16 @@
     pop DS                                    ; 1f
     retn                                      ; c3
-vbe_biosfn_return_current_mode:              ; 0xc07b7 LB 0x25
+vbe_biosfn_return_current_mode:              ; 0xc080d LB 0x25
     push DS                                   ; 1e
     mov ax, strict word 00040h                ; b8 40 00
     mov ds, ax                                ; 8e d8
-    call 005d9h                               ; e8 19 fe
+    call 005f1h                               ; e8 db fd
     and ax, strict byte 00001h                ; 83 e0 01
-    je short 007ceh                           ; 74 09
+    je short 00824h                           ; 74 09
     mov bx, 000bah                            ; bb ba 00
     mov ax, word [bx]                         ; 8b 07
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
-    jne short 007d7h                          ; 75 09
+    jne short 0082dh                          ; 75 09
     mov bx, strict word 00049h                ; bb 49 00
     mov al, byte [bx]                         ; 8a 07
@@ -1314,22 +1325,22 @@
     pop DS                                    ; 1f
     retn                                      ; c3
-vbe_biosfn_display_window_control:           ; 0xc07dc LB 0x2d
+vbe_biosfn_display_window_control:           ; 0xc0832 LB 0x2d
     cmp bl, 000h                              ; 80 fb 00
-    jne short 00805h                          ; 75 24
+    jne short 0085bh                          ; 75 24
     cmp bh, 001h                              ; 80 ff 01
-    je short 007fch                           ; 74 16
-    jc short 007ech                           ; 72 04
+    je short 00852h                           ; 74 16
+    jc short 00842h                           ; 72 04
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
     db  08bh, 0c2h
     ; mov ax, dx                                ; 8b c2
-    call 005e7h                               ; e8 f6 fd
-    call 005f7h                               ; e8 03 fe
+    call 00603h                               ; e8 bc fd
+    call 00617h                               ; e8 cd fd
     db  03bh, 0c2h
     ; cmp ax, dx                                ; 3b c2
-    jne short 00805h                          ; 75 0d
+    jne short 0085bh                          ; 75 0d
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-    call 005f7h                               ; e8 f8 fd
+    call 00617h                               ; e8 c2 fd
     db  08bh, 0d0h
     ; mov dx, ax                                ; 8b d0
@@ -1338,16 +1349,16 @@
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
-vbe_biosfn_set_get_logical_scan_line_length: ; 0xc0809 LB 0x4d
+vbe_biosfn_set_get_logical_scan_line_length: ; 0xc085f LB 0x4d
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     cmp bl, 001h                              ; 80 fb 01
-    je short 00834h                           ; 74 24
+    je short 0088ah                           ; 74 24
     cmp bl, 002h                              ; 80 fb 02
-    je short 0081bh                           ; 74 06
-    jc short 00831h                           ; 72 1a
+    je short 00871h                           ; 74 06
+    jc short 00887h                           ; 72 1a
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
     push ax                                   ; 50
-    call 0058ah                               ; e8 6b fd
+    call 00596h                               ; e8 21 fd
     db  032h, 0ffh
     ; xor bh, bh                                ; 32 ff
@@ -1356,5 +1367,5 @@
     db  00ah, 0dbh
     ; or bl, bl                                 ; 0a db
-    jne short 0082ch                          ; 75 05
+    jne short 00882h                          ; 75 05
     sal ax, 003h                              ; c1 e0 03
     mov BL, strict byte 001h                  ; b3 01
@@ -1363,16 +1374,16 @@
     pop ax                                    ; 58
     div bx                                    ; f7 f3
-    call 00694h                               ; e8 60 fe
-    call 0058ah                               ; e8 53 fd
+    call 006d2h                               ; e8 48 fe
+    call 00596h                               ; e8 09 fd
     db  032h, 0ffh
     ; xor bh, bh                                ; 32 ff
     db  08ah, 0dch
     ; mov bl, ah                                ; 8a dc
-    call 006a7h                               ; e8 69 fe
+    call 006e9h                               ; e8 55 fe
     db  08bh, 0c8h
     ; mov cx, ax                                ; 8b c8
     db  00ah, 0dbh
     ; or bl, bl                                 ; 0a db
-    jne short 00849h                          ; 75 05
+    jne short 0089fh                          ; 75 05
     shr ax, 003h                              ; c1 e8 03
     mov BL, strict byte 001h                  ; b3 01
@@ -1380,31 +1391,31 @@
     db  08bh, 0d8h
     ; mov bx, ax                                ; 8b d8
-    call 006b5h                               ; e8 65 fe
+    call 006fbh                               ; e8 55 fe
     db  08bh, 0d0h
     ; mov dx, ax                                ; 8b d0
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-vbe_biosfn_set_get_display_start:            ; 0xc0856 LB 0x34
+vbe_biosfn_set_get_display_start:            ; 0xc08ac LB 0x34
     cmp bl, 080h                              ; 80 fb 80
-    je short 00866h                           ; 74 0b
+    je short 008bch                           ; 74 0b
     cmp bl, 001h                              ; 80 fb 01
-    je short 0087ah                           ; 74 1a
-    jc short 0086ch                           ; 72 0a
+    je short 008d0h                           ; 74 1a
+    jc short 008c2h                           ; 72 0a
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
-    call 0057dh                               ; e8 14 fd
-    call 00570h                               ; e8 04 fd
+    call 00589h                               ; e8 ca fc
+    call 0057ch                               ; e8 ba fc
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
-    call 0063bh                               ; e8 ca fd
+    call 00669h                               ; e8 a2 fd
     db  08bh, 0c2h
     ; mov ax, dx                                ; 8b c2
-    call 00659h                               ; e8 e3 fd
+    call 0068fh                               ; e8 c3 fd
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-    call 0064bh                               ; e8 ce fd
+    call 0067dh                               ; e8 aa fd
     db  08bh, 0c8h
     ; mov cx, ax                                ; 8b c8
-    call 00669h                               ; e8 e7 fd
+    call 006a3h                               ; e8 cb fd
     db  08bh, 0d0h
     ; mov dx, ax                                ; 8b d0
@@ -1413,23 +1424,23 @@
     mov ax, strict word 0004fh                ; b8 4f 00
     retn                                      ; c3
-vbe_biosfn_set_get_dac_palette_format:       ; 0xc088a LB 0x37
+vbe_biosfn_set_get_dac_palette_format:       ; 0xc08e0 LB 0x37
     cmp bl, 001h                              ; 80 fb 01
-    je short 008adh                           ; 74 1e
-    jc short 00895h                           ; 72 04
+    je short 00903h                           ; 74 1e
+    jc short 008ebh                           ; 72 04
     mov ax, 00100h                            ; b8 00 01
     retn                                      ; c3
-    call 005d9h                               ; e8 41 fd
+    call 005f1h                               ; e8 03 fd
     cmp bh, 006h                              ; 80 ff 06
-    je short 008a7h                           ; 74 0a
+    je short 008fdh                           ; 74 0a
     cmp bh, 008h                              ; 80 ff 08
-    jne short 008bdh                          ; 75 1b
+    jne short 00913h                          ; 75 1b
     or ax, strict byte 00020h                 ; 83 c8 20
-    jne short 008aah                          ; 75 03
+    jne short 00900h                          ; 75 03
     and ax, strict byte 0ffdfh                ; 83 e0 df
-    call 005c9h                               ; e8 1c fd
+    call 005ddh                               ; e8 da fc
     mov BH, strict byte 006h                  ; b7 06
-    call 005d9h                               ; e8 27 fd
+    call 005f1h                               ; e8 e9 fc
     and ax, strict byte 00020h                ; 83 e0 20
-    je short 008b9h                           ; 74 02
+    je short 0090fh                           ; 74 02
     mov BH, strict byte 008h                  ; b7 08
     mov ax, strict word 0004fh                ; b8 4f 00
@@ -1437,13 +1448,13 @@
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
-vbe_biosfn_set_get_palette_data:             ; 0xc08c1 LB 0x64
+vbe_biosfn_set_get_palette_data:             ; 0xc0917 LB 0x64
     test bl, bl                               ; 84 db
-    je short 008d4h                           ; 74 0f
+    je short 0092ah                           ; 74 0f
     cmp bl, 001h                              ; 80 fb 01
-    je short 008fch                           ; 74 32
+    je short 00952h                           ; 74 32
     cmp bl, 003h                              ; 80 fb 03
-    jbe short 00921h                          ; 76 52
+    jbe short 00977h                          ; 76 52
     cmp bl, 080h                              ; 80 fb 80
-    jne short 0091dh                          ; 75 49
+    jne short 00973h                          ; 75 49
     pushad                                    ; 66 60
     push DS                                   ; 1e
@@ -1464,5 +1475,5 @@
     rol eax, 008h                             ; 66 c1 c0 08
     out DX, AL                                ; ee
-    loop 008e2h                               ; e2 ed
+    loop 00938h                               ; e2 ed
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -1483,17 +1494,17 @@
     in AL, DX                                 ; ec
     stosd                                     ; 66 ab
-    loop 00907h                               ; e2 ee
+    loop 0095dh                               ; e2 ee
     popad                                     ; 66 61
-    jmp short 008f8h                          ; eb db
+    jmp short 0094eh                          ; eb db
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
     mov ax, 0024fh                            ; b8 4f 02
     retn                                      ; c3
-vbe_biosfn_return_protected_mode_interface: ; 0xc0925 LB 0x19
+vbe_biosfn_return_protected_mode_interface: ; 0xc097b LB 0x19
     test bl, bl                               ; 84 db
-    jne short 0093ah                          ; 75 11
+    jne short 00990h                          ; 75 11
     mov di, 0c000h                            ; bf 00 c0
     mov es, di                                ; 8e c7
-    mov di, 04600h                            ; bf 00 46
+    mov di, 04400h                            ; bf 00 44
     mov cx, 00115h                            ; b9 15 01
     db  02bh, 0cfh
@@ -1504,8 +1515,8 @@
     retn                                      ; c3
 
-  ; Padding 0xc2 bytes at 0xc093e
-  times 194 db 0
+  ; Padding 0x6c bytes at 0xc0994
+  times 108 db 0
 
-section _TEXT progbits vstart=0xa00 align=1 ; size=0x2f47 class=CODE group=AUTO
+section _TEXT progbits vstart=0xa00 align=1 ; size=0x2f57 class=CODE group=AUTO
 set_int_vector_:                             ; 0xc0a00 LB 0x1a
     push bx                                   ; 53
@@ -1561,5 +1572,5 @@
     call 00a1ah                               ; e8 ac ff
     call 00a36h                               ; e8 c5 ff
-    call 03476h                               ; e8 02 2a
+    call 03482h                               ; e8 0e 2a
     mov dx, strict word 00022h                ; ba 22 00
     mov ax, strict word 00010h                ; b8 10 00
@@ -1643,5 +1654,5 @@
     movzx bx, ch                              ; 0f b6 dd
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04635h], 000h                ; 80 bf 35 46 00
     jne short 00b5ah                          ; 75 2d
     mov dx, ax                                ; 89 c2
@@ -1659,5 +1670,5 @@
     mov dx, cx                                ; 89 ca
     add dx, ax                                ; 01 c2
-    mov ax, word [bx+04833h]                  ; 8b 87 33 48
+    mov ax, word [bx+04638h]                  ; 8b 87 38 46
     call 02f5ah                               ; e8 03 24
     mov word [ss:si], ax                      ; 36 89 04
@@ -1725,16 +1736,16 @@
     mov dx, 0010ch                            ; ba 0c 01
     jmp short 00b91h                          ; eb bf
-    mov ax, 05dafh                            ; b8 af 5d
+    mov ax, 05bf2h                            ; b8 f2 5b
     mov dx, 0c000h                            ; ba 00 c0
     jmp short 00b96h                          ; eb bc
-    mov ax, 055afh                            ; b8 af 55
+    mov ax, 053f2h                            ; b8 f2 53
     jmp short 00bd5h                          ; eb f6
-    mov ax, 059afh                            ; b8 af 59
+    mov ax, 057f2h                            ; b8 f2 57
     jmp short 00bd5h                          ; eb f1
-    mov ax, 07bafh                            ; b8 af 7b
+    mov ax, 079f2h                            ; b8 f2 79
     jmp short 00bd5h                          ; eb ec
-    mov ax, 06bafh                            ; b8 af 6b
+    mov ax, 069f2h                            ; b8 f2 69
     jmp short 00bd5h                          ; eb e7
-    mov ax, 07cdch                            ; b8 dc 7c
+    mov ax, 07b1fh                            ; b8 1f 7b
     jmp short 00bd5h                          ; eb e2
     jmp short 00bc4h                          ; eb cf
@@ -1758,7 +1769,7 @@
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04635h], 000h                ; 80 bf 35 46 00
     je near 00d27h                            ; 0f 84 fe 00
-    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
+    mov bl, byte [bx+04636h]                  ; 8a 9f 36 46
     cmp bl, 003h                              ; 80 fb 03
     jc short 00c43h                           ; 72 11
@@ -1819,5 +1830,5 @@
     movzx bx, cl                              ; 0f b6 d9
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
+    cmp byte [bx+04637h], 002h                ; 80 bf 37 46 02
     jne short 00cebh                          ; 75 1b
     mov cx, si                                ; 89 f1
@@ -2120,5 +2131,5 @@
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
+    cmp byte [si+04635h], 000h                ; 80 bc 35 46 00
     jne short 00f83h                          ; 75 40
     mov dx, strict word 0004ah                ; ba 4a 00
@@ -2147,8 +2158,8 @@
     imul bx, di                               ; 0f af df
     jmp short 00f95h                          ; eb 12
-    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
+    movzx bx, byte [bx+046b4h]                ; 0f b6 9f b4 46
     sal bx, 006h                              ; c1 e3 06
     movzx ax, cl                              ; 0f b6 c1
-    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
+    mov bx, word [bx+046cbh]                  ; 8b 9f cb 46
     imul bx, ax                               ; 0f af d8
     mov dx, strict word 00063h                ; ba 63 00
@@ -2199,5 +2210,5 @@
     and AL, strict byte 080h                  ; 24 80
     mov byte [bp-010h], al                    ; 88 46 f0
-    call 007a4h                               ; e8 b2 f7
+    call 007fah                               ; e8 08 f8
     test ax, ax                               ; 85 c0
     je short 01002h                           ; 74 0c
@@ -2218,13 +2229,13 @@
     je near 01363h                            ; 0f 84 43 03
     movzx si, al                              ; 0f b6 f0
-    mov al, byte [si+048afh]                  ; 8a 84 af 48
+    mov al, byte [si+046b4h]                  ; 8a 84 b4 46
     mov byte [bp-00eh], al                    ; 88 46 f2
     movzx bx, al                              ; 0f b6 d8
     sal bx, 006h                              ; c1 e3 06
-    movzx ax, byte [bx+048c3h]                ; 0f b6 87 c3 48
+    movzx ax, byte [bx+046c8h]                ; 0f b6 87 c8 46
     mov word [bp-018h], ax                    ; 89 46 e8
-    movzx ax, byte [bx+048c4h]                ; 0f b6 87 c4 48
+    movzx ax, byte [bx+046c9h]                ; 0f b6 87 c9 46
     mov word [bp-016h], ax                    ; 89 46 ea
-    movzx ax, byte [bx+048c5h]                ; 0f b6 87 c5 48
+    movzx ax, byte [bx+046cah]                ; 0f b6 87 ca 46
     mov word [bp-014h], ax                    ; 89 46 ec
     mov dx, 00087h                            ; ba 87 00
@@ -2242,5 +2253,5 @@
     mov bx, si                                ; 89 f3
     sal bx, 003h                              ; c1 e3 03
-    mov al, byte [bx+04835h]                  ; 8a 87 35 48
+    mov al, byte [bx+0463ah]                  ; 8a 87 3a 46
     mov dx, 003c6h                            ; ba c6 03
     out DX, AL                                ; ee
@@ -2248,5 +2259,5 @@
     mov dx, 003c8h                            ; ba c8 03
     out DX, AL                                ; ee
-    mov bl, byte [bx+04836h]                  ; 8a 9f 36 48
+    mov bl, byte [bx+0463bh]                  ; 8a 9f 3b 46
     cmp bl, 001h                              ; 80 fb 01
     jc short 01095h                           ; 72 0e
@@ -2259,11 +2270,11 @@
     test bl, bl                               ; 84 db
     jne short 010abh                          ; 75 12
-    mov di, 05043h                            ; bf 43 50
+    mov di, 04e48h                            ; bf 48 4e
     jmp short 010abh                          ; eb 0d
-    mov di, 05103h                            ; bf 03 51
+    mov di, 04f08h                            ; bf 08 4f
     jmp short 010abh                          ; eb 08
-    mov di, 051c3h                            ; bf c3 51
+    mov di, 04fc8h                            ; bf c8 4f
     jmp short 010abh                          ; eb 03
-    mov di, 05283h                            ; bf 83 52
+    mov di, 05088h                            ; bf 88 50
     xor bx, bx                                ; 31 db
     jmp short 010beh                          ; eb 0f
@@ -2278,6 +2289,6 @@
     movzx si, byte [bp-012h]                  ; 0f b6 76 ee
     sal si, 003h                              ; c1 e6 03
-    movzx si, byte [si+04836h]                ; 0f b6 b4 36 48
-    movzx dx, byte [si+048bfh]                ; 0f b6 94 bf 48
+    movzx si, byte [si+0463bh]                ; 0f b6 b4 3b 46
+    movzx dx, byte [si+046c4h]                ; 0f b6 94 c4 46
     cmp bx, dx                                ; 39 d3
     jnbe short 010afh                         ; 77 dc
@@ -2311,5 +2322,5 @@
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048e6h]                  ; 8a 84 e6 48
+    mov al, byte [si+046ebh]                  ; 8a 84 eb 46
     out DX, AL                                ; ee
     inc bx                                    ; 43
@@ -2335,5 +2346,5 @@
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048c7h]                  ; 8a 84 c7 48
+    mov al, byte [si+046cch]                  ; 8a 84 cc 46
     mov dx, 003c5h                            ; ba c5 03
     out DX, AL                                ; ee
@@ -2350,5 +2361,5 @@
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048fah]                  ; 8a 84 fa 48
+    mov al, byte [si+046ffh]                  ; 8a 84 ff 46
     mov dx, 003cfh                            ; ba cf 03
     out DX, AL                                ; ee
@@ -2357,5 +2368,5 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04831h], 001h                ; 80 bf 31 48 01
+    cmp byte [bx+04636h], 001h                ; 80 bf 36 46 01
     jne short 01188h                          ; 75 05
     mov dx, 003b4h                            ; ba b4 03
@@ -2377,10 +2388,10 @@
     add di, bx                                ; 01 df
     lea dx, [si+001h]                         ; 8d 54 01
-    mov al, byte [di+048cdh]                  ; 8a 85 cd 48
+    mov al, byte [di+046d2h]                  ; 8a 85 d2 46
     out DX, AL                                ; ee
     inc bx                                    ; 43
     jmp short 01195h                          ; eb e0
     mov bx, cx                                ; 89 cb
-    mov al, byte [bx+048cch]                  ; 8a 87 cc 48
+    mov al, byte [bx+046d1h]                  ; 8a 87 d1 46
     mov dx, 003c2h                            ; ba c2 03
     out DX, AL                                ; ee
@@ -2396,7 +2407,7 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04635h], 000h                ; 80 bf 35 46 00
     jne short 011f2h                          ; 75 13
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04638h]                       ; 8e 87 38 46
     mov cx, 04000h                            ; b9 00 40
     mov ax, 00720h                            ; b8 20 07
@@ -2408,5 +2419,5 @@
     cmp byte [bp-00ch], 00dh                  ; 80 7e f4 0d
     jnc short 0120ah                          ; 73 12
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04638h]                       ; 8e 87 38 46
     mov cx, 04000h                            ; b9 00 40
     xor ax, ax                                ; 31 c0
@@ -2426,5 +2437,5 @@
     mov AL, strict byte 00fh                  ; b0 0f
     out DX, AL                                ; ee
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04638h]                       ; 8e 87 38 46
     mov cx, 08000h                            ; b9 00 80
     xor ax, ax                                ; 31 c0
@@ -2445,5 +2456,5 @@
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     sal bx, 006h                              ; c1 e3 06
-    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
+    mov bx, word [bx+046cbh]                  ; 8b 9f cb 46
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
@@ -2484,5 +2495,5 @@
     call 02f4ch                               ; e8 8b 1c
     mov cx, ds                                ; 8c d9
-    mov bx, 05593h                            ; bb 93 55
+    mov bx, 053d6h                            ; bb d6 53
     mov dx, 000a8h                            ; ba a8 00
     mov ax, strict word 00040h                ; b8 40 00
@@ -2498,5 +2509,5 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04635h], 000h                ; 80 bf 35 46 00
     jne short 012fch                          ; 75 09
     mov dx, strict word 00007h                ; ba 07 00
@@ -2516,5 +2527,5 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04635h], 000h                ; 80 bf 35 46 00
     jne short 01333h                          ; 75 10
     xor bl, bl                                ; 30 db
@@ -2526,5 +2537,5 @@
     mov AH, strict byte 011h                  ; b4 11
     int 010h                                  ; cd 10
-    mov dx, 059afh                            ; ba af 59
+    mov dx, 057f2h                            ; ba f2 57
     mov ax, strict word 0001fh                ; b8 1f 00
     call 00a00h                               ; e8 c4 f6
@@ -2536,11 +2547,11 @@
     cmp ax, strict word 00008h                ; 3d 08 00
     jne short 01363h                          ; 75 15
-    mov dx, 055afh                            ; ba af 55
+    mov dx, 053f2h                            ; ba f2 53
     mov ax, strict word 00043h                ; b8 43 00
     call 00a00h                               ; e8 a9 f6
     jmp short 01363h                          ; eb 0a
-    mov dx, 05dafh                            ; ba af 5d
+    mov dx, 05bf2h                            ; ba f2 5b
     jmp short 01351h                          ; eb f3
-    mov dx, 06bafh                            ; ba af 6b
+    mov dx, 069f2h                            ; ba f2 69
     jmp short 01351h                          ; eb ee
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -2852,5 +2863,5 @@
     mov ax, word [bp-016h]                    ; 8b 46 ea
     imul ax, cx                               ; 0f af c1
-    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
+    cmp byte [di+04635h], 000h                ; 80 bd 35 46 00
     jne near 017d1h                           ; 0f 85 9f 01
     mov dx, ax                                ; 89 c2
@@ -2875,5 +2886,5 @@
     sal dx, 008h                              ; c1 e2 08
     add dx, strict byte 00020h                ; 83 c2 20
-    mov es, [di+04833h]                       ; 8e 85 33 48
+    mov es, [di+04638h]                       ; 8e 85 38 46
     mov cx, ax                                ; 89 c1
     mov ax, dx                                ; 89 d0
@@ -2909,5 +2920,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov es, [si+04833h]                       ; 8e 84 33 48
+    mov es, [si+04638h]                       ; 8e 84 38 46
     cld                                       ; fc
     jcxz 016ddh                               ; e3 02
@@ -2923,5 +2934,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
+    mov ax, word [si+04638h]                  ; 8b 84 38 46
     mov si, word [bp-014h]                    ; 8b 76 ec
     imul si, word [bp-016h]                   ; 0f af 76 ea
@@ -2967,5 +2978,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov es, [si+04833h]                       ; 8e 84 33 48
+    mov es, [si+04638h]                       ; 8e 84 38 46
     cld                                       ; fc
     jcxz 0177eh                               ; e3 02
@@ -2982,5 +2993,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
+    mov ax, word [si+04638h]                  ; 8b 84 38 46
     mov si, word [bp-014h]                    ; 8b 76 ec
     imul si, word [bp-016h]                   ; 0f af 76 ea
@@ -3002,9 +3013,9 @@
     dec word [bp-014h]                        ; ff 4e ec
     jmp near 0172dh                           ; e9 5c ff
-    movzx bx, byte [si+048afh]                ; 0f b6 9c af 48
+    movzx bx, byte [si+046b4h]                ; 0f b6 9c b4 46
     sal bx, 006h                              ; c1 e3 06
-    mov dl, byte [bx+048c5h]                  ; 8a 97 c5 48
+    mov dl, byte [bx+046cah]                  ; 8a 97 ca 46
     mov byte [bp-00ah], dl                    ; 88 56 f6
-    mov bl, byte [di+04831h]                  ; 8a 9d 31 48
+    mov bl, byte [di+04636h]                  ; 8a 9d 36 46
     cmp bl, 004h                              ; 80 fb 04
     je short 017f8h                           ; 74 0f
@@ -3039,5 +3050,5 @@
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     sal bx, 003h                              ; c1 e3 03
-    mov es, [bx+04833h]                       ; 8e 87 33 48
+    mov es, [bx+04638h]                       ; 8e 87 38 46
     xor di, di                                ; 31 ff
     cld                                       ; fc
@@ -3121,5 +3132,5 @@
     dec word [bp-014h]                        ; ff 4e ec
     jmp short 018c6h                          ; eb 8f
-    mov dl, byte [di+04832h]                  ; 8a 95 32 48
+    mov dl, byte [di+04637h]                  ; 8a 95 37 46
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
     jne short 0197eh                          ; 75 3d
@@ -3139,5 +3150,5 @@
     imul cx, ax                               ; 0f af c8
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    mov es, [di+04833h]                       ; 8e 85 33 48
+    mov es, [di+04638h]                       ; 8e 85 38 46
     xor di, di                                ; 31 ff
     cld                                       ; fc
@@ -3241,9 +3252,9 @@
     cmp byte [bp+006h], 00eh                  ; 80 7e 06 0e
     jne short 01a9bh                          ; 75 0a
-    mov di, 05dafh                            ; bf af 5d
+    mov di, 05bf2h                            ; bf f2 5b
     jmp short 01a9eh                          ; eb 08
-    mov di, 06bafh                            ; bf af 6b
+    mov di, 069f2h                            ; bf f2 69
     jmp short 01a9eh                          ; eb 03
-    mov di, 055afh                            ; bf af 55
+    mov di, 053f2h                            ; bf f2 53
     movzx si, cl                              ; 0f b6 f1
     movzx bx, byte [bp+006h]                  ; 0f b6 5e 06
@@ -3332,5 +3343,5 @@
     sub sp, strict byte 00008h                ; 83 ec 08
     mov byte [bp-008h], dl                    ; 88 56 f8
-    mov si, 055afh                            ; be af 55
+    mov si, 053f2h                            ; be f2 53
     xor bh, bh                                ; 30 ff
     movzx di, byte [bp+006h]                  ; 0f b6 7e 06
@@ -3446,5 +3457,5 @@
     sub sp, strict byte 00008h                ; 83 ec 08
     mov byte [bp-006h], dl                    ; 88 56 fa
-    mov di, 055afh                            ; bf af 55
+    mov di, 053f2h                            ; bf f2 53
     movzx dx, cl                              ; 0f b6 d1
     movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
@@ -3541,5 +3552,5 @@
     mov di, bx                                ; 89 df
     sal di, 003h                              ; c1 e7 03
-    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
+    cmp byte [di+04635h], 000h                ; 80 bd 35 46 00
     jne short 01dcdh                          ; 75 47
     mov bx, word [bp-018h]                    ; 8b 5e e8
@@ -3562,5 +3573,5 @@
     mov word [bp-01ah], ax                    ; 89 46 e6
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov es, [di+04833h]                       ; 8e 85 33 48
+    mov es, [di+04638h]                       ; 8e 85 38 46
     mov cx, si                                ; 89 f1
     mov di, dx                                ; 89 d7
@@ -3569,9 +3580,9 @@
     rep stosw                                 ; f3 ab
     jmp near 01e73h                           ; e9 a6 00
-    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
+    movzx bx, byte [bx+046b4h]                ; 0f b6 9f b4 46
     sal bx, 006h                              ; c1 e3 06
-    mov al, byte [bx+048c5h]                  ; 8a 87 c5 48
+    mov al, byte [bx+046cah]                  ; 8a 87 ca 46
     mov byte [bp-008h], al                    ; 88 46 f8
-    mov al, byte [di+04832h]                  ; 8a 85 32 48
+    mov al, byte [di+04637h]                  ; 8a 85 37 46
     mov byte [bp-014h], al                    ; 88 46 ec
     dec si                                    ; 4e
@@ -3583,5 +3594,5 @@
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     sal bx, 003h                              ; c1 e3 03
-    mov al, byte [bx+04831h]                  ; 8a 87 31 48
+    mov al, byte [bx+04636h]                  ; 8a 87 36 46
     cmp AL, strict byte 003h                  ; 3c 03
     jc short 01e11h                           ; 72 0c
@@ -3671,5 +3682,5 @@
     mov bx, di                                ; 89 fb
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04635h], 000h                ; 80 bf 35 46 00
     jne short 01f38h                          ; 75 4a
     mov dx, word [bp-018h]                    ; 8b 56 e8
@@ -3693,5 +3704,5 @@
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     sal bx, 003h                              ; c1 e3 03
-    mov di, word [bx+04833h]                  ; 8b bf 33 48
+    mov di, word [bx+04638h]                  ; 8b bf 38 46
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
@@ -3701,9 +3712,9 @@
     inc cx                                    ; 41
     jmp short 01f14h                          ; eb dc
-    movzx di, byte [di+048afh]                ; 0f b6 bd af 48
+    movzx di, byte [di+046b4h]                ; 0f b6 bd b4 46
     sal di, 006h                              ; c1 e7 06
-    mov al, byte [di+048c5h]                  ; 8a 85 c5 48
+    mov al, byte [di+046cah]                  ; 8a 85 ca 46
     mov byte [bp-00ah], al                    ; 88 46 f6
-    mov al, byte [bx+04832h]                  ; 8a 87 32 48
+    mov al, byte [bx+04637h]                  ; 8a 87 37 46
     mov byte [bp-008h], al                    ; 88 46 f8
     dec si                                    ; 4e
@@ -3715,5 +3726,5 @@
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     sal bx, 003h                              ; c1 e3 03
-    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
+    mov bl, byte [bx+04636h]                  ; 8a 9f 36 46
     cmp bl, 003h                              ; 80 fb 03
     jc short 01f7fh                           ; 72 0e
@@ -3778,7 +3789,7 @@
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
+    cmp byte [bx+04635h], 000h                ; 80 bf 35 46 00
     je near 0212bh                            ; 0f 84 0f 01
-    mov al, byte [bx+04831h]                  ; 8a 87 31 48
+    mov al, byte [bx+04636h]                  ; 8a 87 36 46
     cmp AL, strict byte 003h                  ; 3c 03
     jc short 02033h                           ; 72 0f
@@ -3834,5 +3845,5 @@
     shr ax, 1                                 ; d1 e8
     imul ax, ax, strict byte 00050h           ; 6b c0 50
-    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
+    cmp byte [bx+04637h], 002h                ; 80 bf 37 46 02
     jne short 020b5h                          ; 75 08
     mov bx, word [bp-00ah]                    ; 8b 5e f6
@@ -3852,5 +3863,5 @@
     movzx si, byte [bp-004h]                  ; 0f b6 76 fc
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04832h], 002h                ; 80 bc 32 48 02
+    cmp byte [si+04637h], 002h                ; 80 bc 37 46 02
     jne short 020fbh                          ; 75 19
     mov al, byte [bp-00ah]                    ; 8a 46 f6
@@ -3965,5 +3976,5 @@
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
+    cmp byte [si+04635h], 000h                ; 80 bc 35 46 00
     jne short 02256h                          ; 75 4d
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -3982,5 +3993,5 @@
     add cx, ax                                ; 01 c1
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
+    mov ax, word [si+04638h]                  ; 8b 84 38 46
     mov dx, cx                                ; 89 ca
     call 02f4ch                               ; e8 0f 0d
@@ -3990,12 +4001,12 @@
     mov dx, cx                                ; 89 ca
     inc dx                                    ; 42
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
+    mov ax, word [si+04638h]                  ; 8b 84 38 46
     call 02f4ch                               ; e8 f9 0c
     jmp near 022d4h                           ; e9 7e 00
-    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
+    movzx bx, byte [bx+046b4h]                ; 0f b6 9f b4 46
     sal bx, 006h                              ; c1 e3 06
-    mov ah, byte [bx+048c5h]                  ; 8a a7 c5 48
-    mov dl, byte [si+04832h]                  ; 8a 94 32 48
-    mov al, byte [si+04831h]                  ; 8a 84 31 48
+    mov ah, byte [bx+046cah]                  ; 8a a7 ca 46
+    mov dl, byte [si+04637h]                  ; 8a 94 37 46
+    mov al, byte [si+04636h]                  ; 8a 84 36 46
     cmp AL, strict byte 003h                  ; 3c 03
     jc short 0227ah                           ; 72 0c
@@ -4053,5 +4064,5 @@
     db  0feh, 0cbh
     ; dec bl                                    ; fe cb
-    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
+    cmp byte [si+04635h], 000h                ; 80 bc 35 46 00
     jne short 02354h                          ; 75 4a
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -4072,5 +4083,5 @@
     add dx, ax                                ; 01 c2
     inc dx                                    ; 42
-    mov ax, word [si+04833h]                  ; 8b 84 33 48
+    mov ax, word [si+04638h]                  ; 8b 84 38 46
     call 02f3eh                               ; e8 02 0c
     push strict byte 00001h                   ; 6a 01
@@ -4347,5 +4358,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-00ch]                    ; 03 7e f4
-    add si, 05dafh                            ; 81 c6 af 5d
+    add si, 05bf2h                            ; 81 c6 f2 5b
     mov cx, strict word 0000eh                ; b9 0e 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4403,5 +4414,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-00ch]                    ; 03 7e f4
-    add si, 055afh                            ; 81 c6 af 55
+    add si, 053f2h                            ; 81 c6 f2 53
     mov cx, strict word 00008h                ; b9 08 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4459,5 +4470,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-00ch]                    ; 03 7e f4
-    add si, 06bafh                            ; 81 c6 af 6b
+    add si, 069f2h                            ; 81 c6 f2 69
     mov cx, strict word 00010h                ; b9 10 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4593,5 +4604,5 @@
     push bx                                   ; 53
     mov cx, ds                                ; 8c d9
-    mov bx, 05583h                            ; bb 83 55
+    mov bx, 05388h                            ; bb 88 53
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     mov ax, word [bp-008h]                    ; 8b 46 f8
@@ -5493,5 +5504,5 @@
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp dl, byte [bx+0482fh]                  ; 3a 97 2f 48
+    cmp dl, byte [bx+04634h]                  ; 3a 97 34 46
     jne short 02f24h                          ; 75 ee
     mov ah, al                                ; 88 c4
@@ -5929,5 +5940,5 @@
     or AL, strict byte 01ch                   ; 0c 1c
     jmp near 0306dh                           ; e9 20 fd
-    call 007a4h                               ; e8 54 d4
+    call 007fah                               ; e8 aa d4
     test ax, ax                               ; 85 c0
     je near 033c5h                            ; 0f 84 6f 00
@@ -5951,5 +5962,5 @@
     mov dx, word [bp+016h]                    ; 8b 56 16
     lea ax, [bp+012h]                         ; 8d 46 12
-    call 034f7h                               ; e8 70 01
+    call 03503h                               ; e8 7c 01
     jmp short 033cah                          ; eb 41
     mov cx, si                                ; 89 f1
@@ -5957,5 +5968,5 @@
     mov dx, word [bp+010h]                    ; 8b 56 10
     lea ax, [bp+012h]                         ; 8d 46 12
-    call 03620h                               ; e8 89 02
+    call 0362ch                               ; e8 95 02
     jmp short 033cah                          ; eb 31
     mov cx, si                                ; 89 f1
@@ -5963,5 +5974,5 @@
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     lea ax, [bp+012h]                         ; 8d 46 12
-    call 036d4h                               ; e8 2d 03
+    call 036e4h                               ; e8 3d 03
     jmp short 033cah                          ; eb 21
     lea ax, [bp+00ch]                         ; 8d 46 0c
@@ -5971,5 +5982,5 @@
     mov dx, word [bp+010h]                    ; 8b 56 10
     lea ax, [bp+012h]                         ; 8d 46 12
-    call 038bbh                               ; e8 ff 04
+    call 038cbh                               ; e8 0f 05
     jmp short 033cah                          ; eb 0c
     mov word [bp+012h], 00100h                ; c7 46 12 00 01
@@ -5981,5 +5992,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-dispi_set_xres_:                             ; 0xc33d1 LB 0x1b
+dispi_set_xres_:                             ; 0xc33d1 LB 0x1f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -5989,8 +6000,8 @@
     mov ax, strict word 00001h                ; b8 01 00
     mov dx, 001ceh                            ; ba ce 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 8f d1
     mov ax, bx                                ; 89 d8
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 87 d1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -5998,5 +6009,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-dispi_set_yres_:                             ; 0xc33ec LB 0x1b
+dispi_set_yres_:                             ; 0xc33f0 LB 0x1f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6006,8 +6017,8 @@
     mov ax, strict word 00002h                ; b8 02 00
     mov dx, 001ceh                            ; ba ce 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 70 d1
     mov ax, bx                                ; 89 d8
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 68 d1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -6015,5 +6026,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-dispi_set_bpp_:                              ; 0xc3407 LB 0x1b
+dispi_set_bpp_:                              ; 0xc340f LB 0x1f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6023,8 +6034,8 @@
     mov ax, strict word 00003h                ; b8 03 00
     mov dx, 001ceh                            ; ba ce 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 51 d1
     mov ax, bx                                ; 89 d8
     mov dx, 001cfh                            ; ba cf 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 49 d1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -6032,5 +6043,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-in_word_:                                    ; 0xc3422 LB 0x12
+in_word_:                                    ; 0xc342e LB 0x12
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6045,5 +6056,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-in_byte_:                                    ; 0xc3434 LB 0x14
+in_byte_:                                    ; 0xc3440 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6060,5 +6071,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-dispi_get_id_:                               ; 0xc3448 LB 0x14
+dispi_get_id_:                               ; 0xc3454 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6073,5 +6084,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-dispi_set_id_:                               ; 0xc345c LB 0x1a
+dispi_set_id_:                               ; 0xc3468 LB 0x1a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6090,5 +6101,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_init_:                                   ; 0xc3476 LB 0x2c
+vbe_init_:                                   ; 0xc3482 LB 0x2c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6096,14 +6107,14 @@
     push dx                                   ; 52
     mov ax, 0b0c0h                            ; b8 c0 b0
-    call 0345ch                               ; e8 db ff
-    call 03448h                               ; e8 c4 ff
+    call 03468h                               ; e8 db ff
+    call 03454h                               ; e8 c4 ff
     cmp ax, 0b0c0h                            ; 3d c0 b0
-    jne short 0349bh                          ; 75 12
+    jne short 034a7h                          ; 75 12
     mov bx, strict word 00001h                ; bb 01 00
     mov dx, 000b9h                            ; ba b9 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f4ch                               ; e8 b7 fa
+    call 02f4ch                               ; e8 ab fa
     mov ax, 0b0c4h                            ; b8 c4 b0
-    call 0345ch                               ; e8 c1 ff
+    call 03468h                               ; e8 c1 ff
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -6111,5 +6122,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-mode_info_find_mode_:                        ; 0xc34a2 LB 0x55
+mode_info_find_mode_:                        ; 0xc34ae LB 0x55
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6122,28 +6133,28 @@
     xor dx, dx                                ; 31 d2
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 6d ff
+    call 0342eh                               ; e8 6d ff
     cmp ax, 077cch                            ; 3d cc 77
-    jne short 034ech                          ; 75 32
+    jne short 034f8h                          ; 75 32
     mov bx, strict word 00004h                ; bb 04 00
     mov dx, bx                                ; 89 da
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 5d ff
+    call 0342eh                               ; e8 5d ff
     mov cx, ax                                ; 89 c1
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 034ech                           ; 74 20
+    je short 034f8h                           ; 74 20
     lea dx, [bx+002h]                         ; 8d 57 02
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 4d ff
+    call 0342eh                               ; e8 4d ff
     lea dx, [bx+044h]                         ; 8d 57 44
     cmp cx, di                                ; 39 f9
-    jne short 034e8h                          ; 75 0c
+    jne short 034f4h                          ; 75 0c
     test si, si                               ; 85 f6
-    jne short 034e4h                          ; 75 04
+    jne short 034f0h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 034eeh                          ; eb 0a
+    jmp short 034fah                          ; eb 0a
     test AL, strict byte 080h                 ; a8 80
-    jne short 034e0h                          ; 75 f8
+    jne short 034ech                          ; 75 f8
     mov bx, dx                                ; 89 d3
-    jmp short 034bfh                          ; eb d3
+    jmp short 034cbh                          ; eb d3
     xor ax, ax                                ; 31 c0
     lea sp, [bp-008h]                         ; 8d 66 f8
@@ -6154,5 +6165,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_return_controller_information_: ; 0xc34f7 LB 0x129
+vbe_biosfn_return_controller_information_: ; 0xc3503 LB 0x129
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6165,5 +6176,5 @@
     mov word [bp-00ah], bx                    ; 89 5e f6
     mov word [bp-00ch], strict word 00022h    ; c7 46 f4 22 00
-    call 005a7h                               ; e8 98 d0
+    call 005b7h                               ; e8 9c d0
     mov word [bp-010h], ax                    ; 89 46 f0
     mov bx, word [bp-00ah]                    ; 8b 5e f6
@@ -6171,22 +6182,22 @@
     xor dx, dx                                ; 31 d2
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 02 ff
+    call 0342eh                               ; e8 02 ff
     cmp ax, 077cch                            ; 3d cc 77
-    je short 0352fh                           ; 74 0a
+    je short 0353bh                           ; 74 0a
     push SS                                   ; 16
     pop ES                                    ; 07
     mov word [es:si], 00100h                  ; 26 c7 04 00 01
-    jmp near 03618h                           ; e9 e9 00
+    jmp near 03624h                           ; e9 e9 00
     mov cx, strict word 00004h                ; b9 04 00
     mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
     mov es, [bp-008h]                         ; 8e 46 f8
     cmp word [es:bx+002h], 03245h             ; 26 81 7f 02 45 32
-    jne short 03549h                          ; 75 07
+    jne short 03555h                          ; 75 07
     cmp word [es:bx], 04256h                  ; 26 81 3f 56 42
-    je short 03558h                           ; 74 0f
+    je short 03564h                           ; 74 0f
     cmp word [es:bx+002h], 04153h             ; 26 81 7f 02 53 41
-    jne short 0355dh                          ; 75 0c
+    jne short 03569h                          ; 75 0c
     cmp word [es:bx], 04556h                  ; 26 81 3f 56 45
-    jne short 0355dh                          ; 75 05
+    jne short 03569h                          ; 75 05
     mov word [bp-00eh], strict word 00001h    ; c7 46 f2 01 00
     mov es, [bp-008h]                         ; 8e 46 f8
@@ -6194,5 +6205,5 @@
     ; mov dword [es:bx], strict dword 041534556h ; 66 26 c7 07 56 45 53 41
     mov word [es:bx+004h], 00200h             ; 26 c7 47 04 00 02
-    mov word [es:bx+006h], 07e20h             ; 26 c7 47 06 20 7e
+    mov word [es:bx+006h], 07c64h             ; 26 c7 47 06 64 7c
     mov [es:bx+008h], ds                      ; 26 8c 5f 08
     db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 000h
@@ -6204,43 +6215,43 @@
     mov dx, strict word 0ffffh                ; ba ff ff
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 8a fe
+    call 0342eh                               ; e8 8a fe
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:bx+012h], ax                 ; 26 89 47 12
     cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
-    je short 035c9h                           ; 74 24
+    je short 035d5h                           ; 74 24
     mov word [es:bx+014h], strict word 00003h ; 26 c7 47 14 03 00
-    mov word [es:bx+016h], 07e35h             ; 26 c7 47 16 35 7e
+    mov word [es:bx+016h], 07c79h             ; 26 c7 47 16 79 7c
     mov [es:bx+018h], ds                      ; 26 8c 5f 18
-    mov word [es:bx+01ah], 07e48h             ; 26 c7 47 1a 48 7e
+    mov word [es:bx+01ah], 07c8ch             ; 26 c7 47 1a 8c 7c
     mov [es:bx+01ch], ds                      ; 26 8c 5f 1c
-    mov word [es:bx+01eh], 07e69h             ; 26 c7 47 1e 69 7e
+    mov word [es:bx+01eh], 07cadh             ; 26 c7 47 1e ad 7c
     mov [es:bx+020h], ds                      ; 26 8c 5f 20
     mov dx, cx                                ; 89 ca
     add dx, strict byte 0001bh                ; 83 c2 1b
     mov ax, 003b6h                            ; b8 b6 03
-    call 03434h                               ; e8 60 fe
+    call 03440h                               ; e8 60 fe
     xor ah, ah                                ; 30 e4
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnbe short 035f4h                         ; 77 19
+    jnbe short 03600h                         ; 77 19
     mov dx, cx                                ; 89 ca
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 3f fe
+    call 0342eh                               ; e8 3f fe
     mov bx, ax                                ; 89 c3
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     add dx, word [bp-00ch]                    ; 03 56 f4
     mov ax, di                                ; 89 f8
-    call 02f68h                               ; e8 78 f9
+    call 02f68h                               ; e8 6c f9
     add word [bp-00ch], strict byte 00002h    ; 83 46 f4 02
     add cx, strict byte 00044h                ; 83 c1 44
     mov dx, cx                                ; 89 ca
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 23 fe
+    call 0342eh                               ; e8 23 fe
     mov bx, ax                                ; 89 c3
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 035c9h                          ; 75 c3
+    jne short 035d5h                          ; 75 c3
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     add dx, word [bp-00ch]                    ; 03 56 f4
     mov ax, di                                ; 89 f8
-    call 02f68h                               ; e8 57 f9
+    call 02f68h                               ; e8 4b f9
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -6252,5 +6263,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_return_mode_information_:         ; 0xc3620 LB 0xb4
+vbe_biosfn_return_mode_information_:         ; 0xc362c LB 0xb8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6268,8 +6279,8 @@
     xor dh, dh                                ; 30 f6
     and ah, 001h                              ; 80 e4 01
-    call 034a2h                               ; e8 65 fe
+    call 034aeh                               ; e8 65 fe
     mov word [bp-008h], ax                    ; 89 46 f8
     test ax, ax                               ; 85 c0
-    je near 036c2h                            ; 0f 84 7c 00
+    je near 036d2h                            ; 0f 84 80 00
     mov cx, 00100h                            ; b9 00 01
     xor ax, ax                                ; 31 c0
@@ -6277,10 +6288,10 @@
     mov es, bx                                ; 8e c3
     cld                                       ; fc
-    jcxz 03655h                               ; e3 02
+    jcxz 03661h                               ; e3 02
     rep stosb                                 ; f3 aa
     xor cx, cx                                ; 31 c9
-    jmp short 0365eh                          ; eb 05
+    jmp short 0366ah                          ; eb 05
     cmp cx, strict byte 00042h                ; 83 f9 42
-    jnc short 0367bh                          ; 73 1d
+    jnc short 03687h                          ; 73 1d
     mov dx, word [bp-008h]                    ; 8b 56 f8
     inc dx                                    ; 42
@@ -6288,41 +6299,41 @@
     add dx, cx                                ; 01 ca
     mov ax, 003b6h                            ; b8 b6 03
-    call 03434h                               ; e8 c9 fd
+    call 03440h                               ; e8 c9 fd
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-006h]                    ; 8b 56 fa
     add dx, cx                                ; 01 ca
     mov ax, si                                ; 89 f0
-    call 02f4ch                               ; e8 d4 f8
-    inc cx                                    ; 41
-    jmp short 03659h                          ; eb de
+    call 02f4ch                               ; e8 c8 f8
+    inc cx                                    ; 41
+    jmp short 03665h                          ; eb de
     mov dx, word [bp-006h]                    ; 8b 56 fa
     inc dx                                    ; 42
     inc dx                                    ; 42
     mov ax, si                                ; 89 f0
-    call 02f3eh                               ; e8 b9 f8
+    call 02f3eh                               ; e8 ad f8
     test AL, strict byte 001h                 ; a8 01
-    je short 036a5h                           ; 74 1c
+    je short 036b1h                           ; 74 1c
     mov dx, word [bp-006h]                    ; 8b 56 fa
     add dx, strict byte 0000ch                ; 83 c2 0c
-    mov bx, 00605h                            ; bb 05 06
-    mov ax, si                                ; 89 f0
-    call 02f68h                               ; e8 d1 f8
+    mov bx, 00629h                            ; bb 29 06
+    mov ax, si                                ; 89 f0
+    call 02f68h                               ; e8 c5 f8
     mov dx, word [bp-006h]                    ; 8b 56 fa
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov bx, 0c000h                            ; bb 00 c0
     mov ax, si                                ; 89 f0
-    call 02f68h                               ; e8 c3 f8
+    call 02f68h                               ; e8 b7 f8
     mov ax, strict word 0000bh                ; b8 0b 00
     mov dx, 001ceh                            ; ba ce 01
-    out DX, ax                                ; ef
+    call 00570h                               ; e8 b6 ce
     mov dx, 001cfh                            ; ba cf 01
-    in ax, DX                                 ; ed
+    call 00577h                               ; e8 b7 ce
     mov dx, word [bp-006h]                    ; 8b 56 fa
     add dx, strict byte 0002ah                ; 83 c2 2a
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 02f68h                               ; e8 ab f8
+    call 02f68h                               ; e8 9b f8
     mov ax, strict word 0004fh                ; b8 4f 00
-    jmp short 036c5h                          ; eb 03
+    jmp short 036d5h                          ; eb 03
     mov ax, 00100h                            ; b8 00 01
     push SS                                   ; 16
@@ -6335,5 +6346,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_set_mode_:                        ; 0xc36d4 LB 0xe9
+vbe_biosfn_set_mode_:                        ; 0xc36e4 LB 0xe9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6349,55 +6360,55 @@
     mov ax, dx                                ; 89 d0
     test dx, dx                               ; 85 d2
-    je short 036f4h                           ; 74 03
+    je short 03704h                           ; 74 03
     mov dx, strict word 00040h                ; ba 40 00
     mov byte [bp-006h], dl                    ; 88 56 fa
     test byte [bp-009h], 080h                 ; f6 46 f7 80
-    je short 03702h                           ; 74 05
+    je short 03712h                           ; 74 05
     mov dx, 00080h                            ; ba 80 00
-    jmp short 03704h                          ; eb 02
+    jmp short 03714h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov byte [bp-008h], dl                    ; 88 56 f8
     and byte [bp-009h], 001h                  ; 80 66 f7 01
     cmp word [bp-00ah], 00100h                ; 81 7e f6 00 01
-    jnc short 03724h                          ; 73 12
+    jnc short 03734h                          ; 73 12
     xor ax, ax                                ; 31 c0
-    call 005c9h                               ; e8 b2 ce
+    call 005ddh                               ; e8 b6 ce
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 00fdch                               ; e8 be d8
+    call 00fdch                               ; e8 ae d8
     mov ax, strict word 0004fh                ; b8 4f 00
-    jmp near 037b3h                           ; e9 8f 00
+    jmp near 037c3h                           ; e9 8f 00
     mov dx, ax                                ; 89 c2
     mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 034a2h                               ; e8 76 fd
+    call 034aeh                               ; e8 72 fd
     mov bx, ax                                ; 89 c3
     test ax, ax                               ; 85 c0
-    je near 037b0h                            ; 0f 84 7c 00
+    je near 037c0h                            ; 0f 84 7c 00
     lea dx, [bx+014h]                         ; 8d 57 14
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 e5 fc
+    call 0342eh                               ; e8 e1 fc
     mov cx, ax                                ; 89 c1
     lea dx, [bx+016h]                         ; 8d 57 16
     mov ax, 003b6h                            ; b8 b6 03
-    call 03422h                               ; e8 da fc
+    call 0342eh                               ; e8 d6 fc
     mov di, ax                                ; 89 c7
     lea dx, [bx+01bh]                         ; 8d 57 1b
     mov ax, 003b6h                            ; b8 b6 03
-    call 03434h                               ; e8 e1 fc
+    call 03440h                               ; e8 dd fc
     mov bl, al                                ; 88 c3
     mov dl, al                                ; 88 c2
     xor ax, ax                                ; 31 c0
-    call 005c9h                               ; e8 6d ce
+    call 005ddh                               ; e8 71 ce
     cmp bl, 004h                              ; 80 fb 04
-    jne short 03767h                          ; 75 06
+    jne short 03777h                          ; 75 06
     mov ax, strict word 0006ah                ; b8 6a 00
-    call 00fdch                               ; e8 75 d8
+    call 00fdch                               ; e8 65 d8
     movzx ax, dl                              ; 0f b6 c2
-    call 03407h                               ; e8 9a fc
+    call 0340fh                               ; e8 92 fc
     mov ax, cx                                ; 89 c8
-    call 033d1h                               ; e8 5f fc
+    call 033d1h                               ; e8 4f fc
     mov ax, di                                ; 89 f8
-    call 033ech                               ; e8 75 fc
+    call 033f0h                               ; e8 69 fc
     xor ax, ax                                ; 31 c0
-    call 005e7h                               ; e8 6b ce
+    call 00603h                               ; e8 77 ce
     mov al, byte [bp-008h]                    ; 8a 46 f8
     or AL, strict byte 001h                   ; 0c 01
@@ -6405,10 +6416,10 @@
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     or ax, dx                                 ; 09 d0
-    call 005c9h                               ; e8 3c ce
-    call 006c3h                               ; e8 33 cf
+    call 005ddh                               ; e8 40 ce
+    call 0070dh                               ; e8 6d cf
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     mov dx, 000bah                            ; ba ba 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f68h                               ; e8 cc f7
+    call 02f68h                               ; e8 bc f7
     mov al, byte [bp-008h]                    ; 8a 46 f8
     or AL, strict byte 060h                   ; 0c 60
@@ -6416,6 +6427,6 @@
     mov dx, 00087h                            ; ba 87 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 02f4ch                               ; e8 9f f7
-    jmp near 0371eh                           ; e9 6e ff
+    call 02f4ch                               ; e8 8f f7
+    jmp near 0372eh                           ; e9 6e ff
     mov ax, 00100h                            ; b8 00 01
     mov word [ss:si], ax                      ; 36 89 04
@@ -6425,5 +6436,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_read_video_state_size_:           ; 0xc37bd LB 0x8
+vbe_biosfn_read_video_state_size_:           ; 0xc37cd LB 0x8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6431,5 +6442,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_save_video_state_:                ; 0xc37c5 LB 0x5b
+vbe_biosfn_save_video_state_:                ; 0xc37d5 LB 0x5b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6450,15 +6461,15 @@
     mov dx, cx                                ; 89 ca
     mov ax, di                                ; 89 f8
-    call 02f68h                               ; e8 80 f7
+    call 02f68h                               ; e8 70 f7
     inc cx                                    ; 41
     inc cx                                    ; 41
     test byte [bp-00ah], 001h                 ; f6 46 f6 01
-    je short 03817h                           ; 74 27
+    je short 03827h                           ; 74 27
     mov si, strict word 00001h                ; be 01 00
-    jmp short 037fah                          ; eb 05
+    jmp short 0380ah                          ; eb 05
     cmp si, strict byte 00009h                ; 83 fe 09
-    jnbe short 03817h                         ; 77 1d
+    jnbe short 03827h                         ; 77 1d
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 03814h                           ; 74 15
+    je short 03824h                           ; 74 15
     mov ax, si                                ; 89 f0
     mov dx, 001ceh                            ; ba ce 01
@@ -6469,9 +6480,9 @@
     mov dx, cx                                ; 89 ca
     mov ax, di                                ; 89 f8
-    call 02f68h                               ; e8 56 f7
+    call 02f68h                               ; e8 46 f7
     inc cx                                    ; 41
     inc cx                                    ; 41
     inc si                                    ; 46
-    jmp short 037f5h                          ; eb de
+    jmp short 03805h                          ; eb de
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop di                                    ; 5f
@@ -6481,5 +6492,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_restore_video_state_:             ; 0xc3820 LB 0x9b
+vbe_biosfn_restore_video_state_:             ; 0xc3830 LB 0x9b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6490,10 +6501,10 @@
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
-    call 02f5ah                               ; e8 2c f7
+    call 02f5ah                               ; e8 1c f7
     mov word [bp-008h], ax                    ; 89 46 f8
     inc bx                                    ; 43
     inc bx                                    ; 43
     test byte [bp-008h], 001h                 ; f6 46 f8 01
-    jne short 03849h                          ; 75 10
+    jne short 03859h                          ; 75 10
     mov ax, strict word 00004h                ; b8 04 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6502,5 +6513,5 @@
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
-    jmp short 038b3h                          ; eb 6a
+    jmp short 038c3h                          ; eb 6a
     mov ax, strict word 00001h                ; b8 01 00
     mov dx, 001ceh                            ; ba ce 01
@@ -6508,5 +6519,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f5ah                               ; e8 03 f7
+    call 02f5ah                               ; e8 f3 f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6518,5 +6529,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f5ah                               ; e8 ef f6
+    call 02f5ah                               ; e8 df f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6528,5 +6539,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f5ah                               ; e8 db f6
+    call 02f5ah                               ; e8 cb f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6540,7 +6551,7 @@
     out DX, ax                                ; ef
     mov si, strict word 00005h                ; be 05 00
-    jmp short 0389dh                          ; eb 05
+    jmp short 038adh                          ; eb 05
     cmp si, strict byte 00009h                ; 83 fe 09
-    jnbe short 038b3h                         ; 77 16
+    jnbe short 038c3h                         ; 77 16
     mov ax, si                                ; 89 f0
     mov dx, 001ceh                            ; ba ce 01
@@ -6548,5 +6559,5 @@
     mov dx, bx                                ; 89 da
     mov ax, cx                                ; 89 c8
-    call 02f5ah                               ; e8 b0 f6
+    call 02f5ah                               ; e8 a0 f6
     mov dx, 001cfh                            ; ba cf 01
     out DX, ax                                ; ef
@@ -6554,5 +6565,5 @@
     inc bx                                    ; 43
     inc si                                    ; 46
-    jmp short 03898h                          ; eb e5
+    jmp short 038a8h                          ; eb e5
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop si                                    ; 5e
@@ -6561,5 +6572,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vbe_biosfn_save_restore_state_:              ; 0xc38bb LB 0x8c
+vbe_biosfn_save_restore_state_:              ; 0xc38cb LB 0x8c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6574,15 +6585,15 @@
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 0391ah                           ; 74 45
+    je short 0392ah                           ; 74 45
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 038feh                           ; 74 24
+    je short 0390eh                           ; 74 24
     test ax, ax                               ; 85 c0
-    jne short 03936h                          ; 75 58
+    jne short 03946h                          ; 75 58
     mov ax, word [bp-006h]                    ; 8b 46 fa
-    call 02853h                               ; e8 6f ef
+    call 02853h                               ; e8 5f ef
     mov cx, ax                                ; 89 c1
     test byte [bp-006h], 008h                 ; f6 46 fa 08
-    je short 038f1h                           ; 74 05
-    call 037bdh                               ; e8 ce fe
+    je short 03901h                           ; 74 05
+    call 037cdh                               ; e8 ce fe
     add ax, cx                                ; 01 c8
     add ax, strict word 0003fh                ; 05 3f 00
@@ -6591,5 +6602,5 @@
     pop ES                                    ; 07
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 03939h                          ; eb 3b
+    jmp short 03949h                          ; eb 3b
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -6597,11 +6608,11 @@
     mov dx, cx                                ; 89 ca
     mov ax, word [bp-006h]                    ; 8b 46 fa
-    call 02888h                               ; e8 7d ef
+    call 02888h                               ; e8 6d ef
     test byte [bp-006h], 008h                 ; f6 46 fa 08
-    je short 03939h                           ; 74 28
+    je short 03949h                           ; 74 28
     mov dx, ax                                ; 89 c2
     mov ax, cx                                ; 89 c8
-    call 037c5h                               ; e8 ad fe
-    jmp short 03939h                          ; eb 1f
+    call 037d5h                               ; e8 ad fe
+    jmp short 03949h                          ; eb 1f
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -6609,11 +6620,11 @@
     mov dx, cx                                ; 89 ca
     mov ax, word [bp-006h]                    ; 8b 46 fa
-    call 02bf1h                               ; e8 ca f2
+    call 02bf1h                               ; e8 ba f2
     test byte [bp-006h], 008h                 ; f6 46 fa 08
-    je short 03939h                           ; 74 0c
+    je short 03949h                           ; 74 0c
     mov dx, ax                                ; 89 c2
     mov ax, cx                                ; 89 c8
-    call 03820h                               ; e8 ec fe
-    jmp short 03939h                          ; eb 03
+    call 03830h                               ; e8 ec fe
+    jmp short 03949h                          ; eb 03
     mov di, 00100h                            ; bf 00 01
     push SS                                   ; 16
@@ -6626,9 +6637,9 @@
     retn 00002h                               ; c2 02 00
 
-  ; Padding 0xcb9 bytes at 0xc3947
-  times 3257 db 0
+  ; Padding 0xaa9 bytes at 0xc3957
+  times 2729 db 0
 
-section VBE32 progbits vstart=0x4600 align=1 ; size=0x115 class=CODE group=AUTO
-vesa_pm_start:                               ; 0xc4600 LB 0x114
+section VBE32 progbits vstart=0x4400 align=1 ; size=0x115 class=CODE group=AUTO
+vesa_pm_start:                               ; 0xc4400 LB 0x114
     sbb byte [bx+si], al                      ; 18 00
     dec di                                    ; 4f
@@ -6661,12 +6672,12 @@
     db  066h, 03bh, 0d0h
     ; cmp edx, eax                              ; 66 3b d0
-    jne short 0464ah                          ; 75 05
+    jne short 0444ah                          ; 75 05
     mov eax, strict dword 066c3004fh          ; 66 b8 4f 00 c3 66
     mov ax, 0014fh                            ; b8 4f 01
     retn                                      ; c3
     cmp bl, 080h                              ; 80 fb 80
-    je short 0465eh                           ; 74 0a
+    je short 0445eh                           ; 74 0a
     cmp bl, 000h                              ; 80 fb 00
-    je short 0466eh                           ; 74 15
+    je short 0446eh                           ; 74 15
     mov eax, strict dword 052c30100h          ; 66 b8 00 01 c3 52
     mov edx, strict dword 0a8ec03dah          ; 66 ba da 03 ec a8
@@ -6674,5 +6685,5 @@
     in AL, DX                                 ; ec
     test AL, strict byte 008h                 ; a8 08
-    je short 04668h                           ; 74 fb
+    je short 04468h                           ; 74 fb
     pop dx                                    ; 5a
     push ax                                   ; 50
@@ -6704,5 +6715,5 @@
     pop ax                                    ; 58
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 046c7h                           ; 74 17
+    je short 044c7h                           ; 74 17
     add si, strict byte 00007h                ; 83 c6 07
     shr si, 003h                              ; c1 ee 03
@@ -6718,5 +6729,5 @@
     ; xor dx, dx                                ; 33 d2
     div si                                    ; f7 f6
-    jmp short 046d3h                          ; eb 0c
+    jmp short 044d3h                          ; eb 0c
     shr cx, 1                                 ; d1 e9
     db  033h, 0d2h
@@ -6753,14 +6764,14 @@
     mov eax, strict dword 066c3004fh          ; 66 b8 4f 00 c3 66
     mov ax, 0014fh                            ; b8 4f 01
-vesa_pm_end:                                 ; 0xc4714 LB 0x1
+vesa_pm_end:                                 ; 0xc4514 LB 0x1
     retn                                      ; c3
 
-  ; Padding 0xeb bytes at 0xc4715
+  ; Padding 0xeb bytes at 0xc4515
   times 235 db 0
 
-section _DATA progbits vstart=0x4800 align=1 ; size=0x36e1 class=DATA group=DGROUP
-_msg_vga_init:                               ; 0xc4800 LB 0x2f
-    db  'Oracle VM VirtualBox Version 4.3.53 VGA BIOS', 00dh, 00ah, 000h
-_vga_modes:                                  ; 0xc482f LB 0x80
+section _DATA progbits vstart=0x4600 align=1 ; size=0x372a class=DATA group=DGROUP
+_msg_vga_init:                               ; 0xc4600 LB 0x34
+    db  'Oracle VM VirtualBox Version 5.0.0_BETA2 VGA BIOS', 00dh, 00ah, 000h
+_vga_modes:                                  ; 0xc4634 LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -6771,9 +6782,9 @@
     db  011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
     db  013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
-_line_to_vpti:                               ; 0xc48af LB 0x10
+_line_to_vpti:                               ; 0xc46b4 LB 0x10
     db  017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
-_dac_regs:                                   ; 0xc48bf LB 0x4
+_dac_regs:                                   ; 0xc46c4 LB 0x4
     dd  0ff3f3f3fh
-_video_param_table:                          ; 0xc48c3 LB 0x780
+_video_param_table:                          ; 0xc46c8 LB 0x780
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
@@ -6896,5 +6907,5 @@
     db  073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
     db  03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
-_palette0:                                   ; 0xc5043 LB 0xc0
+_palette0:                                   ; 0xc4e48 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
@@ -6909,5 +6920,5 @@
     db  02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
     db  03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
-_palette1:                                   ; 0xc5103 LB 0xc0
+_palette1:                                   ; 0xc4f08 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
@@ -6922,5 +6933,5 @@
     db  015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
-_palette2:                                   ; 0xc51c3 LB 0xc0
+_palette2:                                   ; 0xc4fc8 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
@@ -6935,5 +6946,5 @@
     db  015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
-_palette3:                                   ; 0xc5283 LB 0x300
+_palette3:                                   ; 0xc5088 LB 0x300
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
@@ -6984,10 +6995,17 @@
     db  00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_static_functionality:                       ; 0xc5583 LB 0x10
+_static_functionality:                       ; 0xc5388 LB 0x10
     db  0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
-_video_save_pointer_table:                   ; 0xc5593 LB 0x1c
-    db  0c3h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont8:                                   ; 0xc55af LB 0x800
+_dcc_table:                                  ; 0xc5398 LB 0x24
+    db  010h, 001h, 007h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h
+_secondary_save_area:                        ; 0xc53bc LB 0x1a
+    db  01ah, 000h, 098h, 053h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_video_save_pointer_table:                   ; 0xc53d6 LB 0x1c
+    db  0c8h, 046h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  0bch, 053h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_vgafont8:                                   ; 0xc53f2 LB 0x800
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
     db  07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
@@ -7118,5 +7136,5 @@
     db  078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
     db  000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont14:                                  ; 0xc5daf LB 0xe00
+_vgafont14:                                  ; 0xc5bf2 LB 0xe00
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
@@ -7343,5 +7361,5 @@
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont16:                                  ; 0xc6baf LB 0x1000
+_vgafont16:                                  ; 0xc69f2 LB 0x1000
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
@@ -7600,5 +7618,5 @@
     db  000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont14alt:                               ; 0xc7baf LB 0x12d
+_vgafont14alt:                               ; 0xc79f2 LB 0x12d
     db  01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
     db  000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
@@ -7620,5 +7638,5 @@
     db  000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
     db  018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
-_vgafont16alt:                               ; 0xc7cdc LB 0x144
+_vgafont16alt:                               ; 0xc7b1f LB 0x145
     db  01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
     db  000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
@@ -7641,42 +7659,67 @@
     db  000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
     db  000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
-    db  006h, 000h, 000h, 000h
-_vbebios_copyright:                          ; 0xc7e20 LB 0x15
+    db  006h, 000h, 000h, 000h, 000h
+_vbebios_copyright:                          ; 0xc7c64 LB 0x15
     db  'VirtualBox VESA BIOS', 000h
-_vbebios_vendor_name:                        ; 0xc7e35 LB 0x13
+_vbebios_vendor_name:                        ; 0xc7c79 LB 0x13
     db  'Oracle Corporation', 000h
-_vbebios_product_name:                       ; 0xc7e48 LB 0x21
+_vbebios_product_name:                       ; 0xc7c8c LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
-_vbebios_product_revision:                   ; 0xc7e69 LB 0x24
-    db  'Oracle VM VirtualBox Version 4.3.53', 000h
-_vbebios_info_string:                        ; 0xc7e8d LB 0x2b
+_vbebios_product_revision:                   ; 0xc7cad LB 0x29
+    db  'Oracle VM VirtualBox Version 5.0.0_BETA2', 000h
+_vbebios_info_string:                        ; 0xc7cd6 LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
-_no_vbebios_info_string:                     ; 0xc7eb8 LB 0x29
+_no_vbebios_info_string:                     ; 0xc7d01 LB 0x29
     db  'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
 
-  ; Padding 0x1 bytes at 0xc7ee1
-    db  001h
+section CONST progbits vstart=0x7d2a align=1 ; size=0x0 class=DATA group=DGROUP
 
-section CONST progbits vstart=0x7ee2 align=1 ; size=0x0 class=DATA group=DGROUP
+section CONST2 progbits vstart=0x7d2a align=1 ; size=0x0 class=DATA group=DGROUP
 
-section CONST2 progbits vstart=0x7ee2 align=1 ; size=0x0 class=DATA group=DGROUP
-
-  ; Padding 0x11e bytes at 0xc7ee2
-    db  000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh, 065h
-    db  02fh, 066h, 06dh, 033h, 02fh, 073h, 072h, 063h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 06fh, 075h
-    db  074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh, 072h, 065h
-    db  06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h
-    db  061h, 042h, 069h, 06fh, 073h, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h, 061h, 042h, 069h, 06fh
-    db  073h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 055h
+  ; Padding 0x2d6 bytes at 0xc7d2a
+    db  001h, 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh
+    db  065h, 02fh, 066h, 06dh, 033h, 02fh, 073h, 072h, 063h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 06fh
+    db  075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh, 072h
+    db  065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h, 056h
+    db  067h, 061h, 042h, 069h, 06fh, 073h, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h, 061h, 042h, 069h
+    db  06fh, 073h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 0e0h
Index: /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.md5sum	(revision 55259)
+++ /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.md5sum	(revision 55260)
@@ -1,1 +1,1 @@
-2abf7b9050be07a06bb5f956042ff4df *VBoxVgaBios.rom
+7e4d004d15d19ad5f6d812e04876154c *VBoxVgaBios.rom
Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 55259)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 55260)
@@ -856,10 +856,10 @@
     db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
 _pktacc:                                     ; 0xf006a LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 08fh, 028h, 05dh, 07bh, 025h, 089h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 08fh, 028h, 089h, 07bh, 06bh, 089h
 _softrst:                                    ; 0xf0076 LB 0xc
     db  000h, 000h, 000h, 000h, 000h, 000h, 077h, 02bh, 054h, 038h, 054h, 038h
 _dskacc:                                     ; 0xf0082 LB 0x2e
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0d8h, 027h, 052h, 028h, 000h, 000h, 000h, 000h
-    db  0ebh, 079h, 0a4h, 07ah, 021h, 088h, 0b5h, 088h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  017h, 07ah, 0d0h, 07ah, 066h, 088h, 0f9h, 088h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
@@ -984,5 +984,5 @@
 section CONST2 progbits vstart=0xd90 align=1 ; size=0x400 class=DATA group=DGROUP
 _bios_cvs_version_string:                    ; 0xf0d90 LB 0x18
-    db  'VirtualBox 5.0.0_BETA1', 000h, 000h
+    db  'VirtualBox 5.0.0_BETA2', 000h, 000h
 _bios_prefix_string:                         ; 0xf0da8 LB 0x8
     db  'BIOS: ', 000h, 000h
@@ -1058,5 +1058,5 @@
   times 1136 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x81e5 class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x8235 class=CODE group=AUTO
 rom_scan_:                                   ; 0xf1600 LB 0x50
     push bp                                   ; 55
@@ -1455,5 +1455,5 @@
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 096f0h                               ; e8 17 7e
+    call 09740h                               ; e8 67 7e
     mov word [bp-008h], ax                    ; 89 46 f8
     mov cx, dx                                ; 89 d1
@@ -4985,5 +4985,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-026h]                         ; 8d 46 da
-    call 0975ah                               ; e8 a4 5c
+    call 097aah                               ; e8 f4 5c
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
     mov ax, strict word 00011h                ; b8 11 00
@@ -5444,5 +5444,5 @@
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 12 57
+    call 09779h                               ; e8 62 57
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
@@ -5450,5 +5450,5 @@
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 05 57
+    call 09779h                               ; e8 55 57
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-010h]                    ; 8b 46 f0
@@ -5485,5 +5485,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 0975ah                               ; e8 df 56
+    call 097aah                               ; e8 2f 57
     mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
@@ -5792,5 +5792,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ch]                         ; 8d 46 d4
-    call 0975ah                               ; e8 44 53
+    call 097aah                               ; e8 94 53
     mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
     mov ax, word [bp-018h]                    ; 8b 46 e8
@@ -7612,10 +7612,10 @@
     mov bx, strict word 0003fh                ; bb 3f 00
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 30 41
+    call 09779h                               ; e8 80 41
     mov bx, ax                                ; 89 c3
     mov cx, dx                                ; 89 d1
     mov ax, word [bp-004h]                    ; 8b 46 fc
     mov dx, word [bp-002h]                    ; 8b 56 fe
-    call 096f0h                               ; e8 ea 40
+    call 09740h                               ; e8 3a 41
     mov word [es:si+002h], ax                 ; 26 89 44 02
     cmp ax, 00400h                            ; 3d 00 04
@@ -7835,5 +7835,5 @@
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 05 3f
+    call 09779h                               ; e8 55 3f
     xor bx, bx                                ; 31 db
     add ax, word [bp-008h]                    ; 03 46 f8
@@ -7841,5 +7841,5 @@
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 f6 3e
+    call 09779h                               ; e8 46 3f
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
@@ -7999,8 +7999,8 @@
     mov bx, word [bp-008h]                    ; 8b 5e f8
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 37 3d
+    call 09779h                               ; e8 87 3d
     mov bx, word [bp-006h]                    ; 8b 5e fa
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 2f 3d
+    call 09779h                               ; e8 7f 3d
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-00eh], dx                    ; 89 56 f2
@@ -11049,5 +11049,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7885 LB 0xb2
+scsi_cmd_data_in_:                           ; 0xf7885 LB 0xc9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11057,6 +11057,6 @@
     mov si, ax                                ; 89 c6
     mov byte [bp-006h], dl                    ; 88 56 fa
-    mov word [bp-00ah], bx                    ; 89 5e f6
-    mov word [bp-008h], cx                    ; 89 4e f8
+    mov word [bp-008h], bx                    ; 89 5e f8
+    mov word [bp-00ah], cx                    ; 89 4e f6
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov dx, si                                ; 89 f2
@@ -11095,6 +11095,7 @@
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 078f3h                          ; 73 0e
-    les di, [bp-00ah]                         ; c4 7e f6
+    jnc short 078f6h                          ; 73 11
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov di, word [bp-008h]                    ; 8b 7e f8
     add di, cx                                ; 01 cf
     mov al, byte [es:di]                      ; 26 8a 05
@@ -11102,5 +11103,5 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 078ddh                          ; eb ea
+    jmp short 078ddh                          ; eb e7
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
@@ -11108,10 +11109,20 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 078f3h                          ; 75 f7
+    jne short 078f6h                          ; 75 f7
+    test AL, strict byte 002h                 ; a8 02
+    je short 07911h                           ; 74 0e
+    lea dx, [si+003h]                         ; 8d 54 03
+    xor al, al                                ; 30 c0
+    out DX, AL                                ; ee
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    mov di, strict word 00004h                ; bf 04 00
+    jmp short 07943h                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 0790bh                          ; 75 06
+    jne short 07920h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07925h                          ; 76 1a
+    jbe short 0793ah                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
@@ -11122,9 +11133,10 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 078fch                          ; eb d7
+    jmp short 07911h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
-    xor ax, ax                                ; 31 c0
+    xor di, di                                ; 31 ff
+    mov ax, di                                ; 89 f8
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -11132,5 +11144,5 @@
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7937 LB 0xb4
+scsi_cmd_data_out_:                          ; 0xf794e LB 0xc9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11140,6 +11152,6 @@
     mov di, ax                                ; 89 c7
     mov byte [bp-006h], dl                    ; 88 56 fa
-    mov word [bp-00ah], bx                    ; 89 5e f6
-    mov word [bp-008h], cx                    ; 89 4e f8
+    mov word [bp-008h], bx                    ; 89 5e f8
+    mov word [bp-00ah], cx                    ; 89 4e f6
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov dx, di                                ; 89 fa
@@ -11148,5 +11160,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0794dh                          ; 75 f7
+    jne short 07964h                          ; 75 f7
     mov ax, bx                                ; 89 d8
     mov dx, word [bp+00ch]                    ; 8b 56 0c
@@ -11154,5 +11166,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0795eh                               ; e2 fa
+    loop 07975h                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
@@ -11172,5 +11184,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07984h                               ; e2 fa
+    loop 0799bh                               ; e2 fa
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
@@ -11178,6 +11190,7 @@
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 079a5h                          ; 73 0e
-    les si, [bp-00ah]                         ; c4 76 f6
+    jnc short 079bfh                          ; 73 11
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov si, word [bp-008h]                    ; 8b 76 f8
     add si, cx                                ; 01 ce
     mov al, byte [es:si]                      ; 26 8a 04
@@ -11185,10 +11198,10 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 0798fh                          ; eb ea
+    jmp short 079a6h                          ; eb e7
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 079b4h                          ; 75 06
+    jne short 079ceh                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 079cfh                          ; 76 1b
+    jbe short 079e9h                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
@@ -11200,5 +11213,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 079a5h                          ; eb d6
+    jmp short 079bfh                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
@@ -11210,5 +11223,15 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 079d7h                          ; 75 f7
+    jne short 079f1h                          ; 75 f7
+    test AL, strict byte 002h                 ; a8 02
+    je short 07a0ch                           ; 74 0e
+    lea dx, [di+003h]                         ; 8d 55 03
+    xor al, al                                ; 30 c0
+    out DX, AL                                ; ee
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    mov ax, strict word 00004h                ; b8 04 00
+    jmp short 07a0eh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11217,5 +11240,5 @@
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-@scsi_read_sectors:                          ; 0xf79eb LB 0xb9
+@scsi_read_sectors:                          ; 0xf7a17 LB 0xb9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11228,5 +11251,5 @@
     sub bl, 008h                              ; 80 eb 08
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 07a17h                          ; 76 12
+    jbe short 07a43h                          ; 76 12
     movzx ax, bl                              ; 0f b6 c3
     push ax                                   ; 50
@@ -11234,5 +11257,5 @@
     push 00b38h                               ; 68 38 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 5e 9f
+    call 01972h                               ; e8 32 9f
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
@@ -11261,5 +11284,5 @@
     sal word [bp-008h], 1                     ; d1 66 f8
     rcl word [bp-006h], 1                     ; d1 56 fa
-    loop 07a60h                               ; e2 f8
+    loop 07a8ch                               ; e2 f8
     push dword [bp-008h]                      ; 66 ff 76 f8
     db  066h, 026h, 0ffh, 074h, 004h
@@ -11269,8 +11292,8 @@
     mov cx, ss                                ; 8c d1
     lea bx, [bp-012h]                         ; 8d 5e ee
-    call 07885h                               ; e8 08 fe
+    call 07885h                               ; e8 dc fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07a98h                          ; 75 15
+    jne short 07ac4h                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -11285,5 +11308,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@scsi_write_sectors:                         ; 0xf7aa4 LB 0xb9
+@scsi_write_sectors:                         ; 0xf7ad0 LB 0xb9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11296,5 +11319,5 @@
     sub bl, 008h                              ; 80 eb 08
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 07ad0h                          ; 76 12
+    jbe short 07afch                          ; 76 12
     movzx ax, bl                              ; 0f b6 c3
     push ax                                   ; 50
@@ -11302,5 +11325,5 @@
     push 00b38h                               ; 68 38 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 a5 9e
+    call 01972h                               ; e8 79 9e
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
@@ -11329,5 +11352,5 @@
     sal word [bp-008h], 1                     ; d1 66 f8
     rcl word [bp-006h], 1                     ; d1 56 fa
-    loop 07b19h                               ; e2 f8
+    loop 07b45h                               ; e2 f8
     push dword [bp-008h]                      ; 66 ff 76 f8
     db  066h, 026h, 0ffh, 074h, 004h
@@ -11337,8 +11360,8 @@
     mov cx, ss                                ; 8c d1
     lea bx, [bp-012h]                         ; 8d 5e ee
-    call 07937h                               ; e8 01 fe
+    call 0794eh                               ; e8 ec fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07b51h                          ; 75 15
+    jne short 07b7dh                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -11353,5 +11376,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf7b5d LB 0x166
+scsi_cmd_packet_:                            ; 0xf7b89 LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11365,20 +11388,20 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 f3 9a
+    call 0166ch                               ; e8 c7 9a
     mov si, 00122h                            ; be 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 07ba4h                          ; 75 1f
+    jne short 07bd0h                          ; 75 1f
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 a1 9d
+    call 01931h                               ; e8 75 9d
     push 00b6ah                               ; 68 6a 0b
     push 00b7ah                               ; 68 7a 0b
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 d7 9d
+    call 01972h                               ; e8 ab 9d
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 07cb8h                           ; e9 14 01
+    jmp near 07ce4h                           ; e9 14 01
     sub di, strict byte 00008h                ; 83 ef 08
     sal di, 002h                              ; c1 e7 02
@@ -11394,5 +11417,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07bc0h                          ; 75 f7
+    jne short 07bech                          ; 75 f7
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+006h]                    ; 8b 56 06
@@ -11410,5 +11433,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07bebh                               ; e2 fa
+    loop 07c17h                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
@@ -11428,5 +11451,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07c12h                               ; e2 fa
+    loop 07c3eh                               ; e2 fa
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11434,5 +11457,5 @@
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 07c33h                          ; 73 0e
+    jnc short 07c5fh                          ; 73 0e
     les di, [bp-00ch]                         ; c4 7e f4
     add di, cx                                ; 01 cf
@@ -11441,5 +11464,5 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07c1dh                          ; eb ea
+    jmp short 07c49h                          ; eb ea
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -11447,7 +11470,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07c33h                          ; 75 f7
+    jne short 07c5fh                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07c4eh                           ; 74 0e
+    je short 07c7ah                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
@@ -11457,12 +11480,12 @@
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 07cb8h                          ; eb 6a
+    jmp short 07ce4h                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 07c5dh                           ; 74 08
+    je short 07c89h                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 07c5ah                               ; e2 fd
+    loop 07c86h                               ; e2 fd
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov es, [bp-00eh]                         ; 8e 46 f2
@@ -11472,7 +11495,7 @@
     lea ax, [bx+001h]                         ; 8d 47 01
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 07c7eh                          ; 75 07
+    jne short 07caah                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 07c9bh                          ; 76 1d
+    jbe short 07cc7h                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
@@ -11484,5 +11507,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 07c6eh                          ; eb d3
+    jmp short 07c9ah                          ; eb d3
     mov dx, ax                                ; 89 c2
     mov cx, word [bp+006h]                    ; 8b 4e 06
@@ -11491,8 +11514,8 @@
     mov es, [bp-00eh]                         ; 8e 46 f2
     cmp word [es:si+01ch], strict byte 00000h ; 26 83 7c 1c 00
-    je short 07cb6h                           ; 74 07
+    je short 07ce2h                           ; 74 07
     mov cx, word [es:si+01ch]                 ; 26 8b 4c 1c
     in AL, DX                                 ; ec
-    loop 07cb3h                               ; e2 fd
+    loop 07cdfh                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
@@ -11502,5 +11525,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf7cc3 LB 0x3e5
+scsi_enumerate_attached_devices_:            ; 0xf7cef LB 0x3e4
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11510,107 +11533,106 @@
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, 0021ch                            ; 81 ec 1c 02
+    sub sp, 0021eh                            ; 81 ec 1e 02
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 93 99
+    call 0166ch                               ; e8 67 99
     mov si, 00122h                            ; be 22 01
-    mov word [bp-01ah], ax                    ; 89 46 e6
-    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
-    jmp near 08036h                           ; e9 4f 03
-    mov es, [bp-01ah]                         ; 8e 46 e6
-    cmp byte [es:si+001e8h], 004h             ; 26 80 bc e8 01 04
-    jnc near 0809eh                           ; 0f 83 aa 03
+    mov word [bp-018h], ax                    ; 89 46 e8
+    mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
+    jmp near 08055h                           ; e9 42 03
+    cmp AL, strict byte 004h                  ; 3c 04
+    jnc near 080c9h                           ; 0f 83 b0 03
     mov cx, strict word 0000ah                ; b9 0a 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
-    lea ax, [bp-026h]                         ; 8d 46 da
-    call 0975ah                               ; e8 59 1a
-    mov byte [bp-026h], 025h                  ; c6 46 da 25
+    lea ax, [bp-028h]                         ; 8d 46 d8
+    call 097aah                               ; e8 84 1a
+    mov byte [bp-028h], 025h                  ; c6 46 d8 25
     push dword 000000008h                     ; 66 6a 08
-    lea dx, [bp-00226h]                       ; 8d 96 da fd
+    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
     push SS                                   ; 16
     push dx                                   ; 52
     push strict byte 0000ah                   ; 6a 0a
-    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
+    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-026h]                         ; 8d 5e da
-    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
-    call 07885h                               ; e8 65 fb
+    lea bx, [bp-028h]                         ; 8d 5e d8
+    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
+    call 07885h                               ; e8 40 fb
     test al, al                               ; 84 c0
-    je short 07d32h                           ; 74 0e
+    je short 07d57h                           ; 74 0e
     push 00b9ah                               ; 68 9a 0b
     push 00bd3h                               ; 68 d3 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 43 9c
+    call 01972h                               ; e8 1e 9c
     add sp, strict byte 00006h                ; 83 c4 06
-    movzx ax, byte [bp-00225h]                ; 0f b6 86 db fd
-    movzx di, byte [bp-00226h]                ; 0f b6 be da fd
+    movzx ax, byte [bp-00227h]                ; 0f b6 86 d9 fd
+    movzx di, byte [bp-00228h]                ; 0f b6 be d8 fd
     sal di, 008h                              ; c1 e7 08
     xor bx, bx                                ; 31 db
     or di, ax                                 ; 09 c7
-    movzx ax, byte [bp-00224h]                ; 0f b6 86 dc fd
+    movzx ax, byte [bp-00226h]                ; 0f b6 86 da fd
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 07d4dh                               ; e2 fa
+    loop 07d72h                               ; e2 fa
     or bx, ax                                 ; 09 c3
-    or dx, di                                 ; 09 fa
-    movzx ax, byte [bp-00223h]                ; 0f b6 86 dd fd
+    or di, dx                                 ; 09 d7
+    movzx ax, byte [bp-00225h]                ; 0f b6 86 db fd
     or bx, ax                                 ; 09 c3
-    mov word [bp-00eh], bx                    ; 89 5e f2
-    mov word [bp-018h], dx                    ; 89 56 e8
-    movzx di, byte [bp-00222h]                ; 0f b6 be de fd
-    sal di, 008h                              ; c1 e7 08
-    movzx dx, byte [bp-00221h]                ; 0f b6 96 df fd
+    mov word [bp-014h], bx                    ; 89 5e ec
+    add word [bp-014h], strict byte 00001h    ; 83 46 ec 01
+    adc di, strict byte 00000h                ; 83 d7 00
+    movzx ax, byte [bp-00224h]                ; 0f b6 86 dc fd
+    sal ax, 008h                              ; c1 e0 08
+    movzx dx, byte [bp-00223h]                ; 0f b6 96 dd fd
     xor bx, bx                                ; 31 db
-    or di, dx                                 ; 09 d7
-    movzx ax, byte [bp-00220h]                ; 0f b6 86 e0 fd
+    or ax, dx                                 ; 09 d0
+    mov word [bp-012h], ax                    ; 89 46 ee
+    movzx ax, byte [bp-00222h]                ; 0f b6 86 de fd
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 07d7fh                               ; e2 fa
+    loop 07dabh                               ; e2 fa
     or ax, bx                                 ; 09 d8
-    or dx, di                                 ; 09 fa
-    movzx bx, byte [bp-0021fh]                ; 0f b6 9e e1 fd
+    or dx, word [bp-012h]                     ; 0b 56 ee
+    movzx bx, byte [bp-00221h]                ; 0f b6 9e df fd
     or ax, bx                                 ; 09 d8
-    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-010h], ax                    ; 89 46 f0
     test dx, dx                               ; 85 d2
-    jne short 07d9ch                          ; 75 05
+    jne short 07dc9h                          ; 75 05
     cmp ax, 00200h                            ; 3d 00 02
-    je short 07dbch                           ; 74 20
+    je short 07de9h                           ; 74 20
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 8a 9b
+    call 01931h                               ; e8 5d 9b
     push dx                                   ; 52
-    push word [bp-016h]                       ; ff 76 ea
     push word [bp-010h]                       ; ff 76 f0
+    push word [bp-00eh]                       ; ff 76 f2
     push 00bf2h                               ; 68 f2 0b
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 bc 9b
+    call 01972h                               ; e8 8f 9b
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 0802dh                           ; e9 71 02
-    mov es, [bp-01ah]                         ; 8e 46 e6
-    mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
-    mov byte [bp-00ch], al                    ; 88 46 f4
+    jmp near 0804ch                           ; e9 63 02
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 07dd7h                           ; 72 0c
-    jbe short 07ddfh                          ; 76 12
+    jc short 07dfch                           ; 72 0c
+    jbe short 07e04h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 07de7h                           ; 74 16
+    je short 07e0ch                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 07de3h                           ; 74 0e
-    jmp short 07e33h                          ; eb 5c
+    je short 07e08h                           ; 74 0e
+    jmp short 07e5bh                          ; eb 5f
     test al, al                               ; 84 c0
-    jne short 07e33h                          ; 75 58
+    jne short 07e5bh                          ; 75 5b
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 07de9h                          ; eb 0a
+    jmp short 07e0eh                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 07de9h                          ; eb 06
+    jmp short 07e0eh                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 07de9h                          ; eb 02
+    jmp short 07e0eh                          ; eb 02
     mov BL, strict byte 0a8h                  ; b3 a8
     mov al, bl                                ; 88 d8
@@ -11618,64 +11640,61 @@
     movzx cx, al                              ; 0f b6 c8
     mov ax, cx                                ; 89 c8
-    call 016ach                               ; e8 b7 98
+    call 016ach                               ; e8 92 98
     test al, al                               ; 84 c0
-    je short 07e33h                           ; 74 3a
+    je short 07e5bh                           ; 74 3d
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 aa 98
+    call 016ach                               ; e8 85 98
     xor ah, ah                                ; 30 e4
-    mov dx, ax                                ; 89 c2
-    sal dx, 008h                              ; c1 e2 08
+    sal ax, 008h                              ; c1 e0 08
+    mov word [bp-012h], ax                    ; 89 46 ee
     movzx ax, bl                              ; 0f b6 c3
-    call 016ach                               ; e8 9d 98
+    call 016ach                               ; e8 77 98
     xor ah, ah                                ; 30 e4
-    add ax, dx                                ; 01 d0
+    add ax, word [bp-012h]                    ; 03 46 ee
     cwd                                       ; 99
-    mov di, ax                                ; 89 c7
-    mov word [bp-012h], dx                    ; 89 56 ee
+    mov word [bp-01eh], ax                    ; 89 46 e2
+    mov word [bp-016h], dx                    ; 89 56 ea
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 8a 98
-    xor ah, ah                                ; 30 e4
-    mov word [bp-014h], ax                    ; 89 46 ec
-    mov ax, cx                                ; 89 c8
-    call 016ach                               ; e8 80 98
+    call 016ach                               ; e8 62 98
     xor ah, ah                                ; 30 e4
     mov word [bp-01ch], ax                    ; 89 46 e4
-    jmp short 07e78h                          ; eb 45
-    mov ax, word [bp-018h]                    ; 8b 46 e8
-    cmp ax, strict word 00040h                ; 3d 40 00
-    jnbe short 07e3dh                         ; 77 02
-    jne short 07e49h                          ; 75 0c
-    mov word [bp-014h], 000ffh                ; c7 46 ec ff 00
-    mov word [bp-01ch], strict word 0003fh    ; c7 46 e4 3f 00
-    jmp short 07e61h                          ; eb 18
-    cmp ax, strict word 00020h                ; 3d 20 00
-    jnbe short 07e50h                         ; 77 02
-    jne short 07e57h                          ; 75 07
-    mov word [bp-014h], 00080h                ; c7 46 ec 80 00
-    jmp short 07e5ch                          ; eb 05
-    mov word [bp-014h], strict word 00040h    ; c7 46 ec 40 00
-    mov word [bp-01ch], strict word 00020h    ; c7 46 e4 20 00
-    mov bx, word [bp-014h]                    ; 8b 5e ec
-    imul bx, word [bp-01ch]                   ; 0f af 5e e4
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
-    mov dx, word [bp-018h]                    ; 8b 56 e8
+    mov ax, cx                                ; 89 c8
+    call 016ach                               ; e8 58 98
+    xor ah, ah                                ; 30 e4
+    mov word [bp-01ah], ax                    ; 89 46 e6
+    jmp short 07e9ch                          ; eb 41
+    cmp di, strict byte 00040h                ; 83 ff 40
+    jnbe short 07e62h                         ; 77 02
+    jne short 07e6ch                          ; 75 0a
+    mov dword [bp-01ch], strict dword 0003f00ffh ; 66 c7 46 e4 ff 00 3f 00
+    jmp short 07e85h                          ; eb 19
+    cmp di, strict byte 00020h                ; 83 ff 20
+    jnbe short 07e73h                         ; 77 02
+    jne short 07e7dh                          ; 75 0a
+    mov dword [bp-01ch], strict dword 000200080h ; 66 c7 46 e4 80 00 20 00
+    jmp short 07e85h                          ; eb 08
+    mov dword [bp-01ch], strict dword 000200040h ; 66 c7 46 e4 40 00 20 00
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
+    imul bx, word [bp-01ah]                   ; 0f af 5e e6
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov dx, di                                ; 89 fa
     xor cx, cx                                ; 31 c9
-    call 096f0h                               ; e8 7d 18
-    mov di, ax                                ; 89 c7
-    mov word [bp-012h], dx                    ; 89 56 ee
+    call 09740h                               ; e8 aa 18
+    mov word [bp-01eh], ax                    ; 89 46 e2
+    mov word [bp-016h], dx                    ; 89 56 ea
     mov dl, byte [bp-00ch]                    ; 8a 56 f4
     add dl, 008h                              ; 80 c2 08
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     sal bx, 002h                              ; c1 e3 02
-    mov es, [bp-01ah]                         ; 8e 46 e6
+    mov es, [bp-018h]                         ; 8e 46 e8
     add bx, si                                ; 01 f3
-    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
+    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
     mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
-    mov al, byte [bp-010h]                    ; 8a 46 f0
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     mov byte [es:bx+001dah], al               ; 26 88 87 da 01
     movzx ax, dl                              ; 0f b6 c2
@@ -11685,59 +11704,59 @@
     db  066h, 026h, 0c7h, 047h, 01eh, 004h, 0ffh, 000h, 000h
     ; mov dword [es:bx+01eh], strict dword 00000ff04h ; 66 26 c7 47 1e 04 ff 00 00
-    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     mov word [es:bx+024h], ax                 ; 26 89 47 24
     mov byte [es:bx+023h], 001h               ; 26 c6 47 23 01
-    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     mov word [es:bx+026h], ax                 ; 26 89 47 26
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov word [es:bx+02ah], ax                 ; 26 89 47 2a
-    cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
-    jne short 07ed4h                          ; 75 06
-    cmp di, 00400h                            ; 81 ff 00 04
-    jbe short 07edch                          ; 76 08
+    cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
+    jne short 07ef9h                          ; 75 07
+    cmp word [bp-01eh], 00400h                ; 81 7e e2 00 04
+    jbe short 07f01h                          ; 76 08
     mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
-    jmp short 07ee0h                          ; eb 04
-    mov word [es:bx+028h], di                 ; 26 89 7f 28
+    jmp short 07f08h                          ; eb 07
+    mov ax, word [bp-01eh]                    ; 8b 46 e2
+    mov word [es:bx+028h], ax                 ; 26 89 47 28
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 46 9a
-    push word [bp-018h]                       ; ff 76 e8
+    call 01931h                               ; e8 1e 9a
+    push di                                   ; 57
+    push word [bp-014h]                       ; ff 76 ec
+    push dword [bp-01ch]                      ; 66 ff 76 e4
+    push word [bp-01eh]                       ; ff 76 e2
     push word [bp-00eh]                       ; ff 76 f2
-    push word [bp-01ch]                       ; ff 76 e4
-    push word [bp-014h]                       ; ff 76 ec
-    push di                                   ; 57
-    push word [bp-010h]                       ; ff 76 f0
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
     push 00c20h                               ; 68 20 0c
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 6a 9a
+    call 01972h                               ; e8 44 9a
     add sp, strict byte 00012h                ; 83 c4 12
     movzx ax, dl                              ; 0f b6 c2
     imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-01ah]                         ; 8e 46 e6
+    mov es, [bp-018h]                         ; 8e 46 e8
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
+    mov word [es:bx+02ch], ax                 ; 26 89 47 2c
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    mov word [es:bx+030h], ax                 ; 26 89 47 30
+    cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
+    jne short 07f59h                          ; 75 07
+    cmp word [bp-01eh], 00400h                ; 81 7e e2 00 04
+    jbe short 07f61h                          ; 76 08
+    mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
+    jmp short 07f68h                          ; eb 07
+    mov ax, word [bp-01eh]                    ; 8b 46 e2
+    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
+    movzx ax, dl                              ; 0f b6 c2
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov es, [bp-018h]                         ; 8e 46 e8
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
     mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov word [es:bx+02ch], ax                 ; 26 89 47 2c
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:bx+030h], ax                 ; 26 89 47 30
-    cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
-    jne short 07f32h                          ; 75 06
-    cmp di, 00400h                            ; 81 ff 00 04
-    jbe short 07f3ah                          ; 76 08
-    mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
-    jmp short 07f3eh                          ; eb 04
-    mov word [es:bx+02eh], di                 ; 26 89 7f 2e
-    movzx ax, dl                              ; 0f b6 c2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-01ah]                         ; 8e 46 e6
-    mov bx, si                                ; 89 f3
-    add bx, ax                                ; 01 c3
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov word [es:bx+032h], ax                 ; 26 89 47 32
-    mov ax, word [bp-018h]                    ; 8b 46 e8
-    mov word [es:bx+034h], ax                 ; 26 89 47 34
+    mov word [es:bx+034h], di                 ; 26 89 7f 34
     mov al, byte [es:si+0019eh]               ; 26 8a 84 9e 01
     mov ah, byte [bp-00ch]                    ; 8a 66 f4
@@ -11751,5 +11770,5 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 d2 96
+    call 01650h                               ; e8 ab 96
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -11757,24 +11776,21 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 d2 96
+    call 0165eh                               ; e8 ab 96
     inc byte [bp-00ch]                        ; fe 46 f4
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
-    mov es, [bp-01ah]                         ; 8e 46 e6
-    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
-    jmp near 0802dh                           ; e9 90 00
+    jmp near 08041h                           ; e9 88 00
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 89 99
-    push word [bp-010h]                       ; ff 76 f0
+    call 01931h                               ; e8 6d 99
+    push word [bp-00eh]                       ; ff 76 f2
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
     push 00c4ah                               ; 68 4a 0c
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 ba 99
+    call 01972h                               ; e8 9e 99
     add sp, strict byte 00008h                ; 83 c4 08
     mov dl, byte [bp-00ch]                    ; 8a 56 f4
     add dl, 008h                              ; 80 c2 08
-    test byte [bp-00225h], 080h               ; f6 86 db fd 80
+    test byte [bp-00227h], 080h               ; f6 86 d9 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
@@ -11783,10 +11799,10 @@
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     sal ax, 002h                              ; c1 e0 02
-    mov es, [bp-01ah]                         ; 8e 46 e6
+    mov es, [bp-018h]                         ; 8e 46 e8
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
+    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
     mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
-    mov al, byte [bp-010h]                    ; 8a 46 f0
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     mov byte [es:bx+001dah], al               ; 26 88 87 da 01
     movzx ax, dl                              ; 0f b6 c2
@@ -11808,43 +11824,47 @@
     inc byte [bp-00ch]                        ; fe 46 f4
     mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov es, [bp-018h]                         ; 8e 46 e8
     mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
-    inc word [bp-010h]                        ; ff 46 f0
-    cmp word [bp-010h], strict byte 00010h    ; 83 7e f0 10
-    jnl short 0809eh                          ; 7d 68
-    mov byte [bp-026h], 012h                  ; c6 46 da 12
+    inc word [bp-00eh]                        ; ff 46 f2
+    cmp word [bp-00eh], strict byte 00010h    ; 83 7e f2 10
+    jnl short 080c9h                          ; 7d 74
+    mov byte [bp-028h], 012h                  ; c6 46 d8 12
     xor al, al                                ; 30 c0
+    mov byte [bp-027h], al                    ; 88 46 d9
+    mov byte [bp-026h], al                    ; 88 46 da
     mov byte [bp-025h], al                    ; 88 46 db
-    mov byte [bp-024h], al                    ; 88 46 dc
+    mov byte [bp-024h], 005h                  ; c6 46 dc 05
     mov byte [bp-023h], al                    ; 88 46 dd
-    mov byte [bp-022h], 005h                  ; c6 46 de 05
-    mov byte [bp-021h], al                    ; 88 46 df
     push dword 000000005h                     ; 66 6a 05
-    lea dx, [bp-00226h]                       ; 8d 96 da fd
+    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
     push SS                                   ; 16
     push dx                                   ; 52
     push strict byte 00006h                   ; 6a 06
-    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
+    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-026h]                         ; 8d 5e da
-    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
-    call 07885h                               ; e8 1e f8
+    lea bx, [bp-028h]                         ; 8d 5e d8
+    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
+    call 07885h                               ; e8 ff f7
     test al, al                               ; 84 c0
-    je short 08079h                           ; 74 0e
+    je short 08098h                           ; 74 0e
     push 00b9ah                               ; 68 9a 0b
     push 00bbah                               ; 68 ba 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 fc 98
+    call 01972h                               ; e8 dd 98
     add sp, strict byte 00006h                ; 83 c4 06
-    test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
-    jne short 08089h                          ; 75 09
-    test byte [bp-00226h], 01fh               ; f6 86 da fd 1f
-    je near 07ce7h                            ; 0f 84 5e fc
-    test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
-    jne short 0802dh                          ; 75 9d
-    mov al, byte [bp-00226h]                  ; 8a 86 da fd
+    mov es, [bp-018h]                         ; 8e 46 e8
+    mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
+    mov byte [bp-00ch], al                    ; 88 46 f4
+    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
+    jne short 080b3h                          ; 75 09
+    test byte [bp-00228h], 01fh               ; f6 86 d8 fd 1f
+    je near 07d13h                            ; 0f 84 60 fc
+    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
+    jne short 08041h                          ; 75 87
+    mov al, byte [bp-00228h]                  ; 8a 86 d8 fd
     and AL, strict byte 01fh                  ; 24 1f
     cmp AL, strict byte 005h                  ; 3c 05
-    je near 07f9dh                            ; 0f 84 01 ff
-    jmp short 0802dh                          ; eb 8f
+    je near 07fb9h                            ; 0f 84 f3 fe
+    jmp near 08041h                           ; e9 78 ff
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -11855,10 +11875,10 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf80a8 LB 0x66
+_scsi_init:                                  ; 0xf80d3 LB 0x66
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b8 95
+    call 0166ch                               ; e8 8d 95
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
@@ -11871,10 +11891,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 080d8h                          ; 75 0c
+    jne short 08103h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 07cc3h                               ; e8 eb fb
+    call 07cefh                               ; e8 ec fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
@@ -11884,10 +11904,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 080f1h                          ; 75 0c
+    jne short 0811ch                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 07cc3h                               ; e8 d2 fb
+    call 07cefh                               ; e8 d3 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
@@ -11897,14 +11917,14 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 0810ah                          ; 75 0c
+    jne short 08135h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 07cc3h                               ; e8 b9 fb
+    call 07cefh                               ; e8 ba fb
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-high_bits_save_:                             ; 0xf810e LB 0x17
+high_bits_save_:                             ; 0xf8139 LB 0x17
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11918,5 +11938,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-high_bits_restore_:                          ; 0xf8125 LB 0x17
+high_bits_restore_:                          ; 0xf8150 LB 0x17
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11930,5 +11950,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_set_bits_:                         ; 0xf813c LB 0x43
+ahci_ctrl_set_bits_:                         ; 0xf8167 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11968,5 +11988,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_clear_bits_:                       ; 0xf817f LB 0x47
+ahci_ctrl_clear_bits_:                       ; 0xf81aa LB 0x47
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12008,5 +12028,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_is_bit_set_:                       ; 0xf81c6 LB 0x39
+ahci_ctrl_is_bit_set_:                       ; 0xf81f1 LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12030,9 +12050,9 @@
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 081f2h                          ; 75 04
+    jne short 0821dh                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 081f6h                           ; 74 04
+    je short 08221h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 081f8h                          ; eb 02
+    jmp short 08223h                          ; eb 02
     xor al, al                                ; 30 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12041,5 +12061,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf81ff LB 0x1b
+ahci_ctrl_extract_bits_:                     ; 0xf822a LB 0x1b
     push si                                   ; 56
     push bp                                   ; 55
@@ -12049,12 +12069,12 @@
     and dx, cx                                ; 21 ca
     movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
-    jcxz 08215h                               ; e3 06
+    jcxz 08240h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0820fh                               ; e2 fa
+    loop 0823ah                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf821a LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf8245 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12067,5 +12087,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08228h                               ; e2 fa
+    loop 08253h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -12075,5 +12095,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf8238 LB 0xd5
+ahci_port_cmd_sync_:                         ; 0xf8263 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12089,5 +12109,5 @@
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 08305h                            ; 0f 84 aa 00
+    je near 08330h                            ; 0f 84 aa 00
     movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
     xor dx, dx                                ; 31 d2
@@ -12101,5 +12121,5 @@
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov dx, es                                ; 8c c2
-    call 0821ah                               ; e8 96 ff
+    call 08245h                               ; e8 96 ff
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:si+008h], ax                 ; 26 89 44 08
@@ -12111,5 +12131,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 0813ch                               ; e8 98 fe
+    call 08167h                               ; e8 98 fe
     lea ax, [si+00138h]                       ; 8d 84 38 01
     cwd                                       ; 99
@@ -12138,12 +12158,12 @@
     mov dx, si                                ; 89 f2
     mov ax, di                                ; 89 f8
-    call 081c6h                               ; e8 e2 fe
+    call 081f1h                               ; e8 e2 fe
     test al, al                               ; 84 c0
-    je short 082c7h                           ; 74 df
+    je short 082f2h                           ; 74 df
     mov bx, strict word 00001h                ; bb 01 00
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
     mov ax, di                                ; 89 f8
-    call 0813ch                               ; e8 48 fe
+    call 08167h                               ; e8 48 fe
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, 00118h                            ; 81 c2 18 01
@@ -12151,5 +12171,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 0817fh                               ; e8 7a fe
+    call 081aah                               ; e8 7a fe
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -12158,5 +12178,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf830d LB 0x1ca
+ahci_cmd_data_:                              ; 0xf8338 LB 0x1e4
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12166,5 +12186,5 @@
     sub sp, strict byte 00010h                ; 83 ec 10
     mov di, ax                                ; 89 c7
-    mov word [bp-012h], dx                    ; 89 56 ee
+    mov word [bp-00ch], dx                    ; 89 56 f4
     mov byte [bp-008h], bl                    ; 88 5e f8
     xor si, si                                ; 31 f6
@@ -12172,15 +12192,15 @@
     mov ax, word [es:di+001eeh]               ; 26 8b 85 ee 01
     mov word [bp-00ah], ax                    ; 89 46 f6
-    mov word [bp-00eh], si                    ; 89 76 f2
-    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov word [bp-010h], si                    ; 89 76 f0
+    mov word [bp-00eh], ax                    ; 89 46 f2
     mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-016h], ax                    ; 89 46 ea
     mov ax, word [es:di+00ch]                 ; 26 8b 45 0c
-    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-012h], ax                    ; 89 46 ee
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0975ah                               ; e8 0e 14
+    call 097aah                               ; e8 33 14
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
@@ -12188,9 +12208,9 @@
     mov byte [es:si+00082h], al               ; 26 88 84 82 00
     mov byte [es:si+00083h], 000h             ; 26 c6 84 83 00 00
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-00ch]                         ; 8e 46 f4
     mov al, byte [es:di]                      ; 26 8a 05
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:si+00084h], al               ; 26 88 84 84 00
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-00ch]                         ; 8e 46 f4
     mov ax, word [es:di]                      ; 26 8b 05
     mov bx, word [es:di+002h]                 ; 26 8b 5d 02
@@ -12198,13 +12218,13 @@
     shr bx, 1                                 ; d1 eb
     rcr ax, 1                                 ; d1 d8
-    loop 0837fh                               ; e2 fa
+    loop 083aah                               ; e2 fa
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:si+00085h], al               ; 26 88 84 85 00
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-00ch]                         ; 8e 46 f4
     mov ax, word [es:di+002h]                 ; 26 8b 45 02
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:si+00086h], al               ; 26 88 84 86 00
     mov byte [es:si+00087h], 040h             ; 26 c6 84 87 00 40
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-00ch]                         ; 8e 46 f4
     mov ax, word [es:di+002h]                 ; 26 8b 45 02
     shr ax, 008h                              ; c1 e8 08
@@ -12213,23 +12233,23 @@
     mov word [es:si+00089h], strict word 00000h ; 26 c7 84 89 00 00 00
     mov byte [es:si+0008bh], 000h             ; 26 c6 84 8b 00 00
-    mov al, byte [bp-010h]                    ; 8a 46 f0
+    mov al, byte [bp-016h]                    ; 8a 46 ea
     mov byte [es:si+0008ch], al               ; 26 88 84 8c 00
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov ax, word [bp-016h]                    ; 8b 46 ea
     shr ax, 008h                              ; c1 e8 08
     mov byte [es:si+0008dh], al               ; 26 88 84 8d 00
     mov word [es:si+00276h], strict word 00010h ; 26 c7 84 76 02 10 00
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov ax, word [bp-016h]                    ; 8b 46 ea
     xor dx, dx                                ; 31 d2
-    mov bx, word [bp-016h]                    ; 8b 5e ea
+    mov bx, word [bp-012h]                    ; 8b 5e ee
     xor cx, cx                                ; 31 c9
-    call 09729h                               ; e8 41 13
+    call 09779h                               ; e8 66 13
     push dx                                   ; 52
     push ax                                   ; 50
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-00ch]                         ; 8e 46 f4
     mov bx, word [es:di+004h]                 ; 26 8b 5d 04
     mov cx, word [es:di+006h]                 ; 26 8b 4d 06
     mov ax, 0026ah                            ; b8 6a 02
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09642h                               ; e8 44 12
+    call 09688h                               ; e8 5f 12
     mov es, [bp-00ah]                         ; 8e 46 f6
     movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
@@ -12244,53 +12264,63 @@
     mov dx, word [bp-014h]                    ; 8b 56 ec
     mov word [es:bx+0010eh], dx               ; 26 89 97 0e 01
-    mov cx, word [es:si+0027ah]               ; 26 8b 8c 7a 02
-    mov dx, word [es:si+0027ch]               ; 26 8b 94 7c 02
-    mov word [es:bx+00100h], cx               ; 26 89 8f 00 01
-    mov word [es:bx+00102h], dx               ; 26 89 97 02 01
+    mov dx, word [es:si+0027ah]               ; 26 8b 94 7a 02
+    mov cx, word [es:si+0027ch]               ; 26 8b 8c 7c 02
+    mov word [es:bx+00100h], dx               ; 26 89 97 00 01
+    mov word [es:bx+00102h], cx               ; 26 89 8f 02 01
     inc ax                                    ; 40
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-00ch]                         ; 8e 46 f4
     cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
-    je short 08477h                           ; 74 2c
+    je short 084a2h                           ; 74 2c
     mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
     dec dx                                    ; 4a
-    mov di, ax                                ; 89 c7
-    sal di, 004h                              ; c1 e7 04
+    mov bx, ax                                ; 89 c3
+    sal bx, 004h                              ; c1 e3 04
     mov es, [bp-00ah]                         ; 8e 46 f6
-    mov word [es:di+0010ch], dx               ; 26 89 95 0c 01
-    mov word [es:di+0010eh], si               ; 26 89 b5 0e 01
+    mov word [es:bx+0010ch], dx               ; 26 89 97 0c 01
+    mov word [es:bx+0010eh], si               ; 26 89 b7 0e 01
     mov dx, word [es:si+00264h]               ; 26 8b 94 64 02
-    mov bx, word [es:si+00266h]               ; 26 8b 9c 66 02
-    mov word [es:di+00100h], dx               ; 26 89 95 00 01
-    mov word [es:di+00102h], bx               ; 26 89 9d 02 01
+    mov cx, word [es:si+00266h]               ; 26 8b 8c 66 02
+    mov word [es:bx+00100h], dx               ; 26 89 97 00 01
+    mov word [es:bx+00102h], cx               ; 26 89 8f 02 01
     inc ax                                    ; 40
-    les bx, [bp-00eh]                         ; c4 5e f2
+    les bx, [bp-010h]                         ; c4 5e f0
     mov byte [es:bx+00263h], al               ; 26 88 87 63 02
     xor ax, ax                                ; 31 c0
-    les bx, [bp-00eh]                         ; c4 5e f2
+    les bx, [bp-010h]                         ; c4 5e f0
     movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
     cmp ax, dx                                ; 39 d0
-    jnc short 08491h                          ; 73 03
+    jnc short 084bch                          ; 73 03
     inc ax                                    ; 40
-    jmp short 08481h                          ; eb f0
+    jmp short 084ach                          ; eb f0
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 035h                  ; 3c 35
-    jne short 0849eh                          ; 75 06
+    jne short 084c9h                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 084b2h                          ; eb 14
+    jmp short 084ddh                          ; eb 14
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 084aeh                          ; 75 0c
+    jne short 084d9h                          ; 75 0c
     or byte [bp-008h], 020h                   ; 80 4e f8 20
     or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
-    jmp short 084b2h                          ; eb 04
+    jmp short 084ddh                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     or byte [bp-008h], 005h                   ; 80 4e f8 05
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 08238h                               ; e8 75 fd
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov dx, word [bp-00eh]                    ; 8b 56 f2
+    call 08263h                               ; e8 75 fd
+    mov cx, word [bp-00eh]                    ; 8b 4e f2
+    mov bx, word [bp-010h]                    ; 8b 5e f0
+    add bx, 00240h                            ; 81 c3 40 02
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     add ax, 0026ah                            ; 05 6a 02
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 096bbh                               ; e8 ec 11
+    mov dx, cx                                ; 89 ca
+    call 09701h                               ; e8 fe 11
+    mov es, cx                                ; 8e c1
+    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
+    test al, al                               ; 84 c0
+    je short 08512h                           ; 74 05
+    mov ax, strict word 00004h                ; b8 04 00
+    jmp short 08514h                          ; eb 02
+    xor ah, ah                                ; 30 e4
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -12299,5 +12329,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf84d7 LB 0x144
+ahci_port_deinit_current_:                   ; 0xf851c LB 0x144
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12314,5 +12344,5 @@
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 08612h                            ; 0f 84 17 01
+    je near 08657h                            ; 0f 84 17 01
     movzx dx, al                              ; 0f b6 d0
     sal dx, 007h                              ; c1 e2 07
@@ -12321,5 +12351,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, si                                ; 89 f0
-    call 0817fh                               ; e8 70 fc
+    call 081aah                               ; e8 56 fc
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     sal ax, 007h                              ; c1 e0 07
@@ -12330,22 +12360,22 @@
     xor cx, cx                                ; 31 c9
     mov ax, si                                ; 89 f0
-    call 081c6h                               ; e8 9d fc
+    call 081f1h                               ; e8 83 fc
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 0850fh                           ; 74 e2
+    je short 08554h                           ; 74 e2
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 0975ah                               ; e8 20 12
+    call 097aah                               ; e8 2b 12
     lea ax, [di+00080h]                       ; 8d 85 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 0975ah                               ; e8 11 12
+    call 097aah                               ; e8 1c 12
     lea ax, [di+00200h]                       ; 8d 85 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 0975ah                               ; e8 02 12
+    call 097aah                               ; e8 0d 12
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     add ax, 00108h                            ; 05 08 01
@@ -12449,5 +12479,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf861b LB 0x206
+ahci_port_init_:                             ; 0xf8660 LB 0x206
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12459,5 +12489,5 @@
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 084d7h                               ; e8 a8 fe
+    call 0851ch                               ; e8 a8 fe
     movzx dx, bl                              ; 0f b6 d3
     sal dx, 007h                              ; c1 e2 07
@@ -12467,5 +12497,5 @@
     mov bx, strict word 00011h                ; bb 11 00
     xor cx, cx                                ; 31 c9
-    call 0817fh                               ; e8 36 fb
+    call 081aah                               ; e8 1c fb
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     sal di, 007h                              ; c1 e7 07
@@ -12475,17 +12505,17 @@
     mov bx, 0c011h                            ; bb 11 c0
     xor cx, cx                                ; 31 c9
-    call 081c6h                               ; e8 62 fb
+    call 081f1h                               ; e8 48 fb
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08649h                           ; 74 e1
+    je short 0868eh                           ; 74 e1
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0975ah                               ; e8 e5 10
+    call 097aah                               ; e8 f0 10
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0975ah                               ; e8 d6 10
+    call 097aah                               ; e8 e1 10
     mov ax, si                                ; 89 f0
     add ah, 002h                              ; 80 c4 02
@@ -12494,5 +12524,5 @@
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0975ah                               ; e8 c3 10
+    call 097aah                               ; e8 ce 10
     lea ax, [di+00108h]                       ; 8d 85 08 01
     cwd                                       ; 99
@@ -12508,5 +12538,5 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0821ah                               ; e8 60 fb
+    call 08245h                               ; e8 46 fb
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
@@ -12553,5 +12583,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0821ah                               ; e8 f4 fa
+    call 08245h                               ; e8 da fa
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
@@ -12658,44 +12688,44 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-@ahci_read_sectors:                          ; 0xf8821 LB 0x94
+@ahci_read_sectors:                          ; 0xf8866 LB 0x93
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    les di, [bp+004h]                         ; c4 7e 04
-    movzx di, byte [es:di+008h]               ; 26 0f b6 7d 08
-    sub di, strict byte 0000ch                ; 83 ef 0c
-    cmp di, strict byte 00004h                ; 83 ff 04
-    jbe short 08845h                          ; 76 0f
-    push di                                   ; 57
+    les bx, [bp+004h]                         ; c4 5e 04
+    movzx bx, byte [es:bx+008h]               ; 26 0f b6 5f 08
+    sub bx, strict byte 0000ch                ; 83 eb 0c
+    cmp bx, strict byte 00004h                ; 83 fb 04
+    jbe short 0888ah                          ; 76 0f
+    push bx                                   ; 53
     push 00c66h                               ; 68 66 0c
     push 00c78h                               ; 68 78 0c
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 30 91
+    call 01972h                               ; e8 eb 90
     add sp, strict byte 00008h                ; 83 c4 08
-    les bx, [bp+004h]                         ; c4 5e 04
-    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
-    xor ax, ax                                ; 31 c0
-    call 0810eh                               ; e8 bc f8
-    mov es, [bp+006h]                         ; 8e 46 06
-    add di, bx                                ; 01 df
-    movzx bx, byte [es:di+001e9h]             ; 26 0f b6 9d e9 01
-    mov di, word [bp+004h]                    ; 8b 7e 04
+    les di, [bp+004h]                         ; c4 7e 04
     mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
     xor ax, ax                                ; 31 c0
-    call 0861bh                               ; e8 b1 fd
+    call 08139h                               ; e8 a2 f8
+    mov es, [bp+006h]                         ; 8e 46 06
+    add bx, di                                ; 01 fb
+    movzx bx, byte [es:bx+001e9h]             ; 26 0f b6 9f e9 01
+    mov si, di                                ; 89 fe
+    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
+    xor ax, ax                                ; 31 c0
+    call 08660h                               ; e8 b2 fd
     mov bx, strict word 00025h                ; bb 25 00
     mov ax, di                                ; 89 f8
     mov dx, word [bp+006h]                    ; 8b 56 06
-    call 0830dh                               ; e8 98 fa
+    call 08338h                               ; e8 7f fa
+    mov bx, ax                                ; 89 c3
     mov es, [bp+006h]                         ; 8e 46 06
-    mov bx, di                                ; 89 fb
-    mov ax, word [es:bx+00ah]                 ; 26 8b 47 0a
-    mov word [es:bx+014h], ax                 ; 26 89 47 14
+    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
+    mov word [es:si+014h], ax                 ; 26 89 44 14
     mov cx, ax                                ; 89 c1
     sal cx, 009h                              ; c1 e1 09
     shr cx, 1                                 ; d1 e9
     mov di, word [es:di+004h]                 ; 26 8b 7d 04
-    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov ax, word [es:si+006h]                 ; 26 8b 44 06
     mov si, di                                ; 89 fe
     mov dx, ax                                ; 89 c2
@@ -12705,9 +12735,9 @@
     rep movsw                                 ; f3 a5
     pop DS                                    ; 1f
-    mov es, [bp+006h]                         ; 8e 46 06
-    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
+    les si, [bp+004h]                         ; c4 76 04
+    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 08125h                               ; e8 7b f8
-    xor ax, ax                                ; 31 c0
+    call 08150h                               ; e8 62 f8
+    mov ax, bx                                ; 89 d8
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -12715,5 +12745,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@ahci_write_sectors:                         ; 0xf88b5 LB 0x70
+@ahci_write_sectors:                         ; 0xf88f9 LB 0x72
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12725,15 +12755,15 @@
     sub bx, strict byte 0000ch                ; 83 eb 0c
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 088ddh                          ; 76 0f
+    jbe short 08921h                          ; 76 0f
     push bx                                   ; 53
     push 00c97h                               ; 68 97 0c
     push 00c78h                               ; 68 78 0c
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 98 90
+    call 01972h                               ; e8 54 90
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, cx                                ; 8e c1
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 0810eh                               ; e8 25 f8
+    call 08139h                               ; e8 0c f8
     mov es, cx                                ; 8e c1
     add bx, si                                ; 01 f3
@@ -12741,9 +12771,10 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 0861bh                               ; e8 1e fd
+    call 08660h                               ; e8 1f fd
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 0830dh                               ; e8 06 fa
+    call 08338h                               ; e8 ed f9
+    mov bx, ax                                ; 89 c3
     mov es, cx                                ; 8e c1
     mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
@@ -12751,11 +12782,11 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 08125h                               ; e8 0a f8
-    xor ax, ax                                ; 31 c0
+    call 08150h                               ; e8 ef f7
+    mov ax, bx                                ; 89 d8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf8925 LB 0x173
+ahci_cmd_packet_:                            ; 0xf896b LB 0x173
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12769,22 +12800,22 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 2c 8d
+    call 0166ch                               ; e8 e6 8c
     mov si, 00122h                            ; be 22 01
     mov word [bp-008h], ax                    ; 89 46 f8
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 0896bh                          ; 75 1f
+    jne short 089b1h                          ; 75 1f
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 da 8f
+    call 01931h                               ; e8 94 8f
     push 00caah                               ; 68 aa 0c
     push 00cbah                               ; 68 ba 0c
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 10 90
+    call 01972h                               ; e8 ca 8f
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 08a8fh                           ; e9 24 01
+    jmp near 08ad5h                           ; e9 24 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 08965h                          ; 75 f4
+    jne short 089abh                          ; 75 f4
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
@@ -12792,5 +12823,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0897ah                               ; e2 fa
+    loop 089c0h                               ; e2 fa
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si], ax                      ; 26 89 04
@@ -12804,5 +12835,5 @@
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 096f0h                               ; e8 49 0d
+    call 09740h                               ; e8 53 0d
     mov word [es:si+00ah], ax                 ; 26 89 44 0a
     xor di, di                                ; 31 ff
@@ -12814,5 +12845,5 @@
     xor ax, ax                                ; 31 c0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0810eh                               ; e8 47 f7
+    call 08139h                               ; e8 2c f7
     mov es, [bp-008h]                         ; 8e 46 f8
     mov bx, word [bp-014h]                    ; 8b 5e ec
@@ -12821,5 +12852,5 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 0861bh                               ; e8 3c fc
+    call 08660h                               ; e8 3b fc
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -12828,5 +12859,5 @@
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09767h                               ; e8 74 0d
+    call 097b7h                               ; e8 7e 0d
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -12835,5 +12866,5 @@
     mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
     test ax, ax                               ; 85 c0
-    je short 08a31h                           ; 74 27
+    je short 08a77h                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -12848,5 +12879,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 0830dh                               ; e8 d1 f8
+    call 08338h                               ; e8 b6 f8
     les bx, [bp-00eh]                         ; c4 5e f2
     mov ax, word [es:bx+004h]                 ; 26 8b 47 04
@@ -12871,11 +12902,11 @@
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 08125h                               ; e8 aa f6
+    call 08150h                               ; e8 8f f6
     les bx, [bp-00eh]                         ; c4 5e f2
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 08a8dh                          ; 75 05
+    jne short 08ad3h                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08a8fh                          ; eb 02
+    jmp short 08ad5h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12884,5 +12915,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf8a98 LB 0x451
+ahci_port_detect_device_:                    ; 0xf8ade LB 0x451
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12896,8 +12927,8 @@
     movzx di, bl                              ; 0f b6 fb
     mov bx, di                                ; 89 fb
-    call 0861bh                               ; e8 69 fb
+    call 08660h                               ; e8 68 fb
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b1 8b
+    call 0166ch                               ; e8 6b 8b
     mov word [bp-010h], 00122h                ; c7 46 f0 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -12968,7 +12999,7 @@
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 081ffh                               ; e8 9a f6
+    call 0822ah                               ; e8 7f f6
     test ax, ax                               ; 85 c0
-    je near 08ee1h                            ; 0f 84 76 03
+    je near 08f27h                            ; 0f 84 76 03
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     sal ax, 007h                              ; c1 e0 07
@@ -12998,7 +13029,7 @@
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 081ffh                               ; e8 4e f6
+    call 0822ah                               ; e8 33 f6
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 08b6bh                           ; 74 b5
+    je short 08bb1h                           ; 74 b5
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
@@ -13006,7 +13037,7 @@
     mov ax, di                                ; 89 f8
     mov dx, word [bp-01ah]                    ; 8b 56 e6
-    call 081ffh                               ; e8 3a f6
+    call 0822ah                               ; e8 1f f6
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne near 08ee1h                           ; 0f 85 15 03
+    jne near 08f27h                           ; 0f 85 15 03
     mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00130h                            ; 05 30 01
@@ -13035,5 +13066,5 @@
     mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 08ee1h                           ; 0f 83 cf 02
+    jnc near 08f27h                           ; 0f 83 cf 02
     mov dx, word [bp-016h]                    ; 8b 56 ea
     add dx, 00118h                            ; 81 c2 18 01
@@ -13042,5 +13073,5 @@
     mov bx, strict word 00010h                ; bb 10 00
     xor cx, cx                                ; 31 c9
-    call 0813ch                               ; e8 13 f5
+    call 08167h                               ; e8 f8 f4
     mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00124h                            ; 05 24 01
@@ -13066,7 +13097,7 @@
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne near 08e3dh                           ; 0f 85 d8 01
+    jne near 08e83h                           ; 0f 85 d8 01
     cmp ax, 00101h                            ; 3d 01 01
-    jne near 08e3dh                           ; 0f 85 d1 01
+    jne near 08e83h                           ; 0f 85 d1 01
     les bx, [bp-010h]                         ; c4 5e f0
     db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
@@ -13080,5 +13111,5 @@
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 0830dh                               ; e8 76 f6
+    call 08338h                               ; e8 5b f6
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-00226h], 080h               ; f6 86 da fd 80
@@ -13097,7 +13128,7 @@
     mov di, word [bp-001ach]                  ; 8b be 54 fe
     cmp di, 00fffh                            ; 81 ff ff 0f
-    jne short 08cdch                          ; 75 10
+    jne short 08d22h                          ; 75 10
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 08cdch                          ; 75 0b
+    jne short 08d22h                          ; 75 0b
     mov ax, word [bp-0015eh]                  ; 8b 86 a2 fe
     mov word [bp-014h], ax                    ; 89 46 ec
@@ -13128,19 +13159,19 @@
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08d47h                           ; 72 0c
-    jbe short 08d4fh                          ; 76 12
+    jc short 08d8dh                           ; 72 0c
+    jbe short 08d95h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08d57h                           ; 74 16
+    je short 08d9dh                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 08d53h                           ; 74 0e
-    jmp short 08da0h                          ; eb 59
+    je short 08d99h                           ; 74 0e
+    jmp short 08de6h                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 08da0h                          ; 75 55
+    jne short 08de6h                          ; 75 55
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 08d59h                          ; eb 0a
+    jmp short 08d9fh                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 08d59h                          ; eb 06
+    jmp short 08d9fh                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 08d59h                          ; eb 02
+    jmp short 08d9fh                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov al, dl                                ; 88 d0
@@ -13148,17 +13179,17 @@
     movzx bx, al                              ; 0f b6 d8
     mov ax, bx                                ; 89 d8
-    call 016ach                               ; e8 47 89
+    call 016ach                               ; e8 01 89
     test al, al                               ; 84 c0
-    je short 08da0h                           ; 74 37
+    je short 08de6h                           ; 74 37
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 3a 89
+    call 016ach                               ; e8 f4 88
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     sal si, 008h                              ; c1 e6 08
     movzx ax, dl                              ; 0f b6 c2
-    call 016ach                               ; e8 2d 89
+    call 016ach                               ; e8 e7 88
     xor ah, ah                                ; 30 e4
     add ax, si                                ; 01 f0
@@ -13167,21 +13198,21 @@
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 1d 89
+    call 016ach                               ; e8 d7 88
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
     mov ax, bx                                ; 89 d8
-    call 016ach                               ; e8 13 89
+    call 016ach                               ; e8 cd 88
     xor ah, ah                                ; 30 e4
     mov word [bp-022h], ax                    ; 89 46 de
-    jmp short 08dadh                          ; eb 0d
+    jmp short 08df3h                          ; eb 0d
     mov bx, word [bp-014h]                    ; 8b 5e ec
     mov cx, di                                ; 89 f9
     mov dx, ss                                ; 8c d2
     lea ax, [bp-026h]                         ; 8d 46 da
-    call 055b6h                               ; e8 09 c8
+    call 055b6h                               ; e8 c3 c7
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 79 8b
+    call 01931h                               ; e8 33 8b
     push di                                   ; 57
     push word [bp-014h]                       ; ff 76 ec
@@ -13200,5 +13231,5 @@
     push 00cdah                               ; 68 da 0c
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 91 8b
+    call 01972h                               ; e8 4b 8b
     add sp, strict byte 00018h                ; 83 c4 18
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
@@ -13229,5 +13260,5 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 24 88
+    call 01650h                               ; e8 de 87
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -13235,10 +13266,10 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 24 88
-    jmp near 08ed3h                           ; e9 96 00
+    call 0165eh                               ; e8 de 87
+    jmp near 08f19h                           ; e9 96 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne near 08ed3h                           ; 0f 85 8e 00
+    jne near 08f19h                           ; 0f 85 8e 00
     cmp ax, 00101h                            ; 3d 01 01
-    jne near 08ed3h                           ; 0f 85 87 00
+    jne near 08f19h                           ; 0f 85 87 00
     les bx, [bp-010h]                         ; c4 5e f0
     db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
@@ -13252,5 +13283,5 @@
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 0830dh                               ; e8 96 f4
+    call 08338h                               ; e8 7b f4
     test byte [bp-00226h], 080h               ; f6 86 da fd 80
     db  00fh, 095h, 0c0h
@@ -13291,5 +13322,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf8ee9 LB 0x43
+ahci_mem_alloc_:                             ; 0xf8f2f LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13301,7 +13332,7 @@
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0166ch                               ; e8 73 87
+    call 0166ch                               ; e8 2d 87
     test ax, ax                               ; 85 c0
-    je short 08f22h                           ; 74 25
+    je short 08f68h                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
@@ -13310,5 +13341,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08f05h                               ; e2 fa
+    loop 08f4bh                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
@@ -13316,8 +13347,8 @@
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 08f12h                               ; e2 fa
+    loop 08f58h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0167ah                               ; e8 5a 87
+    call 0167ah                               ; e8 14 87
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -13329,5 +13360,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf8f2c LB 0x125
+ahci_hba_init_:                              ; 0xf8f72 LB 0x125
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13341,5 +13372,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 2a 87
+    call 0166ch                               ; e8 e4 86
     mov bx, 00122h                            ; bb 22 01
     mov word [bp-010h], ax                    ; 89 46 f0
@@ -13358,8 +13389,8 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 08ee9h                               ; e8 82 ff
+    call 08f2fh                               ; e8 82 ff
     mov di, ax                                ; 89 c7
     test ax, ax                               ; 85 c0
-    je near 09030h                            ; 0f 84 c1 00
+    je near 09076h                            ; 0f 84 c1 00
     mov es, [bp-010h]                         ; 8e 46 f0
     mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
@@ -13375,5 +13406,5 @@
     mov dx, strict word 00004h                ; ba 04 00
     mov ax, si                                ; 89 f0
-    call 0813ch                               ; e8 99 f1
+    call 08167h                               ; e8 7e f1
     mov ax, strict word 00004h                ; b8 04 00
     xor cx, cx                                ; 31 c9
@@ -13392,5 +13423,5 @@
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 08fa3h                          ; 75 de
+    jne short 08fe9h                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
@@ -13410,33 +13441,33 @@
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 081ffh                               ; e8 16 f2
+    call 0822ah                               ; e8 fb f1
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    jmp short 08ffdh                          ; eb 09
+    jmp short 09043h                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
-    jnc short 0902eh                          ; 73 31
+    jnc short 09074h                          ; 73 31
     movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
     mov ax, strict word 00001h                ; b8 01 00
     xor dx, dx                                ; 31 d2
-    jcxz 0900eh                               ; e3 06
+    jcxz 09054h                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09008h                               ; e2 fa
+    loop 0904eh                               ; e2 fa
     mov bx, ax                                ; 89 c3
     mov cx, dx                                ; 89 d1
     mov dx, strict word 0000ch                ; ba 0c 00
     mov ax, si                                ; 89 f0
-    call 081c6h                               ; e8 ac f1
+    call 081f1h                               ; e8 91 f1
     test al, al                               ; 84 c0
-    je short 08ff4h                           ; 74 d6
+    je short 0903ah                           ; 74 d6
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     xor ax, ax                                ; 31 c0
     mov dx, di                                ; 89 fa
-    call 08a98h                               ; e8 6f fa
+    call 08adeh                               ; e8 6f fa
     dec byte [bp-00eh]                        ; fe 4e f2
-    jne short 08ff4h                          ; 75 c6
+    jne short 0903ah                          ; 75 c6
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -13448,7 +13479,7 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 020h, 091h, 0feh, 090h, 004h, 091h, 00ah, 091h, 010h
-    db  091h, 016h, 091h, 01ch, 091h, 020h, 091h
-_ahci_init:                                  ; 0xf9051 LB 0xfe
+    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 066h, 091h, 044h, 091h, 04ah, 091h, 050h, 091h, 056h
+    db  091h, 05ch, 091h, 062h, 091h, 066h, 091h
+_ahci_init:                                  ; 0xf9097 LB 0xfe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13458,8 +13489,8 @@
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 0956fh                               ; e8 0d 05
+    call 095b5h                               ; e8 0d 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je near 09148h                            ; 0f 84 dd 00
+    je near 0918eh                            ; 0f 84 dd 00
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
@@ -13469,8 +13500,8 @@
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 0959ah                               ; e8 1a 05
+    call 095e0h                               ; e8 1a 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 090a9h                           ; 74 23
+    je short 090efh                           ; 74 23
     movzx bx, cl                              ; 0f b6 d9
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
@@ -13478,7 +13509,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 0959ah                               ; e8 02 05
+    call 095e0h                               ; e8 02 05
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 090a9h                           ; 74 0d
+    je short 090efh                           ; 74 0d
     mov al, cl                                ; 88 c8
     db  0feh, 0c0h
@@ -13487,7 +13518,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    jmp short 0907dh                          ; eb d4
+    jmp short 090c3h                          ; eb d4
     test cl, cl                               ; 84 c9
-    je near 09148h                            ; 0f 84 99 00
+    je near 0918eh                            ; 0f 84 99 00
     add cl, 002h                              ; 80 c1 02
     movzx bx, cl                              ; 0f b6 d9
@@ -13496,7 +13527,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 0959ah                               ; e8 d6 04
+    call 095e0h                               ; e8 d6 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne near 09148h                           ; 0f 85 7e 00
+    jne near 0918eh                           ; 0f 85 7e 00
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov al, cl                                ; 88 c8
@@ -13505,29 +13536,29 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 095beh                               ; e8 e2 04
+    call 09604h                               ; e8 e2 04
     mov dx, ax                                ; 89 c2
     and ax, strict word 0000fh                ; 25 0f 00
     sub ax, strict word 00004h                ; 2d 04 00
     cmp ax, strict word 0000bh                ; 3d 0b 00
-    jnbe short 09120h                         ; 77 37
+    jnbe short 09166h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 0903ah                            ; bf 3a 90
+    mov di, 09080h                            ; bf 80 90
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-06fbfh]               ; 2e 8b 85 41 90
+    mov ax, word [cs:di-06f79h]               ; 2e 8b 85 87 90
     jmp ax                                    ; ff e0
     mov byte [bp-006h], 010h                  ; c6 46 fa 10
-    jmp short 09120h                          ; eb 1c
+    jmp short 09166h                          ; eb 1c
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 09120h                          ; eb 16
+    jmp short 09166h                          ; eb 16
     mov byte [bp-006h], 018h                  ; c6 46 fa 18
-    jmp short 09120h                          ; eb 10
+    jmp short 09166h                          ; eb 10
     mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
-    jmp short 09120h                          ; eb 0a
+    jmp short 09166h                          ; eb 0a
     mov byte [bp-006h], 020h                  ; c6 46 fa 20
-    jmp short 09120h                          ; eb 04
+    jmp short 09166h                          ; eb 04
     mov byte [bp-006h], 024h                  ; c6 46 fa 24
     mov si, dx                                ; 89 d6
@@ -13536,14 +13567,14 @@
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test al, al                               ; 84 c0
-    je short 09148h                           ; 74 19
+    je short 0918eh                           ; 74 19
     movzx bx, al                              ; 0f b6 d8
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 095e0h                               ; e8 a3 04
+    call 09626h                               ; e8 a3 04
     test AL, strict byte 001h                 ; a8 01
-    je short 09148h                           ; 74 07
+    je short 0918eh                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, si                                ; 01 f0
-    call 08f2ch                               ; e8 e4 fd
+    call 08f72h                               ; e8 e4 fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -13551,5 +13582,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf914f LB 0x39
+apm_out_str_:                                ; 0xf9195 LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13557,5 +13588,5 @@
     mov bx, ax                                ; 89 c3
     cmp byte [bx], 000h                       ; 80 3f 00
-    je short 09164h                           ; 74 0a
+    je short 091aah                           ; 74 0a
     mov al, byte [bx]                         ; 8a 07
     out DX, AL                                ; ee
@@ -13564,30 +13595,31 @@
     db  00ah, 0c0h
     ; or al, al                                 ; 0a c0
-    jne short 0915ch                          ; 75 f8
+    jne short 091a2h                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    stosw                                     ; ab
+    db  0f1h
     xchg cx, ax                               ; 91
-    jnbe short 09100h                         ; 77 92
-    mov bp, 0d891h                            ; bd 91 d8
-    xchg cx, ax                               ; 91
-    jnbe short 09106h                         ; 77 92
-    add dx, word [bp+si-06d89h]               ; 03 92 77 92
-    or byte [bp+si-06db4h], dl                ; 08 92 4c 92
-    dec sp                                    ; 4c
+    mov bp, 00392h                            ; bd 92 03
     xchg dx, ax                               ; 92
-    dec sp                                    ; 4c
+    push DS                                   ; 1e
     xchg dx, ax                               ; 92
-    inc di                                    ; 47
+    mov bp, 04992h                            ; bd 92 49
     xchg dx, ax                               ; 92
-    dec sp                                    ; 4c
+    mov bp, 04e92h                            ; bd 92 4e
     xchg dx, ax                               ; 92
-    dec sp                                    ; 4c
     xchg dx, ax                               ; 92
-    inc ax                                    ; 40
     xchg dx, ax                               ; 92
-_apm_function:                               ; 0xf9188 LB 0xf5
+    xchg dx, ax                               ; 92
+    xchg dx, ax                               ; 92
+    xchg dx, ax                               ; 92
+    xchg dx, ax                               ; 92
+    lea dx, [bp+si-06d6eh]                    ; 8d 92 92 92
+    xchg dx, ax                               ; 92
+    xchg dx, ax                               ; 92
+    db  086h
+    xchg dx, ax                               ; 92
+_apm_function:                               ; 0xf91ce LB 0xf5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13597,21 +13629,21 @@
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    jnbe near 0924ch                          ; 0f 87 b0 00
+    jnbe near 09292h                          ; 0f 87 b0 00
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     mov dx, word [bp+018h]                    ; 8b 56 18
     or dl, 001h                               ; 80 ca 01
-    jmp word [cs:bx-06e96h]                   ; 2e ff a7 6a 91
+    jmp word [cs:bx-06e50h]                   ; 2e ff a7 b0 91
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
     mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
     mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
-    jmp near 09277h                           ; e9 ba 00
+    jmp near 092bdh                           ; e9 ba 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
-    mov word [bp+00ch], 097d4h                ; c7 46 0c d4 97
+    mov word [bp+00ch], 09824h                ; c7 46 0c 24 98
     mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
     mov ax, strict word 0fff0h                ; b8 f0 ff
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+004h], ax                    ; 89 46 04
-    jmp near 09277h                           ; e9 9f 00
+    jmp near 092bdh                           ; e9 9f 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
@@ -13626,41 +13658,41 @@
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 09277h                           ; e9 74 00
+    jmp near 092bdh                           ; e9 74 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 09277h                           ; e9 6f 00
+    jmp near 092bdh                           ; e9 6f 00
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 0922dh                           ; 74 1f
+    je short 09273h                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 09225h                           ; 74 11
+    je short 0926bh                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 09235h                          ; 75 1b
+    jne short 0927bh                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d12h                            ; b8 12 0d
-    call 0914fh                               ; e8 2c ff
-    jmp short 09277h                          ; eb 52
+    call 09195h                               ; e8 2c ff
+    jmp short 092bdh                          ; eb 52
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d1ah                            ; b8 1a 0d
-    jmp short 09220h                          ; eb f3
+    jmp short 09266h                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d22h                            ; b8 22 0d
-    jmp short 09220h                          ; eb eb
+    jmp short 09266h                          ; eb eb
     or ah, 00ah                               ; 80 cc 0a
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 09277h                          ; eb 37
+    jmp short 092bdh                          ; eb 37
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 09277h                          ; eb 30
+    jmp short 092bdh                          ; eb 30
     or ah, 080h                               ; 80 cc 80
-    jmp short 09238h                          ; eb ec
+    jmp short 0927eh                          ; eb ec
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 da 86
+    call 01931h                               ; e8 94 86
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     push 00d2bh                               ; 68 2b 0d
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 0d 87
+    call 01972h                               ; e8 c7 86
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -13673,5 +13705,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_select_reg_:                           ; 0xf927d LB 0x24
+pci16_select_reg_:                           ; 0xf92c3 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13690,5 +13722,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf92a1 LB 0xf7
+pci16_find_device_:                          ; 0xf92e7 LB 0xf7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13704,8 +13736,8 @@
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     test bl, 007h                             ; f6 c3 07
-    jne short 092e9h                          ; 75 2d
+    jne short 0932fh                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 0927dh                               ; e8 b9 ff
+    call 092c3h                               ; e8 b9 ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -13714,23 +13746,23 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 092d7h                          ; 75 06
+    jne short 0931dh                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 0936ah                           ; e9 93 00
+    jmp near 093b0h                           ; e9 93 00
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 092e4h                           ; 74 07
+    je short 0932ah                           ; 74 07
     mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
-    jmp short 092e9h                          ; eb 05
+    jmp short 0932fh                          ; eb 05
     mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 09311h                          ; 75 1f
+    jne short 09357h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 09311h                          ; 75 16
+    jne short 09357h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 0927dh                               ; e8 7a ff
+    call 092c3h                               ; e8 7a ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -13738,13 +13770,13 @@
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-008h]                    ; 3a 46 f8
-    jbe short 09311h                          ; 76 03
+    jbe short 09357h                          ; 76 03
     mov byte [bp-008h], al                    ; 88 46 f8
     test di, di                               ; 85 ff
-    je short 0931ah                           ; 74 05
+    je short 09360h                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 0931ch                          ; eb 02
+    jmp short 09362h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 0927dh                               ; e8 5c ff
+    call 092c3h                               ; e8 5c ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -13757,22 +13789,22 @@
     mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
     test di, di                               ; 85 ff
-    je short 0934bh                           ; 74 0f
+    je short 09391h                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0933fh                               ; e2 fa
+    loop 09385h                               ; e2 fa
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov word [bp-00ch], dx                    ; 89 56 f4
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, word [bp-014h]                    ; 3b 46 ec
-    jne short 0935bh                          ; 75 08
+    jne short 093a1h                          ; 75 08
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 09361h                           ; 74 06
+    je short 093a7h                           ; 74 06
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    je short 09367h                           ; 74 06
+    je short 093adh                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 09379h                           ; 74 12
+    je short 093bfh                           ; 74 12
     add bx, word [bp-00ah]                    ; 03 5e f6
     mov dx, bx                                ; 89 da
@@ -13780,9 +13812,9 @@
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cmp dx, ax                                ; 39 c2
-    jbe near 092b7h                           ; 0f 86 3e ff
+    jbe near 092fdh                           ; 0f 86 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 09382h                          ; 75 04
+    jne short 093c8h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 09385h                          ; eb 03
+    jmp short 093cbh                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -13791,13 +13823,10 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    jp short 09322h                           ; 7a 94
+    rcl byte [si-06b26h], 0edh                ; c0 94 da 94 ed
     xchg sp, ax                               ; 94
-    xchg sp, ax                               ; 94
-    cmpsw                                     ; a7
-    xchg sp, ax                               ; 94
-    mov sp, 0cf94h                            ; bc 94 cf
-    xchg sp, ax                               ; 94
-    loop 0932ch                               ; e2 94
-_pci16_function:                             ; 0xf9398 LB 0x1d7
+    add dl, byte [di-06aebh]                  ; 02 95 15 95
+    db  028h
+    xchg bp, ax                               ; 95
+_pci16_function:                             ; 0xf93de LB 0x1d7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13813,17 +13842,17 @@
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 093d1h                           ; 72 1a
-    jbe short 09429h                          ; 76 70
+    jc short 09417h                           ; 72 1a
+    jbe short 0946fh                          ; 76 70
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je near 094f6h                            ; 0f 84 36 01
+    je near 0953ch                            ; 0f 84 36 01
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc near 0953bh                            ; 0f 82 74 01
+    jc near 09581h                            ; 0f 82 74 01
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe near 0944eh                           ; 0f 86 80 00
-    jmp near 0953bh                           ; e9 6a 01
+    jbe near 09494h                           ; 0f 86 80 00
+    jmp near 09581h                           ; e9 6a 01
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 093f9h                           ; 74 23
+    je short 0943fh                           ; 74 23
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jne near 0953bh                           ; 0f 85 5e 01
+    jne near 09581h                           ; 0f 85 5e 01
     mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
     mov word [bp+014h], 00210h                ; c7 46 14 10 02
@@ -13831,49 +13860,49 @@
     mov word [bp+018h], 04350h                ; c7 46 18 50 43
     mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
-    jmp near 09568h                           ; e9 6f 01
+    jmp near 095aeh                           ; e9 6f 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 09405h                          ; 75 06
+    jne short 0944bh                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 09561h                           ; e9 5c 01
+    jmp near 095a7h                           ; e9 5c 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor cx, cx                                ; 31 c9
-    call 092a1h                               ; e8 8e fe
+    call 092e7h                               ; e8 8e fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09423h                          ; 75 0b
+    jne short 09469h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09561h                           ; e9 3e 01
+    jmp near 095a7h                           ; e9 3e 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09568h                           ; e9 3f 01
+    jmp near 095aeh                           ; e9 3f 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+01eh]                    ; 8b 56 1e
     mov cx, strict word 00001h                ; b9 01 00
-    call 092a1h                               ; e8 69 fe
+    call 092e7h                               ; e8 69 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09448h                          ; 75 0b
+    jne short 0948eh                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09561h                           ; e9 19 01
+    jmp near 095a7h                           ; e9 19 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09568h                           ; e9 1a 01
+    jmp near 095aeh                           ; e9 1a 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 0945bh                           ; 72 06
+    jc short 094a1h                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 09561h                           ; e9 06 01
+    jmp near 095a7h                           ; e9 06 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 0927dh                               ; e8 19 fe
+    call 092c3h                               ; e8 19 fe
     mov bx, word [bp+020h]                    ; 8b 5e 20
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00008h                ; 83 eb 08
     cmp bx, strict byte 00005h                ; 83 fb 05
-    jnbe near 09568h                          ; 0f 87 f5 00
+    jnbe near 095aeh                          ; 0f 87 f5 00
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-06c74h]                   ; 2e ff a7 8c 93
+    jmp word [cs:bx-06c2eh]                   ; 2e ff a7 d2 93
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
@@ -13886,5 +13915,5 @@
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp near 09568h                           ; e9 d4 00
+    jmp near 095aeh                           ; e9 d4 00
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
@@ -13893,5 +13922,5 @@
     in ax, DX                                 ; ed
     mov word [bp+01ch], ax                    ; 89 46 1c
-    jmp near 09568h                           ; e9 c1 00
+    jmp near 095aeh                           ; e9 c1 00
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -13902,5 +13931,5 @@
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp near 09568h                           ; e9 ac 00
+    jmp near 095aeh                           ; e9 ac 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -13909,5 +13938,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp near 09568h                           ; e9 99 00
+    jmp near 095aeh                           ; e9 99 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -13916,5 +13945,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp near 09568h                           ; e9 86 00
+    jmp near 095aeh                           ; e9 86 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov cx, word [bp+01eh]                    ; 8b 4e 1e
@@ -13925,5 +13954,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09568h                          ; eb 72
+    jmp short 095aeh                          ; eb 72
     mov bx, word [bp+004h]                    ; 8b 5e 04
     mov es, [bp+026h]                         ; 8e 46 26
@@ -13932,5 +13961,5 @@
     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 0951ch                          ; 76 11
+    jbe short 09562h                          ; 76 11
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -13938,5 +13967,5 @@
     mov word [bp+020h], ax                    ; 89 46 20
     or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
-    jmp short 09530h                          ; eb 14
+    jmp short 09576h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
@@ -13950,9 +13979,9 @@
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 09568h                          ; eb 2d
+    jmp short 095aeh                          ; eb 2d
     mov bx, 00da8h                            ; bb a8 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 eb 83
+    call 01931h                               ; e8 a5 83
     mov ax, word [bp+014h]                    ; 8b 46 14
     push ax                                   ; 50
@@ -13961,5 +13990,5 @@
     push 00d5eh                               ; 68 5e 0d
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 1c 84
+    call 01972h                               ; e8 d6 83
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -13973,5 +14002,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf956f LB 0x2b
+pci_find_classcode_:                         ; 0xf95b5 LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13988,5 +14017,5 @@
     int 01ah                                  ; cd 1a
     cmp ah, 000h                              ; 80 fc 00
-    je near 09590h                            ; 0f 84 03 00
+    je near 095d6h                            ; 0f 84 03 00
     mov bx, strict word 0ffffh                ; bb ff ff
     mov ax, bx                                ; 89 d8
@@ -13997,5 +14026,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf959a LB 0x24
+pci_read_config_byte_:                       ; 0xf95e0 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14016,5 +14045,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf95be LB 0x22
+pci_read_config_word_:                       ; 0xf9604 LB 0x22
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14035,5 +14064,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf95e0 LB 0x27
+pci_read_config_dword_:                      ; 0xf9626 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14056,5 +14085,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf9607 LB 0x1d
+vds_is_present_:                             ; 0xf964d LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
@@ -14064,5 +14093,5 @@
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 0961fh                           ; 74 06
+    je short 09665h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -14073,5 +14102,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf9624 LB 0x1e
+vds_real_to_lin_:                            ; 0xf966a LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -14084,5 +14113,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09632h                               ; e2 fa
+    loop 09678h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -14092,5 +14121,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9642 LB 0x79
+vds_build_sg_list_:                          ; 0xf9688 LB 0x79
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14106,21 +14135,21 @@
     mov bx, word [bp+006h]                    ; 8b 5e 06
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 09624h                               ; e8 c3 ff
+    call 0966ah                               ; e8 c3 ff
     mov es, si                                ; 8e c6
     mov word [es:di+004h], ax                 ; 26 89 45 04
     mov word [es:di+006h], dx                 ; 26 89 55 06
     mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
-    call 09607h                               ; e8 93 ff
+    call 0964dh                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 0968bh                           ; 74 13
+    je short 096d1h                           ; 74 13
     mov es, si                                ; 8e c6
     mov ax, 08105h                            ; b8 05 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 09688h                            ; 0f 82 02 00
+    jc near 096ceh                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 096b2h                          ; eb 27
+    jmp short 096f8h                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
@@ -14139,5 +14168,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf96bb LB 0x35
+vds_free_sg_list_:                           ; 0xf9701 LB 0x3f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14145,7 +14174,7 @@
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 09607h                               ; e8 42 ff
+    call 0964dh                               ; e8 42 ff
     test ax, ax                               ; 85 c0
-    je short 096dch                           ; 74 13
+    je short 09722h                           ; 74 13
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
@@ -14153,5 +14182,5 @@
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 096dbh                            ; 0f 82 02 00
+    jc near 09721h                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
@@ -14164,6 +14193,6 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0x5 db 0
-__U4D:                                       ; 0xf96f0 LB 0x39
+    times 0xf db 0
+__U4D:                                       ; 0xf9740 LB 0x39
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -14195,5 +14224,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-__U4M:                                       ; 0xf9729 LB 0x31
+__U4M:                                       ; 0xf9779 LB 0x31
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -14220,5 +14249,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-_fmemset_:                                   ; 0xf975a LB 0xd
+_fmemset_:                                   ; 0xf97aa LB 0xd
     push di                                   ; 57
     mov es, dx                                ; 8e c2
@@ -14230,5 +14259,5 @@
     pop di                                    ; 5f
     retn                                      ; c3
-_fmemcpy_:                                   ; 0xf9767 LB 0x33
+_fmemcpy_:                                   ; 0xf97b7 LB 0x33
     push bp                                   ; 55
     db  08bh, 0ech
@@ -14250,17 +14279,19 @@
     leave                                     ; c9
     retn                                      ; c3
-    add byte [bx+si-04d69h], dh               ; 00 b0 97 b2
-    xchg di, ax                               ; 97
-    mov DH, strict byte 097h                  ; b6 97
-    mov DH, strict byte 097h                  ; b6 97
-    mov DH, strict byte 097h                  ; b6 97
-    mov ax, 0b897h                            ; b8 97 b8
-    xchg di, ax                               ; 97
-    mov dx, 0be97h                            ; ba 97 be
-    xchg di, ax                               ; 97
-    mov si, 0c097h                            ; be 97 c0
-    xchg di, ax                               ; 97
-    lds dx, [bx-06839h]                       ; c5 97 c7 97
-apm_worker:                                  ; 0xf979a LB 0x3a
+    add byte [bx+si], al                      ; 00 00
+    cbw                                       ; 98
+    add bl, byte [bx+si-067fah]               ; 02 98 06 98
+    push ES                                   ; 06
+    cbw                                       ; 98
+    push ES                                   ; 06
+    cbw                                       ; 98
+    or byte [bx+si-067f8h], bl                ; 08 98 08 98
+    or bl, byte [bx+si-067f2h]                ; 0a 98 0e 98
+    push CS                                   ; 0e
+    cbw                                       ; 98
+    adc byte [bx+si-067ebh], bl               ; 10 98 15 98
+    pop SS                                    ; 17
+    cbw                                       ; 98
+apm_worker:                                  ; 0xf97ea LB 0x3a
     sti                                       ; fb
     push ax                                   ; 50
@@ -14274,21 +14305,21 @@
     pop ax                                    ; 58
     mov AH, strict byte 053h                  ; b4 53
-    jnc short 097d0h                          ; 73 25
-    jmp word [cs:bp-06880h]                   ; 2e ff a6 80 97
-    jmp short 097ceh                          ; eb 1c
+    jnc short 09820h                          ; 73 25
+    jmp word [cs:bp-06830h]                   ; 2e ff a6 d0 97
+    jmp short 0981eh                          ; eb 1c
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 097ceh                          ; eb 18
-    jmp short 097ceh                          ; eb 16
-    jmp short 097d0h                          ; eb 16
+    jmp short 0981eh                          ; eb 18
+    jmp short 0981eh                          ; eb 16
+    jmp short 09820h                          ; eb 16
     mov AH, strict byte 080h                  ; b4 80
-    jmp short 097d2h                          ; eb 14
-    jmp short 097d0h                          ; eb 10
+    jmp short 09822h                          ; eb 14
+    jmp short 09820h                          ; eb 10
     mov ax, 00102h                            ; b8 02 01
-    jmp short 097ceh                          ; eb 09
-    jmp short 097ceh                          ; eb 07
+    jmp short 0981eh                          ; eb 09
+    jmp short 0981eh                          ; eb 07
     mov BL, strict byte 000h                  ; b3 00
     mov cx, strict word 00000h                ; b9 00 00
-    jmp short 097ceh                          ; eb 00
+    jmp short 0981eh                          ; eb 00
     clc                                       ; f8
     retn                                      ; c3
@@ -14296,5 +14327,5 @@
     stc                                       ; f9
     retn                                      ; c3
-apm_pm16_entry:                              ; 0xf97d4 LB 0x11
+apm_pm16_entry:                              ; 0xf9824 LB 0x11
     mov AH, strict byte 002h                  ; b4 02
     push DS                                   ; 1e
@@ -14304,11 +14335,11 @@
     add bp, strict byte 00008h                ; 83 c5 08
     mov ds, bp                                ; 8e dd
-    call 0979ah                               ; e8 b8 ff
+    call 097eah                               ; e8 b8 ff
     pop bp                                    ; 5d
     pop DS                                    ; 1f
     retf                                      ; cb
 
-  ; Padding 0x421b bytes at 0xf97e5
-  times 16923 db 0
+  ; Padding 0x41cb bytes at 0xf9835
+  times 16843 db 0
 
 section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
@@ -14357,5 +14388,5 @@
     add bp, strict byte 00008h                ; 83 c5 08
     push ebp                                  ; 66 55
-    mov bp, 097d6h                            ; bd d6 97
+    mov bp, 09826h                            ; bd 26 98
     add byte [bx+si], al                      ; 00 00
     push ebp                                  ; 66 55
@@ -15079,6 +15110,6 @@
     call 01badh                               ; e8 71 38
     call 01fa7h                               ; e8 68 3c
-    call 09051h                               ; e8 0f ad
-    call 080a8h                               ; e8 63 9d
+    call 09097h                               ; e8 55 ad
+    call 080d3h                               ; e8 8e 9d
     call 0ed2fh                               ; e8 e7 09
     call 0e2d2h                               ; e8 87 ff
@@ -16080,5 +16111,5 @@
     popfw                                     ; 9d
     jmp short 0f895h                          ; eb 13
-    call 09188h                               ; e8 03 99
+    call 091ceh                               ; e8 49 99
     jmp short 0f87ch                          ; eb f5
 int15_handler_mouse:                         ; 0xff887 LB 0x5
@@ -16209,5 +16240,5 @@
     db  018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
     db  076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
-    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 01bh, 095h, 066h
+    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 061h, 095h, 066h
     db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 0cah, 06dh, 061h, 01fh, 007h
     db  0cfh
@@ -16318,3 +16349,3 @@
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 05dh
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 03eh
Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 55259)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 55260)
@@ -1,1 +1,1 @@
-52f20c4019f05d0a8b5d96985ecebb03 *VBoxPcBios.rom
+dada536c6edc89409a8ebf3822aedeb9 *VBoxPcBios.rom
Index: /trunk/src/VBox/Devices/Serial/DrvTCP.cpp
===================================================================
--- /trunk/src/VBox/Devices/Serial/DrvTCP.cpp	(revision 55260)
+++ /trunk/src/VBox/Devices/Serial/DrvTCP.cpp	(revision 55260)
@@ -0,0 +1,492 @@
+/* $Id$ */
+/** @file
+ * TCP socket driver implementing the IStream interface.
+ */
+
+/*
+ * Copyright (C) 2006-2015 Oracle Corporation.
+ *
+ * This file was contributed by Alexey Eromenko (derived from DrvNamedPipe)
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+
+/*******************************************************************************
+*   Header Files                                                               *
+*******************************************************************************/
+#define LOG_GROUP LOG_GROUP_DRV_TCP
+#include <VBox/vmm/pdmdrv.h>
+#include <iprt/assert.h>
+#include <iprt/file.h>
+#include <iprt/stream.h>
+#include <iprt/alloc.h>
+#include <iprt/string.h>
+#include <iprt/semaphore.h>
+#include <iprt/uuid.h>
+#include <stdlib.h>
+
+#include "VBoxDD.h"
+
+#ifdef RT_OS_WINDOWS
+# include <ws2tcpip.h>
+#else /* !RT_OS_WINDOWS */
+# include <errno.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <sys/socket.h>
+# include <netinet/in.h>
+# include <netdb.h>
+# ifndef SHUT_RDWR /* OS/2 */
+#  define SHUT_RDWR 3
+# endif
+#endif /* !RT_OS_WINDOWS */
+
+#ifndef SHUT_RDWR
+# ifdef SD_BOTH
+#  define SHUT_RDWR SD_BOTH
+# else
+#  define SHUT_RDWR 2
+# endif
+#endif
+
+/*******************************************************************************
+*   Defined Constants And Macros                                               *
+*******************************************************************************/
+/** Converts a pointer to DRVTCP::IMedia to a PDRVTCP. */
+#define PDMISTREAM_2_DRVTCP(pInterface) ( (PDRVTCP)((uintptr_t)pInterface - RT_OFFSETOF(DRVTCP, IStream)) )
+
+/*******************************************************************************
+*   Structures and Typedefs                                                    *
+*******************************************************************************/
+/**
+ * TCP driver instance data.
+ *
+ * @implements PDMISTREAM
+ */
+typedef struct DRVTCP
+{
+    /** The stream interface. */
+    PDMISTREAM          IStream;
+    /** Pointer to the driver instance. */
+    PPDMDRVINS          pDrvIns;
+    /** Pointer to the TCP server address:port or port only. (Freed by MM) */
+    char                *pszLocation;
+    /** Flag whether VirtualBox represents the server or client side. */
+    bool                fIsServer;
+
+    /** Socket handle of the TCP socket for server. */
+    int                 TCPServer;
+    /** Socket handle of the TCP socket connection. */
+    int                 TCPConnection;
+
+    /** Thread for listening for new connections. */
+    RTTHREAD            ListenThread;
+    /** Flag to signal listening thread to shut down. */
+    bool volatile       fShutdown;
+} DRVTCP, *PDRVTCP;
+
+
+/*******************************************************************************
+*   Internal Functions                                                         *
+*******************************************************************************/
+
+
+/** @copydoc PDMISTREAM::pfnRead */
+static DECLCALLBACK(int) drvTCPRead(PPDMISTREAM pInterface, void *pvBuf, size_t *pcbRead)
+{
+    int rc = VINF_SUCCESS;
+    PDRVTCP pThis = PDMISTREAM_2_DRVTCP(pInterface);
+    LogFlow(("%s: pvBuf=%p *pcbRead=%#x (%s)\n", __FUNCTION__, pvBuf, *pcbRead, pThis->pszLocation));
+
+    Assert(pvBuf);
+
+    if (pThis->TCPConnection != -1)
+    {
+        ssize_t cbReallyRead;
+        unsigned cbBuf = (unsigned)*pcbRead;
+        cbReallyRead = recv(pThis->TCPConnection, (char *)pvBuf, cbBuf, 0);
+        if (cbReallyRead == 0)
+        {
+            int tmp = pThis->TCPConnection;
+            pThis->TCPConnection = -1;
+#ifdef RT_OS_WINDOWS
+            closesocket(tmp);
+#else
+            close(tmp);
+#endif
+        }
+        else if (cbReallyRead == -1)
+        {
+            cbReallyRead = 0;
+            rc = RTErrConvertFromErrno(errno);
+        }
+        *pcbRead = cbReallyRead;
+    }
+    else
+    {
+        RTThreadSleep(100);
+        *pcbRead = 0;
+    }
+
+    LogFlow(("%s: *pcbRead=%zu returns %Rrc\n", __FUNCTION__, *pcbRead, rc));
+    return rc;
+}
+
+
+/** @copydoc PDMISTREAM::pfnWrite */
+static DECLCALLBACK(int) drvTCPWrite(PPDMISTREAM pInterface, const void *pvBuf, size_t *pcbWrite)
+{
+    int rc = VINF_SUCCESS;
+    PDRVTCP pThis = PDMISTREAM_2_DRVTCP(pInterface);
+    LogFlow(("%s: pvBuf=%p *pcbWrite=%#x (%s)\n", __FUNCTION__, pvBuf, *pcbWrite, pThis->pszLocation));
+
+    Assert(pvBuf);
+    if (pThis->TCPConnection != -1)
+    {
+        ssize_t cbWritten;
+        unsigned cbBuf = (unsigned)*pcbWrite;
+        cbWritten = send(pThis->TCPConnection, (const char *)pvBuf, cbBuf, 0);
+        if (cbWritten == 0)
+        {
+            int tmp = pThis->TCPConnection;
+            pThis->TCPConnection = -1;
+#ifdef RT_OS_WINDOWS
+            closesocket(tmp);
+#else
+            close(tmp);
+#endif
+        }
+        else if (cbWritten == -1)
+        {
+            cbWritten = 0;
+            rc = RTErrConvertFromErrno(errno);
+        }
+        *pcbWrite = cbWritten;
+    }
+
+    LogFlow(("%s: returns %Rrc\n", __FUNCTION__, rc));
+    return rc;
+}
+
+
+/**
+ * @interface_method_impl{PDMIBASE,pfnQueryInterface}
+ */
+static DECLCALLBACK(void *) drvTCPQueryInterface(PPDMIBASE pInterface, const char *pszIID)
+{
+    PPDMDRVINS      pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
+    PDRVTCP         pThis   = PDMINS_2_DATA(pDrvIns, PDRVTCP);
+    PDMIBASE_RETURN_INTERFACE(pszIID, PDMIBASE, &pDrvIns->IBase);
+    PDMIBASE_RETURN_INTERFACE(pszIID, PDMISTREAM, &pThis->IStream);
+    return NULL;
+}
+
+
+/* -=-=-=-=- listen thread -=-=-=-=- */
+
+/**
+ * Receive thread loop.
+ *
+ * @returns 0 on success.
+ * @param   ThreadSelf  Thread handle to this thread.
+ * @param   pvUser      User argument.
+ */
+static DECLCALLBACK(int) drvTCPListenLoop(RTTHREAD ThreadSelf, void *pvUser)
+{
+    PDRVTCP pThis = (PDRVTCP)pvUser;
+    int     rc = VINF_SUCCESS;
+
+    while (RT_LIKELY(!pThis->fShutdown))
+    {
+        if (listen(pThis->TCPServer, 0) == -1)
+        {
+            rc = RTErrConvertFromErrno(errno);
+            LogRel(("DrvTCP%d: listen failed, rc=%Rrc\n", pThis->pDrvIns->iInstance, rc));
+            break;
+        }
+        int s = accept(pThis->TCPServer, NULL, NULL);
+        if (s == -1)
+        {
+            rc = RTErrConvertFromErrno(errno);
+            LogRel(("DrvTCP%d: accept failed, rc=%Rrc\n", pThis->pDrvIns->iInstance, rc));
+            break;
+        }
+        if (pThis->TCPConnection != -1)
+        {
+            LogRel(("DrvTCP%d: only single connection supported\n", pThis->pDrvIns->iInstance));
+#ifdef RT_OS_WINDOWS
+            closesocket(s);
+#else
+            close(s);
+#endif
+        }
+        else
+            pThis->TCPConnection = s;
+    }
+
+    return VINF_SUCCESS;
+}
+
+/* -=-=-=-=- PDMDRVREG -=-=-=-=- */
+
+/**
+ * Common worker for drvTCPPowerOff and drvTCPDestructor.
+ *
+ * @param   pThis               The instance data.
+ */
+static void drvTCPShutdownListener(PDRVTCP pThis)
+{
+    /*
+     * Signal shutdown of the listener thread.
+     */
+    pThis->fShutdown = true;
+    if (    pThis->fIsServer
+        &&  pThis->TCPServer != -1)
+    {
+        int rc = shutdown(pThis->TCPServer, SHUT_RDWR);
+        AssertRC(rc == 0); NOREF(rc);
+
+#ifdef RT_OS_WINDOWS
+        rc = closesocket(pThis->TCPServer);
+#else
+        rc = close(pThis->TCPServer);
+#endif
+        AssertRC(rc == 0);
+        pThis->TCPServer = -1;
+    }
+}
+
+
+/**
+ * Power off a TCP socket stream driver instance.
+ *
+ * This does most of the destruction work, to avoid ordering dependencies.
+ *
+ * @param   pDrvIns     The driver instance data.
+ */
+static DECLCALLBACK(void) drvTCPPowerOff(PPDMDRVINS pDrvIns)
+{
+    PDRVTCP pThis = PDMINS_2_DATA(pDrvIns, PDRVTCP);
+    LogFlow(("%s: %s\n", __FUNCTION__, pThis->pszLocation));
+
+    drvTCPShutdownListener(pThis);
+}
+
+
+/**
+ * Destruct a TCP socket stream driver instance.
+ *
+ * Most VM resources are freed by the VM. This callback is provided so that
+ * any non-VM resources can be freed correctly.
+ *
+ * @param   pDrvIns     The driver instance data.
+ */
+static DECLCALLBACK(void) drvTCPDestruct(PPDMDRVINS pDrvIns)
+{
+    PDRVTCP pThis = PDMINS_2_DATA(pDrvIns, PDRVTCP);
+    LogFlow(("%s: %s\n", __FUNCTION__, pThis->pszLocation));
+    PDMDRV_CHECK_VERSIONS_RETURN_VOID(pDrvIns);
+
+    drvTCPShutdownListener(pThis);
+
+    /*
+     * While the thread exits, clean up as much as we can.
+     */
+
+    Assert(pThis->TCPServer == -1);
+    if (pThis->TCPConnection != -1)
+    {
+        int rc = shutdown(pThis->TCPConnection, SHUT_RDWR);
+        AssertRC(rc == 0); NOREF(rc);
+
+#ifdef RT_OS_WINDOWS
+        rc = closesocket(pThis->TCPConnection);
+#else
+        rc = close(pThis->TCPConnection);
+#endif
+        Assert(rc == 0);
+        pThis->TCPConnection = -1;
+    }
+    if (   pThis->fIsServer
+        && pThis->pszLocation)
+        RTFileDelete(pThis->pszLocation);
+
+
+    MMR3HeapFree(pThis->pszLocation);
+    pThis->pszLocation = NULL;
+
+    /*
+     * Wait for the thread.
+     */
+    if (pThis->ListenThread != NIL_RTTHREAD)
+    {
+        int rc = RTThreadWait(pThis->ListenThread, 30000, NULL);
+        if (RT_SUCCESS(rc))
+            pThis->ListenThread = NIL_RTTHREAD;
+        else
+            LogRel(("DrvTCP%d: listen thread did not terminate (%Rrc)\n", pDrvIns->iInstance, rc));
+    }
+
+}
+
+
+/**
+ * Construct a TCP socket stream driver instance.
+ *
+ * @copydoc FNPDMDRVCONSTRUCT
+ */
+static DECLCALLBACK(int) drvTCPConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags)
+{
+    PDRVTCP pThis = PDMINS_2_DATA(pDrvIns, PDRVTCP);
+    PDMDRV_CHECK_VERSIONS_RETURN(pDrvIns);
+
+    /*
+     * Init the static parts.
+     */
+    pThis->pDrvIns                      = pDrvIns;
+    pThis->pszLocation                  = NULL;
+    pThis->fIsServer                    = false;
+
+    pThis->TCPServer                    = -1;
+    pThis->TCPConnection                = -1;
+
+    pThis->ListenThread                 = NIL_RTTHREAD;
+    pThis->fShutdown                    = false;
+    /* IBase */
+    pDrvIns->IBase.pfnQueryInterface    = drvTCPQueryInterface;
+    /* IStream */
+    pThis->IStream.pfnRead              = drvTCPRead;
+    pThis->IStream.pfnWrite             = drvTCPWrite;
+
+    /*
+     * Validate and read the configuration.
+     */
+    PDMDRV_VALIDATE_CONFIG_RETURN(pDrvIns, "Location|IsServer", "");
+
+    int rc = CFGMR3QueryStringAlloc(pCfg, "Location", &pThis->pszLocation);
+    if (RT_FAILURE(rc))
+        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS,
+                                   N_("Configuration error: querying \"Location\" resulted in %Rrc"), rc);
+    rc = CFGMR3QueryBool(pCfg, "IsServer", &pThis->fIsServer);
+    if (RT_FAILURE(rc))
+        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS,
+                                   N_("Configuration error: querying \"IsServer\" resulted in %Rrc"), rc);
+
+    /*
+     * Create/Open the socket.
+     */
+    int s = socket(PF_INET, SOCK_STREAM, 0);
+    if (s == -1)
+        return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS,
+                                   N_("DrvTCP#%d failed to create socket"), pDrvIns->iInstance);
+
+    struct sockaddr_in addr;
+    memset(&addr, 0, sizeof(addr));
+    addr.sin_family = AF_INET;
+
+    if (pThis->fIsServer)
+    {
+        addr.sin_addr.s_addr = INADDR_ANY;
+        addr.sin_port = htons(/*PORT*/ atoi(pThis->pszLocation));
+
+        /* Bind address to the telnet socket. */
+        pThis->TCPServer = s;
+        RTFileDelete(pThis->pszLocation);
+        if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) == -1)
+            return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS,
+                                       N_("DrvTCP#%d failed to bind to socket %s"),
+                                       pDrvIns->iInstance, pThis->pszLocation);
+        rc = RTThreadCreate(&pThis->ListenThread, drvTCPListenLoop, (void *)pThis, 0,
+                            RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "DrvTCPStream");
+        if (RT_FAILURE(rc))
+            return PDMDrvHlpVMSetError(pDrvIns, rc,  RT_SRC_POS,
+                                       N_("DrvTCP#%d failed to create listening thread"), pDrvIns->iInstance);
+    }
+    else
+    {
+        char *token;
+        const char *delim = ":";
+        struct hostent *server;
+        token = strtok(pThis->pszLocation, delim);
+        if(token) {
+            server = gethostbyname(token);
+            memmove((char *)&addr.sin_addr.s_addr,
+                    (char *)server->h_addr,
+                     server->h_length);
+        }
+        token = strtok(NULL, delim);
+        if(token) {
+            addr.sin_port = htons(/*PORT*/ atoi(token));
+        }
+
+        /* Connect to the telnet socket. */
+        pThis->TCPConnection = s;
+        if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) == -1)
+            return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS,
+                                       N_("DrvTCP#%d failed to connect to socket %s"),
+                                       pDrvIns->iInstance, pThis->pszLocation);
+    }
+
+    LogRel(("DrvTCP: %s, %s\n", pThis->pszLocation, pThis->fIsServer ? "server" : "client"));
+    return VINF_SUCCESS;
+}
+
+
+/**
+ * TCP stream driver registration record.
+ */
+const PDMDRVREG g_DrvTCP =
+{
+    /* u32Version */
+    PDM_DRVREG_VERSION,
+    /* szName */
+    "TCP",
+    /* szRCMod */
+    "",
+    /* szR0Mod */
+    "",
+    /* pszDescription */
+    "TCP serial stream driver.",
+    /* fFlags */
+    PDM_DRVREG_FLAGS_HOST_BITS_DEFAULT,
+    /* fClass. */
+    PDM_DRVREG_CLASS_STREAM,
+    /* cMaxInstances */
+    ~0U,
+    /* cbInstance */
+    sizeof(DRVTCP),
+    /* pfnConstruct */
+    drvTCPConstruct,
+    /* pfnDestruct */
+    drvTCPDestruct,
+    /* pfnRelocate */
+    NULL,
+    /* pfnIOCtl */
+    NULL,
+    /* pfnPowerOn */
+    NULL,
+    /* pfnReset */
+    NULL,
+    /* pfnSuspend */
+    NULL,
+    /* pfnResume */
+    NULL,
+    /* pfnAttach */
+    NULL,
+    /* pfnDetach */
+    NULL,
+    /* pfnPowerOff */
+    drvTCPPowerOff,
+    /* pfnSoftReset */
+    NULL,
+    /* u32EndVersion */
+    PDM_DRVREG_VERSION
+};
+
Index: /trunk/src/VBox/Installer/linux/distributions_deb
===================================================================
--- /trunk/src/VBox/Installer/linux/distributions_deb	(revision 55259)
+++ /trunk/src/VBox/Installer/linux/distributions_deb	(revision 55260)
@@ -3,4 +3,5 @@
 _Debian_wheezy   = DEBIAN_7_0
 _Debian_squeeze  = DEBIAN_6_0
+_Ubuntu_trusty   = UBUNTU_14_04
 _Ubuntu_raring   = UBUNTU_13_04
 _Ubuntu_quantal  = UBUNTU_12_10
