Index: trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm
===================================================================
--- trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 43483)
+++ trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 43630)
@@ -794,9 +794,9 @@
 section _DATA progbits vstart=0x0 align=1 ; size=0x30 class=DATA group=DGROUP
 _dskacc:                                     ; 0xf0000 LB 0x30
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 059h, 027h, 0d0h, 027h, 000h, 000h, 000h, 000h
-    db  038h, 073h, 0dah, 073h, 055h, 07eh, 0e6h, 07eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 039h, 027h, 0b0h, 027h, 000h, 000h, 000h, 000h
+    db  0c4h, 074h, 075h, 075h, 0c4h, 081h, 055h, 082h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
-section CONST progbits vstart=0x30 align=1 ; size=0xc94 class=DATA group=DGROUP
+section CONST progbits vstart=0x30 align=1 ; size=0xcaa class=DATA group=DGROUP
     db   'NMI Handler called', 00ah, 000h
     db   'INT18: BOOT FAILURE', 00ah, 000h
@@ -895,6 +895,9 @@
     db   'scsi_read_sectors: device_id out of range %d', 00ah, 000h
     db   'scsi_write_sectors: device_id out of range %d', 00ah, 000h
-    db   'scsi_enumerate_attached_devices: SCSI_INQUIRY failed', 00ah, 000h
-    db   'scsi_enumerate_attached_devices: SCSI_READ_CAPACITY failed', 00ah, 000h
+    db   'scsi_cmd_packet', 000h
+    db   '%s: DATA_OUT not supported yet', 00ah, 000h
+    db   'scsi_enumerate_attached_devices', 000h
+    db   '%s: SCSI_INQUIRY failed', 00ah, 000h
+    db   '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
     db   'Disk %d has an unsupported sector size of %u', 00ah, 000h, 000h
     db   'ahci_read_sectors', 000h
@@ -910,18 +913,18 @@
     db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
 
-section CONST2 progbits vstart=0xcc4 align=1 ; size=0x3fa class=DATA group=DGROUP
-_bios_cvs_version_string:                    ; 0xf0cc4 LB 0x12
-    db  'VirtualBox 4.2.0', 000h, 000h
-_bios_prefix_string:                         ; 0xf0cd6 LB 0x8
+section CONST2 progbits vstart=0xcda align=1 ; size=0x3fa class=DATA group=DGROUP
+_bios_cvs_version_string:                    ; 0xf0cda LB 0x12
+    db  'VirtualBox 4.2.51', 000h
+_bios_prefix_string:                         ; 0xf0cec LB 0x8
     db  'BIOS: ', 000h, 000h
-_isotag:                                     ; 0xf0cde LB 0x6
+_isotag:                                     ; 0xf0cf4 LB 0x6
     db  'CD001', 000h
-_eltorito:                                   ; 0xf0ce4 LB 0x18
+_eltorito:                                   ; 0xf0cfa LB 0x18
     db  'EL TORITO SPECIFICATION', 000h
-_drivetypes:                                 ; 0xf0cfc LB 0x28
+_drivetypes:                                 ; 0xf0d12 LB 0x28
     db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
     db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
     db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_scan_to_scanascii:                          ; 0xf0d24 LB 0x37a
+_scan_to_scanascii:                          ; 0xf0d3a LB 0x37a
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
     db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
@@ -980,11 +983,11 @@
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
     db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
-_panic_msg_keyb_buffer_full:                 ; 0xf109e LB 0x20
+_panic_msg_keyb_buffer_full:                 ; 0xf10b4 LB 0x20
     db  '%s: keyboard input buffer full', 00ah, 000h
 
-  ; Padding 0x542 bytes at 0xf10be
-  times 1346 db 0
+  ; Padding 0x52c bytes at 0xf10d4
+  times 1324 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x7735 class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x7ab5 class=CODE group=AUTO
 read_byte_:                                  ; 0xf1600 LB 0xe
     push bx                                   ; 53
@@ -1148,9 +1151,9 @@
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 018aeh                               ; e8 99 01
-    push 00cc4h                               ; 68 c4 0c
+    push 00cdah                               ; 68 da 0c
     push strict word 00059h                   ; 68 59 00
     push strict byte 00004h                   ; 6a 04
@@ -1177,5 +1180,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 06feeh                               ; e8 9f 58
+    call 07130h                               ; e8 e1 59
     pop bp                                    ; 5d
     retn                                      ; c3
@@ -1310,5 +1313,5 @@
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 08c40h                               ; e8 e7 73
+    call 08fc0h                               ; e8 67 77
     mov word [bp-004h], ax                    ; 89 46 fc
     mov cx, dx                                ; 89 d1
@@ -1787,5 +1790,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ata_cmd_data_in_:                            ; 0xf1cc0 LB 0x263
+ata_cmd_data_in_:                            ; 0xf1cc0 LB 0x253
     push si                                   ; 56
     push di                                   ; 57
@@ -2021,56 +2024,49 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    dec bp                                    ; 4d
-    and word [di-076dfh], ax                  ; 21 85 21 89
-    and word [di-06edfh], cx                  ; 21 8d 21 91
-    and word [di-066dfh], dx                  ; 21 95 21 99
-    db  021h
-    popfw                                     ; 9d
-    db  021h
-_ata_detect:                                 ; 0xf1f23 LB 0x621
+_ata_detect:                                 ; 0xf1f13 LB 0x611
     push si                                   ; 56
     push di                                   ; 57
-    enter 0025ah, 000h                        ; c8 5a 02 00
+    enter 0025ch, 000h                        ; c8 5c 02 00
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 ea f6
+    call 0161ch                               ; e8 fa f6
+    mov word [bp-020h], ax                    ; 89 46 e0
+    mov di, 00122h                            ; bf 22 01
+    mov es, ax                                ; 8e c0
+    mov word [bp-024h], di                    ; 89 7e dc
     mov word [bp-022h], ax                    ; 89 46 de
-    mov bx, 00122h                            ; bb 22 01
-    mov es, ax                                ; 8e c0
-    mov si, bx                                ; 89 de
-    mov word [bp-026h], ax                    ; 89 46 da
-    mov byte [es:bx+001c0h], 000h             ; 26 c6 87 c0 01 00
-    db  066h, 026h, 0c7h, 087h, 0c2h, 001h, 0f0h, 001h, 0f0h, 003h
-    ; mov dword [es:bx+001c2h], strict dword 003f001f0h ; 66 26 c7 87 c2 01 f0 01 f0 03
-    mov byte [es:bx+001c1h], 00eh             ; 26 c6 87 c1 01 0e
-    mov byte [es:bx+001c6h], 000h             ; 26 c6 87 c6 01 00
-    db  066h, 026h, 0c7h, 087h, 0c8h, 001h, 070h, 001h, 070h, 003h
-    ; mov dword [es:bx+001c8h], strict dword 003700170h ; 66 26 c7 87 c8 01 70 01 70 03
-    mov byte [es:bx+001c7h], 00fh             ; 26 c6 87 c7 01 0f
+    mov byte [es:di+001c0h], 000h             ; 26 c6 85 c0 01 00
+    db  066h, 026h, 0c7h, 085h, 0c2h, 001h, 0f0h, 001h, 0f0h, 003h
+    ; mov dword [es:di+001c2h], strict dword 003f001f0h ; 66 26 c7 85 c2 01 f0 01 f0 03
+    mov byte [es:di+001c1h], 00eh             ; 26 c6 85 c1 01 0e
+    mov byte [es:di+001c6h], 000h             ; 26 c6 85 c6 01 00
+    db  066h, 026h, 0c7h, 085h, 0c8h, 001h, 070h, 001h, 070h, 003h
+    ; mov dword [es:di+001c8h], strict dword 003700170h ; 66 26 c7 85 c8 01 70 01 70 03
+    mov byte [es:di+001c7h], 00fh             ; 26 c6 85 c7 01 0f
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
-    mov byte [bp-014h], al                    ; 88 46 ec
-    mov byte [bp-016h], al                    ; 88 46 ea
-    jmp near 024cfh                           ; e9 56 05
+    mov byte [bp-002h], al                    ; 88 46 fe
+    mov byte [bp-00ah], al                    ; 88 46 f6
+    jmp near 024b2h                           ; e9 48 05
     mov ax, 000a0h                            ; b8 a0 00
-    lea dx, [bx+006h]                         ; 8d 57 06
-    out DX, AL                                ; ee
-    lea di, [bx+002h]                         ; 8d 7f 02
+    lea dx, [si+006h]                         ; 8d 54 06
+    out DX, AL                                ; ee
+    lea di, [si+002h]                         ; 8d 7c 02
     mov AL, strict byte 055h                  ; b0 55
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
-    lea cx, [bx+003h]                         ; 8d 4f 03
+    lea bx, [si+003h]                         ; 8d 5c 03
     mov AL, strict byte 0aah                  ; b0 aa
-    mov dx, cx                                ; 89 ca
+    mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     mov AL, strict byte 055h                  ; b0 55
-    mov dx, cx                                ; 89 ca
+    mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     mov AL, strict byte 0aah                  ; b0 aa
-    mov dx, cx                                ; 89 ca
+    mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     mov dx, di                                ; 89 fa
@@ -2078,486 +2074,486 @@
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    mov word [bp-028h], ax                    ; 89 46 d8
-    mov dx, cx                                ; 89 ca
+    mov cx, ax                                ; 89 c1
+    mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    cmp byte [bp-028h], 055h                  ; 80 7e d8 55
-    jne near 02084h                           ; 0f 85 cf 00
+    cmp cl, 055h                              ; 80 f9 55
+    jne near 02064h                           ; 0f 85 c0 00
     cmp AL, strict byte 0aah                  ; 3c aa
-    jne near 02084h                           ; 0f 85 c9 00
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    jne near 02064h                           ; 0f 85 ba 00
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov di, si                                ; 89 f7
-    add di, ax                                ; 01 c7
-    mov byte [es:di+01eh], 001h               ; 26 c6 45 1e 01
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
-    call 01be6h                               ; e8 11 fc
+    les bx, [bp-024h]                         ; c4 5e dc
+    add bx, ax                                ; 01 c3
+    mov byte [es:bx+01eh], 001h               ; 26 c6 47 1e 01
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    call 01be6h                               ; e8 24 fc
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 01fe0h                           ; 74 05
+    je short 01fcdh                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 01fe3h                          ; eb 03
+    jmp short 01fd0h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
-    lea dx, [bx+006h]                         ; 8d 57 06
-    out DX, AL                                ; ee
-    lea dx, [bx+002h]                         ; 8d 57 02
+    lea dx, [si+006h]                         ; 8d 54 06
+    out DX, AL                                ; ee
+    lea dx, [si+002h]                         ; 8d 54 02
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    mov bx, ax                                ; 89 c3
+    lea dx, [si+003h]                         ; 8d 54 03
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    cmp bl, 001h                              ; 80 fb 01
+    jne near 02064h                           ; 0f 85 7b 00
+    cmp al, bl                                ; 38 d8
+    jne near 02064h                           ; 0f 85 75 00
+    lea dx, [si+004h]                         ; 8d 54 04
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    mov bx, ax                                ; 89 c3
+    mov bh, al                                ; 88 c7
+    lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov cx, ax                                ; 89 c1
-    lea dx, [bx+003h]                         ; 8d 57 03
+    mov byte [bp-008h], al                    ; 88 46 f8
+    lea dx, [si+007h]                         ; 8d 54 07
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    cmp cl, 001h                              ; 80 f9 01
-    jne near 02084h                           ; 0f 85 88 00
-    cmp al, cl                                ; 38 c8
-    jne near 02084h                           ; 0f 85 82 00
-    lea dx, [bx+004h]                         ; 8d 57 04
-    in AL, DX                                 ; ec
-    db  02ah, 0e4h
-    ; sub ah, ah                                ; 2a e4
-    mov word [bp-028h], ax                    ; 89 46 d8
-    mov al, byte [bp-028h]                    ; 8a 46 d8
-    mov byte [bp-00ch], al                    ; 88 46 f4
-    lea dx, [bx+005h]                         ; 8d 57 05
-    in AL, DX                                 ; ec
-    db  02ah, 0e4h
-    ; sub ah, ah                                ; 2a e4
-    mov cx, ax                                ; 89 c1
-    mov byte [bp-00ah], al                    ; 88 46 f6
-    lea dx, [bx+007h]                         ; 8d 57 07
-    in AL, DX                                 ; ec
-    db  02ah, 0e4h
-    ; sub ah, ah                                ; 2a e4
-    cmp byte [bp-028h], 014h                  ; 80 7e d8 14
-    jne short 02040h                          ; 75 18
+    cmp bl, 014h                              ; 80 fb 14
+    jne short 02027h                          ; 75 18
     cmp cl, 0ebh                              ; 80 f9 eb
-    jne short 02040h                          ; 75 13
-    movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
+    jne short 02027h                          ; 75 13
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    les bx, [bp-024h]                         ; c4 5e dc
+    add bx, ax                                ; 01 c3
+    mov byte [es:bx+01eh], 003h               ; 26 c6 47 1e 03
+    jmp short 02064h                          ; eb 3d
+    test bh, bh                               ; 84 ff
+    jne short 02049h                          ; 75 1e
+    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
+    jne short 02049h                          ; 75 18
+    test al, al                               ; 84 c0
+    je short 02049h                           ; 74 14
+    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     imul bx, bx, strict byte 00018h           ; 6b db 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    add bx, si                                ; 01 f3
-    mov byte [es:bx+01eh], 003h               ; 26 c6 47 1e 03
-    jmp short 02084h                          ; eb 44
-    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 02065h                          ; 75 1f
-    cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 02065h                          ; 75 19
-    test al, al                               ; 84 c0
-    je short 02065h                           ; 74 15
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    mov es, [bp-022h]                         ; 8e 46 de
+    add bx, word [bp-024h]                    ; 03 5e dc
+    mov byte [es:bx+01eh], 002h               ; 26 c6 47 1e 02
+    jmp short 02064h                          ; eb 1b
+    cmp bh, 0ffh                              ; 80 ff ff
+    jne short 02064h                          ; 75 16
+    cmp bh, byte [bp-008h]                    ; 3a 7e f8
+    jne short 02064h                          ; 75 11
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
-    add bx, ax                                ; 01 c3
-    mov byte [es:bx+01eh], 002h               ; 26 c6 47 1e 02
-    jmp short 02084h                          ; eb 1f
-    cmp byte [bp-00ch], 0ffh                  ; 80 7e f4 ff
-    jne short 02084h                          ; 75 19
-    cmp byte [bp-00ah], 0ffh                  ; 80 7e f6 ff
-    jne short 02084h                          ; 75 13
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
+    les bx, [bp-024h]                         ; c4 5e dc
     add bx, ax                                ; 01 c3
     mov byte [es:bx+01eh], 000h               ; 26 c6 47 1e 00
-    mov dx, word [bp-02ch]                    ; 8b 56 d4
+    mov dx, word [bp-028h]                    ; 8b 56 d8
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
-    add bx, ax                                ; 01 c3
-    mov al, byte [es:bx+01eh]                 ; 26 8a 47 1e
-    mov byte [bp-002h], al                    ; 88 46 fe
+    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
+    imul si, si, strict byte 00018h           ; 6b f6 18
+    mov es, [bp-022h]                         ; 8e 46 de
+    add si, word [bp-024h]                    ; 03 76 dc
+    mov al, byte [es:si+01eh]                 ; 26 8a 44 1e
+    mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 002h                  ; 3c 02
-    jne near 022a3h                           ; 0f 85 fb 01
-    mov byte [es:bx+01fh], 0ffh               ; 26 c6 47 1f ff
-    mov byte [es:bx+022h], 000h               ; 26 c6 47 22 00
-    lea dx, [bp-0025ah]                       ; 8d 96 a6 fd
-    mov word [es:si+004h], dx                 ; 26 89 54 04
-    mov [es:si+006h], ss                      ; 26 8c 54 06
-    mov al, byte [bp-016h]                    ; 8a 46 ea
-    mov byte [es:si+008h], al                 ; 26 88 44 08
+    jne near 0228ah                           ; 0f 85 03 02
+    mov byte [es:si+01fh], 0ffh               ; 26 c6 44 1f ff
+    mov byte [es:si+022h], 000h               ; 26 c6 44 22 00
+    lea dx, [bp-0025ch]                       ; 8d 96 a4 fd
+    mov bx, word [bp-024h]                    ; 8b 5e dc
+    mov word [es:bx+004h], dx                 ; 26 89 57 04
+    mov [es:bx+006h], ss                      ; 26 8c 57 06
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    mov byte [es:bx+008h], al                 ; 26 88 47 08
     mov cx, strict word 00001h                ; b9 01 00
     mov bx, 000ech                            ; bb ec 00
-    mov ax, si                                ; 89 f0
+    mov ax, word [bp-024h]                    ; 8b 46 dc
     mov dx, es                                ; 8c c2
-    call 01cc0h                               ; e8 ee fb
+    call 01cc0h                               ; e8 0b fc
     test ax, ax                               ; 85 c0
-    je short 020e1h                           ; 74 0b
+    je short 020c4h                           ; 74 0b
     push 00084h                               ; 68 84 00
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 0b f8
+    call 018e9h                               ; e8 28 f8
     add sp, strict byte 00004h                ; 83 c4 04
-    test byte [bp-0025ah], 080h               ; f6 86 a6 fd 80
+    test byte [bp-0025ch], 080h               ; f6 86 a4 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov byte [bp-008h], al                    ; 88 46 f8
-    cmp byte [bp-001fah], 000h                ; 80 be 06 fe 00
+    mov byte [bp-010h], al                    ; 88 46 f0
+    cmp byte [bp-001fch], 000h                ; 80 be 04 fe 00
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov byte [bp-00eh], al                    ; 88 46 f2
-    mov word [bp-024h], 00200h                ; c7 46 dc 00 02
-    mov ax, word [bp-00258h]                  ; 8b 86 a8 fd
-    mov word [bp-01eh], ax                    ; 89 46 e2
-    mov ax, word [bp-00254h]                  ; 8b 86 ac fd
+    mov byte [bp-012h], al                    ; 88 46 ee
+    mov word [bp-01eh], 00200h                ; c7 46 e2 00 02
+    mov ax, word [bp-0025ah]                  ; 8b 86 a6 fd
+    mov word [bp-016h], ax                    ; 89 46 ea
+    mov ax, word [bp-00256h]                  ; 8b 86 aa fd
+    mov word [bp-018h], ax                    ; 89 46 e8
+    mov ax, word [bp-00250h]                  ; 8b 86 b0 fd
+    mov word [bp-01ah], ax                    ; 89 46 e6
+    mov ax, word [bp-001e4h]                  ; 8b 86 1c fe
     mov word [bp-01ch], ax                    ; 89 46 e4
-    mov ax, word [bp-0024eh]                  ; 8b 86 b2 fd
-    mov word [bp-018h], ax                    ; 89 46 e8
-    mov ax, word [bp-001e2h]                  ; 8b 86 1e fe
-    mov word [bp-020h], ax                    ; 89 46 e0
-    mov ax, word [bp-001e0h]                  ; 8b 86 20 fe
-    mov word [bp-02ah], ax                    ; 89 46 d6
-    cmp ax, 00fffh                            ; 3d ff 0f
-    jne short 0213ch                          ; 75 14
-    cmp word [bp-020h], strict byte 0ffffh    ; 83 7e e0 ff
-    jne short 0213ch                          ; 75 0e
-    mov ax, word [bp-00192h]                  ; 8b 86 6e fe
-    mov word [bp-020h], ax                    ; 89 46 e0
-    mov ax, word [bp-00190h]                  ; 8b 86 70 fe
-    mov word [bp-02ah], ax                    ; 89 46 d6
-    mov al, byte [bp-016h]                    ; 8a 46 ea
-    cmp AL, strict byte 007h                  ; 3c 07
-    jnbe short 021a1h                         ; 77 5e
-    movzx bx, al                              ; 0f b6 d8
-    add bx, bx                                ; 01 db
-    jmp word [cs:bx+01f13h]                   ; 2e ff a7 13 1f
+    mov si, word [bp-001e2h]                  ; 8b b6 1e fe
+    cmp si, 00fffh                            ; 81 fe ff 0f
+    jne short 02119h                          ; 75 10
+    cmp ax, strict word 0ffffh                ; 3d ff ff
+    jne short 02119h                          ; 75 0b
+    mov ax, word [bp-00194h]                  ; 8b 86 6c fe
+    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov si, word [bp-00192h]                  ; 8b b6 6e fe
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    cmp AL, strict byte 001h                  ; 3c 01
+    jc short 0212ch                           ; 72 0c
+    jbe short 02134h                          ; 76 12
+    cmp AL, strict byte 003h                  ; 3c 03
+    je short 0213ch                           ; 74 16
+    cmp AL, strict byte 002h                  ; 3c 02
+    je short 02138h                           ; 74 0e
+    jmp short 02179h                          ; eb 4d
+    test al, al                               ; 84 c0
+    jne short 02179h                          ; 75 49
     mov BL, strict byte 01eh                  ; b3 1e
+    jmp short 0213eh                          ; eb 0a
+    mov BL, strict byte 026h                  ; b3 26
+    jmp short 0213eh                          ; eb 06
+    mov BL, strict byte 067h                  ; b3 67
+    jmp short 0213eh                          ; eb 02
+    mov BL, strict byte 070h                  ; b3 70
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 04 f5
+    call 0165ch                               ; e8 15 f5
     xor ah, ah                                ; 30 e4
-    mov di, ax                                ; 89 c7
-    sal di, 008h                              ; c1 e7 08
+    mov dx, ax                                ; 89 c2
+    sal dx, 008h                              ; c1 e2 08
     movzx ax, bl                              ; 0f b6 c3
-    call 0165ch                               ; e8 f7 f4
+    call 0165ch                               ; e8 08 f5
     xor ah, ah                                ; 30 e4
-    add di, ax                                ; 01 c7
+    add ax, dx                                ; 01 d0
+    mov word [bp-030h], ax                    ; 89 46 d0
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 ea f4
-    movzx dx, al                              ; 0f b6 d0
+    call 0165ch                               ; e8 f8 f4
+    xor ah, ah                                ; 30 e4
+    mov word [bp-032h], ax                    ; 89 46 ce
     mov al, bl                                ; 88 d8
     add AL, strict byte 007h                  ; 04 07
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 de f4
+    call 0165ch                               ; e8 ea f4
     xor ah, ah                                ; 30 e4
-    mov word [bp-01ah], ax                    ; 89 46 e6
-    jmp short 021a8h                          ; eb 23
-    mov BL, strict byte 026h                  ; b3 26
-    jmp short 0214fh                          ; eb c6
-    mov BL, strict byte 067h                  ; b3 67
-    jmp short 0214fh                          ; eb c2
-    mov BL, strict byte 070h                  ; b3 70
-    jmp short 0214fh                          ; eb be
-    mov BL, strict byte 040h                  ; b3 40
-    jmp short 0214fh                          ; eb ba
-    mov BL, strict byte 048h                  ; b3 48
-    jmp short 0214fh                          ; eb b6
-    mov BL, strict byte 050h                  ; b3 50
-    jmp short 0214fh                          ; eb b2
-    mov BL, strict byte 058h                  ; b3 58
-    jmp short 0214fh                          ; eb ae
-    xor di, di                                ; 31 ff
-    xor dx, dx                                ; 31 d2
-    mov word [bp-01ah], di                    ; 89 7e e6
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov word [bp-02eh], ax                    ; 89 46 d2
+    jmp short 02186h                          ; eb 0d
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
+    mov cx, si                                ; 89 f1
+    mov dx, ss                                ; 8c d2
+    lea ax, [bp-032h]                         ; 8d 46 ce
+    call 0533dh                               ; e8 b7 31
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 fb f6
+    call 018aeh                               ; e8 1d f7
+    mov ax, word [bp-02eh]                    ; 8b 46 d2
+    push ax                                   ; 50
+    mov ax, word [bp-032h]                    ; 8b 46 ce
+    push ax                                   ; 50
+    mov ax, word [bp-030h]                    ; 8b 46 d0
+    push ax                                   ; 50
     push word [bp-01ah]                       ; ff 76 e6
-    push dx                                   ; 52
-    push di                                   ; 57
     push word [bp-018h]                       ; ff 76 e8
-    push dword [bp-01eh]                      ; 66 ff 76 e2
+    push word [bp-016h]                       ; ff 76 ea
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
     push ax                                   ; 50
     push 000adh                               ; 68 ad 00
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 18 f7
+    call 018e9h                               ; e8 31 f7
     add sp, strict byte 00014h                ; 83 c4 14
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
-    add bx, ax                                ; 01 c3
-    mov byte [es:bx+01fh], 0ffh               ; 26 c6 47 1f ff
-    mov al, byte [bp-008h]                    ; 8a 46 f8
-    mov byte [es:bx+020h], al                 ; 26 88 47 20
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    mov byte [es:bx+022h], al                 ; 26 88 47 22
-    mov ax, word [bp-024h]                    ; 8b 46 dc
-    mov word [es:bx+024h], ax                 ; 26 89 47 24
+    les di, [bp-024h]                         ; c4 7e dc
+    add di, ax                                ; 01 c7
+    mov byte [es:di+01fh], 0ffh               ; 26 c6 45 1f ff
+    mov al, byte [bp-010h]                    ; 8a 46 f0
+    mov byte [es:di+020h], al                 ; 26 88 45 20
+    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov byte [es:di+022h], al                 ; 26 88 45 22
+    mov ax, word [bp-01eh]                    ; 8b 46 e2
+    mov word [es:di+024h], ax                 ; 26 89 45 24
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    mov word [es:di+02ch], ax                 ; 26 89 45 2c
+    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov word [es:di+02eh], ax                 ; 26 89 45 2e
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    mov word [es:di+030h], ax                 ; 26 89 45 30
     mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:bx+02ch], ax                 ; 26 89 47 2c
-    mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
-    mov ax, word [bp-018h]                    ; 8b 46 e8
-    mov word [es:bx+030h], ax                 ; 26 89 47 30
-    mov ax, word [bp-020h]                    ; 8b 46 e0
-    mov word [es:bx+032h], ax                 ; 26 89 47 32
-    mov ax, word [bp-02ah]                    ; 8b 46 d6
-    mov word [es:bx+034h], ax                 ; 26 89 47 34
-    mov word [es:bx+026h], dx                 ; 26 89 57 26
-    mov word [es:bx+028h], di                 ; 26 89 7f 28
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov word [es:bx+02ah], ax                 ; 26 89 47 2a
-    mov al, byte [bp-016h]                    ; 8a 46 ea
+    mov word [es:di+032h], ax                 ; 26 89 45 32
+    mov word [es:di+034h], si                 ; 26 89 75 34
+    lea di, [di+026h]                         ; 8d 7d 26
+    push DS                                   ; 1e
+    push SS                                   ; 16
+    pop DS                                    ; 1f
+    lea si, [bp-032h]                         ; 8d 76 ce
+    movsw                                     ; a5
+    movsw                                     ; a5
+    movsw                                     ; a5
+    pop DS                                    ; 1f
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     cmp AL, strict byte 002h                  ; 3c 02
-    jnc short 0228fh                          ; 73 5a
+    jnc short 02275h                          ; 73 60
     test al, al                               ; 84 c0
-    jne short 0223eh                          ; 75 05
-    mov bx, strict word 0003dh                ; bb 3d 00
-    jmp short 02241h                          ; eb 03
-    mov bx, strict word 0004dh                ; bb 4d 00
-    mov cx, word [bp-022h]                    ; 8b 4e de
-    mov es, cx                                ; 8e c1
-    mov word [es:bx], di                      ; 26 89 3f
-    mov byte [es:bx+002h], dl                 ; 26 88 57 02
-    mov byte [es:bx+003h], 0a0h               ; 26 c6 47 03 a0
+    jne short 0221eh                          ; 75 05
+    mov di, strict word 0003dh                ; bf 3d 00
+    jmp short 02221h                          ; eb 03
+    mov di, strict word 0004dh                ; bf 4d 00
+    mov dx, word [bp-020h]                    ; 8b 56 e0
+    mov ax, word [bp-030h]                    ; 8b 46 d0
+    mov es, dx                                ; 8e c2
+    mov word [es:di], ax                      ; 26 89 05
+    mov al, byte [bp-032h]                    ; 8a 46 ce
+    mov byte [es:di+002h], al                 ; 26 88 45 02
+    mov byte [es:di+003h], 0a0h               ; 26 c6 45 03 a0
+    mov al, byte [bp-01ah]                    ; 8a 46 e6
+    mov byte [es:di+004h], al                 ; 26 88 45 04
+    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov word [es:di+009h], ax                 ; 26 89 45 09
     mov al, byte [bp-018h]                    ; 8a 46 e8
-    mov byte [es:bx+004h], al                 ; 26 88 47 04
-    mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [es:bx+009h], ax                 ; 26 89 47 09
-    mov al, byte [bp-01ch]                    ; 8a 46 e4
-    mov byte [es:bx+00bh], al                 ; 26 88 47 0b
-    mov al, byte [bp-018h]                    ; 8a 46 e8
-    mov byte [es:bx+00eh], al                 ; 26 88 47 0e
+    mov byte [es:di+00bh], al                 ; 26 88 45 0b
+    mov al, byte [bp-01ah]                    ; 8a 46 e6
+    mov byte [es:di+00eh], al                 ; 26 88 45 0e
     xor al, al                                ; 30 c0
     xor ah, ah                                ; 30 e4
-    jmp short 02279h                          ; eb 05
+    jmp short 0225fh                          ; eb 05
     cmp ah, 00fh                              ; 80 fc 0f
-    jnc short 02287h                          ; 73 0e
-    movzx di, ah                              ; 0f b6 fc
-    mov es, cx                                ; 8e c1
-    add di, bx                                ; 01 df
-    add al, byte [es:di]                      ; 26 02 05
+    jnc short 0226dh                          ; 73 0e
+    movzx bx, ah                              ; 0f b6 dc
+    mov es, dx                                ; 8e c2
+    add bx, di                                ; 01 fb
+    add al, byte [es:bx]                      ; 26 02 07
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 02274h                          ; eb ed
+    jmp short 0225ah                          ; eb ed
     neg al                                    ; f6 d8
-    mov es, cx                                ; 8e c1
-    mov byte [es:bx+00fh], al                 ; 26 88 47 0f
-    movzx bx, byte [bp-014h]                  ; 0f b6 5e ec
-    mov es, [bp-026h]                         ; 8e 46 da
-    add bx, si                                ; 01 f3
-    mov al, byte [bp-016h]                    ; 8a 46 ea
+    mov es, dx                                ; 8e c2
+    mov byte [es:di+00fh], al                 ; 26 88 45 0f
+    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
+    mov es, [bp-022h]                         ; 8e 46 de
+    add bx, word [bp-024h]                    ; 03 5e dc
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     mov byte [es:bx+0019fh], al               ; 26 88 87 9f 01
-    inc byte [bp-014h]                        ; fe 46 ec
-    cmp byte [bp-002h], 003h                  ; 80 7e fe 03
-    jne near 0233eh                           ; 0f 85 93 00
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    inc byte [bp-002h]                        ; fe 46 fe
+    cmp byte [bp-00ch], 003h                  ; 80 7e f4 03
+    jne near 0232ah                           ; 0f 85 98 00
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
+    les bx, [bp-024h]                         ; c4 5e dc
     add bx, ax                                ; 01 c3
     mov byte [es:bx+01fh], 005h               ; 26 c6 47 1f 05
     mov byte [es:bx+022h], 000h               ; 26 c6 47 22 00
-    lea dx, [bp-0025ah]                       ; 8d 96 a6 fd
-    mov word [es:si+004h], dx                 ; 26 89 54 04
-    mov [es:si+006h], ss                      ; 26 8c 54 06
-    mov al, byte [bp-016h]                    ; 8a 46 ea
-    mov byte [es:si+008h], al                 ; 26 88 44 08
+    lea dx, [bp-0025ch]                       ; 8d 96 a4 fd
+    mov bx, word [bp-024h]                    ; 8b 5e dc
+    mov word [es:bx+004h], dx                 ; 26 89 57 04
+    mov [es:bx+006h], ss                      ; 26 8c 57 06
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    mov byte [es:bx+008h], al                 ; 26 88 47 08
     mov cx, strict word 00001h                ; b9 01 00
     mov bx, 000a1h                            ; bb a1 00
-    mov ax, si                                ; 89 f0
+    mov ax, word [bp-024h]                    ; 8b 46 dc
     mov dx, es                                ; 8c c2
-    call 01cc0h                               ; e8 dd f9
+    call 01cc0h                               ; e8 f4 f9
     test ax, ax                               ; 85 c0
-    je short 022f2h                           ; 74 0b
+    je short 022dbh                           ; 74 0b
     push 000d4h                               ; 68 d4 00
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 fa f5
+    call 018e9h                               ; e8 11 f6
     add sp, strict byte 00004h                ; 83 c4 04
-    mov dl, byte [bp-00259h]                  ; 8a 96 a7 fd
-    and dl, 01fh                              ; 80 e2 1f
-    test byte [bp-0025ah], 080h               ; f6 86 a6 fd 80
+    mov cl, byte [bp-0025bh]                  ; 8a 8e a5 fd
+    and cl, 01fh                              ; 80 e1 1f
+    test byte [bp-0025ch], 080h               ; f6 86 a4 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov cx, ax                                ; 89 c1
-    cmp byte [bp-001fah], 000h                ; 80 be 06 fe 00
+    mov dx, ax                                ; 89 c2
+    cmp byte [bp-001fch], 000h                ; 80 be 04 fe 00
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
-    imul bx, bx, strict byte 00018h           ; 6b db 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    add bx, si                                ; 01 f3
-    mov byte [es:bx+01fh], dl                 ; 26 88 57 1f
-    mov byte [es:bx+020h], cl                 ; 26 88 4f 20
-    mov byte [es:bx+022h], al                 ; 26 88 47 22
-    mov word [es:bx+024h], 00800h             ; 26 c7 47 24 00 08
+    mov bx, ax                                ; 89 c3
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    les si, [bp-024h]                         ; c4 76 dc
+    add si, ax                                ; 01 c6
+    mov byte [es:si+01fh], cl                 ; 26 88 4c 1f
+    mov byte [es:si+020h], dl                 ; 26 88 54 20
+    mov byte [es:si+022h], bl                 ; 26 88 5c 22
+    mov word [es:si+024h], 00800h             ; 26 c7 44 24 00 08
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
-    add bx, si                                ; 01 f3
-    mov al, byte [bp-016h]                    ; 8a 46 ea
+    add bx, word [bp-024h]                    ; 03 5e dc
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     mov byte [es:bx+001b0h], al               ; 26 88 87 b0 01
     inc byte [bp-006h]                        ; fe 46 fa
-    mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 02372h                           ; 74 2d
+    je short 0235dh                           ; 74 2c
     cmp AL, strict byte 002h                  ; 3c 02
-    jne near 023d7h                           ; 0f 85 8c 00
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
-    add bx, ax                                ; 01 c3
+    jne near 023c0h                           ; 0f 85 89 00
+    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
+    imul bx, bx, strict byte 00018h           ; 6b db 18
+    mov es, [bp-022h]                         ; 8e 46 de
+    add bx, word [bp-024h]                    ; 03 5e dc
     mov ax, word [es:bx+032h]                 ; 26 8b 47 32
-    mov word [bp-030h], ax                    ; 89 46 d0
+    mov word [bp-02ch], ax                    ; 89 46 d4
     mov ax, word [es:bx+034h]                 ; 26 8b 47 34
-    mov word [bp-02eh], ax                    ; 89 46 d2
+    mov word [bp-02ah], ax                    ; 89 46 d6
     mov cx, strict word 0000bh                ; b9 0b 00
-    shr word [bp-02eh], 1                     ; d1 6e d2
-    rcr word [bp-030h], 1                     ; d1 5e d0
-    loop 0236ah                               ; e2 f8
-    movzx dx, byte [bp-001b9h]                ; 0f b6 96 47 fe
+    shr word [bp-02ah], 1                     ; d1 6e d6
+    rcr word [bp-02ch], 1                     ; d1 5e d4
+    loop 02355h                               ; e2 f8
+    movzx dx, byte [bp-001bbh]                ; 0f b6 96 45 fe
     sal dx, 008h                              ; c1 e2 08
-    movzx ax, byte [bp-001bah]                ; 0f b6 86 46 fe
+    movzx ax, byte [bp-001bch]                ; 0f b6 86 44 fe
     or dx, ax                                 ; 09 c2
-    mov byte [bp-010h], 00fh                  ; c6 46 f0 0f
-    jmp short 02390h                          ; eb 09
-    dec byte [bp-010h]                        ; fe 4e f0
-    cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    jbe short 0239dh                          ; 76 0d
-    movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
+    mov byte [bp-00eh], 00fh                  ; c6 46 f2 0f
+    jmp short 0237bh                          ; eb 09
+    dec byte [bp-00eh]                        ; fe 4e f2
+    cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
+    jbe short 02388h                          ; 76 0d
+    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
     mov ax, strict word 00001h                ; b8 01 00
     sal ax, CL                                ; d3 e0
     test dx, ax                               ; 85 c2
-    je short 02387h                           ; 74 ea
-    xor bx, bx                                ; 31 db
-    jmp short 023a6h                          ; eb 05
-    cmp bx, strict byte 00014h                ; 83 fb 14
-    jnl short 023bbh                          ; 7d 15
-    mov di, bx                                ; 89 df
-    add di, bx                                ; 01 df
-    mov al, byte [bp+di-00223h]               ; 8a 83 dd fd
-    mov byte [bp+di-05ah], al                 ; 88 43 a6
-    mov al, byte [bp+di-00224h]               ; 8a 83 dc fd
-    mov byte [bp+di-059h], al                 ; 88 43 a7
-    inc bx                                    ; 43
-    jmp short 023a1h                          ; eb e6
-    mov byte [bp-032h], 000h                  ; c6 46 ce 00
-    mov bx, strict word 00027h                ; bb 27 00
-    jmp short 023c9h                          ; eb 05
-    dec bx                                    ; 4b
-    test bx, bx                               ; 85 db
-    jle short 023d7h                          ; 7e 0e
-    mov di, bx                                ; 89 df
-    cmp byte [bp+di-05ah], 020h               ; 80 7b a6 20
-    jne short 023d7h                          ; 75 06
-    mov byte [bp+di-05ah], 000h               ; c6 43 a6 00
-    jmp short 023c4h                          ; eb ed
-    mov al, byte [bp-002h]                    ; 8a 46 fe
+    je short 02372h                           ; 74 ea
+    xor di, di                                ; 31 ff
+    jmp short 02391h                          ; eb 05
+    cmp di, strict byte 00014h                ; 83 ff 14
+    jnl short 023a6h                          ; 7d 15
+    mov si, di                                ; 89 fe
+    add si, di                                ; 01 fe
+    mov al, byte [bp+si-00225h]               ; 8a 82 db fd
+    mov byte [bp+si-05ch], al                 ; 88 42 a4
+    mov al, byte [bp+si-00226h]               ; 8a 82 da fd
+    mov byte [bp+si-05bh], al                 ; 88 42 a5
+    inc di                                    ; 47
+    jmp short 0238ch                          ; eb e6
+    mov byte [bp-034h], 000h                  ; c6 46 cc 00
+    mov di, strict word 00027h                ; bf 27 00
+    jmp short 023b4h                          ; eb 05
+    dec di                                    ; 4f
+    test di, di                               ; 85 ff
+    jle short 023c0h                          ; 7e 0c
+    cmp byte [bp+di-05ch], 020h               ; 80 7b a4 20
+    jne short 023c0h                          ; 75 06
+    mov byte [bp+di-05ch], 000h               ; c6 43 a4 00
+    jmp short 023afh                          ; eb ef
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 0243ch                           ; 74 5e
+    je short 02423h                           ; 74 5c
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 023ebh                           ; 74 09
+    je short 023d4h                           ; 74 09
     cmp AL, strict byte 001h                  ; 3c 01
-    je near 024a7h                            ; 0f 84 bf 00
-    jmp near 024c6h                           ; e9 db 00
+    je near 0248ah                            ; 0f 84 b9 00
+    jmp near 024a9h                           ; e9 d5 00
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 023f6h                           ; 74 05
+    je short 023dfh                           ; 74 05
     mov ax, 000ffh                            ; b8 ff 00
-    jmp short 023f9h                          ; eb 03
+    jmp short 023e2h                          ; eb 03
     mov ax, 00106h                            ; b8 06 01
     push ax                                   ; 50
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
     push ax                                   ; 50
     push 0010dh                               ; 68 0d 01
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 e2 f4
+    call 018e9h                               ; e8 f9 f4
     add sp, strict byte 00008h                ; 83 c4 08
-    xor bx, bx                                ; 31 db
-    mov di, bx                                ; 89 df
-    movzx ax, byte [bp+di-05ah]               ; 0f b6 43 a6
-    inc bx                                    ; 43
+    xor di, di                                ; 31 ff
+    movzx ax, byte [bp+di-05ch]               ; 0f b6 43 a4
+    inc di                                    ; 47
     test ax, ax                               ; 85 c0
-    je short 02425h                           ; 74 0e
+    je short 0240ch                           ; 74 0e
     push ax                                   ; 50
     push 00118h                               ; 68 18 01
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 c9 f4
+    call 018e9h                               ; e8 e2 f4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 0240ch                          ; eb e7
-    push dword [bp-030h]                      ; 66 ff 76 d0
-    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
+    jmp short 023f5h                          ; eb e9
+    push dword [bp-02ch]                      ; 66 ff 76 d4
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     push ax                                   ; 50
     push 0011bh                               ; 68 1b 01
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 b3 f4
+    call 018e9h                               ; e8 cc f4
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 024c6h                           ; e9 8a 00
+    jmp near 024a9h                           ; e9 86 00
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 02447h                           ; 74 05
+    je short 0242eh                           ; 74 05
     mov ax, 000ffh                            ; b8 ff 00
-    jmp short 0244ah                          ; eb 03
+    jmp short 02431h                          ; eb 03
     mov ax, 00106h                            ; b8 06 01
     push ax                                   ; 50
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
     push ax                                   ; 50
     push 0010dh                               ; 68 0d 01
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 91 f4
+    call 018e9h                               ; e8 aa f4
     add sp, strict byte 00008h                ; 83 c4 08
-    xor bx, bx                                ; 31 db
-    mov di, bx                                ; 89 df
-    movzx ax, byte [bp+di-05ah]               ; 0f b6 43 a6
-    inc bx                                    ; 43
+    xor di, di                                ; 31 ff
+    movzx ax, byte [bp+di-05ch]               ; 0f b6 43 a4
+    inc di                                    ; 47
     test ax, ax                               ; 85 c0
-    je short 02476h                           ; 74 0e
+    je short 0245bh                           ; 74 0e
     push ax                                   ; 50
     push 00118h                               ; 68 18 01
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 78 f4
+    call 018e9h                               ; e8 93 f4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 0245dh                          ; eb e7
-    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    jmp short 02444h                          ; eb e9
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
+    les bx, [bp-024h]                         ; c4 5e dc
     add bx, ax                                ; 01 c3
     cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
-    jne short 02495h                          ; 75 0a
-    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
+    jne short 02478h                          ; 75 0a
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     push ax                                   ; 50
     push 0013bh                               ; 68 3b 01
-    jmp short 0249dh                          ; eb 08
-    movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
+    jmp short 02480h                          ; eb 08
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     push ax                                   ; 50
     push 00155h                               ; 68 55 01
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 47 f4
+    call 018e9h                               ; e8 64 f4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 024c6h                          ; eb 1f
+    jmp short 024a9h                          ; eb 1f
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 024b2h                           ; 74 05
+    je short 02495h                           ; 74 05
     mov ax, 000ffh                            ; b8 ff 00
-    jmp short 024b5h                          ; eb 03
+    jmp short 02498h                          ; eb 03
     mov ax, 00106h                            ; b8 06 01
     push ax                                   ; 50
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
     push ax                                   ; 50
     push 00167h                               ; 68 67 01
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 26 f4
+    call 018e9h                               ; e8 43 f4
     add sp, strict byte 00008h                ; 83 c4 08
-    inc byte [bp-016h]                        ; fe 46 ea
-    cmp byte [bp-016h], 008h                  ; 80 7e ea 08
-    jnc short 02520h                          ; 73 51
-    movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
+    inc byte [bp-00ah]                        ; fe 46 f6
+    cmp byte [bp-00ah], 008h                  ; 80 7e f6 08
+    jnc short 02500h                          ; 73 4e
+    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     mov ax, bx                                ; 89 d8
     cwd                                       ; 99
@@ -2565,43 +2561,42 @@
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
-    mov cx, ax                                ; 89 c1
-    mov byte [bp-012h], al                    ; 88 46 ee
+    mov word [bp-026h], ax                    ; 89 46 da
+    mov al, byte [bp-026h]                    ; 8a 46 da
+    mov byte [bp-014h], al                    ; 88 46 ec
     mov ax, bx                                ; 89 d8
     cwd                                       ; 99
     mov bx, strict word 00002h                ; bb 02 00
     idiv bx                                   ; f7 fb
-    mov word [bp-028h], dx                    ; 89 56 d8
-    mov al, byte [bp-028h]                    ; 8a 46 d8
-    mov byte [bp-004h], al                    ; 88 46 fc
-    movzx ax, cl                              ; 0f b6 c1
+    mov cx, dx                                ; 89 d1
+    mov byte [bp-004h], dl                    ; 88 56 fc
+    movzx ax, byte [bp-026h]                  ; 0f b6 46 da
     imul ax, ax, strict byte 00006h           ; 6b c0 06
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov di, si                                ; 89 f7
-    add di, ax                                ; 01 c7
-    mov bx, word [es:di+001c2h]               ; 26 8b 9d c2 01
-    mov ax, word [es:di+001c4h]               ; 26 8b 85 c4 01
-    mov word [bp-02ch], ax                    ; 89 46 d4
+    les bx, [bp-024h]                         ; c4 5e dc
+    add bx, ax                                ; 01 c3
+    mov si, word [es:bx+001c2h]               ; 26 8b b7 c2 01
+    mov ax, word [es:bx+001c4h]               ; 26 8b 87 c4 01
+    mov word [bp-028h], ax                    ; 89 46 d8
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 00ah                  ; b0 0a
     out DX, AL                                ; ee
-    cmp byte [bp-028h], 000h                  ; 80 7e d8 00
-    je near 01f79h                            ; 0f 84 5f fa
+    test cl, cl                               ; 84 c9
+    je near 01f6ah                            ; 0f 84 70 fa
     mov ax, 000b0h                            ; b8 b0 00
-    jmp near 01f7ch                           ; e9 5c fa
-    mov al, byte [bp-014h]                    ; 8a 46 ec
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov byte [es:si+0019eh], al               ; 26 88 84 9e 01
+    jmp near 01f6dh                           ; e9 6d fa
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    les bx, [bp-024h]                         ; c4 5e dc
+    mov byte [es:bx+0019eh], al               ; 26 88 87 9e 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
-    mov byte [es:si+001afh], al               ; 26 88 84 af 01
-    movzx bx, byte [bp-014h]                  ; 0f b6 5e ec
+    mov byte [es:bx+001afh], al               ; 26 88 87 af 01
+    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 ce f0
+    call 0160eh                               ; e8 ee f0
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-ata_cmd_data_out_:                           ; 0xf2544 LB 0x215
+ata_cmd_data_out_:                           ; 0xf2524 LB 0x215
     push si                                   ; 56
     push di                                   ; 57
@@ -2630,7 +2625,7 @@
     mov byte [bp-004h], al                    ; 88 46 fc
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 02596h                          ; 75 07
+    jne short 02576h                          ; 75 07
     mov word [bp-00eh], 00080h                ; c7 46 f2 80 00
-    jmp short 0259bh                          ; eb 05
+    jmp short 0257bh                          ; eb 05
     mov word [bp-00eh], 00100h                ; c7 46 f2 00 01
     lea dx, [bx+007h]                         ; 8d 57 07
@@ -2639,5 +2634,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 025b4h                           ; 74 0f
+    je short 02594h                           ; 74 0f
     mov dx, word [bp-008h]                    ; 8b 56 f8
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2645,5 +2640,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 02753h                           ; e9 9f 01
+    jmp near 02733h                           ; e9 9f 01
     mov es, [bp-006h]                         ; 8e 46 fa
     mov ax, word [es:di]                      ; 26 8b 05
@@ -2662,11 +2657,11 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     test ax, ax                               ; 85 c0
-    jne short 02652h                          ; 75 67
+    jne short 02632h                          ; 75 67
     mov dx, word [bp-01ah]                    ; 8b 56 e6
     add dx, word [bp-00ah]                    ; 03 56 f6
     adc ax, word [bp-018h]                    ; 13 46 e8
     cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 025fbh                         ; 77 02
-    jne short 02626h                          ; 75 2b
+    jnbe short 025dbh                         ; 77 02
+    jne short 02606h                          ; 75 2b
     mov ax, word [bp-018h]                    ; 8b 46 e8
     xor al, al                                ; 30 c0
@@ -2693,5 +2688,5 @@
     shr word [bp-018h], 1                     ; d1 6e e8
     rcr word [bp-01ah], 1                     ; d1 5e e6
-    loop 02631h                               ; e2 f8
+    loop 02611h                               ; e2 f8
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov word [bp-012h], ax                    ; 89 46 ee
@@ -2722,7 +2717,7 @@
     out DX, AL                                ; ee
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    je short 02688h                           ; 74 05
+    je short 02668h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 0268bh                          ; eb 03
+    jmp short 0266bh                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
@@ -2739,7 +2734,7 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 0269ch                          ; 75 f4
+    jne short 0267ch                          ; 75 f4
     test AL, strict byte 001h                 ; a8 01
-    je short 026bbh                           ; 74 0f
+    je short 0269bh                           ; 74 0f
     mov dx, word [bp-008h]                    ; 8b 56 f8
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2747,7 +2742,7 @@
     out DX, AL                                ; ee
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 02753h                           ; e9 98 00
+    jmp near 02733h                           ; e9 98 00
     test dl, 008h                             ; f6 c2 08
-    jne short 026cfh                          ; 75 0f
+    jne short 026afh                          ; 75 0f
     mov dx, word [bp-008h]                    ; 8b 56 f8
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2755,8 +2750,8 @@
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 02753h                           ; e9 84 00
+    jmp near 02733h                           ; e9 84 00
     sti                                       ; fb
     cmp si, 0f800h                            ; 81 fe 00 f8
-    jc short 026e3h                           ; 72 0d
+    jc short 026c3h                           ; 72 0d
     sub si, 00800h                            ; 81 ee 00 08
     mov ax, word [bp-014h]                    ; 8b 46 ec
@@ -2764,5 +2759,5 @@
     mov word [bp-014h], ax                    ; 89 46 ec
     cmp byte [bp-004h], 001h                  ; 80 7e fc 01
-    jne short 026f7h                          ; 75 0e
+    jne short 026d7h                          ; 75 0e
     mov dx, bx                                ; 89 da
     mov cx, word [bp-00eh]                    ; 8b 4e f2
@@ -2770,5 +2765,5 @@
     db  0f3h, 066h, 026h, 06fh
     ; rep es outsd                              ; f3 66 26 6f
-    jmp short 02702h                          ; eb 0b
+    jmp short 026e2h                          ; eb 0b
     mov dx, bx                                ; 89 da
     mov cx, word [bp-00eh]                    ; 8b 4e f2
@@ -2785,10 +2780,10 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 0270ch                          ; 75 f4
+    jne short 026ech                          ; 75 f4
     cmp word [bp-00ah], strict byte 00000h    ; 83 7e f6 00
-    jne short 02732h                          ; 75 14
+    jne short 02712h                          ; 75 14
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02748h                           ; 74 24
+    je short 02728h                           ; 74 24
     mov dx, word [bp-008h]                    ; 8b 56 f8
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2796,9 +2791,9 @@
     out DX, AL                                ; ee
     mov dx, strict word 00006h                ; ba 06 00
-    jmp short 02753h                          ; eb 21
+    jmp short 02733h                          ; eb 21
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 026d0h                           ; 74 96
+    je short 026b0h                           ; 74 96
     mov dx, word [bp-008h]                    ; 8b 56 f8
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2806,5 +2801,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00007h                ; ba 07 00
-    jmp short 02753h                          ; eb 0b
+    jmp short 02733h                          ; eb 0b
     mov dx, word [bp-008h]                    ; 8b 56 f8
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2817,5 +2812,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-@ata_read_sectors:                           ; 0xf2759 LB 0x77
+@ata_read_sectors:                           ; 0xf2739 LB 0x77
     push si                                   ; 56
     push di                                   ; 57
@@ -2829,10 +2824,10 @@
     mov ax, word [es:si+012h]                 ; 26 8b 44 12
     test ax, ax                               ; 85 c0
-    je short 02787h                           ; 74 0d
+    je short 02767h                           ; 74 0d
     movzx di, bl                              ; 0f b6 fb
     imul di, di, strict byte 00018h           ; 6b ff 18
     mov [bp-002h], es                         ; 8c 46 fe
     add di, si                                ; 01 f7
-    jmp short 027b3h                          ; eb 2c
+    jmp short 02793h                          ; eb 2c
     mov di, word [es:si]                      ; 26 8b 3c
     add di, cx                                ; 01 cf
@@ -2840,11 +2835,11 @@
     adc ax, word [es:si+002h]                 ; 26 13 44 02
     cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 0279ah                         ; 77 02
-    jne short 027a6h                          ; 75 0c
+    jnbe short 0277ah                         ; 77 02
+    jne short 02786h                          ; 75 0c
     mov bx, strict word 00024h                ; bb 24 00
     mov ax, si                                ; 89 f0
     mov dx, es                                ; 8c c2
-    call 01cc0h                               ; e8 1c f5
-    jmp short 027cah                          ; eb 24
+    call 01cc0h                               ; e8 3c f5
+    jmp short 027aah                          ; eb 24
     movzx ax, bl                              ; 0f b6 c3
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -2856,5 +2851,5 @@
     mov ax, si                                ; 89 f0
     mov dx, es                                ; 8c c2
-    call 01cc0h                               ; e8 ff f4
+    call 01cc0h                               ; e8 1f f5
     mov es, [bp-002h]                         ; 8e 46 fe
     mov word [es:di+024h], 00200h             ; 26 c7 45 24 00 02
@@ -2863,5 +2858,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-@ata_write_sectors:                          ; 0xf27d0 LB 0x3a
+@ata_write_sectors:                          ; 0xf27b0 LB 0x3a
     push si                                   ; 56
     push bp                                   ; 55
@@ -2870,10 +2865,10 @@
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     cmp word [es:si+012h], strict byte 00000h ; 26 83 7c 12 00
-    je short 027eeh                           ; 74 0c
+    je short 027ceh                           ; 74 0c
     mov bx, strict word 00030h                ; bb 30 00
     mov ax, si                                ; 89 f0
     mov dx, es                                ; 8c c2
-    call 02544h                               ; e8 58 fd
-    jmp short 02805h                          ; eb 17
+    call 02524h                               ; e8 58 fd
+    jmp short 027e5h                          ; eb 17
     xor ax, ax                                ; 31 c0
     mov dx, word [es:si]                      ; 26 8b 14
@@ -2881,12 +2876,12 @@
     adc ax, word [es:si+002h]                 ; 26 13 44 02
     cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 02800h                         ; 77 02
-    jne short 027e2h                          ; 75 e2
+    jnbe short 027e0h                         ; 77 02
+    jne short 027c2h                          ; 75 e2
     mov bx, strict word 00034h                ; bb 34 00
-    jmp short 027e5h                          ; eb e0
+    jmp short 027c5h                          ; eb e0
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-ata_cmd_packet_:                             ; 0xf280a LB 0x2e3
+ata_cmd_packet_:                             ; 0xf27ea LB 0x2e3
     push si                                   ; 56
     push di                                   ; 57
@@ -2897,5 +2892,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 fd ed
+    call 0161ch                               ; e8 1d ee
     mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
     mov word [bp-00ah], ax                    ; 89 46 f6
@@ -2906,18 +2901,18 @@
     mov byte [bp-002h], ah                    ; 88 66 fe
     cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
-    jne short 0285ah                          ; 75 1f
-    mov bx, 00cd6h                            ; bb d6 0c
+    jne short 0283ah                          ; 75 1f
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 68 f0
+    call 018aeh                               ; e8 88 f0
     push 00181h                               ; 68 81 01
     push 00190h                               ; 68 90 01
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 98 f0
+    call 018e9h                               ; e8 b8 f0
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 02ae5h                           ; e9 8b 02
+    jmp near 02ac5h                           ; e9 8b 02
     test byte [bp+008h], 001h                 ; f6 46 08 01
-    jne short 02854h                          ; 75 f4
+    jne short 02834h                          ; 75 f4
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 00006h           ; 6b c0 06
@@ -2937,8 +2932,8 @@
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jnc short 0289dh                          ; 73 06
+    jnc short 0287dh                          ; 73 06
     mov byte [bp-004h], 00ch                  ; c6 46 fc 0c
-    jmp short 028a3h                          ; eb 06
-    jbe short 028a3h                          ; 76 04
+    jmp short 02883h                          ; eb 06
+    jbe short 02883h                          ; 76 04
     mov byte [bp-004h], 010h                  ; c6 46 fc 10
     shr byte [bp-004h], 1                     ; d0 6e fc
@@ -2953,7 +2948,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 028cbh                           ; 74 06
+    je short 028abh                           ; 74 06
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 02ae5h                           ; e9 1a 02
+    jmp near 02ac5h                           ; e9 1a 02
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2967,7 +2962,7 @@
     out DX, AL                                ; ee
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    je short 028ebh                           ; 74 05
+    je short 028cbh                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 028eeh                          ; eb 03
+    jmp short 028ceh                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     lea dx, [bx+006h]                         ; 8d 57 06
@@ -2982,7 +2977,7 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 028f8h                          ; 75 f4
+    jne short 028d8h                          ; 75 f4
     test AL, strict byte 001h                 ; a8 01
-    je short 02917h                           ; 74 0f
+    je short 028f7h                           ; 74 0f
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2990,7 +2985,7 @@
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 02ae5h                           ; e9 ce 01
+    jmp near 02ac5h                           ; e9 ce 01
     test dl, 008h                             ; f6 c2 08
-    jne short 0292bh                          ; 75 0f
+    jne short 0290bh                          ; 75 0f
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2998,5 +2993,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00004h                ; ba 04 00
-    jmp near 02ae5h                           ; e9 ba 01
+    jmp near 02ac5h                           ; e9 ba 01
     sti                                       ; fb
     mov ax, di                                ; 89 f8
@@ -3011,5 +3006,5 @@
     ; rep es outsw                              ; f3 26 6f
     cmp byte [bp+00eh], 000h                  ; 80 7e 0e 00
-    jne short 02954h                          ; 75 0b
+    jne short 02934h                          ; 75 0b
     lea dx, [bx+007h]                         ; 8d 57 07
     in AL, DX                                 ; ec
@@ -3017,5 +3012,5 @@
     ; sub ah, ah                                ; 2a e4
     mov dl, al                                ; 88 c2
-    jmp near 02ac6h                           ; e9 72 01
+    jmp near 02aa6h                           ; e9 72 01
     lea dx, [bx+007h]                         ; 8d 57 07
     in AL, DX                                 ; ec
@@ -3024,23 +3019,23 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 02954h                          ; 75 f4
+    jne short 02934h                          ; 75 f4
     test AL, strict byte 088h                 ; a8 88
-    je near 02ac6h                            ; 0f 84 60 01
+    je near 02aa6h                            ; 0f 84 60 01
     test AL, strict byte 001h                 ; a8 01
-    je short 02975h                           ; 74 0b
+    je short 02955h                           ; 74 0b
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    jmp short 02911h                          ; eb 9c
+    jmp short 028f1h                          ; eb 9c
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 02988h                           ; 74 0b
+    je short 02968h                           ; 74 0b
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    jmp short 02925h                          ; eb 9d
+    jmp short 02905h                          ; eb 9d
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 004h                              ; c1 e8 04
@@ -3065,10 +3060,10 @@
     mov ax, word [bp+008h]                    ; 8b 46 08
     cmp ax, cx                                ; 39 c8
-    jbe short 029c8h                          ; 76 0c
+    jbe short 029a8h                          ; 76 0c
     mov ax, cx                                ; 89 c8
     sub word [bp+008h], cx                    ; 29 4e 08
     xor ax, cx                                ; 31 c8
     mov word [bp-010h], ax                    ; 89 46 f0
-    jmp short 029d2h                          ; eb 0a
+    jmp short 029b2h                          ; eb 0a
     mov cx, ax                                ; 89 c1
     mov word [bp+008h], strict word 00000h    ; c7 46 08 00 00
@@ -3076,8 +3071,8 @@
     xor ax, ax                                ; 31 c0
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 029fbh                          ; 75 21
+    jne short 029dbh                          ; 75 21
     mov dx, word [bp-010h]                    ; 8b 56 f0
     cmp dx, word [bp+00ah]                    ; 3b 56 0a
-    jbe short 029fbh                          ; 76 19
+    jbe short 029dbh                          ; 76 19
     mov ax, word [bp-010h]                    ; 8b 46 f0
     sub ax, word [bp+00ah]                    ; 2b 46 0a
@@ -3088,5 +3083,5 @@
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov word [bp+00ch], ax                    ; 89 46 0c
-    jmp short 02a07h                          ; eb 0c
+    jmp short 029e7h                          ; eb 0c
     mov word [bp-008h], ax                    ; 89 46 f8
     mov dx, word [bp-010h]                    ; 8b 56 f0
@@ -3096,37 +3091,37 @@
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test cl, 003h                             ; f6 c1 03
-    je short 02a14h                           ; 74 02
+    je short 029f4h                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-010h], 003h                 ; f6 46 f0 03
-    je short 02a1ch                           ; 74 02
+    je short 029fch                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-008h], 003h                 ; f6 46 f8 03
-    je short 02a24h                           ; 74 02
+    je short 02a04h                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-010h], 001h                 ; f6 46 f0 01
-    je short 02a3ch                           ; 74 12
+    je short 02a1ch                           ; 74 12
     inc word [bp-010h]                        ; ff 46 f0
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    jbe short 02a3ch                          ; 76 09
+    jbe short 02a1ch                          ; 76 09
     test byte [bp-008h], 001h                 ; f6 46 f8 01
-    je short 02a3ch                           ; 74 03
+    je short 02a1ch                           ; 74 03
     dec word [bp-008h]                        ; ff 4e f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 02a4dh                          ; 75 0d
+    jne short 02a2dh                          ; 75 0d
     shr word [bp-010h], 002h                  ; c1 6e f0 02
     shr cx, 002h                              ; c1 e9 02
     shr word [bp-008h], 002h                  ; c1 6e f8 02
-    jmp short 02a55h                          ; eb 08
+    jmp short 02a35h                          ; eb 08
     shr word [bp-010h], 1                     ; d1 6e f0
     shr cx, 1                                 ; d1 e9
     shr word [bp-008h], 1                     ; d1 6e f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 02a85h                          ; 75 2c
+    jne short 02a65h                          ; 75 2c
     test cx, cx                               ; 85 c9
-    je short 02a67h                           ; 74 0a
+    je short 02a47h                           ; 74 0a
     mov dx, bx                                ; 89 da
     push eax                                  ; 66 50
     in eax, DX                                ; 66 ed
-    loop 02a61h                               ; e2 fc
+    loop 02a41h                               ; e2 fc
     pop eax                                   ; 66 58
     mov dx, bx                                ; 89 da
@@ -3137,16 +3132,16 @@
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 02aa4h                           ; 74 2b
+    je short 02a84h                           ; 74 2b
     mov cx, ax                                ; 89 c1
     push eax                                  ; 66 50
     in eax, DX                                ; 66 ed
-    loop 02a7dh                               ; e2 fc
+    loop 02a5dh                               ; e2 fc
     pop eax                                   ; 66 58
-    jmp short 02aa4h                          ; eb 1f
+    jmp short 02a84h                          ; eb 1f
     test cx, cx                               ; 85 c9
-    je short 02a8eh                           ; 74 05
+    je short 02a6eh                           ; 74 05
     mov dx, bx                                ; 89 da
     in ax, DX                                 ; ed
-    loop 02a8bh                               ; e2 fd
+    loop 02a6bh                               ; e2 fd
     mov dx, bx                                ; 89 da
     mov cx, word [bp-010h]                    ; 8b 4e f0
@@ -3155,8 +3150,8 @@
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 02aa4h                           ; 74 05
+    je short 02a84h                           ; 74 05
     mov cx, ax                                ; 89 c1
     in ax, DX                                 ; ed
-    loop 02aa1h                               ; e2 fd
+    loop 02a81h                               ; e2 fd
     add word [bp+010h], si                    ; 01 76 10
     xor ax, ax                                ; 31 c0
@@ -3169,14 +3164,14 @@
     mov ax, word [bp-012h]                    ; 8b 46 ee
     mov word [es:si+018h], ax                 ; 26 89 44 18
-    jmp near 02954h                           ; e9 8e fe
+    jmp near 02934h                           ; e9 8e fe
     mov al, dl                                ; 88 d0
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02adah                           ; 74 0c
+    je short 02abah                           ; 74 0c
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    jmp near 02925h                           ; e9 4b fe
+    jmp near 02905h                           ; e9 4b fe
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3189,5 +3184,5 @@
     pop si                                    ; 5e
     retn 0000ch                               ; c2 0c 00
-set_diskette_ret_status_:                    ; 0xf2aed LB 0x15
+set_diskette_ret_status_:                    ; 0xf2acd LB 0x15
     push bx                                   ; 53
     push dx                                   ; 52
@@ -3197,10 +3192,10 @@
     mov dx, strict word 00041h                ; ba 41 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 10 eb
+    call 0160eh                               ; e8 30 eb
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     retn                                      ; c3
-set_diskette_current_cyl_:                   ; 0xf2b02 LB 0x2a
+set_diskette_current_cyl_:                   ; 0xf2ae2 LB 0x2a
     push bx                                   ; 53
     push bp                                   ; 55
@@ -3208,8 +3203,8 @@
     mov bl, al                                ; 88 c3
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 02b17h                          ; 76 0b
+    jbe short 02af7h                          ; 76 0b
     push 001b0h                               ; 68 b0 01
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 d5 ed
+    call 018e9h                               ; e8 f5 ed
     add sp, strict byte 00004h                ; 83 c4 04
     movzx ax, dl                              ; 0f b6 c2
@@ -3218,9 +3213,9 @@
     mov bx, ax                                ; 89 c3
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 e5 ea
+    call 0160eh                               ; e8 05 eb
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-floppy_reset_controller_:                    ; 0xf2b2c LB 0x28
+floppy_reset_controller_:                    ; 0xf2b0c LB 0x28
     push bx                                   ; 53
     push dx                                   ; 52
@@ -3244,10 +3239,10 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02b44h                          ; 75 f4
+    jne short 02b24h                          ; 75 f4
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     retn                                      ; c3
-floppy_prepare_controller_:                  ; 0xf2b54 LB 0x8c
+floppy_prepare_controller_:                  ; 0xf2b34 LB 0x8c
     push bx                                   ; 53
     push cx                                   ; 51
@@ -3257,10 +3252,10 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 9a ea
+    call 01600h                               ; e8 ba ea
     and AL, strict byte 07fh                  ; 24 7f
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 9a ea
+    call 0160eh                               ; e8 ba ea
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
@@ -3270,7 +3265,7 @@
     mov byte [bp-002h], al                    ; 88 46 fe
     test cx, cx                               ; 85 c9
-    je short 02b87h                           ; 74 04
+    je short 02b67h                           ; 74 04
     mov AL, strict byte 020h                  ; b0 20
-    jmp short 02b89h                          ; eb 02
+    jmp short 02b69h                          ; eb 02
     mov AL, strict byte 010h                  ; b0 10
     or AL, strict byte 00ch                   ; 0c 0c
@@ -3281,8 +3276,8 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 0160eh                               ; e8 72 ea
+    call 0160eh                               ; e8 92 ea
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 5b ea
+    call 01600h                               ; e8 7b ea
     shr al, 006h                              ; c0 e8 06
     mov dx, 003f7h                            ; ba f7 03
@@ -3294,13 +3289,13 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02bach                          ; 75 f4
+    jne short 02b8ch                          ; 75 f4
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 02bdbh                          ; 75 1d
+    jne short 02bbbh                          ; 75 1d
     sti                                       ; fb
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 38 ea
+    call 01600h                               ; e8 58 ea
     test AL, strict byte 080h                 ; a8 80
-    je short 02bbfh                           ; 74 f3
+    je short 02b9fh                           ; 74 f3
     and AL, strict byte 07fh                  ; 24 7f
     cli                                       ; fa
@@ -3308,5 +3303,5 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 33 ea
+    call 0160eh                               ; e8 53 ea
     leave                                     ; c9
     pop dx                                    ; 5a
@@ -3314,5 +3309,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-floppy_media_known_:                         ; 0xf2be0 LB 0x40
+floppy_media_known_:                         ; 0xf2bc0 LB 0x40
     push bx                                   ; 53
     push dx                                   ; 52
@@ -3322,23 +3317,23 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 10 ea
+    call 01600h                               ; e8 30 ea
     mov ah, al                                ; 88 c4
     test bx, bx                               ; 85 db
-    je short 02bf8h                           ; 74 02
+    je short 02bd8h                           ; 74 02
     shr al, 1                                 ; d0 e8
     and AL, strict byte 001h                  ; 24 01
-    jne short 02c00h                          ; 75 04
+    jne short 02be0h                          ; 75 04
     xor ah, ah                                ; 30 e4
-    jmp short 02c1ch                          ; eb 1c
+    jmp short 02bfch                          ; eb 1c
     mov dx, 00090h                            ; ba 90 00
     test bx, bx                               ; 85 db
-    je short 02c0ah                           ; 74 03
+    je short 02beah                           ; 74 03
     mov dx, 00091h                            ; ba 91 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 f0 e9
+    call 01600h                               ; e8 10 ea
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
     and AL, strict byte 001h                  ; 24 01
-    je short 02bfch                           ; 74 e3
+    je short 02bdch                           ; 74 e3
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -3346,5 +3341,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-floppy_read_id_:                             ; 0xf2c20 LB 0x49
+floppy_read_id_:                             ; 0xf2c00 LB 0x49
     push bx                                   ; 53
     push dx                                   ; 52
@@ -3352,5 +3347,5 @@
     enter 00008h, 000h                        ; c8 08 00 00
     mov bx, ax                                ; 89 c3
-    call 02b54h                               ; e8 28 ff
+    call 02b34h                               ; e8 28 ff
     mov AL, strict byte 04ah                  ; b0 4a
     mov dx, 003f5h                            ; ba f5 03
@@ -3361,13 +3356,13 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 c1 e9
+    call 01600h                               ; e8 e1 e9
     and AL, strict byte 080h                  ; 24 80
     test al, al                               ; 84 c0
-    je short 02c36h                           ; 74 f1
+    je short 02c16h                           ; 74 f1
     cli                                       ; fa
     xor si, si                                ; 31 f6
-    jmp short 02c4fh                          ; eb 05
+    jmp short 02c2fh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 02c5bh                          ; 7d 0c
+    jnl short 02c3bh                          ; 7d 0c
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -3376,5 +3371,5 @@
     mov byte [bp+si-008h], al                 ; 88 42 f8
     inc si                                    ; 46
-    jmp short 02c4ah                          ; eb ef
+    jmp short 02c2ah                          ; eb ef
     test byte [bp-008h], 0c0h                 ; f6 46 f8 c0
     db  00fh, 094h, 0c0h
@@ -3386,5 +3381,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-floppy_drive_recal_:                         ; 0xf2c69 LB 0x5e
+floppy_drive_recal_:                         ; 0xf2c49 LB 0x5e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -3393,5 +3388,5 @@
     mov bp, sp                                ; 89 e5
     mov bx, ax                                ; 89 c3
-    call 02b54h                               ; e8 e0 fe
+    call 02b34h                               ; e8 e0 fe
     mov AL, strict byte 007h                  ; b0 07
     mov dx, 003f5h                            ; ba f5 03
@@ -3402,18 +3397,18 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 79 e9
+    call 01600h                               ; e8 99 e9
     and AL, strict byte 080h                  ; 24 80
     test al, al                               ; 84 c0
-    je short 02c7eh                           ; 74 f1
+    je short 02c5eh                           ; 74 f1
     cli                                       ; fa
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 69 e9
+    call 01600h                               ; e8 89 e9
     and AL, strict byte 07fh                  ; 24 7f
     test bx, bx                               ; 85 db
-    je short 02ca4h                           ; 74 07
+    je short 02c84h                           ; 74 07
     or AL, strict byte 002h                   ; 0c 02
     mov cx, 00095h                            ; b9 95 00
-    jmp short 02ca9h                          ; eb 05
+    jmp short 02c89h                          ; eb 05
     or AL, strict byte 001h                   ; 0c 01
     mov cx, 00094h                            ; b9 94 00
@@ -3421,9 +3416,9 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 59 e9
+    call 0160eh                               ; e8 79 e9
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 4f e9
+    call 0160eh                               ; e8 6f e9
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -3432,5 +3427,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-floppy_media_sense_:                         ; 0xf2cc7 LB 0xfa
+floppy_media_sense_:                         ; 0xf2ca7 LB 0xfa
     push bx                                   ; 53
     push cx                                   ; 51
@@ -3441,55 +3436,55 @@
     mov bp, sp                                ; 89 e5
     mov di, ax                                ; 89 c7
-    call 02c69h                               ; e8 95 ff
+    call 02c49h                               ; e8 95 ff
     test ax, ax                               ; 85 c0
-    jne short 02cddh                          ; 75 05
+    jne short 02cbdh                          ; 75 05
     xor cx, cx                                ; 31 c9
-    jmp near 02db8h                           ; e9 db 00
+    jmp near 02d98h                           ; e9 db 00
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 79 e9
+    call 0165ch                               ; e8 99 e9
     test di, di                               ; 85 ff
-    jne short 02ceeh                          ; 75 07
+    jne short 02cceh                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 02cf3h                          ; eb 05
+    jmp short 02cd3h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     cmp cl, 001h                              ; 80 f9 01
-    jne short 02d01h                          ; 75 09
+    jne short 02ce1h                          ; 75 09
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 015h                  ; b5 15
     mov si, strict word 00001h                ; be 01 00
-    jmp short 02d4ch                          ; eb 4b
+    jmp short 02d2ch                          ; eb 4b
     cmp cl, 002h                              ; 80 f9 02
-    jne short 02d0ch                          ; 75 06
+    jne short 02cech                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 035h                  ; b5 35
-    jmp short 02cfch                          ; eb f0
+    jmp short 02cdch                          ; eb f0
     cmp cl, 003h                              ; 80 f9 03
-    jne short 02d17h                          ; 75 06
+    jne short 02cf7h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 02cfch                          ; eb e5
+    jmp short 02cdch                          ; eb e5
     cmp cl, 004h                              ; 80 f9 04
-    jne short 02d22h                          ; 75 06
+    jne short 02d02h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 02cfch                          ; eb da
+    jmp short 02cdch                          ; eb da
     cmp cl, 005h                              ; 80 f9 05
-    jne short 02d2dh                          ; 75 06
+    jne short 02d0dh                          ; 75 06
     mov CL, strict byte 0cch                  ; b1 cc
     mov CH, strict byte 0d7h                  ; b5 d7
-    jmp short 02cfch                          ; eb cf
+    jmp short 02cdch                          ; eb cf
     cmp cl, 006h                              ; 80 f9 06
-    jne short 02d38h                          ; 75 06
+    jne short 02d18h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 027h                  ; b5 27
-    jmp short 02cfch                          ; eb c4
+    jmp short 02cdch                          ; eb c4
     cmp cl, 007h                              ; 80 f9 07
-    jne short 02d3fh                          ; 75 02
-    jmp short 02d32h                          ; eb f3
+    jne short 02d1fh                          ; 75 02
+    jmp short 02d12h                          ; eb f3
     cmp cl, 008h                              ; 80 f9 08
-    jne short 02d46h                          ; 75 02
-    jmp short 02d32h                          ; eb ec
+    jne short 02d26h                          ; 75 02
+    jmp short 02d12h                          ; eb ec
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
@@ -3498,32 +3493,32 @@
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 b6 e8
+    call 0160eh                               ; e8 d6 e8
     mov ax, di                                ; 89 f8
-    call 02c20h                               ; e8 c3 fe
+    call 02c00h                               ; e8 c3 fe
     test ax, ax                               ; 85 c0
-    jne short 02d93h                          ; 75 32
+    jne short 02d73h                          ; 75 32
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    je short 02d93h                           ; 74 2a
+    je short 02d73h                           ; 74 2a
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 02d80h                           ; 74 0f
+    je short 02d60h                           ; 74 0f
     mov ah, cl                                ; 88 cc
     and ah, 03fh                              ; 80 e4 3f
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02d8ch                           ; 74 12
+    je short 02d6ch                           ; 74 12
     test al, al                               ; 84 c0
-    je short 02d85h                           ; 74 07
-    jmp short 02d4ch                          ; eb cc
+    je short 02d65h                           ; 74 07
+    jmp short 02d2ch                          ; eb cc
     and cl, 03fh                              ; 80 e1 3f
-    jmp short 02d4ch                          ; eb c7
+    jmp short 02d2ch                          ; eb c7
     mov cl, ah                                ; 88 e1
     or cl, 040h                               ; 80 c9 40
-    jmp short 02d4ch                          ; eb c0
+    jmp short 02d2ch                          ; eb c0
     mov cl, ah                                ; 88 e1
     or cl, 080h                               ; 80 c9 80
-    jmp short 02d4ch                          ; eb b9
+    jmp short 02d2ch                          ; eb b9
     test di, di                               ; 85 ff
     db  00fh, 095h, 0c0h
@@ -3534,9 +3529,9 @@
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 63 e8
+    call 0160eh                               ; e8 83 e8
     movzx bx, ch                              ; 0f b6 dd
     mov dx, di                                ; 89 fa
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 58 e8
+    call 0160eh                               ; e8 78 e8
     mov cx, si                                ; 89 f1
     mov ax, cx                                ; 89 c8
@@ -3548,5 +3543,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-floppy_drive_exists_:                        ; 0xf2dc1 LB 0x33
+floppy_drive_exists_:                        ; 0xf2da1 LB 0x33
     push dx                                   ; 52
     push bp                                   ; 55
@@ -3554,9 +3549,9 @@
     mov dx, ax                                ; 89 c2
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 8f e8
+    call 0165ch                               ; e8 af e8
     test dx, dx                               ; 85 d2
-    jne short 02dd6h                          ; 75 05
+    jne short 02db6h                          ; 75 05
     shr al, 004h                              ; c0 e8 04
-    jmp short 02dd8h                          ; eb 02
+    jmp short 02db8h                          ; eb 02
     and AL, strict byte 00fh                  ; 24 0f
     test al, al                               ; 84 c0
@@ -3567,14 +3562,15 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-    test AL, strict byte 034h                 ; a8 34
-    mov BL, strict byte 034h                  ; b3 34
-    mov bp, 0c434h                            ; bd 34 c4
-    xor AL, strict byte 0cbh                  ; 34 cb
-    xor AL, strict byte 0d2h                  ; 34 d2
-    xor AL, strict byte 0d9h                  ; 34 d9
-    xor AL, strict byte 0e3h                  ; 34 e3
-    xor AL, strict byte 0eah                  ; 34 ea
+    mov byte [si], dh                         ; 88 34
+    xchg bx, ax                               ; 93
+    xor AL, strict byte 09dh                  ; 34 9d
+    xor AL, strict byte 0a4h                  ; 34 a4
+    xor AL, strict byte 0abh                  ; 34 ab
+    xor AL, strict byte 0b2h                  ; 34 b2
+    xor AL, strict byte 0b9h                  ; 34 b9
+    xor AL, strict byte 0c3h                  ; 34 c3
+    xor AL, strict byte 0cah                  ; 34 ca
     db  034h
-_int13_diskette_function:                    ; 0xf2df4 LB 0x799
+_int13_diskette_function:                    ; 0xf2dd4 LB 0x799
     push si                                   ; 56
     push di                                   ; 57
@@ -3587,37 +3583,37 @@
     mov ah, byte [bp+012h]                    ; 8a 66 12
     cmp bl, 008h                              ; 80 fb 08
-    jc short 02e4bh                           ; 72 3a
+    jc short 02e2bh                           ; 72 3a
     mov dx, word [bp+020h]                    ; 8b 56 20
     or dl, 001h                               ; 80 ca 01
     cmp bl, 008h                              ; 80 fb 08
-    jbe near 03429h                           ; 0f 86 0b 06
+    jbe near 03409h                           ; 0f 86 0b 06
     cmp bl, 016h                              ; 80 fb 16
-    jc short 02e41h                           ; 72 1e
+    jc short 02e21h                           ; 72 1e
     or si, 00100h                             ; 81 ce 00 01
     mov cx, si                                ; 89 f1
     cmp bl, 016h                              ; 80 fb 16
-    jbe near 03548h                           ; 0f 86 18 07
+    jbe near 03528h                           ; 0f 86 18 07
     cmp bl, 018h                              ; 80 fb 18
-    je near 0354dh                            ; 0f 84 16 07
+    je near 0352dh                            ; 0f 84 16 07
     cmp bl, 017h                              ; 80 fb 17
-    je near 0354dh                            ; 0f 84 0f 07
-    jmp near 0356ah                           ; e9 29 07
+    je near 0352dh                            ; 0f 84 0f 07
+    jmp near 0354ah                           ; e9 29 07
     cmp bl, 015h                              ; 80 fb 15
-    je near 0350ch                            ; 0f 84 c4 06
-    jmp near 0356ah                           ; e9 1f 07
+    je near 034ech                            ; 0f 84 c4 06
+    jmp near 0354ah                           ; e9 1f 07
     cmp bl, 001h                              ; 80 fb 01
-    jc short 02e65h                           ; 72 15
-    jbe near 02edbh                           ; 0f 86 87 00
+    jc short 02e45h                           ; 72 15
+    jbe near 02ebbh                           ; 0f 86 87 00
     cmp bl, 005h                              ; 80 fb 05
-    je near 03282h                            ; 0f 84 27 04
+    je near 03262h                            ; 0f 84 27 04
     cmp bl, 004h                              ; 80 fb 04
-    jbe near 02ef9h                           ; 0f 86 97 00
-    jmp near 0356ah                           ; e9 05 07
+    jbe near 02ed9h                           ; 0f 86 97 00
+    jmp near 0354ah                           ; e9 05 07
     test bl, bl                               ; 84 db
-    jne near 0356ah                           ; 0f 85 ff 06
+    jne near 0354ah                           ; 0f 85 ff 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 02e89h                          ; 76 14
+    jbe short 02e69h                          ; 76 14
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -3625,17 +3621,17 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, strict word 00001h                ; b8 01 00
-    call 02aedh                               ; e8 67 fc
-    jmp near 03254h                           ; e9 cb 03
+    call 02acdh                               ; e8 67 fc
+    jmp near 03234h                           ; e9 cb 03
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 cd e7
+    call 0165ch                               ; e8 ed e7
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 02e9ch                          ; 75 07
+    jne short 02e7ch                          ; 75 07
     mov bl, al                                ; 88 c3
     shr bl, 004h                              ; c0 eb 04
-    jmp short 02ea1h                          ; eb 05
+    jmp short 02e81h                          ; eb 05
     mov bl, al                                ; 88 c3
     and bl, 00fh                              ; 80 e3 0f
     test bl, bl                               ; 84 db
-    jne short 02eb5h                          ; 75 10
+    jne short 02e95h                          ; 75 10
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -3643,17 +3639,17 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, 00080h                            ; b8 80 00
-    jmp short 02e83h                          ; eb ce
+    jmp short 02e63h                          ; eb ce
     xor bx, bx                                ; 31 db
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 4e e7
+    call 0160eh                               ; e8 6e e7
     xor al, al                                ; 30 c0
     mov byte [bp+01bh], al                    ; 88 46 1b
     xor ah, ah                                ; 30 e4
-    call 02aedh                               ; e8 23 fc
+    call 02acdh                               ; e8 23 fc
     and byte [bp+020h], 0feh                  ; 80 66 20 fe
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     xor dx, dx                                ; 31 d2
-    call 02b02h                               ; e8 2b fc
+    call 02ae2h                               ; e8 2b fc
     leave                                     ; c9
     pop di                                    ; 5f
@@ -3663,5 +3659,5 @@
     mov dx, 00441h                            ; ba 41 04
     xor ax, ax                                ; 31 c0
-    call 01600h                               ; e8 19 e7
+    call 01600h                               ; e8 39 e7
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
@@ -3669,6 +3665,6 @@
     mov word [bp+01ah], si                    ; 89 76 1a
     test al, al                               ; 84 c0
-    je short 02ed7h                           ; 74 e1
-    jmp near 03254h                           ; e9 5b 03
+    je short 02eb7h                           ; 74 e1
+    jmp near 03234h                           ; e9 5b 03
     mov al, byte [bp+01ah]                    ; 8a 46 1a
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -3683,20 +3679,20 @@
     mov byte [bp-00ah], ah                    ; 88 66 f6
     cmp ah, 001h                              ; 80 fc 01
-    jnbe short 02f2fh                         ; 77 10
+    jnbe short 02f0fh                         ; 77 10
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 02f2fh                         ; 77 0b
+    jnbe short 02f0fh                         ; 77 0b
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test al, al                               ; 84 c0
-    je short 02f2fh                           ; 74 04
+    je short 02f0fh                           ; 74 04
     cmp AL, strict byte 048h                  ; 3c 48
-    jbe short 02f58h                          ; 76 29
-    mov bx, 00cd6h                            ; bb d6 0c
+    jbe short 02f38h                          ; 76 29
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 74 e9
+    call 018aeh                               ; e8 94 e9
     push 001d5h                               ; 68 d5 01
     push 001edh                               ; 68 ed 01
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 a4 e9
+    call 018e9h                               ; e8 c4 e9
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp+01ah]                    ; 8b 46 1a
@@ -3705,18 +3701,18 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 02fc9h                          ; eb 71
+    jmp short 02fa9h                          ; eb 71
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 02dc1h                               ; e8 62 fe
+    call 02da1h                               ; e8 62 fe
     test ax, ax                               ; 85 c0
-    je near 03062h                            ; 0f 84 fd 00
+    je near 03042h                            ; 0f 84 fd 00
     movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
     mov ax, dx                                ; 89 d0
-    call 02be0h                               ; e8 72 fc
+    call 02bc0h                               ; e8 72 fc
     test ax, ax                               ; 85 c0
-    jne short 02f8bh                          ; 75 19
+    jne short 02f6bh                          ; 75 19
     mov ax, dx                                ; 89 d0
-    call 02cc7h                               ; e8 50 fd
+    call 02ca7h                               ; e8 50 fd
     test ax, ax                               ; 85 c0
-    jne short 02f8bh                          ; 75 10
+    jne short 02f6bh                          ; 75 10
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -3724,7 +3720,7 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp short 02fc9h                          ; eb 3e
+    jmp short 02fa9h                          ; eb 3e
     cmp ch, 002h                              ; 80 fd 02
-    jne near 03120h                           ; 0f 85 8e 01
+    jne near 03100h                           ; 0f 85 8e 01
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     shr dx, 00ch                              ; c1 ea 0c
@@ -3735,5 +3731,5 @@
     add bx, cx                                ; 01 cb
     cmp bx, cx                                ; 39 cb
-    jnc short 02fabh                          ; 73 02
+    jnc short 02f8bh                          ; 73 02
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
@@ -3744,5 +3740,5 @@
     add dx, cx                                ; 01 ca
     cmp dx, bx                                ; 39 da
-    jnc short 02fd3h                          ; 73 18
+    jnc short 02fb3h                          ; 73 18
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -3750,7 +3746,7 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, strict word 00009h                ; b8 09 00
-    call 02aedh                               ; e8 21 fb
+    call 02acdh                               ; e8 21 fb
     mov byte [bp+01ah], 000h                  ; c6 46 1a 00
-    jmp near 03254h                           ; e9 81 02
+    jmp near 03234h                           ; e9 81 02
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -3785,5 +3781,5 @@
     out DX, AL                                ; ee
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 02b54h                               ; e8 3d fb
+    call 02b34h                               ; e8 3d fb
     mov AL, strict byte 0e6h                  ; b0 e6
     mov dx, 003f5h                            ; ba f5 03
@@ -3816,8 +3812,8 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 01600h                               ; e8 a5 e5
+    call 01600h                               ; e8 c5 e5
     test al, al                               ; 84 c0
-    jne short 03073h                          ; 75 14
-    call 02b2ch                               ; e8 ca fa
+    jne short 03053h                          ; 75 14
+    call 02b0ch                               ; e8 ca fa
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -3825,20 +3821,20 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, 00080h                            ; b8 80 00
-    jmp near 02fc9h                           ; e9 56 ff
+    jmp near 02fa9h                           ; e9 56 ff
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 84 e5
+    call 01600h                               ; e8 a4 e5
     and AL, strict byte 080h                  ; 24 80
     test al, al                               ; 84 c0
-    je short 03053h                           ; 74 d1
+    je short 03033h                           ; 74 d1
     cli                                       ; fa
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 74 e5
+    call 01600h                               ; e8 94 e5
     and AL, strict byte 07fh                  ; 24 7f
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 74 e5
+    call 0160eh                               ; e8 94 e5
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -3847,14 +3843,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 030b4h                           ; 74 0e
+    je short 03094h                           ; 74 0e
     push 001d5h                               ; 68 d5 01
     push 00208h                               ; 68 08 02
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 38 e8
+    call 018e9h                               ; e8 58 e8
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 030bdh                          ; eb 05
+    jmp short 0309dh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 030d5h                          ; 7d 18
+    jnl short 030b5h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -3865,9 +3861,9 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 3c e5
+    call 0160eh                               ; e8 5c e5
     inc si                                    ; 46
-    jmp short 030b8h                          ; eb e3
+    jmp short 03098h                          ; eb e3
     test byte [bp-012h], 0c0h                 ; f6 46 ee c0
-    je short 030ech                           ; 74 11
+    je short 030cch                           ; 74 11
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -3875,5 +3871,5 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, strict word 00020h                ; b8 20 00
-    jmp near 02fc9h                           ; e9 dd fe
+    jmp near 02fa9h                           ; e9 dd fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     sal ax, 009h                              ; c1 e0 09
@@ -3893,10 +3889,10 @@
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 02b02h                               ; e8 ed f9
+    call 02ae2h                               ; e8 ed f9
     mov byte [bp+01bh], 000h                  ; c6 46 1b 00
     and byte [bp+020h], 0feh                  ; 80 66 20 fe
-    jmp near 02ed7h                           ; e9 b7 fd
+    jmp near 02eb7h                           ; e9 b7 fd
     cmp ch, 003h                              ; 80 fd 03
-    jne near 0326ch                           ; 0f 85 45 01
+    jne near 0324ch                           ; 0f 85 45 01
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     shr dx, 00ch                              ; c1 ea 0c
@@ -3907,5 +3903,5 @@
     add bx, cx                                ; 01 cb
     cmp bx, cx                                ; 39 cb
-    jnc short 03140h                          ; 73 02
+    jnc short 03120h                          ; 73 02
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
@@ -3916,5 +3912,5 @@
     add dx, cx                                ; 01 ca
     cmp dx, bx                                ; 39 da
-    jc near 02fbbh                            ; 0f 82 69 fe
+    jc near 02f9bh                            ; 0f 82 69 fe
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -3948,5 +3944,5 @@
     out DX, AL                                ; ee
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 02b54h                               ; e8 bf f9
+    call 02b34h                               ; e8 bf f9
     mov AL, strict byte 0c5h                  ; b0 c5
     mov dx, 003f5h                            ; ba f5 03
@@ -3979,22 +3975,22 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 01600h                               ; e8 27 e4
+    call 01600h                               ; e8 47 e4
     test al, al                               ; 84 c0
-    je near 0305fh                            ; 0f 84 80 fe
+    je near 0303fh                            ; 0f 84 80 fe
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 18 e4
+    call 01600h                               ; e8 38 e4
     and AL, strict byte 080h                  ; 24 80
     test al, al                               ; 84 c0
-    je short 031d1h                           ; 74 e3
+    je short 031b1h                           ; 74 e3
     cli                                       ; fa
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 08 e4
+    call 01600h                               ; e8 28 e4
     and AL, strict byte 07fh                  ; 24 7f
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 08 e4
+    call 0160eh                               ; e8 28 e4
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -4003,14 +3999,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03220h                           ; 74 0e
+    je short 03200h                           ; 74 0e
     push 001d5h                               ; 68 d5 01
     push 00208h                               ; 68 08 02
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 cc e6
+    call 018e9h                               ; e8 ec e6
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 03229h                          ; eb 05
+    jmp short 03209h                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03241h                          ; 7d 18
+    jnl short 03221h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -4021,26 +4017,26 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 d0 e3
+    call 0160eh                               ; e8 f0 e3
     inc si                                    ; 46
-    jmp short 03224h                          ; eb e3
+    jmp short 03204h                          ; eb e3
     test byte [bp-012h], 0c0h                 ; f6 46 ee c0
-    je near 0310ah                            ; 0f 84 c1 fe
+    je near 030eah                            ; 0f 84 c1 fe
     test byte [bp-011h], 002h                 ; f6 46 ef 02
-    je short 0325bh                           ; 74 0c
+    je short 0323bh                           ; 74 0c
     mov word [bp+01ah], 00300h                ; c7 46 1a 00 03
     or byte [bp+020h], 001h                   ; 80 4e 20 01
-    jmp near 02ed7h                           ; e9 7c fc
+    jmp near 02eb7h                           ; e9 7c fc
     push 001d5h                               ; 68 d5 01
     push 0021ch                               ; 68 1c 02
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 83 e6
+    call 018e9h                               ; e8 a3 e6
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 0310ah                           ; e9 9e fe
+    jmp near 030eah                           ; e9 9e fe
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 02b02h                               ; e8 8b f8
+    call 02ae2h                               ; e8 8b f8
     and byte [bp+020h], 0feh                  ; 80 66 20 fe
     mov byte [bp+01bh], 000h                  ; c6 46 1b 00
-    jmp near 02ed7h                           ; e9 55 fc
+    jmp near 02eb7h                           ; e9 55 fc
     mov al, byte [bp+01ah]                    ; 8a 46 1a
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -4053,14 +4049,14 @@
     mov byte [bp-00ah], bl                    ; 88 5e f6
     cmp bl, 001h                              ; 80 fb 01
-    jnbe short 032b6h                         ; 77 14
+    jnbe short 03296h                         ; 77 14
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 032b6h                         ; 77 10
+    jnbe short 03296h                         ; 77 10
     cmp dl, 04fh                              ; 80 fa 4f
-    jnbe short 032b6h                         ; 77 0b
+    jnbe short 03296h                         ; 77 0b
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test al, al                               ; 84 c0
-    je short 032b6h                           ; 74 04
+    je short 03296h                           ; 74 04
     cmp AL, strict byte 012h                  ; 3c 12
-    jbe short 032cbh                          ; 76 15
+    jbe short 032abh                          ; 76 15
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -4068,19 +4064,19 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, strict word 00001h                ; b8 01 00
-    call 02aedh                               ; e8 26 f8
+    call 02acdh                               ; e8 26 f8
     or byte [bp+020h], 001h                   ; 80 4e 20 01
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 02dc1h                               ; e8 ef fa
+    call 02da1h                               ; e8 ef fa
     test ax, ax                               ; 85 c0
-    je near 02ea5h                            ; 0f 84 cd fb
+    je near 02e85h                            ; 0f 84 cd fb
     movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
     mov ax, dx                                ; 89 d0
-    call 02be0h                               ; e8 ff f8
+    call 02bc0h                               ; e8 ff f8
     test ax, ax                               ; 85 c0
-    jne short 032f0h                          ; 75 0b
+    jne short 032d0h                          ; 75 0b
     mov ax, dx                                ; 89 d0
-    call 02cc7h                               ; e8 dd f9
+    call 02ca7h                               ; e8 dd f9
     test ax, ax                               ; 85 c0
-    je near 02f7bh                            ; 0f 84 8b fc
+    je near 02f5bh                            ; 0f 84 8b fc
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     shr dx, 00ch                              ; c1 ea 0c
@@ -4091,5 +4087,5 @@
     add bx, cx                                ; 01 cb
     cmp bx, cx                                ; 39 cb
-    jnc short 03309h                          ; 73 02
+    jnc short 032e9h                          ; 73 02
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
@@ -4100,5 +4096,5 @@
     add dx, cx                                ; 01 ca
     cmp dx, bx                                ; 39 da
-    jc near 02fbbh                            ; 0f 82 a0 fc
+    jc near 02f9bh                            ; 0f 82 a0 fc
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -4132,5 +4128,5 @@
     out DX, AL                                ; ee
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 02b54h                               ; e8 f6 f7
+    call 02b34h                               ; e8 f6 f7
     mov AL, strict byte 04dh                  ; b0 4d
     mov dx, 003f5h                            ; ba f5 03
@@ -4153,24 +4149,24 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 01600h                               ; e8 75 e2
+    call 01600h                               ; e8 95 e2
     test al, al                               ; 84 c0
-    jne short 03395h                          ; 75 06
-    call 02b2ch                               ; e8 9a f7
-    jmp near 02ea5h                           ; e9 10 fb
+    jne short 03375h                          ; 75 06
+    call 02b0ch                               ; e8 9a f7
+    jmp near 02e85h                           ; e9 10 fb
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 62 e2
+    call 01600h                               ; e8 82 e2
     and AL, strict byte 080h                  ; 24 80
     test al, al                               ; 84 c0
-    je short 03383h                           ; 74 df
+    je short 03363h                           ; 74 df
     cli                                       ; fa
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 52 e2
+    call 01600h                               ; e8 72 e2
     and AL, strict byte 07fh                  ; 24 7f
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 52 e2
+    call 0160eh                               ; e8 72 e2
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -4179,14 +4175,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 033d6h                           ; 74 0e
+    je short 033b6h                           ; 74 0e
     push 001d5h                               ; 68 d5 01
     push 00208h                               ; 68 08 02
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 16 e5
+    call 018e9h                               ; e8 36 e5
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 033dfh                          ; eb 05
+    jmp short 033bfh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 033f7h                          ; 7d 18
+    jnl short 033d7h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -4197,27 +4193,27 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 1a e2
+    call 0160eh                               ; e8 3a e2
     inc si                                    ; 46
-    jmp short 033dah                          ; eb e3
+    jmp short 033bah                          ; eb e3
     test byte [bp-012h], 0c0h                 ; f6 46 ee c0
-    je short 03413h                           ; 74 16
+    je short 033f3h                           ; 74 16
     test byte [bp-011h], 002h                 ; f6 46 ef 02
-    jne near 0324fh                           ; 0f 85 4a fe
+    jne near 0322fh                           ; 0f 85 4a fe
     push 001d5h                               ; 68 d5 01
     push 0022ch                               ; 68 2c 02
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 d9 e4
+    call 018e9h                               ; e8 f9 e4
     add sp, strict byte 00006h                ; 83 c4 06
     xor al, al                                ; 30 c0
     mov byte [bp+01bh], al                    ; 88 46 1b
     xor ah, ah                                ; 30 e4
-    call 02aedh                               ; e8 d0 f6
+    call 02acdh                               ; e8 d0 f6
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     xor dx, dx                                ; 31 d2
-    call 02b02h                               ; e8 dc f6
-    jmp near 03119h                           ; e9 f0 fc
+    call 02ae2h                               ; e8 dc f6
+    jmp near 030f9h                           ; e9 f0 fc
     mov byte [bp-00ah], ah                    ; 88 66 f6
     cmp ah, 001h                              ; 80 fc 01
-    jbe short 03451h                          ; 76 20
+    jbe short 03431h                          ; 76 20
     xor ax, ax                                ; 31 c0
     mov word [bp+01ah], ax                    ; 89 46 1a
@@ -4230,20 +4226,20 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+020h], dx                    ; 89 56 20
-    jmp near 02ed7h                           ; e9 86 fa
+    jmp near 02eb7h                           ; e9 86 fa
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 05 e2
+    call 0165ch                               ; e8 25 e2
     mov bl, al                                ; 88 c3
     xor cl, cl                                ; 30 c9
     test AL, strict byte 0f0h                 ; a8 f0
-    je short 03461h                           ; 74 02
+    je short 03441h                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     test bl, 00fh                             ; f6 c3 0f
-    je short 03468h                           ; 74 02
+    je short 03448h                           ; 74 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 03473h                          ; 75 05
+    jne short 03453h                          ; 75 05
     shr bl, 004h                              ; c0 eb 04
-    jmp short 03476h                          ; eb 03
+    jmp short 03456h                          ; eb 03
     and bl, 00fh                              ; 80 e3 0f
     xor al, al                                ; 30 c0
@@ -4259,5 +4255,5 @@
     mov word [bp+016h], dx                    ; 89 56 16
     cmp bl, 008h                              ; 80 fb 08
-    jnbe short 034f1h                         ; 77 59
+    jnbe short 034d1h                         ; 77 59
     add si, si                                ; 01 f6
     mov ax, dx                                ; 89 d0
@@ -4265,46 +4261,46 @@
     mov bx, ax                                ; 89 c3
     or bh, 001h                               ; 80 cf 01
-    jmp word [cs:si+02de2h]                   ; 2e ff a4 e2 2d
+    jmp word [cs:si+02dc2h]                   ; 2e ff a4 c2 2d
     mov word [bp+018h], strict word 00000h    ; c7 46 18 00 00
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp short 034ffh                          ; eb 4c
+    jmp short 034dfh                          ; eb 4c
     mov word [bp+018h], 02709h                ; c7 46 18 09 27
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp short 034ffh                          ; eb 42
+    jmp short 034dfh                          ; eb 42
     mov word [bp+018h], 04f0fh                ; c7 46 18 0f 4f
-    jmp short 034b8h                          ; eb f4
+    jmp short 03498h                          ; eb f4
     mov word [bp+018h], 04f09h                ; c7 46 18 09 4f
-    jmp short 034b8h                          ; eb ed
+    jmp short 03498h                          ; eb ed
     mov word [bp+018h], 04f12h                ; c7 46 18 12 4f
-    jmp short 034b8h                          ; eb e6
+    jmp short 03498h                          ; eb e6
     mov word [bp+018h], 04f24h                ; c7 46 18 24 4f
-    jmp short 034b8h                          ; eb df
+    jmp short 03498h                          ; eb df
     mov word [bp+018h], 02708h                ; c7 46 18 08 27
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 034ffh                          ; eb 1c
+    jmp short 034dfh                          ; eb 1c
     mov word [bp+018h], 02709h                ; c7 46 18 09 27
-    jmp short 034deh                          ; eb f4
+    jmp short 034beh                          ; eb f4
     mov word [bp+018h], 02708h                ; c7 46 18 08 27
-    jmp short 034b8h                          ; eb c7
+    jmp short 03498h                          ; eb c7
     push 001d5h                               ; 68 d5 01
     push 0023dh                               ; 68 3d 02
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 ed e3
+    call 018e9h                               ; e8 0d e4
     add sp, strict byte 00006h                ; 83 c4 06
     mov word [bp+00ah], 0f000h                ; c7 46 0a 00 f0
     mov word [bp+00ch], 0efc7h                ; c7 46 0c c7 ef
-    jmp near 03119h                           ; e9 0d fc
+    jmp near 030f9h                           ; e9 0d fc
     mov byte [bp-00ah], ah                    ; 88 66 f6
     cmp ah, 001h                              ; 80 fc 01
-    jbe short 0351ah                          ; 76 06
+    jbe short 034fah                          ; 76 06
     mov word [bp+01ah], si                    ; 89 76 1a
-    jmp near 0344bh                           ; e9 31 ff
+    jmp near 0342bh                           ; e9 31 ff
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 3c e1
+    call 0165ch                               ; e8 5c e1
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 0352dh                          ; 75 07
+    jne short 0350dh                          ; 75 07
     mov bl, al                                ; 88 c3
     shr bl, 004h                              ; c0 eb 04
-    jmp short 03532h                          ; eb 05
+    jmp short 03512h                          ; eb 05
     mov bl, al                                ; 88 c3
     and bl, 00fh                              ; 80 e3 0f
@@ -4313,14 +4309,14 @@
     xor ah, ah                                ; 30 e4
     test bl, bl                               ; 84 db
-    je short 03542h                           ; 74 03
+    je short 03522h                           ; 74 03
     or ah, 001h                               ; 80 cc 01
     mov word [bp+01ah], ax                    ; 89 46 1a
-    jmp near 02ed7h                           ; e9 8f f9
+    jmp near 02eb7h                           ; e9 8f f9
     cmp ah, 001h                              ; 80 fc 01
-    jbe short 03559h                          ; 76 0c
+    jbe short 03539h                          ; 76 0c
     mov word [bp+01ah], si                    ; 89 76 1a
     mov ax, strict word 00001h                ; b8 01 00
-    call 02aedh                               ; e8 97 f5
-    jmp near 0344bh                           ; e9 f2 fe
+    call 02acdh                               ; e8 97 f5
+    jmp near 0342bh                           ; e9 f2 fe
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -4328,9 +4324,9 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 02e83h                           ; e9 19 f9
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp near 02e63h                           ; e9 19 f9
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 39 e3
+    call 018aeh                               ; e8 59 e3
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     shr ax, 008h                              ; c1 e8 08
@@ -4339,39 +4335,39 @@
     push 00252h                               ; 68 52 02
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 62 e3
+    call 018e9h                               ; e8 82 e3
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 02e75h                           ; e9 e8 f8
-_cdemu_init:                                 ; 0xf358d LB 0x16
+    jmp near 02e55h                           ; e9 e8 f8
+_cdemu_init:                                 ; 0xf356d LB 0x16
     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 0161ch                               ; e8 83 e0
+    call 0161ch                               ; e8 a3 e0
     xor bx, bx                                ; 31 db
     mov dx, 00322h                            ; ba 22 03
-    call 0160eh                               ; e8 6d e0
+    call 0160eh                               ; e8 8d e0
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_isactive:                             ; 0xf35a3 LB 0x14
+_cdemu_isactive:                             ; 0xf3583 LB 0x14
     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 0161ch                               ; e8 6d e0
+    call 0161ch                               ; e8 8d e0
     mov dx, 00322h                            ; ba 22 03
-    call 01600h                               ; e8 4b e0
+    call 01600h                               ; e8 6b e0
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_emulated_drive:                       ; 0xf35b7 LB 0x14
+_cdemu_emulated_drive:                       ; 0xf3597 LB 0x14
     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 0161ch                               ; e8 59 e0
+    call 0161ch                               ; e8 79 e0
     mov dx, 00324h                            ; ba 24 03
-    call 01600h                               ; e8 37 e0
+    call 01600h                               ; e8 57 e0
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_eltorito:                             ; 0xf35cb LB 0x17d
+_int13_eltorito:                             ; 0xf35ab LB 0x17d
     push si                                   ; 56
     push di                                   ; 57
@@ -4380,5 +4376,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 43 e0
+    call 0161ch                               ; e8 63 e0
     mov si, 00322h                            ; be 22 03
     mov di, ax                                ; 89 c7
@@ -4386,22 +4382,22 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 0004bh                ; 3d 4b 00
-    jc short 035f3h                           ; 72 0a
-    jbe short 0360eh                          ; 76 23
+    jc short 035d3h                           ; 72 0a
+    jbe short 035eeh                          ; 76 23
     cmp ax, strict word 0004dh                ; 3d 4d 00
-    jbe short 035fah                          ; 76 0a
-    jmp near 0370ah                           ; e9 17 01
+    jbe short 035dah                          ; 76 0a
+    jmp near 036eah                           ; e9 17 01
     cmp ax, strict word 0004ah                ; 3d 4a 00
-    jne near 0370ah                           ; 0f 85 10 01
+    jne near 036eah                           ; 0f 85 10 01
     push word [bp+01ah]                       ; ff 76 1a
     push 0026ch                               ; 68 6c 02
     push 0027bh                               ; 68 7b 02
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 e1 e2
+    call 018e9h                               ; e8 01 e3
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 03727h                           ; e9 19 01
+    jmp near 03707h                           ; e9 19 01
     mov dx, word [bp+00eh]                    ; 8b 56 0e
     mov ax, word [bp+008h]                    ; 8b 46 08
     mov bx, strict word 00013h                ; bb 13 00
-    call 0160eh                               ; e8 f4 df
+    call 0160eh                               ; e8 14 e0
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+001h]               ; 26 0f b6 5c 01
@@ -4409,5 +4405,5 @@
     inc dx                                    ; 42
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0160eh                               ; e8 e3 df
+    call 0160eh                               ; e8 03 e0
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+002h]               ; 26 0f b6 5c 02
@@ -4416,5 +4412,5 @@
     inc dx                                    ; 42
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0160eh                               ; e8 d1 df
+    call 0160eh                               ; e8 f1 df
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+003h]               ; 26 0f b6 5c 03
@@ -4422,5 +4418,5 @@
     add dx, strict byte 00003h                ; 83 c2 03
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0160eh                               ; e8 be df
+    call 0160eh                               ; e8 de df
     mov es, di                                ; 8e c7
     mov bx, word [es:si+008h]                 ; 26 8b 5c 08
@@ -4429,5 +4425,5 @@
     add dx, strict byte 00004h                ; 83 c2 04
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0164ah                               ; e8 e4 df
+    call 0164ah                               ; e8 04 e0
     mov es, di                                ; 8e c7
     mov bx, word [es:si+004h]                 ; 26 8b 5c 04
@@ -4435,5 +4431,5 @@
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0162ah                               ; e8 b2 df
+    call 0162ah                               ; e8 d2 df
     mov es, di                                ; 8e c7
     mov bx, word [es:si+006h]                 ; 26 8b 5c 06
@@ -4441,5 +4437,5 @@
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0162ah                               ; e8 a0 df
+    call 0162ah                               ; e8 c0 df
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
@@ -4447,5 +4443,5 @@
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0162ah                               ; e8 8e df
+    call 0162ah                               ; e8 ae df
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
@@ -4453,5 +4449,5 @@
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0162ah                               ; e8 7c df
+    call 0162ah                               ; e8 9c df
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+012h]               ; 26 0f b6 5c 12
@@ -4459,5 +4455,5 @@
     add dx, strict byte 00010h                ; 83 c2 10
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0160eh                               ; e8 4d df
+    call 0160eh                               ; e8 6d df
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+014h]               ; 26 0f b6 5c 14
@@ -4465,5 +4461,5 @@
     add dx, strict byte 00011h                ; 83 c2 11
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0160eh                               ; e8 3a df
+    call 0160eh                               ; e8 5a df
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+010h]               ; 26 0f b6 5c 10
@@ -4471,7 +4467,7 @@
     add dx, strict byte 00012h                ; 83 c2 12
     mov ax, word [bp+008h]                    ; 8b 46 08
-    call 0160eh                               ; e8 27 df
+    call 0160eh                               ; e8 47 df
     test byte [bp+01ah], 0ffh                 ; f6 46 1a ff
-    jne short 036f3h                          ; 75 06
+    jne short 036d3h                          ; 75 06
     mov es, di                                ; 8e c7
     mov byte [es:si], 000h                    ; 26 c6 04 00
@@ -4480,5 +4476,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 0c df
+    call 0160eh                               ; e8 2c df
     and byte [bp+020h], 0feh                  ; 80 66 20 fe
     pop bp                                    ; 5d
@@ -4486,8 +4482,8 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 99 e1
+    call 018aeh                               ; e8 b9 e1
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     shr ax, 008h                              ; c1 e8 08
@@ -4496,5 +4492,5 @@
     push 002a1h                               ; 68 a1 02
     push strict byte 00004h                   ; 6a 04
-    jmp near 03605h                           ; e9 de fe
+    jmp near 035e5h                           ; e9 de fe
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
@@ -4506,8 +4502,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 cc de
+    call 0160eh                               ; e8 ec de
     or byte [bp+020h], 001h                   ; 80 4e 20 01
-    jmp short 03706h                          ; eb be
-device_is_cdrom_:                            ; 0xf3748 LB 0x32
+    jmp short 036e6h                          ; eb be
+device_is_cdrom_:                            ; 0xf3728 LB 0x32
     push bx                                   ; 53
     push dx                                   ; 52
@@ -4517,9 +4513,9 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 c4 de
+    call 0161ch                               ; e8 e4 de
     cmp bl, 010h                              ; 80 fb 10
-    jc short 03761h                           ; 72 04
+    jc short 03741h                           ; 72 04
     xor ax, ax                                ; 31 c0
-    jmp short 03776h                          ; eb 15
+    jmp short 03756h                          ; eb 15
     xor bh, bh                                ; 30 ff
     imul bx, bx, strict byte 00018h           ; 6b db 18
@@ -4527,5 +4523,5 @@
     add bx, 00122h                            ; 81 c3 22 01
     cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
-    jne short 0375dh                          ; 75 ea
+    jne short 0373dh                          ; 75 ea
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -4533,5 +4529,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf377a LB 0x42f
+cdrom_boot_:                                 ; 0xf375a LB 0x4ac
     push bx                                   ; 53
     push cx                                   ; 51
@@ -4542,28 +4538,28 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 90 de
-    mov word [bp-00ch], ax                    ; 89 46 f4
+    call 0161ch                               ; e8 b0 de
+    mov word [bp-00eh], ax                    ; 89 46 f2
     mov si, 00322h                            ; be 22 03
-    mov word [bp-00eh], ax                    ; 89 46 f2
-    mov word [bp-008h], 00122h                ; c7 46 f8 22 01
     mov word [bp-006h], ax                    ; 89 46 fa
+    mov word [bp-00ch], 00122h                ; c7 46 f4 22 01
+    mov word [bp-008h], ax                    ; 89 46 f8
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
-    jmp short 037ach                          ; eb 09
+    jmp short 0378ch                          ; eb 09
     inc byte [bp-004h]                        ; fe 46 fc
     cmp byte [bp-004h], 010h                  ; 80 7e fc 10
-    jnc short 037b7h                          ; 73 0b
+    jnc short 03797h                          ; 73 0b
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
-    call 03748h                               ; e8 95 ff
+    call 03728h                               ; e8 95 ff
     test ax, ax                               ; 85 c0
-    je short 037a3h                           ; 74 ec
+    je short 03783h                           ; 74 ec
     cmp byte [bp-004h], 010h                  ; 80 7e fc 10
-    jc short 037c3h                           ; 72 06
+    jc short 037a3h                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 03b49h                           ; e9 86 03
+    jmp near 03ba6h                           ; e9 03 04
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-01ah]                         ; 8d 46 e6
-    call 08caah                               ; e8 da 54
+    call 0902ah                               ; e8 7a 58
     mov word [bp-01ah], strict word 00028h    ; c7 46 e6 28 00
     mov ax, strict word 00011h                ; b8 11 00
@@ -4577,9 +4573,12 @@
     xchg ah, al                               ; 86 c4
     mov word [bp-013h], ax                    ; 89 46 ed
-    les bx, [bp-008h]                         ; c4 5e f8
+    mov es, [bp-008h]                         ; 8e 46 f8
+    mov bx, word [bp-00ch]                    ; 8b 5e f4
     db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 008h
     ; mov dword [es:bx+00ah], strict dword 008000001h ; 66 26 c7 47 0a 01 00 00 08
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
-    jmp short 0382ah                          ; eb 2b
+    jmp short 03831h                          ; eb 4f
+    cmp AL, strict byte 008h                  ; 3c 08
+    jc short 03806h                           ; 72 20
     lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
     push SS                                   ; 16
@@ -4593,12 +4592,6 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 0280ah                               ; e8 ed ef
-    test ax, ax                               ; 85 c0
-    je short 03850h                           ; 74 2f
-    inc byte [bp-002h]                        ; fe 46 fe
-    cmp byte [bp-002h], 004h                  ; 80 7e fe 04
-    jnbe short 03850h                         ; 77 26
-    cmp byte [bp-004h], 008h                  ; 80 7e fc 08
-    jbe short 037ffh                          ; 76 cf
+    call 07626h                               ; e8 22 3e
+    jmp short 03824h                          ; eb 1e
     lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
     push SS                                   ; 16
@@ -4612,34 +4605,54 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f53h                               ; e8 05 47
-    jmp short 0381dh                          ; eb cd
+    call 027eah                               ; e8 c6 ef
     test ax, ax                               ; 85 c0
-    je short 0385ah                           ; 74 06
+    je short 03858h                           ; 74 30
+    inc byte [bp-002h]                        ; fe 46 fe
+    cmp byte [bp-002h], 004h                  ; 80 7e fe 04
+    jnbe short 03858h                         ; 77 27
+    mov al, byte [bp-004h]                    ; 8a 46 fc
+    cmp AL, strict byte 00ch                  ; 3c 0c
+    jc short 037e2h                           ; 72 aa
+    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
+    push SS                                   ; 16
+    push dx                                   ; 52
+    push strict byte 00001h                   ; 6a 01
+    push strict byte 00000h                   ; 6a 00
+    push 00800h                               ; 68 00 08
+    push strict byte 00000h                   ; 6a 00
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    mov cx, ss                                ; 8c d1
+    lea bx, [bp-01ah]                         ; 8d 5e e6
+    mov dx, strict word 0000ch                ; ba 0c 00
+    call 082c2h                               ; e8 6c 4a
+    jmp short 03824h                          ; eb cc
+    test ax, ax                               ; 85 c0
+    je short 03862h                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 03b49h                           ; e9 ef 02
+    jmp near 03ba6h                           ; e9 44 03
     cmp byte [bp-0081ah], 000h                ; 80 be e6 f7 00
-    je short 03867h                           ; 74 06
+    je short 0386fh                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 03b49h                           ; e9 e2 02
+    jmp near 03ba6h                           ; e9 37 03
     xor di, di                                ; 31 ff
-    jmp short 03871h                          ; eb 06
+    jmp short 03879h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00005h                ; 83 ff 05
-    jnc short 03881h                          ; 73 10
+    jnc short 03889h                          ; 73 10
     mov al, byte [bp+di-00819h]               ; 8a 83 e7 f7
-    cmp al, byte [di+00cdeh]                  ; 3a 85 de 0c
-    je short 0386bh                           ; 74 f0
+    cmp al, byte [di+00cf4h]                  ; 3a 85 f4 0c
+    je short 03873h                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 03b49h                           ; e9 c8 02
+    jmp near 03ba6h                           ; e9 1d 03
     xor di, di                                ; 31 ff
-    jmp short 0388bh                          ; eb 06
+    jmp short 03893h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00017h                ; 83 ff 17
-    jnc short 0389bh                          ; 73 10
+    jnc short 038a3h                          ; 73 10
     mov al, byte [bp+di-00813h]               ; 8a 83 ed f7
-    cmp al, byte [di+00ce4h]                  ; 3a 85 e4 0c
-    je short 03885h                           ; 74 f0
+    cmp al, byte [di+00cfah]                  ; 3a 85 fa 0c
+    je short 0388dh                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 03b49h                           ; e9 ae 02
+    jmp near 03ba6h                           ; e9 03 03
     mov ax, word [bp-007d3h]                  ; 8b 86 2d f8
     mov dx, word [bp-007d1h]                  ; 8b 96 2f f8
@@ -4653,6 +4666,7 @@
     xchg ah, al                               ; 86 c4
     mov word [bp-013h], ax                    ; 89 46 ed
-    cmp byte [bp-004h], 008h                  ; 80 7e fc 08
-    jbe short 038e1h                          ; 76 20
+    mov al, byte [bp-004h]                    ; 8a 46 fc
+    cmp AL, strict byte 00ch                  ; 3c 0c
+    jc short 038eah                           ; 72 20
     lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
     push SS                                   ; 16
@@ -4666,6 +4680,8 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f53h                               ; e8 74 46
-    jmp short 038ffh                          ; eb 1e
+    call 082c2h                               ; e8 da 49
+    jmp short 0392ch                          ; eb 42
+    cmp AL, strict byte 008h                  ; 3c 08
+    jc short 0390eh                           ; 72 20
     lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
     push SS                                   ; 16
@@ -4679,38 +4695,51 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 0280ah                               ; e8 0b ef
+    call 07626h                               ; e8 1a 3d
+    jmp short 0392ch                          ; eb 1e
+    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
+    push SS                                   ; 16
+    push dx                                   ; 52
+    push strict byte 00001h                   ; 6a 01
+    push strict byte 00000h                   ; 6a 00
+    push 00800h                               ; 68 00 08
+    push strict byte 00000h                   ; 6a 00
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    mov cx, ss                                ; 8c d1
+    lea bx, [bp-01ah]                         ; 8d 5e e6
+    mov dx, strict word 0000ch                ; ba 0c 00
+    call 027eah                               ; e8 be ee
     test ax, ax                               ; 85 c0
-    je short 03909h                           ; 74 06
+    je short 03936h                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 03b49h                           ; e9 40 02
+    jmp near 03ba6h                           ; e9 70 02
     cmp byte [bp-0081ah], 001h                ; 80 be e6 f7 01
-    je short 03916h                           ; 74 06
+    je short 03943h                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 03b49h                           ; e9 33 02
+    jmp near 03ba6h                           ; e9 63 02
     cmp byte [bp-00819h], 000h                ; 80 be e7 f7 00
-    je short 03923h                           ; 74 06
+    je short 03950h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 03b49h                           ; e9 26 02
+    jmp near 03ba6h                           ; e9 56 02
     cmp byte [bp-007fch], 055h                ; 80 be 04 f8 55
-    je short 03930h                           ; 74 06
+    je short 0395dh                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 03b49h                           ; e9 19 02
+    jmp near 03ba6h                           ; e9 49 02
     cmp byte [bp-007fbh], 0aah                ; 80 be 05 f8 aa
-    jne short 0392ah                          ; 75 f3
+    jne short 03957h                          ; 75 f3
     cmp byte [bp-007fah], 088h                ; 80 be 06 f8 88
-    je short 03944h                           ; 74 06
+    je short 03971h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 03b49h                           ; e9 05 02
+    jmp near 03ba6h                           ; e9 35 02
     mov al, byte [bp-007f9h]                  ; 8a 86 07 f8
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     mov byte [es:si+001h], al                 ; 26 88 44 01
     cmp byte [bp-007f9h], 000h                ; 80 be 07 f8 00
-    jne short 0395dh                          ; 75 07
+    jne short 0398ah                          ; 75 07
     mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
-    jmp short 03970h                          ; eb 13
+    jmp short 0399dh                          ; eb 13
     cmp byte [bp-007f9h], 004h                ; 80 be 07 f8 04
-    jnc short 0396bh                          ; 73 07
+    jnc short 03998h                          ; 73 07
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
-    jmp short 03970h                          ; eb 05
+    jmp short 0399dh                          ; eb 05
     mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
     movzx di, byte [bp-004h]                  ; 0f b6 7e fc
@@ -4720,5 +4749,5 @@
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     mov byte [es:si+003h], al                 ; 26 88 44 03
     mov ax, di                                ; 89 f8
@@ -4729,7 +4758,7 @@
     mov di, word [bp-007f8h]                  ; 8b be 08 f8
     test di, di                               ; 85 ff
-    jne short 03999h                          ; 75 03
+    jne short 039c6h                          ; 75 03
     mov di, 007c0h                            ; bf c0 07
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     mov word [es:si+00ch], di                 ; 26 89 7c 0c
     mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00
@@ -4754,5 +4783,6 @@
     xchg ah, al                               ; 86 c4
     mov word [bp-013h], ax                    ; 89 46 ed
-    les bx, [bp-008h]                         ; c4 5e f8
+    mov es, [bp-008h]                         ; 8e 46 f8
+    mov bx, word [bp-00ch]                    ; 8b 5e f4
     mov word [es:bx+00ah], dx                 ; 26 89 57 0a
     mov word [es:bx+00ch], 00200h             ; 26 c7 47 0c 00 02
@@ -4763,6 +4793,7 @@
     sub dx, ax                                ; 29 c2
     mov word [es:bx+01ch], dx                 ; 26 89 57 1c
-    cmp byte [bp-004h], 008h                  ; 80 7e fc 08
-    jbe short 03a2ch                          ; 76 27
+    mov al, byte [bp-004h]                    ; 8a 46 fc
+    cmp AL, strict byte 00ch                  ; 3c 0c
+    jc short 03a5dh                           ; 72 27
     push di                                   ; 57
     push dword 000000001h                     ; 66 6a 01
@@ -4772,5 +4803,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 03a11h                               ; e2 fa
+    loop 03a42h                               ; e2 fa
     push dx                                   ; 52
     push ax                                   ; 50
@@ -4780,6 +4811,8 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f53h                               ; e8 29 45
-    jmp short 03a51h                          ; eb 25
+    call 082c2h                               ; e8 67 48
+    jmp short 03aadh                          ; eb 50
+    cmp AL, strict byte 008h                  ; 3c 08
+    jc short 03a88h                           ; 72 27
     push di                                   ; 57
     push dword 000000001h                     ; 66 6a 01
@@ -4789,5 +4822,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 03a38h                               ; e2 fa
+    loop 03a6dh                               ; e2 fa
     push dx                                   ; 52
     push ax                                   ; 50
@@ -4797,89 +4830,106 @@
     lea bx, [bp-01ah]                         ; 8d 5e e6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 0280ah                               ; e8 b9 ed
-    les bx, [bp-008h]                         ; c4 5e f8
+    call 07626h                               ; e8 a0 3b
+    jmp short 03aadh                          ; eb 25
+    push di                                   ; 57
+    push dword 000000001h                     ; 66 6a 01
+    mov ax, word [bp-00ah]                    ; 8b 46 f6
+    xor dx, dx                                ; 31 d2
+    mov cx, strict word 00009h                ; b9 09 00
+    sal ax, 1                                 ; d1 e0
+    rcl dx, 1                                 ; d1 d2
+    loop 03a94h                               ; e2 fa
+    push dx                                   ; 52
+    push ax                                   ; 50
+    push strict byte 00000h                   ; 6a 00
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    mov cx, ss                                ; 8c d1
+    lea bx, [bp-01ah]                         ; 8d 5e e6
+    mov dx, strict word 0000ch                ; ba 0c 00
+    call 027eah                               ; e8 3d ed
+    mov es, [bp-008h]                         ; 8e 46 f8
+    mov bx, word [bp-00ch]                    ; 8b 5e f4
     mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00
     test ax, ax                               ; 85 c0
-    je short 03a64h                           ; 74 06
+    je short 03ac3h                           ; 74 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 03b49h                           ; e9 e5 00
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    jmp near 03ba6h                           ; e9 e3 00
+    mov es, [bp-006h]                         ; 8e 46 fa
     mov al, byte [es:si+001h]                 ; 26 8a 44 01
     cmp AL, strict byte 002h                  ; 3c 02
-    jc short 03a7ch                           ; 72 0d
-    jbe short 03a94h                          ; 76 23
+    jc short 03adah                           ; 72 0c
+    jbe short 03af2h                          ; 76 22
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 03aaah                           ; 74 35
+    je short 03b08h                           ; 74 34
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 03a9fh                           ; 74 26
-    jmp near 03af2h                           ; e9 76 00
+    je short 03afdh                           ; 74 25
+    jmp short 03b4fh                          ; eb 75
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 03af2h                          ; 75 72
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    jne short 03b4fh                          ; 75 71
+    mov es, [bp-006h]                         ; 8e 46 fa
     db  066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 00fh, 000h
     ; mov dword [es:si+012h], strict dword 0000f0050h ; 66 26 c7 44 12 50 00 0f 00
     mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00
-    jmp short 03af2h                          ; eb 5e
+    jmp short 03b4fh                          ; eb 5d
     db  066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 012h, 000h
     ; mov dword [es:si+012h], strict dword 000120050h ; 66 26 c7 44 12 50 00 12 00
-    jmp short 03a8ch                          ; eb ed
+    jmp short 03aeah                          ; eb ed
     db  066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 024h, 000h
     ; mov dword [es:si+012h], strict dword 000240050h ; 66 26 c7 44 12 50 00 24 00
-    jmp short 03a8ch                          ; eb e2
+    jmp short 03aeah                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
     mov ax, di                                ; 89 f8
-    call 01600h                               ; e8 4e db
+    call 01600h                               ; e8 f0 da
     and AL, strict byte 03fh                  ; 24 3f
     xor ah, ah                                ; 30 e4
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     mov word [es:si+014h], ax                 ; 26 89 44 14
     mov dx, 001c4h                            ; ba c4 01
     mov ax, di                                ; 89 f8
-    call 01600h                               ; e8 3b db
-    xor ah, ah                                ; 30 e4
-    mov bx, ax                                ; 89 c3
+    call 01600h                               ; e8 dd da
+    movzx bx, al                              ; 0f b6 d8
     sal bx, 002h                              ; c1 e3 02
     mov dx, 001c5h                            ; ba c5 01
     mov ax, di                                ; 89 f8
-    call 01600h                               ; e8 2c db
+    call 01600h                               ; e8 cf da
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
     inc ax                                    ; 40
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     mov word [es:si+012h], ax                 ; 26 89 44 12
     mov dx, 001c3h                            ; ba c3 01
     mov ax, di                                ; 89 f8
-    call 01600h                               ; e8 18 db
+    call 01600h                               ; e8 bb da
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     mov word [es:si+010h], ax                 ; 26 89 44 10
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 03b30h                           ; 74 34
+    je short 03b8dh                           ; 74 34
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 03b19h                          ; 75 16
+    jne short 03b76h                          ; 75 16
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 f4 da
+    call 01600h                               ; e8 97 da
     or AL, strict byte 041h                   ; 0c 41
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    jmp short 03b2dh                          ; eb 14
+    jmp short 03b8ah                          ; eb 14
     mov dx, 002c0h                            ; ba c0 02
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
-    call 01600h                               ; e8 de da
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    call 01600h                               ; e8 81 da
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     movzx bx, al                              ; 0f b6 d8
     mov dx, 002c0h                            ; ba c0 02
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
-    call 0160eh                               ; e8 de da
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    call 0160eh                               ; e8 81 da
+    mov es, [bp-006h]                         ; 8e 46 fa
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 03b3eh                           ; 74 04
+    je short 03b9bh                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov es, [bp-006h]                         ; 8e 46 fa
     movzx ax, byte [es:si+002h]               ; 26 0f b6 44 02
     sal ax, 008h                              ; c1 e0 08
@@ -4909,44 +4959,44 @@
     add AL, strict byte 003h                  ; 04 03
     add al, byte [bx+di]                      ; 02 01
-    add byte [di], ch                         ; 00 2d
+    add byte [bx+si-067c1h], bh               ; 00 b8 3f 98
     aas                                       ; 3f
-    push CS                                   ; 0e
+    mov BH, strict byte 03ch                  ; b7 3c
+    loope 03c0eh                              ; e1 3c
+    lodsb                                     ; ac
+    cmp AL, strict byte 0e1h                  ; 3c e1
+    cmp AL, strict byte 0ach                  ; 3c ac
+    cmp AL, strict byte 002h                  ; 3c 02
     aas                                       ; 3f
-    pop ax                                    ; 58
-    cmp AL, strict byte 082h                  ; 3c 82
-    cmp AL, strict byte 04dh                  ; 3c 4d
-    cmp AL, strict byte 082h                  ; 3c 82
-    cmp AL, strict byte 04dh                  ; 3c 4d
-    cmp AL, strict byte 074h                  ; 3c 74
-    db  03eh, 00eh
-    ; ds push CS                                ; 3e 0e
+    cbw                                       ; 98
     aas                                       ; 3f
-    sub ax, 02d3fh                            ; 2d 3f 2d
+    mov ax, 0b83fh                            ; b8 3f b8
     aas                                       ; 3f
-    push CS                                   ; 0e
+    cbw                                       ; 98
     aas                                       ; 3f
-    push CS                                   ; 0e
+    cbw                                       ; 98
     aas                                       ; 3f
-    push CS                                   ; 0e
+    cbw                                       ; 98
     aas                                       ; 3f
-    push CS                                   ; 0e
+    cbw                                       ; 98
     aas                                       ; 3f
-    push CS                                   ; 0e
+    cbw                                       ; 98
     aas                                       ; 3f
-    and ax, 00e3fh                            ; 25 3f 0e
+    scasw                                     ; af
     aas                                       ; 3f
-    sub ax, 02d3fh                            ; 2d 3f 2d
+    cbw                                       ; 98
     aas                                       ; 3f
-    sub ax, 02d3fh                            ; 2d 3f 2d
+    mov ax, 0b83fh                            ; b8 3f b8
     aas                                       ; 3f
-    sub ax, 02d3fh                            ; 2d 3f 2d
+    mov ax, 0b83fh                            ; b8 3f b8
     aas                                       ; 3f
-    sub ax, 02d3fh                            ; 2d 3f 2d
+    mov ax, 0b83fh                            ; b8 3f b8
     aas                                       ; 3f
-    sub ax, 02d3fh                            ; 2d 3f 2d
+    mov ax, 0b83fh                            ; b8 3f b8
     aas                                       ; 3f
-    sub ax, 02d3fh                            ; 2d 3f 2d
+    mov ax, 0b83fh                            ; b8 3f b8
     aas                                       ; 3f
-_int13_cdemu:                                ; 0xf3ba9 LB 0x41f
+    mov ax, 0b83fh                            ; b8 3f b8
+    aas                                       ; 3f
+_int13_cdemu:                                ; 0xf3c06 LB 0x44d
     push si                                   ; 56
     push di                                   ; 57
@@ -4954,11 +5004,11 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 64 da
+    call 0161ch                               ; e8 07 da
     mov di, 00322h                            ; bf 22 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
     mov word [bp-004h], ax                    ; 89 46 fc
-    mov word [bp-008h], 00122h                ; c7 46 f8 22 01
-    mov word [bp-006h], ax                    ; 89 46 fa
+    mov word [bp-00ah], 00122h                ; c7 46 f6 22 01
+    mov word [bp-008h], ax                    ; 89 46 f8
     mov es, ax                                ; 8e c0
     mov al, byte [es:di+003h]                 ; 26 8a 45 03
@@ -4970,17 +5020,17 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 27 da
+    call 0160eh                               ; e8 ca d9
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 03bfdh                           ; 74 0e
-    movzx ax, byte [es:di+002h]               ; 26 0f b6 45 02
-    mov dx, word [bp+016h]                    ; 8b 56 16
-    xor dh, dh                                ; 30 f6
-    cmp ax, dx                                ; 39 d0
-    je short 03c26h                           ; 74 29
-    mov bx, 00cd6h                            ; bb d6 0c
+    je short 03c5ah                           ; 74 0e
+    movzx dx, byte [es:di+002h]               ; 26 0f b6 55 02
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    cmp dx, ax                                ; 39 c2
+    je short 03c83h                           ; 74 29
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 a6 dc
+    call 018aeh                               ; e8 49 dc
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4992,94 +5042,97 @@
     push 002c6h                               ; 68 c6 02
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 c9 dc
+    call 018e9h                               ; e8 6c dc
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 03f4dh                           ; e9 27 03
+    jmp near 03fd8h                           ; e9 55 03
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe near 03f2dh                          ; 0f 87 fa 02
+    jnbe near 03fb8h                          ; 0f 87 28 03
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 03b50h                            ; bf 50 3b
+    mov di, 03badh                            ; bf ad 3b
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+03b6dh]               ; 2e 8b 85 6d 3b
-    mov bx, word [bp+01ah]                    ; 8b 5e 1a
-    xor bh, bh                                ; 30 ff
+    mov ax, word [cs:di+03bcah]               ; 2e 8b 85 ca 3b
+    mov di, word [bp+01ah]                    ; 8b 7e 1a
+    and di, 000ffh                            ; 81 e7 ff 00
     jmp ax                                    ; ff e0
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 03f55h                           ; e9 fd 02
+    jmp near 03fe0h                           ; e9 29 03
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 9f d9
+    call 01600h                               ; e8 40 d9
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
     sal ax, 008h                              ; c1 e0 08
-    or bx, ax                                 ; 09 c3
-    mov word [bp+01ah], bx                    ; 89 5e 1a
+    or di, ax                                 ; 09 c7
+    mov word [bp+01ah], di                    ; 89 7e 1a
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 95 d9
+    call 0160eh                               ; e8 36 d9
     test cl, cl                               ; 84 c9
-    je near 03f12h                            ; 0f 84 93 02
-    jmp near 03f69h                           ; e9 e7 02
+    je near 03f9ch                            ; 0f 84 be 02
+    jmp near 03ff4h                           ; e9 13 03
     mov es, [bp-004h]                         ; 8e 46 fc
-    mov di, word [es:si+014h]                 ; 26 8b 7c 14
+    mov ax, word [es:si+014h]                 ; 26 8b 44 14
+    mov word [bp-00ch], ax                    ; 89 46 f4
     mov dx, word [es:si+012h]                 ; 26 8b 54 12
-    mov bx, word [es:si+010h]                 ; 26 8b 5c 10
+    mov di, word [es:si+010h]                 ; 26 8b 7c 10
     mov ax, word [es:si+008h]                 ; 26 8b 44 08
-    mov word [bp-014h], ax                    ; 89 46 ec
+    mov word [bp-018h], ax                    ; 89 46 e8
     mov ax, word [es:si+00ah]                 ; 26 8b 44 0a
-    mov word [bp-012h], ax                    ; 89 46 ee
+    mov word [bp-016h], ax                    ; 89 46 ea
     mov ax, word [bp+018h]                    ; 8b 46 18
     and ax, strict word 0003fh                ; 25 3f 00
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-012h], ax                    ; 89 46 ee
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     and AL, strict byte 0c0h                  ; 24 c0
     sal ax, 002h                              ; c1 e0 02
-    mov cx, word [bp+018h]                    ; 8b 4e 18
-    shr cx, 008h                              ; c1 e9 08
-    or ax, cx                                 ; 09 c8
+    mov bx, word [bp+018h]                    ; 8b 5e 18
+    shr bx, 008h                              ; c1 eb 08
+    or ax, bx                                 ; 09 d8
     mov si, word [bp+016h]                    ; 8b 76 16
     shr si, 008h                              ; c1 ee 08
-    mov cx, word [bp+01ah]                    ; 8b 4e 1a
-    xor ch, ch                                ; 30 ed
-    mov word [bp-00ah], cx                    ; 89 4e f6
-    test cx, cx                               ; 85 c9
-    je near 03f0eh                            ; 0f 84 40 02
-    cmp di, word [bp-010h]                    ; 3b 7e f0
-    jc near 03f4dh                            ; 0f 82 78 02
+    mov bx, word [bp+01ah]                    ; 8b 5e 1a
+    xor bh, bh                                ; 30 ff
+    mov word [bp-006h], bx                    ; 89 5e fa
+    test bx, bx                               ; 85 db
+    je near 03f98h                            ; 0f 84 68 02
+    mov bx, word [bp-012h]                    ; 8b 5e ee
+    cmp bx, word [bp-00ch]                    ; 3b 5e f4
+    jnbe near 03fd8h                          ; 0f 87 9e 02
     cmp ax, dx                                ; 39 d0
-    jnc near 03f4dh                           ; 0f 83 72 02
-    cmp si, bx                                ; 39 de
-    jnc near 03f4dh                           ; 0f 83 6c 02
+    jnc near 03fd8h                           ; 0f 83 98 02
+    cmp si, di                                ; 39 fe
+    jnc near 03fd8h                           ; 0f 83 92 02
     mov dx, word [bp+01ah]                    ; 8b 56 1a
     shr dx, 008h                              ; c1 ea 08
     cmp dx, strict byte 00004h                ; 83 fa 04
-    je near 03f0eh                            ; 0f 84 20 02
+    je near 03f98h                            ; 0f 84 45 02
     mov dx, word [bp+014h]                    ; 8b 56 14
     shr dx, 004h                              ; c1 ea 04
-    mov cx, word [bp+00ah]                    ; 8b 4e 0a
-    add cx, dx                                ; 01 d1
-    mov word [bp-00eh], cx                    ; 89 4e f2
+    mov bx, word [bp+00ah]                    ; 8b 5e 0a
+    add bx, dx                                ; 01 d3
+    mov word [bp-00eh], bx                    ; 89 5e f2
     mov dx, word [bp+014h]                    ; 8b 56 14
     and dx, strict byte 0000fh                ; 83 e2 0f
-    mov word [bp-00ch], dx                    ; 89 56 f4
+    mov word [bp-010h], dx                    ; 89 56 f0
     xor dl, dl                                ; 30 d2
+    mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 08c79h                               ; e8 6d 4f
+    call 08ff9h                               ; e8 86 52
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
     adc dx, bx                                ; 11 da
-    mov bx, di                                ; 89 fb
+    mov bx, word [bp-00ch]                    ; 8b 5e f4
     xor cx, cx                                ; 31 c9
-    call 08c79h                               ; e8 60 4f
-    mov bx, word [bp-010h]                    ; 8b 5e f0
+    call 08ff9h                               ; e8 78 52
+    mov bx, word [bp-012h]                    ; 8b 5e ee
     dec bx                                    ; 4b
     xor cx, cx                                ; 31 c9
@@ -5088,5 +5141,5 @@
     mov bx, word [bp+01ah]                    ; 8b 5e 1a
     xor bl, bl                                ; 30 db
-    mov cx, word [bp-00ah]                    ; 8b 4e f6
+    mov cx, word [bp-006h]                    ; 8b 4e fa
     or cx, bx                                 ; 09 d9
     mov word [bp+01ah], cx                    ; 89 4e 1a
@@ -5097,16 +5150,15 @@
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    mov word [bp-01ah], di                    ; 89 7e e6
-    mov di, ax                                ; 89 c7
-    and di, strict byte 00003h                ; 83 e7 03
-    xor bh, bh                                ; 30 ff
-    add ax, word [bp-00ah]                    ; 03 46 f6
+    mov bx, ax                                ; 89 c3
+    xor bh, ah                                ; 30 e7
+    and bl, 003h                              ; 80 e3 03
+    mov word [bp-014h], bx                    ; 89 5e ec
+    xor bx, bx                                ; 31 db
+    add ax, word [bp-006h]                    ; 03 46 fa
     adc dx, bx                                ; 11 da
-    mov bx, ax                                ; 89 c3
-    add bx, strict byte 0ffffh                ; 83 c3 ff
-    mov ax, dx                                ; 89 d0
-    adc ax, strict word 0ffffh                ; 15 ff ff
-    mov word [bp-01eh], bx                    ; 89 5e e2
-    mov word [bp-01ch], ax                    ; 89 46 e4
+    add ax, strict word 0ffffh                ; 05 ff ff
+    adc dx, strict byte 0ffffh                ; 83 d2 ff
+    mov word [bp-01eh], ax                    ; 89 46 e2
+    mov word [bp-01ch], dx                    ; 89 56 e4
     shr word [bp-01ch], 1                     ; d1 6e e4
     rcr word [bp-01eh], 1                     ; d1 5e e2
@@ -5114,13 +5166,12 @@
     rcr word [bp-01eh], 1                     ; d1 5e e2
     mov cx, strict word 0000ch                ; b9 0c 00
-    xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ah]                         ; 8d 46 d6
-    call 08caah                               ; e8 36 4f
+    call 0902ah                               ; e8 52 52
     mov word [bp-02ah], strict word 00028h    ; c7 46 d6 28 00
-    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov ax, word [bp-018h]                    ; 8b 46 e8
     add ax, si                                ; 01 f0
-    mov dx, word [bp-012h]                    ; 8b 56 ee
-    adc dx, word [bp-01ah]                    ; 13 56 e6
+    mov dx, word [bp-016h]                    ; 8b 56 ea
+    adc dx, di                                ; 11 fa
     xchg ah, al                               ; 86 c4
     xchg dh, dl                               ; 86 d6
@@ -5134,11 +5185,11 @@
     xchg ah, al                               ; 86 c4
     mov word [bp-023h], ax                    ; 89 46 dd
-    les bx, [bp-008h]                         ; c4 5e f8
+    les bx, [bp-00ah]                         ; c4 5e f6
     mov word [es:bx+00ah], dx                 ; 26 89 57 0a
     mov word [es:bx+00ch], 00200h             ; 26 c7 47 0c 00 02
-    mov ax, di                                ; 89 f8
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     sal ax, 009h                              ; c1 e0 09
     mov word [es:bx+01ah], ax                 ; 26 89 47 1a
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    mov dx, word [bp-006h]                    ; 8b 56 fa
     sal dx, 009h                              ; c1 e2 09
     and dh, 007h                              ; 80 e6 07
@@ -5146,20 +5197,19 @@
     sub bx, dx                                ; 29 d3
     mov dx, bx                                ; 89 da
-    mov bx, word [bp-008h]                    ; 8b 5e f8
+    mov bx, word [bp-00ah]                    ; 8b 5e f6
     mov bx, word [es:bx+01ah]                 ; 26 8b 5f 1a
     sub dx, bx                                ; 29 da
-    mov bx, word [bp-008h]                    ; 8b 5e f8
+    mov bx, word [bp-00ah]                    ; 8b 5e f6
     mov word [es:bx+01ch], dx                 ; 26 89 57 1c
-    cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jbe short 03e02h                          ; 76 2a
-    push word [bp-00eh]                       ; ff 76 f2
-    push word [bp-00ch]                       ; ff 76 f4
+    cmp byte [bp-002h], 00ch                  ; 80 7e fe 0c
+    jc short 03e64h                           ; 72 28
+    push dword [bp-010h]                      ; 66 ff 76 f0
     push strict byte 00001h                   ; 6a 01
-    mov si, word [bp-00ah]                    ; 8b 76 f6
+    mov si, word [bp-006h]                    ; 8b 76 fa
     xor di, di                                ; 31 ff
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 03de8h                               ; e2 fa
+    loop 03e4ah                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
@@ -5169,15 +5219,16 @@
     lea bx, [bp-02ah]                         ; 8d 5e d6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f53h                               ; e8 53 41
-    jmp short 03e2ah                          ; eb 28
-    push word [bp-00eh]                       ; ff 76 f2
-    push word [bp-00ch]                       ; ff 76 f4
+    call 082c2h                               ; e8 60 44
+    jmp short 03eb8h                          ; eb 54
+    cmp byte [bp-002h], 008h                  ; 80 7e fe 08
+    jc short 03e92h                           ; 72 28
+    push dword [bp-010h]                      ; 66 ff 76 f0
     push strict byte 00001h                   ; 6a 01
-    mov si, word [bp-00ah]                    ; 8b 76 f6
+    mov si, word [bp-006h]                    ; 8b 76 fa
     xor di, di                                ; 31 ff
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 03e12h                               ; e2 fa
+    loop 03e78h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
@@ -5187,15 +5238,32 @@
     lea bx, [bp-02ah]                         ; 8d 5e d6
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 0280ah                               ; e8 e0 e9
+    call 07626h                               ; e8 96 37
+    jmp short 03eb8h                          ; eb 26
+    push dword [bp-010h]                      ; 66 ff 76 f0
+    push strict byte 00001h                   ; 6a 01
+    mov si, word [bp-006h]                    ; 8b 76 fa
+    xor di, di                                ; 31 ff
+    mov cx, strict word 00009h                ; b9 09 00
+    sal si, 1                                 ; d1 e6
+    rcl di, 1                                 ; d1 d7
+    loop 03ea0h                               ; e2 fa
+    push di                                   ; 57
+    push si                                   ; 56
+    push ax                                   ; 50
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    mov cx, ss                                ; 8c d1
+    lea bx, [bp-02ah]                         ; 8d 5e d6
+    mov dx, strict word 0000ch                ; ba 0c 00
+    call 027eah                               ; e8 32 e9
     mov dl, al                                ; 88 c2
-    les bx, [bp-008h]                         ; c4 5e f8
+    les bx, [bp-00ah]                         ; c4 5e f6
     db  066h, 026h, 0c7h, 047h, 01ah, 000h, 000h, 000h, 000h
     ; mov dword [es:bx+01ah], strict dword 000000000h ; 66 26 c7 47 1a 00 00 00 00
     test dl, dl                               ; 84 d2
-    je near 03f0eh                            ; 0f 84 d0 00
-    mov bx, 00cd6h                            ; bb d6 0c
+    je near 03f98h                            ; 0f 84 cc 00
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 65 da
+    call 018aeh                               ; e8 d7 d9
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -5206,5 +5274,5 @@
     push 002fch                               ; 68 fc 02
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 8a da
+    call 018e9h                               ; e8 fc d9
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+01ah]                    ; 8b 46 1a
@@ -5213,60 +5281,60 @@
     mov word [bp+01ah], ax                    ; 89 46 1a
     mov byte [bp+01ah], 000h                  ; c6 46 1a 00
-    jmp near 03f58h                           ; e9 e4 00
+    jmp near 03fe3h                           ; e9 e1 00
     mov es, [bp-004h]                         ; 8e 46 fc
-    mov di, word [es:si+014h]                 ; 26 8b 7c 14
+    mov ax, word [es:si+014h]                 ; 26 8b 44 14
+    mov word [bp-00ch], ax                    ; 89 46 f4
     mov dx, word [es:si+012h]                 ; 26 8b 54 12
     dec dx                                    ; 4a
-    mov bx, word [es:si+010h]                 ; 26 8b 5c 10
-    dec bx                                    ; 4b
+    mov di, word [es:si+010h]                 ; 26 8b 7c 10
+    dec di                                    ; 4f
     mov byte [bp+01ah], 000h                  ; c6 46 1a 00
-    mov ax, word [bp+014h]                    ; 8b 46 14
-    xor al, al                                ; 30 c0
-    mov cx, word [bp+018h]                    ; 8b 4e 18
-    xor ch, ch                                ; 30 ed
-    mov word [bp-018h], cx                    ; 89 4e e8
-    mov cx, dx                                ; 89 d1
-    xor ch, dh                                ; 30 f5
-    sal cx, 008h                              ; c1 e1 08
-    mov word [bp-016h], cx                    ; 89 4e ea
-    mov cx, word [bp-018h]                    ; 8b 4e e8
-    or cx, word [bp-016h]                     ; 0b 4e ea
-    mov word [bp+018h], cx                    ; 89 4e 18
+    mov cx, word [bp+014h]                    ; 8b 4e 14
+    xor cl, cl                                ; 30 c9
+    mov ax, word [bp+018h]                    ; 8b 46 18
+    xor ah, ah                                ; 30 e4
+    mov word [bp-01ah], ax                    ; 89 46 e6
+    mov ax, dx                                ; 89 d0
+    xor ah, dh                                ; 30 f4
+    sal ax, 008h                              ; c1 e0 08
+    mov bx, word [bp-01ah]                    ; 8b 5e e6
+    or bx, ax                                 ; 09 c3
+    mov word [bp+018h], bx                    ; 89 5e 18
     shr dx, 002h                              ; c1 ea 02
     xor dh, dh                                ; 30 f6
     and dl, 0c0h                              ; 80 e2 c0
-    mov word [bp-016h], dx                    ; 89 56 ea
-    mov dx, di                                ; 89 fa
-    xor dh, dh                                ; 30 f6
-    and dl, 03fh                              ; 80 e2 3f
-    or dx, word [bp-016h]                     ; 0b 56 ea
-    xor cl, cl                                ; 30 c9
-    or cx, dx                                 ; 09 d1
-    mov word [bp+018h], cx                    ; 89 4e 18
-    mov dx, word [bp+016h]                    ; 8b 56 16
-    xor dh, dh                                ; 30 f6
-    sal bx, 008h                              ; c1 e3 08
-    or dx, bx                                 ; 09 da
-    mov word [bp+016h], dx                    ; 89 56 16
-    xor dl, dl                                ; 30 d2
-    or dl, 002h                               ; 80 ca 02
-    mov word [bp+016h], dx                    ; 89 56 16
-    mov dl, byte [es:si+001h]                 ; 26 8a 54 01
-    mov word [bp+014h], ax                    ; 89 46 14
-    cmp dl, 003h                              ; 80 fa 03
-    je short 03f00h                           ; 74 1a
-    cmp dl, 002h                              ; 80 fa 02
-    je short 03efch                           ; 74 11
-    cmp dl, 001h                              ; 80 fa 01
-    jne short 03f04h                          ; 75 14
+    mov ax, word [bp-00ch]                    ; 8b 46 f4
+    and AL, strict byte 03fh                  ; 24 3f
+    or dl, al                                 ; 08 c2
+    mov ax, bx                                ; 89 d8
+    xor al, bl                                ; 30 d8
+    or ax, dx                                 ; 09 d0
+    mov word [bp+018h], ax                    ; 89 46 18
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    sal di, 008h                              ; c1 e7 08
+    or ax, di                                 ; 09 f8
+    mov word [bp+016h], ax                    ; 89 46 16
+    xor al, al                                ; 30 c0
+    or AL, strict byte 002h                   ; 0c 02
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov al, byte [es:si+001h]                 ; 26 8a 44 01
+    mov word [bp+014h], cx                    ; 89 4e 14
+    cmp AL, strict byte 003h                  ; 3c 03
+    je short 03f89h                           ; 74 1c
+    cmp AL, strict byte 002h                  ; 3c 02
+    je short 03f81h                           ; 74 10
+    cmp AL, strict byte 001h                  ; 3c 01
+    jne short 03f8eh                          ; 75 19
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor al, al                                ; 30 c0
     or AL, strict byte 002h                   ; 0c 02
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp short 03f04h                          ; eb 08
-    or AL, strict byte 004h                   ; 0c 04
-    jmp short 03ef7h                          ; eb f7
-    or AL, strict byte 006h                   ; 0c 06
-    jmp short 03ef7h                          ; eb f3
+    jmp short 03f8eh                          ; eb 0d
+    or cl, 004h                               ; 80 c9 04
+    mov word [bp+014h], cx                    ; 89 4e 14
+    jmp short 03f8eh                          ; eb 05
+    or cl, 006h                               ; 80 c9 06
+    jmp short 03f84h                          ; eb f6
     mov word [bp+00ch], 0efc7h                ; c7 46 0c c7 ef
     mov word [bp+00ah], 0f000h                ; c7 46 0a 00 f0
@@ -5275,5 +5343,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f1 d6
+    call 0160eh                               ; e8 67 d6
     and byte [bp+020h], 0feh                  ; 80 66 20 fe
     leave                                     ; c9
@@ -5281,11 +5349,11 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    or bh, 003h                               ; 80 cf 03
-    mov word [bp+01ah], bx                    ; 89 5e 1a
-    jmp short 03f12h                          ; eb e5
-    mov bx, 00cd6h                            ; bb d6 0c
+    or di, 00300h                             ; 81 cf 00 03
+    mov word [bp+01ah], di                    ; 89 7e 1a
+    jmp short 03f9ch                          ; eb e4
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 76 d9
+    call 018aeh                               ; e8 eb d8
     mov ax, word [bp+01ah]                    ; 8b 46 1a
     shr ax, 008h                              ; c1 e8 08
@@ -5294,5 +5362,5 @@
     push 0031dh                               ; 68 1d 03
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 9f d9
+    call 018e9h                               ; e8 14 d9
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+01ah]                    ; 8b 46 1a
@@ -5305,7 +5373,7 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 a5 d6
+    call 0160eh                               ; e8 1a d6
     or byte [bp+020h], 001h                   ; 80 4e 20 01
-    jmp short 03f21h                          ; eb b2
+    jmp short 03fabh                          ; eb b1
     push ax                                   ; 50
     dec si                                    ; 4e
@@ -5326,46 +5394,54 @@
     add AL, strict byte 003h                  ; 04 03
     add al, byte [bx+di]                      ; 02 01
-    add byte [bx+si], bl                      ; 00 18
+    add dh, ch                                ; 00 ee
     inc bp                                    ; 45
-    xchg si, ax                               ; 96
+    xchg di, ax                               ; 97
+    inc bp                                    ; 45
+    inc byte [bx+si-012h]                     ; fe 40 ee
+    inc bp                                    ; 45
+    rep inc ax                                ; f3 40
+    out DX, AL                                ; ee
+    inc bp                                    ; 45
+    rep inc ax                                ; f3 40
+    out DX, AL                                ; ee
+    inc bp                                    ; 45
+    xchg di, ax                               ; 97
+    inc bp                                    ; 45
+    out DX, AL                                ; ee
+    inc bp                                    ; 45
+    out DX, AL                                ; ee
+    inc bp                                    ; 45
+    xchg di, ax                               ; 97
+    inc bp                                    ; 45
+    xchg di, ax                               ; 97
+    inc bp                                    ; 45
+    xchg di, ax                               ; 97
+    inc bp                                    ; 45
+    xchg di, ax                               ; 97
+    inc bp                                    ; 45
+    xchg di, ax                               ; 97
+    inc bp                                    ; 45
+    sub byte [bx+di-069h], al                 ; 28 41 97
+    inc bp                                    ; 45
+    out DX, AL                                ; ee
+    inc bp                                    ; 45
+    xor word [bx+di+044h], ax                 ; 31 41 44
+    inc cx                                    ; 41
+    rep inc ax                                ; f3 40
+    inc sp                                    ; 44
+    inc cx                                    ; 41
+    iret                                      ; cf
     inc dx                                    ; 42
-    jnc short 03fd2h                          ; 73 40
-    sbb byte [di+068h], al                    ; 18 45 68
-    inc ax                                    ; 40
-    sbb byte [di+068h], al                    ; 18 45 68
-    inc ax                                    ; 40
-    sbb byte [di-06ah], al                    ; 18 45 96
-    inc dx                                    ; 42
-    sbb byte [di+018h], al                    ; 18 45 18
+    jc short 0408ch                           ; 72 43
+    inc sp                                    ; 44
+    inc cx                                    ; 41
+    lahf                                      ; 9f
+    inc bx                                    ; 43
+    scasb                                     ; ae
     inc bp                                    ; 45
-    xchg si, ax                               ; 96
-    inc dx                                    ; 42
-    xchg si, ax                               ; 96
-    inc dx                                    ; 42
-    xchg si, ax                               ; 96
-    inc dx                                    ; 42
-    xchg si, ax                               ; 96
-    inc dx                                    ; 42
-    xchg si, ax                               ; 96
-    inc dx                                    ; 42
-    popfw                                     ; 9d
-    inc ax                                    ; 40
-    xchg si, ax                               ; 96
-    inc dx                                    ; 42
-    sbb byte [di-05ah], al                    ; 18 45 a6
-    inc ax                                    ; 40
-    mov cx, 06840h                            ; b9 40 68
-    inc ax                                    ; 40
-    mov cx, 00740h                            ; b9 40 07
-    inc dx                                    ; 42
-    lodsw                                     ; ad
-    inc dx                                    ; 42
-    mov cx, 0d840h                            ; b9 40 d8
-    inc dx                                    ; 42
-    rol word [si-027h], 1                     ; d1 44 d9
-    inc sp                                    ; 44
-    db  018h
+    mov DH, strict byte 045h                  ; b6 45
+    out DX, AL                                ; ee
     inc bp                                    ; 45
-_int13_cdrom:                                ; 0xf3fc8 LB 0x56d
+_int13_cdrom:                                ; 0xf4053 LB 0x5b8
     push si                                   ; 56
     push di                                   ; 57
@@ -5373,5 +5449,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 45 d6
+    call 0161ch                               ; e8 ba d5
     mov word [bp-018h], ax                    ; 89 46 e8
     mov si, 00122h                            ; be 22 01
@@ -5380,11 +5456,11 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 23 d6
+    call 0160eh                               ; e8 98 d5
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 03ffah                           ; 72 05
+    jc short 04085h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 04018h                           ; 72 1e
+    jc short 040a3h                           ; 72 1e
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor ah, ah                                ; 30 e4
@@ -5396,7 +5472,7 @@
     push 00359h                               ; 68 59 03
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 d7 d8
+    call 018e9h                               ; e8 4c d8
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 044f5h                           ; e9 dd 04
+    jmp near 045cch                           ; e9 29 05
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor ah, ah                                ; 30 e4
@@ -5405,7 +5481,7 @@
     add bx, ax                                ; 01 c3
     mov dl, byte [es:bx+000d0h]               ; 26 8a 97 d0 00
-    mov byte [bp-006h], dl                    ; 88 56 fa
+    mov byte [bp-002h], dl                    ; 88 56 fe
     cmp dl, 010h                              ; 80 fa 10
-    jc short 04041h                           ; 72 10
+    jc short 040cch                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+01ch]                    ; 8b 46 1c
@@ -5414,17 +5490,17 @@
     push 0034dh                               ; 68 4d 03
     push 00384h                               ; 68 84 03
-    jmp short 0400dh                          ; eb cc
+    jmp short 04098h                          ; eb cc
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe near 04518h                          ; 0f 87 ca 04
+    jnbe near 045eeh                          ; 0f 87 15 05
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 03f6fh                            ; bf 6f 3f
+    mov di, 03ffah                            ; bf fa 3f
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+03f8ch]               ; 2e 8b 85 8c 3f
+    mov ax, word [cs:di+04017h]               ; 2e 8b 85 17 40
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bh, bh                                ; 30 ff
@@ -5433,8 +5509,8 @@
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 044fdh                           ; e9 8a 04
+    jmp near 045d4h                           ; e9 d6 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 84 d5
+    call 01600h                               ; e8 f9 d4
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
@@ -5445,32 +5521,32 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 7a d5
+    call 0160eh                               ; e8 ef d4
     test cl, cl                               ; 84 c9
-    je near 0429ah                            ; 0f 84 00 02
-    jmp near 04511h                           ; e9 74 04
+    je near 0459bh                            ; 0f 84 76 04
+    jmp near 045e8h                           ; e9 c0 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp near 04500h                           ; e9 5a 04
+    jmp near 045d7h                           ; e9 a6 04
     mov word [bp+016h], 0aa55h                ; c7 46 16 55 aa
     or bh, 030h                               ; 80 cf 30
     mov word [bp+01ch], bx                    ; 89 5e 1c
     mov word [bp+01ah], strict word 00007h    ; c7 46 1a 07 00
-    jmp near 0429ah                           ; e9 e1 01
+    jmp near 0459bh                           ; e9 57 04
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov es, [bp+00ah]                         ; 8e 46 0a
     mov di, bx                                ; 89 df
-    mov [bp-012h], es                         ; 8c 46 ee
+    mov [bp-016h], es                         ; 8c 46 ea
     mov ax, word [es:bx+002h]                 ; 26 8b 47 02
-    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov word [bp-01ch], ax                    ; 89 46 e4
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov word [bp-012h], ax                    ; 89 46 ee
+    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
+    mov word [bp-010h], ax                    ; 89 46 f0
+    mov ax, word [es:bx+00ch]                 ; 26 8b 47 0c
     mov word [bp-014h], ax                    ; 89 46 ec
-    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
-    mov word [bp-016h], ax                    ; 89 46 ea
-    mov ax, word [es:bx+00ch]                 ; 26 8b 47 0c
-    mov word [bp-010h], ax                    ; 89 46 f0
     mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
-    mov word [bp-01ch], ax                    ; 89 46 e4
-    or ax, word [bp-010h]                     ; 0b 46 f0
-    je short 04104h                           ; 74 18
+    mov word [bp-00eh], ax                    ; 89 46 f2
+    or ax, word [bp-014h]                     ; 0b 46 ec
+    je short 0418fh                           ; 74 18
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     shr ax, 008h                              ; c1 e8 08
@@ -5479,26 +5555,26 @@
     push 003b6h                               ; 68 b6 03
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 eb d7
+    call 018e9h                               ; e8 60 d7
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 044f5h                           ; e9 f1 03
-    mov es, [bp-012h]                         ; 8e 46 ee
+    jmp near 045cch                           ; e9 3d 04
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov ax, word [es:di+008h]                 ; 26 8b 45 08
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-014h], ax                    ; 89 46 ec
     mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
-    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov word [bp-00eh], ax                    ; 89 46 f2
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00044h                ; 3d 44 00
-    je near 04296h                            ; 0f 84 74 01
+    je near 04597h                            ; 0f 84 ea 03
     cmp ax, strict word 00047h                ; 3d 47 00
-    je near 04296h                            ; 0f 84 6d 01
+    je near 04597h                            ; 0f 84 e3 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-028h]                         ; 8d 46 d8
-    call 08caah                               ; e8 74 4b
+    call 0902ah                               ; e8 69 4e
     mov word [bp-028h], strict word 00028h    ; c7 46 d8 28 00
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov dx, word [bp-00eh]                    ; 8b 56 f2
     xchg ah, al                               ; 86 c4
     xchg dh, dl                               ; 86 d6
@@ -5506,44 +5582,70 @@
     mov word [bp-026h], ax                    ; 89 46 da
     mov word [bp-024h], dx                    ; 89 56 dc
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     xchg ah, al                               ; 86 c4
     mov word [bp-021h], ax                    ; 89 46 df
-    les ax, [bp-00ch]                         ; c4 46 f4
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
+    mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:si+00ah], ax                 ; 26 89 44 0a
     mov word [es:si+00ch], 00800h             ; 26 c7 44 0c 00 08
-    cmp byte [bp-006h], 008h                  ; 80 7e fa 08
-    jbe short 0418dh                          ; 76 26
-    push dword [bp-016h]                      ; 66 ff 76 ea
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    cmp AL, strict byte 00ch                  ; 3c 0c
+    jc short 04221h                           ; 72 2b
+    push word [bp-012h]                       ; ff 76 ee
+    push word [bp-010h]                       ; ff 76 f0
     push strict byte 00001h                   ; 6a 01
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000bh                ; b9 0b 00
     sal ax, 1                                 ; d1 e0
     rcl bx, 1                                 ; d1 d3
-    loop 04172h                               ; e2 fa
+    loop 04206h                               ; e2 fa
     push bx                                   ; 53
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     mov cx, ss                                ; 8c d1
     lea bx, [bp-028h]                         ; 8d 5e d8
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 07f53h                               ; e8 c8 3d
-    jmp short 041b1h                          ; eb 24
-    push dword [bp-016h]                      ; 66 ff 76 ea
+    call 082c2h                               ; e8 a3 40
+    jmp short 04279h                          ; eb 58
+    cmp AL, strict byte 008h                  ; 3c 08
+    jc short 04250h                           ; 72 2b
+    push word [bp-012h]                       ; ff 76 ee
+    push word [bp-010h]                       ; ff 76 f0
     push strict byte 00001h                   ; 6a 01
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000bh                ; b9 0b 00
     sal ax, 1                                 ; d1 e0
     rcl bx, 1                                 ; d1 d3
-    loop 04198h                               ; e2 fa
+    loop 04235h                               ; e2 fa
     push bx                                   ; 53
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     mov cx, ss                                ; 8c d1
     lea bx, [bp-028h]                         ; 8d 5e d8
     mov dx, strict word 0000ch                ; ba 0c 00
-    call 0280ah                               ; e8 59 e6
-    mov byte [bp-004h], al                    ; 88 46 fc
+    call 07626h                               ; e8 d8 33
+    jmp short 04279h                          ; eb 29
+    push word [bp-012h]                       ; ff 76 ee
+    push word [bp-010h]                       ; ff 76 f0
+    push strict byte 00001h                   ; 6a 01
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
+    xor bx, bx                                ; 31 db
+    mov cx, strict word 0000bh                ; b9 0b 00
+    sal ax, 1                                 ; d1 e0
+    rcl bx, 1                                 ; d1 d3
+    loop 04260h                               ; e2 fa
+    push bx                                   ; 53
+    push ax                                   ; 50
+    push strict byte 00000h                   ; 6a 00
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    mov cx, ss                                ; 8c d1
+    lea bx, [bp-028h]                         ; 8d 5e d8
+    mov dx, strict word 0000ch                ; ba 0c 00
+    call 027eah                               ; e8 71 e5
+    mov byte [bp-006h], al                    ; 88 46 fa
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov ax, word [es:si+016h]                 ; 26 8b 44 16
@@ -5552,14 +5654,14 @@
     shr bx, 1                                 ; d1 eb
     rcr ax, 1                                 ; d1 d8
-    loop 041c2h                               ; e2 fa
-    mov es, [bp-012h]                         ; 8e 46 ee
+    loop 0428ah                               ; e2 fa
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov word [es:di+002h], ax                 ; 26 89 45 02
-    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je near 04296h                            ; 0f 84 bf 00
-    mov bx, 00cd6h                            ; bb d6 0c
+    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
+    je near 04597h                            ; 0f 84 f8 02
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 cc d6
-    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    call 018aeh                               ; e8 04 d6
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     mov ax, word [bp+01ch]                    ; 8b 46 1c
@@ -5569,13 +5671,13 @@
     push 003dfh                               ; 68 df 03
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 f0 d6
+    call 018e9h                               ; e8 28 d6
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 044fdh                           ; e9 f6 02
+    jmp near 045d4h                           ; e9 05 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe near 044f5h                          ; 0f 87 e7 02
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    jnbe near 045cch                          ; 0f 87 f6 02
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 00018h           ; 6b c0 18
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -5584,11 +5686,11 @@
     mov al, byte [es:di+021h]                 ; 26 8a 45 21
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 04287h                           ; 74 62
+    je short 04361h                           ; 74 74
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 04265h                           ; 74 3b
+    je short 0432dh                           ; 74 3b
     test bx, bx                               ; 85 db
-    jne near 04296h                           ; 0f 85 66 00
+    jne near 04597h                           ; 0f 85 9f 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 04246h                          ; 75 12
+    jne short 0430eh                          ; 75 12
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     xor ah, ah                                ; 30 e4
@@ -5597,6 +5699,6 @@
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 044fdh                           ; e9 b7 02
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
+    jmp near 045d4h                           ; e9 c6 02
+    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     imul dx, dx, strict byte 00018h           ; 6b d2 18
     db  0feh, 0c0h
@@ -5609,12 +5711,12 @@
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+01ch], ax                    ; 89 46 1c
-    jmp near 04296h                           ; e9 31 00
+    jmp near 04597h                           ; e9 6a 02
     test al, al                               ; 84 c0
-    jne short 04275h                          ; 75 0c
+    jne short 0433dh                          ; 75 0c
     or bh, 0b0h                               ; 80 cf b0
     mov word [bp+01ch], bx                    ; 89 5e 1c
     mov byte [bp+01ch], al                    ; 88 46 1c
-    jmp near 04500h                           ; e9 8b 02
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
+    jmp near 045d7h                           ; e9 9a 02
+    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     imul dx, dx, strict byte 00018h           ; 6b d2 18
     db  0feh, 0c8h
@@ -5630,15 +5732,14 @@
     mov dl, al                                ; 88 c2
     mov word [bp+01ch], dx                    ; 89 56 1c
-    mov byte [bp+01dh], 000h                  ; c6 46 1d 00
-    xor bx, bx                                ; 31 db
-    mov dx, strict word 00074h                ; ba 74 00
-    mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 69 d3
-    and byte [bp+022h], 0feh                  ; 80 66 22 fe
-    leave                                     ; c9
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    retn                                      ; c3
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    jmp near 04597h                           ; e9 36 02
+    test al, al                               ; 84 c0
+    db  00fh, 095h, 0c0h
+    ; setne al                                  ; 0f 95 c0
+    movzx dx, al                              ; 0f b6 d0
+    mov ax, word [bp+01ch]                    ; 8b 46 1c
+    xor al, al                                ; 30 c0
+    or ax, dx                                 ; 09 d0
+    jmp short 04327h                          ; eb b5
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 00018h           ; 6b c0 18
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -5646,13 +5747,13 @@
     mov al, byte [es:si+021h]                 ; 26 8a 44 21
     test al, al                               ; 84 c0
-    je short 042c7h                           ; 74 06
+    je short 0438ch                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 040a0h                           ; e9 d9 fd
-    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 04296h                           ; 74 c9
+    jmp near 0412bh                           ; e9 9f fd
+    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
+    je near 04597h                            ; 0f 84 03 02
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 044fdh                           ; e9 25 02
+    jmp near 045d4h                           ; e9 35 02
     mov dx, word [bp+010h]                    ; 8b 56 10
     mov cx, word [bp+00ah]                    ; 8b 4e 0a
@@ -5662,9 +5763,9 @@
     mov di, dx                                ; 89 d7
     mov ax, word [es:di]                      ; 26 8b 05
-    mov word [bp-00eh], ax                    ; 89 46 f2
+    mov word [bp-00ch], ax                    ; 89 46 f4
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 044f5h                            ; 0f 82 01 02
-    jc short 04343h                           ; 72 4d
-    movzx di, byte [bp-006h]                  ; 0f b6 7e fa
+    jc near 045cch                            ; 0f 82 11 02
+    jc short 0440ah                           ; 72 4d
+    movzx di, byte [bp-002h]                  ; 0f b6 7e fe
     imul di, di, strict byte 00018h           ; 6b ff 18
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -5686,6 +5787,6 @@
     db  066h, 026h, 0c7h, 045h, 014h, 0ffh, 0ffh, 0ffh, 0ffh
     ; mov dword [es:di+014h], strict dword 0ffffffffh ; 66 26 c7 45 14 ff ff ff ff
-    cmp word [bp-00eh], strict byte 0001eh    ; 83 7e f2 1e
-    jc near 04419h                            ; 0f 82 ce 00
+    cmp word [bp-00ch], strict byte 0001eh    ; 83 7e f4 1e
+    jc near 044e2h                            ; 0f 82 d0 00
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
@@ -5693,5 +5794,5 @@
     mov word [es:bx+01ch], ax                 ; 26 89 47 1c
     mov word [es:bx+01ah], 00312h             ; 26 c7 47 1a 12 03
-    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
+    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     mov ax, cx                                ; 89 c8
     cwd                                       ; 99
@@ -5704,9 +5805,9 @@
     mov di, si                                ; 89 f7
     add di, ax                                ; 01 c7
-    mov dx, word [es:di+001c2h]               ; 26 8b 95 c2 01
-    mov ax, word [es:di+001c4h]               ; 26 8b 85 c4 01
+    mov ax, word [es:di+001c2h]               ; 26 8b 85 c2 01
     mov word [bp-01ah], ax                    ; 89 46 e6
+    mov dx, word [es:di+001c4h]               ; 26 8b 95 c4 01
     mov al, byte [es:di+001c1h]               ; 26 8a 85 c1 01
-    mov byte [bp-002h], al                    ; 88 46 fe
+    mov byte [bp-004h], al                    ; 88 46 fc
     imul cx, cx, strict byte 00018h           ; 6b c9 18
     mov di, si                                ; 89 f7
@@ -5716,44 +5817,44 @@
     db  00fh, 094h, 0c0h
     ; sete al                                   ; 0f 94 c0
-    xor ah, ah                                ; 30 e4
-    or AL, strict byte 070h                   ; 0c 70
-    mov di, ax                                ; 89 c7
-    mov word [es:si+001f0h], dx               ; 26 89 94 f0 01
+    movzx cx, al                              ; 0f b6 c8
+    or cl, 070h                               ; 80 c9 70
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov word [es:si+001f2h], ax               ; 26 89 84 f2 01
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    mov word [es:si+001f0h], ax               ; 26 89 84 f0 01
+    mov word [es:si+001f2h], dx               ; 26 89 94 f2 01
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     cwd                                       ; 99
-    mov cx, strict word 00002h                ; b9 02 00
-    idiv cx                                   ; f7 f9
+    mov di, strict word 00002h                ; bf 02 00
+    idiv di                                   ; f7 ff
     or dl, 00eh                               ; 80 ca 0e
-    sal dx, 004h                              ; c1 e2 04
-    mov byte [es:si+001f4h], dl               ; 26 88 94 f4 01
+    mov ax, dx                                ; 89 d0
+    sal ax, 004h                              ; c1 e0 04
+    mov byte [es:si+001f4h], al               ; 26 88 84 f4 01
     mov byte [es:si+001f5h], 0cbh             ; 26 c6 84 f5 01 cb
-    mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [es:si+001f6h], al               ; 26 88 84 f6 01
     mov word [es:si+001f7h], strict word 00001h ; 26 c7 84 f7 01 01 00
     mov byte [es:si+001f9h], 000h             ; 26 c6 84 f9 01 00
-    mov word [es:si+001fah], di               ; 26 89 bc fa 01
+    mov word [es:si+001fah], cx               ; 26 89 8c fa 01
     mov word [es:si+001fch], strict word 00000h ; 26 c7 84 fc 01 00 00
     mov byte [es:si+001feh], 011h             ; 26 c6 84 fe 01 11
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
-    jmp short 043fch                          ; eb 05
+    jmp short 044c5h                          ; eb 05
     cmp ch, 00fh                              ; 80 fd 0f
-    jnc short 0440fh                          ; 73 13
+    jnc short 044d8h                          ; 73 13
     movzx dx, ch                              ; 0f b6 d5
     add dx, 00312h                            ; 81 c2 12 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 01600h                               ; e8 f7 d1
+    call 01600h                               ; e8 2e d1
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 043f7h                          ; eb e8
+    jmp short 044c0h                          ; eb e8
     neg cl                                    ; f6 d9
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:si+001ffh], cl               ; 26 88 8c ff 01
-    cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
-    jc near 04296h                            ; 0f 82 75 fe
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    cmp word [bp-00ch], strict byte 00042h    ; 83 7e f4 42
+    jc near 04597h                            ; 0f 82 ad 00
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -5772,5 +5873,5 @@
     mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
     test al, al                               ; 84 c0
-    jne short 04462h                          ; 75 09
+    jne short 0452bh                          ; 75 09
     db  066h, 026h, 0c7h, 047h, 024h, 049h, 053h, 041h, 020h
     ; mov dword [es:bx+024h], strict dword 020415349h ; 66 26 c7 47 24 49 53 41 20
@@ -5781,10 +5882,10 @@
     ; mov dword [es:bx+02ch], strict dword 020202020h ; 66 26 c7 47 2c 20 20 20 20
     test al, al                               ; 84 c0
-    jne short 0448eh                          ; 75 13
+    jne short 04557h                          ; 75 13
     mov word [es:bx+030h], dx                 ; 26 89 57 30
     db  066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
     ; mov dword [es:bx+032h], strict dword 000000000h ; 66 26 c7 47 32 00 00 00 00
     mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov al, byte [bp-002h]                    ; 8a 46 fe
     and AL, strict byte 001h                  ; 24 01
     xor ah, ah                                ; 30 e4
@@ -5796,7 +5897,7 @@
     xor al, al                                ; 30 c0
     mov AH, strict byte 01eh                  ; b4 1e
-    jmp short 044b6h                          ; eb 05
+    jmp short 0457fh                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 044c5h                          ; 73 0f
+    jnc short 0458eh                          ; 73 0f
     movzx si, ah                              ; 0f b6 f4
     mov es, [bp-008h]                         ; 8e 46 f8
@@ -5805,21 +5906,30 @@
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 044b1h                          ; eb ec
+    jmp short 0457ah                          ; eb ec
     neg al                                    ; f6 d8
     mov es, [bp-008h]                         ; 8e 46 f8
     mov byte [es:bx+041h], al                 ; 26 88 47 41
-    jmp near 04296h                           ; e9 c5 fd
+    mov byte [bp+01dh], 000h                  ; c6 46 1d 00
+    xor bx, bx                                ; 31 db
+    mov dx, strict word 00074h                ; ba 74 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 0160eh                               ; e8 68 d0
+    and byte [bp+022h], 0feh                  ; 80 66 22 fe
+    leave                                     ; c9
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    retn                                      ; c3
     or bh, 006h                               ; 80 cf 06
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp short 04511h                          ; eb 38
+    jmp short 045e8h                          ; eb 32
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je near 04296h                            ; 0f 84 b6 fd
+    je short 04597h                           ; 74 dc
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 044f5h                           ; 72 10
-    jbe near 04296h                           ; 0f 86 ad fd
+    jc short 045cch                           ; 72 0c
+    jbe short 04597h                          ; 76 d5
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 044f5h                           ; 72 07
+    jc short 045cch                           ; 72 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe near 04296h                           ; 0f 86 a1 fd
+    jbe short 04597h                          ; 76 cb
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     xor ah, ah                                ; 30 e4
@@ -5831,11 +5941,11 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 fd d0
+    call 0160eh                               ; e8 26 d0
     or byte [bp+022h], 001h                   ; 80 4e 22 01
-    jmp near 042a9h                           ; e9 91 fd
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp short 045aah                          ; eb bc
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 8b d3
+    call 018aeh                               ; e8 b5 d2
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     shr ax, 008h                              ; c1 e8 08
@@ -5844,39 +5954,39 @@
     push 002a1h                               ; 68 a1 02
     push strict byte 00004h                   ; 6a 04
-    jmp near 040fbh                           ; e9 c6 fb
-print_boot_device_:                          ; 0xf4535 LB 0x48
+    jmp near 04186h                           ; e9 7b fb
+print_boot_device_:                          ; 0xf460b LB 0x48
     push cx                                   ; 51
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     test al, al                               ; 84 c0
-    je short 04542h                           ; 74 05
+    je short 04618h                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 0455ch                          ; eb 1a
+    jmp short 04632h                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 0454bh                           ; 74 05
+    je short 04621h                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 0455ch                          ; eb 11
+    jmp short 04632h                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04554h                          ; 75 04
+    jne short 0462ah                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 0455ch                          ; eb 08
+    jmp short 04632h                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 0457ah                           ; 74 21
+    je short 04650h                           ; 74 21
     mov dx, strict word 00001h                ; ba 01 00
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 47 d3
+    call 018aeh                               ; e8 71 d2
     imul dx, dx, strict byte 0000ah           ; 6b d2 0a
-    add dx, 00cfch                            ; 81 c2 fc 0c
+    add dx, 00d12h                            ; 81 c2 12 0d
     push dx                                   ; 52
     push 00402h                               ; 68 02 04
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 72 d3
+    call 018e9h                               ; e8 9c d2
     add sp, strict byte 00006h                ; 83 c4 06
     pop bp                                    ; 5d
     pop cx                                    ; 59
     retn                                      ; c3
-print_boot_failure_:                         ; 0xf457d LB 0x90
+print_boot_failure_:                         ; 0xf4653 LB 0x90
     push si                                   ; 56
     push bp                                   ; 55
@@ -5887,56 +5997,56 @@
     movzx si, ah                              ; 0f b6 f4
     test al, al                               ; 84 c0
-    je short 045aah                           ; 74 1b
-    mov bx, 00cd6h                            ; bb d6 0c
+    je short 04680h                           ; 74 1b
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 14 d3
-    push 00d10h                               ; 68 10 0d
+    call 018aeh                               ; e8 3e d2
+    push 00d26h                               ; 68 26 0d
     push 00416h                               ; 68 16 04
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 44 d3
+    call 018e9h                               ; e8 6e d2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 045eeh                          ; eb 44
+    jmp short 046c4h                          ; eb 44
     test dl, dl                               ; 84 d2
-    je short 045beh                           ; 74 10
-    mov bx, 00cd6h                            ; bb d6 0c
+    je short 04694h                           ; 74 10
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 f5 d2
-    push 00d1ah                               ; 68 1a 0d
-    jmp short 0459dh                          ; eb df
+    call 018aeh                               ; e8 1f d2
+    push 00d30h                               ; 68 30 0d
+    jmp short 04673h                          ; eb df
     test bl, 080h                             ; f6 c3 80
-    je short 045d4h                           ; 74 11
-    mov bx, 00cd6h                            ; bb d6 0c
+    je short 046aah                           ; 74 11
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 e0 d2
+    call 018aeh                               ; e8 0a d2
     push si                                   ; 56
-    push 00d06h                               ; 68 06 0d
-    jmp short 045e3h                          ; eb 0f
-    mov bx, 00cd6h                            ; bb d6 0c
+    push 00d1ch                               ; 68 1c 0d
+    jmp short 046b9h                          ; eb 0f
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 cf d2
+    call 018aeh                               ; e8 f9 d1
     push si                                   ; 56
-    push 00cfch                               ; 68 fc 0c
+    push 00d12h                               ; 68 12 0d
     push 0042bh                               ; 68 2b 04
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 fe d2
+    call 018e9h                               ; e8 28 d2
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+006h], 001h                  ; 80 7e 06 01
-    jne short 04608h                          ; 75 14
+    jne short 046deh                          ; 75 14
     test dh, dh                               ; 84 f6
-    jne short 045fdh                          ; 75 05
+    jne short 046d3h                          ; 75 05
     push 00443h                               ; 68 43 04
-    jmp short 04600h                          ; eb 03
+    jmp short 046d6h                          ; eb 03
     push 0046dh                               ; 68 6d 04
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 e4 d2
+    call 018e9h                               ; e8 0e d2
     add sp, strict byte 00004h                ; 83 c4 04
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-print_cdromboot_failure_:                    ; 0xf460d LB 0x24
+print_cdromboot_failure_:                    ; 0xf46e3 LB 0x24
     push bx                                   ; 53
     push cx                                   ; 51
@@ -5945,12 +6055,12 @@
     mov bp, sp                                ; 89 e5
     mov dx, ax                                ; 89 c2
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 8e d2
+    call 018aeh                               ; e8 b8 d1
     push dx                                   ; 52
     push 004a2h                               ; 68 a2 04
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 c0 d2
+    call 018e9h                               ; e8 ea d1
     add sp, strict byte 00006h                ; 83 c4 06
     pop bp                                    ; 5d
@@ -5959,5 +6069,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-_int19_function:                             ; 0xf4631 LB 0x251
+_int19_function:                             ; 0xf4707 LB 0x251
     push si                                   ; 56
     push di                                   ; 57
@@ -5965,13 +6075,13 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 dc cf
+    call 0161ch                               ; e8 06 cf
     mov bx, ax                                ; 89 c3
     mov word [bp-00ah], ax                    ; 89 46 f6
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     mov ax, strict word 0003dh                ; b8 3d 00
-    call 0165ch                               ; e8 0d d0
+    call 0165ch                               ; e8 37 cf
     movzx si, al                              ; 0f b6 f0
     mov ax, strict word 00038h                ; b8 38 00
-    call 0165ch                               ; e8 04 d0
+    call 0165ch                               ; e8 2e cf
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
@@ -5979,5 +6089,5 @@
     or si, ax                                 ; 09 c6
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 0165ch                               ; e8 f5 cf
+    call 0165ch                               ; e8 1f cf
     and AL, strict byte 00fh                  ; 24 0f
     xor ah, ah                                ; 30 e4
@@ -5986,30 +6096,30 @@
     mov dx, 00339h                            ; ba 39 03
     mov ax, bx                                ; 89 d8
-    call 01600h                               ; e8 88 cf
+    call 01600h                               ; e8 b2 ce
     test al, al                               ; 84 c0
-    je short 04687h                           ; 74 0b
+    je short 0475dh                           ; 74 0b
     mov dx, 00339h                            ; ba 39 03
     mov ax, bx                                ; 89 d8
-    call 01600h                               ; e8 7c cf
+    call 01600h                               ; e8 a6 ce
     movzx si, al                              ; 0f b6 f0
     cmp byte [bp+008h], 001h                  ; 80 7e 08 01
-    jne short 0469dh                          ; 75 10
+    jne short 04773h                          ; 75 10
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 0165ch                               ; e8 c9 cf
+    call 0165ch                               ; e8 f3 ce
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
-    call 0720dh                               ; e8 70 2b
+    call 0734fh                               ; e8 dc 2b
     cmp byte [bp+008h], 002h                  ; 80 7e 08 02
-    jne short 046a6h                          ; 75 03
+    jne short 0477ch                          ; 75 03
     shr si, 004h                              ; c1 ee 04
     cmp byte [bp+008h], 003h                  ; 80 7e 08 03
-    jne short 046afh                          ; 75 03
+    jne short 04785h                          ; 75 03
     shr si, 008h                              ; c1 ee 08
     cmp byte [bp+008h], 004h                  ; 80 7e 08 04
-    jne short 046b8h                          ; 75 03
+    jne short 0478eh                          ; 75 03
     shr si, 00ch                              ; c1 ee 0c
     cmp si, strict byte 00010h                ; 83 fe 10
-    jnc short 046c1h                          ; 73 04
+    jnc short 04797h                          ; 73 04
     mov byte [bp-004h], 001h                  ; c6 46 fc 01
     xor al, al                                ; 30 c0
@@ -6017,8 +6127,8 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-008h], al                    ; 88 46 f8
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 d7 d1
+    call 018aeh                               ; e8 01 d1
     push si                                   ; 56
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
@@ -6026,39 +6136,39 @@
     push 004c2h                               ; 68 c2 04
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 04 d2
+    call 018e9h                               ; e8 2e d1
     add sp, strict byte 00008h                ; 83 c4 08
     and si, strict byte 0000fh                ; 83 e6 0f
     cmp si, strict byte 00002h                ; 83 fe 02
-    jc short 046feh                           ; 72 0e
-    jbe short 0470dh                          ; 76 1b
+    jc short 047d4h                           ; 72 0e
+    jbe short 047e3h                          ; 76 1b
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 0472bh                           ; 74 34
+    je short 04801h                           ; 74 34
     cmp si, strict byte 00003h                ; 83 fe 03
-    je short 04721h                           ; 74 25
-    jmp short 04758h                          ; eb 5a
+    je short 047f7h                           ; 74 25
+    jmp short 0482eh                          ; eb 5a
     cmp si, strict byte 00001h                ; 83 fe 01
-    jne short 04758h                          ; 75 55
+    jne short 0482eh                          ; 75 55
     xor al, al                                ; 30 c0
     mov byte [bp-002h], al                    ; 88 46 fe
     mov byte [bp-006h], al                    ; 88 46 fa
-    jmp short 04770h                          ; eb 63
+    jmp short 04846h                          ; eb 63
     mov dx, 00338h                            ; ba 38 03
     mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 01600h                               ; e8 ea ce
+    call 01600h                               ; e8 14 ce
     add AL, strict byte 080h                  ; 04 80
     mov byte [bp-002h], al                    ; 88 46 fe
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
-    jmp short 04770h                          ; eb 4f
+    jmp short 04846h                          ; eb 4f
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
     mov byte [bp-006h], 001h                  ; c6 46 fa 01
-    jmp short 04735h                          ; eb 0a
+    jmp short 0480bh                          ; eb 0a
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 04770h                           ; 74 3b
-    call 0377ah                               ; e8 42 f0
+    je short 04846h                           ; 74 3b
+    call 0375ah                               ; e8 4c ef
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 0475fh                           ; 74 21
-    call 0460dh                               ; e8 cc fe
+    je short 04835h                           ; 74 21
+    call 046e3h                               ; e8 cc fe
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
@@ -6067,45 +6177,45 @@
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     mov cx, strict word 00001h                ; b9 01 00
-    call 0457dh                               ; e8 25 fe
+    call 04653h                               ; e8 25 fe
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 0487eh                           ; e9 1f 01
+    jmp near 04954h                           ; e9 1f 01
     mov dx, 0032eh                            ; ba 2e 03
     mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 0161ch                               ; e8 b4 ce
+    call 0161ch                               ; e8 de cd
     mov di, ax                                ; 89 c7
     shr bx, 008h                              ; c1 eb 08
     mov byte [bp-002h], bl                    ; 88 5e fe
     cmp byte [bp-008h], 001h                  ; 80 7e f8 01
-    jne near 047ech                           ; 0f 85 74 00
+    jne near 048c2h                           ; 0f 85 74 00
     xor si, si                                ; 31 f6
     mov ax, 0e200h                            ; b8 00 e2
     mov es, ax                                ; 8e c0
     cmp word [es:si], 0aa55h                  ; 26 81 3c 55 aa
-    jne short 04741h                          ; 75 bb
+    jne short 04817h                          ; 75 bb
     mov cx, ax                                ; 89 c1
     mov si, word [es:si+01ah]                 ; 26 8b 74 1a
     cmp word [es:si+002h], 0506eh             ; 26 81 7c 02 6e 50
-    jne short 04741h                          ; 75 ad
+    jne short 04817h                          ; 75 ad
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04741h                          ; 75 a6
+    jne short 04817h                          ; 75 a6
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
     mov dx, word [es:di]                      ; 26 8b 15
     mov ax, word [es:di+002h]                 ; 26 8b 45 02
     cmp ax, 06568h                            ; 3d 68 65
-    jne short 047cah                          ; 75 1f
+    jne short 048a0h                          ; 75 1f
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 047cah                          ; 75 19
+    jne short 048a0h                          ; 75 19
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 04535h                               ; e8 75 fd
+    call 0460bh                               ; e8 75 fd
     mov word [bp-00eh], strict word 00006h    ; c7 46 f2 06 00
     mov word [bp-00ch], cx                    ; 89 4e f4
-    jmp short 047e6h                          ; eb 1c
+    jmp short 048bch                          ; eb 1c
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 04535h                               ; e8 5c fd
+    call 0460bh                               ; e8 5c fd
     sti                                       ; fb
     mov word [bp-00ch], cx                    ; 89 4e f4
@@ -6114,9 +6224,9 @@
     mov word [bp-00eh], ax                    ; 89 46 f2
     call far [bp-00eh]                        ; ff 5e f2
-    jmp near 04741h                           ; e9 55 ff
+    jmp near 04817h                           ; e9 55 ff
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 04818h                          ; 75 26
+    jne short 048eeh                          ; 75 26
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 04818h                          ; 75 20
+    jne short 048eeh                          ; 75 20
     mov di, 007c0h                            ; bf c0 07
     mov es, di                                ; 8e c7
@@ -6131,27 +6241,27 @@
     sbb ax, strict byte 00000h                ; 83 d8 00
     test ax, ax                               ; 85 c0
-    jne near 04741h                           ; 0f 85 29 ff
+    jne near 04817h                           ; 0f 85 29 ff
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
     db  00fh, 094h, 0c1h
     ; sete cl                                   ; 0f 94 c1
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 04827h                           ; 74 02
+    je short 048fdh                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     xor dx, dx                                ; 31 d2
     mov ax, di                                ; 89 f8
-    call 0161ch                               ; e8 ee cd
+    call 0161ch                               ; e8 18 cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, di                                ; 89 f8
-    call 0161ch                               ; e8 e4 cd
+    call 0161ch                               ; e8 0e cd
     cmp bx, ax                                ; 39 c3
-    je short 0484dh                           ; 74 11
+    je short 04923h                           ; 74 11
     test cl, cl                               ; 84 c9
-    jne short 04863h                          ; 75 23
+    jne short 04939h                          ; 75 23
     mov dx, 001feh                            ; ba fe 01
     mov ax, di                                ; 89 f8
-    call 0161ch                               ; e8 d4 cd
+    call 0161ch                               ; e8 fe cc
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04863h                           ; 74 16
+    je short 04939h                           ; 74 16
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
@@ -6160,9 +6270,9 @@
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     xor cx, cx                                ; 31 c9
-    jmp near 04755h                           ; e9 f2 fe
+    jmp near 0482bh                           ; e9 f2 fe
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 04535h                               ; e8 c3 fc
+    call 0460bh                               ; e8 c3 fc
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     xor dx, dx                                ; 31 d2
@@ -6174,5 +6284,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4882 LB 0x11
+keyboard_panic_:                             ; 0xf4958 LB 0x11
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6180,9 +6290,9 @@
     push 004e2h                               ; 68 e2 04
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 5b d0
+    call 018e9h                               ; e8 85 cf
     add sp, strict byte 00006h                ; 83 c4 06
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4893 LB 0x27a
+_keyboard_init:                              ; 0xf4969 LB 0x27a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6196,16 +6306,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 048b6h                           ; 74 0d
+    je short 0498ch                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 048b6h                          ; 76 08
+    jbe short 0498ch                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0489fh                          ; eb e9
+    jmp short 04975h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 048bfh                          ; 75 05
+    jne short 04995h                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04882h                               ; e8 c3 ff
+    call 04958h                               ; e8 c3 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6214,16 +6324,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 048d9h                          ; 75 0d
+    jne short 049afh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 048d9h                          ; 76 08
+    jbe short 049afh                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 048c2h                          ; eb e9
+    jmp short 04998h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 048e3h                          ; 75 06
+    jne short 049b9h                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04882h                               ; e8 9f ff
+    call 04958h                               ; e8 9f ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6231,7 +6341,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, strict word 00055h                ; 3d 55 00
-    je short 048f4h                           ; 74 06
+    je short 049cah                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04882h                               ; e8 8e ff
+    call 04958h                               ; e8 8e ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
@@ -6243,16 +6353,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04914h                           ; 74 0d
+    je short 049eah                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04914h                          ; 76 08
+    jbe short 049eah                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 048fdh                          ; eb e9
+    jmp short 049d3h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0491eh                          ; 75 06
+    jne short 049f4h                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04882h                               ; e8 64 ff
+    call 04958h                               ; e8 64 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6261,16 +6371,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04938h                          ; 75 0d
+    jne short 04a0eh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04938h                          ; 76 08
+    jbe short 04a0eh                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04921h                          ; eb e9
+    jmp short 049f7h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04942h                          ; 75 06
+    jne short 04a18h                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04882h                               ; e8 40 ff
+    call 04958h                               ; e8 40 ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6278,7 +6388,7 @@
     ; sub ah, ah                                ; 2a e4
     test ax, ax                               ; 85 c0
-    je short 04952h                           ; 74 06
+    je short 04a28h                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04882h                               ; e8 30 ff
+    call 04958h                               ; e8 30 ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
@@ -6290,16 +6400,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04972h                           ; 74 0d
+    je short 04a48h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04972h                          ; 76 08
+    jbe short 04a48h                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0495bh                          ; eb e9
+    jmp short 04a31h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0497ch                          ; 75 06
+    jne short 04a52h                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04882h                               ; e8 06 ff
+    call 04958h                               ; e8 06 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6308,16 +6418,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04996h                          ; 75 0d
+    jne short 04a6ch                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04996h                          ; 76 08
+    jbe short 04a6ch                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0497fh                          ; eb e9
+    jmp short 04a55h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 049a0h                          ; 75 06
+    jne short 04a76h                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04882h                               ; e8 e2 fe
+    call 04958h                               ; e8 e2 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6325,7 +6435,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 049b1h                           ; 74 06
+    je short 04a87h                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04882h                               ; e8 d1 fe
+    call 04958h                               ; e8 d1 fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6334,16 +6444,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 049cbh                          ; 75 0d
+    jne short 04aa1h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 049cbh                          ; 76 08
+    jbe short 04aa1h                          ; 76 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 049b4h                          ; eb e9
+    jmp short 04a8ah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 049d5h                          ; 75 06
+    jne short 04aabh                          ; 75 06
     mov ax, strict word 0001fh                ; b8 1f 00
-    call 04882h                               ; e8 ad fe
+    call 04958h                               ; e8 ad fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6351,12 +6461,12 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 049eeh                           ; 74 0e
+    je short 04ac4h                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 049eeh                           ; 74 06
+    je short 04ac4h                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04882h                               ; e8 94 fe
+    call 04958h                               ; e8 94 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
@@ -6368,16 +6478,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04a0eh                           ; 74 0d
+    je short 04ae4h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04a0eh                          ; 76 08
+    jbe short 04ae4h                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 049f7h                          ; eb e9
+    jmp short 04acdh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04a18h                          ; 75 06
+    jne short 04aeeh                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04882h                               ; e8 6a fe
+    call 04958h                               ; e8 6a fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6386,16 +6496,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04a32h                          ; 75 0d
+    jne short 04b08h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04a32h                          ; 76 08
+    jbe short 04b08h                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04a1bh                          ; eb e9
+    jmp short 04af1h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04a3ch                          ; 75 06
+    jne short 04b12h                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04882h                               ; e8 46 fe
+    call 04958h                               ; e8 46 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6403,7 +6513,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04a4dh                           ; 74 06
+    je short 04b23h                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04882h                               ; e8 35 fe
+    call 04958h                               ; e8 35 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -6415,16 +6525,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04a6dh                           ; 74 0d
+    je short 04b43h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04a6dh                          ; 76 08
+    jbe short 04b43h                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04a56h                          ; eb e9
+    jmp short 04b2ch                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04a77h                          ; 75 06
+    jne short 04b4dh                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04882h                               ; e8 0b fe
+    call 04958h                               ; e8 0b fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
@@ -6436,16 +6546,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04a97h                           ; 74 0d
+    je short 04b6dh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04a97h                          ; 76 08
+    jbe short 04b6dh                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04a80h                          ; eb e9
+    jmp short 04b56h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04aa1h                          ; 75 06
+    jne short 04b77h                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04882h                               ; e8 e1 fd
+    call 04958h                               ; e8 e1 fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
@@ -6457,16 +6567,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04ac1h                           ; 74 0d
+    je short 04b97h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ac1h                          ; 76 08
+    jbe short 04b97h                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04aaah                          ; eb e9
+    jmp short 04b80h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04acbh                          ; 75 06
+    jne short 04ba1h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04882h                               ; e8 b7 fd
+    call 04958h                               ; e8 b7 fd
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6475,16 +6585,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04ae5h                          ; 75 0d
+    jne short 04bbbh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ae5h                          ; 76 08
+    jbe short 04bbbh                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04aceh                          ; eb e9
+    jmp short 04ba4h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04aefh                          ; 75 06
+    jne short 04bc5h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04882h                               ; e8 93 fd
+    call 04958h                               ; e8 93 fd
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6492,15 +6602,15 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04b00h                           ; 74 06
+    je short 04bd6h                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04882h                               ; e8 82 fd
+    call 04958h                               ; e8 82 fd
     mov AL, strict byte 0a8h                  ; b0 a8
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
     xor ax, ax                                ; 31 c0
-    call 05cf1h                               ; e8 e6 11
+    call 05e33h                               ; e8 52 12
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf4b0d LB 0x90
+enqueue_key_:                                ; 0xf4be3 LB 0x90
     push bx                                   ; 53
     push cx                                   ; 51
@@ -6512,30 +6622,30 @@
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 f9 ca
+    call 0161ch                               ; e8 23 ca
     mov di, ax                                ; 89 c7
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 ee ca
+    call 0161ch                               ; e8 18 ca
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 04b3bh                           ; 72 03
+    jc short 04c11h                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 04b43h                          ; 75 04
+    jne short 04c19h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 04b68h                          ; eb 25
+    jmp short 04c3eh                          ; eb 25
     xor bh, bh                                ; 30 ff
     mov dx, si                                ; 89 f2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 c1 ca
+    call 0160eh                               ; e8 eb c9
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     lea dx, [si+001h]                         ; 8d 54 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 b4 ca
+    call 0160eh                               ; e8 de c9
     mov bx, cx                                ; 89 cb
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 c5 ca
+    call 0162ah                               ; e8 ef c9
     mov ax, strict word 00001h                ; b8 01 00
     leave                                     ; c9
@@ -6554,21 +6664,29 @@
     cmp bh, byte [bx+si]                      ; 3a 38
     sub bl, byte [ss:di]                      ; 36 2a 1d
-    aad 04dh                                  ; d5 4d
-    bound cx, [si+031h]                       ; 62 4c 31
+    stosw                                     ; ab
+    dec si                                    ; 4e
+    cmp byte [di+007h], cl                    ; 38 4d 07
+    dec bp                                    ; 4d
+    pop ES                                    ; 07
+    dec bp                                    ; 4d
+    mov dx, 0e04dh                            ; ba 4d e0
     dec sp                                    ; 4c
-    xor word [si-01ch], cx                    ; 31 4c e4
+    sub AL, strict byte 04eh                  ; 2c 4e
+    jnp short 04cb1h                          ; 7b 4e
+    sahf                                      ; 9e
+    dec si                                    ; 4e
+    jns short 04cb4h                          ; 79 4d
+    pop ES                                    ; 07
+    dec bp                                    ; 4d
+    pop ES                                    ; 07
+    dec bp                                    ; 4d
+    rep dec bp                                ; f3 4d
+    stc                                       ; f9
     dec sp                                    ; 4c
-    or cl, byte [si+056h]                     ; 0a 4c 56
-    dec bp                                    ; 4d
-    movsw                                     ; a5
-    dec bp                                    ; 4d
-    enter 0a34dh, 04ch                        ; c8 4d a3 4c
-    xor word [si+031h], cx                    ; 31 4c 31
-    dec sp                                    ; 4c
-    sbb ax, 0234dh                            ; 1d 4d 23
-    dec sp                                    ; 4c
-    xchg byte [di-03fh], cl                   ; 86 4d c1
-    dec bp                                    ; 4d
-_int09_function:                             ; 0xf4b9d LB 0x358
+    pop sp                                    ; 5c
+    dec si                                    ; 4e
+    xchg di, ax                               ; 97
+    dec si                                    ; 4e
+_int09_function:                             ; 0xf4c73 LB 0x358
     push si                                   ; 56
     push di                                   ; 57
@@ -6577,27 +6695,27 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     test al, al                               ; 84 c0
-    jne short 04bc6h                          ; 75 19
-    mov bx, 00cd6h                            ; bb d6 0c
+    jne short 04c9ch                          ; 75 19
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 f6 cc
+    call 018aeh                               ; e8 20 cc
     push 004f5h                               ; 68 f5 04
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 29 cd
+    call 018e9h                               ; e8 53 cc
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 04ef1h                           ; e9 2b 03
+    jmp near 04fc7h                           ; e9 2b 03
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 31 ca
+    call 01600h                               ; e8 5b c9
     mov byte [bp-00ah], al                    ; 88 46 f6
     mov bl, al                                ; 88 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 23 ca
+    call 01600h                               ; e8 4d c9
     mov byte [bp-00ch], al                    ; 88 46 f4
     mov byte [bp-008h], al                    ; 88 46 f8
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 14 ca
+    call 01600h                               ; e8 3e c9
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-002h], al                    ; 88 46 fe
@@ -6606,9 +6724,9 @@
     pop ES                                    ; 07
     mov cx, strict word 00010h                ; b9 10 00
-    mov di, 04b6eh                            ; bf 6e 4b
+    mov di, 04c44h                            ; bf 44 4c
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04b7dh]               ; 2e 8b 85 7d 4b
+    mov ax, word [cs:di+04c53h]               ; 2e 8b 85 53 4c
     jmp ax                                    ; ff e0
     xor bl, 040h                              ; 80 f3 40
@@ -6616,15 +6734,15 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f6 c9
+    call 0160eh                               ; e8 20 c9
     or byte [bp-008h], 040h                   ; 80 4e f8 40
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    jmp near 04d99h                           ; e9 76 01
+    jmp near 04e6fh                           ; e9 76 01
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 0bfh                  ; 24 bf
     mov byte [bp-008h], al                    ; 88 46 f8
     movzx bx, al                              ; 0f b6 d8
-    jmp near 04d99h                           ; e9 68 01
+    jmp near 04e6fh                           ; e9 68 01
     test byte [bp-002h], 002h                 ; f6 46 fe 02
-    jne near 04ed3h                           ; 0f 85 9a 02
+    jne near 04fa9h                           ; 0f 85 9a 02
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 07fh                  ; 24 7f
@@ -6635,29 +6753,29 @@
     inc ax                                    ; 40
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 04c52h                           ; 74 06
+    je short 04d28h                           ; 74 06
     not al                                    ; f6 d0
     and bl, al                                ; 20 c3
-    jmp short 04c54h                          ; eb 02
+    jmp short 04d2ah                          ; eb 02
     or bl, al                                 ; 08 c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 af c9
-    jmp near 04ed3h                           ; e9 71 02
+    call 0160eh                               ; e8 d9 c8
+    jmp near 04fa9h                           ; e9 71 02
     test byte [bp-004h], 001h                 ; f6 46 fc 01
-    jne near 04ed3h                           ; 0f 85 69 02
+    jne near 04fa9h                           ; 0f 85 69 02
     or bl, 004h                               ; 80 cb 04
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 96 c9
+    call 0160eh                               ; e8 c0 c8
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 04c8ch                           ; 74 0d
+    je short 04d62h                           ; 74 0d
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-002h], al                    ; 88 46 fe
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04c9ah                          ; eb 0e
+    jmp short 04d70h                          ; eb 0e
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     or AL, strict byte 001h                   ; 0c 01
@@ -6666,21 +6784,21 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 6e c9
-    jmp near 04ed3h                           ; e9 30 02
+    call 0160eh                               ; e8 98 c8
+    jmp near 04fa9h                           ; e9 30 02
     test byte [bp-004h], 001h                 ; f6 46 fc 01
-    jne near 04ed3h                           ; 0f 85 28 02
+    jne near 04fa9h                           ; 0f 85 28 02
     and bl, 0fbh                              ; 80 e3 fb
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 55 c9
+    call 0160eh                               ; e8 7f c8
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 04ccdh                           ; 74 0d
+    je short 04da3h                           ; 74 0d
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-002h], al                    ; 88 46 fe
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04cdbh                          ; eb 0e
+    jmp short 04db1h                          ; eb 0e
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 0feh                  ; 24 fe
@@ -6689,19 +6807,19 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 2d c9
-    jmp near 04ed3h                           ; e9 ef 01
+    call 0160eh                               ; e8 57 c8
+    jmp near 04fa9h                           ; e9 ef 01
     or bl, 008h                               ; 80 cb 08
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 1c c9
+    call 0160eh                               ; e8 46 c8
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 04d06h                           ; 74 0d
+    je short 04ddch                           ; 74 0d
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-002h], al                    ; 88 46 fe
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04d14h                          ; eb 0e
+    jmp short 04deah                          ; eb 0e
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     or AL, strict byte 002h                   ; 0c 02
@@ -6710,19 +6828,19 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f4 c8
-    jmp near 04ed3h                           ; e9 b6 01
+    call 0160eh                               ; e8 1e c8
+    jmp near 04fa9h                           ; e9 b6 01
     and bl, 0f7h                              ; 80 e3 f7
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 e3 c8
+    call 0160eh                               ; e8 0d c8
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 04d3fh                           ; 74 0d
+    je short 04e15h                           ; 74 0d
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-002h], al                    ; 88 46 fe
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04d4dh                          ; eb 0e
+    jmp short 04e23h                          ; eb 0e
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 0fdh                  ; 24 fd
@@ -6731,8 +6849,8 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 bb c8
-    jmp near 04ed3h                           ; e9 7d 01
+    call 0160eh                               ; e8 e5 c7
+    jmp near 04fa9h                           ; e9 7d 01
     test byte [bp-004h], 003h                 ; f6 46 fc 03
-    jne near 04ed3h                           ; 0f 85 75 01
+    jne near 04fa9h                           ; 0f 85 75 01
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     or AL, strict byte 020h                   ; 0c 20
@@ -6741,5 +6859,5 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 9c c8
+    call 0160eh                               ; e8 c6 c7
     mov bl, byte [bp-00ah]                    ; 8a 5e f6
     xor bl, 020h                              ; 80 f3 20
@@ -6747,8 +6865,8 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 8b c8
-    jmp near 04ed3h                           ; e9 4d 01
+    call 0160eh                               ; e8 b5 c7
+    jmp near 04fa9h                           ; e9 4d 01
     test byte [bp-004h], 003h                 ; f6 46 fc 03
-    jne near 04ed3h                           ; 0f 85 45 01
+    jne near 04fa9h                           ; 0f 85 45 01
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 0dfh                  ; 24 df
@@ -6757,6 +6875,6 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 6c c8
-    jmp near 04ed3h                           ; e9 2e 01
+    call 0160eh                               ; e8 96 c7
+    jmp near 04fa9h                           ; e9 2e 01
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     or AL, strict byte 010h                   ; 0c 10
@@ -6765,106 +6883,106 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 55 c8
+    call 0160eh                               ; e8 7f c7
     mov bl, byte [bp-00ah]                    ; 8a 5e f6
     xor bl, 010h                              ; 80 f3 10
-    jmp short 04d78h                          ; eb b7
+    jmp short 04e4eh                          ; eb b7
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 0efh                  ; 24 ef
-    jmp short 04d93h                          ; eb cb
+    jmp short 04e69h                          ; eb cb
     mov al, bl                                ; 88 d8
     and AL, strict byte 00ch                  ; 24 0c
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jne short 04dd5h                          ; 75 05
+    jne short 04eabh                          ; 75 05
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    jne near 04ed3h                           ; 0f 85 f6 00
+    jne near 04fa9h                           ; 0f 85 f6 00
     cmp byte [bp-006h], 058h                  ; 80 7e fa 58
-    jbe short 04e01h                          ; 76 1e
-    mov bx, 00cd6h                            ; bb d6 0c
+    jbe short 04ed7h                          ; 76 1e
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 c0 ca
+    call 018aeh                               ; e8 ea c9
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     push 0050fh                               ; 68 0f 05
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 ee ca
+    call 018e9h                               ; e8 18 ca
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 04ef1h                           ; e9 f0 00
+    jmp near 04fc7h                           ; e9 f0 00
     test bl, 008h                             ; f6 c3 08
-    je short 04e18h                           ; 74 12
+    je short 04eeeh                           ; 74 12
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    mov dl, byte [si+00d2ah]                  ; 8a 94 2a 0d
-    mov ax, word [si+00d2ah]                  ; 8b 84 2a 0d
-    jmp near 04ea4h                           ; e9 8c 00
+    mov dl, byte [si+00d40h]                  ; 8a 94 40 0d
+    mov ax, word [si+00d40h]                  ; 8b 84 40 0d
+    jmp near 04f7ah                           ; e9 8c 00
     test bl, 004h                             ; f6 c3 04
-    je short 04e2fh                           ; 74 12
+    je short 04f05h                           ; 74 12
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    mov dl, byte [si+00d28h]                  ; 8a 94 28 0d
-    mov ax, word [si+00d28h]                  ; 8b 84 28 0d
-    jmp near 04ea4h                           ; e9 75 00
+    mov dl, byte [si+00d3eh]                  ; 8a 94 3e 0d
+    mov ax, word [si+00d3eh]                  ; 8b 84 3e 0d
+    jmp near 04f7ah                           ; e9 75 00
     mov al, byte [bp-002h]                    ; 8a 46 fe
     and AL, strict byte 002h                  ; 24 02
     test al, al                               ; 84 c0
-    jbe short 04e4dh                          ; 76 15
+    jbe short 04f23h                          ; 76 15
     mov al, byte [bp-006h]                    ; 8a 46 fa
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 04e4dh                           ; 72 0e
+    jc short 04f23h                           ; 72 0e
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 04e4dh                         ; 77 0a
+    jnbe short 04f23h                         ; 77 0a
     mov DL, strict byte 0e0h                  ; b2 e0
     movzx si, al                              ; 0f b6 f0
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    jmp short 04ea0h                          ; eb 53
+    jmp short 04f76h                          ; eb 53
     test bl, 003h                             ; f6 c3 03
-    je short 04e7fh                           ; 74 2d
+    je short 04f55h                           ; 74 2d
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    movzx ax, byte [si+00d2ch]                ; 0f b6 84 2c 0d
+    movzx ax, byte [si+00d42h]                ; 0f b6 84 42 0d
     movzx dx, bl                              ; 0f b6 d3
     test dx, ax                               ; 85 c2
-    je short 04e6fh                           ; 74 0a
-    mov dl, byte [si+00d24h]                  ; 8a 94 24 0d
-    mov ax, word [si+00d24h]                  ; 8b 84 24 0d
-    jmp short 04e77h                          ; eb 08
-    mov dl, byte [si+00d26h]                  ; 8a 94 26 0d
-    mov ax, word [si+00d26h]                  ; 8b 84 26 0d
+    je short 04f45h                           ; 74 0a
+    mov dl, byte [si+00d3ah]                  ; 8a 94 3a 0d
+    mov ax, word [si+00d3ah]                  ; 8b 84 3a 0d
+    jmp short 04f4dh                          ; eb 08
+    mov dl, byte [si+00d3ch]                  ; 8a 94 3c 0d
+    mov ax, word [si+00d3ch]                  ; 8b 84 3c 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-006h], al                    ; 88 46 fa
-    jmp short 04eaah                          ; eb 2b
+    jmp short 04f80h                          ; eb 2b
     movzx si, byte [bp-006h]                  ; 0f b6 76 fa
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    movzx ax, byte [si+00d2ch]                ; 0f b6 84 2c 0d
+    movzx ax, byte [si+00d42h]                ; 0f b6 84 42 0d
     movzx dx, bl                              ; 0f b6 d3
     test dx, ax                               ; 85 c2
-    je short 04e9ch                           ; 74 0a
-    mov dl, byte [si+00d26h]                  ; 8a 94 26 0d
-    mov ax, word [si+00d26h]                  ; 8b 84 26 0d
-    jmp short 04ea4h                          ; eb 08
-    mov dl, byte [si+00d24h]                  ; 8a 94 24 0d
-    mov ax, word [si+00d24h]                  ; 8b 84 24 0d
+    je short 04f72h                           ; 74 0a
+    mov dl, byte [si+00d3ch]                  ; 8a 94 3c 0d
+    mov ax, word [si+00d3ch]                  ; 8b 84 3c 0d
+    jmp short 04f7ah                          ; eb 08
+    mov dl, byte [si+00d3ah]                  ; 8a 94 3a 0d
+    mov ax, word [si+00d3ah]                  ; 8b 84 3a 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 04ecah                          ; 75 1a
+    jne short 04fa0h                          ; 75 1a
     test dl, dl                               ; 84 d2
-    jne short 04ecah                          ; 75 16
-    mov bx, 00cd6h                            ; bb d6 0c
+    jne short 04fa0h                          ; 75 16
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 ef c9
+    call 018aeh                               ; e8 19 c9
     push 00546h                               ; 68 46 05
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 22 ca
+    call 018e9h                               ; e8 4c c9
     add sp, strict byte 00004h                ; 83 c4 04
     xor dh, dh                                ; 30 f6
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 04b0dh                               ; e8 3a fc
+    call 04be3h                               ; e8 3a fc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 01dh                  ; 3c 1d
-    je short 04ee0h                           ; 74 04
+    je short 04fb6h                           ; 74 04
     and byte [bp-002h], 0feh                  ; 80 66 fe fe
     and byte [bp-002h], 0fdh                  ; 80 66 fe fd
@@ -6872,10 +6990,10 @@
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 1d c7
+    call 0160eh                               ; e8 47 c6
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-dequeue_key_:                                ; 0xf4ef5 LB 0x90
+dequeue_key_:                                ; 0xf4fcb LB 0x90
     push si                                   ; 56
     push di                                   ; 57
@@ -6887,18 +7005,18 @@
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 0e c7
+    call 0161ch                               ; e8 38 c6
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 03 c7
+    call 0161ch                               ; e8 2d c6
     cmp bx, ax                                ; 39 c3
-    je short 04f5ah                           ; 74 3d
+    je short 05030h                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 db c6
+    call 01600h                               ; e8 05 c6
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 d0 c6
+    call 01600h                               ; e8 fa c5
     mov es, [bp-004h]                         ; 8e 46 fc
     mov byte [es:si], cl                      ; 26 88 0c
@@ -6906,15 +7024,15 @@
     mov byte [es:di], al                      ; 26 88 05
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    je short 04f55h                           ; 74 13
+    je short 0502bh                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 04f4ch                           ; 72 03
+    jc short 05022h                           ; 72 03
     mov bx, strict word 0001eh                ; bb 1e 00
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 d5 c6
+    call 0162ah                               ; e8 ff c5
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 04f5ch                          ; eb 02
+    jmp short 05032h                          ; eb 02
     xor ax, ax                                ; 31 c0
     leave                                     ; c9
@@ -6926,31 +7044,31 @@
     or cl, byte [bx+di]                       ; 0a 09
     add ax, 00102h                            ; 05 02 01
-    add byte [bx+di], ah                      ; 00 21
+    add bh, dh                                ; 00 f7
     push dx                                   ; 52
-    aaa                                       ; 37
-    push ax                                   ; 50
-    jle short 04fc3h                          ; 7e 50
-    retf 0da50h                               ; ca 50 da
-    push ax                                   ; 50
-    add AL, strict byte 051h                  ; 04 51
-    or ax, 07e51h                             ; 0d 51 7e
+    or ax, 05451h                             ; 0d 51 54
     push cx                                   ; 51
-    scasw                                     ; af
+    mov AL, byte [0b051h]                     ; a0 51 b0
     push cx                                   ; 51
-    fcom qword [bx+di+016h]                   ; dc 51 16
+    ficom dword [bx+di-01dh]                  ; da 51 e3
+    push cx                                   ; 51
+    push sp                                   ; 54
     push dx                                   ; 52
-    db  064h, 052h
-    ; fs push dx                                ; 64 52
-_int16_function:                             ; 0xf4f85 LB 0x314
+    test word [bp+si-04eh], dx                ; 85 52 b2
+    push dx                                   ; 52
+    in AL, DX                                 ; ec
+    push dx                                   ; 52
+    db  03ah
+    push bx                                   ; 53
+_int16_function:                             ; 0xf505b LB 0x2e2
     push di                                   ; 57
     enter 00006h, 000h                        ; c8 06 00 00
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 6d c6
+    call 01600h                               ; e8 97 c5
     mov cl, al                                ; 88 c1
     mov bh, al                                ; 88 c7
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 60 c6
+    call 01600h                               ; e8 8a c5
     mov bl, al                                ; 88 c3
     movzx dx, cl                              ; 0f b6 d1
@@ -6961,5 +7079,5 @@
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 05015h                           ; 74 60
+    je short 050ebh                           ; 74 60
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
@@ -6971,9 +7089,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04fceh                          ; 75 08
+    jne short 050a4h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fbch                          ; eb ee
+    jmp short 05092h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6981,5 +7099,5 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 05014h                          ; 75 3b
+    jne short 050eah                          ; 75 3b
     and bl, 0f8h                              ; 80 e3 f8
     movzx ax, bh                              ; 0f b6 c7
@@ -6997,9 +7115,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05003h                          ; 75 08
+    jne short 050d9h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ff1h                          ; eb ee
+    jmp short 050c7h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7009,18 +7127,18 @@
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 fa c5
+    call 0160eh                               ; e8 24 c5
     sti                                       ; fb
     mov ax, word [bp+014h]                    ; 8b 46 14
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000a2h                            ; 3d a2 00
-    jnbe near 05221h                          ; 0f 87 ff 01
+    jnbe near 052f7h                          ; 0f 87 ff 01
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 04f62h                            ; bf 62 4f
+    mov di, 05038h                            ; bf 38 50
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04f6dh]               ; 2e 8b 85 6d 4f
+    mov ax, word [cs:di+05043h]               ; 2e 8b 85 43 50
     jmp ax                                    ; ff e0
     push strict byte 00001h                   ; 6a 01
@@ -7029,17 +7147,17 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 04ef5h                               ; e8 af fe
+    call 04fcbh                               ; e8 af fe
     test ax, ax                               ; 85 c0
-    jne short 05055h                          ; 75 0b
+    jne short 0512bh                          ; 75 0b
     push 0057dh                               ; 68 7d 05
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 97 c8
+    call 018e9h                               ; e8 c1 c7
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 05061h                           ; 74 06
+    je short 05137h                           ; 74 06
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je short 05067h                           ; 74 06
+    je short 0513dh                           ; 74 06
     cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
-    jne short 0506bh                          ; 75 04
+    jne short 05141h                          ; 75 04
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
@@ -7057,7 +7175,7 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 04ef5h                               ; e8 63 fe
+    call 04fcbh                               ; e8 63 fe
     test ax, ax                               ; 85 c0
-    jne short 0509dh                          ; 75 07
+    jne short 05173h                          ; 75 07
     or word [bp+01eh], strict byte 00040h     ; 83 4e 1e 40
     leave                                     ; c9
@@ -7065,9 +7183,9 @@
     retn                                      ; c3
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 050a9h                           ; 74 06
+    je short 0517fh                           ; 74 06
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je short 050afh                           ; 74 06
+    je short 05185h                           ; 74 06
     cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
-    jne short 050b3h                          ; 75 04
+    jne short 05189h                          ; 75 04
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
@@ -7082,8 +7200,8 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 2d c5
+    call 01600h                               ; e8 57 c4
     mov dx, word [bp+014h]                    ; 8b 56 14
     mov dl, al                                ; 88 c2
-    jmp short 05078h                          ; eb 9e
+    jmp short 0514eh                          ; eb 9e
     mov al, byte [bp+012h]                    ; 8a 46 12
     movzx dx, al                              ; 0f b6 d0
@@ -7091,7 +7209,7 @@
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 04b0dh                               ; e8 22 fa
+    call 04be3h                               ; e8 22 fa
     test ax, ax                               ; 85 c0
-    jne short 050fch                          ; 75 0d
+    jne short 051d2h                          ; 75 0d
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor al, al                                ; 30 c0
@@ -7108,5 +7226,5 @@
     xor al, al                                ; 30 c0
     or AL, strict byte 030h                   ; 0c 30
-    jmp short 050f6h                          ; eb e9
+    jmp short 051cch                          ; eb e9
     mov byte [bp-002h], 002h                  ; c6 46 fe 02
     xor cx, cx                                ; 31 c9
@@ -7121,15 +7239,15 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05134h                          ; 75 0d
+    jne short 0520ah                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05134h                          ; 76 08
+    jbe short 0520ah                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 0511dh                          ; eb e9
+    jmp short 051f3h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05178h                          ; 76 40
+    jbe short 0524eh                          ; 76 40
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7137,5 +7255,5 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 05178h                          ; 75 35
+    jne short 0524eh                          ; 75 35
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -7144,15 +7262,15 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0515dh                          ; 75 0d
+    jne short 05233h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0515dh                          ; 76 08
+    jbe short 05233h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05146h                          ; eb e9
+    jmp short 0521ch                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 0516fh                          ; 76 0e
+    jbe short 05245h                          ; 76 0e
     shr cx, 008h                              ; c1 e9 08
     mov dx, strict word 00060h                ; ba 60 00
@@ -7164,5 +7282,5 @@
     dec byte [bp-002h]                        ; fe 4e fe
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jnbe short 05143h                         ; 77 cb
+    jnbe short 05219h                         ; 77 cb
     mov word [bp+00eh], cx                    ; 89 4e 0e
     leave                                     ; c9
@@ -7174,16 +7292,16 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 04ef5h                               ; e8 68 fd
+    call 04fcbh                               ; e8 68 fd
     test ax, ax                               ; 85 c0
-    jne short 0519ch                          ; 75 0b
+    jne short 05272h                          ; 75 0b
     push 0057dh                               ; 68 7d 05
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 50 c7
+    call 018e9h                               ; e8 7a c6
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je near 0506bh                            ; 0f 84 c7 fe
+    je near 05141h                            ; 0f 84 c7 fe
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je near 05067h                            ; 0f 84 bb fe
-    jmp near 0506bh                           ; e9 bc fe
+    je near 0513dh                            ; 0f 84 bb fe
+    jmp near 05141h                           ; e9 bc fe
     or word [bp+01eh], 00200h                 ; 81 4e 1e 00 02
     push strict byte 00000h                   ; 6a 00
@@ -7192,15 +7310,15 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 04ef5h                               ; e8 32 fd
+    call 04fcbh                               ; e8 32 fd
     test ax, ax                               ; 85 c0
-    je near 05096h                            ; 0f 84 cd fe
+    je near 0516ch                            ; 0f 84 cd fe
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je near 050b3h                            ; 0f 84 e2 fe
+    je near 05189h                            ; 0f 84 e2 fe
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je near 050afh                            ; 0f 84 d6 fe
-    jmp near 050b3h                           ; e9 d7 fe
+    je near 05185h                            ; 0f 84 d6 fe
+    jmp near 05189h                           ; e9 d7 fe
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 1b c4
+    call 01600h                               ; e8 45 c3
     mov dx, word [bp+014h]                    ; 8b 56 14
     mov dl, al                                ; 88 c2
@@ -7208,10 +7326,10 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 0a c4
+    call 01600h                               ; e8 34 c3
     mov bh, al                                ; 88 c7
     and bh, 073h                              ; 80 e7 73
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 fc c3
+    call 01600h                               ; e8 26 c3
     and AL, strict byte 00ch                  ; 24 0c
     or bh, al                                 ; 08 c7
@@ -7220,13 +7338,13 @@
     movzx ax, bh                              ; 0f b6 c7
     sal ax, 008h                              ; c1 e0 08
-    jmp near 05076h                           ; e9 60 fe
+    jmp near 0514ch                           ; e9 60 fe
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 050f6h                           ; e9 d5 fe
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp near 051cch                           ; e9 d5 fe
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 82 c6
+    call 018aeh                               ; e8 ac c5
     mov ax, word [bp+014h]                    ; 8b 46 14
     shr ax, 008h                              ; c1 e8 08
@@ -7234,10 +7352,10 @@
     push 005a1h                               ; 68 a1 05
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 ae c6
+    call 018e9h                               ; e8 d8 c5
     add sp, strict byte 00006h                ; 83 c4 06
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 65 c6
+    call 018aeh                               ; e8 8f c5
     mov ax, word [bp+010h]                    ; 8b 46 10
     push ax                                   ; 50
@@ -7250,43 +7368,91 @@
     push 005c9h                               ; 68 c9 05
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 88 c6
+    call 018e9h                               ; e8 b2 c5
     add sp, strict byte 0000ch                ; 83 c4 0c
     leave                                     ; c9
     pop di                                    ; 5f
     retn                                      ; c3
-    and word [bp+di+045h], dx                 ; 21 53 45
-    push bx                                   ; 53
-    jc short 052c0h                           ; 72 53
-    jc short 052c2h                           ; 72 53
-    jc short 052c4h                           ; 72 53
-    dec dx                                    ; 4a
-    push bp                                   ; 55
-    js short 052cbh                           ; 78 56
-    js short 052cdh                           ; 78 56
-    arpl word [di+055h], dx                   ; 63 55 55
+set_geom_lba_:                               ; 0xf533d LB 0x9e
     push si                                   ; 56
-    js short 052d3h                           ; 78 56
-    js short 052d5h                           ; 78 56
-    push bp                                   ; 55
+    push di                                   ; 57
+    enter 00004h, 000h                        ; c8 04 00 00
+    mov si, ax                                ; 89 c6
+    mov es, dx                                ; 8e c2
+    mov word [bp-004h], bx                    ; 89 5e fc
+    mov word [bp-002h], cx                    ; 89 4e fe
+    xor ax, ax                                ; 31 c0
+    mov dx, strict word 0007eh                ; ba 7e 00
+    mov di, 000ffh                            ; bf ff 00
+    xor bx, bx                                ; 31 db
+    jmp short 0535eh                          ; eb 05
+    cmp bx, strict byte 00004h                ; 83 fb 04
+    jnl short 05374h                          ; 7d 16
+    cmp dx, word [bp-002h]                    ; 3b 56 fe
+    jnbe short 0536ah                         ; 77 07
+    jne short 0536dh                          ; 75 08
+    cmp ax, word [bp-004h]                    ; 3b 46 fc
+    jc short 0536dh                           ; 72 03
+    inc di                                    ; 47
+    shr di, 1                                 ; d1 ef
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    inc bx                                    ; 43
+    jmp short 05359h                          ; eb e5
+    mov ax, di                                ; 89 f8
+    xor dx, dx                                ; 31 d2
+    mov bx, strict word 0003fh                ; bb 3f 00
+    xor cx, cx                                ; 31 c9
+    call 08ff9h                               ; e8 79 3c
+    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 08fc0h                               ; e8 33 3c
+    mov word [es:si+002h], ax                 ; 26 89 44 02
+    cmp ax, 00400h                            ; 3d 00 04
+    jbe short 0539ch                          ; 76 06
+    mov word [es:si+002h], 00400h             ; 26 c7 44 02 00 04
+    mov word [es:si], di                      ; 26 89 3c
+    mov word [es:si+004h], strict word 0003fh ; 26 c7 44 04 3f 00
+    leave                                     ; c9
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    retn                                      ; c3
+    arpl word [si-079h], dx                   ; 63 54 87
+    push sp                                   ; 54
+    mov AH, strict byte 054h                  ; b4 54
+    mov AH, strict byte 054h                  ; b4 54
+    mov AH, strict byte 054h                  ; b4 54
+    mov [bp-046h], ss                         ; 8c 56 ba
+    push di                                   ; 57
+    mov dx, 0a557h                            ; ba 57 a5
     push si                                   ; 56
-    push bp                                   ; 55
-    push si                                   ; 56
-    js short 052dbh                           ; 78 56
-    js short 052ddh                           ; 78 56
-    fst dword [di+055h]                       ; d9 55 55
-    push si                                   ; 56
-    js short 052e3h                           ; 78 56
-    js short 052e5h                           ; 78 56
-    push bp                                   ; 55
-    push si                                   ; 56
-    or word [bp+078h], dx                     ; 09 56 78
-    push si                                   ; 56
-    js short 052edh                           ; 78 56
-    js short 052efh                           ; 78 56
-_int13_harddisk:                             ; 0xf5299 LB 0x43c
+    xchg di, ax                               ; 97
+    push di                                   ; 57
+    mov dx, 0ba57h                            ; ba 57 ba
+    push di                                   ; 57
+    xchg di, ax                               ; 97
+    push di                                   ; 57
+    xchg di, ax                               ; 97
+    push di                                   ; 57
+    mov dx, 0ba57h                            ; ba 57 ba
+    push di                                   ; 57
+    sbb dx, word [bx-069h]                    ; 1b 57 97
+    push di                                   ; 57
+    mov dx, 0ba57h                            ; ba 57 ba
+    push di                                   ; 57
+    xchg di, ax                               ; 97
+    push di                                   ; 57
+    dec bx                                    ; 4b
+    push di                                   ; 57
+    mov dx, 0ba57h                            ; ba 57 ba
+    push di                                   ; 57
+    db  0bah
+    push di                                   ; 57
+_int13_harddisk:                             ; 0xf53db LB 0x43c
     enter 00010h, 000h                        ; c8 10 00 00
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 76 c3
+    call 0161ch                               ; e8 34 c2
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
@@ -7294,11 +7460,11 @@
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 57 c3
+    call 0160eh                               ; e8 15 c2
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 052c6h                           ; 72 05
+    jc short 05408h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 052e4h                           ; 72 1e
+    jc short 05426h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7310,7 +7476,7 @@
     push 005fbh                               ; 68 fb 05
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 0b c6
+    call 018e9h                               ; e8 c9 c4
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05693h                           ; e9 af 03
+    jmp near 057d5h                           ; e9 af 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7321,5 +7487,5 @@
     mov byte [bp-002h], dl                    ; 88 56 fe
     cmp dl, 010h                              ; 80 fa 10
-    jc short 0530dh                           ; 72 10
+    jc short 0544fh                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -7328,20 +7494,20 @@
     push 005ech                               ; 68 ec 05
     push 00626h                               ; 68 26 06
-    jmp short 052d9h                          ; eb cc
+    jmp short 0541bh                          ; eb cc
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     cmp bx, strict byte 00018h                ; 83 fb 18
-    jnbe near 05678h                          ; 0f 87 5e 03
+    jnbe near 057bah                          ; 0f 87 5e 03
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+05267h]                   ; 2e ff a7 67 52
+    jmp word [cs:bx+053a9h]                   ; 2e ff a7 a9 53
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc near 05330h                           ; 0f 83 07 00
+    jnc near 05472h                           ; 0f 83 07 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01be6h                               ; e8 b6 c8
+    call 01be6h                               ; e8 74 c7
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 cf c2
+    call 0160eh                               ; e8 8d c1
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     leave                                     ; c9
@@ -7349,5 +7515,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 b2 c2
+    call 01600h                               ; e8 70 c1
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
@@ -7360,8 +7526,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 a3 c2
+    call 0160eh                               ; e8 61 c1
     test cl, cl                               ; 84 c9
-    je short 05334h                           ; 74 c5
-    jmp near 056afh                           ; e9 3d 03
+    je short 05476h                           ; 74 c5
+    jmp near 057f1h                           ; e9 3d 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -7383,11 +7549,11 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, 00080h                            ; 3d 80 00
-    jnbe short 053adh                         ; 77 04
+    jnbe short 054efh                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 053d0h                          ; 75 23
-    mov bx, 00cd6h                            ; bb d6 0c
+    jne short 05512h                          ; 75 23
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 f6 c4
+    call 018aeh                               ; e8 b4 c3
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7396,7 +7562,7 @@
     push 00658h                               ; 68 58 06
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 1f c5
+    call 018e9h                               ; e8 dd c3
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05693h                           ; e9 c3 02
+    jmp near 057d5h                           ; e9 c3 02
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -7409,14 +7575,14 @@
     mov word [bp-00ah], dx                    ; 89 56 f6
     cmp di, ax                                ; 39 c7
-    jnc short 053fdh                          ; 73 0c
+    jnc short 0553fh                          ; 73 0c
     cmp cx, word [bp-008h]                    ; 3b 4e f8
-    jbe short 053fdh                          ; 76 07
+    jbe short 0553fh                          ; 76 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp ax, dx                                ; 39 d0
-    jbe short 0542bh                          ; 76 2e
-    mov bx, 00cd6h                            ; bb d6 0c
+    jbe short 0556dh                          ; 76 2e
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 a6 c4
+    call 018aeh                               ; e8 64 c3
     push dword [bp-008h]                      ; 66 ff 76 f8
     push di                                   ; 57
@@ -7430,12 +7596,12 @@
     push 00680h                               ; 68 80 06
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 c4 c4
+    call 018e9h                               ; e8 82 c3
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 05693h                           ; e9 68 02
+    jmp near 057d5h                           ; e9 68 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00004h                ; 3d 04 00
-    jne short 05439h                          ; 75 03
-    jmp near 05330h                           ; e9 f7 fe
+    jne short 0557bh                          ; 75 03
+    jmp near 05472h                           ; e9 f7 fe
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     imul bx, bx, strict byte 00018h           ; 6b db 18
@@ -7443,15 +7609,15 @@
     add bx, si                                ; 01 f3
     cmp cx, word [es:bx+02ch]                 ; 26 3b 4f 2c
-    jne short 0545ah                          ; 75 0f
+    jne short 0559ch                          ; 75 0f
     mov ax, word [es:bx+030h]                 ; 26 8b 47 30
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    jne short 0545ah                          ; 75 06
+    jne short 0559ch                          ; 75 06
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 0548ah                           ; 72 30
+    jc short 055cch                           ; 72 30
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 08c79h                               ; e8 14 38
+    call 08ff9h                               ; e8 52 3a
     xor bx, bx                                ; 31 db
     add ax, word [bp-008h]                    ; 03 46 f8
@@ -7459,54 +7625,222 @@
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     xor cx, cx                                ; 31 c9
-    call 08c79h                               ; e8 05 38
+    call 08ff9h                               ; e8 43 3a
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
-    db  011h, 0dah, 005h, 0ffh, 0ffh, 089h, 046h, 0f0h, 083h, 0d2h, 0ffh, 089h, 056h, 0f2h, 089h, 05eh
-    db  0fah, 08eh, 046h, 0fch, 066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h, 026h, 0c7h, 044h
-    db  018h, 000h, 000h, 08bh, 046h, 0f0h, 026h, 089h, 004h, 08bh, 046h, 0f2h, 026h, 089h, 044h, 002h
-    db  08bh, 046h, 010h, 08bh, 056h, 006h, 026h, 089h, 044h, 004h, 026h, 089h, 054h, 006h, 08bh, 046h
-    db  0f4h, 026h, 089h, 044h, 00ah, 026h, 0c7h, 044h, 00ch, 000h, 002h, 026h, 089h, 07ch, 00eh, 08bh
-    db  046h, 0f8h, 026h, 089h, 044h, 010h, 08bh, 046h, 0fah, 026h, 089h, 044h, 012h, 08ah, 046h, 0feh
-    db  026h, 088h, 044h, 008h, 00fh, 0b6h, 046h, 0feh, 06bh, 0c0h, 018h, 089h, 0f3h, 001h, 0c3h, 026h
-    db  00fh, 0b6h, 047h, 01eh, 089h, 0c3h, 0c1h, 0e3h, 002h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 001h
-    db  0c0h, 001h, 0c3h, 006h, 056h, 0ffh, 097h, 0fch, 0ffh, 089h, 0c2h, 08bh, 046h, 016h, 030h, 0c0h
-    db  08eh, 046h, 0fch, 026h, 08bh, 05ch, 014h, 009h, 0c3h, 089h, 05eh, 016h, 084h, 0d2h, 00fh, 084h
-    db  015h, 0feh, 0bbh, 0d6h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 088h, 0c3h, 00fh, 0b6h, 0c2h
-    db  050h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0ech, 005h, 068h, 0c7h, 006h, 06ah, 004h
-    db  0e8h, 0adh, 0c3h, 083h, 0c4h, 00ah, 08bh, 046h, 016h, 030h, 0e4h, 080h, 0cch, 00ch, 0e9h, 051h
-    db  001h, 0bbh, 0d6h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 059h, 0c3h, 068h, 0e8h, 006h, 06ah
-    db  004h, 0e8h, 08ch, 0c3h, 083h, 0c4h, 004h, 0e9h, 0cdh, 0fdh, 00fh, 0b6h, 046h, 0feh, 06bh, 0c0h
-    db  018h, 08eh, 046h, 0fch, 089h, 0f3h, 001h, 0c3h, 026h, 08bh, 07fh, 028h, 026h, 08bh, 04fh, 026h
-    db  026h, 08bh, 047h, 02ah, 089h, 046h, 0f6h, 026h, 00fh, 0b6h, 084h, 09eh, 001h, 089h, 046h, 0f4h
-    db  0c6h, 046h, 016h, 000h, 08bh, 056h, 014h, 030h, 0f6h, 04fh, 089h, 0f8h, 030h, 0e4h, 0c1h, 0e0h
-    db  008h, 009h, 0c2h, 089h, 056h, 014h, 0c1h, 0efh, 002h, 081h, 0e7h, 0c0h, 000h, 08bh, 046h, 0f6h
-    db  030h, 0e4h, 024h, 03fh, 009h, 0c7h, 089h, 0d0h, 030h, 0d0h, 009h, 0f8h, 089h, 046h, 014h, 08bh
-    db  056h, 012h, 030h, 0f6h, 089h, 0c8h, 0c1h, 0e0h, 008h, 02dh, 000h, 001h, 009h, 0c2h, 089h, 056h
-    db  012h, 089h, 0d0h, 030h, 0d0h, 08bh, 056h, 0f4h, 009h, 0c2h, 089h, 056h, 012h, 0e9h, 057h, 0fdh
-    db  00fh, 0b6h, 046h, 0feh, 099h, 02bh, 0c2h, 0d1h, 0f8h, 06bh, 0c0h, 006h, 08eh, 046h, 0fch, 001h
-    db  0c6h, 026h, 08bh, 094h, 0c2h, 001h, 083h, 0c2h, 007h, 0ech, 02ah, 0e4h, 024h, 0c0h, 03ch, 040h
-    db  075h, 003h, 0e9h, 032h, 0fdh, 08bh, 046h, 016h, 030h, 0e4h, 080h, 0cch, 0aah, 0e9h, 092h, 000h
-    db  00fh, 0b6h, 046h, 0feh, 06bh, 0c0h, 018h, 08eh, 046h, 0fch, 001h, 0c6h, 026h, 08bh, 07ch, 02eh
-    db  026h, 08bh, 044h, 02ch, 089h, 046h, 0f8h, 026h, 08bh, 044h, 030h, 089h, 046h, 0fah, 089h, 0f8h
-    db  031h, 0d2h, 08bh, 05eh, 0f8h, 031h, 0c9h, 0e8h, 046h, 036h, 08bh, 05eh, 0fah, 031h, 0c9h, 0e8h
-    db  03eh, 036h, 089h, 046h, 0f0h, 089h, 056h, 0f2h, 089h, 056h, 014h, 089h, 046h, 012h, 08bh, 046h
-    db  016h, 030h, 0e4h, 080h, 0cch, 003h, 089h, 046h, 016h, 0e9h, 0dfh, 0fch, 0bbh, 0d6h, 00ch, 08ch
-    db  0d9h, 0b8h, 004h, 000h, 0e8h, 04eh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0ech
-    db  005h, 068h, 002h, 007h, 06ah, 004h, 0e8h, 077h, 0c2h, 083h, 0c4h, 008h, 0e9h, 0b8h, 0fch, 0bbh
-    db  0d6h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 02bh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h
-    db  050h, 068h, 0ech, 005h, 068h, 035h, 007h, 0e9h, 032h, 0fdh, 08bh, 046h, 016h, 030h, 0e4h, 080h
-    db  0cch, 001h, 089h, 046h, 016h, 08bh, 05eh, 016h, 0c1h, 0ebh, 008h, 030h, 0ffh, 0bah, 074h, 000h
-    db  0b8h, 040h, 000h, 0e8h, 05fh, 0bfh, 080h, 04eh, 01ch, 001h, 0c9h, 0c3h, 06eh, 057h, 086h, 057h
-    db  086h, 057h, 086h, 057h, 035h, 05bh, 0c9h, 058h, 086h, 057h, 0cfh, 058h, 035h, 05bh, 082h, 05bh
-    db  082h, 05bh, 082h, 05bh, 082h, 05bh, 04ah, 05bh, 082h, 05bh, 082h, 05bh
-_int13_harddisk_ext:                         ; 0xf56d5 LB 0x4c8
+    adc dx, bx                                ; 11 da
+    add ax, strict word 0ffffh                ; 05 ff ff
+    mov word [bp-010h], ax                    ; 89 46 f0
+    adc dx, strict byte 0ffffh                ; 83 d2 ff
+    mov word [bp-00eh], dx                    ; 89 56 f2
+    mov word [bp-006h], bx                    ; 89 5e fa
+    mov es, [bp-004h]                         ; 8e 46 fc
+    db  066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h
+    ; mov dword [es:si+014h], strict dword 000000000h ; 66 26 c7 44 14 00 00 00 00
+    mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov word [es:si], ax                      ; 26 89 04
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov word [es:si+002h], ax                 ; 26 89 44 02
+    mov ax, word [bp+010h]                    ; 8b 46 10
+    mov dx, word [bp+006h]                    ; 8b 56 06
+    mov word [es:si+004h], ax                 ; 26 89 44 04
+    mov word [es:si+006h], dx                 ; 26 89 54 06
+    mov ax, word [bp-00ch]                    ; 8b 46 f4
+    mov word [es:si+00ah], ax                 ; 26 89 44 0a
+    mov word [es:si+00ch], 00200h             ; 26 c7 44 0c 00 02
+    mov word [es:si+00eh], di                 ; 26 89 7c 0e
+    mov ax, word [bp-008h]                    ; 8b 46 f8
+    mov word [es:si+010h], ax                 ; 26 89 44 10
+    mov ax, word [bp-006h]                    ; 8b 46 fa
+    mov word [es:si+012h], ax                 ; 26 89 44 12
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov byte [es:si+008h], al                 ; 26 88 44 08
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
+    movzx ax, byte [es:bx+01eh]               ; 26 0f b6 47 1e
+    mov bx, ax                                ; 89 c3
+    sal bx, 002h                              ; c1 e3 02
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    shr ax, 008h                              ; c1 e8 08
+    add ax, ax                                ; 01 c0
+    add bx, ax                                ; 01 c3
+    push ES                                   ; 06
+    push si                                   ; 56
+    call word [word bx-00004h]                ; ff 97 fc ff
+    mov dx, ax                                ; 89 c2
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor al, al                                ; 30 c0
+    mov es, [bp-004h]                         ; 8e 46 fc
+    mov bx, word [es:si+014h]                 ; 26 8b 5c 14
+    or bx, ax                                 ; 09 c3
+    mov word [bp+016h], bx                    ; 89 5e 16
+    test dl, dl                               ; 84 d2
+    je near 05472h                            ; 0f 84 15 fe
+    mov bx, 00cech                            ; bb ec 0c
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 018aeh                               ; e8 46 c2
+    movzx ax, dl                              ; 0f b6 c2
+    push ax                                   ; 50
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    shr ax, 008h                              ; c1 e8 08
+    push ax                                   ; 50
+    push 005ech                               ; 68 ec 05
+    push 006c7h                               ; 68 c7 06
+    push strict byte 00004h                   ; 6a 04
+    call 018e9h                               ; e8 6b c2
+    add sp, strict byte 0000ah                ; 83 c4 0a
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 00ch                               ; 80 cc 0c
+    jmp near 057ddh                           ; e9 51 01
+    mov bx, 00cech                            ; bb ec 0c
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 018aeh                               ; e8 17 c2
+    push 006e8h                               ; 68 e8 06
+    push strict byte 00004h                   ; 6a 04
+    call 018e9h                               ; e8 4a c2
+    add sp, strict byte 00004h                ; 83 c4 04
+    jmp near 05472h                           ; e9 cd fd
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov es, [bp-004h]                         ; 8e 46 fc
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
+    mov di, word [es:bx+028h]                 ; 26 8b 7f 28
+    mov cx, word [es:bx+026h]                 ; 26 8b 4f 26
+    mov ax, word [es:bx+02ah]                 ; 26 8b 47 2a
+    mov word [bp-00ah], ax                    ; 89 46 f6
+    movzx ax, byte [es:si+0019eh]             ; 26 0f b6 84 9e 01
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov byte [bp+016h], 000h                  ; c6 46 16 00
+    mov dx, word [bp+014h]                    ; 8b 56 14
+    xor dh, dh                                ; 30 f6
+    dec di                                    ; 4f
+    mov ax, di                                ; 89 f8
+    xor ah, ah                                ; 30 e4
+    sal ax, 008h                              ; c1 e0 08
+    or dx, ax                                 ; 09 c2
+    mov word [bp+014h], dx                    ; 89 56 14
+    shr di, 002h                              ; c1 ef 02
+    and di, 000c0h                            ; 81 e7 c0 00
+    mov ax, word [bp-00ah]                    ; 8b 46 f6
+    xor ah, ah                                ; 30 e4
+    and AL, strict byte 03fh                  ; 24 3f
+    or di, ax                                 ; 09 c7
+    mov ax, dx                                ; 89 d0
+    xor al, dl                                ; 30 d0
+    or ax, di                                 ; 09 f8
+    mov word [bp+014h], ax                    ; 89 46 14
+    mov dx, word [bp+012h]                    ; 8b 56 12
+    xor dh, dh                                ; 30 f6
+    mov ax, cx                                ; 89 c8
+    sal ax, 008h                              ; c1 e0 08
+    sub ax, 00100h                            ; 2d 00 01
+    or dx, ax                                 ; 09 c2
+    mov word [bp+012h], dx                    ; 89 56 12
+    mov ax, dx                                ; 89 d0
+    xor al, dl                                ; 30 d0
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    or dx, ax                                 ; 09 c2
+    mov word [bp+012h], dx                    ; 89 56 12
+    jmp near 05472h                           ; e9 57 fd
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    cwd                                       ; 99
+    db  02bh, 0c2h
+    ; sub ax, dx                                ; 2b c2
+    sar ax, 1                                 ; d1 f8
+    imul ax, ax, strict byte 00006h           ; 6b c0 06
+    mov es, [bp-004h]                         ; 8e 46 fc
+    add si, ax                                ; 01 c6
+    mov dx, word [es:si+001c2h]               ; 26 8b 94 c2 01
+    add dx, strict byte 00007h                ; 83 c2 07
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    and AL, strict byte 0c0h                  ; 24 c0
+    cmp AL, strict byte 040h                  ; 3c 40
+    jne short 05740h                          ; 75 03
+    jmp near 05472h                           ; e9 32 fd
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 0aah                               ; 80 cc aa
+    jmp near 057ddh                           ; e9 92 00
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov es, [bp-004h]                         ; 8e 46 fc
+    add si, ax                                ; 01 c6
+    mov di, word [es:si+02eh]                 ; 26 8b 7c 2e
+    mov ax, word [es:si+02ch]                 ; 26 8b 44 2c
+    mov word [bp-008h], ax                    ; 89 46 f8
+    mov ax, word [es:si+030h]                 ; 26 8b 44 30
+    mov word [bp-006h], ax                    ; 89 46 fa
+    mov ax, di                                ; 89 f8
+    xor dx, dx                                ; 31 d2
+    mov bx, word [bp-008h]                    ; 8b 5e f8
+    xor cx, cx                                ; 31 c9
+    call 08ff9h                               ; e8 84 38
+    mov bx, word [bp-006h]                    ; 8b 5e fa
+    xor cx, cx                                ; 31 c9
+    call 08ff9h                               ; e8 7c 38
+    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-00eh], dx                    ; 89 56 f2
+    mov word [bp+014h], dx                    ; 89 56 14
+    mov word [bp+012h], ax                    ; 89 46 12
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 003h                               ; 80 cc 03
+    mov word [bp+016h], ax                    ; 89 46 16
+    jmp near 05476h                           ; e9 df fc
+    mov bx, 00cech                            ; bb ec 0c
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 018aeh                               ; e8 0c c1
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    shr ax, 008h                              ; c1 e8 08
+    push ax                                   ; 50
+    push 005ech                               ; 68 ec 05
+    push 00702h                               ; 68 02 07
+    push strict byte 00004h                   ; 6a 04
+    call 018e9h                               ; e8 35 c1
+    add sp, strict byte 00008h                ; 83 c4 08
+    jmp near 05472h                           ; e9 b8 fc
+    mov bx, 00cech                            ; bb ec 0c
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 018aeh                               ; e8 e9 c0
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    shr ax, 008h                              ; c1 e8 08
+    push ax                                   ; 50
+    push 005ech                               ; 68 ec 05
+    push 00735h                               ; 68 35 07
+    jmp near 05507h                           ; e9 32 fd
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 001h                               ; 80 cc 01
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov bx, word [bp+016h]                    ; 8b 5e 16
+    shr bx, 008h                              ; c1 eb 08
+    xor bh, bh                                ; 30 ff
+    mov dx, strict word 00074h                ; ba 74 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 0160eh                               ; e8 1d be
+    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
+    leave                                     ; c9
+    retn                                      ; c3
+    db  0b0h, 058h, 0c8h, 058h, 0c8h, 058h, 0c8h, 058h, 077h, 05ch, 00bh, 05ah, 0c8h, 058h, 011h, 05ah
+    db  077h, 05ch, 0c4h, 05ch, 0c4h, 05ch, 0c4h, 05ch, 0c4h, 05ch, 08ch, 05ch, 0c4h, 05ch, 0c4h, 05ch
+_int13_harddisk_ext:                         ; 0xf5817 LB 0x4c8
     enter 00028h, 000h                        ; c8 28 00 00
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 3a bf
+    call 0161ch                               ; e8 f8 bd
     mov word [bp-014h], ax                    ; 89 46 ec
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 2e bf
+    call 0161ch                               ; e8 ec bd
     mov si, 00122h                            ; be 22 01
     mov word [bp-026h], ax                    ; 89 46 da
@@ -7514,11 +7848,11 @@
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 0f bf
+    call 0160eh                               ; e8 cd bd
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 0570eh                           ; 72 05
+    jc short 05850h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 0572ch                           ; 72 1e
+    jc short 0586eh                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7530,7 +7864,7 @@
     push 005fbh                               ; 68 fb 05
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 c3 c1
+    call 018e9h                               ; e8 81 c0
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05b60h                           ; e9 34 04
+    jmp near 05ca2h                           ; e9 34 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7540,5 +7874,5 @@
     mov cl, byte [es:bx+0011fh]               ; 26 8a 8f 1f 01
     cmp cl, 010h                              ; 80 f9 10
-    jc short 05752h                           ; 72 10
+    jc short 05894h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -7547,14 +7881,14 @@
     push 00763h                               ; 68 63 07
     push 00626h                               ; 68 26 06
-    jmp short 05721h                          ; eb cf
+    jmp short 05863h                          ; eb cf
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     sub bx, strict byte 00041h                ; 83 eb 41
     cmp bx, strict byte 0000fh                ; 83 fb 0f
-    jnbe near 05b82h                          ; 0f 87 20 04
+    jnbe near 05cc4h                          ; 0f 87 20 04
     add bx, bx                                ; 01 db
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
-    jmp word [cs:bx+056b5h]                   ; 2e ff a7 b5 56
+    jmp word [cs:bx+057f7h]                   ; 2e ff a7 f7 57
     mov word [bp+010h], 0aa55h                ; c7 46 10 55 aa
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -7563,5 +7897,5 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 05b39h                           ; e9 b3 03
+    jmp near 05c7bh                           ; e9 b3 03
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov es, [bp+004h]                         ; 8e 46 04
@@ -7578,5 +7912,5 @@
     mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
     or ax, word [bp-00ah]                     ; 0b 46 f6
-    je short 057c7h                           ; 74 11
+    je short 05909h                           ; 74 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7585,5 +7919,5 @@
     push 00776h                               ; 68 76 07
     push strict byte 00007h                   ; 6a 07
-    jmp short 05811h                          ; eb 4a
+    jmp short 05953h                          ; eb 4a
     mov es, [bp-010h]                         ; 8e 46 f0
     mov ax, word [es:di+008h]                 ; 26 8b 45 08
@@ -7597,13 +7931,13 @@
     mov ch, byte [es:bx+01eh]                 ; 26 8a 6f 1e
     cmp ax, word [es:bx+034h]                 ; 26 3b 47 34
-    jnbe short 057f7h                         ; 77 0b
-    jne short 0581ah                          ; 75 2c
+    jnbe short 05939h                         ; 77 0b
+    jne short 0595ch                          ; 75 2c
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     cmp dx, word [es:bx+032h]                 ; 26 3b 57 32
-    jc short 0581ah                           ; 72 23
-    mov bx, 00cd6h                            ; bb d6 0c
+    jc short 0595ch                           ; 72 23
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 ac c0
+    call 018aeh                               ; e8 6a bf
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7612,14 +7946,14 @@
     push 0079fh                               ; 68 9f 07
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 d5 c0
+    call 018e9h                               ; e8 93 bf
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05b60h                           ; e9 46 03
+    jmp near 05ca2h                           ; e9 46 03
     mov dx, word [bp+016h]                    ; 8b 56 16
     shr dx, 008h                              ; c1 ea 08
     mov word [bp-00ch], dx                    ; 89 56 f4
     cmp dx, strict byte 00044h                ; 83 fa 44
-    je near 05b35h                            ; 0f 84 0b 03
+    je near 05c77h                            ; 0f 84 0b 03
     cmp dx, strict byte 00047h                ; 83 fa 47
-    je near 05b35h                            ; 0f 84 04 03
+    je near 05c77h                            ; 0f 84 04 03
     mov es, [bp-026h]                         ; 8e 46 da
     db  066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h
@@ -7653,9 +7987,9 @@
     mov word [es:di+002h], ax                 ; 26 89 45 02
     test dl, dl                               ; 84 d2
-    je near 05b35h                            ; 0f 84 97 02
-    mov bx, 00cd6h                            ; bb d6 0c
+    je near 05c77h                            ; 0f 84 97 02
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 05 c0
+    call 018aeh                               ; e8 c3 be
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -7664,12 +7998,12 @@
     push 006c7h                               ; 68 c7 06
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 2e c0
+    call 018e9h                               ; e8 ec be
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 05b68h                           ; e9 9f 02
+    jmp near 05caah                           ; e9 9f 02
     or ah, 0b2h                               ; 80 cc b2
-    jmp near 05b68h                           ; e9 99 02
+    jmp near 05caah                           ; e9 99 02
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
@@ -7681,6 +8015,6 @@
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 05b60h                            ; 0f 82 74 02
-    jc near 05973h                            ; 0f 82 83 00
+    jc near 05ca2h                            ; 0f 82 74 02
+    jc near 05ab5h                            ; 0f 82 83 00
     movzx ax, cl                              ; 0f b6 c1
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -7720,5 +8054,5 @@
     ; mov dword [es:di+014h], strict dword 000000000h ; 66 26 c7 45 14 00 00 00 00
     cmp word [bp-00eh], strict byte 0001eh    ; 83 7e f2 1e
-    jc near 05a7fh                            ; 0f 82 04 01
+    jc near 05bc1h                            ; 0f 82 04 01
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
@@ -7746,7 +8080,7 @@
     mov al, byte [es:di+023h]                 ; 26 8a 45 23
     test al, al                               ; 84 c0
-    jne short 059d1h                          ; 75 04
+    jne short 05b13h                          ; 75 04
     xor dx, dx                                ; 31 d2
-    jmp short 059d4h                          ; eb 03
+    jmp short 05b16h                          ; eb 03
     mov dx, strict word 00008h                ; ba 08 00
     or dl, 010h                               ; 80 ca 10
@@ -7763,7 +8097,7 @@
     or word [bp-008h], dx                     ; 09 56 f8
     cmp AL, strict byte 003h                  ; 3c 03
-    jne short 059fah                          ; 75 05
+    jne short 05b3ch                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 059fch                          ; eb 02
+    jmp short 05b3eh                          ; eb 02
     xor ax, ax                                ; 31 c0
     or word [bp-008h], ax                     ; 09 46 f8
@@ -7790,19 +8124,19 @@
     xor ch, ch                                ; 30 ed
     mov byte [bp-002h], ch                    ; 88 6e fe
-    jmp short 05a60h                          ; eb 06
+    jmp short 05ba2h                          ; eb 06
     cmp byte [bp-002h], 00fh                  ; 80 7e fe 0f
-    jnc short 05a75h                          ; 73 15
+    jnc short 05bb7h                          ; 73 15
     movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     add dx, 00312h                            ; 81 c2 12 03
     mov ax, word [bp-014h]                    ; 8b 46 ec
-    call 01600h                               ; e8 92 bb
+    call 01600h                               ; e8 50 ba
     add ch, al                                ; 00 c5
     inc byte [bp-002h]                        ; fe 46 fe
-    jmp short 05a5ah                          ; eb e5
+    jmp short 05b9ch                          ; eb e5
     neg ch                                    ; f6 dd
     mov es, [bp-026h]                         ; 8e 46 da
     mov byte [es:si+001ffh], ch               ; 26 88 ac ff 01
     cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
-    jc near 05b35h                            ; 0f 82 ae 00
+    jc near 05c77h                            ; 0f 82 ae 00
     movzx ax, cl                              ; 0f b6 c1
     cwd                                       ; 99
@@ -7822,5 +8156,5 @@
     mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
     test al, al                               ; 84 c0
-    jne short 05ac7h                          ; 75 09
+    jne short 05c09h                          ; 75 09
     db  066h, 026h, 0c7h, 047h, 024h, 049h, 053h, 041h, 020h
     ; mov dword [es:bx+024h], strict dword 020415349h ; 66 26 c7 47 24 49 53 41 20
@@ -7831,5 +8165,5 @@
     ; mov dword [es:bx+02ch], strict dword 020202020h ; 66 26 c7 47 2c 20 20 20 20
     test al, al                               ; 84 c0
-    jne short 05af3h                          ; 75 13
+    jne short 05c35h                          ; 75 13
     mov word [es:bx+030h], dx                 ; 26 89 57 30
     db  066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
@@ -7846,15 +8180,15 @@
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 01eh                  ; b5 1e
-    jmp short 05b1ah                          ; eb 05
+    jmp short 05c5ch                          ; eb 05
     cmp ch, 040h                              ; 80 fd 40
-    jnc short 05b2ch                          ; 73 12
+    jnc short 05c6eh                          ; 73 12
     movzx dx, ch                              ; 0f b6 d5
     add dx, word [bp+00ah]                    ; 03 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01600h                               ; e8 da ba
+    call 01600h                               ; e8 98 b9
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 05b15h                          ; eb e9
+    jmp short 05c57h                          ; eb e9
     neg cl                                    ; f6 d9
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -7864,17 +8198,17 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 ca ba
+    call 0160eh                               ; e8 88 b9
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     leave                                     ; c9
     retn                                      ; c3
     cmp ax, strict word 00006h                ; 3d 06 00
-    je short 05b35h                           ; 74 e6
+    je short 05c77h                           ; 74 e6
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 05b60h                           ; 72 0c
-    jbe short 05b35h                          ; 76 df
+    jc short 05ca2h                           ; 72 0c
+    jbe short 05c77h                          ; 76 df
     cmp ax, strict word 00003h                ; 3d 03 00
-    jc short 05b60h                           ; 72 05
+    jc short 05ca2h                           ; 72 05
     cmp ax, strict word 00004h                ; 3d 04 00
-    jbe short 05b35h                          ; 76 d5
+    jbe short 05c77h                          ; 76 d5
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -7886,12 +8220,12 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 92 ba
+    call 0160eh                               ; e8 50 b9
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     leave                                     ; c9
     retn                                      ; c3
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 21 bd
+    call 018aeh                               ; e8 df bb
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7899,6 +8233,6 @@
     push 00763h                               ; 68 63 07
     push 00735h                               ; 68 35 07
-    jmp near 0580fh                           ; e9 72 fc
-_int14_function:                             ; 0xf5b9d LB 0x154
+    jmp near 05951h                           ; e9 72 fc
+_int14_function:                             ; 0xf5cdf LB 0x154
     push si                                   ; 56
     push bp                                   ; 55
@@ -7908,5 +8242,5 @@
     add dx, dx                                ; 01 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 6f ba
+    call 0161ch                               ; e8 2d b9
     mov si, ax                                ; 89 c6
     mov bx, ax                                ; 89 c3
@@ -7914,21 +8248,21 @@
     add dx, strict byte 0007ch                ; 83 c2 7c
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 43 ba
+    call 01600h                               ; e8 01 b9
     mov cl, al                                ; 88 c1
     cmp word [bp+010h], strict byte 00004h    ; 83 7e 10 04
-    jnc near 05ceah                           ; 0f 83 23 01
+    jnc near 05e2ch                           ; 0f 83 23 01
     test si, si                               ; 85 f6
-    jbe near 05ceah                           ; 0f 86 1d 01
+    jbe near 05e2ch                           ; 0f 86 1d 01
     mov al, byte [bp+015h]                    ; 8a 46 15
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 05be5h                           ; 72 11
-    jbe short 05c39h                          ; 76 63
+    jc short 05d27h                           ; 72 11
+    jbe short 05d7bh                          ; 76 63
     cmp AL, strict byte 003h                  ; 3c 03
-    je near 05cd2h                            ; 0f 84 f6 00
+    je near 05e14h                            ; 0f 84 f6 00
     cmp AL, strict byte 002h                  ; 3c 02
-    je near 05c87h                            ; 0f 84 a5 00
-    jmp near 05ce3h                           ; e9 fe 00
+    je near 05dc9h                            ; 0f 84 a5 00
+    jmp near 05e25h                           ; e9 fe 00
     test al, al                               ; 84 c0
-    jne near 05ce3h                           ; 0f 85 f8 00
+    jne near 05e25h                           ; 0f 85 f8 00
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
@@ -7962,5 +8296,5 @@
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+014h], al                    ; 88 46 14
-    jmp near 05cc3h                           ; e9 97 00
+    jmp near 05e05h                           ; e9 97 00
     mov AL, strict byte 017h                  ; b0 17
     mov dx, bx                                ; 89 da
@@ -7969,8 +8303,8 @@
     mov AL, strict byte 004h                  ; b0 04
     out DX, AL                                ; ee
-    jmp short 05c0eh                          ; eb d5
+    jmp short 05d50h                          ; eb d5
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 da b9
+    call 0161ch                               ; e8 98 b8
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
@@ -7980,18 +8314,18 @@
     and ax, strict word 00060h                ; 25 60 00
     cmp ax, strict word 00060h                ; 3d 60 00
-    je short 05c69h                           ; 74 17
+    je short 05dabh                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 05c69h                           ; 74 13
+    je short 05dabh                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 bd b9
+    call 0161ch                               ; e8 7b b8
     cmp ax, si                                ; 39 f0
-    je short 05c44h                           ; 74 e1
+    je short 05d86h                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 05c44h                          ; eb db
+    jmp short 05d86h                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 05c73h                           ; 74 06
+    je short 05db5h                           ; 74 06
     mov al, byte [bp+014h]                    ; 8a 46 14
     mov dx, bx                                ; 89 da
@@ -8003,11 +8337,11 @@
     mov byte [bp+015h], al                    ; 88 46 15
     test cl, cl                               ; 84 c9
-    jne short 05cc3h                          ; 75 43
+    jne short 05e05h                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+015h], al                    ; 88 46 15
-    jmp short 05cc3h                          ; eb 3c
+    jmp short 05e05h                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 8c b9
+    call 0161ch                               ; e8 4a b8
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
@@ -8016,18 +8350,18 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05cb3h                          ; 75 17
+    jne short 05df5h                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 05cb3h                           ; 74 13
+    je short 05df5h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 73 b9
+    call 0161ch                               ; e8 31 b8
     cmp ax, si                                ; 39 f0
-    je short 05c92h                           ; 74 e5
+    je short 05dd4h                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 05c92h                          ; eb df
+    jmp short 05dd4h                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 05ccah                           ; 74 13
+    je short 05e0ch                           ; 74 13
     mov byte [bp+015h], 000h                  ; c6 46 15 00
     mov dx, bx                                ; 89 da
@@ -8044,5 +8378,5 @@
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05c82h                          ; eb b0
+    jmp short 05dc4h                          ; eb b0
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
@@ -8054,5 +8388,5 @@
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05cc0h                          ; eb dd
+    jmp short 05e02h                          ; eb dd
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
     pop bp                                    ; 5d
@@ -8063,5 +8397,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf5cf1 LB 0x29
+set_enable_a20_:                             ; 0xf5e33 LB 0x29
     push bx                                   ; 53
     push cx                                   ; 51
@@ -8076,8 +8410,8 @@
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 05d0ah                           ; 74 05
+    je short 05e4ch                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 05d0dh                          ; eb 03
+    jmp short 05e4fh                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
@@ -8091,5 +8425,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-set_e820_range_:                             ; 0xf5d1a LB 0x8c
+set_e820_range_:                             ; 0xf5e5c LB 0x8c
     push si                                   ; 56
     push bp                                   ; 55
@@ -8120,5 +8454,5 @@
     retn 0000ah                               ; c2 0a 00
     in AL, DX                                 ; ec
-    jmp near 01f4dh                           ; e9 d8 c1
+    jmp near 0208fh                           ; e9 d8 c1
     sar byte [bx-06f6fh], 089h                ; c0 bf 91 90 89
     mov byte [bx+05283h], al                  ; 88 87 83 52
@@ -8126,29 +8460,23 @@
     inc cx                                    ; 41
     and AL, strict byte 000h                  ; 24 00
-    inc cx                                    ; 41
+    and word [bp+di+026h], strict byte 0005fh ; 83 63 26 5f
+    cmp word [bx-035h], bx                    ; 39 5f cb
+    pop di                                    ; 5f
+    rcr word [bx-02ah], 1                     ; d1 5f d6
+    pop di                                    ; 5f
+    fistp dword [bx+07dh]                     ; db 5f 7d
+    pushaw                                    ; 60
+    sbb ah, byte [bp+si+040h]                 ; 1a 62 40
     db  062h
-    in AL, strict byte 05dh                   ; e4 5d
-    neg word [di-077h]                        ; f7 5d 89
+    db  0c7h, 05fh, 0c7h, 05fh, 00dh
+    ; mov word [bx-039h], 00d5fh                ; c7 5f c7 5f 0d
+    arpl word [di], si                        ; 63 35
+    arpl word [bx+si+063h], cx                ; 63 48 63
+    push di                                   ; 57
+    arpl bx, cx                               ; 63 cb
+    pop di                                    ; 5f
     pop si                                    ; 5e
-    db  08fh, 05eh, 094h
-    ; pop word [bp-06ch]                        ; 8f 5e 94
-    pop si                                    ; 5e
-    cwd                                       ; 99
-    pop si                                    ; 5e
-    cmp bx, word [bx-028h]                    ; 3b 5f d8
-    pushaw                                    ; 60
-    db  0feh
-    pushaw                                    ; 60
-    test word [bp-07bh], bx                   ; 85 5e 85
-    pop si                                    ; 5e
-    retf                                      ; cb
-    popaw                                     ; 61
-    db  0f3h, 061h
-    ; rep popaw                                 ; f3 61
-    push ES                                   ; 06
-    bound dx, [di]                            ; 62 15
-    bound cx, [bx+di+01c5eh]                  ; 62 89 5e 1c
-    db  062h
-_int15_function:                             ; 0xf5da6 LB 0x4c9
+    db  063h
+_int15_function:                             ; 0xf5ee8 LB 0x4c9
     push si                                   ; 56
     push di                                   ; 57
@@ -8157,13 +8485,13 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe near 06241h                          ; 0f 87 88 04
+    jnbe near 06383h                          ; 0f 87 88 04
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00012h                ; b9 12 00
-    mov di, 05d71h                            ; bf 71 5d
+    mov di, 05eb3h                            ; bf b3 5e
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+05d82h]               ; 2e 8b b5 82 5d
+    mov si, word [cs:di+05ec4h]               ; 2e 8b b5 c4 5e
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -8178,28 +8506,28 @@
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    jne near 06241h                           ; 0f 85 51 04
+    jne near 06383h                           ; 0f 85 51 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 061eah                           ; e9 f3 03
+    jmp near 0632ch                           ; e9 f3 03
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 05e0ch                           ; 72 0e
-    jbe short 05e20h                          ; 76 20
+    jc short 05f4eh                           ; 72 0e
+    jbe short 05f62h                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 05e4dh                           ; 74 48
+    je short 05f8fh                           ; 74 48
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 05e30h                           ; 74 26
-    jmp short 05e5ah                          ; eb 4e
+    je short 05f72h                           ; 74 26
+    jmp short 05f9ch                          ; eb 4e
     test ax, ax                               ; 85 c0
-    jne short 05e5ah                          ; 75 4a
+    jne short 05f9ch                          ; 75 4a
     xor ax, ax                                ; 31 c0
-    call 05cf1h                               ; e8 dc fe
+    call 05e33h                               ; e8 dc fe
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 05e85h                           ; e9 65 00
+    jmp near 05fc7h                           ; e9 65 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 05cf1h                               ; e8 cb fe
+    call 05e33h                               ; e8 cb fe
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], dh                    ; 88 76 17
-    jmp near 05e85h                           ; e9 55 00
+    jmp near 05fc7h                           ; e9 55 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
@@ -8213,13 +8541,13 @@
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], ah                    ; 88 66 17
-    jmp near 05e85h                           ; e9 38 00
+    jmp near 05fc7h                           ; e9 38 00
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], ah                    ; 88 66 17
     mov word [bp+010h], ax                    ; 89 46 10
-    jmp near 05e85h                           ; e9 2b 00
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp near 05fc7h                           ; e9 2b 00
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 49 ba
+    call 018aeh                               ; e8 07 b9
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -8227,5 +8555,5 @@
     push 007c4h                               ; 68 c4 07
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 76 ba
+    call 018e9h                               ; e8 34 b9
     add sp, strict byte 00006h                ; 83 c4 06
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
@@ -8239,36 +8567,36 @@
     retn                                      ; c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp near 05f35h                           ; e9 a6 00
+    jmp near 06077h                           ; e9 a6 00
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp short 05e85h                          ; eb f1
+    jmp short 05fc7h                          ; eb f1
     mov word [bp+01ch], cx                    ; 89 4e 1c
-    jmp short 05e82h                          ; eb e9
+    jmp short 05fc4h                          ; eb e9
     test byte [bp+016h], 0ffh                 ; f6 46 16 ff
-    je short 05f0bh                           ; 74 6c
+    je short 0604dh                           ; 74 6c
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 58 b7
+    call 01600h                               ; e8 16 b6
     test AL, strict byte 001h                 ; a8 01
-    jne near 061e1h                           ; 0f 85 33 03
+    jne near 06323h                           ; 0f 85 33 03
     mov bx, strict word 00001h                ; bb 01 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 54 b7
+    call 0160eh                               ; e8 12 b6
     mov bx, word [bp+018h]                    ; 8b 5e 18
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 64 b7
+    call 0162ah                               ; e8 22 b6
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 58 b7
+    call 0162ah                               ; e8 16 b6
     mov bx, word [bp+012h]                    ; 8b 5e 12
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 4c b7
+    call 0162ah                               ; e8 0a b6
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, 0009eh                            ; ba 9e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 40 b7
+    call 0162ah                               ; e8 fe b5
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov dx, 000a1h                            ; ba a1 00
@@ -8279,21 +8607,21 @@
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 5f b7
+    call 0165ch                               ; e8 1d b6
     or AL, strict byte 040h                   ; 0c 40
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0166dh                               ; e8 65 b7
-    jmp near 05e85h                           ; e9 7a ff
+    call 0166dh                               ; e8 23 b6
+    jmp near 05fc7h                           ; e9 7a ff
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 05f29h                          ; 75 19
+    jne short 0606bh                          ; 75 19
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f3 b6
+    call 0160eh                               ; e8 b1 b5
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 37 b7
+    call 0165ch                               ; e8 f5 b5
     and AL, strict byte 0bfh                  ; 24 bf
-    jmp short 05effh                          ; eb d6
+    jmp short 06041h                          ; eb d6
     mov word [bp+01ch], bx                    ; 89 5e 1c
     mov ax, dx                                ; 89 d0
@@ -8303,8 +8631,8 @@
     or dx, ax                                 ; 09 c2
     mov word [bp+016h], dx                    ; 89 56 16
-    jmp near 05e85h                           ; e9 4a ff
+    jmp near 05fc7h                           ; e9 4a ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 05cf1h                               ; e8 af fd
+    call 05e33h                               ; e8 af fd
     mov di, ax                                ; 89 c7
     mov ax, word [bp+018h]                    ; 8b 46 18
@@ -8316,5 +8644,5 @@
     mov byte [bp-002h], dl                    ; 88 56 fe
     cmp cx, ax                                ; 39 c1
-    jnc short 05f61h                          ; 73 05
+    jnc short 060a3h                          ; 73 05
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
@@ -8324,50 +8652,50 @@
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, strict word 0002fh                ; bb 2f 00
-    call 0162ah                               ; e8 ba b6
+    call 0162ah                               ; e8 78 b5
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, cx                                ; 89 cb
-    call 0162ah                               ; e8 ac b6
+    call 0162ah                               ; e8 6a b5
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 0160eh                               ; e8 80 b6
+    call 0160eh                               ; e8 3e b5
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000dh                ; 83 c2 0d
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, 00093h                            ; bb 93 00
-    call 0160eh                               ; e8 71 b6
+    call 0160eh                               ; e8 2f b5
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor bx, bx                                ; 31 db
-    call 0162ah                               ; e8 7f b6
+    call 0162ah                               ; e8 3d b5
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00020h                ; 83 c2 20
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0162ah                               ; e8 70 b6
+    call 0162ah                               ; e8 2e b5
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00022h                ; 83 c2 22
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor bx, bx                                ; 31 db
-    call 0162ah                               ; e8 62 b6
+    call 0162ah                               ; e8 20 b5
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00024h                ; 83 c2 24
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 0160eh                               ; e8 37 b6
+    call 0160eh                               ; e8 f5 b4
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00025h                ; 83 c2 25
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, 0009bh                            ; bb 9b 00
-    call 0160eh                               ; e8 28 b6
+    call 0160eh                               ; e8 e6 b4
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00026h                ; 83 c2 26
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor bx, bx                                ; 31 db
-    call 0162ah                               ; e8 36 b6
+    call 0162ah                               ; e8 f4 b4
     mov ax, ss                                ; 8c d0
     mov cx, ax                                ; 89 c1
@@ -8379,25 +8707,25 @@
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0162ah                               ; e8 1a b6
+    call 0162ah                               ; e8 d8 b4
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002ah                ; 83 c2 2a
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, cx                                ; 89 cb
-    call 0162ah                               ; e8 0c b6
+    call 0162ah                               ; e8 ca b4
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002ch                ; 83 c2 2c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 0160eh                               ; e8 e0 b5
+    call 0160eh                               ; e8 9e b4
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002dh                ; 83 c2 2d
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, 00093h                            ; bb 93 00
-    call 0160eh                               ; e8 d1 b5
+    call 0160eh                               ; e8 8f b4
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002eh                ; 83 c2 2e
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor bx, bx                                ; 31 db
-    call 0162ah                               ; e8 df b5
+    call 0162ah                               ; e8 9d b4
     mov si, word [bp+00ah]                    ; 8b 76 0a
     mov es, [bp+018h]                         ; 8e 46 18
@@ -8410,5 +8738,5 @@
     mov word [00467h], sp                     ; 89 26 67 04
     mov [00469h], ss                          ; 8c 16 69 04
-    call 06067h                               ; e8 00 00
+    call 061a9h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 0001bh                ; 83 c7 1b
@@ -8433,5 +8761,5 @@
     cld                                       ; fc
     rep movsw                                 ; f3 a5
-    call 0609bh                               ; e8 00 00
+    call 061ddh                               ; e8 00 00
     pop ax                                    ; 58
     push 0f000h                               ; 68 00 f0
@@ -8454,51 +8782,51 @@
     pop DS                                    ; 1f
     mov ax, di                                ; 89 f8
-    call 05cf1h                               ; e8 25 fc
+    call 05e33h                               ; e8 25 fc
     sti                                       ; fb
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp near 05e85h                           ; e9 ad fd
+    jmp near 05fc7h                           ; e9 ad fd
     mov ax, strict word 00031h                ; b8 31 00
-    call 0165ch                               ; e8 7e b5
+    call 0165ch                               ; e8 3c b4
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 0165ch                               ; e8 71 b5
+    call 0165ch                               ; e8 2f b4
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+016h], dx                    ; 89 56 16
     cmp dx, strict byte 0ffc0h                ; 83 fa c0
-    jbe short 060d1h                          ; 76 da
+    jbe short 06213h                          ; 76 da
     mov word [bp+016h], strict word 0ffc0h    ; c7 46 16 c0 ff
-    jmp short 060d1h                          ; eb d3
+    jmp short 06213h                          ; eb d3
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 05cf1h                               ; e8 ec fb
+    call 05e33h                               ; e8 ec fb
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00038h                ; 83 c2 38
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0162ah                               ; e8 16 b5
+    call 0162ah                               ; e8 d4 b3
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0003ah                ; 83 c2 3a
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor bx, bx                                ; 31 db
-    call 0162ah                               ; e8 08 b5
+    call 0162ah                               ; e8 c6 b3
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0003ch                ; 83 c2 3c
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 0160eh                               ; e8 dd b4
+    call 0160eh                               ; e8 9b b3
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0003dh                ; 83 c2 3d
     mov ax, word [bp+018h]                    ; 8b 46 18
     mov bx, 0009bh                            ; bb 9b 00
-    call 0160eh                               ; e8 ce b4
+    call 0160eh                               ; e8 8c b3
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0003eh                ; 83 c2 3e
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor bx, bx                                ; 31 db
-    call 0162ah                               ; e8 dc b4
+    call 0162ah                               ; e8 9a b3
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
@@ -8530,5 +8858,5 @@
     out DX, AL                                ; ee
     mov si, word [bp+00ah]                    ; 8b 76 0a
-    call 0618fh                               ; e8 00 00
+    call 062d1h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
@@ -8558,12 +8886,12 @@
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 05e85h                           ; e9 ba fc
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp near 05fc7h                           ; e9 ba fc
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 d8 b6
+    call 018aeh                               ; e8 96 b5
     push 00804h                               ; 68 04 08
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 0b b7
+    call 018e9h                               ; e8 c9 b5
     add sp, strict byte 00004h                ; 83 c4 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
@@ -8572,52 +8900,51 @@
     or ah, 086h                               ; 80 cc 86
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05e85h                           ; e9 92 fc
+    jmp near 05fc7h                           ; e9 92 fc
     mov word [bp+01ch], cx                    ; 89 4e 1c
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+010h], 0e6f5h                ; c7 46 10 f5 e6
     mov word [bp+018h], 0f000h                ; c7 46 18 00 f0
-    jmp near 05e85h                           ; e9 7f fc
+    jmp near 05fc7h                           ; e9 7f fc
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 0d b4
+    call 0161ch                               ; e8 cb b2
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 060d1h                           ; e9 bc fe
+    jmp near 06213h                           ; e9 bc fe
     push 00833h                               ; 68 33 08
     push strict byte 00008h                   ; 6a 08
-    jmp short 061dbh                          ; eb bf
+    jmp short 0631dh                          ; eb bf
     test byte [bp+016h], 0ffh                 ; f6 46 16 ff
-    jne short 06241h                          ; 75 1f
+    jne short 06383h                          ; 75 1f
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 0623ah                           ; 72 0b
+    jc short 0637ch                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 0623ah                         ; 77 06
+    jnbe short 0637ch                         ; 77 06
     mov word [bp+01ch], cx                    ; 89 4e 1c
-    jmp near 05e85h                           ; e9 4b fc
+    jmp near 05fc7h                           ; e9 4b fc
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05e85h                           ; e9 44 fc
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp near 05fc7h                           ; e9 44 fc
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 62 b6
+    call 018aeh                               ; e8 20 b5
     push word [bp+010h]                       ; ff 76 10
     push word [bp+016h]                       ; ff 76 16
     push 0084ah                               ; 68 4a 08
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 8f b6
+    call 018e9h                               ; e8 4d b5
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp short 061e1h                          ; eb 82
-    mov ax, word [0d763h]                     ; a1 63 d7
-    arpl cx, di                               ; 63 f9
-    arpl word [bp+si], bx                     ; 63 1a
-    cmp word [fs:si+058h], sp                 ; 64 39 64 58
-    db  064h
-    db  09ah
-    db  064h
-    db  0c7h
-    db  064h
-_int15_function32:                           ; 0xf626f LB 0x309
+    jmp short 06323h                          ; eb 82
+    jcxz 06407h                               ; e3 64
+    sbb word [di+03bh], sp                    ; 19 65 3b
+    db  065h, 05ch
+    ; gs pop sp                                 ; 65 5c
+    db  065h, 07bh, 065h
+    ; gs jnp short 06410h                       ; 65 7b 65
+    call far 00965h:0dc65h                    ; 9a 65 dc 65 09
+    db  066h
+_int15_function32:                           ; 0xf63b1 LB 0x309
     push si                                   ; 56
     enter 00008h, 000h                        ; c8 08 00 00
@@ -8625,7 +8952,7 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000e8h                            ; 3d e8 00
-    je short 062c0h                           ; 74 41
+    je short 06402h                           ; 74 41
     cmp ax, 00086h                            ; 3d 86 00
-    jne near 0654bh                           ; 0f 85 c5 02
+    jne near 0668dh                           ; 0f 85 c5 02
     sti                                       ; fb
     mov ax, word [bp+01eh]                    ; 8b 46 1e
@@ -8646,14 +8973,14 @@
     db  066h, 00bh, 0c9h
     ; or ecx, ecx                               ; 66 0b c9
-    je near 062bdh                            ; 0f 84 0e 00
+    je near 063ffh                            ; 0f 84 0e 00
     in AL, strict byte 061h                   ; e4 61
     and AL, strict byte 010h                  ; 24 10
     db  03ah, 0c4h
     ; cmp al, ah                                ; 3a c4
-    je short 062afh                           ; 74 f8
+    je short 063f1h                           ; 74 f8
     db  08ah, 0e0h
     ; mov ah, al                                ; 8a e0
     dec ecx                                   ; 66 49
-    jne short 062afh                          ; 75 f2
+    jne short 063f1h                          ; 75 f2
     leave                                     ; c9
     pop si                                    ; 5e
@@ -8662,14 +8989,14 @@
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00020h                ; 3d 20 00
-    je short 062d4h                           ; 74 0a
+    je short 06416h                           ; 74 0a
     cmp ax, strict word 00001h                ; 3d 01 00
-    je near 064fdh                            ; 0f 84 2c 02
-    jmp near 0654bh                           ; e9 77 02
+    je near 0663fh                            ; 0f 84 2c 02
+    jmp near 0668dh                           ; e9 77 02
     cmp word [bp+01ch], 0534dh                ; 81 7e 1c 4d 53
-    jne near 0654bh                           ; 0f 85 6e 02
+    jne near 0668dh                           ; 0f 85 6e 02
     cmp word [bp+01ah], 04150h                ; 81 7e 1a 50 41
-    jne near 0654bh                           ; 0f 85 65 02
+    jne near 0668dh                           ; 0f 85 65 02
     mov ax, strict word 00035h                ; b8 35 00
-    call 0165ch                               ; e8 70 b3
+    call 0165ch                               ; e8 2e b2
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
@@ -8677,7 +9004,7 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 062f4h                               ; e2 fa
+    loop 06436h                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 0165ch                               ; e8 5c b3
+    call 0165ch                               ; e8 1a b2
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
@@ -8687,10 +9014,10 @@
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 0631ah                           ; 72 06
-    jne short 06347h                          ; 75 31
+    jc short 0645ch                           ; 72 06
+    jne short 06489h                          ; 75 31
     test bx, bx                               ; 85 db
-    jnbe short 06347h                         ; 77 2d
+    jnbe short 06489h                         ; 77 2d
     mov ax, strict word 00031h                ; b8 31 00
-    call 0165ch                               ; e8 3c b3
+    call 0165ch                               ; e8 fa b1
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
@@ -8698,7 +9025,7 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06328h                               ; e2 fa
+    loop 0646ah                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 0165ch                               ; e8 28 b3
+    call 0165ch                               ; e8 e6 b1
     xor ah, ah                                ; 30 e4
     or bx, ax                                 ; 09 c3
@@ -8706,9 +9033,9 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 0633bh                               ; e2 fa
+    loop 0647dh                               ; e2 fa
     add bx, strict byte 00000h                ; 83 c3 00
     adc dx, strict byte 00010h                ; 83 d2 10
     mov ax, strict word 00062h                ; b8 62 00
-    call 0165ch                               ; e8 0f b3
+    call 0165ch                               ; e8 cd b1
     xor ah, ah                                ; 30 e4
     mov word [bp-008h], ax                    ; 89 46 f8
@@ -8718,7 +9045,7 @@
     sal word [bp-008h], 1                     ; d1 66 f8
     rcl word [bp-006h], 1                     ; d1 56 fa
-    loop 0635ah                               ; e2 f8
+    loop 0649ch                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 0165ch                               ; e8 f4 b2
+    call 0165ch                               ; e8 b2 b1
     xor ah, ah                                ; 30 e4
     or word [bp-008h], ax                     ; 09 46 f8
@@ -8727,10 +9054,10 @@
     mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
     mov ax, strict word 00063h                ; b8 63 00
-    call 0165ch                               ; e8 de b2
+    call 0165ch                               ; e8 9c b1
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-002h], al                    ; 88 46 fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     cmp ax, strict word 00007h                ; 3d 07 00
-    jnbe near 0654bh                          ; 0f 87 bd 01
+    jnbe near 0668dh                          ; 0f 87 bd 01
     mov si, ax                                ; 89 c6
     add si, ax                                ; 01 c6
@@ -8739,5 +9066,5 @@
     mov cx, dx                                ; 89 d1
     adc cx, strict byte 0ffffh                ; 83 d1 ff
-    jmp word [cs:si+0625fh]                   ; 2e ff a4 5f 62
+    jmp word [cs:si+063a1h]                   ; 2e ff a4 a1 63
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
@@ -8748,5 +9075,5 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 05d1ah                               ; e8 62 f9
+    call 05e5ch                               ; e8 62 f9
     mov dword [bp+016h], strict dword 000000001h ; 66 c7 46 16 01 00 00 00
     mov dword [bp+022h], strict dword 0534d4150h ; 66 c7 46 22 50 41 4d 53
@@ -8764,7 +9091,7 @@
     mov bx, 0fc00h                            ; bb 00 fc
     mov cx, strict word 00009h                ; b9 09 00
-    call 05d1ah                               ; e8 2b f9
+    call 05e5ch                               ; e8 2b f9
     mov dword [bp+016h], strict dword 000000002h ; 66 c7 46 16 02 00 00 00
-    jmp short 063c0h                          ; eb c7
+    jmp short 06502h                          ; eb c7
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -8775,7 +9102,7 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 05d1ah                               ; e8 0a f9
+    call 05e5ch                               ; e8 0a f9
     mov dword [bp+016h], strict dword 000000003h ; 66 c7 46 16 03 00 00 00
-    jmp short 063c0h                          ; eb a6
+    jmp short 06502h                          ; eb a6
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
@@ -8786,7 +9113,7 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 05d1ah                               ; e8 eb f8
+    call 05e5ch                               ; e8 eb f8
     mov dword [bp+016h], strict dword 000000004h ; 66 c7 46 16 04 00 00 00
-    jmp short 063c0h                          ; eb 87
+    jmp short 06502h                          ; eb 87
     push strict byte 00003h                   ; 6a 03
     push dword 000000000h                     ; 66 6a 00
@@ -8797,7 +9124,7 @@
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 05d1ah                               ; e8 cd f8
+    call 05e5ch                               ; e8 cd f8
     mov dword [bp+016h], strict dword 000000005h ; 66 c7 46 16 05 00 00 00
-    jmp near 063c0h                           ; e9 68 ff
+    jmp near 06502h                           ; e9 68 ff
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -8807,17 +9134,17 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 05d1ah                               ; e8 ac f8
+    call 05e5ch                               ; e8 ac f8
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 0647bh                          ; 75 07
+    jne short 065bdh                          ; 75 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     test ax, ax                               ; 85 c0
-    je short 06491h                           ; 74 16
+    je short 065d3h                           ; 74 16
     mov dword [bp+016h], strict dword 000000007h ; 66 c7 46 16 07 00 00 00
-    jmp near 063c0h                           ; e9 3a ff
+    jmp near 06502h                           ; e9 3a ff
     mov dword [bp+016h], strict dword 000000006h ; 66 c7 46 16 06 00 00 00
-    jmp near 063c0h                           ; e9 2f ff
+    jmp near 06502h                           ; e9 2f ff
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 063c0h                           ; e9 26 ff
+    jmp near 06502h                           ; e9 26 ff
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -8827,18 +9154,18 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 05d1ah                               ; e8 6b f8
+    call 05e5ch                               ; e8 6b f8
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 064bch                          ; 75 07
+    jne short 065feh                          ; 75 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     test ax, ax                               ; 85 c0
-    je short 064beh                           ; 74 02
-    jmp short 0647bh                          ; eb bd
+    je short 06600h                           ; 74 02
+    jmp short 065bdh                          ; eb bd
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 063c0h                           ; e9 f9 fe
+    jmp near 06502h                           ; e9 f9 fe
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 064d5h                          ; 75 08
+    jne short 06617h                          ; 75 08
     cmp word [bp-006h], strict byte 00000h    ; 83 7e fa 00
-    je near 063c0h                            ; 0f 84 eb fe
+    je near 06502h                            ; 0f 84 eb fe
     push strict byte 00001h                   ; 6a 01
     mov al, byte [bp-002h]                    ; 8a 46 fe
@@ -8853,29 +9180,29 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 05d1ah                               ; e8 28 f8
+    call 05e5ch                               ; e8 28 f8
     xor ax, ax                                ; 31 c0
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 063c0h                           ; e9 c3 fe
+    jmp near 06502h                           ; e9 c3 fe
     and byte [bp+02ah], 0feh                  ; 80 66 2a fe
     mov ax, strict word 00031h                ; b8 31 00
-    call 0165ch                               ; e8 55 b1
+    call 0165ch                               ; e8 13 b0
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 0165ch                               ; e8 48 b1
+    call 0165ch                               ; e8 06 b0
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+01eh], dx                    ; 89 56 1e
     cmp dx, 03c00h                            ; 81 fa 00 3c
-    jbe short 06526h                          ; 76 05
+    jbe short 06668h                          ; 76 05
     mov word [bp+01eh], 03c00h                ; c7 46 1e 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 0165ch                               ; e8 30 b1
+    call 0165ch                               ; e8 ee af
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00034h                ; b8 34 00
-    call 0165ch                               ; e8 24 b1
+    call 0165ch                               ; e8 e2 af
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
@@ -8887,13 +9214,13 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    mov bx, 00cd6h                            ; bb d6 0c
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 58 b3
+    call 018aeh                               ; e8 16 b2
     push word [bp+016h]                       ; ff 76 16
     push word [bp+022h]                       ; ff 76 22
     push 0084ah                               ; 68 4a 08
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 85 b3
+    call 018e9h                               ; e8 43 b2
     add sp, strict byte 00008h                ; 83 c4 08
     or byte [bp+02ah], 001h                   ; 80 4e 2a 01
@@ -8905,5 +9232,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-init_rtc_:                                   ; 0xf6578 LB 0x25
+init_rtc_:                                   ; 0xf66ba LB 0x25
     push dx                                   ; 52
     push bp                                   ; 55
@@ -8911,16 +9238,16 @@
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 0166dh                               ; e8 e8 b0
+    call 0166dh                               ; e8 a6 af
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0166dh                               ; e8 df b0
+    call 0166dh                               ; e8 9d af
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 0165ch                               ; e8 c8 b0
+    call 0165ch                               ; e8 86 af
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 0165ch                               ; e8 c2 b0
+    call 0165ch                               ; e8 80 af
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     retn                                      ; c3
-rtc_updating_:                               ; 0xf659d LB 0x1f
+rtc_updating_:                               ; 0xf66df LB 0x1f
     push dx                                   ; 52
     push bp                                   ; 55
@@ -8928,9 +9255,9 @@
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 065b6h                           ; 74 0f
+    je short 066f8h                           ; 74 0f
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 0165ch                               ; e8 af b0
+    call 0165ch                               ; e8 6d af
     test AL, strict byte 080h                 ; a8 80
-    jne short 065a4h                          ; 75 f3
+    jne short 066e6h                          ; 75 f3
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
@@ -8941,61 +9268,61 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-_int70_function:                             ; 0xf65bc LB 0xbb
+_int70_function:                             ; 0xf66fe LB 0xbb
     push si                                   ; 56
     enter 00002h, 000h                        ; c8 02 00 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 95 b0
+    call 0165ch                               ; e8 53 af
     mov dl, al                                ; 88 c2
     mov byte [bp-002h], al                    ; 88 46 fe
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 0165ch                               ; e8 8a b0
+    call 0165ch                               ; e8 48 af
     mov dh, al                                ; 88 c6
     test dl, 060h                             ; f6 c2 60
-    je near 06661h                            ; 0f 84 86 00
+    je near 067a3h                            ; 0f 84 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 065e3h                           ; 74 04
+    je short 06725h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dh, 040h                             ; f6 c6 40
-    je near 06661h                            ; 0f 84 77 00
+    je near 067a3h                            ; 0f 84 77 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 0d b0
+    call 01600h                               ; e8 cb ae
     test al, al                               ; 84 c0
-    je short 06661h                           ; 74 6a
+    je short 067a3h                           ; 74 6a
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01638h                               ; e8 38 b0
+    call 01638h                               ; e8 f6 ae
     test dx, dx                               ; 85 d2
-    jne short 0664dh                          ; 75 49
+    jne short 0678fh                          ; 75 49
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 0664dh                          ; 73 44
+    jnc short 0678fh                          ; 73 44
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 0a b0
+    call 0161ch                               ; e8 c8 ae
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 ff af
+    call 0161ch                               ; e8 bd ae
     mov cx, ax                                ; 89 c1
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 e4 af
+    call 0160eh                               ; e8 a2 ae
     mov al, byte [bp-002h]                    ; 8a 46 fe
     and AL, strict byte 037h                  ; 24 37
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0166dh                               ; e8 35 b0
+    call 0166dh                               ; e8 f3 ae
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01600h                               ; e8 c1 af
+    call 01600h                               ; e8 7f ae
     or AL, strict byte 080h                   ; 0c 80
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 c3 af
-    jmp short 06661h                          ; eb 14
+    call 0160eh                               ; e8 81 ae
+    jmp short 067a3h                          ; eb 14
     mov bx, ax                                ; 89 c3
     add bx, 0fc2fh                            ; 81 c3 2f fc
@@ -9004,19 +9331,11 @@
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0164ah                               ; e8 e9 af
-    call 0e03bh                               ; e8 d7 79
+    call 0164ah                               ; e8 a7 ae
+    call 0e03bh                               ; e8 95 78
     leave                                     ; c9
     pop si                                    ; 5e
     retn                                      ; c3
-    mov fs, [bp-04bh]                         ; 8e 66 b5
-    db  066h, 0dah, 066h, 00ch
-    ; fisub dword [bp+00ch]                     ; 66 da 66 0c
-    db  067h, 05ah
-    ; pop dx                                    ; 67 5a
-    db  067h, 090h
-    ; nop                                       ; 67 90
-    sal byte [edi+027h], CL                   ; 67 d2 67 27
-    db  068h
-_int1a_function:                             ; 0xf6677 LB 0x1c0
+    db  0d0h, 067h, 0f7h, 067h, 01ch, 068h, 04eh, 068h, 09ch, 068h, 0d2h, 068h, 014h, 069h, 069h, 069h
+_int1a_function:                             ; 0xf67b9 LB 0x1c0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9024,8 +9343,8 @@
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 066b3h                          ; 0f 87 2f 00
+    jnbe near 067f5h                          ; 0f 87 2f 00
     movzx bx, al                              ; 0f b6 d8
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+06667h]                   ; 2e ff a7 67 66
+    jmp word [cs:bx+067a9h]                   ; 2e ff a7 a9 67
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
@@ -9059,39 +9378,39 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 0659dh                               ; e8 c0 fe
+    call 066dfh                               ; e8 c0 fe
     test ax, ax                               ; 85 c0
-    je short 066e3h                           ; 74 02
+    je short 06825h                           ; 74 02
     pop bp                                    ; 5d
     retn                                      ; c3
     xor ax, ax                                ; 31 c0
-    call 0165ch                               ; e8 74 af
+    call 0165ch                               ; e8 32 ae
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 0165ch                               ; e8 6b af
+    call 0165ch                               ; e8 29 ae
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 0165ch                               ; e8 62 af
+    call 0165ch                               ; e8 20 ae
     mov bl, al                                ; 88 c3
     mov byte [bp+011h], al                    ; 88 46 11
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 57 af
+    call 0165ch                               ; e8 15 ae
     and AL, strict byte 001h                  ; 24 01
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp short 06751h                          ; eb 45
-    call 0659dh                               ; e8 8e fe
+    jmp short 06893h                          ; eb 45
+    call 066dfh                               ; e8 8e fe
     test ax, ax                               ; 85 c0
-    je short 06716h                           ; 74 03
-    call 06578h                               ; e8 62 fe
+    je short 06858h                           ; 74 03
+    call 066bah                               ; e8 62 fe
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     xor ax, ax                                ; 31 c0
-    call 0166dh                               ; e8 4e af
+    call 0166dh                               ; e8 0c ae
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00002h                ; b8 02 00
-    call 0166dh                               ; e8 44 af
+    call 0166dh                               ; e8 02 ae
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00004h                ; b8 04 00
-    call 0166dh                               ; e8 3a af
+    call 0166dh                               ; e8 f8 ad
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 23 af
+    call 0165ch                               ; e8 e1 ad
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
@@ -9102,5 +9421,5 @@
     movzx dx, bl                              ; 0f b6 d3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0166dh                               ; e8 1c af
+    call 0166dh                               ; e8 da ad
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
@@ -9108,68 +9427,68 @@
     retn                                      ; c3
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 0659dh                               ; e8 3c fe
+    call 066dfh                               ; e8 3c fe
     test ax, ax                               ; 85 c0
-    je short 06767h                           ; 74 02
+    je short 068a9h                           ; 74 02
     pop bp                                    ; 5d
     retn                                      ; c3
     mov ax, strict word 00009h                ; b8 09 00
-    call 0165ch                               ; e8 ef ae
+    call 0165ch                               ; e8 ad ad
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 0165ch                               ; e8 e6 ae
+    call 0165ch                               ; e8 a4 ad
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 0165ch                               ; e8 dd ae
+    call 0165ch                               ; e8 9b ad
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 0165ch                               ; e8 d4 ae
+    call 0165ch                               ; e8 92 ad
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 0659dh                               ; e8 0a fe
+    call 066dfh                               ; e8 0a fe
     test ax, ax                               ; 85 c0
-    je short 0679ch                           ; 74 05
-    call 06578h                               ; e8 de fd
+    je short 068deh                           ; 74 05
+    call 066bah                               ; e8 de fd
     pop bp                                    ; 5d
     retn                                      ; c3
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00009h                ; b8 09 00
-    call 0166dh                               ; e8 c7 ae
+    call 0166dh                               ; e8 85 ad
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00008h                ; b8 08 00
-    call 0166dh                               ; e8 bd ae
+    call 0166dh                               ; e8 7b ad
     movzx dx, byte [bp+00eh]                  ; 0f b6 56 0e
     mov ax, strict word 00007h                ; b8 07 00
-    call 0166dh                               ; e8 b3 ae
+    call 0166dh                               ; e8 71 ad
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00032h                ; b8 32 00
-    call 0166dh                               ; e8 a9 ae
+    call 0166dh                               ; e8 67 ad
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 92 ae
+    call 0165ch                               ; e8 50 ad
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 06748h                           ; e9 76 ff
+    jmp near 0688ah                           ; e9 76 ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 84 ae
+    call 0165ch                               ; e8 42 ad
     mov bl, al                                ; 88 c3
     mov word [bp+012h], strict word 00000h    ; c7 46 12 00 00
     test AL, strict byte 020h                 ; a8 20
-    je short 067e5h                           ; 74 02
+    je short 06927h                           ; 74 02
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 0659dh                               ; e8 b5 fd
+    call 066dfh                               ; e8 b5 fd
     test ax, ax                               ; 85 c0
-    je short 067efh                           ; 74 03
-    call 06578h                               ; e8 89 fd
+    je short 06931h                           ; 74 03
+    call 066bah                               ; e8 89 fd
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00001h                ; b8 01 00
-    call 0166dh                               ; e8 74 ae
+    call 0166dh                               ; e8 32 ad
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00003h                ; b8 03 00
-    call 0166dh                               ; e8 6a ae
+    call 0166dh                               ; e8 28 ad
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00005h                ; b8 05 00
-    call 0166dh                               ; e8 60 ae
+    call 0166dh                               ; e8 1e ad
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9183,14 +9502,14 @@
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0166dh                               ; e8 48 ae
+    call 0166dh                               ; e8 06 ad
     pop bp                                    ; 5d
     retn                                      ; c3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 2f ae
+    call 0165ch                               ; e8 ed ac
     mov bl, al                                ; 88 c3
     and AL, strict byte 057h                  ; 24 57
     movzx dx, al                              ; 0f b6 d0
-    jmp near 0674bh                           ; e9 14 ff
-send_to_mouse_ctrl_:                         ; 0xf6837 LB 0x31
+    jmp near 0688dh                           ; e9 14 ff
+send_to_mouse_ctrl_:                         ; 0xf6979 LB 0x31
     push bx                                   ; 53
     push dx                                   ; 52
@@ -9203,9 +9522,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 06856h                           ; 74 0e
+    je short 06998h                           ; 74 0e
     push 00884h                               ; 68 84 08
-    push 0109eh                               ; 68 9e 10
+    push 010b4h                               ; 68 b4 10
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 96 b0
+    call 018e9h                               ; e8 54 af
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
@@ -9220,5 +9539,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf6868 LB 0x38
+get_mouse_data_:                             ; 0xf69aa LB 0x38
     push bx                                   ; 53
     push cx                                   ; 51
@@ -9234,13 +9553,13 @@
     and ax, strict word 00021h                ; 25 21 00
     cmp ax, strict word 00021h                ; 3d 21 00
-    je short 06889h                           ; 74 07
+    je short 069cbh                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 06889h                           ; 74 03
+    je short 069cbh                           ; 74 03
     dec cx                                    ; 49
-    jmp short 06874h                          ; eb eb
+    jmp short 069b6h                          ; eb eb
     test cx, cx                               ; 85 c9
-    jne short 06891h                          ; 75 04
+    jne short 069d3h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0689ch                          ; eb 0b
+    jmp short 069deh                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -9253,5 +9572,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf68a0 LB 0x2f
+set_kbd_command_byte_:                       ; 0xf69e2 LB 0x2f
     push bx                                   ; 53
     push dx                                   ; 52
@@ -9264,9 +9583,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 068bfh                           ; 74 0e
+    je short 06a01h                           ; 74 0e
     push 0088eh                               ; 68 8e 08
-    push 0109eh                               ; 68 9e 10
+    push 010b4h                               ; 68 b4 10
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 2d b0
+    call 018e9h                               ; e8 eb ae
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
@@ -9280,9 +9599,9 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-_int74_function:                             ; 0xf68cf LB 0xc6
+_int74_function:                             ; 0xf6a11 LB 0xc6
     enter 00008h, 000h                        ; c8 08 00 00
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 40 ad
+    call 0161ch                               ; e8 fe ab
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
@@ -9293,5 +9612,5 @@
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne near 06983h                           ; 0f 85 92 00
+    jne near 06ac5h                           ; 0f 85 92 00
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -9301,12 +9620,12 @@
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 ff ac
+    call 01600h                               ; e8 bd ab
     mov byte [bp-006h], al                    ; 88 46 fa
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 f4 ac
+    call 01600h                               ; e8 b2 ab
     mov byte [bp-008h], al                    ; 88 46 f8
     test AL, strict byte 080h                 ; a8 80
-    je short 06983h                           ; 74 70
+    je short 06ac5h                           ; 74 70
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 007h                  ; 24 07
@@ -9319,21 +9638,21 @@
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 de ac
+    call 0160eh                               ; e8 9c ab
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp al, byte [bp-002h]                    ; 3a 46 fe
-    jc short 06974h                           ; 72 3c
+    jc short 06ab6h                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 c0 ac
+    call 01600h                               ; e8 7e ab
     xor ah, ah                                ; 30 e4
     mov word [bp+00ch], ax                    ; 89 46 0c
     mov dx, strict word 00029h                ; ba 29 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 b3 ac
+    call 01600h                               ; e8 71 ab
     xor ah, ah                                ; 30 e4
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov dx, strict word 0002ah                ; ba 2a 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 a6 ac
+    call 01600h                               ; e8 64 ab
     xor ah, ah                                ; 30 e4
     mov word [bp+008h], ax                    ; 89 46 08
@@ -9342,31 +9661,30 @@
     mov byte [bp-006h], ah                    ; 88 66 fa
     test byte [bp-008h], 080h                 ; f6 46 f8 80
-    je short 06977h                           ; 74 0a
+    je short 06ab9h                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 06977h                          ; eb 03
+    jmp short 06ab9h                          ; eb 03
     inc byte [bp-006h]                        ; fe 46 fa
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 8b ac
+    call 0160eh                               ; e8 49 ab
     leave                                     ; c9
     retn                                      ; c3
-    xlatb                                     ; d7
-    imul cx, word [di+06ah], 06ad0h           ; 69 4d 6a d0 6a
-    popaw                                     ; 61
-    imul cx, di, strict byte 0006bh           ; 6b cf 6b
-    and bp, word [bp+si-009h]                 ; 23 6a f7
-    db  06bh
-    db  0bch
-    insb                                      ; 6c
-_int15_function_mouse:                       ; 0xf6995 LB 0x386
+    sbb word [bp+di-071h], bp                 ; 19 6b 8f
+    imul dx, word [bp+si], strict byte 0006ch ; 6b 12 6c
+    mov word [0116ch], ax                     ; a3 6c 11
+    insw                                      ; 6d
+    imul di, word [gs:bx+di], strict byte 0006dh ; 65 6b 39 6d
+    db  0feh
+    insw                                      ; 6d
+_int15_function_mouse:                       ; 0xf6ad7 LB 0x386
     push si                                   ; 56
     enter 00006h, 000h                        ; c8 06 00 00
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 79 ac
+    call 0161ch                               ; e8 37 ab
     mov cx, ax                                ; 89 c1
     cmp byte [bp+014h], 007h                  ; 80 7e 14 07
-    jbe short 069b6h                          ; 76 0b
+    jbe short 06af8h                          ; 76 0b
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 001h                  ; c6 46 15 01
@@ -9375,23 +9693,23 @@
     retn                                      ; c3
     mov ax, strict word 00065h                ; b8 65 00
-    call 068a0h                               ; e8 e4 fe
+    call 069e2h                               ; e8 e4 fe
     and word [bp+01ah], strict byte 0fffeh    ; 83 66 1a fe
     mov byte [bp+015h], 000h                  ; c6 46 15 00
     mov al, byte [bp+014h]                    ; 8a 46 14
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 06cffh                          ; 0f 87 32 03
+    jnbe near 06e41h                          ; 0f 87 32 03
     movzx si, al                              ; 0f b6 f0
     add si, si                                ; 01 f6
-    jmp word [cs:si+06985h]                   ; 2e ff a4 85 69
+    jmp word [cs:si+06ac7h]                   ; 2e ff a4 c7 6a
     cmp byte [bp+00fh], 001h                  ; 80 7e 0f 01
-    jnbe near 06d0ah                          ; 0f 87 2b 03
+    jnbe near 06e4ch                          ; 0f 87 2b 03
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 19 ac
+    call 01600h                               ; e8 d7 aa
     test AL, strict byte 080h                 ; a8 80
-    jne short 069f6h                          ; 75 0b
+    jne short 06b38h                          ; 75 0b
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 005h                  ; c6 46 15 05
-    jmp near 06d12h                           ; e9 1c 03
+    jmp near 06e54h                           ; e9 1c 03
     cmp byte [bp+00fh], 000h                  ; 80 7e 0f 00
     db  00fh, 094h, 0c0h
@@ -9399,24 +9717,24 @@
     add AL, strict byte 0f4h                  ; 04 f4
     xor ah, ah                                ; 30 e4
-    call 06837h                               ; e8 33 fe
+    call 06979h                               ; e8 33 fe
     test al, al                               ; 84 c0
-    jne near 06c98h                           ; 0f 85 8e 02
+    jne near 06ddah                           ; 0f 85 8e 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 56 fe
+    call 069aah                               ; e8 56 fe
     test al, al                               ; 84 c0
-    je near 06d12h                            ; 0f 84 fa 02
+    je near 06e54h                            ; 0f 84 fa 02
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    jne near 06c98h                           ; 0f 85 78 02
-    jmp near 06d12h                           ; e9 ef 02
+    jne near 06ddah                           ; 0f 85 78 02
+    jmp near 06e54h                           ; e9 ef 02
     mov al, byte [bp+00fh]                    ; 8a 46 0f
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 06a2eh                           ; 72 04
+    jc short 06b70h                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 06a31h                          ; 76 03
-    jmp near 06bc4h                           ; e9 93 01
+    jbe short 06b73h                          ; 76 03
+    jmp near 06d06h                           ; e9 93 01
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 c7 ab
+    call 01600h                               ; e8 85 aa
     mov ah, byte [bp+00fh]                    ; 8a 66 0f
     db  0feh, 0cch
@@ -9427,194 +9745,194 @@
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 c1 ab
+    call 0160eh                               ; e8 7f aa
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 ab ab
+    call 01600h                               ; e8 69 aa
     and AL, strict byte 0f8h                  ; 24 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 ac ab
+    call 0160eh                               ; e8 6a aa
     mov ax, 000ffh                            ; b8 ff 00
-    call 06837h                               ; e8 cf fd
+    call 06979h                               ; e8 cf fd
     test al, al                               ; 84 c0
-    jne near 06c98h                           ; 0f 85 2a 02
+    jne near 06ddah                           ; 0f 85 2a 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-002h]                         ; 8d 46 fe
-    call 06868h                               ; e8 f2 fd
+    call 069aah                               ; e8 f2 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-002h], 0feh                  ; 80 7e fe fe
-    jne short 06a89h                          ; 75 0b
+    jne short 06bcbh                          ; 75 0b
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 004h                  ; c6 46 15 04
-    jmp near 06d12h                           ; e9 89 02
+    jmp near 06e54h                           ; e9 89 02
     cmp byte [bp-002h], 0fah                  ; 80 7e fe fa
-    je short 06a9fh                           ; 74 10
+    je short 06be1h                           ; 74 10
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     push ax                                   ; 50
     push 00899h                               ; 68 99 08
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 4d ae
+    call 018e9h                               ; e8 0b ad
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne near 06c98h                           ; 0f 85 f3 01
+    jne near 06ddah                           ; 0f 85 f3 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 bb fd
+    call 069aah                               ; e8 bb fd
     test al, al                               ; 84 c0
-    jne near 06c98h                           ; 0f 85 e5 01
+    jne near 06ddah                           ; 0f 85 e5 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06868h                               ; e8 ad fd
+    call 069aah                               ; e8 ad fd
     test al, al                               ; 84 c0
-    jne near 06c98h                           ; 0f 85 d7 01
+    jne near 06ddah                           ; 0f 85 d7 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [bp+00fh], al                    ; 88 46 0f
-    jmp near 06d12h                           ; e9 42 02
+    jmp near 06e54h                           ; e9 42 02
     mov al, byte [bp+00fh]                    ; 8a 46 0f
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 06ae7h                           ; 72 10
-    jbe short 06b05h                          ; 76 2c
+    jc short 06c29h                           ; 72 10
+    jbe short 06c47h                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 06b17h                           ; 74 3a
+    je short 06c59h                           ; 74 3a
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 06b11h                           ; 74 30
+    je short 06c53h                           ; 74 30
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 06b0bh                           ; 74 26
-    jmp short 06b1dh                          ; eb 36
+    je short 06c4dh                           ; 74 26
+    jmp short 06c5fh                          ; eb 36
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 06affh                           ; 74 14
+    je short 06c41h                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 06af9h                           ; 74 0a
+    je short 06c3bh                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 06b1dh                          ; 75 2a
+    jne short 06c5fh                          ; 75 2a
     mov byte [bp-006h], 00ah                  ; c6 46 fa 0a
-    jmp short 06b21h                          ; eb 28
+    jmp short 06c63h                          ; eb 28
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 06b21h                          ; eb 22
+    jmp short 06c63h                          ; eb 22
     mov byte [bp-006h], 028h                  ; c6 46 fa 28
-    jmp short 06b21h                          ; eb 1c
+    jmp short 06c63h                          ; eb 1c
     mov byte [bp-006h], 03ch                  ; c6 46 fa 3c
-    jmp short 06b21h                          ; eb 16
+    jmp short 06c63h                          ; eb 16
     mov byte [bp-006h], 050h                  ; c6 46 fa 50
-    jmp short 06b21h                          ; eb 10
+    jmp short 06c63h                          ; eb 10
     mov byte [bp-006h], 064h                  ; c6 46 fa 64
-    jmp short 06b21h                          ; eb 0a
+    jmp short 06c63h                          ; eb 0a
     mov byte [bp-006h], 0c8h                  ; c6 46 fa c8
-    jmp short 06b21h                          ; eb 04
+    jmp short 06c63h                          ; eb 04
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jbe short 06b56h                          ; 76 2f
+    jbe short 06c98h                          ; 76 2f
     mov ax, 000f3h                            ; b8 f3 00
-    call 06837h                               ; e8 0a fd
+    call 06979h                               ; e8 0a fd
     test al, al                               ; 84 c0
-    jne short 06b4bh                          ; 75 1a
+    jne short 06c8dh                          ; 75 1a
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06868h                               ; e8 2f fd
+    call 069aah                               ; e8 2f fd
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 06837h                               ; e8 f7 fc
+    call 06979h                               ; e8 f7 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06868h                               ; e8 20 fd
-    jmp near 06d12h                           ; e9 c7 01
+    call 069aah                               ; e8 20 fd
+    jmp near 06e54h                           ; e9 c7 01
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 003h                  ; c6 46 15 03
-    jmp near 06d12h                           ; e9 bc 01
+    jmp near 06e54h                           ; e9 bc 01
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 002h                  ; c6 46 15 02
-    jmp near 06d12h                           ; e9 b1 01
+    jmp near 06e54h                           ; e9 b1 01
     cmp byte [bp+00fh], 004h                  ; 80 7e 0f 04
-    jnc short 06bc4h                          ; 73 5d
+    jnc short 06d06h                          ; 73 5d
     mov ax, 000e8h                            ; b8 e8 00
-    call 06837h                               ; e8 ca fc
+    call 06979h                               ; e8 ca fc
     test al, al                               ; 84 c0
-    jne short 06bb9h                          ; 75 48
+    jne short 06cfbh                          ; 75 48
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 ef fc
+    call 069aah                               ; e8 ef fc
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 06b8fh                           ; 74 10
+    je short 06cd1h                           ; 74 10
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     push 008c4h                               ; 68 c4 08
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 5d ad
+    call 018e9h                               ; e8 1b ac
     add sp, strict byte 00006h                ; 83 c4 06
     movzx ax, byte [bp+00fh]                  ; 0f b6 46 0f
-    call 06837h                               ; e8 a1 fc
+    call 06979h                               ; e8 a1 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 ca fc
+    call 069aah                               ; e8 ca fc
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je near 06d12h                            ; 0f 84 6c 01
+    je near 06e54h                            ; 0f 84 6c 01
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     push 008c4h                               ; 68 c4 08
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 36 ad
+    call 018e9h                               ; e8 f4 ab
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 06d12h                           ; e9 59 01
+    jmp near 06e54h                           ; e9 59 01
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 003h                  ; c6 46 15 03
-    jmp near 06d12h                           ; e9 4e 01
+    jmp near 06e54h                           ; e9 4e 01
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 002h                  ; c6 46 15 02
-    jmp near 06d12h                           ; e9 43 01
+    jmp near 06e54h                           ; e9 43 01
     mov ax, 000f2h                            ; b8 f2 00
-    call 06837h                               ; e8 62 fc
+    call 06979h                               ; e8 62 fc
     test al, al                               ; 84 c0
-    jne short 06bech                          ; 75 13
+    jne short 06d2eh                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 87 fc
+    call 069aah                               ; e8 87 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06868h                               ; e8 7f fc
-    jmp near 06ac7h                           ; e9 db fe
+    call 069aah                               ; e8 7f fc
+    jmp near 06c09h                           ; e9 db fe
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 003h                  ; c6 46 15 03
-    jmp near 06d12h                           ; e9 1b 01
+    jmp near 06e54h                           ; e9 1b 01
     mov al, byte [bp+00fh]                    ; 8a 46 0f
     test al, al                               ; 84 c0
-    jbe short 06c05h                          ; 76 07
+    jbe short 06d47h                          ; 76 07
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 06c6eh                          ; 76 6c
-    jmp near 06ca2h                           ; e9 9d 00
+    jbe short 06db0h                          ; 76 6c
+    jmp near 06de4h                           ; e9 9d 00
     mov ax, 000e9h                            ; b8 e9 00
-    call 06837h                               ; e8 2c fc
+    call 06979h                               ; e8 2c fc
     test al, al                               ; 84 c0
-    jne near 06c98h                           ; 0f 85 87 00
+    jne near 06ddah                           ; 0f 85 87 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 4f fc
+    call 069aah                               ; e8 4f fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 06c31h                           ; 74 10
+    je short 06d73h                           ; 74 10
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     push 008c4h                               ; 68 c4 08
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 bb ac
+    call 018e9h                               ; e8 79 ab
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 06c98h                          ; 75 63
+    jne short 06ddah                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 2b fc
+    call 069aah                               ; e8 2b fc
     test al, al                               ; 84 c0
-    jne short 06c98h                          ; 75 57
+    jne short 06ddah                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06868h                               ; e8 1f fc
+    call 069aah                               ; e8 1f fc
     test al, al                               ; 84 c0
-    jne short 06c98h                          ; 75 4b
+    jne short 06ddah                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-002h]                         ; 8d 46 fe
-    call 06868h                               ; e8 13 fc
+    call 069aah                               ; e8 13 fc
     test al, al                               ; 84 c0
-    jne short 06c98h                          ; 75 3f
+    jne short 06ddah                          ; 75 3f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+00eh], al                    ; 88 46 0e
@@ -9623,73 +9941,73 @@
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov byte [bp+010h], al                    ; 88 46 10
-    jmp near 06d12h                           ; e9 a4 00
+    jmp near 06e54h                           ; e9 a4 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 06c77h                          ; 75 05
+    jne short 06db9h                          ; 75 05
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 06c7ah                          ; eb 03
+    jmp short 06dbch                          ; eb 03
     mov ax, 000e7h                            ; b8 e7 00
-    call 06837h                               ; e8 ba fb
+    call 06979h                               ; e8 ba fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 06c92h                          ; 75 0f
+    jne short 06dd4h                          ; 75 0f
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06868h                               ; e8 dd fb
+    call 069aah                               ; e8 dd fb
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
     db  00fh, 095h, 0c1h
     ; setne cl                                  ; 0f 95 c1
     test cl, cl                               ; 84 c9
-    je near 06d12h                            ; 0f 84 7a 00
+    je near 06e54h                            ; 0f 84 7a 00
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 003h                  ; c6 46 15 03
-    jmp short 06d12h                          ; eb 70
+    jmp short 06e54h                          ; eb 70
     movzx ax, byte [bp+00fh]                  ; 0f b6 46 0f
     push ax                                   ; 50
     push 008f0h                               ; 68 f0 08
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 3a ac
+    call 018e9h                               ; e8 f8 aa
     add sp, strict byte 00006h                ; 83 c4 06
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 001h                  ; c6 46 15 01
-    jmp short 06d12h                          ; eb 56
+    jmp short 06e54h                          ; eb 56
     mov si, word [bp+00eh]                    ; 8b 76 0e
     mov bx, si                                ; 89 f3
     mov dx, strict word 00022h                ; ba 22 00
     mov ax, cx                                ; 89 c8
-    call 0162ah                               ; e8 61 a9
+    call 0162ah                               ; e8 1f a8
     mov bx, word [bp+016h]                    ; 8b 5e 16
     mov dx, strict word 00024h                ; ba 24 00
     mov ax, cx                                ; 89 c8
-    call 0162ah                               ; e8 56 a9
+    call 0162ah                               ; e8 14 a8
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 24 a9
+    call 01600h                               ; e8 e2 a7
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 06cf0h                          ; 75 0e
+    jne short 06e32h                          ; 75 0e
     cmp word [bp+016h], strict byte 00000h    ; 83 7e 16 00
-    jne short 06cf0h                          ; 75 08
+    jne short 06e32h                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 06cf2h                           ; 74 06
+    je short 06e34h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 06cf2h                          ; eb 02
+    jmp short 06e34h                          ; eb 02
     or AL, strict byte 080h                   ; 0c 80
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 11 a9
-    jmp short 06d12h                          ; eb 13
+    call 0160eh                               ; e8 cf a7
+    jmp short 06e54h                          ; eb 13
     push 0090ah                               ; 68 0a 09
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 e2 ab
+    call 018e9h                               ; e8 a0 aa
     add sp, strict byte 00004h                ; 83 c4 04
     or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
     mov byte [bp+015h], 001h                  ; c6 46 15 01
     mov ax, strict word 00047h                ; b8 47 00
-    call 068a0h                               ; e8 88 fb
+    call 069e2h                               ; e8 88 fb
     leave                                     ; c9
     pop si                                    ; 5e
     retn                                      ; c3
-_int17_function:                             ; 0xf6d1b LB 0xb1
+_int17_function:                             ; 0xf6e5d LB 0xb1
     push si                                   ; 56
     enter 00002h, 000h                        ; c8 02 00 00
@@ -9699,22 +10017,22 @@
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 ed a8
+    call 0161ch                               ; e8 ab a7
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+015h], 003h                  ; 80 7e 15 03
-    jnc near 06dc5h                           ; 0f 83 8a 00
+    jnc near 06f07h                           ; 0f 83 8a 00
     mov ax, word [bp+010h]                    ; 8b 46 10
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc near 06dc5h                           ; 0f 83 80 00
+    jnc near 06f07h                           ; 0f 83 80 00
     test bx, bx                               ; 85 db
-    jbe near 06dc5h                           ; 0f 86 7a 00
+    jbe near 06f07h                           ; 0f 86 7a 00
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00078h                ; 83 c2 78
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 aa a8
+    call 01600h                               ; e8 68 a7
     movzx cx, al                              ; 0f b6 c8
     sal cx, 008h                              ; c1 e1 08
     cmp byte [bp+015h], 000h                  ; 80 7e 15 00
-    jne short 06d8fh                          ; 75 2d
+    jne short 06ed1h                          ; 75 2d
     mov al, byte [bp+014h]                    ; 8a 46 14
     mov dx, bx                                ; 89 da
@@ -9736,11 +10054,11 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 06d8fh                           ; 74 07
+    je short 06ed1h                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 06d8fh                           ; 74 03
+    je short 06ed1h                           ; 74 03
     dec cx                                    ; 49
-    jmp short 06d7eh                          ; eb ef
+    jmp short 06ec0h                          ; eb ef
     cmp byte [bp+015h], 001h                  ; 80 7e 15 01
-    jne short 06dabh                          ; 75 16
+    jne short 06eedh                          ; 75 16
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
@@ -9761,5 +10079,5 @@
     mov byte [bp+015h], al                    ; 88 46 15
     test cx, cx                               ; 85 c9
-    jne short 06dbeh                          ; 75 04
+    jne short 06f00h                          ; 75 04
     or byte [bp+015h], 001h                   ; 80 4e 15 01
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
@@ -9771,5 +10089,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-wait_:                                       ; 0xf6dcc LB 0xad
+wait_:                                       ; 0xf6f0e LB 0xad
     push bx                                   ; 53
     push cx                                   ; 51
@@ -9787,5 +10105,5 @@
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01638h                               ; e8 4b a8
+    call 01638h                               ; e8 09 a7
     mov word [bp-006h], ax                    ; 89 46 fa
     mov bx, dx                                ; 89 d3
@@ -9793,20 +10111,20 @@
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01638h                               ; e8 3d a8
+    call 01638h                               ; e8 fb a6
     mov word [bp-00ah], ax                    ; 89 46 f6
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 06e0bh                         ; 77 07
-    jne short 06e12h                          ; 75 0c
+    jnbe short 06f4dh                         ; 77 07
+    jne short 06f54h                          ; 75 0c
     cmp ax, word [bp-006h]                    ; 3b 46 fa
-    jbe short 06e12h                          ; 76 07
+    jbe short 06f54h                          ; 76 07
     sub ax, word [bp-006h]                    ; 2b 46 fa
     sbb dx, bx                                ; 19 da
-    jmp short 06e1dh                          ; eb 0b
+    jmp short 06f5fh                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 06e1dh                           ; 72 07
-    jne short 06e21h                          ; 75 09
+    jc short 06f5fh                           ; 72 07
+    jne short 06f63h                          ; 75 09
     cmp ax, word [bp-006h]                    ; 3b 46 fa
-    jnc short 06e21h                          ; 73 04
+    jnc short 06f63h                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
@@ -9816,11 +10134,11 @@
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je near 06e37h                            ; 0f 84 05 00
+    je near 06f79h                            ; 0f 84 05 00
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 06e39h                           ; e9 02 00
+    jmp near 06f7bh                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 06e61h                           ; 74 24
+    je short 06fa3h                           ; 74 24
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
@@ -9833,15 +10151,15 @@
     push 0092ch                               ; 68 2c 09
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 95 aa
+    call 018e9h                               ; e8 53 a9
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 06e61h                           ; 74 04
+    je short 06fa3h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 06e73h                          ; eb 12
+    jmp short 06fb5h                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 06df2h                         ; 7f 8d
-    jne short 06e6bh                          ; 75 04
+    jnle short 06f34h                         ; 7f 8d
+    jne short 06fadh                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 06df2h                         ; 77 87
+    jnbe short 06f34h                         ; 77 87
     mov ax, word [bp-008h]                    ; 8b 46 f8
     push ax                                   ; 50
@@ -9854,5 +10172,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf6e79 LB 0x13
+read_logo_byte_:                             ; 0xf6fbb LB 0x13
     push dx                                   ; 52
     push bp                                   ; 55
@@ -9868,5 +10186,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-read_logo_word_:                             ; 0xf6e8c LB 0x11
+read_logo_word_:                             ; 0xf6fce LB 0x11
     push dx                                   ; 52
     push bp                                   ; 55
@@ -9880,5 +10198,5 @@
     pop dx                                    ; 5a
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf6e9d LB 0x12c
+print_detected_harddisks_:                   ; 0xf6fdf LB 0x12c
     push bx                                   ; 53
     push cx                                   ; 51
@@ -9889,5 +10207,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 6d a7
+    call 0161ch                               ; e8 2b a6
     mov si, ax                                ; 89 c6
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
@@ -9895,21 +10213,21 @@
     xor ch, ch                                ; 30 ed
     mov dx, 002c0h                            ; ba c0 02
-    call 01600h                               ; e8 41 a7
+    call 01600h                               ; e8 ff a5
     mov byte [bp-004h], al                    ; 88 46 fc
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp-004h]                    ; 3a 5e fc
-    jnc near 06f9eh                           ; 0f 83 d3 00
+    jnc near 070e0h                           ; 0f 83 d3 00
     movzx dx, bl                              ; 0f b6 d3
     add dx, 002c1h                            ; 81 c2 c1 02
     mov ax, si                                ; 89 f0
-    call 01600h                               ; e8 29 a7
+    call 01600h                               ; e8 e7 a5
     mov bh, al                                ; 88 c7
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 06f01h                           ; 72 24
+    jc short 07043h                           ; 72 24
     test cl, cl                               ; 84 c9
-    jne short 06eeeh                          ; 75 0d
+    jne short 07030h                          ; 75 0d
     push 0093dh                               ; 68 3d 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 00 aa
+    call 018e9h                               ; e8 be a8
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
@@ -9919,34 +10237,34 @@
     push 00951h                               ; 68 51 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 ee a9
+    call 018e9h                               ; e8 ac a8
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 06f99h                           ; e9 98 00
+    jmp near 070dbh                           ; e9 98 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 06f18h                           ; 72 13
+    jc short 0705ah                           ; 72 13
     test ch, ch                               ; 84 ed
-    jne short 06f16h                          ; 75 0d
+    jne short 07058h                          ; 75 0d
     push 00964h                               ; 68 64 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 d8 a9
+    call 018e9h                               ; e8 96 a8
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
-    jmp short 06eeeh                          ; eb d6
+    jmp short 07030h                          ; eb d6
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 06f33h                          ; 73 17
+    jnc short 07075h                          ; 73 17
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 06f33h                          ; 75 11
+    jne short 07075h                          ; 75 11
     push 00978h                               ; 68 78 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 bf a9
+    call 018e9h                               ; e8 7d a8
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-002h], 001h                  ; c6 46 fe 01
-    jmp short 06f49h                          ; eb 16
+    jmp short 0708bh                          ; eb 16
     cmp bh, 004h                              ; 80 ff 04
-    jc short 06f49h                           ; 72 11
+    jc short 0708bh                           ; 72 11
     test cl, cl                               ; 84 c9
-    jne short 06f49h                          ; 75 0d
+    jne short 0708bh                          ; 75 0d
     push 0093dh                               ; 68 3d 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 a5 a9
+    call 018e9h                               ; e8 63 a8
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
@@ -9956,8 +10274,8 @@
     push 00989h                               ; 68 89 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 93 a9
+    call 018e9h                               ; e8 51 a8
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bh, 004h                              ; 80 ff 04
-    jc short 06f61h                           ; 72 03
+    jc short 070a3h                           ; 72 03
     sub bh, 004h                              ; 80 ef 04
     movzx ax, bh                              ; 0f b6 c7
@@ -9967,10 +10285,10 @@
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 06f72h                           ; 74 05
+    je short 070b4h                           ; 74 05
     push 00993h                               ; 68 93 09
-    jmp short 06f75h                          ; eb 03
+    jmp short 070b7h                          ; eb 03
     push 0099eh                               ; 68 9e 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 6f a9
+    call 018e9h                               ; e8 2d a8
     add sp, strict byte 00004h                ; 83 c4 04
     movzx ax, bh                              ; 0f b6 c7
@@ -9979,27 +10297,27 @@
     idiv di                                   ; f7 ff
     test dx, dx                               ; 85 d2
-    je short 06f8fh                           ; 74 05
+    je short 070d1h                           ; 74 05
     push 009a7h                               ; 68 a7 09
-    jmp short 06f92h                          ; eb 03
+    jmp short 070d4h                          ; eb 03
     push 009adh                               ; 68 ad 09
     push di                                   ; 57
-    call 018e9h                               ; e8 53 a9
+    call 018e9h                               ; e8 11 a8
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp near 06ec4h                           ; e9 26 ff
+    jmp near 07006h                           ; e9 26 ff
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 06fb7h                          ; 75 13
+    jne short 070f9h                          ; 75 13
     test cl, cl                               ; 84 c9
-    jne short 06fb7h                          ; 75 0f
+    jne short 070f9h                          ; 75 0f
     test ch, ch                               ; 84 ed
-    jne short 06fb7h                          ; 75 0b
+    jne short 070f9h                          ; 75 0b
     push 009b4h                               ; 68 b4 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 35 a9
+    call 018e9h                               ; e8 f3 a7
     add sp, strict byte 00004h                ; 83 c4 04
     push 009c8h                               ; 68 c8 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 2a a9
+    call 018e9h                               ; e8 e8 a7
     add sp, strict byte 00004h                ; 83 c4 04
     leave                                     ; c9
@@ -10010,5 +10328,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf6fc9 LB 0x25
+get_boot_drive_:                             ; 0xf710b LB 0x25
     push bx                                   ; 53
     push dx                                   ; 52
@@ -10018,10 +10336,10 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 43 a6
+    call 0161ch                               ; e8 01 a5
     mov dx, 002c0h                            ; ba c0 02
-    call 01600h                               ; e8 21 a6
+    call 01600h                               ; e8 df a4
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 06fe8h                           ; 72 02
+    jc short 0712ah                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
@@ -10030,5 +10348,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-show_logo_:                                  ; 0xf6fee LB 0x21f
+show_logo_:                                  ; 0xf7130 LB 0x21f
     push bx                                   ; 53
     push cx                                   ; 51
@@ -10039,5 +10357,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 1c a6
+    call 0161ch                               ; e8 da a4
     mov si, ax                                ; 89 c6
     xor cl, cl                                ; 30 c9
@@ -10050,7 +10368,7 @@
     out strict byte 040h, AL                  ; e6 40
     movzx ax, dl                              ; 0f b6 c2
-    call 06e8ch                               ; e8 74 fe
+    call 06fceh                               ; e8 74 fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne near 070f0h                           ; 0f 85 d1 00
+    jne near 07232h                           ; 0f 85 d1 00
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -10060,9 +10378,9 @@
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jne near 070f0h                           ; 0f 85 bd 00
+    jne near 07232h                           ; 0f 85 bd 00
     mov al, dl                                ; 88 d0
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 06e79h                               ; e8 3d fe
+    call 06fbbh                               ; e8 3d fe
     mov ch, al                                ; 88 c5
     mov byte [bp-002h], al                    ; 88 46 fe
@@ -10070,5 +10388,5 @@
     add AL, strict byte 005h                  ; 04 05
     xor ah, ah                                ; 30 e4
-    call 06e79h                               ; e8 2f fe
+    call 06fbbh                               ; e8 2f fe
     mov dh, al                                ; 88 c6
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -10076,5 +10394,5 @@
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 06e8ch                               ; e8 34 fe
+    call 06fceh                               ; e8 34 fe
     mov bx, ax                                ; 89 c3
     mov word [bp-00ah], ax                    ; 89 46 f6
@@ -10082,22 +10400,22 @@
     add AL, strict byte 006h                  ; 04 06
     xor ah, ah                                ; 30 e4
-    call 06e79h                               ; e8 13 fe
+    call 06fbbh                               ; e8 13 fe
     mov byte [bp-008h], al                    ; 88 46 f8
     test ch, ch                               ; 84 ed
-    jne short 07077h                          ; 75 0a
+    jne short 071b9h                          ; 75 0a
     test dh, dh                               ; 84 f6
-    jne short 07077h                          ; 75 06
+    jne short 071b9h                          ; 75 06
     test bx, bx                               ; 85 db
-    je near 070f0h                            ; 0f 84 79 00
+    je near 07232h                            ; 0f 84 79 00
     mov bx, 00142h                            ; bb 42 01
     mov ax, 04f02h                            ; b8 02 4f
     int 010h                                  ; cd 10
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    je short 070a8h                           ; 74 23
+    je short 071eah                           ; 74 23
     xor bx, bx                                ; 31 db
-    jmp short 0708fh                          ; eb 06
+    jmp short 071d1h                          ; eb 06
     inc bx                                    ; 43
     cmp bx, strict byte 00010h                ; 83 fb 10
-    jnbe short 070afh                         ; 77 20
+    jnbe short 071f1h                         ; 77 20
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
@@ -10106,30 +10424,30 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 06dcch                               ; e8 2c fd
+    call 06f0eh                               ; e8 2c fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07089h                          ; 75 e5
+    jne short 071cbh                          ; 75 e5
     mov CL, strict byte 001h                  ; b1 01
-    jmp short 070afh                          ; eb 07
+    jmp short 071f1h                          ; eb 07
     mov ax, 00210h                            ; b8 10 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     test cl, cl                               ; 84 c9
-    jne short 070c5h                          ; 75 12
+    jne short 07207h                          ; 75 12
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     shr ax, 004h                              ; c1 e8 04
     mov dx, strict word 00001h                ; ba 01 00
-    call 06dcch                               ; e8 0d fd
+    call 06f0eh                               ; e8 0d fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 070c5h                          ; 75 02
+    jne short 07207h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 070f0h                           ; 74 25
+    je short 07232h                           ; 74 25
     test cl, cl                               ; 84 c9
-    jne short 070f0h                          ; 75 21
+    jne short 07232h                          ; 75 21
     mov bx, strict word 00010h                ; bb 10 00
-    jmp short 070d9h                          ; eb 05
+    jmp short 0721bh                          ; eb 05
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 070f0h                          ; 76 17
+    jbe short 07232h                          ; 76 17
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
@@ -10138,39 +10456,39 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 06dcch                               ; e8 e2 fc
+    call 06f0eh                               ; e8 e2 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 070d4h                          ; 75 e6
+    jne short 07216h                          ; 75 e6
     mov CL, strict byte 001h                  ; b1 01
     xor bx, bx                                ; 31 db
     mov dx, 00339h                            ; ba 39 03
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 14 a5
+    call 0160eh                               ; e8 d2 a3
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je near 071f1h                            ; 0f 84 e9 00
+    je near 07333h                            ; 0f 84 e9 00
     cmp byte [bp-002h], 000h                  ; 80 7e fe 00
-    jne short 0713eh                          ; 75 30
+    jne short 07280h                          ; 75 30
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 0713eh                          ; 75 2a
+    jne short 07280h                          ; 75 2a
     cmp word [bp-00ah], strict byte 00000h    ; 83 7e f6 00
-    jne short 0713eh                          ; 75 24
+    jne short 07280h                          ; 75 24
     cmp byte [bp-008h], 002h                  ; 80 7e f8 02
-    jne short 0712bh                          ; 75 0b
+    jne short 0726dh                          ; 75 0b
     push 009cah                               ; 68 ca 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 c1 a7
+    call 018e9h                               ; e8 7f a6
     add sp, strict byte 00004h                ; 83 c4 04
     test cl, cl                               ; 84 c9
-    jne short 0713eh                          ; 75 0f
+    jne short 07280h                          ; 75 0f
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 06dcch                               ; e8 94 fc
+    call 06f0eh                               ; e8 94 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 0713eh                          ; 75 02
+    jne short 07280h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je near 071f1h                            ; 0f 84 ad 00
+    je near 07333h                            ; 0f 84 ad 00
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     mov ax, 00100h                            ; b8 00 01
@@ -10191,52 +10509,52 @@
     push 009ech                               ; 68 ec 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 7c a7
+    call 018e9h                               ; e8 3a a6
     add sp, strict byte 00004h                ; 83 c4 04
-    call 06e9dh                               ; e8 2a fd
+    call 06fdfh                               ; e8 2a fd
     push 00a30h                               ; 68 30 0a
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 6e a7
+    call 018e9h                               ; e8 2c a6
     add sp, strict byte 00004h                ; 83 c4 04
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 06dcch                               ; e8 45 fc
+    call 06f0eh                               ; e8 45 fc
     mov bl, al                                ; 88 c3
     test al, al                               ; 84 c0
-    je short 0717eh                           ; 74 f1
+    je short 072c0h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 071dfh                           ; 74 4e
+    je short 07321h                           ; 74 4e
     cmp bl, 002h                              ; 80 fb 02
-    jc short 071b8h                           ; 72 22
+    jc short 072fah                           ; 72 22
     cmp bl, 009h                              ; 80 fb 09
-    jnbe short 071b8h                         ; 77 1d
+    jnbe short 072fah                         ; 77 1d
     movzx ax, bl                              ; 0f b6 c3
-    call 06fc9h                               ; e8 28 fe
+    call 0710bh                               ; e8 28 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 071a7h                          ; 75 02
-    jmp short 0717eh                          ; eb d7
+    jne short 072e9h                          ; 75 02
+    jmp short 072c0h                          ; eb d7
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00338h                            ; ba 38 03
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 5c a4
+    call 0160eh                               ; e8 1a a3
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
-    jmp short 071dfh                          ; eb 27
+    jmp short 07321h                          ; eb 27
     cmp bl, 02eh                              ; 80 fb 2e
-    je short 071cdh                           ; 74 10
+    je short 0730fh                           ; 74 10
     cmp bl, 026h                              ; 80 fb 26
-    je short 071d3h                           ; 74 11
+    je short 07315h                           ; 74 11
     cmp bl, 021h                              ; 80 fb 21
-    jne short 071d9h                          ; 75 12
+    jne short 0731bh                          ; 75 12
     mov byte [bp-004h], 001h                  ; c6 46 fc 01
-    jmp short 071dfh                          ; eb 12
+    jmp short 07321h                          ; eb 12
     mov byte [bp-004h], 003h                  ; c6 46 fc 03
-    jmp short 071dfh                          ; eb 0c
+    jmp short 07321h                          ; eb 0c
     mov byte [bp-004h], 004h                  ; c6 46 fc 04
-    jmp short 071dfh                          ; eb 06
+    jmp short 07321h                          ; eb 06
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    je short 0717eh                           ; 74 9f
+    je short 072c0h                           ; 74 9f
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     mov dx, 00339h                            ; ba 39 03
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 23 a4
+    call 0160eh                               ; e8 e1 a2
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
@@ -10251,5 +10569,5 @@
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 bc 7b
+    call 0edbfh                               ; e8 7a 7a
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -10261,5 +10579,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-delay_boot_:                                 ; 0xf720d LB 0x64
+delay_boot_:                                 ; 0xf734f LB 0x64
     push bx                                   ; 53
     push dx                                   ; 52
@@ -10268,5 +10586,5 @@
     mov dx, ax                                ; 89 c2
     test ax, ax                               ; 85 c0
-    je short 0726dh                           ; 74 55
+    je short 073afh                           ; 74 55
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -10278,22 +10596,22 @@
     push 00a7ah                               ; 68 7a 0a
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 bc a6
+    call 018e9h                               ; e8 7a a5
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, dx                                ; 89 d3
     test bx, bx                               ; 85 db
-    jbe short 0724dh                          ; 76 17
+    jbe short 0738fh                          ; 76 17
     push bx                                   ; 53
     push 00a98h                               ; 68 98 0a
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 aa a6
+    call 018e9h                               ; e8 68 a5
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 06dcch                               ; e8 82 fb
+    call 06f0eh                               ; e8 82 fb
     dec bx                                    ; 4b
-    jmp short 07232h                          ; eb e5
+    jmp short 07374h                          ; eb e5
     push 009c8h                               ; 68 c8 09
     push strict byte 00002h                   ; 6a 02
-    call 018e9h                               ; e8 94 a6
+    call 018e9h                               ; e8 52 a5
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
@@ -10306,5 +10624,5 @@
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 55 7b
+    call 0edbfh                               ; e8 13 7a
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -10313,11 +10631,12 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7271 LB 0x63
+scsi_cmd_data_in_:                           ; 0xf73b3 LB 0x88
     push si                                   ; 56
     push di                                   ; 57
-    enter 00004h, 000h                        ; c8 04 00 00
+    enter 00006h, 000h                        ; c8 06 00 00
     mov si, ax                                ; 89 c6
     mov byte [bp-002h], dl                    ; 88 56 fe
-    mov word [bp-004h], bx                    ; 89 5e fc
+    mov word [bp-006h], bx                    ; 89 5e fa
+    mov word [bp-004h], cx                    ; 89 4e fc
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
@@ -10325,22 +10644,36 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0727fh                          ; 75 f7
+    jne short 073c4h                          ; 75 f7
+    mov ax, word [bp+00eh]                    ; 8b 46 0e
+    mov dx, word [bp+010h]                    ; 8b 56 10
+    mov cx, strict word 0000ch                ; b9 0c 00
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    loop 073d6h                               ; e2 fa
+    and ax, 000f0h                            ; 25 f0 00
+    movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
+    or bx, ax                                 ; 09 c3
     mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
-    mov al, byte [bp+008h]                    ; 8a 46 08
+    mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
     mov al, byte [bp+00eh]                    ; 8a 46 0e
     out DX, AL                                ; ee
     mov ax, word [bp+00eh]                    ; 8b 46 0e
-    shr ax, 008h                              ; c1 e8 08
+    mov dx, word [bp+010h]                    ; 8b 56 10
+    mov cx, strict word 00008h                ; b9 08 00
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    loop 073feh                               ; e2 fa
+    mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     xor bx, bx                                ; 31 db
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp bx, ax                                ; 39 c3
-    jnc short 072b8h                          ; 73 10
-    mov es, cx                                ; 8e c1
-    mov di, word [bp-004h]                    ; 8b 7e fc
+    jnc short 0741fh                          ; 73 0e
+    les di, [bp-006h]                         ; c4 7e fa
     add di, bx                                ; 01 df
     mov al, byte [es:di]                      ; 26 8a 05
@@ -10348,5 +10681,5 @@
     out DX, AL                                ; ee
     inc bx                                    ; 43
-    jmp short 072a0h                          ; eb e8
+    jmp short 07409h                          ; eb ea
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
@@ -10354,5 +10687,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 072b8h                          ; 75 f7
+    jne short 0741fh                          ; 75 f7
     lea dx, [si+001h]                         ; 8d 54 01
     mov cx, word [bp+00eh]                    ; 8b 4e 0e
@@ -10363,12 +10696,13 @@
     pop di                                    ; 5f
     pop si                                    ; 5e
-    retn 00008h                               ; c2 08 00
-scsi_cmd_data_out_:                          ; 0xf72d4 LB 0x64
+    retn 0000ah                               ; c2 0a 00
+scsi_cmd_data_out_:                          ; 0xf743b LB 0x89
     push si                                   ; 56
     push di                                   ; 57
-    enter 00004h, 000h                        ; c8 04 00 00
+    enter 00006h, 000h                        ; c8 06 00 00
     mov di, ax                                ; 89 c7
     mov byte [bp-002h], dl                    ; 88 56 fe
-    mov word [bp-004h], bx                    ; 89 5e fc
+    mov word [bp-006h], bx                    ; 89 5e fa
+    mov word [bp-004h], cx                    ; 89 4e fc
     mov dx, di                                ; 89 fa
     in AL, DX                                 ; ec
@@ -10376,22 +10710,36 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 072e2h                          ; 75 f7
+    jne short 0744ch                          ; 75 f7
+    mov ax, word [bp+00eh]                    ; 8b 46 0e
+    mov dx, word [bp+010h]                    ; 8b 56 10
+    mov cx, strict word 0000ch                ; b9 0c 00
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    loop 0745eh                               ; e2 fa
+    and ax, 000f0h                            ; 25 f0 00
+    movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
+    or bx, ax                                 ; 09 c3
     mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     mov AL, strict byte 001h                  ; b0 01
     out DX, AL                                ; ee
-    mov al, byte [bp+008h]                    ; 8a 46 08
+    mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
     mov al, byte [bp+00eh]                    ; 8a 46 0e
     out DX, AL                                ; ee
     mov ax, word [bp+00eh]                    ; 8b 46 0e
-    shr ax, 008h                              ; c1 e8 08
+    mov dx, word [bp+010h]                    ; 8b 56 10
+    mov cx, strict word 00008h                ; b9 08 00
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    loop 07486h                               ; e2 fa
+    mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     xor bx, bx                                ; 31 db
     movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     cmp bx, ax                                ; 39 c3
-    jnc short 0731bh                          ; 73 10
-    mov es, cx                                ; 8e c1
-    mov si, word [bp-004h]                    ; 8b 76 fc
+    jnc short 074a7h                          ; 73 0e
+    les si, [bp-006h]                         ; c4 76 fa
     add si, bx                                ; 01 de
     mov al, byte [es:si]                      ; 26 8a 04
@@ -10399,5 +10747,5 @@
     out DX, AL                                ; ee
     inc bx                                    ; 43
-    jmp short 07303h                          ; eb e8
+    jmp short 07491h                          ; eb ea
     lea dx, [di+001h]                         ; 8d 55 01
     mov cx, word [bp+00eh]                    ; 8b 4e 0e
@@ -10410,14 +10758,14 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07327h                          ; 75 f7
+    jne short 074b3h                          ; 75 f7
     xor ax, ax                                ; 31 c0
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
-    retn 00008h                               ; c2 08 00
-@scsi_read_sectors:                          ; 0xf7338 LB 0xa2
+    retn 0000ah                               ; c2 0a 00
+@scsi_read_sectors:                          ; 0xf74c4 LB 0xb1
     push si                                   ; 56
     push di                                   ; 57
-    enter 0000ch, 000h                        ; c8 0c 00 00
+    enter 0000eh, 000h                        ; c8 0e 00 00
     mov si, word [bp+008h]                    ; 8b 76 08
     mov es, [bp+00ah]                         ; 8e 46 0a
@@ -10425,14 +10773,14 @@
     sub bl, 008h                              ; 80 eb 08
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 0735fh                          ; 76 0f
+    jbe short 074ebh                          ; 76 0f
     movzx ax, bl                              ; 0f b6 c3
     push ax                                   ; 50
     push 00a9ch                               ; 68 9c 0a
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 8d a5
+    call 018e9h                               ; e8 01 a4
     add sp, strict byte 00006h                ; 83 c4 06
     mov es, [bp+00ah]                         ; 8e 46 0a
     mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
-    mov word [bp-00ch], strict word 00028h    ; c7 46 f4 28 00
+    mov word [bp-00eh], strict word 00028h    ; c7 46 f2 28 00
     mov ax, word [es:si]                      ; 26 8b 04
     mov dx, word [es:si+002h]                 ; 26 8b 54 02
@@ -10440,11 +10788,11 @@
     xchg dh, dl                               ; 86 d6
     xchg dx, ax                               ; 92
-    mov word [bp-00ah], ax                    ; 89 46 f6
-    mov word [bp-008h], dx                    ; 89 56 f8
-    mov byte [bp-006h], 000h                  ; c6 46 fa 00
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov word [bp-00ah], dx                    ; 89 56 f6
+    mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov ax, di                                ; 89 f8
     xchg ah, al                               ; 86 c4
-    mov word [bp-005h], ax                    ; 89 46 fb
-    mov byte [bp-003h], 000h                  ; c6 46 fd 00
+    mov word [bp-007h], ax                    ; 89 46 f9
+    mov byte [bp-005h], 000h                  ; c6 46 fb 00
     xor bh, bh                                ; 30 ff
     sal bx, 002h                              ; c1 e3 02
@@ -10452,8 +10800,11 @@
     mov ax, word [es:bx+001d8h]               ; 26 8b 87 d8 01
     mov dl, byte [es:bx+001dah]               ; 26 8a 97 da 01
-    mov bx, di                                ; 89 fb
-    sal bx, 009h                              ; c1 e3 09
-    mov word [bp-002h], bx                    ; 89 5e fe
-    push bx                                   ; 53
+    mov word [bp-004h], di                    ; 89 7e fc
+    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
+    mov cx, strict word 00009h                ; b9 09 00
+    sal word [bp-004h], 1                     ; d1 66 fc
+    rcl word [bp-002h], 1                     ; d1 56 fe
+    loop 07534h                               ; e2 f8
+    push dword [bp-004h]                      ; 66 ff 76 fc
     db  066h, 026h, 0ffh, 074h, 004h
     ; push dword [es:si+004h]                   ; 66 26 ff 74 04
@@ -10461,14 +10812,15 @@
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-00ch]                         ; 8d 5e f4
-    call 07271h                               ; e8 ba fe
+    lea bx, [bp-00eh]                         ; 8d 5e f2
+    call 073b3h                               ; e8 62 fe
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 073d1h                          ; 75 14
+    jne short 0756ch                          ; 75 15
     mov es, [bp+00ah]                         ; 8e 46 0a
     mov word [es:si+014h], di                 ; 26 89 7c 14
+    mov dx, word [bp-004h]                    ; 8b 56 fc
+    mov word [es:si+016h], dx                 ; 26 89 54 16
     mov dx, word [bp-002h]                    ; 8b 56 fe
-    mov word [es:si+016h], dx                 ; 26 89 54 16
-    mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00
+    mov word [es:si+018h], dx                 ; 26 89 54 18
     movzx ax, ah                              ; 0f b6 c4
     leave                                     ; c9
@@ -10476,8 +10828,8 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-@scsi_write_sectors:                         ; 0xf73da LB 0xa2
+@scsi_write_sectors:                         ; 0xf7575 LB 0xb1
     push si                                   ; 56
     push di                                   ; 57
-    enter 0000ch, 000h                        ; c8 0c 00 00
+    enter 0000eh, 000h                        ; c8 0e 00 00
     mov si, word [bp+008h]                    ; 8b 76 08
     mov es, [bp+00ah]                         ; 8e 46 0a
@@ -10485,14 +10837,14 @@
     sub bl, 008h                              ; 80 eb 08
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 07401h                          ; 76 0f
+    jbe short 0759ch                          ; 76 0f
     movzx ax, bl                              ; 0f b6 c3
     push ax                                   ; 50
     push 00acah                               ; 68 ca 0a
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 eb a4
+    call 018e9h                               ; e8 50 a3
     add sp, strict byte 00006h                ; 83 c4 06
     mov es, [bp+00ah]                         ; 8e 46 0a
     mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
-    mov word [bp-00ch], strict word 0002ah    ; c7 46 f4 2a 00
+    mov word [bp-00eh], strict word 0002ah    ; c7 46 f2 2a 00
     mov ax, word [es:si]                      ; 26 8b 04
     mov dx, word [es:si+002h]                 ; 26 8b 54 02
@@ -10500,11 +10852,11 @@
     xchg dh, dl                               ; 86 d6
     xchg dx, ax                               ; 92
-    mov word [bp-00ah], ax                    ; 89 46 f6
-    mov word [bp-008h], dx                    ; 89 56 f8
-    mov byte [bp-006h], 000h                  ; c6 46 fa 00
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov word [bp-00ah], dx                    ; 89 56 f6
+    mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov ax, di                                ; 89 f8
     xchg ah, al                               ; 86 c4
-    mov word [bp-005h], ax                    ; 89 46 fb
-    mov byte [bp-003h], 000h                  ; c6 46 fd 00
+    mov word [bp-007h], ax                    ; 89 46 f9
+    mov byte [bp-005h], 000h                  ; c6 46 fb 00
     xor bh, bh                                ; 30 ff
     sal bx, 002h                              ; c1 e3 02
@@ -10512,8 +10864,11 @@
     mov ax, word [es:bx+001d8h]               ; 26 8b 87 d8 01
     mov dl, byte [es:bx+001dah]               ; 26 8a 97 da 01
-    mov bx, di                                ; 89 fb
-    sal bx, 009h                              ; c1 e3 09
-    mov word [bp-002h], bx                    ; 89 5e fe
-    push bx                                   ; 53
+    mov word [bp-004h], di                    ; 89 7e fc
+    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
+    mov cx, strict word 00009h                ; b9 09 00
+    sal word [bp-004h], 1                     ; d1 66 fc
+    rcl word [bp-002h], 1                     ; d1 56 fe
+    loop 075e5h                               ; e2 f8
+    push dword [bp-004h]                      ; 66 ff 76 fc
     db  066h, 026h, 0ffh, 074h, 004h
     ; push dword [es:si+004h]                   ; 66 26 ff 74 04
@@ -10521,14 +10876,15 @@
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-00ch]                         ; 8d 5e f4
-    call 072d4h                               ; e8 7b fe
+    lea bx, [bp-00eh]                         ; 8d 5e f2
+    call 0743bh                               ; e8 39 fe
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07473h                          ; 75 14
+    jne short 0761dh                          ; 75 15
     mov es, [bp+00ah]                         ; 8e 46 0a
     mov word [es:si+014h], di                 ; 26 89 7c 14
+    mov dx, word [bp-004h]                    ; 8b 56 fc
+    mov word [es:si+016h], dx                 ; 26 89 54 16
     mov dx, word [bp-002h]                    ; 8b 56 fe
-    mov word [es:si+016h], dx                 ; 26 89 54 16
-    mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00
+    mov word [es:si+018h], dx                 ; 26 89 54 18
     movzx ax, ah                              ; 0f b6 c4
     leave                                     ; c9
@@ -10536,5 +10892,129 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-scsi_enumerate_attached_devices_:            ; 0xf747c LB 0x285
+scsi_cmd_packet_:                            ; 0xf7626 LB 0x131
+    push si                                   ; 56
+    push di                                   ; 57
+    enter 0000ch, 000h                        ; c8 0c 00 00
+    mov di, ax                                ; 89 c7
+    mov byte [bp-002h], dl                    ; 88 56 fe
+    mov word [bp-00ch], bx                    ; 89 5e f4
+    mov word [bp-006h], cx                    ; 89 4e fa
+    mov dx, strict word 0000eh                ; ba 0e 00
+    mov ax, strict word 00040h                ; b8 40 00
+    call 0161ch                               ; e8 dc 9f
+    mov si, 00122h                            ; be 22 01
+    mov word [bp-00ah], ax                    ; 89 46 f6
+    cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
+    jne short 0766bh                          ; 75 1f
+    mov bx, 00cech                            ; bb ec 0c
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 018aeh                               ; e8 57 a2
+    push 00af9h                               ; 68 f9 0a
+    push 00b09h                               ; 68 09 0b
+    push strict byte 00004h                   ; 6a 04
+    call 018e9h                               ; e8 87 a2
+    add sp, strict byte 00006h                ; 83 c4 06
+    mov dx, strict word 00001h                ; ba 01 00
+    jmp near 0774fh                           ; e9 e4 00
+    sub di, strict byte 00008h                ; 83 ef 08
+    sal di, 002h                              ; c1 e7 02
+    sub byte [bp-002h], 002h                  ; 80 6e fe 02
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    add di, si                                ; 01 f7
+    mov bx, word [es:di+001d8h]               ; 26 8b 9d d8 01
+    mov al, byte [es:di+001dah]               ; 26 8a 85 da 01
+    mov byte [bp-004h], al                    ; 88 46 fc
+    mov dx, bx                                ; 89 da
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    test AL, strict byte 001h                 ; a8 01
+    jne short 07687h                          ; 75 f7
+    xor di, di                                ; 31 ff
+    mov ax, word [bp+00ah]                    ; 8b 46 0a
+    add ax, word [bp+008h]                    ; 03 46 08
+    mov word [bp-008h], ax                    ; 89 46 f8
+    adc di, word [bp+00ch]                    ; 13 7e 0c
+    mov dx, di                                ; 89 fa
+    mov cx, strict word 0000ch                ; b9 0c 00
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    loop 076a3h                               ; e2 fa
+    and ax, 000f0h                            ; 25 f0 00
+    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
+    or cx, ax                                 ; 09 c1
+    mov al, byte [bp-004h]                    ; 8a 46 fc
+    mov dx, bx                                ; 89 da
+    out DX, AL                                ; ee
+    xor al, al                                ; 30 c0
+    out DX, AL                                ; ee
+    mov al, cl                                ; 88 c8
+    out DX, AL                                ; ee
+    mov ax, word [bp+00ah]                    ; 8b 46 0a
+    add ax, word [bp+008h]                    ; 03 46 08
+    out DX, AL                                ; ee
+    mov ax, word [bp-008h]                    ; 8b 46 f8
+    mov dx, di                                ; 89 fa
+    mov cx, strict word 00008h                ; b9 08 00
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    loop 076cdh                               ; e2 fa
+    mov dx, bx                                ; 89 da
+    out DX, AL                                ; ee
+    xor cx, cx                                ; 31 c9
+    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
+    cmp cx, ax                                ; 39 c1
+    jnc short 076f1h                          ; 73 11
+    mov es, [bp-006h]                         ; 8e 46 fa
+    mov di, word [bp-00ch]                    ; 8b 7e f4
+    add di, cx                                ; 01 cf
+    mov al, byte [es:di]                      ; 26 8a 05
+    mov dx, bx                                ; 89 da
+    out DX, AL                                ; ee
+    inc cx                                    ; 41
+    jmp short 076d8h                          ; eb e7
+    mov dx, bx                                ; 89 da
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    test AL, strict byte 001h                 ; a8 01
+    jne short 076f1h                          ; 75 f7
+    mov ax, word [bp+008h]                    ; 8b 46 08
+    test ax, ax                               ; 85 c0
+    je short 07709h                           ; 74 08
+    lea dx, [bx+001h]                         ; 8d 57 01
+    mov cx, ax                                ; 89 c1
+    in AL, DX                                 ; ec
+    loop 07706h                               ; e2 fd
+    mov ax, word [bp+00ah]                    ; 8b 46 0a
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov word [es:si+016h], ax                 ; 26 89 44 16
+    mov ax, word [bp+00ch]                    ; 8b 46 0c
+    mov word [es:si+018h], ax                 ; 26 89 44 18
+    lea dx, [bx+001h]                         ; 8d 57 01
+    cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
+    jne short 0772ah                          ; 75 07
+    cmp word [bp+00ah], 08000h                ; 81 7e 0a 00 80
+    jbe short 07745h                          ; 76 1b
+    mov cx, 08000h                            ; b9 00 80
+    les di, [bp+010h]                         ; c4 7e 10
+    rep insb                                  ; f3 6c
+    add word [bp+00ah], 08000h                ; 81 46 0a 00 80
+    adc word [bp+00ch], strict byte 0ffffh    ; 83 56 0c ff
+    mov ax, es                                ; 8c c0
+    add ax, 00800h                            ; 05 00 08
+    mov word [bp+012h], ax                    ; 89 46 12
+    jmp short 0771ah                          ; eb d5
+    mov cx, word [bp+00ah]                    ; 8b 4e 0a
+    les di, [bp+010h]                         ; c4 7e 10
+    rep insb                                  ; f3 6c
+    xor dx, dx                                ; 31 d2
+    mov ax, dx                                ; 89 d0
+    leave                                     ; c9
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    retn 0000ch                               ; c2 0c 00
+scsi_enumerate_attached_devices_:            ; 0xf7757 LB 0x319
     push bx                                   ; 53
     push cx                                   ; 51
@@ -10542,43 +11022,63 @@
     push si                                   ; 56
     push di                                   ; 57
-    enter 0021ah, 000h                        ; c8 1a 02 00
-    push ax                                   ; 50
+    enter 0021eh, 000h                        ; c8 1e 02 00
+    mov di, ax                                ; 89 c7
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 8d a1
+    call 0161ch                               ; e8 b1 9e
     mov si, 00122h                            ; be 22 01
-    mov word [bp-006h], ax                    ; 89 46 fa
-    mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
-    jmp near 076a9h                           ; e9 0c 02
-    mov es, [bp-006h]                         ; 8e 46 fa
+    mov word [bp-00ah], ax                    ; 89 46 f6
+    mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
+    jmp near 07a03h                           ; e9 8a 02
+    mov es, [bp-00ah]                         ; 8e 46 f6
     cmp byte [es:si+001e8h], 004h             ; 26 80 bc e8 01 04
-    jnc near 076fah                           ; 0f 83 50 02
+    jnc near 07a69h                           ; 0f 83 e3 02
     mov cx, strict word 0000ah                ; b9 0a 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
-    lea ax, [bp-01ah]                         ; 8d 46 e6
-    call 08caah                               ; e8 f3 17
-    mov byte [bp-01ah], 025h                  ; c6 46 e6 25
-    push strict byte 00008h                   ; 6a 08
-    lea dx, [bp-0021ah]                       ; 8d 96 e6 fd
+    lea ax, [bp-01eh]                         ; 8d 46 e2
+    call 0902ah                               ; e8 97 18
+    mov byte [bp-01eh], 025h                  ; c6 46 e2 25
+    push dword 000000008h                     ; 66 6a 08
+    lea dx, [bp-0021eh]                       ; 8d 96 e2 fd
     push SS                                   ; 16
     push dx                                   ; 52
     push strict byte 0000ah                   ; 6a 0a
-    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
+    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-01ah]                         ; 8d 5e e6
-    mov ax, word [bp-0021ch]                  ; 8b 86 e4 fd
-    call 07271h                               ; e8 9c fd
+    lea bx, [bp-01eh]                         ; 8d 5e e2
+    mov ax, di                                ; 89 f8
+    call 073b3h                               ; e8 03 fc
     test al, al                               ; 84 c0
-    je short 074e4h                           ; 74 0b
-    push 00b2fh                               ; 68 2f 0b
+    je short 077c2h                           ; 74 0e
+    push 00b29h                               ; 68 29 0b
+    push 00b62h                               ; 68 62 0b
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 08 a4
-    add sp, strict byte 00004h                ; 83 c4 04
-    movzx dx, byte [bp-00219h]                ; 0f b6 96 e7 fd
-    movzx di, byte [bp-0021ah]                ; 0f b6 be e6 fd
-    sal di, 008h                              ; c1 e7 08
+    call 018e9h                               ; e8 2a a1
+    add sp, strict byte 00006h                ; 83 c4 06
+    movzx dx, byte [bp-0021dh]                ; 0f b6 96 e3 fd
+    movzx ax, byte [bp-0021eh]                ; 0f b6 86 e2 fd
+    sal ax, 008h                              ; c1 e0 08
     xor bx, bx                                ; 31 db
-    or di, dx                                 ; 09 d7
+    or ax, dx                                 ; 09 d0
+    mov word [bp-014h], ax                    ; 89 46 ec
+    movzx ax, byte [bp-0021ch]                ; 0f b6 86 e4 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 077e0h                               ; e2 fa
+    or bx, ax                                 ; 09 c3
+    or dx, word [bp-014h]                     ; 0b 56 ec
+    movzx ax, byte [bp-0021bh]                ; 0f b6 86 e5 fd
+    or bx, ax                                 ; 09 c3
+    mov word [bp-010h], bx                    ; 89 5e f0
+    mov word [bp-008h], dx                    ; 89 56 f8
+    movzx dx, byte [bp-0021ah]                ; 0f b6 96 e6 fd
+    sal dx, 008h                              ; c1 e2 08
+    movzx ax, byte [bp-00219h]                ; 0f b6 86 e7 fd
+    xor bx, bx                                ; 31 db
+    or dx, ax                                 ; 09 c2
+    mov word [bp-014h], dx                    ; 89 56 ec
     movzx ax, byte [bp-00218h]                ; 0f b6 86 e8 fd
     xor dx, dx                                ; 31 d2
@@ -10586,75 +11086,57 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 074ffh                               ; e2 fa
+    loop 07816h                               ; e2 fa
     or bx, ax                                 ; 09 c3
-    or di, dx                                 ; 09 d7
+    or dx, word [bp-014h]                     ; 0b 56 ec
     movzx ax, byte [bp-00217h]                ; 0f b6 86 e9 fd
     or bx, ax                                 ; 09 c3
-    mov word [bp-00ah], bx                    ; 89 5e f6
-    movzx ax, byte [bp-00216h]                ; 0f b6 86 ea fd
-    sal ax, 008h                              ; c1 e0 08
-    movzx bx, byte [bp-00215h]                ; 0f b6 9e eb fd
-    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
-    or bx, ax                                 ; 09 c3
-    movzx ax, byte [bp-00214h]                ; 0f b6 86 ec 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 07531h                               ; e2 fa
-    mov cx, word [bp-010h]                    ; 8b 4e f0
-    or cx, ax                                 ; 09 c1
-    or dx, bx                                 ; 09 da
-    movzx ax, byte [bp-00213h]                ; 0f b6 86 ed fd
-    mov bx, cx                                ; 89 cb
-    or bx, ax                                 ; 09 c3
-    mov word [bp-00ch], bx                    ; 89 5e f4
+    mov word [bp-012h], bx                    ; 89 5e ee
     test dx, dx                               ; 85 d2
-    jne short 07554h                          ; 75 06
+    jne short 07835h                          ; 75 06
     cmp bx, 00200h                            ; 81 fb 00 02
-    je short 07574h                           ; 74 20
-    mov bx, 00cd6h                            ; bb d6 0c
+    je short 07855h                           ; 74 20
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 4f a3
+    call 018aeh                               ; e8 6e a0
     push dx                                   ; 52
-    push word [bp-00ch]                       ; ff 76 f4
-    push word [bp-008h]                       ; ff 76 f8
-    push 00b6bh                               ; 68 6b 0b
+    push word [bp-012h]                       ; ff 76 ee
+    push word [bp-006h]                       ; ff 76 fa
+    push 00b81h                               ; 68 81 0b
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 7b a3
+    call 018e9h                               ; e8 9a a0
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 076a0h                           ; e9 2c 01
-    cmp di, strict byte 00040h                ; 83 ff 40
-    jnbe short 0757bh                         ; 77 02
-    jne short 07585h                          ; 75 0a
-    mov dword [bp-004h], strict dword 000ff003fh ; 66 c7 46 fc 3f 00 ff 00
-    jmp short 0759eh                          ; eb 19
-    cmp di, strict byte 00020h                ; 83 ff 20
-    jnbe short 0758ch                         ; 77 02
-    jne short 07596h                          ; 75 0a
-    mov dword [bp-004h], strict dword 000800020h ; 66 c7 46 fc 20 00 80 00
-    jmp short 0759eh                          ; eb 08
-    mov dword [bp-004h], strict dword 000400020h ; 66 c7 46 fc 20 00 40 00
-    mov bx, word [bp-002h]                    ; 8b 5e fe
-    imul bx, word [bp-004h]                   ; 0f af 5e fc
-    mov ax, word [bp-00ah]                    ; 8b 46 f6
-    mov dx, di                                ; 89 fa
+    jmp near 079fah                           ; e9 a5 01
+    mov ax, word [bp-008h]                    ; 8b 46 f8
+    cmp ax, strict word 00040h                ; 3d 40 00
+    jnbe short 0785fh                         ; 77 02
+    jne short 07869h                          ; 75 0a
+    mov dword [bp-00eh], strict dword 000ff003fh ; 66 c7 46 f2 3f 00 ff 00
+    jmp short 07882h                          ; eb 19
+    cmp ax, strict word 00020h                ; 3d 20 00
+    jnbe short 07870h                         ; 77 02
+    jne short 0787ah                          ; 75 0a
+    mov dword [bp-00eh], strict dword 000800020h ; 66 c7 46 f2 20 00 80 00
+    jmp short 07882h                          ; eb 08
+    mov dword [bp-00eh], strict dword 000400020h ; 66 c7 46 f2 20 00 40 00
+    mov bx, word [bp-00ch]                    ; 8b 5e f4
+    imul bx, word [bp-00eh]                   ; 0f af 5e f2
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov dx, word [bp-008h]                    ; 8b 56 f8
     xor cx, cx                                ; 31 c9
-    call 08c40h                               ; e8 91 16
-    mov word [bp-00eh], dx                    ; 89 56 f2
-    mov es, [bp-006h]                         ; 8e 46 fa
-    mov cl, byte [es:si+001e8h]               ; 26 8a 8c e8 01
-    mov ch, cl                                ; 88 cd
-    add ch, 008h                              ; 80 c5 08
-    movzx dx, cl                              ; 0f b6 d1
-    sal dx, 002h                              ; c1 e2 02
-    mov bx, si                                ; 89 f3
-    add bx, dx                                ; 01 d3
-    mov dx, word [bp-0021ch]                  ; 8b 96 e4 fd
-    mov word [es:bx+001d8h], dx               ; 26 89 97 d8 01
-    mov dl, byte [bp-008h]                    ; 8a 56 f8
-    mov byte [es:bx+001dah], dl               ; 26 88 97 da 01
-    movzx dx, ch                              ; 0f b6 d5
+    call 08fc0h                               ; e8 2c 17
+    mov cx, ax                                ; 89 c1
+    mov word [bp-004h], dx                    ; 89 56 fc
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
+    mov byte [bp-002h], al                    ; 88 46 fe
+    add AL, strict byte 008h                  ; 04 08
+    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
+    sal bx, 002h                              ; c1 e3 02
+    add bx, si                                ; 01 f3
+    mov word [es:bx+001d8h], di               ; 26 89 bf d8 01
+    mov ah, byte [bp-006h]                    ; 8a 66 fa
+    mov byte [es:bx+001dah], ah               ; 26 88 a7 da 01
+    movzx dx, al                              ; 0f b6 d0
     imul dx, dx, strict byte 00018h           ; 6b d2 18
     mov bx, si                                ; 89 f3
@@ -10662,42 +11144,45 @@
     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 dx, word [bp-00ch]                    ; 8b 56 f4
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     mov word [es:bx+024h], dx                 ; 26 89 57 24
     mov byte [es:bx+023h], 001h               ; 26 c6 47 23 01
-    mov dx, word [bp-002h]                    ; 8b 56 fe
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
     mov word [es:bx+026h], dx                 ; 26 89 57 26
-    mov dx, word [bp-004h]                    ; 8b 56 fc
+    mov dx, word [bp-00eh]                    ; 8b 56 f2
     mov word [es:bx+02ah], dx                 ; 26 89 57 2a
-    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
-    jne short 07612h                          ; 75 05
-    cmp ax, 00400h                            ; 3d 00 04
-    jbe short 0761ah                          ; 76 08
+    cmp word [bp-004h], strict byte 00000h    ; 83 7e fc 00
+    jne short 078f5h                          ; 75 06
+    cmp cx, 00400h                            ; 81 f9 00 04
+    jbe short 078fdh                          ; 76 08
     mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
-    jmp short 0761eh                          ; eb 04
-    mov word [es:bx+028h], ax                 ; 26 89 47 28
-    movzx bx, ch                              ; 0f b6 dd
-    imul bx, bx, strict byte 00018h           ; 6b db 18
-    mov es, [bp-006h]                         ; 8e 46 fa
-    add bx, si                                ; 01 f3
-    mov dx, word [bp-002h]                    ; 8b 56 fe
+    jmp short 07901h                          ; eb 04
+    mov word [es:bx+028h], cx                 ; 26 89 4f 28
+    movzx dx, al                              ; 0f b6 d0
+    imul dx, dx, strict byte 00018h           ; 6b d2 18
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov bx, si                                ; 89 f3
+    add bx, dx                                ; 01 d3
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
     mov word [es:bx+02ch], dx                 ; 26 89 57 2c
-    mov dx, word [bp-004h]                    ; 8b 56 fc
+    mov dx, word [bp-00eh]                    ; 8b 56 f2
     mov word [es:bx+030h], dx                 ; 26 89 57 30
-    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
-    jne short 07642h                          ; 75 05
-    cmp ax, 00400h                            ; 3d 00 04
-    jbe short 0764ah                          ; 76 08
+    cmp word [bp-004h], strict byte 00000h    ; 83 7e fc 00
+    jne short 07928h                          ; 75 06
+    cmp cx, 00400h                            ; 81 f9 00 04
+    jbe short 07930h                          ; 76 08
     mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
-    jmp short 0764eh                          ; eb 04
-    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
-    movzx bx, ch                              ; 0f b6 dd
-    imul bx, bx, strict byte 00018h           ; 6b db 18
-    mov es, [bp-006h]                         ; 8e 46 fa
-    add bx, si                                ; 01 f3
-    mov ax, word [bp-00ah]                    ; 8b 46 f6
+    jmp short 07934h                          ; eb 04
+    mov word [es:bx+02eh], cx                 ; 26 89 4f 2e
+    xor ah, ah                                ; 30 e4
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     mov word [es:bx+032h], ax                 ; 26 89 47 32
-    mov word [es:bx+034h], di                 ; 26 89 7f 34
+    mov ax, word [bp-008h]                    ; 8b 46 f8
+    mov word [es:bx+034h], ax                 ; 26 89 47 34
     mov al, byte [es:si+0019eh]               ; 26 8a 84 9e 01
-    mov ah, cl                                ; 88 cc
+    mov ah, byte [bp-002h]                    ; 8a 66 fe
     add ah, 008h                              ; 80 c4 08
     movzx bx, al                              ; 0f b6 d8
@@ -10709,5 +11194,5 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 78 9f
+    call 01600h                               ; e8 8d 9c
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -10715,40 +11200,80 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 78 9f
-    db  0feh, 0c1h
-    ; inc cl                                    ; fe c1
-    mov es, [bp-006h]                         ; 8e 46 fa
-    mov byte [es:si+001e8h], cl               ; 26 88 8c e8 01
-    inc word [bp-008h]                        ; ff 46 f8
-    cmp word [bp-008h], strict byte 00010h    ; 83 7e f8 10
-    jnl short 076fah                          ; 7d 51
-    mov byte [bp-01ah], 012h                  ; c6 46 e6 12
+    call 0160eh                               ; e8 8d 9c
+    inc byte [bp-002h]                        ; fe 46 fe
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
+    jmp short 079fah                          ; eb 69
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    add AL, strict byte 008h                  ; 04 08
+    test byte [bp-0021dh], 080h               ; f6 86 e3 fd 80
+    db  00fh, 095h, 0c4h
+    ; setne ah                                  ; 0f 95 c4
+    movzx dx, ah                              ; 0f b6 d4
+    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
+    sal bx, 002h                              ; c1 e3 02
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    add bx, si                                ; 01 f3
+    mov word [es:bx+001d8h], di               ; 26 89 bf d8 01
+    mov ah, byte [bp-006h]                    ; 8a 66 fa
+    mov byte [es:bx+001dah], ah               ; 26 88 a7 da 01
+    xor ah, ah                                ; 30 e4
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
+    mov word [es:bx+01eh], 00504h             ; 26 c7 47 1e 04 05
+    mov byte [es:bx+020h], dl                 ; 26 88 57 20
+    mov word [es:bx+024h], 00800h             ; 26 c7 47 24 00 08
+    mov al, byte [es:si+001afh]               ; 26 8a 84 af 01
+    mov ah, byte [bp-002h]                    ; 8a 66 fe
+    add ah, 008h                              ; 80 c4 08
+    movzx bx, al                              ; 0f b6 d8
+    add bx, si                                ; 01 f3
+    mov byte [es:bx+001b0h], ah               ; 26 88 a7 b0 01
+    db  0feh, 0c0h
+    ; inc al                                    ; fe c0
+    mov byte [es:si+001afh], al               ; 26 88 84 af 01
+    inc byte [bp-002h]                        ; fe 46 fe
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
+    inc word [bp-006h]                        ; ff 46 fa
+    cmp word [bp-006h], strict byte 00010h    ; 83 7e fa 10
+    jnl short 07a69h                          ; 7d 66
+    mov byte [bp-01eh], 012h                  ; c6 46 e2 12
     xor al, al                                ; 30 c0
+    mov byte [bp-01dh], al                    ; 88 46 e3
+    mov byte [bp-01ch], al                    ; 88 46 e4
+    mov byte [bp-01bh], al                    ; 88 46 e5
+    mov byte [bp-01ah], 005h                  ; c6 46 e6 05
     mov byte [bp-019h], al                    ; 88 46 e7
-    mov byte [bp-018h], al                    ; 88 46 e8
-    mov byte [bp-017h], al                    ; 88 46 e9
-    mov byte [bp-016h], 005h                  ; c6 46 ea 05
-    mov byte [bp-015h], al                    ; 88 46 eb
-    push strict byte 00005h                   ; 6a 05
-    lea dx, [bp-0021ah]                       ; 8d 96 e6 fd
+    push dword 000000005h                     ; 66 6a 05
+    lea dx, [bp-0021eh]                       ; 8d 96 e2 fd
     push SS                                   ; 16
     push dx                                   ; 52
     push strict byte 00006h                   ; 6a 06
-    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
+    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-01ah]                         ; 8d 5e e6
-    mov ax, word [bp-0021ch]                  ; 8b 86 e4 fd
-    call 07271h                               ; e8 98 fb
+    lea bx, [bp-01eh]                         ; 8d 5e e2
+    mov ax, di                                ; 89 f8
+    call 073b3h                               ; e8 81 f9
     test al, al                               ; 84 c0
-    je short 076e8h                           ; 74 0b
-    push 00af9h                               ; 68 f9 0a
+    je short 07a44h                           ; 74 0e
+    push 00b29h                               ; 68 29 0b
+    push 00b49h                               ; 68 49 0b
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 04 a2
-    add sp, strict byte 00004h                ; 83 c4 04
-    test byte [bp-0021ah], 0e0h               ; f6 86 e6 fd e0
-    jne short 076a0h                          ; 75 b1
-    test byte [bp-0021ah], 01fh               ; f6 86 e6 fd 1f
-    je near 0749dh                            ; 0f 84 a5 fd
-    jmp short 076a0h                          ; eb a6
+    call 018e9h                               ; e8 a8 9e
+    add sp, strict byte 00006h                ; 83 c4 06
+    test byte [bp-0021eh], 0e0h               ; f6 86 e2 fd e0
+    jne short 07a54h                          ; 75 09
+    test byte [bp-0021eh], 01fh               ; f6 86 e2 fd 1f
+    je near 07779h                            ; 0f 84 25 fd
+    test byte [bp-0021eh], 0e0h               ; f6 86 e2 fd e0
+    jne short 079fah                          ; 75 9f
+    mov al, byte [bp-0021eh]                  ; 8a 86 e2 fd
+    and AL, strict byte 01fh                  ; 24 1f
+    cmp AL, strict byte 005h                  ; 3c 05
+    je near 07991h                            ; 0f 84 2a ff
+    jmp short 079fah                          ; eb 91
     leave                                     ; c9
     pop di                                    ; 5f
@@ -10758,10 +11283,10 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-_scsi_init:                                  ; 0xf7701 LB 0x64
+_scsi_init:                                  ; 0xf7a70 LB 0x64
     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 0161ch                               ; e8 0f 9f
+    call 0161ch                               ; e8 a0 9b
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
@@ -10774,10 +11299,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 07731h                          ; 75 0c
+    jne short 07aa0h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00333h                            ; ba 33 03
     out DX, AL                                ; ee
     mov ax, 00330h                            ; b8 30 03
-    call 0747ch                               ; e8 4b fd
+    call 07757h                               ; e8 b7 fc
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00342h                            ; ba 42 03
@@ -10787,10 +11312,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 0774ah                          ; 75 0c
+    jne short 07ab9h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00343h                            ; ba 43 03
     out DX, AL                                ; ee
     mov ax, 00340h                            ; b8 40 03
-    call 0747ch                               ; e8 32 fd
+    call 07757h                               ; e8 9e fc
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00352h                            ; ba 52 03
@@ -10800,13 +11325,13 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 07763h                          ; 75 0c
+    jne short 07ad2h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00353h                            ; ba 53 03
     out DX, AL                                ; ee
     mov ax, 00350h                            ; b8 50 03
-    call 0747ch                               ; e8 19 fd
+    call 07757h                               ; e8 85 fc
     pop bp                                    ; 5d
     retn                                      ; c3
-high_bits_save_:                             ; 0xf7765 LB 0x14
+high_bits_save_:                             ; 0xf7ad4 LB 0x14
     push bx                                   ; 53
     push bp                                   ; 55
@@ -10819,5 +11344,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-high_bits_restore_:                          ; 0xf7779 LB 0x14
+high_bits_restore_:                          ; 0xf7ae8 LB 0x14
     push bx                                   ; 53
     push bp                                   ; 55
@@ -10830,5 +11355,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_ctrl_set_bits_:                         ; 0xf778d LB 0x40
+ahci_ctrl_set_bits_:                         ; 0xf7afc LB 0x40
     push si                                   ; 56
     push di                                   ; 57
@@ -10865,5 +11390,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-ahci_ctrl_clear_bits_:                       ; 0xf77cd LB 0x44
+ahci_ctrl_clear_bits_:                       ; 0xf7b3c LB 0x44
     push si                                   ; 56
     push di                                   ; 57
@@ -10902,5 +11427,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-ahci_ctrl_is_bit_set_:                       ; 0xf7811 LB 0x36
+ahci_ctrl_is_bit_set_:                       ; 0xf7b80 LB 0x36
     push si                                   ; 56
     push di                                   ; 57
@@ -10924,9 +11449,9 @@
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 0783dh                          ; 75 04
+    jne short 07bach                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 07841h                           ; 74 04
+    je short 07bb0h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 07843h                          ; eb 02
+    jmp short 07bb2h                          ; eb 02
     xor al, al                                ; 30 c0
     pop bp                                    ; 5d
@@ -10934,5 +11459,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf7847 LB 0x1b
+ahci_ctrl_extract_bits_:                     ; 0xf7bb6 LB 0x1b
     push si                                   ; 56
     push bp                                   ; 55
@@ -10942,12 +11467,12 @@
     and dx, cx                                ; 21 ca
     movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
-    jcxz 0785dh                               ; e3 06
+    jcxz 07bcch                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07857h                               ; e2 fa
+    loop 07bc6h                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf7862 LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf7bd1 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -10960,5 +11485,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 07870h                               ; e2 fa
+    loop 07bdfh                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -10968,5 +11493,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf7880 LB 0xd0
+ahci_port_cmd_sync_:                         ; 0xf7bef LB 0xd0
     push cx                                   ; 51
     push si                                   ; 56
@@ -10980,5 +11505,5 @@
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 0794bh                            ; 0f 84 aa 00
+    je near 07cbah                            ; 0f 84 aa 00
     movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
     xor dx, dx                                ; 31 d2
@@ -10992,5 +11517,5 @@
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov dx, es                                ; 8c c2
-    call 07862h                               ; e8 98 ff
+    call 07bd1h                               ; e8 98 ff
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:si+008h], ax                 ; 26 89 44 08
@@ -11002,5 +11527,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 0778dh                               ; e8 a3 fe
+    call 07afch                               ; e8 a3 fe
     lea ax, [si+00138h]                       ; 8d 84 38 01
     cwd                                       ; 99
@@ -11029,12 +11554,12 @@
     mov dx, si                                ; 89 f2
     mov ax, di                                ; 89 f8
-    call 07811h                               ; e8 e7 fe
+    call 07b80h                               ; e8 e7 fe
     test al, al                               ; 84 c0
-    je short 0790dh                           ; 74 df
+    je short 07c7ch                           ; 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 0778dh                               ; e8 53 fe
+    call 07afch                               ; e8 53 fe
     mov dx, word [bp-006h]                    ; 8b 56 fa
     add dx, 00118h                            ; 81 c2 18 01
@@ -11042,5 +11567,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 077cdh                               ; e8 82 fe
+    call 07b3ch                               ; e8 82 fe
     leave                                     ; c9
     pop di                                    ; 5f
@@ -11048,5 +11573,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf7950 LB 0x1c5
+ahci_cmd_data_:                              ; 0xf7cbf LB 0x1c5
     push cx                                   ; 51
     push si                                   ; 56
@@ -11070,5 +11595,5 @@
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08caah                               ; e8 1d 13
+    call 0902ah                               ; e8 2e 13
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
@@ -11086,5 +11611,5 @@
     shr bx, 1                                 ; d1 eb
     rcr ax, 1                                 ; d1 d8
-    loop 079c0h                               ; e2 fa
+    loop 07d2fh                               ; e2 fa
     mov es, [bp-004h]                         ; 8e 46 fc
     mov byte [es:si+00085h], al               ; 26 88 84 85 00
@@ -11111,5 +11636,5 @@
     mov bx, word [bp-010h]                    ; 8b 5e f0
     xor cx, cx                                ; 31 c9
-    call 08c79h                               ; e8 50 12
+    call 08ff9h                               ; e8 61 12
     push dx                                   ; 52
     push ax                                   ; 50
@@ -11119,5 +11644,5 @@
     mov ax, 0026ah                            ; b8 6a 02
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08b9dh                               ; e8 5e 11
+    call 08f14h                               ; e8 66 11
     mov es, [bp-004h]                         ; 8e 46 fc
     movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
@@ -11139,5 +11664,5 @@
     mov es, [bp-00ch]                         ; 8e 46 f4
     cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
-    je short 07ab8h                           ; 74 2c
+    je short 07e27h                           ; 74 2c
     mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
     dec dx                                    ; 4a
@@ -11158,17 +11683,17 @@
     movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
     cmp ax, dx                                ; 39 d0
-    jnc short 07ad2h                          ; 73 03
+    jnc short 07e41h                          ; 73 03
     inc ax                                    ; 40
-    jmp short 07ac2h                          ; eb f0
+    jmp short 07e31h                          ; eb f0
     mov al, byte [bp-002h]                    ; 8a 46 fe
     cmp AL, strict byte 035h                  ; 3c 35
-    jne short 07adfh                          ; 75 06
+    jne short 07e4eh                          ; 75 06
     mov byte [bp-002h], 040h                  ; c6 46 fe 40
-    jmp short 07af3h                          ; eb 14
+    jmp short 07e62h                          ; eb 14
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 07aefh                          ; 75 0c
+    jne short 07e5eh                          ; 75 0c
     or byte [bp-002h], 020h                   ; 80 4e fe 20
     or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
-    jmp short 07af3h                          ; eb 04
+    jmp short 07e62h                          ; eb 04
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
     or byte [bp-002h], 005h                   ; 80 4e fe 05
@@ -11176,9 +11701,9 @@
     mov ax, word [bp-008h]                    ; 8b 46 f8
     mov dx, word [bp-006h]                    ; 8b 56 fa
-    call 07880h                               ; e8 7c fd
+    call 07befh                               ; e8 7c fd
     mov ax, word [bp-008h]                    ; 8b 46 f8
     add ax, 0026ah                            ; 05 6a 02
     mov dx, word [bp-006h]                    ; 8b 56 fa
-    call 08c13h                               ; e8 03 11
+    call 08f8ah                               ; e8 0b 11
     leave                                     ; c9
     pop di                                    ; 5f
@@ -11186,5 +11711,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf7b15 LB 0x13f
+ahci_port_deinit_current_:                   ; 0xf7e84 LB 0x13f
     push bx                                   ; 53
     push cx                                   ; 51
@@ -11199,5 +11724,5 @@
     mov byte [bp-002h], al                    ; 88 46 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 07c4eh                            ; 0f 84 17 01
+    je near 07fbdh                            ; 0f 84 17 01
     movzx dx, al                              ; 0f b6 d0
     sal dx, 007h                              ; c1 e2 07
@@ -11206,5 +11731,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, si                                ; 89 f0
-    call 077cdh                               ; e8 82 fc
+    call 07b3ch                               ; e8 82 fc
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     sal ax, 007h                              ; c1 e0 07
@@ -11215,22 +11740,22 @@
     xor cx, cx                                ; 31 c9
     mov ax, si                                ; 89 f0
-    call 07811h                               ; e8 ac fc
+    call 07b80h                               ; e8 ac fc
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 07b4bh                           ; 74 e2
+    je short 07ebah                           ; 74 e2
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08caah                               ; e8 34 11
+    call 0902ah                               ; e8 45 11
     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-004h]                    ; 8b 56 fc
-    call 08caah                               ; e8 25 11
+    call 0902ah                               ; e8 36 11
     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-004h]                    ; 8b 56 fc
-    call 08caah                               ; e8 16 11
+    call 0902ah                               ; e8 27 11
     mov ax, word [bp-006h]                    ; 8b 46 fa
     add ax, 00108h                            ; 05 08 01
@@ -11333,5 +11858,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf7c54 LB 0x201
+ahci_port_init_:                             ; 0xf7fc3 LB 0x201
     push cx                                   ; 51
     push si                                   ; 56
@@ -11341,5 +11866,5 @@
     mov word [bp-004h], dx                    ; 89 56 fc
     mov byte [bp-002h], bl                    ; 88 5e fe
-    call 07b15h                               ; e8 af fe
+    call 07e84h                               ; e8 af fe
     movzx dx, bl                              ; 0f b6 d3
     sal dx, 007h                              ; c1 e2 07
@@ -11349,5 +11874,5 @@
     mov bx, strict word 00011h                ; bb 11 00
     xor cx, cx                                ; 31 c9
-    call 077cdh                               ; e8 4d fb
+    call 07b3ch                               ; e8 4d fb
     movzx di, byte [bp-002h]                  ; 0f b6 7e fe
     sal di, 007h                              ; c1 e7 07
@@ -11357,17 +11882,17 @@
     mov bx, 0c011h                            ; bb 11 c0
     xor cx, cx                                ; 31 c9
-    call 07811h                               ; e8 76 fb
+    call 07b80h                               ; e8 76 fb
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 07c80h                           ; 74 e1
+    je short 07fefh                           ; 74 e1
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08caah                               ; e8 fe 0f
+    call 0902ah                               ; e8 0f 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-004h]                    ; 8b 56 fc
-    call 08caah                               ; e8 ef 0f
+    call 0902ah                               ; e8 00 10
     mov ax, si                                ; 89 f0
     add ah, 002h                              ; 80 c4 02
@@ -11376,5 +11901,5 @@
     xor bx, bx                                ; 31 db
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 08caah                               ; e8 dc 0f
+    call 0902ah                               ; e8 ed 0f
     lea ax, [di+00108h]                       ; 8d 85 08 01
     cwd                                       ; 99
@@ -11390,5 +11915,5 @@
     mov ax, word [bp-006h]                    ; 8b 46 fa
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 07862h                               ; e8 71 fb
+    call 07bd1h                               ; e8 71 fb
     mov es, [bp-004h]                         ; 8e 46 fc
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
@@ -11435,5 +11960,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 07862h                               ; e8 05 fb
+    call 07bd1h                               ; e8 05 fb
     mov es, [bp-004h]                         ; 8e 46 fc
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
@@ -11539,5 +12064,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-@ahci_read_sectors:                          ; 0xf7e55 LB 0x91
+@ahci_read_sectors:                          ; 0xf81c4 LB 0x91
     push si                                   ; 56
     push di                                   ; 57
@@ -11548,15 +12073,15 @@
     sub di, strict byte 0000ch                ; 83 ef 0c
     cmp di, strict byte 00004h                ; 83 ff 04
-    jbe short 07e79h                          ; 76 0f
+    jbe short 081e8h                          ; 76 0f
     push di                                   ; 57
-    push 00b9ah                               ; 68 9a 0b
-    push 00bach                               ; 68 ac 0b
+    push 00bb0h                               ; 68 b0 0b
+    push 00bc2h                               ; 68 c2 0b
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 73 9a
+    call 018e9h                               ; e8 04 97
     add sp, strict byte 00008h                ; 83 c4 08
     les bx, [bp+008h]                         ; c4 5e 08
     mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
     xor ax, ax                                ; 31 c0
-    call 07765h                               ; e8 df f8
+    call 07ad4h                               ; e8 df f8
     mov es, [bp+00ah]                         ; 8e 46 0a
     add di, bx                                ; 01 df
@@ -11565,9 +12090,9 @@
     mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c54h                               ; e8 b6 fd
+    call 07fc3h                               ; e8 b6 fd
     mov bx, strict word 00025h                ; bb 25 00
     mov ax, di                                ; 89 f8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
-    call 07950h                               ; e8 a7 fa
+    call 07cbfh                               ; e8 a7 fa
     mov es, [bp+00ah]                         ; 8e 46 0a
     mov bx, di                                ; 89 fb
@@ -11589,5 +12114,5 @@
     mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
     xor ax, ax                                ; 31 c0
-    call 07779h                               ; e8 9b f8
+    call 07ae8h                               ; e8 9b f8
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
@@ -11595,5 +12120,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-@ahci_write_sectors:                         ; 0xf7ee6 LB 0x6d
+@ahci_write_sectors:                         ; 0xf8255 LB 0x6d
     push si                                   ; 56
     push bp                                   ; 55
@@ -11605,15 +12130,15 @@
     sub bx, strict byte 0000ch                ; 83 eb 0c
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 07f0eh                          ; 76 0f
+    jbe short 0827dh                          ; 76 0f
     push bx                                   ; 53
-    push 00bcbh                               ; 68 cb 0b
-    push 00bach                               ; 68 ac 0b
+    push 00be1h                               ; 68 e1 0b
+    push 00bc2h                               ; 68 c2 0b
     push strict byte 00007h                   ; 6a 07
-    call 018e9h                               ; e8 de 99
+    call 018e9h                               ; e8 6f 96
     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 07765h                               ; e8 4b f8
+    call 07ad4h                               ; e8 4b f8
     mov es, cx                                ; 8e c1
     add bx, si                                ; 01 f3
@@ -11621,9 +12146,9 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c54h                               ; e8 26 fd
+    call 07fc3h                               ; e8 26 fd
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 07950h                               ; e8 18 fa
+    call 07cbfh                               ; e8 18 fa
     mov es, cx                                ; 8e c1
     mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
@@ -11631,10 +12156,10 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07779h                               ; e8 2d f8
+    call 07ae8h                               ; e8 2d f8
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf7f53 LB 0x16e
+ahci_cmd_packet_:                            ; 0xf82c2 LB 0x16e
     push si                                   ; 56
     push di                                   ; 57
@@ -11646,22 +12171,22 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 b0 96
+    call 0161ch                               ; e8 41 93
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
     cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
-    jne short 07f97h                          ; 75 1f
-    mov bx, 00cd6h                            ; bb d6 0c
+    jne short 08306h                          ; 75 1f
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 2b 99
-    push 00bdeh                               ; 68 de 0b
-    push 00beeh                               ; 68 ee 0b
+    call 018aeh                               ; e8 bc 95
+    push 00bf4h                               ; 68 f4 0b
+    push 00c04h                               ; 68 04 0c
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 5b 99
+    call 018e9h                               ; e8 ec 95
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 080bbh                           ; e9 24 01
+    jmp near 0842ah                           ; e9 24 01
     test byte [bp+008h], 001h                 ; f6 46 08 01
-    jne short 07f91h                          ; 75 f4
+    jne short 08300h                          ; 75 f4
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     mov dx, word [bp+00ch]                    ; 8b 56 0c
@@ -11669,5 +12194,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 07fa6h                               ; e2 fa
+    loop 08315h                               ; e2 fa
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:si], ax                      ; 26 89 04
@@ -11681,5 +12206,5 @@
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     xor cx, cx                                ; 31 c9
-    call 08c40h                               ; e8 6d 0c
+    call 08fc0h                               ; e8 7e 0c
     mov word [es:si+00ah], ax                 ; 26 89 44 0a
     xor di, di                                ; 31 ff
@@ -11691,5 +12216,5 @@
     xor ax, ax                                ; 31 c0
     mov dx, word [bp-006h]                    ; 8b 56 fa
-    call 07765h                               ; e8 72 f7
+    call 07ad4h                               ; e8 72 f7
     mov es, [bp-004h]                         ; 8e 46 fc
     mov bx, word [bp-010h]                    ; 8b 5e f0
@@ -11698,5 +12223,5 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c54h                               ; e8 49 fc
+    call 07fc3h                               ; e8 49 fc
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     push ax                                   ; 50
@@ -11705,5 +12230,5 @@
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-006h]                    ; 8b 56 fa
-    call 08cb7h                               ; e8 98 0c
+    call 09037h                               ; e8 a9 0c
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -11712,5 +12237,5 @@
     mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
     test ax, ax                               ; 85 c0
-    je short 0805dh                           ; 74 27
+    je short 083cch                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-006h]                         ; 8e 46 fa
@@ -11725,5 +12250,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-004h]                    ; 8b 56 fc
-    call 07950h                               ; e8 e8 f8
+    call 07cbfh                               ; e8 e8 f8
     les bx, [bp-00ah]                         ; c4 5e f6
     mov ax, word [es:bx+004h]                 ; 26 8b 47 04
@@ -11748,11 +12273,11 @@
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 07779h                               ; e8 d2 f6
+    call 07ae8h                               ; e8 d2 f6
     les bx, [bp-00ah]                         ; c4 5e f6
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 080b9h                          ; 75 05
+    jne short 08428h                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 080bbh                          ; eb 02
+    jmp short 0842ah                          ; eb 02
     xor ax, ax                                ; 31 c0
     leave                                     ; c9
@@ -11760,9 +12285,9 @@
     pop si                                    ; 5e
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf80c1 LB 0x3c3
+ahci_port_detect_device_:                    ; 0xf8430 LB 0x3cb
     push cx                                   ; 51
     push si                                   ; 56
     push di                                   ; 57
-    enter 00220h, 000h                        ; c8 20 02 00
+    enter 00222h, 000h                        ; c8 22 02 00
     mov di, ax                                ; 89 c7
     mov word [bp-00ah], dx                    ; 89 56 f6
@@ -11770,19 +12295,19 @@
     movzx cx, bl                              ; 0f b6 cb
     mov bx, cx                                ; 89 cb
-    call 07c54h                               ; e8 7c fb
+    call 07fc3h                               ; e8 7c fb
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 3b 95
-    mov word [bp-01eh], ax                    ; 89 46 e2
+    call 0161ch                               ; e8 cc 91
+    mov word [bp-01ah], ax                    ; 89 46 e6
     mov si, 00122h                            ; be 22 01
     mov word [bp-008h], ax                    ; 89 46 f8
-    mov word [bp-00eh], si                    ; 89 76 f2
+    mov word [bp-01ch], si                    ; 89 76 e4
     mov word [bp-00ch], ax                    ; 89 46 f4
     sal cx, 007h                              ; c1 e1 07
-    mov word [bp-012h], cx                    ; 89 4e ee
+    mov word [bp-016h], cx                    ; 89 4e ea
     mov ax, cx                                ; 89 c8
     add ax, 0012ch                            ; 05 2c 01
     cwd                                       ; 99
-    mov word [bp-020h], ax                    ; 89 46 e0
+    mov word [bp-018h], ax                    ; 89 46 e8
     mov bx, dx                                ; 89 d3
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -11806,5 +12331,5 @@
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
-    mov ax, word [bp-020h]                    ; 8b 46 e0
+    mov ax, word [bp-018h]                    ; 8b 46 e8
     mov cx, bx                                ; 89 d9
     xchg cx, ax                               ; 91
@@ -11823,5 +12348,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00128h                            ; 05 28 01
     cwd                                       ; 99
@@ -11846,13 +12371,13 @@
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 07847h                               ; e8 b2 f6
+    call 07bb6h                               ; e8 b2 f6
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne near 0847fh                           ; 0f 85 e3 02
+    jne near 087f6h                           ; 0f 85 eb 02
     mov es, [bp-008h]                         ; 8e 46 f8
     mov al, byte [es:si+001edh]               ; 26 8a 84 ed 01
     mov byte [bp-004h], al                    ; 88 46 fc
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 0847fh                           ; 0f 83 d2 02
-    mov dx, word [bp-012h]                    ; 8b 56 ee
+    jnc near 087f6h                           ; 0f 83 da 02
+    mov dx, word [bp-016h]                    ; 8b 56 ea
     add dx, 00118h                            ; 81 c2 18 01
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -11860,11 +12385,12 @@
     mov bx, strict word 00010h                ; bb 10 00
     xor cx, cx                                ; 31 c9
-    call 0778dh                               ; e8 c9 f5
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    call 07afch                               ; e8 c9 f5
+    mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00124h                            ; 05 24 01
     cwd                                       ; 99
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov bx, word [es:di+00260h]               ; 26 8b 9d 60 02
     mov cx, dx                                ; 89 d1
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
+    mov dx, bx                                ; 89 da
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -11885,11 +12411,11 @@
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne near 083d9h                           ; 0f 85 d7 01
+    jne near 08748h                           ; 0f 85 d5 01
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne near 083d9h                           ; 0f 85 cf 01
+    jne near 08748h                           ; 0f 85 cd 01
     mov es, [bp-008h]                         ; 8e 46 f8
     db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00
-    lea dx, [bp-00220h]                       ; 8d 96 e0 fd
+    lea dx, [bp-00222h]                       ; 8d 96 de fd
     mov word [es:si+004h], dx                 ; 26 89 54 04
     mov [es:si+006h], ss                      ; 26 8c 54 06
@@ -11898,35 +12424,35 @@
     mov bx, 000ech                            ; bb ec 00
     mov ax, si                                ; 89 f0
-    mov dx, word [bp-01eh]                    ; 8b 56 e2
-    call 07950h                               ; e8 1b f7
+    mov dx, word [bp-01ah]                    ; 8b 56 e6
+    call 07cbfh                               ; e8 19 f7
     mov byte [bp-006h], cl                    ; 88 4e fa
-    test byte [bp-00220h], 080h               ; f6 86 e0 fd 80
+    test byte [bp-00222h], 080h               ; f6 86 de fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov dx, word [bp-0021eh]                  ; 8b 96 e2 fd
-    mov word [bp-018h], dx                    ; 89 56 e8
-    mov dx, word [bp-0021ah]                  ; 8b 96 e6 fd
+    mov dx, word [bp-00220h]                  ; 8b 96 e0 fd
     mov word [bp-014h], dx                    ; 89 56 ec
-    mov dx, word [bp-00214h]                  ; 8b 96 ec fd
-    mov word [bp-01ah], dx                    ; 89 56 e6
+    mov dx, word [bp-0021ch]                  ; 8b 96 e4 fd
+    mov word [bp-012h], dx                    ; 89 56 ee
+    mov dx, word [bp-00216h]                  ; 8b 96 ea fd
+    mov word [bp-010h], dx                    ; 89 56 f0
+    mov di, word [bp-001aah]                  ; 8b be 56 fe
     mov dx, word [bp-001a8h]                  ; 8b 96 58 fe
-    mov word [bp-010h], dx                    ; 89 56 f0
-    mov di, word [bp-001a6h]                  ; 8b be 5a fe
-    cmp di, 00fffh                            ; 81 ff ff 0f
-    jne short 08278h                          ; 75 10
-    cmp dx, strict byte 0ffffh                ; 83 fa ff
-    jne short 08278h                          ; 75 0b
+    mov word [bp-00eh], dx                    ; 89 56 f2
+    cmp dx, 00fffh                            ; 81 fa ff 0f
+    jne short 085e9h                          ; 75 10
+    cmp di, strict byte 0ffffh                ; 83 ff ff
+    jne short 085e9h                          ; 75 0b
+    mov di, word [bp-0015ah]                  ; 8b be a6 fe
     mov dx, word [bp-00158h]                  ; 8b 96 a8 fe
-    mov word [bp-010h], dx                    ; 89 56 f0
-    mov di, word [bp-00156h]                  ; 8b be aa fe
+    mov word [bp-00eh], dx                    ; 89 56 f2
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     mov es, [bp-00ch]                         ; 8e 46 f4
-    add bx, word [bp-00eh]                    ; 03 5e f2
+    add bx, word [bp-01ch]                    ; 03 5e e4
     mov ah, byte [bp-002h]                    ; 8a 66 fe
     mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     imul dx, dx, strict byte 00018h           ; 6b d2 18
-    mov si, word [bp-00eh]                    ; 8b 76 f2
+    mov si, word [bp-01ch]                    ; 8b 76 e4
     add si, dx                                ; 01 d6
     mov word [es:si+01eh], 0ff05h             ; 26 c7 44 1e 05 ff
@@ -11935,30 +12461,30 @@
     mov word [es:si+024h], 00200h             ; 26 c7 44 24 00 02
     mov byte [es:si+023h], 001h               ; 26 c6 44 23 01
+    mov word [es:si+032h], di                 ; 26 89 7c 32
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov word [es:si+034h], ax                 ; 26 89 44 34
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov word [es:si+02ch], ax                 ; 26 89 44 2c
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [es:si+02eh], ax                 ; 26 89 44 2e
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov word [es:si+032h], ax                 ; 26 89 44 32
-    mov word [es:si+034h], di                 ; 26 89 7c 34
-    mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov word [es:si+02ch], ax                 ; 26 89 44 2c
-    mov ax, word [bp-018h]                    ; 8b 46 e8
-    mov word [es:si+02eh], ax                 ; 26 89 44 2e
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov word [es:si+030h], ax                 ; 26 89 44 30
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 082e3h                           ; 72 0c
-    jbe short 082ebh                          ; 76 12
+    jc short 08654h                           ; 72 0c
+    jbe short 0865ch                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 082f3h                           ; 74 16
+    je short 08664h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 082efh                           ; 74 0e
-    jmp short 0833ah                          ; eb 57
+    je short 08660h                           ; 74 0e
+    jmp short 086adh                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 0833ah                          ; 75 53
+    jne short 086adh                          ; 75 55
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 082f5h                          ; eb 0a
+    jmp short 08666h                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 082f5h                          ; eb 06
+    jmp short 08666h                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 082f5h                          ; eb 02
+    jmp short 08666h                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov al, dl                                ; 88 d0
@@ -11966,94 +12492,100 @@
     movzx bx, al                              ; 0f b6 d8
     mov ax, bx                                ; 89 d8
-    call 0165ch                               ; e8 5b 93
+    call 0165ch                               ; e8 ea 8f
     test al, al                               ; 84 c0
-    je short 0833ah                           ; 74 35
+    je short 086adh                           ; 74 37
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 4e 93
+    call 0165ch                               ; e8 dd 8f
     xor ah, ah                                ; 30 e4
     mov cx, ax                                ; 89 c1
     sal cx, 008h                              ; c1 e1 08
     movzx ax, dl                              ; 0f b6 c2
-    call 0165ch                               ; e8 41 93
+    call 0165ch                               ; e8 d0 8f
     xor ah, ah                                ; 30 e4
     add ax, cx                                ; 01 c8
-    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov word [bp-020h], ax                    ; 89 46 e0
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 31 93
+    call 0165ch                               ; e8 c0 8f
     xor ah, ah                                ; 30 e4
-    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-022h], ax                    ; 89 46 de
     mov ax, bx                                ; 89 d8
-    call 0165ch                               ; e8 27 93
-    movzx dx, al                              ; 0f b6 d0
-    jmp short 08349h                          ; eb 0f
-    mov ax, word [bp-018h]                    ; 8b 46 e8
-    mov word [bp-01ch], ax                    ; 89 46 e4
-    mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov word [bp-016h], ax                    ; 89 46 ea
-    mov dx, word [bp-01ah]                    ; 8b 56 e6
-    mov bx, 00cd6h                            ; bb d6 0c
+    call 0165ch                               ; e8 b6 8f
+    xor ah, ah                                ; 30 e4
+    mov word [bp-01eh], ax                    ; 89 46 e2
+    jmp short 086bah                          ; eb 0d
+    mov bx, di                                ; 89 fb
+    mov cx, word [bp-00eh]                    ; 8b 4e f2
+    mov dx, ss                                ; 8c d2
+    lea ax, [bp-022h]                         ; 8d 46 de
+    call 0533dh                               ; e8 83 cc
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 5a 95
+    call 018aeh                               ; e8 e9 91
+    push word [bp-00eh]                       ; ff 76 f2
     push di                                   ; 57
-    push word [bp-010h]                       ; ff 76 f0
-    push dx                                   ; 52
-    push word [bp-016h]                       ; ff 76 ea
-    push word [bp-01ch]                       ; ff 76 e4
-    push word [bp-01ah]                       ; ff 76 e6
+    mov ax, word [bp-01eh]                    ; 8b 46 e2
+    push ax                                   ; 50
+    mov ax, word [bp-022h]                    ; 8b 46 de
+    push ax                                   ; 50
+    mov ax, word [bp-020h]                    ; 8b 46 e0
+    push ax                                   ; 50
+    push dword [bp-012h]                      ; 66 ff 76 ee
     push word [bp-014h]                       ; ff 76 ec
-    push word [bp-018h]                       ; ff 76 e8
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     push ax                                   ; 50
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
-    push 00c0eh                               ; 68 0e 0c
+    push 00c24h                               ; 68 24 0c
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 6f 95
+    call 018e9h                               ; e8 fb 91
     add sp, strict byte 00018h                ; 83 c4 18
-    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les si, [bp-00eh]                         ; c4 76 f2
-    add si, ax                                ; 01 c6
-    mov ax, word [bp-016h]                    ; 8b 46 ea
-    mov word [es:si+026h], ax                 ; 26 89 44 26
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:si+028h], ax                 ; 26 89 44 28
-    mov word [es:si+02ah], dx                 ; 26 89 54 2a
-    mov bx, word [bp-00eh]                    ; 8b 5e f2
-    mov dl, byte [es:bx+0019eh]               ; 26 8a 97 9e 01
-    mov al, byte [bp-004h]                    ; 8a 46 fc
-    add AL, strict byte 00ch                  ; 04 0c
-    movzx bx, dl                              ; 0f b6 da
-    add bx, word [bp-00eh]                    ; 03 5e f2
-    mov byte [es:bx+0019fh], al               ; 26 88 87 9f 01
-    db  0feh, 0c2h
-    ; inc dl                                    ; fe c2
-    mov bx, word [bp-00eh]                    ; 8b 5e f2
-    mov byte [es:bx+0019eh], dl               ; 26 88 97 9e 01
+    movzx di, byte [bp-006h]                  ; 0f b6 7e fa
+    imul di, di, strict byte 00018h           ; 6b ff 18
+    add di, word [bp-01ch]                    ; 03 7e e4
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    lea di, [di+026h]                         ; 8d 7d 26
+    push DS                                   ; 1e
+    push SS                                   ; 16
+    pop DS                                    ; 1f
+    lea si, [bp-022h]                         ; 8d 76 de
+    movsw                                     ; a5
+    movsw                                     ; a5
+    movsw                                     ; a5
+    pop DS                                    ; 1f
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
+    mov al, byte [es:bx+0019eh]               ; 26 8a 87 9e 01
+    mov ah, byte [bp-004h]                    ; 8a 66 fc
+    add ah, 00ch                              ; 80 c4 0c
+    movzx bx, al                              ; 0f b6 d8
+    add bx, word [bp-01ch]                    ; 03 5e e4
+    mov byte [es:bx+0019fh], ah               ; 26 88 a7 9f 01
+    db  0feh, 0c0h
+    ; inc al                                    ; fe c0
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
+    mov byte [es:bx+0019eh], al               ; 26 88 87 9e 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 3a 92
-    mov dl, al                                ; 88 c2
-    db  0feh, 0c2h
-    ; inc dl                                    ; fe c2
-    movzx bx, dl                              ; 0f b6 da
+    call 01600h                               ; e8 c9 8e
+    db  0feh, 0c0h
+    ; inc al                                    ; fe c0
+    movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 38 92
-    jmp near 08471h                           ; e9 98 00
+    call 0160eh                               ; e8 c9 8e
+    jmp near 087e5h                           ; e9 9d 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne near 08471h                           ; 0f 85 90 00
+    jne near 087e5h                           ; 0f 85 95 00
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne near 08471h                           ; 0f 85 88 00
+    jne near 087e5h                           ; 0f 85 8d 00
     mov es, [bp-008h]                         ; 8e 46 f8
     db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00
-    lea dx, [bp-00220h]                       ; 8d 96 e0 fd
+    lea dx, [bp-00222h]                       ; 8d 96 de fd
     mov word [es:si+004h], dx                 ; 26 89 54 04
     mov [es:si+006h], ss                      ; 26 8c 54 06
@@ -12062,37 +12594,39 @@
     mov bx, 000a1h                            ; bb a1 00
     mov ax, si                                ; 89 f0
-    mov dx, word [bp-01eh]                    ; 8b 56 e2
-    call 07950h                               ; e8 3c f5
-    test byte [bp-00220h], 080h               ; f6 86 e0 fd 80
+    mov dx, word [bp-01ah]                    ; 8b 56 e6
+    call 07cbfh                               ; e8 3c f5
+    test byte [bp-00222h], 080h               ; f6 86 de fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov dx, ax                                ; 89 c2
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
-    mov es, [bp-01eh]                         ; 8e 46 e2
+    mov es, [bp-01ah]                         ; 8e 46 e6
     add bx, si                                ; 01 f3
-    mov al, byte [bp-002h]                    ; 8a 46 fe
-    mov byte [es:bx+001e9h], al               ; 26 88 87 e9 01
+    mov ah, byte [bp-002h]                    ; 8a 66 fe
+    mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
     movzx si, cl                              ; 0f b6 f1
     imul si, si, strict byte 00018h           ; 6b f6 18
     add si, 00122h                            ; 81 c6 22 01
     mov word [es:si+01eh], 00505h             ; 26 c7 44 1e 05 05
-    mov byte [es:si+020h], dl                 ; 26 88 54 20
+    mov byte [es:si+020h], al                 ; 26 88 44 20
     mov word [es:si+024h], 00800h             ; 26 c7 44 24 00 08
-    les bx, [bp-00eh]                         ; c4 5e f2
-    mov dl, byte [es:bx+001afh]               ; 26 8a 97 af 01
-    mov al, byte [bp-004h]                    ; 8a 46 fc
-    add AL, strict byte 00ch                  ; 04 0c
-    movzx bx, dl                              ; 0f b6 da
-    mov es, [bp-01eh]                         ; 8e 46 e2
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
+    mov al, byte [es:bx+001afh]               ; 26 8a 87 af 01
+    mov ah, byte [bp-004h]                    ; 8a 66 fc
+    add ah, 00ch                              ; 80 c4 0c
+    movzx bx, al                              ; 0f b6 d8
+    mov es, [bp-01ah]                         ; 8e 46 e6
     add bx, 00122h                            ; 81 c3 22 01
-    mov byte [es:bx+001b0h], al               ; 26 88 87 b0 01
-    db  0feh, 0c2h
-    ; inc dl                                    ; fe c2
-    les bx, [bp-00eh]                         ; c4 5e f2
-    mov byte [es:bx+001afh], dl               ; 26 88 97 af 01
+    mov byte [es:bx+001b0h], ah               ; 26 88 a7 b0 01
+    db  0feh, 0c0h
+    ; inc al                                    ; fe c0
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
+    mov byte [es:bx+001afh], al               ; 26 88 87 af 01
     inc byte [bp-004h]                        ; fe 46 fc
     mov al, byte [bp-004h]                    ; 8a 46 fc
-    les bx, [bp-00eh]                         ; c4 5e f2
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
     mov byte [es:bx+001edh], al               ; 26 88 87 ed 01
     leave                                     ; c9
@@ -12101,5 +12635,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf8484 LB 0x40
+ahci_mem_alloc_:                             ; 0xf87fb LB 0x40
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12111,7 +12645,7 @@
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0161ch                               ; e8 88 91
+    call 0161ch                               ; e8 11 8e
     test ax, ax                               ; 85 c0
-    je short 084bdh                           ; 74 25
+    je short 08834h                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
@@ -12120,5 +12654,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 084a0h                               ; e2 fa
+    loop 08817h                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
@@ -12126,8 +12660,8 @@
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 084adh                               ; e2 fa
+    loop 08824h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0162ah                               ; e8 6f 91
+    call 0162ah                               ; e8 f8 8d
     mov ax, si                                ; 89 f0
     pop bp                                    ; 5d
@@ -12138,5 +12672,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf84c4 LB 0x120
+ahci_hba_init_:                              ; 0xf883b LB 0x120
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12148,5 +12682,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 44 91
+    call 0161ch                               ; e8 cd 8d
     mov bx, 00122h                            ; bb 22 01
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -12165,8 +12699,8 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 08484h                               ; e8 87 ff
+    call 087fbh                               ; e8 87 ff
     mov di, ax                                ; 89 c7
     test ax, ax                               ; 85 c0
-    je near 085c6h                            ; 0f 84 c1 00
+    je near 0893dh                            ; 0f 84 c1 00
     mov es, [bp-006h]                         ; 8e 46 fa
     mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
@@ -12182,5 +12716,5 @@
     mov dx, strict word 00004h                ; ba 04 00
     mov ax, si                                ; 89 f0
-    call 0778dh                               ; e8 54 f2
+    call 07afch                               ; e8 4c f2
     mov ax, strict word 00004h                ; b8 04 00
     xor cx, cx                                ; 31 c9
@@ -12199,5 +12733,5 @@
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 08539h                          ; 75 de
+    jne short 088b0h                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
@@ -12217,33 +12751,33 @@
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 07847h                               ; e8 c8 f2
+    call 07bb6h                               ; e8 c0 f2
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
-    jmp short 08593h                          ; eb 09
+    jmp short 0890ah                          ; eb 09
     inc byte [bp-002h]                        ; fe 46 fe
     cmp byte [bp-002h], 020h                  ; 80 7e fe 20
-    jnc short 085c4h                          ; 73 31
+    jnc short 0893bh                          ; 73 31
     movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     mov ax, strict word 00001h                ; b8 01 00
     xor dx, dx                                ; 31 d2
-    jcxz 085a4h                               ; e3 06
+    jcxz 0891bh                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0859eh                               ; e2 fa
+    loop 08915h                               ; 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 07811h                               ; e8 61 f2
+    call 07b80h                               ; e8 59 f2
     test al, al                               ; 84 c0
-    je short 0858ah                           ; 74 d6
+    je short 08901h                           ; 74 d6
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     xor ax, ax                                ; 31 c0
     mov dx, di                                ; 89 fa
-    call 080c1h                               ; e8 02 fb
+    call 08430h                               ; e8 fa fa
     dec byte [bp-004h]                        ; fe 4e fc
-    jne short 0858ah                          ; 75 c6
+    jne short 08901h                          ; 75 c6
     xor ax, ax                                ; 31 c0
     leave                                     ; c9
@@ -12254,13 +12788,7 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-    or ax, word [di]                          ; 0b 05
-    add AL, strict byte 003h                  ; 04 03
-    add al, byte [bx+di]                      ; 02 01
-    add byte [bx+di-0707ah], dh               ; 00 b1 86 8f
-    xchg byte [di-0647ah], dl                 ; 86 95 86 9b
-    xchg byte [bx+di-0587ah], ah              ; 86 a1 86 a7
-    xchg byte [di-04e7ah], ch                 ; 86 ad 86 b1
-    db  086h
-_ahci_init:                                  ; 0xf85e4 LB 0xf9
+    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 028h, 08ah, 006h, 08ah, 00ch, 08ah, 012h, 08ah, 018h
+    db  08ah, 01eh, 08ah, 024h, 08ah, 028h, 08ah
+_ahci_init:                                  ; 0xf895b LB 0xf9
     push si                                   ; 56
     push di                                   ; 57
@@ -12268,8 +12796,8 @@
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 08ad6h                               ; e8 e3 04
+    call 08e4dh                               ; e8 e3 04
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je near 086d9h                            ; 0f 84 dd 00
+    je near 08a50h                            ; 0f 84 dd 00
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
@@ -12279,8 +12807,8 @@
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 08afeh                               ; e8 ed 04
+    call 08e75h                               ; e8 ed 04
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 0863ah                           ; 74 23
+    je short 089b1h                           ; 74 23
     movzx bx, cl                              ; 0f b6 d9
     movzx di, byte [bp-004h]                  ; 0f b6 7e fc
@@ -12288,7 +12816,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 08afeh                               ; e8 d5 04
+    call 08e75h                               ; e8 d5 04
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 0863ah                           ; 74 0d
+    je short 089b1h                           ; 74 0d
     mov al, cl                                ; 88 c8
     db  0feh, 0c0h
@@ -12297,7 +12825,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    jmp short 0860eh                          ; eb d4
+    jmp short 08985h                          ; eb d4
     test cl, cl                               ; 84 c9
-    je near 086d9h                            ; 0f 84 99 00
+    je near 08a50h                            ; 0f 84 99 00
     add cl, 002h                              ; 80 c1 02
     movzx bx, cl                              ; 0f b6 d9
@@ -12306,7 +12834,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 08afeh                               ; e8 a9 04
+    call 08e75h                               ; e8 a9 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne near 086d9h                           ; 0f 85 7e 00
+    jne near 08a50h                           ; 0f 85 7e 00
     mov byte [bp-002h], 000h                  ; c6 46 fe 00
     mov al, cl                                ; 88 c8
@@ -12315,29 +12843,29 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 08b1fh                               ; e8 b2 04
+    call 08e96h                               ; e8 b2 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 086b1h                         ; 77 37
+    jnbe short 08a28h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 085cdh                            ; bf cd 85
+    mov di, 08944h                            ; bf 44 89
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-07a2ch]               ; 2e 8b 85 d4 85
+    mov ax, word [cs:di-076b5h]               ; 2e 8b 85 4b 89
     jmp ax                                    ; ff e0
     mov byte [bp-002h], 010h                  ; c6 46 fe 10
-    jmp short 086b1h                          ; eb 1c
+    jmp short 08a28h                          ; eb 1c
     mov byte [bp-002h], 014h                  ; c6 46 fe 14
-    jmp short 086b1h                          ; eb 16
+    jmp short 08a28h                          ; eb 16
     mov byte [bp-002h], 018h                  ; c6 46 fe 18
-    jmp short 086b1h                          ; eb 10
+    jmp short 08a28h                          ; eb 10
     mov byte [bp-002h], 01ch                  ; c6 46 fe 1c
-    jmp short 086b1h                          ; eb 0a
+    jmp short 08a28h                          ; eb 0a
     mov byte [bp-002h], 020h                  ; c6 46 fe 20
-    jmp short 086b1h                          ; eb 04
+    jmp short 08a28h                          ; eb 04
     mov byte [bp-002h], 024h                  ; c6 46 fe 24
     mov si, dx                                ; 89 d6
@@ -12346,19 +12874,19 @@
     mov al, byte [bp-002h]                    ; 8a 46 fe
     test al, al                               ; 84 c0
-    je short 086d9h                           ; 74 19
+    je short 08a50h                           ; 74 19
     movzx bx, al                              ; 0f b6 d8
     movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
-    call 08b3eh                               ; e8 70 04
+    call 08eb5h                               ; e8 70 04
     test AL, strict byte 001h                 ; a8 01
-    je short 086d9h                           ; 74 07
+    je short 08a50h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, si                                ; 01 f0
-    call 084c4h                               ; e8 eb fd
+    call 0883bh                               ; e8 eb fd
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
     retn                                      ; c3
-apm_out_str_:                                ; 0xf86dd LB 0x36
+apm_out_str_:                                ; 0xf8a54 LB 0x36
     push bx                                   ; 53
     push bp                                   ; 55
@@ -12366,5 +12894,5 @@
     mov bx, ax                                ; 89 c3
     cmp byte [bx], 000h                       ; 80 3f 00
-    je short 086f2h                           ; 74 0a
+    je short 08a69h                           ; 74 0a
     mov al, byte [bx]                         ; 8a 07
     out DX, AL                                ; ee
@@ -12373,22 +12901,22 @@
     db  00ah, 0c0h
     ; or al, al                                 ; 0a c0
-    jne short 086eah                          ; 75 f8
+    jne short 08a61h                          ; 75 f8
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-    xchg word [ss:di], ax                     ; 36 87 05
-    mov byte [bx+si-079h], cl                 ; 88 48 87
-    arpl word [bx-077fbh], ax                 ; 63 87 05 88
-    mov es, [bx-077fbh]                       ; 8e 87 05 88
-    xchg bx, ax                               ; 93
-    xchg dx, bx                               ; 87 da
-    xchg dx, bx                               ; 87 da
-    xchg dx, bx                               ; 87 da
-    xchg bp, dx                               ; 87 d5
-    xchg dx, bx                               ; 87 da
-    xchg dx, bx                               ; 87 da
-    xchg bp, cx                               ; 87 cd
-    db  087h
-_apm_function:                               ; 0xf8713 LB 0xf5
+    lodsw                                     ; ad
+    mov bh, byte [si-075h]                    ; 8a 7c 8b
+    mov di, 0da8ah                            ; bf 8a da
+    mov bh, byte [si-075h]                    ; 8a 7c 8b
+    add ax, 07c8bh                            ; 05 8b 7c
+    mov cx, word [bp+si]                      ; 8b 0a
+    mov dx, word [bx+di-075h]                 ; 8b 51 8b
+    push cx                                   ; 51
+    mov dx, word [bx+di-075h]                 ; 8b 51 8b
+    dec sp                                    ; 4c
+    mov dx, word [bx+di-075h]                 ; 8b 51 8b
+    push cx                                   ; 51
+    mov ax, word [si-075h]                    ; 8b 44 8b
+_apm_function:                               ; 0xf8a8a LB 0xf5
     push si                                   ; 56
     push bp                                   ; 55
@@ -12398,10 +12926,10 @@
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    jnbe near 087dah                          ; 0f 87 b3 00
+    jnbe near 08b51h                          ; 0f 87 b3 00
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     mov dx, word [bp+01ah]                    ; 8b 56 1a
     or dl, 001h                               ; 80 ca 01
-    jmp word [cs:bx-0790bh]                   ; 2e ff a7 f5 86
+    jmp word [cs:bx-07594h]                   ; 2e ff a7 6c 8a
     mov word [bp+014h], 00102h                ; c7 46 14 02 01
     mov word [bp+00eh], 0504dh                ; c7 46 0e 4d 50
@@ -12411,5 +12939,5 @@
     retn                                      ; c3
     mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
-    mov word [bp+00eh], 08d24h                ; c7 46 0e 24 8d
+    mov word [bp+00eh], 090a4h                ; c7 46 0e a4 90
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov ax, strict word 0fff0h                ; b8 f0 ff
@@ -12440,21 +12968,21 @@
     retn                                      ; c3
     cmp word [bp+012h], strict byte 00003h    ; 83 7e 12 03
-    je short 087b9h                           ; 74 20
+    je short 08b30h                           ; 74 20
     cmp word [bp+012h], strict byte 00002h    ; 83 7e 12 02
-    je short 087b1h                           ; 74 12
+    je short 08b28h                           ; 74 12
     cmp word [bp+012h], strict byte 00001h    ; 83 7e 12 01
-    jne short 087c1h                          ; 75 1c
+    jne short 08b38h                          ; 75 1c
     mov dx, 08900h                            ; ba 00 89
-    mov ax, 00c46h                            ; b8 46 0c
-    call 086ddh                               ; e8 2f ff
+    mov ax, 00c5ch                            ; b8 5c 0c
+    call 08a54h                               ; e8 2f ff
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn                                      ; c3
     mov dx, 08900h                            ; ba 00 89
-    mov ax, 00c4eh                            ; b8 4e 0c
-    jmp short 087abh                          ; eb f2
+    mov ax, 00c64h                            ; b8 64 0c
+    jmp short 08b22h                          ; eb f2
     mov dx, 08900h                            ; ba 00 89
-    mov ax, 00c56h                            ; b8 56 0c
-    jmp short 087abh                          ; eb ea
+    mov ax, 00c6ch                            ; b8 6c 0c
+    jmp short 08b22h                          ; eb ea
     or ah, 00ah                               ; 80 cc 0a
     mov word [bp+014h], ax                    ; 89 46 14
@@ -12468,14 +12996,14 @@
     retn                                      ; c3
     or ah, 080h                               ; 80 cc 80
-    jmp short 087c4h                          ; eb ea
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp short 08b3bh                          ; eb ea
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 c9 90
+    call 018aeh                               ; e8 52 8d
     push word [bp+00eh]                       ; ff 76 0e
     push word [bp+014h]                       ; ff 76 14
-    push 00c5fh                               ; 68 5f 0c
+    push 00c75h                               ; 68 75 0c
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 f6 90
+    call 018e9h                               ; e8 7f 8d
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+014h]                    ; 8b 46 14
@@ -12487,5 +13015,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-pci16_select_reg_:                           ; 0xf8808 LB 0x21
+pci16_select_reg_:                           ; 0xf8b7f LB 0x21
     push bx                                   ; 53
     push bp                                   ; 55
@@ -12503,5 +13031,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf8829 LB 0xf2
+pci16_find_device_:                          ; 0xf8ba0 LB 0xf2
     push si                                   ; 56
     push di                                   ; 57
@@ -12515,8 +13043,8 @@
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     test bl, 007h                             ; f6 c3 07
-    jne short 0886fh                          ; 75 2d
+    jne short 08be6h                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 08808h                               ; e8 be ff
+    call 08b7fh                               ; e8 be ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -12525,23 +13053,23 @@
     mov byte [bp-002h], al                    ; 88 46 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 0885dh                          ; 75 06
+    jne short 08bd4h                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 088f0h                           ; e9 93 00
+    jmp near 08c67h                           ; e9 93 00
     test byte [bp-002h], 080h                 ; f6 46 fe 80
-    je short 0886ah                           ; 74 07
+    je short 08be1h                           ; 74 07
     mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
-    jmp short 0886fh                          ; eb 05
+    jmp short 08be6h                          ; eb 05
     mov word [bp-006h], strict word 00008h    ; c7 46 fa 08 00
     mov al, byte [bp-002h]                    ; 8a 46 fe
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 08897h                          ; 75 1f
+    jne short 08c0eh                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 08897h                          ; 75 16
+    jne short 08c0eh                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 08808h                               ; e8 7f ff
+    call 08b7fh                               ; e8 7f ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -12549,13 +13077,13 @@
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-004h]                    ; 3a 46 fc
-    jbe short 08897h                          ; 76 03
+    jbe short 08c0eh                          ; 76 03
     mov byte [bp-004h], al                    ; 88 46 fc
     test di, di                               ; 85 ff
-    je short 088a0h                           ; 74 05
+    je short 08c17h                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 088a2h                          ; eb 02
+    jmp short 08c19h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 08808h                               ; e8 61 ff
+    call 08b7fh                               ; e8 61 ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -12568,22 +13096,22 @@
     mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
     test di, di                               ; 85 ff
-    je short 088d1h                           ; 74 0f
+    je short 08c48h                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 088c5h                               ; e2 fa
+    loop 08c3ch                               ; e2 fa
     mov word [bp-00ah], ax                    ; 89 46 f6
     mov word [bp-008h], dx                    ; 89 56 f8
     mov ax, word [bp-008h]                    ; 8b 46 f8
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jne short 088e1h                          ; 75 08
+    jne short 08c58h                          ; 75 08
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    je short 088e7h                           ; 74 06
+    je short 08c5eh                           ; 74 06
     cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
-    je short 088edh                           ; 74 06
+    je short 08c64h                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 088ffh                           ; 74 12
+    je short 08c76h                           ; 74 12
     add bx, word [bp-006h]                    ; 03 5e fa
     mov dx, bx                                ; 89 da
@@ -12591,9 +13119,9 @@
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cmp dx, ax                                ; 39 c2
-    jbe near 0883dh                           ; 0f 86 3e ff
+    jbe near 08bb4h                           ; 0f 86 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 08908h                          ; 75 04
+    jne short 08c7fh                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 0890bh                          ; eb 03
+    jmp short 08c82h                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     leave                                     ; c9
@@ -12601,12 +13129,6 @@
     pop si                                    ; 5e
     retn                                      ; c3
-    sti                                       ; fb
-    mov word [di], dx                         ; 89 15
-    mov ch, byte [bx+si]                      ; 8a 28
-    mov bh, byte [di]                         ; 8a 3d
-    mov dl, byte [bx+si-076h]                 ; 8a 50 8a
-    db  062h
-    db  08ah
-_pci16_function:                             ; 0xf891b LB 0x1bb
+    db  072h, 08dh, 08ch, 08dh, 09fh, 08dh, 0b4h, 08dh, 0c7h, 08dh, 0d9h, 08dh
+_pci16_function:                             ; 0xf8c92 LB 0x1bb
     push si                                   ; 56
     push di                                   ; 57
@@ -12620,17 +13142,17 @@
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 08952h                           ; 72 1a
-    jbe short 089aah                          ; 76 70
+    jc short 08cc9h                           ; 72 1a
+    jbe short 08d21h                          ; 76 70
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je near 08a76h                            ; 0f 84 35 01
+    je near 08dedh                            ; 0f 84 35 01
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc near 08aa5h                            ; 0f 82 5d 01
+    jc near 08e1ch                            ; 0f 82 5d 01
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe near 089cfh                           ; 0f 86 80 00
-    jmp near 08aa5h                           ; e9 53 01
+    jbe near 08d46h                           ; 0f 86 80 00
+    jmp near 08e1ch                           ; e9 53 01
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 0897ah                           ; 74 23
+    je short 08cf1h                           ; 74 23
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jne near 08aa5h                           ; 0f 85 47 01
+    jne near 08e1ch                           ; 0f 85 47 01
     mov word [bp+024h], strict word 00001h    ; c7 46 24 01 00
     mov word [bp+018h], 00210h                ; c7 46 18 10 02
@@ -12638,49 +13160,49 @@
     mov word [bp+01ch], 04350h                ; c7 46 1c 50 43
     mov word [bp+01eh], 02049h                ; c7 46 1e 49 20
-    jmp near 08ad2h                           ; e9 58 01
+    jmp near 08e49h                           ; e9 58 01
     cmp word [bp+01ch], strict byte 0ffffh    ; 83 7e 1c ff
-    jne short 08986h                          ; 75 06
+    jne short 08cfdh                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 08acbh                           ; e9 45 01
+    jmp near 08e42h                           ; e9 45 01
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, word [bp+020h]                    ; 8b 56 20
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     xor cx, cx                                ; 31 c9
-    call 08829h                               ; e8 95 fe
+    call 08ba0h                               ; e8 95 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 089a4h                          ; 75 0b
+    jne short 08d1bh                          ; 75 0b
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 08acbh                           ; e9 27 01
+    jmp near 08e42h                           ; e9 27 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 08ad2h                           ; e9 28 01
+    jmp near 08e49h                           ; e9 28 01
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov dx, word [bp+022h]                    ; 8b 56 22
     mov cx, strict word 00001h                ; b9 01 00
-    call 08829h                               ; e8 70 fe
+    call 08ba0h                               ; e8 70 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 089c9h                          ; 75 0b
+    jne short 08d40h                          ; 75 0b
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 08acbh                           ; e9 02 01
+    jmp near 08e42h                           ; e9 02 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 08ad2h                           ; e9 03 01
+    jmp near 08e49h                           ; e9 03 01
     cmp word [bp+008h], 00100h                ; 81 7e 08 00 01
-    jc short 089dch                           ; 72 06
+    jc short 08d53h                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 08acbh                           ; e9 ef 00
+    jmp near 08e42h                           ; e9 ef 00
     mov dx, word [bp+008h]                    ; 8b 56 08
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 08808h                               ; e8 23 fe
+    call 08b7fh                               ; e8 23 fe
     mov bx, word [bp+024h]                    ; 8b 5e 24
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00008h                ; 83 eb 08
     cmp bx, strict byte 00005h                ; 83 fb 05
-    jnbe near 08ad2h                          ; 0f 87 de 00
+    jnbe near 08e49h                          ; 0f 87 de 00
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-076f1h]                   ; 2e ff a7 0f 89
+    jmp word [cs:bx-0737ah]                   ; 2e ff a7 86 8c
     mov bx, word [bp+020h]                    ; 8b 5e 20
     xor bl, bl                                ; 30 db
@@ -12693,5 +13215,5 @@
     or bx, ax                                 ; 09 c3
     mov word [bp+020h], bx                    ; 89 5e 20
-    jmp near 08ad2h                           ; e9 bd 00
+    jmp near 08e49h                           ; e9 bd 00
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor dh, dh                                ; 30 f6
@@ -12700,5 +13222,5 @@
     in ax, DX                                 ; ed
     mov word [bp+020h], ax                    ; 89 46 20
-    jmp near 08ad2h                           ; e9 aa 00
+    jmp near 08e49h                           ; e9 aa 00
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -12709,5 +13231,5 @@
     mov word [bp+020h], ax                    ; 89 46 20
     mov word [bp+022h], dx                    ; 89 56 22
-    jmp near 08ad2h                           ; e9 95 00
+    jmp near 08e49h                           ; e9 95 00
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov dx, word [bp+008h]                    ; 8b 56 08
@@ -12716,5 +13238,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp near 08ad2h                           ; e9 82 00
+    jmp near 08e49h                           ; e9 82 00
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov dx, word [bp+008h]                    ; 8b 56 08
@@ -12723,5 +13245,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp short 08ad2h                          ; eb 70
+    jmp short 08e49h                          ; eb 70
     mov ax, word [bp+020h]                    ; 8b 46 20
     mov cx, word [bp+022h]                    ; 8b 4e 22
@@ -12732,14 +13254,14 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 08ad2h                          ; eb 5c
+    jmp short 08e49h                          ; eb 5c
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov es, [bp+028h]                         ; 8e 46 28
     mov cx, word [word 00000h]                ; 8b 0e 00 00
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 08a8fh                          ; 76 0a
+    jbe short 08e06h                          ; 76 0a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor ah, ah                                ; 30 e4
     or ah, 089h                               ; 80 cc 89
-    jmp short 08acbh                          ; eb 3c
+    jmp short 08e42h                          ; eb 3c
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
@@ -12750,16 +13272,16 @@
     pop DS                                    ; 1f
     mov word [bp+018h], 00a00h                ; c7 46 18 00 0a
-    jmp short 08ad2h                          ; eb 2d
-    mov bx, 00cd6h                            ; bb d6 0c
+    jmp short 08e49h                          ; eb 2d
+    mov bx, 00cech                            ; bb ec 0c
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018aeh                               ; e8 fe 8d
+    call 018aeh                               ; e8 87 8a
     mov ax, word [bp+018h]                    ; 8b 46 18
     push ax                                   ; 50
     mov ax, word [bp+024h]                    ; 8b 46 24
     push ax                                   ; 50
-    push 00c92h                               ; 68 92 0c
+    push 00ca8h                               ; 68 a8 0c
     push strict byte 00004h                   ; 6a 04
-    call 018e9h                               ; e8 29 8e
+    call 018e9h                               ; e8 b2 8a
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+024h]                    ; 8b 46 24
@@ -12772,5 +13294,5 @@
     pop si                                    ; 5e
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf8ad6 LB 0x28
+pci_find_classcode_:                         ; 0xf8e4d LB 0x28
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12787,5 +13309,5 @@
     int 01ah                                  ; cd 1a
     cmp ah, 000h                              ; 80 fc 00
-    je near 08af7h                            ; 0f 84 03 00
+    je near 08e6eh                            ; 0f 84 03 00
     mov bx, strict word 0ffffh                ; bb ff ff
     mov ax, bx                                ; 89 d8
@@ -12795,5 +13317,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf8afe LB 0x21
+pci_read_config_byte_:                       ; 0xf8e75 LB 0x21
     push cx                                   ; 51
     push di                                   ; 57
@@ -12813,5 +13335,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf8b1f LB 0x1f
+pci_read_config_word_:                       ; 0xf8e96 LB 0x1f
     push cx                                   ; 51
     push di                                   ; 57
@@ -12831,5 +13353,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf8b3e LB 0x24
+pci_read_config_dword_:                      ; 0xf8eb5 LB 0x24
     push cx                                   ; 51
     push di                                   ; 57
@@ -12851,5 +13373,5 @@
     pop cx                                    ; 59
     retn                                      ; c3
-vds_is_present_:                             ; 0xf8b62 LB 0x1d
+vds_is_present_:                             ; 0xf8ed9 LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
@@ -12859,5 +13381,5 @@
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 08b7ah                           ; 74 06
+    je short 08ef1h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -12868,5 +13390,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf8b7f LB 0x1e
+vds_real_to_lin_:                            ; 0xf8ef6 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -12879,5 +13401,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08b8dh                               ; e2 fa
+    loop 08f04h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -12887,5 +13409,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf8b9d LB 0x76
+vds_build_sg_list_:                          ; 0xf8f14 LB 0x76
     push si                                   ; 56
     push di                                   ; 57
@@ -12901,21 +13423,21 @@
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 08b7fh                               ; e8 c3 ff
+    call 08ef6h                               ; 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 08b62h                               ; e8 93 ff
+    call 08ed9h                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 08be6h                           ; 74 13
+    je short 08f5dh                           ; 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 08be3h                            ; 0f 82 02 00
+    jc near 08f5ah                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 08c0dh                          ; eb 27
+    jmp short 08f84h                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
@@ -12933,5 +13455,5 @@
     pop si                                    ; 5e
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf8c13 LB 0x2d
+vds_free_sg_list_:                           ; 0xf8f8a LB 0x36
     push bx                                   ; 53
     push di                                   ; 57
@@ -12939,7 +13461,7 @@
     mov bp, sp                                ; 89 e5
     mov bx, ax                                ; 89 c3
-    call 08b62h                               ; e8 45 ff
+    call 08ed9h                               ; e8 45 ff
     test ax, ax                               ; 85 c0
-    je short 08c34h                           ; 74 13
+    je short 08fabh                           ; 74 13
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
@@ -12947,5 +13469,5 @@
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 08c33h                            ; 0f 82 02 00
+    jc near 08faah                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
@@ -12957,5 +13479,6 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-__U4D:                                       ; 0xf8c40 LB 0x39
+    times 0x9 db 0
+__U4D:                                       ; 0xf8fc0 LB 0x39
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -12987,5 +13510,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-__U4M:                                       ; 0xf8c79 LB 0x31
+__U4M:                                       ; 0xf8ff9 LB 0x31
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -13012,5 +13535,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-_fmemset_:                                   ; 0xf8caa LB 0xd
+_fmemset_:                                   ; 0xf902a LB 0xd
     push di                                   ; 57
     mov es, dx                                ; 8e c2
@@ -13022,5 +13545,5 @@
     pop di                                    ; 5f
     retn                                      ; c3
-_fmemcpy_:                                   ; 0xf8cb7 LB 0x33
+_fmemcpy_:                                   ; 0xf9037 LB 0x33
     push bp                                   ; 55
     db  08bh, 0ech
@@ -13042,16 +13565,17 @@
     leave                                     ; c9
     retn                                      ; c3
-    add byte [bx+si], al                      ; 00 00
-    lea ax, [bp+si]                           ; 8d 02
-    lea ax, [0068dh]                          ; 8d 06 8d 06
-    lea ax, [0088dh]                          ; 8d 06 8d 08
-    lea cx, [bx+si]                           ; 8d 08
-    lea cx, [bp+si]                           ; 8d 0a
-    lea cx, [00e8dh]                          ; 8d 0e 8d 0e
-    lea dx, [bx+si]                           ; 8d 10
-    lea dx, [di]                              ; 8d 15
-    lea dx, [bx]                              ; 8d 17
-    db  08dh
-apm_worker:                                  ; 0xf8cea LB 0x3a
+    add byte [bx+si-07d70h], al               ; 00 80 90 82
+    nop                                       ; 90
+    xchg byte [bx+si-06f7ah], dl              ; 86 90 86 90
+    xchg byte [bx+si-06f78h], dl              ; 86 90 88 90
+    mov byte [bx+si-06f76h], dl               ; 88 90 8a 90
+    mov ss, [bx+si-06f72h]                    ; 8e 90 8e 90
+    nop                                       ; 90
+    nop                                       ; 90
+    xchg bp, ax                               ; 95
+    nop                                       ; 90
+    xchg di, ax                               ; 97
+    nop                                       ; 90
+apm_worker:                                  ; 0xf906a LB 0x3a
     sti                                       ; fb
     push ax                                   ; 50
@@ -13065,21 +13589,21 @@
     pop ax                                    ; 58
     mov AH, strict byte 053h                  ; b4 53
-    jnc short 08d20h                          ; 73 25
-    jmp word [cs:bp-07330h]                   ; 2e ff a6 d0 8c
-    jmp short 08d1eh                          ; eb 1c
+    jnc short 090a0h                          ; 73 25
+    jmp word [cs:bp-06fb0h]                   ; 2e ff a6 50 90
+    jmp short 0909eh                          ; eb 1c
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 08d1eh                          ; eb 18
-    jmp short 08d1eh                          ; eb 16
-    jmp short 08d20h                          ; eb 16
+    jmp short 0909eh                          ; eb 18
+    jmp short 0909eh                          ; eb 16
+    jmp short 090a0h                          ; eb 16
     mov AH, strict byte 080h                  ; b4 80
-    jmp short 08d22h                          ; eb 14
-    jmp short 08d20h                          ; eb 10
+    jmp short 090a2h                          ; eb 14
+    jmp short 090a0h                          ; eb 10
     mov ax, 00102h                            ; b8 02 01
-    jmp short 08d1eh                          ; eb 09
-    jmp short 08d1eh                          ; eb 07
+    jmp short 0909eh                          ; eb 09
+    jmp short 0909eh                          ; eb 07
     mov BL, strict byte 000h                  ; b3 00
     mov cx, strict word 00000h                ; b9 00 00
-    jmp short 08d1eh                          ; eb 00
+    jmp short 0909eh                          ; eb 00
     clc                                       ; f8
     retn                                      ; c3
@@ -13087,5 +13611,5 @@
     stc                                       ; f9
     retn                                      ; c3
-apm_pm16_entry:                              ; 0xf8d24 LB 0x11
+apm_pm16_entry:                              ; 0xf90a4 LB 0x11
     mov AH, strict byte 002h                  ; b4 02
     push DS                                   ; 1e
@@ -13095,11 +13619,11 @@
     add bp, strict byte 00008h                ; 83 c5 08
     mov ds, bp                                ; 8e dd
-    call 08ceah                               ; e8 b8 ff
+    call 0906ah                               ; e8 b8 ff
     pop bp                                    ; 5d
     pop DS                                    ; 1f
     retf                                      ; cb
 
-  ; Padding 0x4ccb bytes at 0xf8d35
-  times 19659 db 0
+  ; Padding 0x494b bytes at 0xf90b5
+  times 18763 db 0
 
 section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3aa class=CODE group=AUTO
@@ -13148,5 +13672,5 @@
     add bp, strict byte 00008h                ; 83 c5 08
     push ebp                                  ; 66 55
-    mov bp, 08d26h                            ; bd 26 8d
+    mov bp, 090a6h                            ; bd a6 90
     add byte [bx+si], al                      ; 00 00
     push ebp                                  ; 66 55
@@ -13649,5 +14173,5 @@
     db  033h, 0ffh
     ; xor di, di                                ; 33 ff
-    mov cx, 07e00h                            ; b9 00 7e
+    mov cx, 07ff8h                            ; b9 f8 7f
     rep stosw                                 ; f3 ab
     db  033h, 0dbh
@@ -13736,5 +14260,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 04893h                               ; e8 da 66
+    call 04969h                               ; e8 b0 67
     pop DS                                    ; 1f
     mov AL, strict byte 014h                  ; b0 14
@@ -13824,7 +14348,7 @@
     cld                                       ; fc
     call 01b25h                               ; e8 89 38
-    call 01f23h                               ; e8 84 3c
-    call 085e4h                               ; e8 42 a3
-    call 07701h                               ; e8 5c 94
+    call 01f13h                               ; e8 74 3c
+    call 0895bh                               ; e8 b9 a6
+    call 07a70h                               ; e8 cb 97
     call 0ed2fh                               ; e8 87 0a
     call 0e2d2h                               ; e8 27 00
@@ -13833,5 +14357,5 @@
     cld                                       ; fc
     call 01725h                               ; e8 74 34
-    call 0358dh                               ; e8 d9 52
+    call 0356dh                               ; e8 b9 52
     sti                                       ; fb
     int 019h                                  ; cd 19
@@ -13958,5 +14482,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05b9dh                               ; e8 5b 74
+    call 05cdfh                               ; e8 9d 75
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -14074,5 +14598,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 04f85h                               ; e8 43 67
+    call 0505bh                               ; e8 19 68
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -14091,5 +14615,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 04f85h                               ; e8 25 67
+    call 0505bh                               ; e8 fb 67
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -14190,5 +14714,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 04b9dh                               ; e8 ce 61
+    call 04c73h                               ; e8 a4 62
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -14216,5 +14740,5 @@
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 035cbh                           ; e9 5a 49
+    jmp near 035abh                           ; e9 3a 49
     push ES                                   ; 06
     push ax                                   ; 50
@@ -14222,8 +14746,8 @@
     push cx                                   ; 51
     push dx                                   ; 52
-    call 035a3h                               ; e8 2a 49
+    call 03583h                               ; e8 0a 49
     cmp AL, strict byte 000h                  ; 3c 00
     je short 0ecabh                           ; 74 2e
-    call 035b7h                               ; e8 37 49
+    call 03597h                               ; e8 17 49
     pop dx                                    ; 5a
     push dx                                   ; 52
@@ -14243,5 +14767,5 @@
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 03ba9h                           ; e9 12 4f
+    jmp near 03c06h                           ; e9 6f 4f
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
@@ -14283,5 +14807,5 @@
     jne short 0ecc8h                          ; 75 06
     push 0ece9h                               ; 68 e9 ec
-    jmp near 02df4h                           ; e9 2c 41
+    jmp near 02dd4h                           ; e9 0c 41
 int13_notfloppy:                             ; 0xfecc8 LB 0x14
     cmp dl, 0e0h                              ; 80 fa e0
@@ -14289,5 +14813,5 @@
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 03fc8h                               ; e8 f3 52
+    call 04053h                               ; e8 7e 53
     pop bx                                    ; 5b
     sal ebx, 010h                             ; 66 c1 e3 10
@@ -14296,7 +14820,7 @@
     cmp ah, 040h                              ; 80 fc 40
     jnbe short 0ece6h                         ; 77 05
-    call 05299h                               ; e8 b5 65
+    call 053dbh                               ; e8 f7 66
     jmp short 0ece9h                          ; eb 03
-    call 056d5h                               ; e8 ec 69
+    call 05817h                               ; e8 2e 6b
 int13_out:                                   ; 0xfece9 LB 0x4
     pop DS                                    ; 1f
@@ -14510,5 +15034,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06d1bh                               ; e8 40 7d
+    call 06e5dh                               ; e8 82 7e
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -14558,5 +15082,5 @@
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 04631h                               ; e8 61 55
+    call 04707h                               ; e8 37 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -14565,5 +15089,5 @@
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 04631h                               ; e8 54 55
+    call 04707h                               ; e8 2a 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -14572,5 +15096,5 @@
     mov ax, strict word 00003h                ; b8 03 00
     push strict byte 00003h                   ; 6a 03
-    call 04631h                               ; e8 46 55
+    call 04707h                               ; e8 1c 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -14579,5 +15103,5 @@
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 04631h                               ; e8 39 55
+    call 04707h                               ; e8 0f 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -14923,5 +15447,5 @@
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f882h                           ; 74 0e
-    call 05da6h                               ; e8 2f 65
+    call 05ee8h                               ; e8 71 66
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -14929,12 +15453,12 @@
     popfw                                     ; 9d
     jmp short 0f890h                          ; eb 13
-    call 08713h                               ; e8 93 8e
+    call 08a8ah                               ; e8 0a 92
     jmp short 0f877h                          ; eb f5
 int15_handler_mouse:                         ; 0xff882 LB 0x5
-    call 06995h                               ; e8 10 71
+    call 06ad7h                               ; e8 52 72
     jmp short 0f877h                          ; eb f0
 int15_handler32:                             ; 0xff887 LB 0x9
     pushad                                    ; 66 60
-    call 0626fh                               ; e8 e3 69
+    call 063b1h                               ; e8 25 6b
     popad                                     ; 66 61
     jmp short 0f878h                          ; eb e8
@@ -14966,5 +15490,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 068cfh                               ; e8 17 70
+    call 06a11h                               ; e8 59 71
     pop cx                                    ; 59
     jcxz 0f8c7h                               ; e3 0c
@@ -15058,6 +15582,6 @@
     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, 09eh, 08ah, 066h
-    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 0ech, 067h, 061h, 01fh, 007h
+    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 015h, 08eh, 066h
+    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 02eh, 069h, 061h, 01fh, 007h
     db  0cfh
 int70_handler:                               ; 0xffe8f LB 0x16
@@ -15068,5 +15592,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 065bch                               ; e8 24 67
+    call 066feh                               ; e8 66 68
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -15164,3 +15688,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, 0f5h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 03bh
Index: trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum
===================================================================
--- trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 43483)
+++ trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 43630)
@@ -1,1 +1,1 @@
-57dac3e8f20bd1918af25a3b6b5e6cfb *VBoxPcBios.rom
+0c14a3e4d7b29dba2a7e66be9479e668 *VBoxPcBios.rom
