Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 58830)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 58831)
@@ -856,18 +856,19 @@
     db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
 _pktacc:                                     ; 0xf006a LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 08fh, 028h, 089h, 07bh, 06bh, 089h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 064h, 02bh, 03eh, 07fh, 065h, 08eh
 _softrst:                                    ; 0xf0076 LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 077h, 02bh, 054h, 038h, 054h, 038h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 04ch, 02eh, 029h, 03bh, 029h, 03bh
 _dskacc:                                     ; 0xf0082 LB 0x2e
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0d8h, 027h, 052h, 028h, 000h, 000h, 000h, 000h
-    db  017h, 07ah, 0d0h, 07ah, 066h, 088h, 0f9h, 088h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 054h, 02ah, 009h, 02bh, 000h, 000h, 000h, 000h
+    db  088h, 07dh, 063h, 07eh, 03bh, 08dh, 0e1h, 08dh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
-section CONST progbits vstart=0xb0 align=1 ; size=0xce0 class=DATA group=DGROUP
+section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
     db   'NMI Handler called', 00ah, 000h
     db   'INT18: BOOT FAILURE', 00ah, 000h
     db   '%s', 00ah, 000h, 000h
     db   'FATAL: ', 000h
-    db   'bios_printf: unknown format', 00ah, 000h, 000h
+    db   'bios_printf: unknown %ll format', 00ah, 000h
+    db   'bios_printf: unknown format', 00ah, 000h
     db   'ata-detect: Failed to detect ATA device', 00ah, 000h
     db   'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h
@@ -927,6 +928,5 @@
     db   '%s: function %02xh unsupported, returns fail', 00ah, 000h
     db   'int13_harddisk_ext', 000h
-    db   '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h
-    db   '%s: function %02x. LBA out of range', 00ah, 000h
+    db   '%s: function %02x. LBA out of range', 00ah, 000h, 000h
     db   'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h
     db   '*** int 15h function AH=bf not yet supported!', 00ah, 000h
@@ -968,5 +968,5 @@
     db   '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
     db   'Disk %d has an unsupported sector size of %u', 00ah, 000h
-    db   'SCSI %d-ID#%d: LCHS=%u/%u/%u %lu sectors', 00ah, 000h
+    db   'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
     db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
     db   'ahci_read_sectors', 000h
@@ -975,5 +975,5 @@
     db   'ahci_cmd_packet', 000h
     db   '%s: DATA_OUT not supported yet', 00ah, 000h
-    db   'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u %lu sectors', 00ah, 000h, 000h
+    db   'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h
     db   'Standby', 000h
     db   'Suspend', 000h
@@ -982,18 +982,18 @@
     db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
 
-section CONST2 progbits vstart=0xd90 align=1 ; size=0x3fa class=DATA group=DGROUP
-_bios_cvs_version_string:                    ; 0xf0d90 LB 0x12
-    db  'VirtualBox 5.0.2', 000h, 000h
-_bios_prefix_string:                         ; 0xf0da2 LB 0x8
+section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
+_bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
+    db  'VirtualBox 5.0.51', 000h
+_bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
-_isotag:                                     ; 0xf0daa LB 0x6
+_isotag:                                     ; 0xf0da8 LB 0x6
     db  'CD001', 000h
-_eltorito:                                   ; 0xf0db0 LB 0x18
+_eltorito:                                   ; 0xf0dae LB 0x18
     db  'EL TORITO SPECIFICATION', 000h
-_drivetypes:                                 ; 0xf0dc8 LB 0x28
+_drivetypes:                                 ; 0xf0dc6 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:                          ; 0xf0df0 LB 0x37a
+_scan_to_scanascii:                          ; 0xf0dee 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
@@ -1052,11 +1052,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:                 ; 0xf116a LB 0x20
+_panic_msg_keyb_buffer_full:                 ; 0xf1168 LB 0x20
     db  '%s: keyboard input buffer full', 00ah, 000h
 
-  ; Padding 0x476 bytes at 0xf118a
-  times 1142 db 0
+  ; Padding 0x478 bytes at 0xf1188
+  times 1144 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x8235 class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x87f5 class=CODE group=AUTO
 rom_scan_:                                   ; 0xf1600 LB 0x50
     push bp                                   ; 55
@@ -1280,9 +1280,9 @@
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    mov bx, 00da2h                            ; bb a2 0d
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
     call 01931h                               ; e8 ac 01
-    push 00d90h                               ; 68 90 0d
+    push 00d8eh                               ; 68 8e 0d
     push 000d9h                               ; 68 d9 00
     push strict byte 00004h                   ; 6a 04
@@ -1309,5 +1309,5 @@
     int 010h                                  ; cd 10
     jmp short 017c1h                          ; eb 03
-    call 075fah                               ; e8 39 5e
+    call 07947h                               ; e8 86 61
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
@@ -1455,5 +1455,5 @@
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 09740h                               ; e8 67 7e
+    call 09ce0h                               ; e8 07 84
     mov word [bp-008h], ax                    ; 89 46 f8
     mov cx, dx                                ; 89 d1
@@ -1534,5 +1534,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-bios_printf_:                                ; 0xf1972 LB 0x23b
+bios_printf_:                                ; 0xf1972 LB 0x33d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1542,10 +1542,10 @@
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, strict byte 00008h                ; 83 ec 08
+    sub sp, strict byte 0001ch                ; 83 ec 1c
     lea bx, [bp+008h]                         ; 8d 5e 08
-    mov word [bp-012h], bx                    ; 89 5e ee
-    mov [bp-010h], ss                         ; 8c 56 f0
-    xor cx, cx                                ; 31 c9
-    xor si, si                                ; 31 f6
+    mov word [bp-016h], bx                    ; 89 5e ea
+    mov [bp-014h], ss                         ; 8c 56 ec
+    xor bx, bx                                ; 31 db
+    xor di, di                                ; 31 ff
     mov ax, word [bp+004h]                    ; 8b 46 04
     and ax, strict word 00007h                ; 25 07 00
@@ -1556,15 +1556,15 @@
     call 01972h                               ; e8 d5 ff
     add sp, strict byte 00004h                ; 83 c4 04
-    mov bx, word [bp+006h]                    ; 8b 5e 06
-    mov dl, byte [bx]                         ; 8a 17
+    mov si, word [bp+006h]                    ; 8b 76 06
+    mov dl, byte [si]                         ; 8a 14
     test dl, dl                               ; 84 d2
-    je near 01b91h                            ; 0f 84 e6 01
+    je near 01c93h                            ; 0f 84 e8 02
     cmp dl, 025h                              ; 80 fa 25
     jne short 019b8h                          ; 75 08
-    mov cx, strict word 00001h                ; b9 01 00
-    xor si, si                                ; 31 f6
-    jmp near 01b8bh                           ; e9 d3 01
-    test cx, cx                               ; 85 c9
-    je near 01b83h                            ; 0f 84 c5 01
+    mov bx, strict word 00001h                ; bb 01 00
+    xor di, di                                ; 31 ff
+    jmp near 01c8dh                           ; e9 d5 02
+    test bx, bx                               ; 85 db
+    je near 01c85h                            ; 0f 84 c7 02
     cmp dl, 030h                              ; 80 fa 30
     jc short 019d6h                           ; 72 13
@@ -1572,75 +1572,154 @@
     jnbe short 019d6h                         ; 77 0e
     movzx ax, dl                              ; 0f b6 c2
-    imul si, si, strict byte 0000ah           ; 6b f6 0a
+    imul di, di, strict byte 0000ah           ; 6b ff 0a
     sub ax, strict word 00030h                ; 2d 30 00
-    add si, ax                                ; 01 c6
-    jmp near 01b8bh                           ; e9 b5 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov word [bp-010h], ax                    ; 89 46 f0
-    add word [bp-012h], strict byte 00002h    ; 83 46 ee 02
-    les bx, [bp-012h]                         ; c4 5e ee
+    add di, ax                                ; 01 c7
+    jmp near 01c8dh                           ; e9 b7 02
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [bp-014h], ax                    ; 89 46 ec
+    add word [bp-016h], strict byte 00002h    ; 83 46 ea 02
+    les bx, [bp-016h]                         ; c4 5e ea
     mov ax, word [es:bx-002h]                 ; 26 8b 47 fe
-    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov word [bp-012h], ax                    ; 89 46 ee
     cmp dl, 078h                              ; 80 fa 78
     je short 019f4h                           ; 74 05
     cmp dl, 058h                              ; 80 fa 58
-    jne short 01a3dh                          ; 75 49
-    test si, si                               ; 85 f6
+    jne short 01a4ah                          ; 75 56
+    test di, di                               ; 85 ff
     jne short 019fbh                          ; 75 03
-    mov si, strict word 00004h                ; be 04 00
+    mov di, strict word 00004h                ; bf 04 00
     cmp dl, 078h                              ; 80 fa 78
-    jne short 01a05h                          ; 75 05
-    mov di, strict word 00061h                ; bf 61 00
-    jmp short 01a08h                          ; eb 03
-    mov di, strict word 00041h                ; bf 41 00
-    lea bx, [si-001h]                         ; 8d 5c ff
-    test bx, bx                               ; 85 db
-    jl near 01b7fh                            ; 0f 8c 6e 01
-    mov cx, bx                                ; 89 d9
+    jne short 01a07h                          ; 75 07
+    mov word [bp-00eh], strict word 00061h    ; c7 46 f2 61 00
+    jmp short 01a0ch                          ; eb 05
+    mov word [bp-00eh], strict word 00041h    ; c7 46 f2 41 00
+    lea ax, [di-001h]                         ; 8d 45 ff
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov ax, word [bp-00ch]                    ; 8b 46 f4
+    test ax, ax                               ; 85 c0
+    jl near 01c81h                            ; 0f 8c 66 02
+    mov cx, ax                                ; 89 c1
     sal cx, 002h                              ; c1 e1 02
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
+    mov ax, word [bp-012h]                    ; 8b 46 ee
     shr ax, CL                                ; d3 e8
     xor ah, ah                                ; 30 e4
     and AL, strict byte 00fh                  ; 24 0f
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 01a2bh                         ; 77 07
+    jnbe short 01a35h                         ; 77 07
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00030h                ; 83 c2 30
-    jmp short 01a32h                          ; eb 07
-    mov dx, ax                                ; 89 c2
-    sub dx, strict byte 0000ah                ; 83 ea 0a
-    add dx, di                                ; 01 fa
+    jmp short 01a3dh                          ; eb 08
+    sub ax, strict word 0000ah                ; 2d 0a 00
+    mov dx, word [bp-00eh]                    ; 8b 56 f2
+    add dx, ax                                ; 01 c2
     xor dh, dh                                ; 30 f6
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 017c5h                               ; e8 8b fd
-    dec bx                                    ; 4b
-    jmp short 01a0bh                          ; eb ce
+    call 017c5h                               ; e8 80 fd
+    dec word [bp-00ch]                        ; ff 4e f4
+    jmp short 01a12h                          ; eb c8
     cmp dl, 075h                              ; 80 fa 75
-    jne short 01a51h                          ; 75 0f
+    jne short 01a5eh                          ; 75 0f
     xor cx, cx                                ; 31 c9
-    mov bx, si                                ; 89 f3
+    mov bx, di                                ; 89 fb
     mov dx, ax                                ; 89 c2
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0185fh                               ; e8 11 fe
-    jmp near 01b7fh                           ; e9 2e 01
-    lea bx, [si-001h]                         ; 8d 5c ff
+    call 0185fh                               ; e8 04 fe
+    jmp near 01c81h                           ; e9 23 02
     cmp dl, 06ch                              ; 80 fa 6c
-    jne near 01b0dh                           ; 0f 85 b2 00
+    jne near 01b40h                           ; 0f 85 db 00
+    mov bx, word [bp+006h]                    ; 8b 5e 06
+    cmp dl, byte [bx+001h]                    ; 3a 57 01
+    jne near 01b40h                           ; 0f 85 d1 00
+    add word [bp+006h], strict byte 00002h    ; 83 46 06 02
+    mov bx, word [bp+006h]                    ; 8b 5e 06
+    mov dl, byte [bx]                         ; 8a 17
+    mov word [bp-026h], ax                    ; 89 46 da
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [bp-014h], ax                    ; 89 46 ec
+    add word [bp-016h], strict byte 00002h    ; 83 46 ea 02
+    les bx, [bp-016h]                         ; c4 5e ea
+    mov ax, word [es:bx-002h]                 ; 26 8b 47 fe
+    mov word [bp-024h], ax                    ; 89 46 dc
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [bp-014h], ax                    ; 89 46 ec
+    add word [bp-016h], strict byte 00002h    ; 83 46 ea 02
+    les bx, [bp-016h]                         ; c4 5e ea
+    mov ax, word [es:bx-002h]                 ; 26 8b 47 fe
+    mov word [bp-022h], ax                    ; 89 46 de
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [bp-014h], ax                    ; 89 46 ec
+    add word [bp-016h], strict byte 00002h    ; 83 46 ea 02
+    les bx, [bp-016h]                         ; c4 5e ea
+    mov ax, word [es:bx-002h]                 ; 26 8b 47 fe
+    mov word [bp-020h], ax                    ; 89 46 e0
+    cmp dl, 078h                              ; 80 fa 78
+    je short 01ac1h                           ; 74 05
+    cmp dl, 058h                              ; 80 fa 58
+    jne short 01b32h                          ; 75 71
+    test di, di                               ; 85 ff
+    jne short 01ac8h                          ; 75 03
+    mov di, strict word 00010h                ; bf 10 00
+    cmp dl, 078h                              ; 80 fa 78
+    jne short 01ad4h                          ; 75 07
+    mov word [bp-00eh], strict word 00061h    ; c7 46 f2 61 00
+    jmp short 01ad9h                          ; eb 05
+    mov word [bp-00eh], strict word 00041h    ; c7 46 f2 41 00
+    lea ax, [di-001h]                         ; 8d 45 ff
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov ax, word [bp-00ch]                    ; 8b 46 f4
+    test ax, ax                               ; 85 c0
+    jl near 01c81h                            ; 0f 8c 99 01
+    sal ax, 002h                              ; c1 e0 02
+    mov word [bp-01eh], ax                    ; 89 46 e2
+    xor ax, ax                                ; 31 c0
+    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov word [bp-01ah], ax                    ; 89 46 e6
+    mov word [bp-018h], ax                    ; 89 46 e8
+    mov ax, word [bp-020h]                    ; 8b 46 e0
+    mov bx, word [bp-022h]                    ; 8b 5e de
+    mov cx, word [bp-024h]                    ; 8b 4e dc
+    mov dx, word [bp-026h]                    ; 8b 56 da
+    mov si, word [bp-01eh]                    ; 8b 76 e2
+    call 09d5ah                               ; e8 4f 82
+    mov ax, dx                                ; 89 d0
+    xor ah, dh                                ; 30 f4
+    and AL, strict byte 00fh                  ; 24 0f
+    cmp ax, strict word 00009h                ; 3d 09 00
+    jnbe short 01b1dh                         ; 77 07
+    mov dx, ax                                ; 89 c2
+    add dx, strict byte 00030h                ; 83 c2 30
+    jmp short 01b25h                          ; eb 08
+    sub ax, strict word 0000ah                ; 2d 0a 00
+    mov dx, word [bp-00eh]                    ; 8b 56 f2
+    add dx, ax                                ; 01 c2
+    xor dh, dh                                ; 30 f6
+    mov ax, word [bp+004h]                    ; 8b 46 04
+    call 017c5h                               ; e8 98 fc
+    dec word [bp-00ch]                        ; ff 4e f4
+    jmp short 01adfh                          ; eb ad
+    push 000e6h                               ; 68 e6 00
+    push strict byte 00007h                   ; 6a 07
+    call 01972h                               ; e8 38 fe
+    add sp, strict byte 00004h                ; 83 c4 04
+    jmp near 01c81h                           ; e9 41 01
+    lea bx, [di-001h]                         ; 8d 5d ff
+    cmp dl, 06ch                              ; 80 fa 6c
+    jne near 01c09h                           ; 0f 85 bf 00
     inc word [bp+006h]                        ; ff 46 06
-    mov di, word [bp+006h]                    ; 8b 7e 06
-    mov dl, byte [di]                         ; 8a 15
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov si, word [bp+006h]                    ; 8b 76 06
+    mov dl, byte [si]                         ; 8a 14
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [bp-014h], ax                    ; 89 46 ec
+    add word [bp-016h], strict byte 00002h    ; 83 46 ea 02
+    les si, [bp-016h]                         ; c4 76 ea
+    mov ax, word [es:si-002h]                 ; 26 8b 44 fe
     mov word [bp-010h], ax                    ; 89 46 f0
-    add word [bp-012h], strict byte 00002h    ; 83 46 ee 02
-    les di, [bp-012h]                         ; c4 7e ee
-    mov ax, word [es:di-002h]                 ; 26 8b 45 fe
-    mov word [bp-00eh], ax                    ; 89 46 f2
     cmp dl, 064h                              ; 80 fa 64
-    jne short 01aa9h                          ; 75 2d
-    test byte [bp-00dh], 080h                 ; f6 46 f3 80
-    je short 01a97h                           ; 74 15
+    jne short 01b98h                          ; 75 2d
+    test byte [bp-00fh], 080h                 ; f6 46 f1 80
+    je short 01b86h                           ; 74 15
     push strict byte 00001h                   ; 6a 01
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
-    mov cx, word [bp-00eh]                    ; 8b 4e f2
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov cx, word [bp-010h]                    ; 8b 4e f0
     neg cx                                    ; f7 d9
     neg ax                                    ; f7 d8
@@ -1648,110 +1727,112 @@
     mov dx, bx                                ; 89 da
     mov bx, ax                                ; 89 c3
-    jmp short 01aa0h                          ; eb 09
+    jmp short 01b8fh                          ; eb 09
     push strict byte 00000h                   ; 6a 00
-    mov bx, word [bp-00ch]                    ; 8b 5e f4
-    mov dx, si                                ; 89 f2
+    mov bx, word [bp-012h]                    ; 8b 5e ee
+    mov dx, di                                ; 89 fa
     mov cx, ax                                ; 89 c1
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 018bfh                               ; e8 19 fe
-    jmp near 01b7fh                           ; e9 d6 00
+    call 018bfh                               ; e8 2a fd
+    jmp near 01c81h                           ; e9 e9 00
     cmp dl, 075h                              ; 80 fa 75
-    jne short 01ab0h                          ; 75 02
-    jmp short 01a97h                          ; eb e7
+    jne short 01b9fh                          ; 75 02
+    jmp short 01b86h                          ; eb e7
     cmp dl, 078h                              ; 80 fa 78
-    je short 01abch                           ; 74 07
+    je short 01babh                           ; 74 07
     cmp dl, 058h                              ; 80 fa 58
-    jne near 01b7fh                           ; 0f 85 c3 00
-    test si, si                               ; 85 f6
-    jne short 01ac3h                          ; 75 03
-    mov si, strict word 00008h                ; be 08 00
+    jne near 01c81h                           ; 0f 85 d6 00
+    test di, di                               ; 85 ff
+    jne short 01bb2h                          ; 75 03
+    mov di, strict word 00008h                ; bf 08 00
     cmp dl, 078h                              ; 80 fa 78
-    jne short 01acdh                          ; 75 05
-    mov di, strict word 00061h                ; bf 61 00
-    jmp short 01ad0h                          ; eb 03
-    mov di, strict word 00041h                ; bf 41 00
-    lea bx, [si-001h]                         ; 8d 5c ff
-    test bx, bx                               ; 85 db
-    jl near 01b7fh                            ; 0f 8c a6 00
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
-    mov cx, bx                                ; 89 d9
+    jne short 01bbeh                          ; 75 07
+    mov word [bp-00eh], strict word 00061h    ; c7 46 f2 61 00
+    jmp short 01bc3h                          ; eb 05
+    mov word [bp-00eh], strict word 00041h    ; c7 46 f2 41 00
+    lea ax, [di-001h]                         ; 8d 45 ff
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
+    jl near 01c81h                            ; 0f 8c b0 00
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov cx, word [bp-00ch]                    ; 8b 4e f4
     sal cx, 002h                              ; c1 e1 02
-    mov dx, word [bp-00eh]                    ; 8b 56 f2
-    jcxz 01aech                               ; e3 06
+    mov dx, word [bp-010h]                    ; 8b 56 f0
+    jcxz 01be5h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 01ae6h                               ; e2 fa
+    loop 01bdfh                               ; e2 fa
     and ax, strict word 0000fh                ; 25 0f 00
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 01afbh                         ; 77 07
+    jnbe short 01bf4h                         ; 77 07
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00030h                ; 83 c2 30
-    jmp short 01b02h                          ; eb 07
-    mov dx, ax                                ; 89 c2
-    sub dx, strict byte 0000ah                ; 83 ea 0a
-    add dx, di                                ; 01 fa
+    jmp short 01bfch                          ; eb 08
+    sub ax, strict word 0000ah                ; 2d 0a 00
+    mov dx, word [bp-00eh]                    ; 8b 56 f2
+    add dx, ax                                ; 01 c2
     xor dh, dh                                ; 30 f6
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 017c5h                               ; e8 bb fc
-    dec bx                                    ; 4b
-    jmp short 01ad3h                          ; eb c6
+    call 017c5h                               ; e8 c1 fb
+    dec word [bp-00ch]                        ; ff 4e f4
+    jmp short 01bc9h                          ; eb c0
     cmp dl, 064h                              ; 80 fa 64
-    jne short 01b2fh                          ; 75 1d
-    test byte [bp-00bh], 080h                 ; f6 46 f5 80
-    je short 01b21h                           ; 74 09
-    mov dx, ax                                ; 89 c2
+    jne short 01c2dh                          ; 75 1f
+    test byte [bp-011h], 080h                 ; f6 46 ef 80
+    je short 01c1eh                           ; 74 0a
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     neg dx                                    ; f7 da
     mov cx, strict word 00001h                ; b9 01 00
-    jmp short 01b27h                          ; eb 06
+    jmp short 01c25h                          ; eb 07
     xor cx, cx                                ; 31 c9
-    mov bx, si                                ; 89 f3
-    mov dx, ax                                ; 89 c2
+    mov bx, di                                ; 89 fb
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01800h                               ; e8 d3 fc
-    jmp short 01b7fh                          ; eb 50
+    call 01800h                               ; e8 d5 fb
+    jmp short 01c81h                          ; eb 54
     cmp dl, 073h                              ; 80 fa 73
-    jne short 01b40h                          ; 75 0c
+    jne short 01c3fh                          ; 75 0d
     mov cx, ds                                ; 8c d9
+    mov bx, word [bp-012h]                    ; 8b 5e ee
+    mov ax, word [bp+004h]                    ; 8b 46 04
+    call 01931h                               ; e8 f4 fc
+    jmp short 01c81h                          ; eb 42
+    cmp dl, 053h                              ; 80 fa 53
+    jne short 01c65h                          ; 75 21
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov word [bp-010h], ax                    ; 89 46 f0
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov word [bp-014h], ax                    ; 89 46 ec
+    add word [bp-016h], strict byte 00002h    ; 83 46 ea 02
+    les bx, [bp-016h]                         ; c4 5e ea
+    mov ax, word [es:bx-002h]                 ; 26 8b 47 fe
+    mov word [bp-012h], ax                    ; 89 46 ee
     mov bx, ax                                ; 89 c3
+    mov cx, word [bp-010h]                    ; 8b 4e f0
+    jmp short 01c37h                          ; eb d2
+    cmp dl, 063h                              ; 80 fa 63
+    jne short 01c76h                          ; 75 0c
+    movzx dx, byte [bp-012h]                  ; 0f b6 56 ee
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01931h                               ; e8 f3 fd
-    jmp short 01b7fh                          ; eb 3f
-    cmp dl, 053h                              ; 80 fa 53
-    jne short 01b63h                          ; 75 1e
-    mov word [bp-00eh], ax                    ; 89 46 f2
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov word [bp-010h], ax                    ; 89 46 f0
-    add word [bp-012h], strict byte 00002h    ; 83 46 ee 02
-    les bx, [bp-012h]                         ; c4 5e ee
-    mov ax, word [es:bx-002h]                 ; 26 8b 47 fe
-    mov word [bp-00ch], ax                    ; 89 46 f4
-    mov bx, ax                                ; 89 c3
-    mov cx, word [bp-00eh]                    ; 8b 4e f2
-    jmp short 01b38h                          ; eb d5
-    cmp dl, 063h                              ; 80 fa 63
-    jne short 01b74h                          ; 75 0c
-    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
-    mov ax, word [bp+004h]                    ; 8b 46 04
-    call 017c5h                               ; e8 53 fc
-    jmp short 01b7fh                          ; eb 0b
-    push 000e6h                               ; 68 e6 00
+    call 017c5h                               ; e8 51 fb
+    jmp short 01c81h                          ; eb 0b
+    push 00107h                               ; 68 07 01
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 f6 fd
+    call 01972h                               ; e8 f4 fc
     add sp, strict byte 00004h                ; 83 c4 04
-    xor cx, cx                                ; 31 c9
-    jmp short 01b8bh                          ; eb 08
+    xor bx, bx                                ; 31 db
+    jmp short 01c8dh                          ; eb 08
     xor dh, dh                                ; 30 f6
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 017c5h                               ; e8 3a fc
+    call 017c5h                               ; e8 38 fb
     inc word [bp+006h]                        ; ff 46 06
-    jmp near 019a0h                           ; e9 0f fe
+    jmp near 019a0h                           ; e9 0d fd
     xor ax, ax                                ; 31 c0
-    mov word [bp-012h], ax                    ; 89 46 ee
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-014h], ax                    ; 89 46 ec
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    je short 01ba3h                           ; 74 04
+    je short 01ca5h                           ; 74 04
     cli                                       ; fa
     hlt                                       ; f4
-    jmp short 01ba0h                          ; eb fd
+    jmp short 01ca2h                          ; eb fd
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -1762,5 +1843,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_ata_init:                                   ; 0xf1bad LB 0xc4
+_ata_init:                                   ; 0xf1caf LB 0xcd
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1768,37 +1849,35 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b2 fa
+    call 0166ch                               ; e8 b0 f9
     mov si, 00122h                            ; be 22 01
     mov dx, ax                                ; 89 c2
     xor al, al                                ; 30 c0
-    jmp short 01bc7h                          ; eb 04
+    jmp short 01cc9h                          ; eb 04
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 01bebh                          ; 73 24
+    jnc short 01cedh                          ; 73 24
     movzx bx, al                              ; 0f b6 d8
     imul bx, bx, strict byte 00006h           ; 6b db 06
     mov es, dx                                ; 8e c2
     add bx, si                                ; 01 f3
-    mov byte [es:bx+001c0h], 000h             ; 26 c6 87 c0 01 00
-    db  066h, 026h, 0c7h, 087h, 0c2h, 001h, 000h, 000h, 000h, 000h
-    ; mov dword [es:bx+001c2h], strict dword 000000000h ; 66 26 c7 87 c2 01 00 00 00 00
-    mov byte [es:bx+001c1h], 000h             ; 26 c6 87 c1 01 00
+    mov byte [es:bx+00204h], 000h             ; 26 c6 87 04 02 00
+    db  066h, 026h, 0c7h, 087h, 006h, 002h, 000h, 000h, 000h, 000h
+    ; mov dword [es:bx+00206h], strict dword 000000000h ; 66 26 c7 87 06 02 00 00 00 00
+    mov byte [es:bx+00205h], 000h             ; 26 c6 87 05 02 00
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    jmp short 01bc3h                          ; eb d8
+    jmp short 01cc5h                          ; eb d8
     xor al, al                                ; 30 c0
-    jmp short 01bf3h                          ; eb 04
+    jmp short 01cf5h                          ; eb 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jnc short 01c3eh                          ; 73 4b
+    jnc short 01d49h                          ; 73 54
     movzx bx, al                              ; 0f b6 d8
-    imul bx, bx, strict byte 00018h           ; 6b db 18
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
     mov es, dx                                ; 8e c2
     add bx, si                                ; 01 f3
-    db  066h, 026h, 0c7h, 047h, 01eh, 000h, 000h, 000h, 000h
-    ; mov dword [es:bx+01eh], strict dword 000000000h ; 66 26 c7 47 1e 00 00 00 00
-    mov byte [es:bx+022h], 000h               ; 26 c6 47 22 00
-    mov word [es:bx+024h], 00200h             ; 26 c7 47 24 00 02
-    mov byte [es:bx+023h], 000h               ; 26 c6 47 23 00
-    db  066h, 026h, 0c7h, 047h, 026h, 000h, 000h, 000h, 000h
-    ; mov dword [es:bx+026h], strict dword 000000000h ; 66 26 c7 47 26 00 00 00 00
+    db  066h, 026h, 0c7h, 047h, 022h, 000h, 000h, 000h, 000h
+    ; mov dword [es:bx+022h], strict dword 000000000h ; 66 26 c7 47 22 00 00 00 00
+    mov byte [es:bx+026h], 000h               ; 26 c6 47 26 00
+    mov word [es:bx+028h], 00200h             ; 26 c7 47 28 00 02
+    mov byte [es:bx+027h], 000h               ; 26 c6 47 27 00
     db  066h, 026h, 0c7h, 047h, 02ah, 000h, 000h, 000h, 000h
     ; mov dword [es:bx+02ah], strict dword 000000000h ; 66 26 c7 47 2a 00 00 00 00
@@ -1807,27 +1886,31 @@
     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
+    db  066h, 026h, 0c7h, 047h, 03ah, 000h, 000h, 000h, 000h
+    ; mov dword [es:bx+03ah], strict dword 000000000h ; 66 26 c7 47 3a 00 00 00 00
+    db  066h, 026h, 0c7h, 047h, 036h, 000h, 000h, 000h, 000h
+    ; mov dword [es:bx+036h], strict dword 000000000h ; 66 26 c7 47 36 00 00 00 00
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    jmp short 01befh                          ; eb b1
+    jmp short 01cf1h                          ; eb a8
     xor al, al                                ; 30 c0
-    jmp short 01c46h                          ; eb 04
+    jmp short 01d51h                          ; eb 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jnc short 01c5dh                          ; 73 17
+    jnc short 01d68h                          ; 73 17
     movzx bx, al                              ; 0f b6 d8
     mov es, dx                                ; 8e c2
     add bx, si                                ; 01 f3
-    mov byte [es:bx+0019fh], 010h             ; 26 c6 87 9f 01 10
-    mov byte [es:bx+001b0h], 010h             ; 26 c6 87 b0 01 10
+    mov byte [es:bx+001e3h], 010h             ; 26 c6 87 e3 01 10
+    mov byte [es:bx+001f4h], 010h             ; 26 c6 87 f4 01 10
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    jmp short 01c42h                          ; eb e5
+    jmp short 01d4dh                          ; eb e5
     mov es, dx                                ; 8e c2
-    mov byte [es:si+0019eh], 000h             ; 26 c6 84 9e 01 00
-    mov byte [es:si+001afh], 000h             ; 26 c6 84 af 01 00
+    mov byte [es:si+001e2h], 000h             ; 26 c6 84 e2 01 00
+    mov byte [es:si+001f3h], 000h             ; 26 c6 84 f3 01 00
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-ata_reset_:                                  ; 0xf1c71 LB 0xde
+ata_reset_:                                  ; 0xf1d7c LB 0xde
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1842,5 +1925,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 e7 f9
+    call 0166ch                               ; e8 dc f8
     mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
     mov di, ax                                ; 89 c7
@@ -1854,6 +1937,6 @@
     mov es, ax                                ; 8e c0
     add bx, 00122h                            ; 81 c3 22 01
-    mov cx, word [es:bx+001c2h]               ; 26 8b 8f c2 01
-    mov si, word [es:bx+001c4h]               ; 26 8b b7 c4 01
+    mov cx, word [es:bx+00206h]               ; 26 8b 8f 06 02
+    mov si, word [es:bx+00208h]               ; 26 8b b7 08 02
     lea dx, [si+006h]                         ; 8d 54 06
     mov AL, strict byte 00eh                  ; b0 0e
@@ -1862,5 +1945,5 @@
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 01cc9h                          ; 76 0c
+    jbe short 01dd4h                          ; 76 0c
     mov dx, cx                                ; 89 ca
     add dx, strict byte 00007h                ; 83 c2 07
@@ -1869,17 +1952,17 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 01cb8h                           ; 74 ef
+    je short 01dc3h                           ; 74 ef
     lea dx, [si+006h]                         ; 8d 54 06
     mov AL, strict byte 00ah                  ; b0 0a
     out DX, AL                                ; ee
-    imul bx, word [bp-010h], strict byte 00018h ; 6b 5e f0 18
+    imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c
     mov es, di                                ; 8e c7
     add bx, word [bp-00eh]                    ; 03 5e f2
-    cmp byte [es:bx+01eh], 000h               ; 26 80 7f 1e 00
-    je short 01d2bh                           ; 74 4c
+    cmp byte [es:bx+022h], 000h               ; 26 80 7f 22 00
+    je short 01e36h                           ; 74 4c
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 01ceah                           ; 74 05
+    je short 01df5h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 01cedh                          ; eb 03
+    jmp short 01df8h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     mov dx, cx                                ; 89 ca
@@ -1899,11 +1982,11 @@
     ; sub ah, ah                                ; 2a e4
     cmp bl, 001h                              ; 80 fb 01
-    jne short 01d2bh                          ; 75 22
+    jne short 01e36h                          ; 75 22
     cmp al, bl                                ; 38 d8
-    jne short 01d2bh                          ; 75 1e
+    jne short 01e36h                          ; 75 1e
     mov bx, strict word 0ffffh                ; bb ff ff
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 01d2bh                          ; 76 16
+    jbe short 01e36h                          ; 76 16
     mov dx, cx                                ; 89 ca
     add dx, strict byte 00007h                ; 83 c2 07
@@ -1912,14 +1995,14 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 01d2bh                           ; 74 0a
+    je short 01e36h                           ; 74 0a
     mov ax, strict word 0ffffh                ; b8 ff ff
     dec ax                                    ; 48
     test ax, ax                               ; 85 c0
-    jnbe short 01d24h                         ; 77 fb
-    jmp short 01d10h                          ; eb e5
+    jnbe short 01e2fh                         ; 77 fb
+    jmp short 01e1bh                          ; eb e5
     mov bx, strict word 00010h                ; bb 10 00
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 01d3fh                          ; 76 0c
+    jbe short 01e4ah                          ; 76 0c
     mov dx, cx                                ; 89 ca
     add dx, strict byte 00007h                ; 83 c2 07
@@ -1928,5 +2011,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 01d2eh                           ; 74 ef
+    je short 01e39h                           ; 74 ef
     lea dx, [si+006h]                         ; 8d 54 06
     mov AL, strict byte 008h                  ; b0 08
@@ -1940,157 +2023,208 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ata_cmd_data_in_:                            ; 0xf1d4f LB 0x258
+ata_cmd_data_in_:                            ; 0xf1e5a LB 0x2e2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, strict byte 0001ch                ; 83 ec 1c
-    mov si, ax                                ; 89 c6
-    mov word [bp-00ah], dx                    ; 89 56 f6
-    mov word [bp-016h], bx                    ; 89 5e ea
-    mov word [bp-014h], cx                    ; 89 4e ec
+    sub sp, strict byte 00012h                ; 83 ec 12
+    push ax                                   ; 50
+    push dx                                   ; 52
+    push bx                                   ; 53
+    push cx                                   ; 51
     mov es, dx                                ; 8e c2
-    movzx ax, byte [es:si+008h]               ; 26 0f b6 44 08
-    mov dx, ax                                ; 89 c2
-    shr dx, 1                                 ; d1 ea
-    mov dh, al                                ; 88 c6
-    and dh, 001h                              ; 80 e6 01
-    mov byte [bp-008h], dh                    ; 88 76 f8
-    movzx di, dl                              ; 0f b6 fa
-    imul di, di, strict byte 00006h           ; 6b ff 06
-    add di, si                                ; 01 f7
-    mov bx, word [es:di+001c2h]               ; 26 8b 9d c2 01
-    mov dx, word [es:di+001c4h]               ; 26 8b 95 c4 01
-    mov word [bp-01ch], dx                    ; 89 56 e4
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov di, si                                ; 89 f7
+    mov bx, ax                                ; 89 c3
+    mov al, byte [es:bx+00ch]                 ; 26 8a 47 0c
+    mov byte [bp-00ah], al                    ; 88 46 f6
+    movzx bx, al                              ; 0f b6 d8
+    mov ax, bx                                ; 89 d8
+    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 di, word [bp-018h]                    ; 8b 7e e8
     add di, ax                                ; 01 c7
-    mov al, byte [es:di+022h]                 ; 26 8a 45 22
-    mov byte [bp-006h], al                    ; 88 46 fa
-    mov ax, word [es:di+024h]                 ; 26 8b 45 24
+    mov ax, word [es:di+00206h]               ; 26 8b 85 06 02
     mov word [bp-00ch], ax                    ; 89 46 f4
+    mov ax, word [es:di+00208h]               ; 26 8b 85 08 02
+    mov word [bp-010h], ax                    ; 89 46 f0
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
+    mov di, word [bp-018h]                    ; 8b 7e e8
+    add di, bx                                ; 01 df
+    mov al, byte [es:di+026h]                 ; 26 8a 45 26
+    mov byte [bp-008h], al                    ; 88 46 f8
+    mov ax, word [es:di+028h]                 ; 26 8b 45 28
+    mov word [bp-00eh], ax                    ; 89 46 f2
     test ax, ax                               ; 85 c0
-    jne short 01db7h                          ; 75 14
-    cmp byte [bp-006h], 001h                  ; 80 7e fa 01
-    jne short 01db0h                          ; 75 07
-    mov word [bp-00ch], 04000h                ; c7 46 f4 00 40
-    jmp short 01dc6h                          ; eb 16
-    mov word [bp-00ch], 08000h                ; c7 46 f4 00 80
-    jmp short 01dc6h                          ; eb 0f
-    cmp byte [bp-006h], 001h                  ; 80 7e fa 01
-    jne short 01dc3h                          ; 75 06
-    shr word [bp-00ch], 002h                  ; c1 6e f4 02
-    jmp short 01dc6h                          ; eb 03
-    shr word [bp-00ch], 1                     ; d1 6e f4
-    lea dx, [bx+007h]                         ; 8d 57 07
+    jne short 01ec1h                          ; 75 14
+    cmp byte [bp-008h], 001h                  ; 80 7e f8 01
+    jne short 01ebah                          ; 75 07
+    mov word [bp-00eh], 04000h                ; c7 46 f2 00 40
+    jmp short 01ed0h                          ; eb 16
+    mov word [bp-00eh], 08000h                ; c7 46 f2 00 80
+    jmp short 01ed0h                          ; eb 0f
+    cmp byte [bp-008h], 001h                  ; 80 7e f8 01
+    jne short 01ecdh                          ; 75 06
+    shr word [bp-00eh], 002h                  ; c1 6e f2 02
+    jmp short 01ed0h                          ; eb 03
+    shr word [bp-00eh], 1                     ; d1 6e f2
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00007h                ; 83 c2 07
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 01ddfh                           ; 74 0f
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    je short 01eech                           ; 74 0f
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 01f9eh                           ; e9 bf 01
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov ax, word [es:si]                      ; 26 8b 04
-    mov word [bp-020h], ax                    ; 89 46 e0
-    mov ax, word [es:si+002h]                 ; 26 8b 44 02
-    mov word [bp-01eh], ax                    ; 89 46 e2
-    mov di, word [es:si+004h]                 ; 26 8b 7c 04
+    jmp near 02133h                           ; e9 47 02
+    mov es, [bp-01ah]                         ; 8e 46 e6
+    mov di, word [bp-018h]                    ; 8b 7e e8
+    mov di, word [es:di+008h]                 ; 26 8b 7d 08
+    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov ax, word [es:bx+00ah]                 ; 26 8b 47 0a
+    mov word [bp-012h], ax                    ; 89 46 ee
+    mov al, byte [es:bx+016h]                 ; 26 8a 47 16
+    mov byte [bp-006h], al                    ; 88 46 fa
+    mov ax, word [es:bx+012h]                 ; 26 8b 47 12
+    mov word [bp-014h], ax                    ; 89 46 ec
+    mov bl, byte [es:bx+014h]                 ; 26 8a 5f 14
+    mov al, byte [bp-006h]                    ; 8a 46 fa
+    test al, al                               ; 84 c0
+    jne near 01ffeh                           ; 0f 85 e3 00
+    xor bx, bx                                ; 31 db
+    xor dx, dx                                ; 31 d2
+    xor ah, ah                                ; 30 e4
+    mov word [bp-016h], ax                    ; 89 46 ea
+    mov si, word [bp-018h]                    ; 8b 76 e8
+    mov cx, word [es:si]                      ; 26 8b 0c
+    add cx, word [bp-01eh]                    ; 03 4e e2
+    adc bx, word [es:si+002h]                 ; 26 13 5c 02
+    adc dx, word [es:si+004h]                 ; 26 13 54 04
     mov ax, word [es:si+006h]                 ; 26 8b 44 06
-    mov word [bp-00eh], ax                    ; 89 46 f2
-    mov ax, word [es:si+012h]                 ; 26 8b 44 12
-    mov word [bp-010h], ax                    ; 89 46 f0
-    mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
-    mov word [bp-012h], ax                    ; 89 46 ee
-    mov ax, word [es:si+010h]                 ; 26 8b 44 10
-    mov word [bp-018h], ax                    ; 89 46 e8
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    adc ax, word [bp-016h]                    ; 13 46 ea
     test ax, ax                               ; 85 c0
-    jne short 01e7dh                          ; 75 67
-    mov dx, word [bp-020h]                    ; 8b 56 e0
-    add dx, word [bp-014h]                    ; 03 56 ec
-    adc ax, word [bp-01eh]                    ; 13 46 e2
-    cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 01e26h                         ; 77 02
-    jne short 01e51h                          ; 75 2b
+    jnbe short 01f50h                         ; 77 10
+    jne short 01fb4h                          ; 75 72
+    test dx, dx                               ; 85 d2
+    jnbe short 01f50h                         ; 77 0a
+    jne short 01fb4h                          ; 75 6c
+    cmp bx, 01000h                            ; 81 fb 00 10
+    jnbe short 01f50h                         ; 77 02
+    jne short 01fb4h                          ; 75 64
+    mov bx, si                                ; 89 f3
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00018h                ; be 18 00
+    call 09d5ah                               ; e8 f3 7d
+    xor dh, dh                                ; 30 f6
+    mov word [bp-016h], dx                    ; 89 56 ea
+    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-018h]                    ; 8b 76 e8
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00020h                ; be 20 00
+    call 09d5ah                               ; e8 d3 7d
+    mov bx, dx                                ; 89 d3
     mov ax, word [bp-01eh]                    ; 8b 46 e2
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
-    mov word [bp-010h], ax                    ; 89 46 f0
-    mov ax, word [bp-014h]                    ; 8b 46 ec
-    xor al, al                                ; 30 c0
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    inc dx                                    ; 42
+    inc dx                                    ; 42
+    out DX, AL                                ; ee
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00003h                ; 83 c2 03
+    mov al, byte [bp-016h]                    ; 8a 46 ea
+    out DX, AL                                ; ee
+    mov ax, bx                                ; 89 d8
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00004h                ; 83 c2 04
+    out DX, AL                                ; ee
     shr ax, 008h                              ; c1 e8 08
-    lea dx, [bx+002h]                         ; 8d 57 02
-    out DX, AL                                ; ee
-    lea dx, [bx+003h]                         ; 8d 57 03
-    mov al, byte [bp-010h]                    ; 8a 46 f0
-    out DX, AL                                ; ee
-    lea dx, [bx+004h]                         ; 8d 57 04
-    xor al, al                                ; 30 c0
-    out DX, AL                                ; ee
-    lea dx, [bx+005h]                         ; 8d 57 05
-    out DX, AL                                ; ee
-    mov byte [bp-01dh], al                    ; 88 46 e3
-    mov ax, word [bp-020h]                    ; 8b 46 e0
-    xor ah, ah                                ; 30 e4
-    mov word [bp-010h], ax                    ; 89 46 f0
-    mov cx, strict word 00008h                ; b9 08 00
-    shr word [bp-01eh], 1                     ; d1 6e e2
-    rcr word [bp-020h], 1                     ; d1 5e e0
-    loop 01e5ch                               ; e2 f8
-    mov ax, word [bp-020h]                    ; 8b 46 e0
-    mov word [bp-012h], ax                    ; 89 46 ee
-    mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [bp-020h], ax                    ; 89 46 e0
-    mov word [bp-01eh], strict word 00000h    ; c7 46 e2 00 00
-    and ax, strict word 0000fh                ; 25 0f 00
-    or AL, strict byte 040h                   ; 0c 40
-    mov word [bp-018h], ax                    ; 89 46 e8
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00005h                ; 83 c2 05
+    out DX, AL                                ; ee
+    mov es, [bp-01ah]                         ; 8e 46 e6
+    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov ax, word [es:bx]                      ; 26 8b 07
+    mov byte [bp-006h], al                    ; 88 46 fa
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-018h]                    ; 8b 76 e8
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00008h                ; be 08 00
+    call 09d5ah                               ; e8 82 7d
+    mov word [bp-014h], dx                    ; 89 56 ec
+    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-018h]                    ; 8b 76 e8
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00018h                ; be 18 00
+    call 09d5ah                               ; e8 64 7d
+    and dx, strict byte 0000fh                ; 83 e2 0f
+    or dl, 040h                               ; 80 ca 40
+    mov bx, dx                                ; 89 d3
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 00ah                  ; b0 0a
     out DX, AL                                ; ee
-    lea dx, [bx+001h]                         ; 8d 57 01
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    inc dx                                    ; 42
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
-    lea dx, [bx+002h]                         ; 8d 57 02
-    mov al, byte [bp-014h]                    ; 8a 46 ec
-    out DX, AL                                ; ee
-    lea dx, [bx+003h]                         ; 8d 57 03
-    mov al, byte [bp-010h]                    ; 8a 46 f0
-    out DX, AL                                ; ee
-    mov ax, word [bp-012h]                    ; 8b 46 ee
-    lea dx, [bx+004h]                         ; 8d 57 04
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    inc dx                                    ; 42
+    inc dx                                    ; 42
+    mov al, byte [bp-01eh]                    ; 8a 46 e2
+    out DX, AL                                ; ee
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00003h                ; 83 c2 03
+    mov al, byte [bp-006h]                    ; 8a 46 fa
+    out DX, AL                                ; ee
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00004h                ; 83 c2 04
     out DX, AL                                ; ee
     shr ax, 008h                              ; c1 e8 08
-    lea dx, [bx+005h]                         ; 8d 57 05
-    out DX, AL                                ; ee
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 01eb3h                           ; 74 05
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00005h                ; 83 c2 05
+    out DX, AL                                ; ee
+    test byte [bp-00ah], 001h                 ; f6 46 f6 01
+    je short 02040h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 01eb6h                          ; eb 03
+    jmp short 02043h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
-    movzx dx, byte [bp-018h]                  ; 0f b6 56 e8
+    movzx dx, bl                              ; 0f b6 d3
     or ax, dx                                 ; 09 d0
-    lea dx, [bx+006h]                         ; 8d 57 06
-    out DX, AL                                ; ee
-    lea dx, [bx+007h]                         ; 8d 57 07
-    mov al, byte [bp-016h]                    ; 8a 46 ea
-    out DX, AL                                ; ee
-    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00006h                ; 83 c2 06
+    out DX, AL                                ; ee
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00007h                ; 83 c2 07
+    mov al, byte [bp-01ch]                    ; 8a 46 e4
+    out DX, AL                                ; ee
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     cmp ax, 000c4h                            ; 3d c4 00
-    je short 01ed4h                           ; 74 05
+    je short 02066h                           ; 74 05
     cmp ax, strict word 00029h                ; 3d 29 00
-    jne short 01ee1h                          ; 75 0d
-    mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov word [bp-01ah], ax                    ; 89 46 e6
-    mov word [bp-014h], strict word 00001h    ; c7 46 ec 01 00
-    jmp short 01ee6h                          ; eb 05
-    mov word [bp-01ah], strict word 00001h    ; c7 46 e6 01 00
-    lea dx, [bx+007h]                         ; 8d 57 07
+    jne short 02070h                          ; 75 0a
+    mov bx, word [bp-01eh]                    ; 8b 5e e2
+    mov word [bp-01eh], strict word 00001h    ; c7 46 e2 01 00
+    jmp short 02073h                          ; eb 03
+    mov bx, strict word 00001h                ; bb 01 00
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00007h                ; 83 c2 07
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -2098,45 +2232,46 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 01ee6h                          ; 75 f4
+    jne short 02073h                          ; 75 f1
     test AL, strict byte 001h                 ; a8 01
-    je short 01f05h                           ; 74 0f
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    je short 02095h                           ; 74 0f
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 01f9eh                           ; e9 99 00
+    jmp near 02133h                           ; e9 9e 00
     test dl, 008h                             ; f6 c2 08
-    jne short 01f19h                          ; 75 0f
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    jne short 020a9h                          ; 75 0f
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 01f9eh                           ; e9 85 00
+    jmp near 02133h                           ; e9 8a 00
     sti                                       ; fb
     cmp di, 0f800h                            ; 81 ff 00 f8
-    jc short 01f2dh                           ; 72 0d
+    jc short 020bdh                           ; 72 0d
     sub di, 00800h                            ; 81 ef 00 08
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov ax, word [bp-012h]                    ; 8b 46 ee
     add ax, 00080h                            ; 05 80 00
-    mov word [bp-00eh], ax                    ; 89 46 f2
-    cmp byte [bp-006h], 001h                  ; 80 7e fa 01
-    jne short 01f40h                          ; 75 0d
-    mov dx, bx                                ; 89 da
-    mov cx, word [bp-00ch]                    ; 8b 4e f4
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    mov word [bp-012h], ax                    ; 89 46 ee
+    cmp byte [bp-008h], 001h                  ; 80 7e f8 01
+    jne short 020d1h                          ; 75 0e
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    mov cx, word [bp-00eh]                    ; 8b 4e f2
+    mov es, [bp-012h]                         ; 8e 46 ee
     db  0f3h, 066h, 06dh
     ; rep insd                                  ; f3 66 6d
-    jmp short 01f4ah                          ; eb 0a
-    mov dx, bx                                ; 89 da
-    mov cx, word [bp-00ch]                    ; 8b 4e f4
-    mov es, [bp-00eh]                         ; 8e 46 f2
+    jmp short 020dch                          ; eb 0b
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    mov cx, word [bp-00eh]                    ; 8b 4e f2
+    mov es, [bp-012h]                         ; 8e 46 ee
     rep insw                                  ; f3 6d
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    add word [es:si+014h], ax                 ; 26 01 44 14
-    dec word [bp-014h]                        ; ff 4e ec
-    lea dx, [bx+007h]                         ; 8d 57 07
+    mov es, [bp-01ah]                         ; 8e 46 e6
+    mov si, word [bp-018h]                    ; 8b 76 e8
+    add word [es:si+018h], bx                 ; 26 01 5c 18
+    dec word [bp-01eh]                        ; ff 4e e2
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    add dx, strict byte 00007h                ; 83 c2 07
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -2144,27 +2279,27 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 01f57h                          ; 75 f4
-    cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    jne short 01f7dh                          ; 75 14
+    jne short 020e9h                          ; 75 f1
+    cmp word [bp-01eh], strict byte 00000h    ; 83 7e e2 00
+    jne short 02112h                          ; 75 14
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 01f93h                           ; 74 24
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    je short 02128h                           ; 74 24
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00004h                ; ba 04 00
-    jmp short 01f9eh                          ; eb 21
+    jmp short 02133h                          ; eb 21
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 01f1ah                           ; 74 95
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    je short 020aah                           ; 74 90
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00005h                ; ba 05 00
-    jmp short 01f9eh                          ; eb 0b
-    mov dx, word [bp-01ch]                    ; 8b 56 e4
+    jmp short 02133h                          ; eb 0b
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
@@ -2177,31 +2312,31 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_ata_detect:                                 ; 0xf1fa7 LB 0x617
+_ata_detect:                                 ; 0xf213c LB 0x65c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, 0025ch                            ; 81 ec 5c 02
+    sub sp, 00260h                            ; 81 ec 60 02
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b3 f6
-    mov word [bp-024h], ax                    ; 89 46 dc
+    call 0166ch                               ; e8 1e f5
+    mov word [bp-020h], ax                    ; 89 46 e0
     mov di, 00122h                            ; bf 22 01
     mov es, ax                                ; 8e c0
-    mov word [bp-028h], di                    ; 89 7e d8
-    mov word [bp-026h], ax                    ; 89 46 da
-    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
+    mov word [bp-022h], di                    ; 89 7e de
+    mov word [bp-034h], ax                    ; 89 46 cc
+    mov byte [es:di+00204h], 000h             ; 26 c6 85 04 02 00
+    db  066h, 026h, 0c7h, 085h, 006h, 002h, 0f0h, 001h, 0f0h, 003h
+    ; mov dword [es:di+00206h], strict dword 003f001f0h ; 66 26 c7 85 06 02 f0 01 f0 03
+    mov byte [es:di+00205h], 00eh             ; 26 c6 85 05 02 0e
+    mov byte [es:di+0020ah], 000h             ; 26 c6 85 0a 02 00
+    db  066h, 026h, 0c7h, 085h, 00ch, 002h, 070h, 001h, 070h, 003h
+    ; mov dword [es:di+0020ch], strict dword 003700170h ; 66 26 c7 85 0c 02 70 01 70 03
+    mov byte [es:di+0020bh], 00fh             ; 26 c6 85 0b 02 0f
     xor al, al                                ; 30 c0
-    mov byte [bp-00ah], al                    ; 88 46 f6
     mov byte [bp-006h], al                    ; 88 46 fa
-    mov byte [bp-00eh], al                    ; 88 46 f2
-    jmp near 02549h                           ; e9 48 05
+    mov byte [bp-010h], al                    ; 88 46 f0
+    mov byte [bp-016h], al                    ; 88 46 ea
+    jmp near 0271ch                           ; e9 86 05
     mov ax, 000a0h                            ; b8 a0 00
     lea dx, [si+006h]                         ; 8d 54 06
@@ -2235,18 +2370,19 @@
     ; sub ah, ah                                ; 2a e4
     cmp cl, 055h                              ; 80 f9 55
-    jne near 020fbh                           ; 0f 85 c0 00
+    jne near 0229ah                           ; 0f 85 ca 00
     cmp AL, strict byte 0aah                  ; 3c aa
-    jne near 020fbh                           ; 0f 85 ba 00
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les bx, [bp-028h]                         ; c4 5e d8
+    jne near 0229ah                           ; 0f 85 c4 00
+    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov bx, word [bp-022h]                    ; 8b 5e de
     add bx, ax                                ; 01 c3
-    mov byte [es:bx+01eh], 001h               ; 26 c6 47 1e 01
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 01c71h                               ; e8 18 fc
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 02064h                           ; 74 05
+    mov byte [es:bx+022h], 001h               ; 26 c6 47 22 01
+    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    call 01d7ch                               ; e8 8b fb
+    cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
+    je short 021fch                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 02067h                          ; eb 03
+    jmp short 021ffh                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     lea dx, [si+006h]                         ; 8d 54 06
@@ -2262,7 +2398,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp bl, 001h                              ; 80 fb 01
-    jne near 020fbh                           ; 0f 85 7b 00
+    jne near 0229ah                           ; 0f 85 82 00
     cmp al, bl                                ; 38 d8
-    jne near 020fbh                           ; 0f 85 75 00
+    jne near 0229ah                           ; 0f 85 7c 00
     lea dx, [si+004h]                         ; 8d 54 04
     in AL, DX                                 ; ec
@@ -2270,5 +2406,5 @@
     ; sub ah, ah                                ; 2a e4
     mov bx, ax                                ; 89 c3
-    mov bh, al                                ; 88 c7
+    mov byte [bp-018h], al                    ; 88 46 e8
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
@@ -2276,5 +2412,5 @@
     ; sub ah, ah                                ; 2a e4
     mov cx, ax                                ; 89 c1
-    mov byte [bp-00ch], al                    ; 88 46 f4
+    mov bh, al                                ; 88 c7
     lea dx, [si+007h]                         ; 8d 54 07
     in AL, DX                                 ; ec
@@ -2282,109 +2418,119 @@
     ; sub ah, ah                                ; 2a e4
     cmp bl, 014h                              ; 80 fb 14
-    jne short 020beh                          ; 75 18
+    jne short 02259h                          ; 75 1b
     cmp cl, 0ebh                              ; 80 f9 eb
-    jne short 020beh                          ; 75 13
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les bx, [bp-028h]                         ; c4 5e d8
+    jne short 02259h                          ; 75 16
+    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov bx, word [bp-022h]                    ; 8b 5e de
     add bx, ax                                ; 01 c3
-    mov byte [es:bx+01eh], 003h               ; 26 c6 47 1e 03
-    jmp short 020fbh                          ; eb 3d
+    mov byte [es:bx+022h], 003h               ; 26 c6 47 22 03
+    jmp short 0229ah                          ; eb 41
+    cmp byte [bp-018h], 000h                  ; 80 7e e8 00
+    jne short 0227bh                          ; 75 1c
     test bh, bh                               ; 84 ff
-    jne short 020e0h                          ; 75 1e
-    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 020e0h                          ; 75 18
+    jne short 0227bh                          ; 75 18
     test al, al                               ; 84 c0
-    je short 020e0h                           ; 74 14
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
-    imul bx, bx, strict byte 00018h           ; 6b db 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    add bx, word [bp-028h]                    ; 03 5e d8
-    mov byte [es:bx+01eh], 002h               ; 26 c6 47 1e 02
-    jmp short 020fbh                          ; eb 1b
-    cmp bh, 0ffh                              ; 80 ff ff
-    jne short 020fbh                          ; 75 16
-    cmp bh, byte [bp-00ch]                    ; 3a 7e f4
-    jne short 020fbh                          ; 75 11
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les bx, [bp-028h]                         ; c4 5e d8
+    je short 0227bh                           ; 74 14
+    movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    add bx, word [bp-022h]                    ; 03 5e de
+    mov byte [es:bx+022h], 002h               ; 26 c6 47 22 02
+    jmp short 0229ah                          ; eb 1f
+    mov al, byte [bp-018h]                    ; 8a 46 e8
+    cmp AL, strict byte 0ffh                  ; 3c ff
+    jne short 0229ah                          ; 75 18
+    cmp bh, al                                ; 38 c7
+    jne short 0229ah                          ; 75 14
+    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov bx, word [bp-022h]                    ; 8b 5e de
     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 byte [es:bx+022h], 000h               ; 26 c6 47 22 00
+    mov dx, word [bp-024h]                    ; 8b 56 dc
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
-    imul si, si, strict byte 00018h           ; 6b f6 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    add si, word [bp-028h]                    ; 03 76 d8
-    mov al, byte [es:si+01eh]                 ; 26 8a 44 1e
-    mov byte [bp-010h], al                    ; 88 46 f0
+    movzx si, byte [bp-016h]                  ; 0f b6 76 ea
+    imul si, si, strict byte 0001ch           ; 6b f6 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    add si, word [bp-022h]                    ; 03 76 de
+    mov al, byte [es:si+022h]                 ; 26 8a 44 22
+    mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 002h                  ; 3c 02
-    jne near 02321h                           ; 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-00260h]                       ; 8d 96 a0 fd
-    mov bx, word [bp-028h]                    ; 8b 5e d8
-    mov word [es:bx+004h], dx                 ; 26 89 57 04
-    mov [es:bx+006h], ss                      ; 26 8c 57 06
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    mov byte [es:bx+008h], al                 ; 26 88 47 08
+    jne near 024e9h                           ; 0f 85 2c 02
+    mov byte [es:si+023h], 0ffh               ; 26 c6 44 23 ff
+    mov byte [es:si+026h], 000h               ; 26 c6 44 26 00
+    lea dx, [bp-00264h]                       ; 8d 96 9c fd
+    mov bx, word [bp-022h]                    ; 8b 5e de
+    mov word [es:bx+008h], dx                 ; 26 89 57 08
+    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
+    mov al, byte [bp-016h]                    ; 8a 46 ea
+    mov byte [es:bx+00ch], al                 ; 26 88 47 0c
     mov cx, strict word 00001h                ; b9 01 00
     mov bx, 000ech                            ; bb ec 00
-    mov ax, word [bp-028h]                    ; 8b 46 d8
+    mov ax, word [bp-022h]                    ; 8b 46 de
     mov dx, es                                ; 8c c2
-    call 01d4fh                               ; e8 03 fc
+    call 01e5ah                               ; e8 6f fb
     test ax, ax                               ; 85 c0
-    je short 0215bh                           ; 74 0b
-    push 00104h                               ; 68 04 01
+    je short 022fah                           ; 74 0b
+    push 00124h                               ; 68 24 01
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 1a f8
+    call 01972h                               ; e8 7b f6
     add sp, strict byte 00004h                ; 83 c4 04
-    test byte [bp-00260h], 080h               ; f6 86 a0 fd 80
+    test byte [bp-00264h], 080h               ; f6 86 9c fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
     mov byte [bp-014h], al                    ; 88 46 ec
-    cmp byte [bp-00200h], 000h                ; 80 be 00 fe 00
+    cmp byte [bp-00204h], 000h                ; 80 be fc fd 00
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov byte [bp-016h], al                    ; 88 46 ea
-    mov word [bp-022h], 00200h                ; c7 46 de 00 02
+    mov byte [bp-012h], al                    ; 88 46 ee
+    mov word [bp-02ah], 00200h                ; c7 46 d6 00 02
+    mov ax, word [bp-00262h]                  ; 8b 86 9e fd
+    mov word [bp-026h], ax                    ; 89 46 da
     mov ax, word [bp-0025eh]                  ; 8b 86 a2 fd
+    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov ax, word [bp-00258h]                  ; 8b 86 a8 fd
     mov word [bp-01ah], ax                    ; 89 46 e6
-    mov ax, word [bp-0025ah]                  ; 8b 86 a6 fd
-    mov word [bp-01ch], ax                    ; 89 46 e4
-    mov ax, word [bp-00254h]                  ; 8b 86 ac fd
+    mov si, word [bp-001ech]                  ; 8b b6 14 fe
+    mov ax, word [bp-001eah]                  ; 8b 86 16 fe
+    mov word [bp-02ch], ax                    ; 89 46 d4
+    xor ax, ax                                ; 31 c0
+    mov word [bp-028h], ax                    ; 89 46 d8
     mov word [bp-01eh], ax                    ; 89 46 e2
-    mov ax, word [bp-001e8h]                  ; 8b 86 18 fe
-    mov word [bp-020h], ax                    ; 89 46 e0
-    mov si, word [bp-001e6h]                  ; 8b b6 1a fe
-    cmp si, 00fffh                            ; 81 fe ff 0f
-    jne short 021b0h                          ; 75 10
-    cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 021b0h                          ; 75 0b
+    cmp word [bp-02ch], 00fffh                ; 81 7e d4 ff 0f
+    jne short 02366h                          ; 75 1e
+    cmp si, strict byte 0ffffh                ; 83 fe ff
+    jne short 02366h                          ; 75 19
+    mov ax, word [bp-00196h]                  ; 8b 86 6a fe
+    mov word [bp-01eh], ax                    ; 89 46 e2
     mov ax, word [bp-00198h]                  ; 8b 86 68 fe
-    mov word [bp-020h], ax                    ; 89 46 e0
-    mov si, word [bp-00196h]                  ; 8b b6 6a fe
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
+    mov word [bp-028h], ax                    ; 89 46 d8
+    mov ax, word [bp-0019ah]                  ; 8b 86 66 fe
+    mov word [bp-02ch], ax                    ; 89 46 d4
+    mov si, word [bp-0019ch]                  ; 8b b6 64 fe
+    mov al, byte [bp-016h]                    ; 8a 46 ea
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 021c3h                           ; 72 0c
-    jbe short 021cbh                          ; 76 12
+    jc short 02379h                           ; 72 0c
+    jbe short 02381h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 021d3h                           ; 74 16
+    je short 02389h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 021cfh                           ; 74 0e
-    jmp short 02210h                          ; eb 4d
+    je short 02385h                           ; 74 0e
+    jmp short 023c6h                          ; eb 4d
     test al, al                               ; 84 c0
-    jne short 02210h                          ; 75 49
+    jne short 023c6h                          ; 75 49
     mov BL, strict byte 01eh                  ; b3 1e
-    jmp short 021d5h                          ; eb 0a
+    jmp short 0238bh                          ; eb 0a
     mov BL, strict byte 026h                  ; b3 26
-    jmp short 021d5h                          ; eb 06
+    jmp short 0238bh                          ; eb 06
     mov BL, strict byte 067h                  ; b3 67
-    jmp short 021d5h                          ; eb 02
+    jmp short 0238bh                          ; eb 02
     mov BL, strict byte 070h                  ; b3 70
     mov al, bl                                ; 88 d8
@@ -2392,109 +2538,114 @@
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 ce f4
+    call 016ach                               ; e8 18 f3
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     movzx ax, bl                              ; 0f b6 c3
-    call 016ach                               ; e8 c1 f4
+    call 016ach                               ; e8 0b f3
     xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
-    mov word [bp-034h], ax                    ; 89 46 cc
+    mov word [bp-038h], ax                    ; 89 46 c8
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 b1 f4
+    call 016ach                               ; e8 fb f2
     xor ah, ah                                ; 30 e4
-    mov word [bp-036h], ax                    ; 89 46 ca
+    mov word [bp-03ah], ax                    ; 89 46 c6
     mov al, bl                                ; 88 d8
     add AL, strict byte 007h                  ; 04 07
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 a3 f4
+    call 016ach                               ; e8 ed f2
     xor ah, ah                                ; 30 e4
-    mov word [bp-032h], ax                    ; 89 46 ce
-    jmp short 0221dh                          ; eb 0d
-    mov bx, word [bp-020h]                    ; 8b 5e e0
-    mov cx, si                                ; 89 f1
+    mov word [bp-036h], ax                    ; 89 46 ca
+    jmp short 023d8h                          ; eb 12
+    push word [bp-01eh]                       ; ff 76 e2
+    push word [bp-028h]                       ; ff 76 d8
+    push word [bp-02ch]                       ; ff 76 d4
+    push si                                   ; 56
     mov dx, ss                                ; 8c d2
-    lea ax, [bp-036h]                         ; 8d 46 ca
-    call 055b6h                               ; e8 99 33
-    mov bx, 00da2h                            ; bb a2 0d
+    lea ax, [bp-03ah]                         ; 8d 46 c6
+    call 0588bh                               ; e8 b3 34
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 09 f7
-    mov ax, word [bp-032h]                    ; 8b 46 ce
-    push ax                                   ; 50
+    call 01931h                               ; e8 4e f5
     mov ax, word [bp-036h]                    ; 8b 46 ca
     push ax                                   ; 50
-    mov ax, word [bp-034h]                    ; 8b 46 cc
+    mov ax, word [bp-03ah]                    ; 8b 46 c6
     push ax                                   ; 50
-    push word [bp-01eh]                       ; ff 76 e2
-    push word [bp-01ch]                       ; ff 76 e4
-    push word [bp-01ah]                       ; ff 76 e6
+    mov ax, word [bp-038h]                    ; 8b 46 c8
+    push ax                                   ; 50
+    push dword [bp-01ch]                      ; 66 ff 76 e4
+    push word [bp-026h]                       ; ff 76 da
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    push ax                                   ; 50
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    movzx ax, byte [bp-018h]                  ; 0f b6 46 e8
-    push ax                                   ; 50
-    push 0012dh                               ; 68 2d 01
+    push 0014dh                               ; 68 4d 01
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 23 f7
+    call 01972h                               ; e8 6a f5
     add sp, strict byte 00014h                ; 83 c4 14
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les di, [bp-028h]                         ; c4 7e d8
-    add di, ax                                ; 01 c7
-    mov byte [es:di+01fh], 0ffh               ; 26 c6 45 1f ff
+    movzx di, byte [bp-016h]                  ; 0f b6 7e ea
+    imul di, di, strict byte 0001ch           ; 6b ff 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    add di, word [bp-022h]                    ; 03 7e de
+    mov byte [es:di+023h], 0ffh               ; 26 c6 45 23 ff
     mov al, byte [bp-014h]                    ; 8a 46 ec
-    mov byte [es:di+020h], al                 ; 26 88 45 20
-    mov al, byte [bp-016h]                    ; 8a 46 ea
-    mov byte [es:di+022h], al                 ; 26 88 45 22
-    mov ax, word [bp-022h]                    ; 8b 46 de
-    mov word [es:di+024h], ax                 ; 26 89 45 24
+    mov byte [es:di+024h], al                 ; 26 88 45 24
+    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov byte [es:di+026h], al                 ; 26 88 45 26
+    mov ax, word [bp-02ah]                    ; 8b 46 d6
+    mov word [es:di+028h], ax                 ; 26 89 45 28
     mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:di+02ch], ax                 ; 26 89 45 2c
+    mov word [es:di+030h], ax                 ; 26 89 45 30
+    mov ax, word [bp-026h]                    ; 8b 46 da
+    mov word [es:di+032h], ax                 ; 26 89 45 32
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov word [es:di+02eh], ax                 ; 26 89 45 2e
+    mov word [es:di+034h], ax                 ; 26 89 45 34
     mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [es:di+030h], ax                 ; 26 89 45 30
-    mov ax, word [bp-020h]                    ; 8b 46 e0
-    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
+    mov word [es:di+03ch], ax                 ; 26 89 45 3c
+    mov ax, word [bp-028h]                    ; 8b 46 d8
+    mov word [es:di+03ah], ax                 ; 26 89 45 3a
+    mov ax, word [bp-02ch]                    ; 8b 46 d4
+    mov word [es:di+038h], ax                 ; 26 89 45 38
+    mov word [es:di+036h], si                 ; 26 89 75 36
+    lea di, [di+02ah]                         ; 8d 7d 2a
     push DS                                   ; 1e
     push SS                                   ; 16
     pop DS                                    ; 1f
-    lea si, [bp-036h]                         ; 8d 76 ca
+    lea si, [bp-03ah]                         ; 8d 76 c6
     movsw                                     ; a5
     movsw                                     ; a5
     movsw                                     ; a5
     pop DS                                    ; 1f
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
+    mov al, byte [bp-016h]                    ; 8a 46 ea
     cmp AL, strict byte 002h                  ; 3c 02
-    jnc short 0230ch                          ; 73 60
+    jnc short 024d4h                          ; 73 60
     test al, al                               ; 84 c0
-    jne short 022b5h                          ; 75 05
+    jne short 0247dh                          ; 75 05
     mov di, strict word 0003dh                ; bf 3d 00
-    jmp short 022b8h                          ; eb 03
+    jmp short 02480h                          ; eb 03
     mov di, strict word 0004dh                ; bf 4d 00
-    mov dx, word [bp-024h]                    ; 8b 56 dc
-    mov ax, word [bp-034h]                    ; 8b 46 cc
+    mov dx, word [bp-020h]                    ; 8b 56 e0
+    mov ax, word [bp-038h]                    ; 8b 46 c8
     mov es, dx                                ; 8e c2
     mov word [es:di], ax                      ; 26 89 05
-    mov al, byte [bp-036h]                    ; 8a 46 ca
+    mov al, byte [bp-03ah]                    ; 8a 46 c6
     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-01eh]                    ; 8a 46 e2
+    mov al, byte [bp-01ah]                    ; 8a 46 e6
     mov byte [es:di+004h], al                 ; 26 88 45 04
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    mov ax, word [bp-026h]                    ; 8b 46 da
     mov word [es:di+009h], ax                 ; 26 89 45 09
     mov al, byte [bp-01ch]                    ; 8a 46 e4
     mov byte [es:di+00bh], al                 ; 26 88 45 0b
-    mov al, byte [bp-01eh]                    ; 8a 46 e2
+    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 022f6h                          ; eb 05
+    jmp short 024beh                          ; eb 05
     cmp ah, 00fh                              ; 80 fc 0f
-    jnc short 02304h                          ; 73 0e
+    jnc short 024cch                          ; 73 0e
     movzx bx, ah                              ; 0f b6 dc
     mov es, dx                                ; 8e c2
@@ -2503,212 +2654,214 @@
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 022f1h                          ; eb ed
+    jmp short 024b9h                          ; eb ed
     neg al                                    ; f6 d8
     mov es, dx                                ; 8e c2
     mov byte [es:di+00fh], al                 ; 26 88 45 0f
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
-    mov es, [bp-026h]                         ; 8e 46 da
-    add bx, word [bp-028h]                    ; 03 5e d8
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    mov byte [es:bx+0019fh], al               ; 26 88 87 9f 01
-    inc byte [bp-006h]                        ; fe 46 fa
-    cmp byte [bp-010h], 003h                  ; 80 7e f0 03
-    jne near 023c1h                           ; 0f 85 98 00
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les bx, [bp-028h]                         ; c4 5e d8
+    movzx bx, byte [bp-010h]                  ; 0f b6 5e f0
+    mov es, [bp-034h]                         ; 8e 46 cc
+    add bx, word [bp-022h]                    ; 03 5e de
+    mov al, byte [bp-016h]                    ; 8a 46 ea
+    mov byte [es:bx+001e3h], al               ; 26 88 87 e3 01
+    inc byte [bp-010h]                        ; fe 46 f0
+    cmp byte [bp-00ah], 003h                  ; 80 7e f6 03
+    jne near 0258ch                           ; 0f 85 9b 00
+    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov bx, word [bp-022h]                    ; 8b 5e de
     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-00260h]                       ; 8d 96 a0 fd
-    mov bx, word [bp-028h]                    ; 8b 5e d8
-    mov word [es:bx+004h], dx                 ; 26 89 57 04
-    mov [es:bx+006h], ss                      ; 26 8c 57 06
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    mov byte [es:bx+008h], al                 ; 26 88 47 08
+    mov byte [es:bx+023h], 005h               ; 26 c6 47 23 05
+    mov byte [es:bx+026h], 000h               ; 26 c6 47 26 00
+    lea dx, [bp-00264h]                       ; 8d 96 9c fd
+    mov bx, word [bp-022h]                    ; 8b 5e de
+    mov word [es:bx+008h], dx                 ; 26 89 57 08
+    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
+    mov al, byte [bp-016h]                    ; 8a 46 ea
+    mov byte [es:bx+00ch], al                 ; 26 88 47 0c
     mov cx, strict word 00001h                ; b9 01 00
     mov bx, 000a1h                            ; bb a1 00
-    mov ax, word [bp-028h]                    ; 8b 46 d8
+    mov ax, word [bp-022h]                    ; 8b 46 de
     mov dx, es                                ; 8c c2
-    call 01d4fh                               ; e8 ec f9
+    call 01e5ah                               ; e8 2c f9
     test ax, ax                               ; 85 c0
-    je short 02372h                           ; 74 0b
-    push 00154h                               ; 68 54 01
+    je short 0253dh                           ; 74 0b
+    push 00174h                               ; 68 74 01
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 03 f6
+    call 01972h                               ; e8 38 f4
     add sp, strict byte 00004h                ; 83 c4 04
-    mov cl, byte [bp-0025fh]                  ; 8a 8e a1 fd
-    and cl, 01fh                              ; 80 e1 1f
-    test byte [bp-00260h], 080h               ; f6 86 a0 fd 80
+    mov dl, byte [bp-00263h]                  ; 8a 96 9d fd
+    and dl, 01fh                              ; 80 e2 1f
+    test byte [bp-00264h], 080h               ; f6 86 9c fd 80
+    db  00fh, 095h, 0c0h
+    ; setne al                                  ; 0f 95 c0
+    movzx bx, al                              ; 0f b6 d8
+    cmp byte [bp-00204h], 000h                ; 80 be fc fd 00
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov dx, ax                                ; 89 c2
-    cmp byte [bp-00200h], 000h                ; 80 be 00 fe 00
-    db  00fh, 095h, 0c0h
-    ; setne al                                  ; 0f 95 c0
-    xor ah, ah                                ; 30 e4
-    mov bx, ax                                ; 89 c3
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les si, [bp-028h]                         ; c4 76 d8
+    movzx cx, byte [bp-016h]                  ; 0f b6 4e ea
+    imul cx, cx, strict byte 0001ch           ; 6b c9 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov si, word [bp-022h]                    ; 8b 76 de
+    add si, cx                                ; 01 ce
+    mov byte [es:si+023h], dl                 ; 26 88 54 23
+    mov byte [es:si+024h], bl                 ; 26 88 5c 24
+    mov byte [es:si+026h], al                 ; 26 88 44 26
+    mov word [es:si+028h], 00800h             ; 26 c7 44 28 00 08
+    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
+    add bx, word [bp-022h]                    ; 03 5e de
+    mov al, byte [bp-016h]                    ; 8a 46 ea
+    mov byte [es:bx+001f4h], al               ; 26 88 87 f4 01
+    inc byte [bp-006h]                        ; fe 46 fa
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    cmp AL, strict byte 003h                  ; 3c 03
+    je short 025c4h                           ; 74 31
+    cmp AL, strict byte 002h                  ; 3c 02
+    jne near 02627h                           ; 0f 85 8e 00
+    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov si, word [bp-022h]                    ; 8b 76 de
     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-00ah]                  ; 0f b6 5e f6
-    add bx, word [bp-028h]                    ; 03 5e d8
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    mov byte [es:bx+001b0h], al               ; 26 88 87 b0 01
-    inc byte [bp-00ah]                        ; fe 46 f6
-    mov al, byte [bp-010h]                    ; 8a 46 f0
-    cmp AL, strict byte 003h                  ; 3c 03
-    je short 023f4h                           ; 74 2c
-    cmp AL, strict byte 002h                  ; 3c 02
-    jne near 02457h                           ; 0f 85 89 00
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
-    imul bx, bx, strict byte 00018h           ; 6b db 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    add bx, word [bp-028h]                    ; 03 5e d8
-    mov ax, word [es:bx+032h]                 ; 26 8b 47 32
-    mov word [bp-030h], ax                    ; 89 46 d0
-    mov ax, word [es:bx+034h]                 ; 26 8b 47 34
-    mov word [bp-02eh], ax                    ; 89 46 d2
-    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 023ech                               ; e2 f8
-    movzx dx, byte [bp-001bfh]                ; 0f b6 96 41 fe
-    sal dx, 008h                              ; c1 e2 08
-    movzx ax, byte [bp-001c0h]                ; 0f b6 86 40 fe
+    mov ax, word [es:si+03ch]                 ; 26 8b 44 3c
+    mov bx, word [es:si+03ah]                 ; 26 8b 5c 3a
+    mov cx, word [es:si+038h]                 ; 26 8b 4c 38
+    mov dx, word [es:si+036h]                 ; 26 8b 54 36
+    mov si, strict word 0000bh                ; be 0b 00
+    call 09d5ah                               ; e8 9c 77
+    mov word [bp-030h], dx                    ; 89 56 d0
+    mov word [bp-02eh], cx                    ; 89 4e d2
+    movzx ax, byte [bp-001c3h]                ; 0f b6 86 3d fe
+    sal ax, 008h                              ; c1 e0 08
+    movzx dx, byte [bp-001c4h]                ; 0f b6 96 3c fe
     or dx, ax                                 ; 09 c2
-    mov byte [bp-012h], 00fh                  ; c6 46 ee 0f
-    jmp short 02412h                          ; eb 09
-    dec byte [bp-012h]                        ; fe 4e ee
-    cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jbe short 0241fh                          ; 76 0d
-    movzx cx, byte [bp-012h]                  ; 0f b6 4e ee
+    mov byte [bp-00ch], 00fh                  ; c6 46 f4 0f
+    jmp short 025e2h                          ; eb 09
+    dec byte [bp-00ch]                        ; fe 4e f4
+    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
+    jbe short 025efh                          ; 76 0d
+    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
     mov ax, strict word 00001h                ; b8 01 00
     sal ax, CL                                ; d3 e0
     test dx, ax                               ; 85 c2
-    je short 02409h                           ; 74 ea
+    je short 025d9h                           ; 74 ea
     xor di, di                                ; 31 ff
-    jmp short 02428h                          ; eb 05
+    jmp short 025f8h                          ; eb 05
     cmp di, strict byte 00014h                ; 83 ff 14
-    jnl short 0243dh                          ; 7d 15
+    jnl short 0260dh                          ; 7d 15
     mov si, di                                ; 89 fe
     add si, di                                ; 01 fe
-    mov al, byte [bp+si-00229h]               ; 8a 82 d7 fd
-    mov byte [bp+si-060h], al                 ; 88 42 a0
-    mov al, byte [bp+si-0022ah]               ; 8a 82 d6 fd
-    mov byte [bp+si-05fh], al                 ; 88 42 a1
+    mov al, byte [bp+si-0022dh]               ; 8a 82 d3 fd
+    mov byte [bp+si-064h], al                 ; 88 42 9c
+    mov al, byte [bp+si-0022eh]               ; 8a 82 d2 fd
+    mov byte [bp+si-063h], al                 ; 88 42 9d
     inc di                                    ; 47
-    jmp short 02423h                          ; eb e6
-    mov byte [bp-038h], 000h                  ; c6 46 c8 00
+    jmp short 025f3h                          ; eb e6
+    mov byte [bp-03ch], 000h                  ; c6 46 c4 00
     mov di, strict word 00027h                ; bf 27 00
-    jmp short 0244bh                          ; eb 05
+    jmp short 0261bh                          ; eb 05
     dec di                                    ; 4f
     test di, di                               ; 85 ff
-    jle short 02457h                          ; 7e 0c
-    cmp byte [bp+di-060h], 020h               ; 80 7b a0 20
-    jne short 02457h                          ; 75 06
-    mov byte [bp+di-060h], 000h               ; c6 43 a0 00
-    jmp short 02446h                          ; eb ef
-    mov al, byte [bp-010h]                    ; 8a 46 f0
+    jle short 02627h                          ; 7e 0c
+    cmp byte [bp+di-064h], 020h               ; 80 7b 9c 20
+    jne short 02627h                          ; 75 06
+    mov byte [bp+di-064h], 000h               ; c6 43 9c 00
+    jmp short 02616h                          ; eb ef
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 024bah                           ; 74 5c
+    je short 0268ah                           ; 74 5c
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0246bh                           ; 74 09
+    je short 0263bh                           ; 74 09
     cmp AL, strict byte 001h                  ; 3c 01
-    je near 02521h                            ; 0f 84 b9 00
-    jmp near 02540h                           ; e9 d5 00
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 02476h                           ; 74 05
-    mov ax, 0017fh                            ; b8 7f 01
-    jmp short 02479h                          ; eb 03
-    mov ax, 00186h                            ; b8 86 01
+    je near 026f4h                            ; 0f 84 bc 00
+    jmp near 02713h                           ; e9 d8 00
+    cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
+    je short 02646h                           ; 74 05
+    mov ax, 0019fh                            ; b8 9f 01
+    jmp short 02649h                          ; eb 03
+    mov ax, 001a6h                            ; b8 a6 01
     push ax                                   ; 50
-    movzx ax, byte [bp-018h]                  ; 0f b6 46 e8
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    push 0018dh                               ; 68 8d 01
+    push 001adh                               ; 68 ad 01
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 eb f4
+    call 01972h                               ; e8 1b f3
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
-    movzx ax, byte [bp+di-060h]               ; 0f b6 43 a0
+    movzx ax, byte [bp+di-064h]               ; 0f b6 43 9c
     inc di                                    ; 47
     test ax, ax                               ; 85 c0
-    je short 024a3h                           ; 74 0e
+    je short 02673h                           ; 74 0e
     push ax                                   ; 50
-    push 00198h                               ; 68 98 01
+    push 001b8h                               ; 68 b8 01
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 d4 f4
+    call 01972h                               ; e8 04 f3
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 0248ch                          ; eb e9
+    jmp short 0265ch                          ; eb e9
     push dword [bp-030h]                      ; 66 ff 76 d0
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
-    push 0019bh                               ; 68 9b 01
+    push 001bbh                               ; 68 bb 01
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 be f4
+    call 01972h                               ; e8 ee f2
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 02540h                           ; e9 86 00
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 024c5h                           ; 74 05
-    mov ax, 0017fh                            ; b8 7f 01
-    jmp short 024c8h                          ; eb 03
-    mov ax, 00186h                            ; b8 86 01
+    jmp near 02713h                           ; e9 89 00
+    cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
+    je short 02695h                           ; 74 05
+    mov ax, 0019fh                            ; b8 9f 01
+    jmp short 02698h                          ; eb 03
+    mov ax, 001a6h                            ; b8 a6 01
     push ax                                   ; 50
-    movzx ax, byte [bp-018h]                  ; 0f b6 46 e8
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    push 0018dh                               ; 68 8d 01
+    push 001adh                               ; 68 ad 01
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 9c f4
+    call 01972h                               ; e8 cc f2
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
-    movzx ax, byte [bp+di-060h]               ; 0f b6 43 a0
+    movzx ax, byte [bp+di-064h]               ; 0f b6 43 9c
     inc di                                    ; 47
     test ax, ax                               ; 85 c0
-    je short 024f2h                           ; 74 0e
+    je short 026c2h                           ; 74 0e
     push ax                                   ; 50
-    push 00198h                               ; 68 98 01
+    push 001b8h                               ; 68 b8 01
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 85 f4
+    call 01972h                               ; e8 b5 f2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 024dbh                          ; eb e9
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    les bx, [bp-028h]                         ; c4 5e d8
+    jmp short 026abh                          ; eb e9
+    movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov bx, word [bp-022h]                    ; 8b 5e de
     add bx, ax                                ; 01 c3
-    cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
-    jne short 0250fh                          ; 75 0a
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    cmp byte [es:bx+023h], 005h               ; 26 80 7f 23 05
+    jne short 026e2h                          ; 75 0a
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
-    push 001bbh                               ; 68 bb 01
-    jmp short 02517h                          ; eb 08
-    movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
+    push 001dbh                               ; 68 db 01
+    jmp short 026eah                          ; eb 08
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
-    push 001d5h                               ; 68 d5 01
+    push 001f5h                               ; 68 f5 01
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 56 f4
+    call 01972h                               ; e8 83 f2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 02540h                          ; eb 1f
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 0252ch                           ; 74 05
-    mov ax, 0017fh                            ; b8 7f 01
-    jmp short 0252fh                          ; eb 03
-    mov ax, 00186h                            ; b8 86 01
+    jmp short 02713h                          ; eb 1f
+    cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
+    je short 026ffh                           ; 74 05
+    mov ax, 0019fh                            ; b8 9f 01
+    jmp short 02702h                          ; eb 03
+    mov ax, 001a6h                            ; b8 a6 01
     push ax                                   ; 50
-    movzx ax, byte [bp-018h]                  ; 0f b6 46 e8
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    push 001e7h                               ; 68 e7 01
+    push 00207h                               ; 68 07 02
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 35 f4
+    call 01972h                               ; e8 62 f2
     add sp, strict byte 00008h                ; 83 c4 08
-    inc byte [bp-00eh]                        ; fe 46 f2
-    cmp byte [bp-00eh], 008h                  ; 80 7e f2 08
-    jnc short 02597h                          ; 73 4e
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
+    inc byte [bp-016h]                        ; fe 46 ea
+    cmp byte [bp-016h], 008h                  ; 80 7e ea 08
+    jnc short 0276eh                          ; 73 52
+    movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
     mov ax, bx                                ; 89 d8
     cwd                                       ; 99
@@ -2716,37 +2869,39 @@
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
-    mov word [bp-02ah], ax                    ; 89 46 d6
-    mov al, byte [bp-02ah]                    ; 8a 46 d6
-    mov byte [bp-018h], al                    ; 88 46 e8
+    mov cx, ax                                ; 89 c1
+    mov byte [bp-008h], al                    ; 88 46 f8
     mov ax, bx                                ; 89 d8
     cwd                                       ; 99
     mov bx, strict word 00002h                ; bb 02 00
     idiv bx                                   ; f7 fb
-    mov cx, dx                                ; 89 d1
-    mov byte [bp-008h], dl                    ; 88 56 f8
-    movzx ax, byte [bp-02ah]                  ; 0f b6 46 d6
+    mov word [bp-032h], dx                    ; 89 56 ce
+    mov al, byte [bp-032h]                    ; 8a 46 ce
+    mov byte [bp-00eh], al                    ; 88 46 f2
+    movzx ax, cl                              ; 0f b6 c1
     imul ax, ax, strict byte 00006h           ; 6b c0 06
-    les bx, [bp-028h]                         ; c4 5e d8
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov bx, word [bp-022h]                    ; 8b 5e de
     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-02ch], ax                    ; 89 46 d4
+    mov si, word [es:bx+00206h]               ; 26 8b b7 06 02
+    mov ax, word [es:bx+00208h]               ; 26 8b 87 08 02
+    mov word [bp-024h], ax                    ; 89 46 dc
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 00ah                  ; b0 0a
     out DX, AL                                ; ee
-    test cl, cl                               ; 84 c9
-    je near 02001h                            ; 0f 84 70 fa
+    cmp byte [bp-032h], 000h                  ; 80 7e ce 00
+    je near 02196h                            ; 0f 84 2e fa
     mov ax, 000b0h                            ; b8 b0 00
-    jmp near 02004h                           ; e9 6d fa
+    jmp near 02199h                           ; e9 2b fa
+    mov al, byte [bp-010h]                    ; 8a 46 f0
+    mov es, [bp-034h]                         ; 8e 46 cc
+    mov bx, word [bp-022h]                    ; 8b 5e de
+    mov byte [es:bx+001e2h], al               ; 26 88 87 e2 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
-    les bx, [bp-028h]                         ; c4 5e d8
-    mov byte [es:bx+0019eh], al               ; 26 88 87 9e 01
-    mov al, byte [bp-00ah]                    ; 8a 46 f6
-    mov byte [es:bx+001afh], al               ; 26 88 87 af 01
-    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
+    mov byte [es:bx+001f3h], al               ; 26 88 87 f3 01
+    movzx bx, byte [bp-010h]                  ; 0f b6 5e f0
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 a7 f0
+    call 0165eh                               ; e8 cd ee
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -2754,16 +2909,16 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ata_cmd_data_out_:                           ; 0xf25be LB 0x21a
+ata_cmd_data_out_:                           ; 0xf2798 LB 0x2bc
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, strict byte 0001ah                ; 83 ec 1a
+    sub sp, strict byte 00022h                ; 83 ec 22
     mov di, ax                                ; 89 c7
-    mov word [bp-00ah], dx                    ; 89 56 f6
-    mov word [bp-01ah], bx                    ; 89 5e e6
-    mov word [bp-00eh], cx                    ; 89 4e f2
+    mov word [bp-00ch], dx                    ; 89 56 f4
+    mov word [bp-024h], bx                    ; 89 5e dc
+    mov word [bp-01ah], cx                    ; 89 4e e6
     mov es, dx                                ; 8e c2
-    movzx ax, byte [es:di+008h]               ; 26 0f b6 45 08
+    movzx ax, byte [es:di+00ch]               ; 26 0f b6 45 0c
     mov dx, ax                                ; 89 c2
     shr dx, 1                                 ; d1 ea
@@ -2771,120 +2926,175 @@
     and dh, 001h                              ; 80 e6 01
     mov byte [bp-006h], dh                    ; 88 76 fa
-    movzx si, dl                              ; 0f b6 f2
-    imul si, si, strict byte 00006h           ; 6b f6 06
-    add si, di                                ; 01 fe
-    mov bx, word [es:si+001c2h]               ; 26 8b 9c c2 01
-    mov dx, word [es:si+001c4h]               ; 26 8b 94 c4 01
-    mov word [bp-00ch], dx                    ; 89 56 f4
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov si, di                                ; 89 fe
-    add si, ax                                ; 01 c6
-    mov al, byte [es:si+022h]                 ; 26 8a 44 22
+    xor dh, dh                                ; 30 f6
+    imul dx, dx, strict byte 00006h           ; 6b d2 06
+    mov bx, di                                ; 89 fb
+    add bx, dx                                ; 01 d3
+    mov dx, word [es:bx+00206h]               ; 26 8b 97 06 02
+    mov word [bp-00ah], dx                    ; 89 56 f6
+    mov dx, word [es:bx+00208h]               ; 26 8b 97 08 02
+    mov word [bp-012h], dx                    ; 89 56 ee
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov bx, di                                ; 89 fb
+    add bx, ax                                ; 01 c3
+    mov al, byte [es:bx+026h]                 ; 26 8a 47 26
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 02612h                          ; 75 07
-    mov word [bp-012h], 00080h                ; c7 46 ee 80 00
-    jmp short 02617h                          ; eb 05
-    mov word [bp-012h], 00100h                ; c7 46 ee 00 01
-    lea dx, [bx+007h]                         ; 8d 57 07
+    jne short 027f0h                          ; 75 07
+    mov word [bp-020h], 00080h                ; c7 46 e0 80 00
+    jmp short 027f5h                          ; eb 05
+    mov word [bp-020h], 00100h                ; c7 46 e0 00 01
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00007h                ; 83 c2 07
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 02630h                           ; 74 0f
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    je short 02811h                           ; 74 0f
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 027cfh                           ; e9 9f 01
-    mov es, [bp-00ah]                         ; 8e 46 f6
+    jmp near 02a4bh                           ; e9 3a 02
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    mov ax, word [es:di+006h]                 ; 26 8b 45 06
+    mov word [bp-010h], ax                    ; 89 46 f0
+    mov ax, word [es:di+004h]                 ; 26 8b 45 04
+    mov word [bp-014h], ax                    ; 89 46 ec
+    mov ax, word [es:di+002h]                 ; 26 8b 45 02
+    mov word [bp-016h], ax                    ; 89 46 ea
     mov ax, word [es:di]                      ; 26 8b 05
     mov word [bp-01eh], ax                    ; 89 46 e2
-    mov ax, word [es:di+002h]                 ; 26 8b 45 02
+    mov ax, word [es:di+008h]                 ; 26 8b 45 08
+    mov word [bp-00eh], ax                    ; 89 46 f2
+    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
+    mov word [bp-018h], ax                    ; 89 46 e8
+    mov ax, word [es:di+016h]                 ; 26 8b 45 16
     mov word [bp-01ch], ax                    ; 89 46 e4
-    mov si, word [es:di+004h]                 ; 26 8b 75 04
-    mov ax, word [es:di+006h]                 ; 26 8b 45 06
-    mov word [bp-018h], ax                    ; 89 46 e8
     mov ax, word [es:di+012h]                 ; 26 8b 45 12
-    mov word [bp-010h], ax                    ; 89 46 f0
-    mov ax, word [es:di+00eh]                 ; 26 8b 45 0e
-    mov word [bp-016h], ax                    ; 89 46 ea
-    mov ax, word [es:di+010h]                 ; 26 8b 45 10
-    mov word [bp-014h], ax                    ; 89 46 ec
+    mov word [bp-026h], ax                    ; 89 46 da
+    mov ax, word [es:di+014h]                 ; 26 8b 45 14
+    mov word [bp-022h], ax                    ; 89 46 de
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
+    test ax, ax                               ; 85 c0
+    jne near 02922h                           ; 0f 85 c7 00
+    xor dx, dx                                ; 31 d2
+    xor bx, bx                                ; 31 db
+    mov si, word [bp-01eh]                    ; 8b 76 e2
+    add si, word [bp-01ah]                    ; 03 76 e6
+    adc dx, word [bp-016h]                    ; 13 56 ea
+    adc bx, word [bp-014h]                    ; 13 5e ec
+    adc ax, word [bp-010h]                    ; 13 46 f0
+    test ax, ax                               ; 85 c0
+    jnbe short 02882h                         ; 77 10
+    jne short 028e5h                          ; 75 71
+    test bx, bx                               ; 85 db
+    jnbe short 02882h                         ; 77 0a
+    jne short 028e5h                          ; 75 6b
+    cmp dx, 01000h                            ; 81 fa 00 10
+    jnbe short 02882h                         ; 77 02
+    jne short 028e5h                          ; 75 63
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    test ax, ax                               ; 85 c0
-    jne short 026ceh                          ; 75 67
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov cx, word [bp-016h]                    ; 8b 4e ea
     mov dx, word [bp-01eh]                    ; 8b 56 e2
-    add dx, word [bp-00eh]                    ; 03 56 f2
-    adc ax, word [bp-01ch]                    ; 13 46 e4
-    cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 02677h                         ; 77 02
-    jne short 026a2h                          ; 75 2b
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
+    mov si, strict word 00018h                ; be 18 00
+    call 09d5ah                               ; e8 c6 74
+    xor dh, dh                                ; 30 f6
+    mov word [bp-01ch], dx                    ; 89 56 e4
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov cx, word [bp-016h]                    ; 8b 4e ea
+    mov dx, word [bp-01eh]                    ; 8b 56 e2
+    mov si, strict word 00020h                ; be 20 00
+    call 09d5ah                               ; e8 af 74
+    mov bx, dx                                ; 89 d3
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    inc dx                                    ; 42
+    inc dx                                    ; 42
+    out DX, AL                                ; ee
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00003h                ; 83 c2 03
+    mov al, byte [bp-01ch]                    ; 8a 46 e4
+    out DX, AL                                ; ee
+    mov ax, bx                                ; 89 d8
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00004h                ; 83 c2 04
+    out DX, AL                                ; ee
+    shr ax, 008h                              ; c1 e8 08
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00005h                ; 83 c2 05
+    out DX, AL                                ; ee
+    xor al, al                                ; 30 c0
+    mov byte [bp-015h], al                    ; 88 46 eb
+    xor ah, ah                                ; 30 e4
+    mov word [bp-014h], ax                    ; 89 46 ec
     mov word [bp-010h], ax                    ; 89 46 f0
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
-    xor al, al                                ; 30 c0
-    shr ax, 008h                              ; c1 e8 08
-    lea dx, [bx+002h]                         ; 8d 57 02
-    out DX, AL                                ; ee
-    lea dx, [bx+003h]                         ; 8d 57 03
-    mov al, byte [bp-010h]                    ; 8a 46 f0
-    out DX, AL                                ; ee
-    lea dx, [bx+004h]                         ; 8d 57 04
-    xor al, al                                ; 30 c0
-    out DX, AL                                ; ee
-    lea dx, [bx+005h]                         ; 8d 57 05
-    out DX, AL                                ; ee
-    mov byte [bp-01bh], al                    ; 88 46 e5
     mov ax, word [bp-01eh]                    ; 8b 46 e2
     xor ah, ah                                ; 30 e4
+    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov cx, word [bp-016h]                    ; 8b 4e ea
+    mov dx, word [bp-01eh]                    ; 8b 56 e2
+    mov si, strict word 00008h                ; be 08 00
+    call 09d5ah                               ; e8 5b 74
     mov word [bp-010h], ax                    ; 89 46 f0
-    mov cx, strict word 00008h                ; b9 08 00
-    shr word [bp-01ch], 1                     ; d1 6e e4
-    rcr word [bp-01eh], 1                     ; d1 5e e2
-    loop 026adh                               ; e2 f8
-    mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [bp-016h], ax                    ; 89 46 ea
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [bp-01eh], ax                    ; 89 46 e2
-    mov word [bp-01ch], strict word 00000h    ; c7 46 e4 00 00
-    and ax, strict word 0000fh                ; 25 0f 00
+    mov word [bp-014h], bx                    ; 89 5e ec
+    mov word [bp-016h], cx                    ; 89 4e ea
+    mov word [bp-01eh], dx                    ; 89 56 e2
+    mov word [bp-026h], dx                    ; 89 56 da
+    mov si, strict word 00010h                ; be 10 00
+    call 09d5ah                               ; e8 46 74
+    mov word [bp-01eh], dx                    ; 89 56 e2
+    mov ax, dx                                ; 89 d0
+    xor ah, dh                                ; 30 f4
+    and AL, strict byte 00fh                  ; 24 0f
     or AL, strict byte 040h                   ; 0c 40
-    mov word [bp-014h], ax                    ; 89 46 ec
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    mov word [bp-022h], ax                    ; 89 46 de
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 00ah                  ; b0 0a
     out DX, AL                                ; ee
-    lea dx, [bx+001h]                         ; 8d 57 01
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    inc dx                                    ; 42
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
-    lea dx, [bx+002h]                         ; 8d 57 02
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    out DX, AL                                ; ee
-    lea dx, [bx+003h]                         ; 8d 57 03
-    mov al, byte [bp-010h]                    ; 8a 46 f0
-    out DX, AL                                ; ee
-    mov ax, word [bp-016h]                    ; 8b 46 ea
-    lea dx, [bx+004h]                         ; 8d 57 04
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    inc dx                                    ; 42
+    inc dx                                    ; 42
+    mov al, byte [bp-01ah]                    ; 8a 46 e6
+    out DX, AL                                ; ee
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00003h                ; 83 c2 03
+    mov al, byte [bp-01ch]                    ; 8a 46 e4
+    out DX, AL                                ; ee
+    mov ax, word [bp-026h]                    ; 8b 46 da
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00004h                ; 83 c2 04
     out DX, AL                                ; ee
     shr ax, 008h                              ; c1 e8 08
-    lea dx, [bx+005h]                         ; 8d 57 05
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00005h                ; 83 c2 05
     out DX, AL                                ; ee
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 02704h                           ; 74 05
+    je short 02964h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 02707h                          ; eb 03
+    jmp short 02967h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
-    movzx dx, byte [bp-014h]                  ; 0f b6 56 ec
+    movzx dx, byte [bp-022h]                  ; 0f b6 56 de
     or ax, dx                                 ; 09 d0
-    lea dx, [bx+006h]                         ; 8d 57 06
-    out DX, AL                                ; ee
-    lea dx, [bx+007h]                         ; 8d 57 07
-    mov al, byte [bp-01ah]                    ; 8a 46 e6
-    out DX, AL                                ; ee
-    lea dx, [bx+007h]                         ; 8d 57 07
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00006h                ; 83 c2 06
+    out DX, AL                                ; ee
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00007h                ; 83 c2 07
+    mov al, byte [bp-024h]                    ; 8a 46 dc
+    out DX, AL                                ; ee
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00007h                ; 83 c2 07
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -2892,45 +3102,51 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 02718h                          ; 75 f4
+    jne short 0297eh                          ; 75 f1
     test AL, strict byte 001h                 ; a8 01
-    je short 02737h                           ; 74 0f
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    je short 029a0h                           ; 74 0f
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 027cfh                           ; e9 98 00
+    jmp near 02a4bh                           ; e9 ab 00
     test dl, 008h                             ; f6 c2 08
-    jne short 0274bh                          ; 75 0f
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    jne short 029b4h                          ; 75 0f
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 027cfh                           ; e9 84 00
+    jmp near 02a4bh                           ; e9 97 00
     sti                                       ; fb
-    cmp si, 0f800h                            ; 81 fe 00 f8
-    jc short 0275fh                           ; 72 0d
-    sub si, 00800h                            ; 81 ee 00 08
-    mov ax, word [bp-018h]                    ; 8b 46 e8
-    add ax, 00080h                            ; 05 80 00
-    mov word [bp-018h], ax                    ; 89 46 e8
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    cmp ax, 0f800h                            ; 3d 00 f8
+    jc short 029cdh                           ; 72 10
+    sub ax, 00800h                            ; 2d 00 08
+    mov dx, word [bp-018h]                    ; 8b 56 e8
+    add dx, 00080h                            ; 81 c2 80 00
+    mov word [bp-00eh], ax                    ; 89 46 f2
+    mov word [bp-018h], dx                    ; 89 56 e8
     cmp byte [bp-008h], 001h                  ; 80 7e f8 01
-    jne short 02773h                          ; 75 0e
-    mov dx, bx                                ; 89 da
-    mov cx, word [bp-012h]                    ; 8b 4e ee
+    jne short 029e5h                          ; 75 12
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    mov cx, word [bp-020h]                    ; 8b 4e e0
+    mov si, word [bp-00eh]                    ; 8b 76 f2
     mov es, [bp-018h]                         ; 8e 46 e8
     db  0f3h, 066h, 026h, 06fh
     ; rep es outsd                              ; f3 66 26 6f
-    jmp short 0277eh                          ; eb 0b
-    mov dx, bx                                ; 89 da
-    mov cx, word [bp-012h]                    ; 8b 4e ee
+    jmp short 029f4h                          ; eb 0f
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    mov cx, word [bp-020h]                    ; 8b 4e e0
+    mov si, word [bp-00eh]                    ; 8b 76 f2
     mov es, [bp-018h]                         ; 8e 46 e8
     db  0f3h, 026h, 06fh
     ; rep es outsw                              ; f3 26 6f
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    inc word [es:di+014h]                     ; 26 ff 45 14
-    dec word [bp-00eh]                        ; ff 4e f2
-    lea dx, [bx+007h]                         ; 8d 57 07
+    mov word [bp-00eh], si                    ; 89 76 f2
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    inc word [es:di+018h]                     ; 26 ff 45 18
+    dec word [bp-01ah]                        ; ff 4e e6
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    add dx, strict byte 00007h                ; 83 c2 07
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -2938,27 +3154,27 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 02788h                          ; 75 f4
-    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
-    jne short 027aeh                          ; 75 14
+    jne short 02a01h                          ; 75 f1
+    cmp word [bp-01ah], strict byte 00000h    ; 83 7e e6 00
+    jne short 02a2ah                          ; 75 14
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 027c4h                           ; 74 24
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    je short 02a40h                           ; 74 24
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00006h                ; ba 06 00
-    jmp short 027cfh                          ; eb 21
+    jmp short 02a4bh                          ; eb 21
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 0274ch                           ; 74 96
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    je short 029b5h                           ; 74 83
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov dx, strict word 00007h                ; ba 07 00
-    jmp short 027cfh                          ; eb 0b
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    jmp short 02a4bh                          ; eb 0b
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
@@ -2971,5 +3187,75 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-@ata_read_sectors:                           ; 0xf27d8 LB 0x7a
+@ata_read_sectors:                           ; 0xf2a54 LB 0xb5
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    push si                                   ; 56
+    push di                                   ; 57
+    sub sp, strict byte 00008h                ; 83 ec 08
+    mov si, word [bp+004h]                    ; 8b 76 04
+    mov es, [bp+006h]                         ; 8e 46 06
+    mov al, byte [es:si+00ch]                 ; 26 8a 44 0c
+    mov cx, word [es:si+00eh]                 ; 26 8b 4c 0e
+    mov dx, cx                                ; 89 ca
+    sal dx, 009h                              ; c1 e2 09
+    cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00
+    je short 02a95h                           ; 74 1f
+    xor ah, ah                                ; 30 e4
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov [bp-00ah], es                         ; 8c 46 f6
+    mov di, si                                ; 89 f7
+    add di, ax                                ; 01 c7
+    mov word [es:di+028h], dx                 ; 26 89 55 28
+    mov bx, 000c4h                            ; bb c4 00
+    mov ax, si                                ; 89 f0
+    mov dx, es                                ; 8c c2
+    call 01e5ah                               ; e8 ca f3
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    jmp short 02afah                          ; eb 65
+    xor bx, bx                                ; 31 db
+    mov word [bp-00ah], bx                    ; 89 5e f6
+    mov word [bp-00ch], bx                    ; 89 5e f4
+    mov di, word [es:si]                      ; 26 8b 3c
+    add di, cx                                ; 01 cf
+    mov word [bp-008h], di                    ; 89 7e f8
+    mov di, word [es:si+002h]                 ; 26 8b 7c 02
+    adc di, bx                                ; 11 df
+    mov word [bp-006h], di                    ; 89 7e fa
+    mov bx, word [es:si+004h]                 ; 26 8b 5c 04
+    adc bx, word [bp-00ah]                    ; 13 5e f6
+    mov di, word [es:si+006h]                 ; 26 8b 7c 06
+    adc di, word [bp-00ch]                    ; 13 7e f4
+    test di, di                               ; 85 ff
+    jnbe short 02ad1h                         ; 77 11
+    jne short 02addh                          ; 75 1b
+    test bx, bx                               ; 85 db
+    jnbe short 02ad1h                         ; 77 0b
+    jne short 02addh                          ; 75 15
+    cmp word [bp-006h], 01000h                ; 81 7e fa 00 10
+    jnbe short 02ad1h                         ; 77 02
+    jne short 02addh                          ; 75 0c
+    mov bx, strict word 00024h                ; bb 24 00
+    mov ax, si                                ; 89 f0
+    mov dx, es                                ; 8c c2
+    call 01e5ah                               ; e8 7f f3
+    jmp short 02b00h                          ; eb 23
+    xor ah, ah                                ; 30 e4
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov [bp-006h], es                         ; 8c 46 fa
+    mov di, si                                ; 89 f7
+    add di, ax                                ; 01 c7
+    mov word [es:di+028h], dx                 ; 26 89 55 28
+    mov bx, 000c4h                            ; bb c4 00
+    mov ax, si                                ; 89 f0
+    mov dx, es                                ; 8c c2
+    call 01e5ah                               ; e8 63 f3
+    mov es, [bp-006h]                         ; 8e 46 fa
+    mov word [es:di+028h], 00200h             ; 26 c7 45 28 00 02
+    lea sp, [bp-004h]                         ; 8d 66 fc
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    pop bp                                    ; 5d
+    retn 00004h                               ; c2 04 00
+@ata_write_sectors:                          ; 0xf2b09 LB 0x5b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -2977,42 +3263,33 @@
     push di                                   ; 57
     push ax                                   ; 50
-    mov si, word [bp+004h]                    ; 8b 76 04
-    mov es, [bp+006h]                         ; 8e 46 06
-    mov bl, byte [es:si+008h]                 ; 26 8a 5c 08
-    mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
-    mov dx, cx                                ; 89 ca
-    sal dx, 009h                              ; c1 e2 09
-    mov ax, word [es:si+012h]                 ; 26 8b 44 12
-    test ax, ax                               ; 85 c0
-    je short 02806h                           ; 74 0d
-    movzx di, bl                              ; 0f b6 fb
-    imul di, di, strict byte 00018h           ; 6b ff 18
-    mov [bp-006h], es                         ; 8c 46 fa
-    add di, si                                ; 01 f7
-    jmp short 02832h                          ; eb 2c
+    les si, [bp+004h]                         ; c4 76 04
+    mov cx, word [es:si+00eh]                 ; 26 8b 4c 0e
+    cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00
+    je short 02b29h                           ; 74 0c
+    mov bx, strict word 00030h                ; bb 30 00
+    mov ax, si                                ; 89 f0
+    mov dx, es                                ; 8c c2
+    call 02798h                               ; e8 71 fc
+    jmp short 02b5bh                          ; eb 32
+    xor ax, ax                                ; 31 c0
+    xor bx, bx                                ; 31 db
+    xor dx, dx                                ; 31 d2
     mov di, word [es:si]                      ; 26 8b 3c
     add di, cx                                ; 01 cf
     mov word [bp-006h], di                    ; 89 7e fa
     adc ax, word [es:si+002h]                 ; 26 13 44 02
+    adc bx, word [es:si+004h]                 ; 26 13 5c 04
+    adc dx, word [es:si+006h]                 ; 26 13 54 06
+    test dx, dx                               ; 85 d2
+    jnbe short 02b56h                         ; 77 0f
+    jne short 02b1dh                          ; 75 d4
+    test bx, bx                               ; 85 db
+    jnbe short 02b56h                         ; 77 09
+    jne short 02b1dh                          ; 75 ce
     cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 02819h                         ; 77 02
-    jne short 02825h                          ; 75 0c
-    mov bx, strict word 00024h                ; bb 24 00
-    mov ax, si                                ; 89 f0
-    mov dx, es                                ; 8c c2
-    call 01d4fh                               ; e8 2c f5
-    jmp short 02849h                          ; eb 24
-    movzx ax, bl                              ; 0f b6 c3
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov [bp-006h], es                         ; 8c 46 fa
-    mov di, si                                ; 89 f7
-    add di, ax                                ; 01 c7
-    mov word [es:di+024h], dx                 ; 26 89 55 24
-    mov bx, 000c4h                            ; bb c4 00
-    mov ax, si                                ; 89 f0
-    mov dx, es                                ; 8c c2
-    call 01d4fh                               ; e8 0f f5
-    mov es, [bp-006h]                         ; 8e 46 fa
-    mov word [es:di+024h], 00200h             ; 26 c7 45 24 00 02
+    jnbe short 02b56h                         ; 77 02
+    jne short 02b1dh                          ; 75 c7
+    mov bx, strict word 00034h                ; bb 34 00
+    jmp short 02b20h                          ; eb c5
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -3020,31 +3297,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@ata_write_sectors:                          ; 0xf2852 LB 0x3d
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    push si                                   ; 56
-    les si, [bp+004h]                         ; c4 76 04
-    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 02870h                           ; 74 0c
-    mov bx, strict word 00030h                ; bb 30 00
-    mov ax, si                                ; 89 f0
-    mov dx, es                                ; 8c c2
-    call 025beh                               ; e8 50 fd
-    jmp short 02887h                          ; eb 17
-    xor ax, ax                                ; 31 c0
-    mov dx, word [es:si]                      ; 26 8b 14
-    add dx, cx                                ; 01 ca
-    adc ax, word [es:si+002h]                 ; 26 13 44 02
-    cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 02882h                         ; 77 02
-    jne short 02864h                          ; 75 e2
-    mov bx, strict word 00034h                ; bb 34 00
-    jmp short 02867h                          ; eb e0
-    lea sp, [bp-002h]                         ; 8d 66 fe
-    pop si                                    ; 5e
-    pop bp                                    ; 5d
-    retn 00004h                               ; c2 04 00
-ata_cmd_packet_:                             ; 0xf288f LB 0x2e8
+ata_cmd_packet_:                             ; 0xf2b64 LB 0x2e8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3057,5 +3308,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 c6 ed
+    call 0166ch                               ; e8 f1 ea
     mov word [bp-012h], 00122h                ; c7 46 ee 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -3066,18 +3317,18 @@
     mov byte [bp-006h], ah                    ; 88 66 fa
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 028e1h                          ; 75 1f
-    mov bx, 00da2h                            ; bb a2 0d
+    jne short 02bb6h                          ; 75 1f
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 64 f0
-    push 00201h                               ; 68 01 02
-    push 00210h                               ; 68 10 02
+    call 01931h                               ; e8 8f ed
+    push 00221h                               ; 68 21 02
+    push 00230h                               ; 68 30 02
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 9a f0
+    call 01972h                               ; e8 c5 ed
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 02b6ch                           ; e9 8b 02
+    jmp near 02e41h                           ; e9 8b 02
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 028dbh                          ; 75 f4
+    jne short 02bb0h                          ; 75 f4
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 00006h           ; 6b c0 06
@@ -3085,10 +3336,10 @@
     mov si, word [bp-012h]                    ; 8b 76 ee
     add si, ax                                ; 01 c6
-    mov bx, word [es:si+001c2h]               ; 26 8b 9c c2 01
-    mov ax, word [es:si+001c4h]               ; 26 8b 84 c4 01
+    mov bx, word [es:si+00206h]               ; 26 8b 9c 06 02
+    mov ax, word [es:si+00208h]               ; 26 8b 84 08 02
     mov word [bp-010h], ax                    ; 89 46 f0
-    imul si, word [bp-01ah], strict byte 00018h ; 6b 76 e6 18
+    imul si, word [bp-01ah], strict byte 0001ch ; 6b 76 e6 1c
     add si, word [bp-012h]                    ; 03 76 ee
-    mov al, byte [es:si+022h]                 ; 26 8a 44 22
+    mov al, byte [es:si+026h]                 ; 26 8a 44 26
     mov byte [bp-00ah], al                    ; 88 46 f6
     xor ax, ax                                ; 31 c0
@@ -3097,15 +3348,15 @@
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jnc short 02924h                          ; 73 06
+    jnc short 02bf9h                          ; 73 06
     mov byte [bp-008h], 00ch                  ; c6 46 f8 0c
-    jmp short 0292ah                          ; eb 06
-    jbe short 0292ah                          ; 76 04
+    jmp short 02bffh                          ; eb 06
+    jbe short 02bffh                          ; 76 04
     mov byte [bp-008h], 010h                  ; c6 46 f8 10
     shr byte [bp-008h], 1                     ; d0 6e f8
     mov es, [bp-00eh]                         ; 8e 46 f2
     mov si, word [bp-012h]                    ; 8b 76 ee
-    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
+    db  066h, 026h, 0c7h, 044h, 018h, 000h, 000h, 000h, 000h
+    ; mov dword [es:si+018h], strict dword 000000000h ; 66 26 c7 44 18 00 00 00 00
+    mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00
     lea dx, [bx+007h]                         ; 8d 57 07
     in AL, DX                                 ; ec
@@ -3113,7 +3364,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 02952h                           ; 74 06
+    je short 02c27h                           ; 74 06
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 02b6ch                           ; e9 1a 02
+    jmp near 02e41h                           ; e9 1a 02
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3127,7 +3378,7 @@
     out DX, AL                                ; ee
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 02972h                           ; 74 05
+    je short 02c47h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 02975h                          ; eb 03
+    jmp short 02c4ah                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     lea dx, [bx+006h]                         ; 8d 57 06
@@ -3142,7 +3393,7 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 0297fh                          ; 75 f4
+    jne short 02c54h                          ; 75 f4
     test AL, strict byte 001h                 ; a8 01
-    je short 0299eh                           ; 74 0f
+    je short 02c73h                           ; 74 0f
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3150,7 +3401,7 @@
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 02b6ch                           ; e9 ce 01
+    jmp near 02e41h                           ; e9 ce 01
     test dl, 008h                             ; f6 c2 08
-    jne short 029b2h                          ; 75 0f
+    jne short 02c87h                          ; 75 0f
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3158,5 +3409,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00004h                ; ba 04 00
-    jmp near 02b6ch                           ; e9 ba 01
+    jmp near 02e41h                           ; e9 ba 01
     sti                                       ; fb
     mov ax, di                                ; 89 f8
@@ -3171,5 +3422,5 @@
     ; rep es outsw                              ; f3 26 6f
     cmp byte [bp+00ah], 000h                  ; 80 7e 0a 00
-    jne short 029dbh                          ; 75 0b
+    jne short 02cb0h                          ; 75 0b
     lea dx, [bx+007h]                         ; 8d 57 07
     in AL, DX                                 ; ec
@@ -3177,5 +3428,5 @@
     ; sub ah, ah                                ; 2a e4
     mov dl, al                                ; 88 c2
-    jmp near 02b4dh                           ; e9 72 01
+    jmp near 02e22h                           ; e9 72 01
     lea dx, [bx+007h]                         ; 8d 57 07
     in AL, DX                                 ; ec
@@ -3184,23 +3435,23 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 029dbh                          ; 75 f4
+    jne short 02cb0h                          ; 75 f4
     test AL, strict byte 088h                 ; a8 88
-    je near 02b4dh                            ; 0f 84 60 01
+    je near 02e22h                            ; 0f 84 60 01
     test AL, strict byte 001h                 ; a8 01
-    je short 029fch                           ; 74 0b
+    je short 02cd1h                           ; 74 0b
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    jmp short 02998h                          ; eb 9c
+    jmp short 02c6dh                          ; eb 9c
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 02a0fh                           ; 74 0b
+    je short 02ce4h                           ; 74 0b
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    jmp short 029ach                          ; eb 9d
+    jmp short 02c81h                          ; eb 9d
     mov ax, word [bp+00ch]                    ; 8b 46 0c
     shr ax, 004h                              ; c1 e8 04
@@ -3225,10 +3476,10 @@
     mov ax, word [bp+004h]                    ; 8b 46 04
     cmp ax, cx                                ; 39 c8
-    jbe short 02a4fh                          ; 76 0c
+    jbe short 02d24h                          ; 76 0c
     mov ax, cx                                ; 89 c8
     sub word [bp+004h], cx                    ; 29 4e 04
     xor ax, cx                                ; 31 c8
     mov word [bp-014h], ax                    ; 89 46 ec
-    jmp short 02a59h                          ; eb 0a
+    jmp short 02d2eh                          ; eb 0a
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
@@ -3236,8 +3487,8 @@
     xor ax, ax                                ; 31 c0
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 02a82h                          ; 75 21
+    jne short 02d57h                          ; 75 21
     mov dx, word [bp-014h]                    ; 8b 56 ec
     cmp dx, word [bp+006h]                    ; 3b 56 06
-    jbe short 02a82h                          ; 76 19
+    jbe short 02d57h                          ; 76 19
     mov ax, word [bp-014h]                    ; 8b 46 ec
     sub ax, word [bp+006h]                    ; 2b 46 06
@@ -3248,5 +3499,5 @@
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 02a8eh                          ; eb 0c
+    jmp short 02d63h                          ; eb 0c
     mov word [bp-00ch], ax                    ; 89 46 f4
     mov dx, word [bp-014h]                    ; 8b 56 ec
@@ -3256,37 +3507,37 @@
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test cl, 003h                             ; f6 c1 03
-    je short 02a9bh                           ; 74 02
+    je short 02d70h                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-014h], 003h                 ; f6 46 ec 03
-    je short 02aa3h                           ; 74 02
+    je short 02d78h                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-00ch], 003h                 ; f6 46 f4 03
-    je short 02aabh                           ; 74 02
+    je short 02d80h                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-014h], 001h                 ; f6 46 ec 01
-    je short 02ac3h                           ; 74 12
+    je short 02d98h                           ; 74 12
     inc word [bp-014h]                        ; ff 46 ec
     cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
-    jbe short 02ac3h                          ; 76 09
+    jbe short 02d98h                          ; 76 09
     test byte [bp-00ch], 001h                 ; f6 46 f4 01
-    je short 02ac3h                           ; 74 03
+    je short 02d98h                           ; 74 03
     dec word [bp-00ch]                        ; ff 4e f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 02ad4h                          ; 75 0d
+    jne short 02da9h                          ; 75 0d
     shr word [bp-014h], 002h                  ; c1 6e ec 02
     shr cx, 002h                              ; c1 e9 02
     shr word [bp-00ch], 002h                  ; c1 6e f4 02
-    jmp short 02adch                          ; eb 08
+    jmp short 02db1h                          ; eb 08
     shr word [bp-014h], 1                     ; d1 6e ec
     shr cx, 1                                 ; d1 e9
     shr word [bp-00ch], 1                     ; d1 6e f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 02b0ch                          ; 75 2c
+    jne short 02de1h                          ; 75 2c
     test cx, cx                               ; 85 c9
-    je short 02aeeh                           ; 74 0a
+    je short 02dc3h                           ; 74 0a
     mov dx, bx                                ; 89 da
     push eax                                  ; 66 50
     in eax, DX                                ; 66 ed
-    loop 02ae8h                               ; e2 fc
+    loop 02dbdh                               ; e2 fc
     pop eax                                   ; 66 58
     mov dx, bx                                ; 89 da
@@ -3297,16 +3548,16 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     test ax, ax                               ; 85 c0
-    je short 02b2bh                           ; 74 2b
+    je short 02e00h                           ; 74 2b
     mov cx, ax                                ; 89 c1
     push eax                                  ; 66 50
     in eax, DX                                ; 66 ed
-    loop 02b04h                               ; e2 fc
+    loop 02dd9h                               ; e2 fc
     pop eax                                   ; 66 58
-    jmp short 02b2bh                          ; eb 1f
+    jmp short 02e00h                          ; eb 1f
     test cx, cx                               ; 85 c9
-    je short 02b15h                           ; 74 05
+    je short 02deah                           ; 74 05
     mov dx, bx                                ; 89 da
     in ax, DX                                 ; ed
-    loop 02b12h                               ; e2 fd
+    loop 02de7h                               ; e2 fd
     mov dx, bx                                ; 89 da
     mov cx, word [bp-014h]                    ; 8b 4e ec
@@ -3315,8 +3566,8 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     test ax, ax                               ; 85 c0
-    je short 02b2bh                           ; 74 05
+    je short 02e00h                           ; 74 05
     mov cx, ax                                ; 89 c1
     in ax, DX                                 ; ed
-    loop 02b28h                               ; e2 fd
+    loop 02dfdh                               ; e2 fd
     add word [bp+00ch], si                    ; 01 76 0c
     xor ax, ax                                ; 31 c0
@@ -3326,17 +3577,17 @@
     mov es, [bp-00eh]                         ; 8e 46 f2
     mov si, word [bp-012h]                    ; 8b 76 ee
-    mov word [es:si+016h], ax                 ; 26 89 44 16
+    mov word [es:si+01ah], ax                 ; 26 89 44 1a
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    mov word [es:si+018h], ax                 ; 26 89 44 18
-    jmp near 029dbh                           ; e9 8e fe
+    mov word [es:si+01ch], ax                 ; 26 89 44 1c
+    jmp near 02cb0h                           ; e9 8e fe
     mov al, dl                                ; 88 d0
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02b61h                           ; 74 0c
+    je short 02e36h                           ; 74 0c
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
-    jmp near 029ach                           ; e9 4b fe
+    jmp near 02c81h                           ; e9 4b fe
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3350,5 +3601,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ata_soft_reset_:                             ; 0xf2b77 LB 0x80
+ata_soft_reset_:                             ; 0xf2e4c LB 0x80
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3360,5 +3611,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 e3 ea
+    call 0166ch                               ; e8 0e e8
     mov dx, bx                                ; 89 da
     shr dx, 1                                 ; d1 ea
@@ -3369,13 +3620,13 @@
     mov es, ax                                ; 8e c0
     add bx, 00122h                            ; 81 c3 22 01
-    mov cx, word [es:bx+001c2h]               ; 26 8b 8f c2 01
-    mov bx, word [es:bx+001c4h]               ; 26 8b 9f c4 01
+    mov cx, word [es:bx+00206h]               ; 26 8b 8f 06 02
+    mov bx, word [es:bx+00208h]               ; 26 8b 9f 08 02
     lea dx, [bx+006h]                         ; 8d 57 06
     mov AL, strict byte 00ah                  ; b0 0a
     out DX, AL                                ; ee
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 02bb9h                           ; 74 05
+    je short 02e8eh                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 02bbch                          ; eb 03
+    jmp short 02e91h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     mov dx, cx                                ; 89 ca
@@ -3392,13 +3643,13 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    jne short 02bcah                          ; 75 f4
+    jne short 02e9fh                          ; 75 f4
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02be7h                           ; 74 0b
+    je short 02ebch                           ; 74 0b
     lea dx, [bx+006h]                         ; 8d 57 06
     mov AL, strict byte 008h                  ; b0 08
     out DX, AL                                ; ee
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 02befh                          ; eb 08
+    jmp short 02ec4h                          ; eb 08
     lea dx, [bx+006h]                         ; 8d 57 06
     mov AL, strict byte 008h                  ; b0 08
@@ -3411,5 +3662,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_diskette_ret_status_:                    ; 0xf2bf7 LB 0x18
+set_diskette_ret_status_:                    ; 0xf2ecc LB 0x18
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3419,5 +3670,5 @@
     mov dx, strict word 00041h                ; ba 41 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 56 ea
+    call 0165eh                               ; e8 81 e7
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -3425,5 +3676,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_diskette_current_cyl_:                   ; 0xf2c0f LB 0x2d
+set_diskette_current_cyl_:                   ; 0xf2ee4 LB 0x2d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3431,8 +3682,8 @@
     mov bl, al                                ; 88 c3
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 02c24h                          ; 76 0b
-    push 00230h                               ; 68 30 02
+    jbe short 02ef9h                          ; 76 0b
+    push 00250h                               ; 68 50 02
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 51 ed
+    call 01972h                               ; e8 7c ea
     add sp, strict byte 00004h                ; 83 c4 04
     movzx ax, dl                              ; 0f b6 c2
@@ -3441,10 +3692,10 @@
     mov bx, ax                                ; 89 c3
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 28 ea
+    call 0165eh                               ; e8 53 e7
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_wait_for_interrupt_:                  ; 0xf2c3c LB 0x21
+floppy_wait_for_interrupt_:                  ; 0xf2f11 LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3453,18 +3704,18 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 06 ea
+    call 01650h                               ; e8 31 e7
     test AL, strict byte 080h                 ; a8 80
-    je short 02c52h                           ; 74 04
+    je short 02f27h                           ; 74 04
     and AL, strict byte 080h                  ; 24 80
-    jmp short 02c57h                          ; eb 05
+    jmp short 02f2ch                          ; eb 05
     sti                                       ; fb
     hlt                                       ; f4
     cli                                       ; fa
-    jmp short 02c41h                          ; eb ea
+    jmp short 02f16h                          ; eb ea
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_wait_for_interrupt_or_timeout_:       ; 0xf2c5d LB 0x46
+floppy_wait_for_interrupt_or_timeout_:       ; 0xf2f32 LB 0x46
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3475,26 +3726,26 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 01650h                               ; e8 e4 e9
+    call 01650h                               ; e8 0f e7
     test al, al                               ; 84 c0
-    jne short 02c75h                          ; 75 05
+    jne short 02f4ah                          ; 75 05
     sti                                       ; fb
     xor cl, cl                                ; 30 c9
-    jmp short 02c99h                          ; eb 24
+    jmp short 02f6eh                          ; eb 24
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 d2 e9
+    call 01650h                               ; e8 fd e6
     mov cl, al                                ; 88 c1
     test AL, strict byte 080h                 ; a8 80
-    je short 02c94h                           ; 74 10
+    je short 02f69h                           ; 74 10
     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 0165eh                               ; e8 cc e9
-    jmp short 02c99h                          ; eb 05
+    call 0165eh                               ; e8 f7 e6
+    jmp short 02f6eh                          ; eb 05
     sti                                       ; fb
     hlt                                       ; f4
     cli                                       ; fa
-    jmp short 02c64h                          ; eb cb
+    jmp short 02f39h                          ; eb cb
     mov al, cl                                ; 88 c8
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -3504,5 +3755,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_reset_controller_:                    ; 0xf2ca3 LB 0x2b
+floppy_reset_controller_:                    ; 0xf2f78 LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3526,5 +3777,5 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02cbbh                          ; 75 f4
+    jne short 02f90h                          ; 75 f4
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -3532,5 +3783,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_prepare_controller_:                  ; 0xf2cce LB 0x81
+floppy_prepare_controller_:                  ; 0xf2fa3 LB 0x81
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3542,10 +3793,10 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 70 e9
+    call 01650h                               ; e8 9b e6
     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 0165eh                               ; e8 70 e9
+    call 0165eh                               ; e8 9b e6
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
@@ -3555,7 +3806,7 @@
     mov byte [bp-008h], al                    ; 88 46 f8
     test cx, cx                               ; 85 c9
-    je short 02d01h                           ; 74 04
+    je short 02fd6h                           ; 74 04
     mov AL, strict byte 020h                  ; b0 20
-    jmp short 02d03h                          ; eb 02
+    jmp short 02fd8h                          ; eb 02
     mov AL, strict byte 010h                  ; b0 10
     or AL, strict byte 00ch                   ; 0c 0c
@@ -3566,8 +3817,8 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 0165eh                               ; e8 48 e9
+    call 0165eh                               ; e8 73 e6
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 31 e9
+    call 01650h                               ; e8 5c e6
     shr al, 006h                              ; c0 e8 06
     mov dx, 003f7h                            ; ba f7 03
@@ -3579,12 +3830,12 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02d26h                          ; 75 f4
+    jne short 02ffbh                          ; 75 f4
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 02d47h                          ; 75 0f
-    call 02c3ch                               ; e8 01 ff
+    jne short 0301ch                          ; 75 0f
+    call 02f11h                               ; e8 01 ff
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 17 e9
+    call 0165eh                               ; e8 42 e6
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -3593,5 +3844,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_known_:                         ; 0xf2d4f LB 0x43
+floppy_media_known_:                         ; 0xf3024 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3601,23 +3852,23 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 f1 e8
+    call 01650h                               ; e8 1c e6
     mov ah, al                                ; 88 c4
     test bx, bx                               ; 85 db
-    je short 02d67h                           ; 74 02
+    je short 0303ch                           ; 74 02
     shr al, 1                                 ; d0 e8
     and AL, strict byte 001h                  ; 24 01
-    jne short 02d6fh                          ; 75 04
+    jne short 03044h                          ; 75 04
     xor ah, ah                                ; 30 e4
-    jmp short 02d8bh                          ; eb 1c
+    jmp short 03060h                          ; eb 1c
     mov dx, 00090h                            ; ba 90 00
     test bx, bx                               ; 85 db
-    je short 02d79h                           ; 74 03
+    je short 0304eh                           ; 74 03
     mov dx, 00091h                            ; ba 91 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 d1 e8
+    call 01650h                               ; e8 fc e5
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
     and AL, strict byte 001h                  ; 24 01
-    je short 02d6bh                           ; 74 e3
+    je short 03040h                           ; 74 e3
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -3626,5 +3877,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_read_id_:                             ; 0xf2d92 LB 0x40
+floppy_read_id_:                             ; 0xf3067 LB 0x40
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3634,5 +3885,5 @@
     sub sp, strict byte 00008h                ; 83 ec 08
     mov bx, ax                                ; 89 c3
-    call 02cceh                               ; e8 2e ff
+    call 02fa3h                               ; e8 2e ff
     mov AL, strict byte 04ah                  ; b0 4a
     mov dx, 003f5h                            ; ba f5 03
@@ -3640,9 +3891,9 @@
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02c3ch                               ; e8 90 fe
+    call 02f11h                               ; e8 90 fe
     xor si, si                                ; 31 f6
-    jmp short 02db5h                          ; eb 05
+    jmp short 0308ah                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 02dc1h                          ; 7d 0c
+    jnl short 03096h                          ; 7d 0c
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -3651,5 +3902,5 @@
     mov byte [bp+si-00eh], al                 ; 88 42 f2
     inc si                                    ; 46
-    jmp short 02db0h                          ; eb ef
+    jmp short 03085h                          ; eb ef
     test byte [bp-00eh], 0c0h                 ; f6 46 f2 c0
     db  00fh, 094h, 0c0h
@@ -3662,5 +3913,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_recal_:                         ; 0xf2dd2 LB 0x48
+floppy_drive_recal_:                         ; 0xf30a7 LB 0x48
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3669,5 +3920,5 @@
     push dx                                   ; 52
     mov bx, ax                                ; 89 c3
-    call 02cceh                               ; e8 f1 fe
+    call 02fa3h                               ; e8 f1 fe
     mov AL, strict byte 007h                  ; b0 07
     mov dx, 003f5h                            ; ba f5 03
@@ -3675,10 +3926,10 @@
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02c3ch                               ; e8 53 fe
+    call 02f11h                               ; e8 53 fe
     test bx, bx                               ; 85 db
-    je short 02df4h                           ; 74 07
+    je short 030c9h                           ; 74 07
     or AL, strict byte 002h                   ; 0c 02
     mov cx, 00095h                            ; b9 95 00
-    jmp short 02df9h                          ; eb 05
+    jmp short 030ceh                          ; eb 05
     or AL, strict byte 001h                   ; 0c 01
     mov cx, 00094h                            ; b9 94 00
@@ -3686,9 +3937,9 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 59 e8
+    call 0165eh                               ; e8 84 e5
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 4f e8
+    call 0165eh                               ; e8 7a e5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -3698,5 +3949,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_sense_:                         ; 0xf2e1a LB 0xf0
+floppy_media_sense_:                         ; 0xf30ef LB 0xf0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3707,49 +3958,49 @@
     push di                                   ; 57
     mov di, ax                                ; 89 c7
-    call 02dd2h                               ; e8 ab ff
+    call 030a7h                               ; e8 ab ff
     test ax, ax                               ; 85 c0
-    jne short 02e30h                          ; 75 05
+    jne short 03105h                          ; 75 05
     xor cx, cx                                ; 31 c9
-    jmp near 02efeh                           ; e9 ce 00
+    jmp near 031d3h                           ; e9 ce 00
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 76 e8
+    call 016ach                               ; e8 a1 e5
     test di, di                               ; 85 ff
-    jne short 02e41h                          ; 75 07
+    jne short 03116h                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 02e46h                          ; eb 05
+    jmp short 0311bh                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     cmp cl, 001h                              ; 80 f9 01
-    jne short 02e54h                          ; 75 09
+    jne short 03129h                          ; 75 09
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 015h                  ; b5 15
     mov si, strict word 00001h                ; be 01 00
-    jmp short 02e92h                          ; eb 3e
+    jmp short 03167h                          ; eb 3e
     cmp cl, 002h                              ; 80 f9 02
-    jne short 02e5fh                          ; 75 06
+    jne short 03134h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 035h                  ; b5 35
-    jmp short 02e4fh                          ; eb f0
+    jmp short 03124h                          ; eb f0
     cmp cl, 003h                              ; 80 f9 03
-    jne short 02e6ah                          ; 75 06
+    jne short 0313fh                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 02e4fh                          ; eb e5
+    jmp short 03124h                          ; eb e5
     cmp cl, 004h                              ; 80 f9 04
-    jne short 02e75h                          ; 75 06
+    jne short 0314ah                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 02e4fh                          ; eb da
+    jmp short 03124h                          ; eb da
     cmp cl, 005h                              ; 80 f9 05
-    jne short 02e80h                          ; 75 06
+    jne short 03155h                          ; 75 06
     mov CL, strict byte 0cch                  ; b1 cc
     mov CH, strict byte 0d7h                  ; b5 d7
-    jmp short 02e4fh                          ; eb cf
+    jmp short 03124h                          ; eb cf
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 02e8ah                           ; 74 05
+    je short 0315fh                           ; 74 05
     cmp cl, 00fh                              ; 80 f9 0f
-    jne short 02e8ch                          ; 75 02
-    jmp short 02e7ah                          ; eb ee
+    jne short 03161h                          ; 75 02
+    jmp short 0314fh                          ; eb ee
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
@@ -3758,32 +4009,32 @@
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 c0 e7
+    call 0165eh                               ; e8 eb e4
     mov ax, di                                ; 89 f8
-    call 02d92h                               ; e8 ef fe
+    call 03067h                               ; e8 ef fe
     test ax, ax                               ; 85 c0
-    jne short 02ed9h                          ; 75 32
+    jne short 031aeh                          ; 75 32
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    je short 02ed9h                           ; 74 2a
+    je short 031aeh                           ; 74 2a
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 02ec6h                           ; 74 0f
+    je short 0319bh                           ; 74 0f
     mov ah, cl                                ; 88 cc
     and ah, 03fh                              ; 80 e4 3f
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02ed2h                           ; 74 12
+    je short 031a7h                           ; 74 12
     test al, al                               ; 84 c0
-    je short 02ecbh                           ; 74 07
-    jmp short 02e92h                          ; eb cc
+    je short 031a0h                           ; 74 07
+    jmp short 03167h                          ; eb cc
     and cl, 03fh                              ; 80 e1 3f
-    jmp short 02e92h                          ; eb c7
+    jmp short 03167h                          ; eb c7
     mov cl, ah                                ; 88 e1
     or cl, 040h                               ; 80 c9 40
-    jmp short 02e92h                          ; eb c0
+    jmp short 03167h                          ; eb c0
     mov cl, ah                                ; 88 e1
     or cl, 080h                               ; 80 c9 80
-    jmp short 02e92h                          ; eb b9
+    jmp short 03167h                          ; eb b9
     test di, di                               ; 85 ff
     db  00fh, 095h, 0c0h
@@ -3794,9 +4045,9 @@
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 6d e7
+    call 0165eh                               ; e8 98 e4
     movzx bx, ch                              ; 0f b6 dd
     mov dx, di                                ; 89 fa
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 62 e7
+    call 0165eh                               ; e8 8d e4
     mov cx, si                                ; 89 f1
     mov ax, cx                                ; 89 c8
@@ -3809,5 +4060,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_exists_:                        ; 0xf2f0a LB 0x24
+floppy_drive_exists_:                        ; 0xf31df LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3815,9 +4066,9 @@
     mov dx, ax                                ; 89 c2
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 96 e7
+    call 016ach                               ; e8 c1 e4
     test dx, dx                               ; 85 d2
-    jne short 02f1fh                          ; 75 05
+    jne short 031f4h                          ; 75 05
     shr al, 004h                              ; c0 e8 04
-    jmp short 02f21h                          ; eb 02
+    jmp short 031f6h                          ; eb 02
     and AL, strict byte 00fh                  ; 24 0f
     test al, al                               ; 84 c0
@@ -3829,5 +4080,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_diskette_function:                    ; 0xf2f2e LB 0x8f7
+_int13_diskette_function:                    ; 0xf3203 LB 0x8f7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3847,36 +4098,36 @@
     mov word [bp-010h], dx                    ; 89 56 f0
     cmp bl, 008h                              ; 80 fb 08
-    jc short 02f95h                           ; 72 38
+    jc short 0326ah                           ; 72 38
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     or dl, 001h                               ; 80 ca 01
     cmp bl, 008h                              ; 80 fb 08
-    jbe near 034ebh                           ; 0f 86 81 05
+    jbe near 037c0h                           ; 0f 86 81 05
     cmp bl, 016h                              ; 80 fb 16
-    jc short 02f8bh                           ; 72 1c
+    jc short 03260h                           ; 72 1c
     or si, 00100h                             ; 81 ce 00 01
     cmp bl, 016h                              ; 80 fb 16
-    jbe near 0361fh                           ; 0f 86 a5 06
+    jbe near 038f4h                           ; 0f 86 a5 06
     cmp bl, 018h                              ; 80 fb 18
-    je near 036b5h                            ; 0f 84 34 07
+    je near 0398ah                            ; 0f 84 34 07
     cmp bl, 017h                              ; 80 fb 17
-    je near 03643h                            ; 0f 84 bb 06
-    jmp near 03802h                           ; e9 77 08
+    je near 03918h                            ; 0f 84 bb 06
+    jmp near 03ad7h                           ; e9 77 08
     cmp bl, 015h                              ; 80 fb 15
-    je near 035dbh                            ; 0f 84 49 06
-    jmp near 03802h                           ; e9 6d 08
+    je near 038b0h                            ; 0f 84 49 06
+    jmp near 03ad7h                           ; e9 6d 08
     cmp bl, 001h                              ; 80 fb 01
-    jc short 02fafh                           ; 72 15
-    jbe near 03028h                           ; 0f 86 8a 00
+    jc short 03284h                           ; 72 15
+    jbe near 032fdh                           ; 0f 86 8a 00
     cmp bl, 005h                              ; 80 fb 05
-    je near 03365h                            ; 0f 84 c0 03
+    je near 0363ah                            ; 0f 84 c0 03
     cmp bl, 004h                              ; 80 fb 04
-    jbe near 03046h                           ; 0f 86 9a 00
-    jmp near 03802h                           ; e9 53 08
+    jbe near 0331bh                           ; 0f 86 9a 00
+    jmp near 03ad7h                           ; e9 53 08
     test bl, bl                               ; 84 db
-    jne near 03802h                           ; 0f 85 4d 08
+    jne near 03ad7h                           ; 0f 85 4d 08
     mov al, byte [bp+00eh]                    ; 8a 46 0e
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 02fd3h                          ; 76 14
+    jbe short 032a8h                          ; 76 14
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -3884,17 +4135,17 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02bf7h                               ; e8 27 fc
-    jmp near 03341h                           ; e9 6e 03
+    call 02ecch                               ; e8 27 fc
+    jmp near 03616h                           ; e9 6e 03
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 d3 e6
+    call 016ach                               ; e8 fe e3
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 02fe6h                          ; 75 07
+    jne short 032bbh                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 02febh                          ; eb 05
+    jmp short 032c0h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     test cl, cl                               ; 84 c9
-    jne short 02fffh                          ; 75 10
+    jne short 032d4h                          ; 75 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -3902,17 +4153,17 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp short 02fcdh                          ; eb ce
+    jmp short 032a2h                          ; eb ce
     xor bx, bx                                ; 31 db
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 54 e6
+    call 0165eh                               ; e8 7f e3
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02bf7h                               ; e8 e3 fb
+    call 02ecch                               ; e8 e3 fb
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     xor dx, dx                                ; 31 d2
-    call 02c0fh                               ; e8 ee fb
+    call 02ee4h                               ; e8 ee fb
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -3923,5 +4174,5 @@
     mov dx, 00441h                            ; ba 41 04
     xor ax, ax                                ; 31 c0
-    call 01650h                               ; e8 1c e6
+    call 01650h                               ; e8 47 e3
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
@@ -3929,6 +4180,6 @@
     mov word [bp+016h], si                    ; 89 76 16
     test al, al                               ; 84 c0
-    je short 03021h                           ; 74 de
-    jmp near 03341h                           ; e9 fb 02
+    je short 032f6h                           ; 74 de
+    jmp near 03616h                           ; e9 fb 02
     mov ch, cl                                ; 88 cd
     mov dl, byte [bp-010h]                    ; 8a 56 f0
@@ -3940,19 +4191,19 @@
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 0306fh                         ; 77 0e
+    jnbe short 03344h                         ; 77 0e
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 0306fh                         ; 77 09
+    jnbe short 03344h                         ; 77 09
     test cl, cl                               ; 84 c9
-    je short 0306fh                           ; 74 05
+    je short 03344h                           ; 74 05
     cmp cl, 048h                              ; 80 f9 48
-    jbe short 03099h                          ; 76 2a
-    mov bx, 00da2h                            ; bb a2 0d
+    jbe short 0336eh                          ; 76 2a
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 b7 e8
-    push 00255h                               ; 68 55 02
-    push 0026dh                               ; 68 6d 02
+    call 01931h                               ; e8 e2 e5
+    push 00275h                               ; 68 75 02
+    push 0028dh                               ; 68 8d 02
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 ed e8
+    call 01972h                               ; e8 18 e6
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -3961,18 +4212,18 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 0310fh                           ; e9 76 00
+    jmp near 033e4h                           ; e9 76 00
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02f0ah                               ; e8 6a fe
+    call 031dfh                               ; e8 6a fe
     test ax, ax                               ; 85 c0
-    je near 031a2h                            ; 0f 84 fc 00
+    je near 03477h                            ; 0f 84 fc 00
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     mov ax, dx                                ; 89 d0
-    call 02d4fh                               ; e8 a0 fc
+    call 03024h                               ; e8 a0 fc
     test ax, ax                               ; 85 c0
-    jne short 030cch                          ; 75 19
+    jne short 033a1h                          ; 75 19
     mov ax, dx                                ; 89 d0
-    call 02e1ah                               ; e8 62 fd
+    call 030efh                               ; e8 62 fd
     test ax, ax                               ; 85 c0
-    jne short 030cch                          ; 75 10
+    jne short 033a1h                          ; 75 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -3980,7 +4231,7 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp short 0310fh                          ; eb 43
+    jmp short 033e4h                          ; eb 43
     cmp byte [bp-006h], 002h                  ; 80 7e fa 02
-    jne near 03234h                           ; 0f 85 60 01
+    jne near 03509h                           ; 0f 85 60 01
     mov ax, word [bp+006h]                    ; 8b 46 06
     shr ax, 00ch                              ; c1 e8 0c
@@ -3992,5 +4243,5 @@
     mov word [bp-012h], bx                    ; 89 5e ee
     cmp dx, bx                                ; 39 da
-    jbe short 030f0h                          ; 76 02
+    jbe short 033c5h                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
@@ -4001,5 +4252,5 @@
     add ax, bx                                ; 01 d8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 03119h                          ; 73 18
+    jnc short 033eeh                          ; 73 18
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4007,7 +4258,7 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00009h                ; b8 09 00
-    call 02bf7h                               ; e8 e5 fa
+    call 02ecch                               ; e8 e5 fa
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 03341h                           ; e9 28 02
+    jmp near 03616h                           ; e9 28 02
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -4041,5 +4292,5 @@
     out DX, AL                                ; ee
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02cceh                               ; e8 70 fb
+    call 02fa3h                               ; e8 70 fb
     mov AL, strict byte 0e6h                  ; b0 e6
     mov dx, 003f5h                            ; ba f5 03
@@ -4069,8 +4320,8 @@
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02c5dh                               ; e8 c2 fa
+    call 02f32h                               ; e8 c2 fa
     test al, al                               ; 84 c0
-    jne short 031b3h                          ; 75 14
-    call 02ca3h                               ; e8 01 fb
+    jne short 03488h                          ; 75 14
+    call 02f78h                               ; e8 01 fb
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4078,5 +4329,5 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp near 0310fh                           ; e9 5c ff
+    jmp near 033e4h                           ; e9 5c ff
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -4085,14 +4336,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 031cdh                           ; 74 0e
-    push 00255h                               ; 68 55 02
-    push 00288h                               ; 68 88 02
+    je short 034a2h                           ; 74 0e
+    push 00275h                               ; 68 75 02
+    push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 a8 e7
+    call 01972h                               ; e8 d3 e4
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 031d6h                          ; eb 05
+    jmp short 034abh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 031eeh                          ; 7d 18
+    jnl short 034c3h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -4103,9 +4354,9 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 73 e4
+    call 0165eh                               ; e8 9e e1
     inc si                                    ; 46
-    jmp short 031d1h                          ; eb e3
+    jmp short 034a6h                          ; eb e3
     test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je short 03205h                           ; 74 11
+    je short 034dah                           ; 74 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4113,5 +4364,5 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00020h                ; b8 20 00
-    jmp near 0310fh                           ; e9 0a ff
+    jmp near 033e4h                           ; e9 0a ff
     movzx ax, ch                              ; 0f b6 c5
     sal ax, 009h                              ; c1 e0 09
@@ -4131,9 +4382,9 @@
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02c0fh                               ; e8 e2 f9
+    call 02ee4h                               ; e8 e2 f9
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 036aeh                           ; e9 7a 04
+    jmp near 03983h                           ; e9 7a 04
     cmp byte [bp-006h], 003h                  ; 80 7e fa 03
-    jne near 0334fh                           ; 0f 85 13 01
+    jne near 03624h                           ; 0f 85 13 01
     mov ax, word [bp+006h]                    ; 8b 46 06
     shr ax, 00ch                              ; c1 e8 0c
@@ -4145,5 +4396,5 @@
     mov word [bp-012h], bx                    ; 89 5e ee
     cmp dx, bx                                ; 39 da
-    jbe short 03258h                          ; 76 02
+    jbe short 0352dh                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
@@ -4154,5 +4405,5 @@
     add ax, bx                                ; 01 d8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jc near 03101h                            ; 0f 82 96 fe
+    jc near 033d6h                            ; 0f 82 96 fe
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -4186,5 +4437,5 @@
     out DX, AL                                ; ee
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02cceh                               ; e8 1e fa
+    call 02fa3h                               ; e8 1e fa
     mov AL, strict byte 0c5h                  ; b0 c5
     mov dx, 003f5h                            ; ba f5 03
@@ -4214,7 +4465,7 @@
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02c5dh                               ; e8 70 f9
+    call 02f32h                               ; e8 70 f9
     test al, al                               ; 84 c0
-    je near 0319fh                            ; 0f 84 ac fe
+    je near 03474h                            ; 0f 84 ac fe
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -4223,14 +4474,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 0330dh                           ; 74 0e
-    push 00255h                               ; 68 55 02
-    push 00288h                               ; 68 88 02
+    je short 035e2h                           ; 74 0e
+    push 00275h                               ; 68 75 02
+    push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 68 e6
+    call 01972h                               ; e8 93 e3
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 03316h                          ; eb 05
+    jmp short 035ebh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 0332eh                          ; 7d 18
+    jnl short 03603h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -4241,22 +4492,22 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 33 e3
+    call 0165eh                               ; e8 5e e0
     inc si                                    ; 46
-    jmp short 03311h                          ; eb e3
+    jmp short 035e6h                          ; eb e3
     test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je near 03222h                            ; 0f 84 ec fe
+    je near 034f7h                            ; 0f 84 ec fe
     test byte [bp-019h], 002h                 ; f6 46 e7 02
-    je short 03348h                           ; 74 0c
+    je short 0361dh                           ; 74 0c
     mov word [bp+016h], 00300h                ; c7 46 16 00 03
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 03021h                           ; e9 d9 fc
+    jmp near 032f6h                           ; e9 d9 fc
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
-    jmp short 03341h                          ; eb f2
+    jmp short 03616h                          ; eb f2
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02c0fh                               ; e8 b5 f8
+    call 02ee4h                               ; e8 b5 f8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 03021h                           ; e9 bc fc
+    jmp near 032f6h                           ; e9 bc fc
     mov ch, byte [bp+016h]                    ; 8a 6e 16
     mov ax, word [bp+014h]                    ; 8b 46 14
@@ -4269,13 +4520,13 @@
     mov byte [bp-008h], bl                    ; 88 5e f8
     cmp bl, 001h                              ; 80 fb 01
-    jnbe short 03397h                         ; 77 12
+    jnbe short 0366ch                         ; 77 12
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 03397h                         ; 77 0d
+    jnbe short 0366ch                         ; 77 0d
     cmp AL, strict byte 04fh                  ; 3c 4f
-    jnbe short 03397h                         ; 77 09
+    jnbe short 0366ch                         ; 77 09
     test ch, ch                               ; 84 ed
-    je short 03397h                           ; 74 05
+    je short 0366ch                           ; 74 05
     cmp ch, 012h                              ; 80 fd 12
-    jbe short 033ach                          ; 76 15
+    jbe short 03681h                          ; 76 15
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4283,19 +4534,19 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02bf7h                               ; e8 4f f8
+    call 02ecch                               ; e8 4f f8
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02f0ah                               ; e8 57 fb
+    call 031dfh                               ; e8 57 fb
     test ax, ax                               ; 85 c0
-    je near 02fefh                            ; 0f 84 36 fc
+    je near 032c4h                            ; 0f 84 36 fc
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     mov ax, dx                                ; 89 d0
-    call 02d4fh                               ; e8 8d f9
+    call 03024h                               ; e8 8d f9
     test ax, ax                               ; 85 c0
-    jne short 033d1h                          ; 75 0b
+    jne short 036a6h                          ; 75 0b
     mov ax, dx                                ; 89 d0
-    call 02e1ah                               ; e8 4f fa
+    call 030efh                               ; e8 4f fa
     test ax, ax                               ; 85 c0
-    je near 030bch                            ; 0f 84 eb fc
+    je near 03391h                            ; 0f 84 eb fc
     mov ax, word [bp+006h]                    ; 8b 46 06
     shr ax, 00ch                              ; c1 e8 0c
@@ -4307,5 +4558,5 @@
     mov word [bp-012h], bx                    ; 89 5e ee
     cmp dx, bx                                ; 39 da
-    jbe short 033edh                          ; 76 02
+    jbe short 036c2h                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
@@ -4316,5 +4567,5 @@
     add ax, bx                                ; 01 d8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jc near 03101h                            ; 0f 82 01 fd
+    jc near 033d6h                            ; 0f 82 01 fd
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -4348,5 +4599,5 @@
     out DX, AL                                ; ee
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02cceh                               ; e8 89 f8
+    call 02fa3h                               ; e8 89 f8
     mov AL, strict byte 00fh                  ; b0 0f
     mov dx, 003f5h                            ; ba f5 03
@@ -4372,9 +4623,9 @@
     mov AL, strict byte 0f6h                  ; b0 f6
     out DX, AL                                ; ee
-    call 02c5dh                               ; e8 e9 f7
+    call 02f32h                               ; e8 e9 f7
     test al, al                               ; 84 c0
-    jne short 0347eh                          ; 75 06
-    call 02ca3h                               ; e8 28 f8
-    jmp near 02fefh                           ; e9 71 fb
+    jne short 03753h                          ; 75 06
+    call 02f78h                               ; e8 28 f8
+    jmp near 032c4h                           ; e9 71 fb
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -4383,14 +4634,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03498h                           ; 74 0e
-    push 00255h                               ; 68 55 02
-    push 00288h                               ; 68 88 02
+    je short 0376dh                           ; 74 0e
+    push 00275h                               ; 68 75 02
+    push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 dd e4
+    call 01972h                               ; e8 08 e2
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 034a1h                          ; eb 05
+    jmp short 03776h                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 034b9h                          ; 7d 18
+    jnl short 0378eh                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -4401,27 +4652,27 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 a8 e1
+    call 0165eh                               ; e8 d3 de
     inc si                                    ; 46
-    jmp short 0349ch                          ; eb e3
+    jmp short 03771h                          ; eb e3
     test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je short 034d5h                           ; 74 16
+    je short 037aah                           ; 74 16
     test byte [bp-019h], 002h                 ; f6 46 e7 02
-    jne near 0333ch                           ; 0f 85 75 fe
-    push 00255h                               ; 68 55 02
-    push 0029ch                               ; 68 9c 02
+    jne near 03611h                           ; 0f 85 75 fe
+    push 00275h                               ; 68 75 02
+    push 002bch                               ; 68 bc 02
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 a0 e4
+    call 01972h                               ; e8 cb e1
     add sp, strict byte 00006h                ; 83 c4 06
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02bf7h                               ; e8 18 f7
+    call 02ecch                               ; e8 18 f7
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     xor dx, dx                                ; 31 d2
-    call 02c0fh                               ; e8 27 f7
-    jmp near 036aeh                           ; e9 c3 01
+    call 02ee4h                               ; e8 27 f7
+    jmp near 03983h                           ; e9 c3 01
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 0350fh                          ; 76 1d
+    jbe short 037e4h                          ; 76 1d
     xor ax, ax                                ; 31 c0
     mov word [bp+016h], ax                    ; 89 46 16
@@ -4433,20 +4684,20 @@
     movzx ax, ch                              ; 0f b6 c5
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 0362ch                           ; e9 1d 01
+    jmp near 03901h                           ; e9 1d 01
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 97 e1
+    call 016ach                               ; e8 c2 de
     mov cl, al                                ; 88 c1
     xor ch, ch                                ; 30 ed
     test AL, strict byte 0f0h                 ; a8 f0
-    je short 0351fh                           ; 74 02
+    je short 037f4h                           ; 74 02
     mov CH, strict byte 001h                  ; b5 01
     test cl, 00fh                             ; f6 c1 0f
-    je short 03526h                           ; 74 02
+    je short 037fbh                           ; 74 02
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 03531h                          ; 75 05
+    jne short 03806h                          ; 75 05
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03534h                          ; eb 03
+    jmp short 03809h                          ; eb 03
     and cl, 00fh                              ; 80 e1 0f
     mov byte [bp+011h], 000h                  ; c6 46 11 00
@@ -4463,59 +4714,59 @@
     mov word [bp+012h], ax                    ; 89 46 12
     cmp cl, 003h                              ; 80 f9 03
-    jc short 03572h                           ; 72 15
-    jbe short 03599h                          ; 76 3a
+    jc short 03847h                           ; 72 15
+    jbe short 0386eh                          ; 76 3a
     cmp cl, 005h                              ; 80 f9 05
-    jc short 035a0h                           ; 72 3c
-    jbe short 035a7h                          ; 76 41
+    jc short 03875h                           ; 72 3c
+    jbe short 0387ch                          ; 76 41
     cmp cl, 00fh                              ; 80 f9 0f
-    je short 035b5h                           ; 74 4a
+    je short 0388ah                           ; 74 4a
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 035aeh                           ; 74 3e
-    jmp short 035bch                          ; eb 4a
+    je short 03883h                           ; 74 3e
+    jmp short 03891h                          ; eb 4a
     cmp cl, 002h                              ; 80 f9 02
-    je short 03592h                           ; 74 1b
+    je short 03867h                           ; 74 1b
     cmp cl, 001h                              ; 80 f9 01
-    je short 0358bh                           ; 74 0f
+    je short 03860h                           ; 74 0f
     test cl, cl                               ; 84 c9
-    jne short 035bch                          ; 75 3c
+    jne short 03891h                          ; 75 3c
     mov word [bp+014h], strict word 00000h    ; c7 46 14 00 00
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 035cah                          ; eb 3f
+    jmp short 0389fh                          ; eb 3f
     mov word [bp+014h], 02709h                ; c7 46 14 09 27
-    jmp short 035cah                          ; eb 38
+    jmp short 0389fh                          ; eb 38
     mov word [bp+014h], 04f0fh                ; c7 46 14 0f 4f
-    jmp short 035cah                          ; eb 31
+    jmp short 0389fh                          ; eb 31
     mov word [bp+014h], 04f09h                ; c7 46 14 09 4f
-    jmp short 035cah                          ; eb 2a
+    jmp short 0389fh                          ; eb 2a
     mov word [bp+014h], 04f12h                ; c7 46 14 12 4f
-    jmp short 035cah                          ; eb 23
+    jmp short 0389fh                          ; eb 23
     mov word [bp+014h], 04f24h                ; c7 46 14 24 4f
-    jmp short 035cah                          ; eb 1c
+    jmp short 0389fh                          ; eb 1c
     mov word [bp+014h], 0fe3fh                ; c7 46 14 3f fe
-    jmp short 035cah                          ; eb 15
+    jmp short 0389fh                          ; eb 15
     mov word [bp+014h], 0feffh                ; c7 46 14 ff fe
-    jmp short 035cah                          ; eb 0e
-    push 00255h                               ; 68 55 02
-    push 002adh                               ; 68 ad 02
+    jmp short 0389fh                          ; eb 0e
+    push 00275h                               ; 68 75 02
+    push 002cdh                               ; 68 cd 02
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 ab e3
+    call 01972h                               ; e8 d6 e0
     add sp, strict byte 00006h                ; 83 c4 06
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     movzx ax, cl                              ; 0f b6 c1
-    call 03825h                               ; e8 50 02
+    call 03afah                               ; e8 50 02
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 036aeh                           ; e9 d3 00
+    jmp near 03983h                           ; e9 d3 00
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 035e7h                          ; 76 05
+    jbe short 038bch                          ; 76 05
     mov word [bp+016h], si                    ; 89 76 16
-    jmp short 0362ch                          ; eb 45
+    jmp short 03901h                          ; eb 45
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 bf e0
+    call 016ach                               ; e8 ea dd
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 035fah                          ; 75 07
+    jne short 038cfh                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 035ffh                          ; eb 05
+    jmp short 038d4h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
@@ -4524,19 +4775,19 @@
     xor dh, dh                                ; 30 f6
     test cl, cl                               ; 84 c9
-    je short 03619h                           ; 74 0d
+    je short 038eeh                           ; 74 0d
     cmp cl, 001h                              ; 80 f9 01
-    jbe short 03616h                          ; 76 05
+    jbe short 038ebh                          ; 76 05
     or dh, 002h                               ; 80 ce 02
-    jmp short 03619h                          ; eb 03
+    jmp short 038eeh                          ; eb 03
     or dh, 001h                               ; 80 ce 01
     mov word [bp+016h], dx                    ; 89 56 16
-    jmp near 03021h                           ; e9 02 fa
+    jmp near 032f6h                           ; e9 02 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03632h                          ; 76 0f
+    jbe short 03907h                          ; 76 0f
     mov word [bp+016h], si                    ; 89 76 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02bf7h                               ; e8 cb f5
+    call 02ecch                               ; e8 cb f5
     mov word [bp+01ch], dx                    ; 89 56 1c
-    jmp near 03021h                           ; e9 ef f9
+    jmp near 032f6h                           ; e9 ef f9
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4544,13 +4795,13 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 02fcdh                           ; e9 8a f9
+    jmp near 032a2h                           ; e9 8a f9
     mov byte [bp-008h], al                    ; 88 46 f8
     mov bl, cl                                ; 88 cb
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 03623h                         ; 77 d7
+    jnbe short 038f8h                         ; 77 d7
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02f0ah                               ; e8 b7 f8
+    call 031dfh                               ; e8 b7 f8
     test ax, ax                               ; 85 c0
-    je near 02fefh                            ; 0f 84 96 f9
+    je near 032c4h                            ; 0f 84 96 f9
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
     db  00fh, 095h, 0c0h
@@ -4560,32 +4811,32 @@
     mov word [bp-012h], dx                    ; 89 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 e0 df
+    call 01650h                               ; e8 0b dd
     and AL, strict byte 00fh                  ; 24 0f
     cmp bl, 002h                              ; 80 fb 02
-    jc short 03686h                           ; 72 0f
-    jbe short 03692h                          ; 76 19
+    jc short 0395bh                           ; 72 0f
+    jbe short 03967h                          ; 76 19
     cmp bl, 004h                              ; 80 fb 04
-    je short 0368eh                           ; 74 10
+    je short 03963h                           ; 74 10
     cmp bl, 003h                              ; 80 fb 03
-    je short 03696h                           ; 74 13
-    jmp near 02fbfh                           ; e9 39 f9
+    je short 0396bh                           ; 74 13
+    jmp near 03294h                           ; e9 39 f9
     cmp bl, 001h                              ; 80 fb 01
-    je short 0368eh                           ; 74 03
-    jmp near 02fbfh                           ; e9 31 f9
+    je short 03963h                           ; 74 03
+    jmp near 03294h                           ; e9 31 f9
     or AL, strict byte 090h                   ; 0c 90
-    jmp short 03698h                          ; eb 06
+    jmp short 0396dh                          ; eb 06
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 03698h                          ; eb 02
+    jmp short 0396dh                          ; eb 02
     or AL, strict byte 010h                   ; 0c 10
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-012h]                    ; 8b 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 ba df
+    call 0165eh                               ; e8 e5 dc
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02bf7h                               ; e8 49 f5
+    call 02ecch                               ; e8 49 f5
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp near 03021h                           ; e9 6c f9
+    jmp near 032f6h                           ; e9 6c f9
     mov byte [bp-008h], al                    ; 88 46 f8
     mov ch, ah                                ; 88 e5
@@ -4597,18 +4848,18 @@
     mov byte [bp-00ch], bl                    ; 88 5e f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe near 03623h                          ; 0f 87 51 ff
+    jnbe near 038f8h                          ; 0f 87 51 ff
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02f0ah                               ; e8 31 f8
+    call 031dfh                               ; e8 31 f8
     test ax, ax                               ; 85 c0
-    je near 02fefh                            ; 0f 84 10 f9
+    je near 032c4h                            ; 0f 84 10 f9
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     mov ax, dx                                ; 89 d0
-    call 02d4fh                               ; e8 67 f6
+    call 03024h                               ; e8 67 f6
     test ax, ax                               ; 85 c0
-    jne short 03706h                          ; 75 1a
+    jne short 039dbh                          ; 75 1a
     mov ax, dx                                ; 89 d0
-    call 02e1ah                               ; e8 29 f7
+    call 030efh                               ; e8 29 f7
     test ax, ax                               ; 85 c0
-    jne short 03706h                          ; 75 11
+    jne short 039dbh                          ; 75 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4616,12 +4867,12 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 02fcdh                           ; e9 c7 f8
+    jmp near 032a2h                           ; e9 c7 f8
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 a0 df
+    call 016ach                               ; e8 cb dc
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 03719h                          ; 75 07
+    jne short 039eeh                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 0371eh                          ; eb 05
+    jmp short 039f3h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
@@ -4633,94 +4884,94 @@
     mov word [bp-012h], dx                    ; 89 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 1b df
+    call 01650h                               ; e8 46 dc
     and AL, strict byte 00fh                  ; 24 0f
     cmp cl, 003h                              ; 80 f9 03
-    jc short 0375ah                           ; 72 1e
+    jc short 03a2fh                           ; 72 1e
     mov dl, al                                ; 88 c2
     or dl, 090h                               ; 80 ca 90
     cmp cl, 003h                              ; 80 f9 03
-    jbe short 03798h                          ; 76 52
+    jbe short 03a6dh                          ; 76 52
     mov ah, al                                ; 88 c4
     or ah, 010h                               ; 80 cc 10
     cmp cl, 005h                              ; 80 f9 05
-    je near 037bdh                            ; 0f 84 6b 00
+    je near 03a92h                            ; 0f 84 6b 00
     cmp cl, 004h                              ; 80 f9 04
-    je short 037a7h                           ; 74 50
-    jmp near 037d8h                           ; e9 7e 00
+    je short 03a7ch                           ; 74 50
+    jmp near 03aadh                           ; e9 7e 00
     cmp cl, 002h                              ; 80 f9 02
-    je short 0377ah                           ; 74 1b
+    je short 03a4fh                           ; 74 1b
     cmp cl, 001h                              ; 80 f9 01
-    jne near 037d8h                           ; 0f 85 72 00
+    jne near 03aadh                           ; 0f 85 72 00
     cmp byte [bp-00ch], 027h                  ; 80 7e f4 27
-    jne near 037d8h                           ; 0f 85 6a 00
+    jne near 03aadh                           ; 0f 85 6a 00
     cmp ch, 009h                              ; 80 fd 09
-    jne near 037d8h                           ; 0f 85 63 00
+    jne near 03aadh                           ; 0f 85 63 00
     or AL, strict byte 090h                   ; 0c 90
-    jmp near 037d8h                           ; e9 5e 00
+    jmp near 03aadh                           ; e9 5e 00
     cmp byte [bp-00ch], 027h                  ; 80 7e f4 27
-    jne short 03789h                          ; 75 09
+    jne short 03a5eh                          ; 75 09
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03789h                          ; 75 04
+    jne short 03a5eh                          ; 75 04
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 037d8h                          ; eb 4f
+    jmp short 03aadh                          ; eb 4f
     cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 037d8h                          ; 75 49
+    jne short 03aadh                          ; 75 49
     cmp ch, 00fh                              ; 80 fd 0f
-    jne short 037d8h                          ; 75 44
+    jne short 03aadh                          ; 75 44
     or AL, strict byte 010h                   ; 0c 10
-    jmp short 037d8h                          ; eb 40
+    jmp short 03aadh                          ; eb 40
     cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 037d8h                          ; 75 3a
+    jne short 03aadh                          ; 75 3a
     cmp ch, 009h                              ; 80 fd 09
-    jne short 037d8h                          ; 75 35
+    jne short 03aadh                          ; 75 35
     mov al, dl                                ; 88 d0
-    jmp short 037d8h                          ; eb 31
+    jmp short 03aadh                          ; eb 31
     cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 037d8h                          ; 75 2b
+    jne short 03aadh                          ; 75 2b
     cmp ch, 009h                              ; 80 fd 09
-    jne short 037b4h                          ; 75 02
-    jmp short 037a3h                          ; eb ef
+    jne short 03a89h                          ; 75 02
+    jmp short 03a78h                          ; eb ef
     cmp ch, 012h                              ; 80 fd 12
-    jne short 037d8h                          ; 75 1f
+    jne short 03aadh                          ; 75 1f
     mov al, ah                                ; 88 e0
-    jmp short 037d8h                          ; eb 1b
+    jmp short 03aadh                          ; eb 1b
     cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 037d8h                          ; 75 15
+    jne short 03aadh                          ; 75 15
     cmp ch, 009h                              ; 80 fd 09
-    jne short 037cah                          ; 75 02
-    jmp short 037a3h                          ; eb d9
+    jne short 03a9fh                          ; 75 02
+    jmp short 03a78h                          ; eb d9
     cmp ch, 012h                              ; 80 fd 12
-    jne short 037d1h                          ; 75 02
-    jmp short 037b9h                          ; eb e8
+    jne short 03aa6h                          ; 75 02
+    jmp short 03a8eh                          ; eb e8
     cmp ch, 024h                              ; 80 fd 24
-    jne short 037d8h                          ; 75 02
+    jne short 03aadh                          ; 75 02
     or AL, strict byte 0d0h                   ; 0c d0
     movzx dx, al                              ; 0f b6 d0
     sar dx, 004h                              ; c1 fa 04
     test dl, 001h                             ; f6 c2 01
-    je near 036f5h                            ; 0f 84 10 ff
+    je near 039cah                            ; 0f 84 10 ff
     movzx bx, al                              ; 0f b6 d8
     mov dx, word [bp-012h]                    ; 8b 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 6d de
+    call 0165eh                               ; e8 98 db
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     movzx ax, cl                              ; 0f b6 c1
-    call 03825h                               ; e8 29 00
+    call 03afah                               ; e8 29 00
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 036a4h                           ; e9 a2 fe
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 03979h                           ; e9 a2 fe
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 24 e1
+    call 01931h                               ; e8 4f de
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 00255h                               ; 68 55 02
-    push 002c2h                               ; 68 c2 02
+    push 00275h                               ; 68 75 02
+    push 002e2h                               ; 68 e2 02
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 53 e1
+    call 01972h                               ; e8 7e de
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 02fbfh                           ; e9 9a f7
-get_floppy_dpt_:                             ; 0xf3825 LB 0x2f
+    jmp near 03294h                           ; e9 9a f7
+get_floppy_dpt_:                             ; 0xf3afa LB 0x2f
     push bx                                   ; 53
     push dx                                   ; 52
@@ -4729,16 +4980,16 @@
     mov dl, al                                ; 88 c2
     xor ax, ax                                ; 31 c0
-    jmp short 03836h                          ; eb 06
+    jmp short 03b0bh                          ; eb 06
     inc ax                                    ; 40
     cmp ax, strict word 00007h                ; 3d 07 00
-    jnc short 0384dh                          ; 73 17
+    jnc short 03b22h                          ; 73 17
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     cmp dl, byte [word bx+0005bh]             ; 3a 97 5b 00
-    jne short 03830h                          ; 75 f0
+    jne short 03b05h                          ; 75 f0
     movzx ax, byte [word bx+0005ch]           ; 0f b6 87 5c 00
     imul ax, ax, strict byte 0000dh           ; 6b c0 0d
     add ax, strict word 00000h                ; 05 00 00
-    jmp short 03850h                          ; eb 03
+    jmp short 03b25h                          ; eb 03
     mov ax, strict word 00041h                ; b8 41 00
     pop bp                                    ; 5d
@@ -4746,5 +4997,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-dummy_soft_reset_:                           ; 0xf3854 LB 0x7
+dummy_soft_reset_:                           ; 0xf3b29 LB 0x7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4752,39 +5003,39 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_init:                                 ; 0xf385b LB 0x18
+_cdemu_init:                                 ; 0xf3b30 LB 0x18
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 05 de
+    call 0166ch                               ; e8 30 db
     xor bx, bx                                ; 31 db
-    mov dx, 00322h                            ; ba 22 03
-    call 0165eh                               ; e8 ef dd
+    mov dx, 00366h                            ; ba 66 03
+    call 0165eh                               ; e8 1a db
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_isactive:                             ; 0xf3873 LB 0x16
+_cdemu_isactive:                             ; 0xf3b48 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 0166ch                               ; e8 ed dd
-    mov dx, 00322h                            ; ba 22 03
-    call 01650h                               ; e8 cb dd
+    call 0166ch                               ; e8 18 db
+    mov dx, 00366h                            ; ba 66 03
+    call 01650h                               ; e8 f6 da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_emulated_drive:                       ; 0xf3889 LB 0x16
+_cdemu_emulated_drive:                       ; 0xf3b5e 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 0166ch                               ; e8 d7 dd
-    mov dx, 00324h                            ; ba 24 03
-    call 01650h                               ; e8 b5 dd
+    call 0166ch                               ; e8 02 db
+    mov dx, 00368h                            ; ba 68 03
+    call 01650h                               ; e8 e0 da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_eltorito:                             ; 0xf389f LB 0x189
+_int13_eltorito:                             ; 0xf3b74 LB 0x189
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4793,32 +5044,32 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 bf dd
-    mov si, 00322h                            ; be 22 03
+    call 0166ch                               ; e8 ea da
+    mov si, 00366h                            ; be 66 03
     mov di, ax                                ; 89 c7
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 0004bh                ; 3d 4b 00
-    jc short 038c7h                           ; 72 0a
-    jbe short 038edh                          ; 76 2e
+    jc short 03b9ch                           ; 72 0a
+    jbe short 03bc2h                          ; 76 2e
     cmp ax, strict word 0004dh                ; 3d 4d 00
-    jbe short 038ceh                          ; 76 0a
-    jmp near 039ech                           ; e9 25 01
+    jbe short 03ba3h                          ; 76 0a
+    jmp near 03cc1h                           ; e9 25 01
     cmp ax, strict word 0004ah                ; 3d 4a 00
-    jne near 039ech                           ; 0f 85 1e 01
-    mov bx, 00da2h                            ; bb a2 0d
+    jne near 03cc1h                           ; 0f 85 1e 01
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 58 e0
+    call 01931h                               ; e8 83 dd
     push word [bp+016h]                       ; ff 76 16
-    push 002dch                               ; 68 dc 02
-    push 002ebh                               ; 68 eb 02
+    push 002fch                               ; 68 fc 02
+    push 0030bh                               ; 68 0b 03
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 8b e0
+    call 01972h                               ; e8 b6 dd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 03a07h                           ; e9 1a 01
+    jmp near 03cdch                           ; e9 1a 01
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
     mov bx, strict word 00013h                ; bb 13 00
-    call 0165eh                               ; e8 65 dd
+    call 0165eh                               ; e8 90 da
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+001h]               ; 26 0f b6 5c 01
@@ -4826,5 +5077,5 @@
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 54 dd
+    call 0165eh                               ; e8 7f da
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+002h]               ; 26 0f b6 5c 02
@@ -4833,5 +5084,5 @@
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 42 dd
+    call 0165eh                               ; e8 6d da
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+003h]               ; 26 0f b6 5c 03
@@ -4839,5 +5090,5 @@
     add dx, strict byte 00003h                ; 83 c2 03
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 2f dd
+    call 0165eh                               ; e8 5a da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+008h]                 ; 26 8b 5c 08
@@ -4846,5 +5097,5 @@
     add dx, strict byte 00004h                ; 83 c2 04
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0169ah                               ; e8 55 dd
+    call 0169ah                               ; e8 80 da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+004h]                 ; 26 8b 5c 04
@@ -4852,5 +5103,5 @@
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 23 dd
+    call 0167ah                               ; e8 4e da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+006h]                 ; 26 8b 5c 06
@@ -4858,5 +5109,5 @@
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 11 dd
+    call 0167ah                               ; e8 3c da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
@@ -4864,5 +5115,5 @@
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 ff dc
+    call 0167ah                               ; e8 2a da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
@@ -4870,5 +5121,5 @@
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 ed dc
+    call 0167ah                               ; e8 18 da
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+012h]               ; 26 0f b6 5c 12
@@ -4876,5 +5127,5 @@
     add dx, strict byte 00010h                ; 83 c2 10
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 be dc
+    call 0165eh                               ; e8 e9 d9
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+014h]               ; 26 0f b6 5c 14
@@ -4882,5 +5133,5 @@
     add dx, strict byte 00011h                ; 83 c2 11
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 ab dc
+    call 0165eh                               ; e8 d6 d9
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+010h]               ; 26 0f b6 5c 10
@@ -4888,7 +5139,7 @@
     add dx, strict byte 00012h                ; 83 c2 12
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 98 dc
+    call 0165eh                               ; e8 c3 d9
     test byte [bp+016h], 0ffh                 ; f6 46 16 ff
-    jne short 039d2h                          ; 75 06
+    jne short 03ca7h                          ; 75 06
     mov es, di                                ; 8e c7
     mov byte [es:si], 000h                    ; 26 c6 04 00
@@ -4897,5 +5148,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 7d dc
+    call 0165eh                               ; e8 a8 d9
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -4904,14 +5155,14 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    mov bx, 00da2h                            ; bb a2 0d
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 3a df
+    call 01931h                               ; e8 65 dc
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 002dch                               ; 68 dc 02
-    push 00313h                               ; 68 13 03
-    jmp near 038e2h                           ; e9 db fe
+    push 002fch                               ; 68 fc 02
+    push 00333h                               ; 68 33 03
+    jmp near 03bb7h                           ; e9 db fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4923,8 +5174,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 3c dc
+    call 0165eh                               ; e8 67 d9
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 039e5h                          ; eb bd
-device_is_cdrom_:                            ; 0xf3a28 LB 0x35
+    jmp short 03cbah                          ; eb bd
+device_is_cdrom_:                            ; 0xf3cfd LB 0x35
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4934,15 +5185,15 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 34 dc
+    call 0166ch                               ; e8 5f d9
     cmp bl, 010h                              ; 80 fb 10
-    jc short 03a41h                           ; 72 04
+    jc short 03d16h                           ; 72 04
     xor ax, ax                                ; 31 c0
-    jmp short 03a56h                          ; eb 15
+    jmp short 03d2bh                          ; eb 15
     xor bh, bh                                ; 30 ff
-    imul bx, bx, strict byte 00018h           ; 6b db 18
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
     mov es, ax                                ; 8e c0
     add bx, 00122h                            ; 81 c3 22 01
-    cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
-    jne short 03a3dh                          ; 75 ea
+    cmp byte [es:bx+023h], 005h               ; 26 80 7f 23 05
+    jne short 03d12h                          ; 75 ea
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -4951,5 +5202,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf3a5d LB 0x416
+cdrom_boot_:                                 ; 0xf3d32 LB 0x416
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4962,28 +5213,28 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 fa db
+    call 0166ch                               ; e8 25 d9
     mov word [bp-018h], ax                    ; 89 46 e8
-    mov si, 00322h                            ; be 22 03
+    mov si, 00366h                            ; be 66 03
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-014h], 00122h                ; c7 46 ec 22 01
     mov word [bp-012h], ax                    ; 89 46 ee
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    jmp short 03a92h                          ; eb 09
+    jmp short 03d67h                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jnc short 03a9dh                          ; 73 0b
+    jnc short 03d72h                          ; 73 0b
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    call 03a28h                               ; e8 8f ff
+    call 03cfdh                               ; e8 8f ff
     test ax, ax                               ; 85 c0
-    je short 03a89h                           ; 74 ec
+    je short 03d5eh                           ; 74 ec
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jc short 03aa9h                           ; 72 06
+    jc short 03d7eh                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 03e10h                           ; e9 67 03
+    jmp near 040e5h                           ; e9 67 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-026h]                         ; 8d 46 da
-    call 097aah                               ; e8 f4 5c
+    call 09d6ah                               ; e8 df 5f
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
     mov ax, strict word 00011h                ; b8 11 00
@@ -4998,16 +5249,16 @@
     mov word [bp-01fh], ax                    ; 89 46 e1
     les bx, [bp-014h]                         ; c4 5e ec
-    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
+    db  066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 008h
+    ; mov dword [es:bx+00eh], strict dword 008000001h ; 66 26 c7 47 0e 01 00 00 08
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
-    jmp short 03aeeh                          ; eb 09
+    jmp short 03dc3h                          ; eb 09
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 004h                  ; 80 7e f2 04
-    jnbe short 03b25h                         ; 77 37
+    jnbe short 03dfah                         ; 77 37
     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
-    imul di, di, strict byte 00018h           ; 6b ff 18
+    imul di, di, strict byte 0001ch           ; 6b ff 1c
     mov es, [bp-012h]                         ; 8e 46 ee
     add di, word [bp-014h]                    ; 03 7e ec
-    movzx di, byte [es:di+01eh]               ; 26 0f b6 7d 1e
+    movzx di, byte [es:di+022h]               ; 26 0f b6 7d 22
     add di, di                                ; 01 ff
     lea dx, [bp-00826h]                       ; 8d 96 da f7
@@ -5024,33 +5275,33 @@
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    jne short 03ae5h                          ; 75 c0
+    jne short 03dbah                          ; 75 c0
     test ax, ax                               ; 85 c0
-    je short 03b2fh                           ; 74 06
+    je short 03e04h                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 03e10h                           ; e9 e1 02
+    jmp near 040e5h                           ; e9 e1 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
-    je short 03b3ch                           ; 74 06
+    je short 03e11h                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 03e10h                           ; e9 d4 02
+    jmp near 040e5h                           ; e9 d4 02
     xor di, di                                ; 31 ff
-    jmp short 03b46h                          ; eb 06
+    jmp short 03e1bh                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00005h                ; 83 ff 05
-    jnc short 03b56h                          ; 73 10
+    jnc short 03e2bh                          ; 73 10
     mov al, byte [bp+di-00825h]               ; 8a 83 db f7
-    cmp al, byte [di+00daah]                  ; 3a 85 aa 0d
-    je short 03b40h                           ; 74 f0
+    cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
+    je short 03e15h                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 03e10h                           ; e9 ba 02
+    jmp near 040e5h                           ; e9 ba 02
     xor di, di                                ; 31 ff
-    jmp short 03b60h                          ; eb 06
+    jmp short 03e35h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00017h                ; 83 ff 17
-    jnc short 03b70h                          ; 73 10
+    jnc short 03e45h                          ; 73 10
     mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
-    cmp al, byte [di+00db0h]                  ; 3a 85 b0 0d
-    je short 03b5ah                           ; 74 f0
+    cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
+    je short 03e2fh                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 03e10h                           ; e9 a0 02
+    jmp near 040e5h                           ; e9 a0 02
     mov ax, word [bp-007dfh]                  ; 8b 86 21 f8
     mov dx, word [bp-007ddh]                  ; 8b 96 23 f8
@@ -5065,8 +5316,8 @@
     mov word [bp-01fh], ax                    ; 89 46 e1
     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
-    imul di, di, strict byte 00018h           ; 6b ff 18
+    imul di, di, strict byte 0001ch           ; 6b ff 1c
     mov es, [bp-012h]                         ; 8e 46 ee
     add di, word [bp-014h]                    ; 03 7e ec
-    movzx di, byte [es:di+01eh]               ; 26 0f b6 7d 1e
+    movzx di, byte [es:di+022h]               ; 26 0f b6 7d 22
     add di, di                                ; 01 ff
     lea dx, [bp-00826h]                       ; 8d 96 da f7
@@ -5083,36 +5334,36 @@
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    je short 03bcdh                           ; 74 06
+    je short 03ea2h                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 03e10h                           ; e9 43 02
+    jmp near 040e5h                           ; e9 43 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
-    je short 03bdah                           ; 74 06
+    je short 03eafh                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 03e10h                           ; e9 36 02
+    jmp near 040e5h                           ; e9 36 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
-    je short 03be7h                           ; 74 06
+    je short 03ebch                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 03e10h                           ; e9 29 02
+    jmp near 040e5h                           ; e9 29 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
-    je short 03bf4h                           ; 74 06
+    je short 03ec9h                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 03e10h                           ; e9 1c 02
+    jmp near 040e5h                           ; e9 1c 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
-    jne short 03beeh                          ; 75 f3
+    jne short 03ec3h                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
-    je short 03c08h                           ; 74 06
+    je short 03eddh                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 03e10h                           ; e9 08 02
+    jmp near 040e5h                           ; e9 08 02
     mov al, byte [bp-00805h]                  ; 8a 86 fb f7
     mov es, [bp-010h]                         ; 8e 46 f0
     mov byte [es:si+001h], al                 ; 26 88 44 01
     cmp byte [bp-00805h], 000h                ; 80 be fb f7 00
-    jne short 03c21h                          ; 75 07
+    jne short 03ef6h                          ; 75 07
     mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
-    jmp short 03c34h                          ; eb 13
+    jmp short 03f09h                          ; eb 13
     cmp byte [bp-00805h], 004h                ; 80 be fb f7 04
-    jnc short 03c2fh                          ; 73 07
+    jnc short 03f04h                          ; 73 07
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
-    jmp short 03c34h                          ; eb 05
+    jmp short 03f09h                          ; eb 05
     mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
@@ -5132,5 +5383,5 @@
     mov word [bp-016h], ax                    ; 89 46 ea
     test ax, ax                               ; 85 c0
-    jne short 03c62h                          ; 75 05
+    jne short 03f37h                          ; 75 05
     mov word [bp-016h], 007c0h                ; c7 46 ea c0 07
     mov ax, word [bp-016h]                    ; 8b 46 ea
@@ -5141,9 +5392,9 @@
     mov word [es:si+00eh], di                 ; 26 89 7c 0e
     test di, di                               ; 85 ff
-    je short 03c84h                           ; 74 06
+    je short 03f59h                           ; 74 06
     cmp di, 00400h                            ; 81 ff 00 04
-    jbe short 03c8ah                          ; 76 06
+    jbe short 03f5fh                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 03e10h                           ; e9 86 01
+    jmp near 040e5h                           ; e9 86 01
     mov ax, word [bp-007feh]                  ; 8b 86 02 f8
     mov dx, word [bp-007fch]                  ; 8b 96 04 f8
@@ -5163,6 +5414,6 @@
     mov word [bp-01fh], ax                    ; 89 46 e1
     les bx, [bp-014h]                         ; c4 5e ec
-    mov word [es:bx+00ah], dx                 ; 26 89 57 0a
-    mov word [es:bx+00ch], 00200h             ; 26 c7 47 0c 00 02
+    mov word [es:bx+00eh], dx                 ; 26 89 57 0e
+    mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
     mov ax, di                                ; 89 f8
     sal ax, 009h                              ; c1 e0 09
@@ -5171,9 +5422,9 @@
     mov ax, dx                                ; 89 d0
     and ah, 007h                              ; 80 e4 07
-    mov word [es:bx+01ch], ax                 ; 26 89 47 1c
+    mov word [es:bx+020h], ax                 ; 26 89 47 20
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     add bx, ax                                ; 01 c3
-    movzx ax, byte [es:bx+01eh]               ; 26 0f b6 47 1e
+    movzx ax, byte [es:bx+022h]               ; 26 0f b6 47 22
     add ax, ax                                ; 01 c0
     mov word [bp-01ah], ax                    ; 89 46 e6
@@ -5185,5 +5436,5 @@
     sal ax, 1                                 ; d1 e0
     rcl di, 1                                 ; d1 d7
-    loop 03cf8h                               ; e2 fa
+    loop 03fcdh                               ; e2 fa
     push di                                   ; 57
     push ax                                   ; 50
@@ -5196,35 +5447,35 @@
     call word [word di+0006ah]                ; ff 95 6a 00
     les bx, [bp-014h]                         ; c4 5e ec
-    mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00
+    mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00
     test ax, ax                               ; 85 c0
-    je short 03d28h                           ; 74 06
+    je short 03ffdh                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 03e10h                           ; e9 e8 00
+    jmp near 040e5h                           ; e9 e8 00
     mov es, [bp-010h]                         ; 8e 46 f0
     mov al, byte [es:si+001h]                 ; 26 8a 44 01
     cmp AL, strict byte 002h                  ; 3c 02
-    jc short 03d40h                           ; 72 0d
-    jbe short 03d58h                          ; 76 23
+    jc short 04015h                           ; 72 0d
+    jbe short 0402dh                          ; 76 23
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 03d6eh                           ; 74 35
+    je short 04043h                           ; 74 35
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 03d63h                           ; 74 26
-    jmp near 03db9h                           ; e9 79 00
+    je short 04038h                           ; 74 26
+    jmp near 0408eh                           ; e9 79 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 03db9h                          ; 75 75
+    jne short 0408eh                          ; 75 75
     mov es, [bp-010h]                         ; 8e 46 f0
     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 03db9h                          ; eb 61
+    jmp short 0408eh                          ; eb 61
     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 03d50h                          ; eb ed
+    jmp short 04025h                          ; 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 03d50h                          ; eb e2
+    jmp short 04025h                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01650h                               ; e8 d9 d8
+    call 01650h                               ; e8 04 d6
     and AL, strict byte 03fh                  ; 24 3f
     xor ah, ah                                ; 30 e4
@@ -5233,10 +5484,10 @@
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01650h                               ; e8 c5 d8
+    call 01650h                               ; e8 f0 d5
     movzx bx, al                              ; 0f b6 d8
     sal bx, 002h                              ; c1 e3 02
     mov dx, 001c5h                            ; ba c5 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01650h                               ; e8 b6 d8
+    call 01650h                               ; e8 e1 d5
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
@@ -5246,5 +5497,5 @@
     mov dx, 001c3h                            ; ba c3 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01650h                               ; e8 a1 d8
+    call 01650h                               ; e8 cc d5
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
@@ -5253,27 +5504,27 @@
     mov es, [bp-010h]                         ; 8e 46 f0
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 03df7h                           ; 74 34
+    je short 040cch                           ; 74 34
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 03de0h                          ; 75 16
+    jne short 040b5h                          ; 75 16
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 7d d8
+    call 01650h                               ; e8 a8 d5
     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 03df4h                          ; eb 14
-    mov dx, 002c0h                            ; ba c0 02
+    jmp short 040c9h                          ; eb 14
+    mov dx, 00304h                            ; ba 04 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 01650h                               ; e8 67 d8
+    call 01650h                               ; e8 92 d5
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     movzx bx, al                              ; 0f b6 d8
-    mov dx, 002c0h                            ; ba c0 02
+    mov dx, 00304h                            ; ba 04 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 0165eh                               ; e8 67 d8
+    call 0165eh                               ; e8 92 d5
     mov es, [bp-010h]                         ; 8e 46 f0
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 03e05h                           ; 74 04
+    je short 040dah                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
     mov es, [bp-010h]                         ; 8e 46 f0
@@ -5289,10 +5540,10 @@
     retn                                      ; c3
     db  050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
-    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 00bh, 042h, 019h
-    db  03fh, 063h, 03fh, 08bh, 03fh, 058h, 03fh, 08bh, 03fh, 058h, 03fh, 061h, 041h, 03eh, 03fh, 00bh
-    db  042h, 00bh, 042h, 03eh, 03fh, 03eh, 03fh, 03eh, 03fh, 03eh, 03fh, 03eh, 03fh, 002h, 042h, 03eh
-    db  03fh, 00bh, 042h, 00bh, 042h, 00bh, 042h, 00bh, 042h, 00bh, 042h, 00bh, 042h, 00bh, 042h, 00bh
-    db  042h, 00bh, 042h, 00bh, 042h, 00bh, 042h, 00bh, 042h
-_int13_cdemu:                                ; 0xf3e73 LB 0x434
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0e0h, 044h, 0eeh
+    db  041h, 038h, 042h, 060h, 042h, 02dh, 042h, 060h, 042h, 02dh, 042h, 036h, 044h, 013h, 042h, 0e0h
+    db  044h, 0e0h, 044h, 013h, 042h, 013h, 042h, 013h, 042h, 013h, 042h, 013h, 042h, 0d7h, 044h, 013h
+    db  042h, 0e0h, 044h, 0e0h, 044h, 0e0h, 044h, 0e0h, 044h, 0e0h, 044h, 0e0h, 044h, 0e0h, 044h, 0e0h
+    db  044h, 0e0h, 044h, 0e0h, 044h, 0e0h, 044h, 0e0h, 044h
+_int13_cdemu:                                ; 0xf4148 LB 0x434
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -5302,6 +5553,6 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 e8 d7
-    mov di, 00322h                            ; bf 22 03
+    call 0166ch                               ; e8 13 d5
+    mov di, 00366h                            ; bf 66 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
@@ -5318,17 +5569,17 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 ab d7
+    call 0165eh                               ; e8 d6 d4
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 03ec9h                           ; 74 0e
+    je short 0419eh                           ; 74 0e
     movzx dx, byte [es:di+002h]               ; 26 0f b6 55 02
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp dx, ax                                ; 39 c2
-    je short 03ef2h                           ; 74 29
-    mov bx, 00da2h                            ; bb a2 0d
+    je short 041c7h                           ; 74 29
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 5d da
+    call 01931h                               ; e8 88 d7
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -5337,33 +5588,33 @@
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0032ch                               ; 68 2c 03
-    push 00338h                               ; 68 38 03
+    push 0034ch                               ; 68 4c 03
+    push 00358h                               ; 68 58 03
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 86 da
+    call 01972h                               ; e8 b1 d7
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 0422bh                           ; e9 39 03
+    jmp near 04500h                           ; e9 39 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe near 0420bh                          ; 0f 87 0c 03
+    jnbe near 044e0h                          ; 0f 87 0c 03
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 03e1ah                            ; bf 1a 3e
+    mov di, 040efh                            ; bf ef 40
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+03e37h]               ; 2e 8b 85 37 3e
+    mov ax, word [cs:di+0410ch]               ; 2e 8b 85 0c 41
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
-    imul bx, bx, strict byte 00018h           ; 6b db 18
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
     mov es, [bp-00ch]                         ; 8e 46 f4
     add bx, word [bp-00eh]                    ; 03 5e f2
-    movzx bx, byte [es:bx+01eh]               ; 26 0f b6 5f 1e
+    movzx bx, byte [es:bx+022h]               ; 26 0f b6 5f 22
     add bx, bx                                ; 01 db
     cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00
-    je near 03f3eh                            ; 0f 84 08 00
+    je near 04213h                            ; 0f 84 08 00
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     call word [word bx+00076h]                ; ff 97 76 00
@@ -5372,5 +5623,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 11 d7
+    call 0165eh                               ; e8 3c d4
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -5382,8 +5633,8 @@
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 04233h                           ; e9 d0 02
+    jmp near 04508h                           ; e9 d0 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 e4 d6
+    call 01650h                               ; e8 0f d4
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
@@ -5394,8 +5645,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 da d6
+    call 0165eh                               ; e8 05 d4
     test cl, cl                               ; 84 c9
-    je short 03f42h                           ; 74 ba
-    jmp near 04247h                           ; e9 bc 02
+    je short 04217h                           ; 74 ba
+    jmp near 0451ch                           ; e9 bc 02
     mov es, [bp-008h]                         ; 8e 46 f8
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
@@ -5421,17 +5672,17 @@
     mov word [bp-00ah], cx                    ; 89 4e f6
     test cx, cx                               ; 85 c9
-    jne short 03fd8h                          ; 75 03
-    jmp near 03f3eh                           ; e9 66 ff
+    jne short 042adh                          ; 75 03
+    jmp near 04213h                           ; e9 66 ff
     cmp di, word [bp-010h]                    ; 3b 7e f0
-    jc near 0422bh                            ; 0f 82 4c 02
+    jc near 04500h                            ; 0f 82 4c 02
     cmp ax, dx                                ; 39 d0
-    jnc near 0422bh                           ; 0f 83 46 02
+    jnc near 04500h                           ; 0f 83 46 02
     cmp si, bx                                ; 39 de
-    jnc near 0422bh                           ; 0f 83 40 02
+    jnc near 04500h                           ; 0f 83 40 02
     mov dx, word [bp+016h]                    ; 8b 56 16
     shr dx, 008h                              ; c1 ea 08
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jne short 03ff9h                          ; 75 03
-    jmp near 03f3eh                           ; e9 45 ff
+    jne short 042ceh                          ; 75 03
+    jmp near 04213h                           ; e9 45 ff
     mov dx, word [bp+010h]                    ; 8b 56 10
     shr dx, 004h                              ; c1 ea 04
@@ -5444,5 +5695,5 @@
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 62 57
+    call 09d19h                               ; e8 2d 5a
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
@@ -5450,5 +5701,5 @@
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 55 57
+    call 09d19h                               ; e8 20 5a
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-010h]                    ; 8b 46 f0
@@ -5485,5 +5736,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 097aah                               ; e8 2f 57
+    call 09d6ah                               ; e8 1a 5a
     mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
@@ -5503,9 +5754,9 @@
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     les bx, [bp-00eh]                         ; c4 5e f2
-    mov word [es:bx+00ah], ax                 ; 26 89 47 0a
-    mov word [es:bx+00ch], 00200h             ; 26 c7 47 0c 00 02
+    mov word [es:bx+00eh], ax                 ; 26 89 47 0e
+    mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
     mov ax, di                                ; 89 f8
     sal ax, 009h                              ; c1 e0 09
-    mov word [es:bx+01ah], ax                 ; 26 89 47 1a
+    mov word [es:bx+01eh], ax                 ; 26 89 47 1e
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     xor dh, dh                                ; 30 f6
@@ -5518,9 +5769,9 @@
     and dh, 007h                              ; 80 e6 07
     mov bx, word [bp-00eh]                    ; 8b 5e f2
-    mov word [es:bx+01ch], dx                 ; 26 89 57 1c
+    mov word [es:bx+020h], dx                 ; 26 89 57 20
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    imul dx, dx, strict byte 00018h           ; 6b d2 18
+    imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     add bx, dx                                ; 01 d3
-    movzx dx, byte [es:bx+01eh]               ; 26 0f b6 57 1e
+    movzx dx, byte [es:bx+022h]               ; 26 0f b6 57 22
     add dx, dx                                ; 01 d2
     mov word [bp-01ah], dx                    ; 89 56 e6
@@ -5533,5 +5784,5 @@
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 040fbh                               ; e2 fa
+    loop 043d0h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
@@ -5545,12 +5796,12 @@
     mov dx, ax                                ; 89 c2
     les bx, [bp-00eh]                         ; c4 5e f2
-    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
+    db  066h, 026h, 0c7h, 047h, 01eh, 000h, 000h, 000h, 000h
+    ; mov dword [es:bx+01eh], strict dword 000000000h ; 66 26 c7 47 1e 00 00 00 00
     test al, al                               ; 84 c0
-    je near 03f3eh                            ; 0f 84 13 fe
-    mov bx, 00da2h                            ; bb a2 0d
+    je near 04213h                            ; 0f 84 13 fe
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 fb d7
+    call 01931h                               ; e8 26 d5
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -5558,8 +5809,8 @@
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0032ch                               ; 68 2c 03
-    push 0036eh                               ; 68 6e 03
+    push 0034ch                               ; 68 4c 03
+    push 0038eh                               ; 68 8e 03
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 26 d8
+    call 01972h                               ; e8 51 d5
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -5568,5 +5819,5 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 04236h                           ; e9 d5 00
+    jmp near 0450bh                           ; e9 d5 00
     mov es, [bp-008h]                         ; 8e 46 f8
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
@@ -5607,38 +5858,38 @@
     mov word [bp+010h], ax                    ; 89 46 10
     cmp dl, 003h                              ; 80 fa 03
-    je short 041e5h                           ; 74 1a
+    je short 044bah                           ; 74 1a
     cmp dl, 002h                              ; 80 fa 02
-    je short 041e1h                           ; 74 11
+    je short 044b6h                           ; 74 11
     cmp dl, 001h                              ; 80 fa 01
-    jne short 041e9h                          ; 75 14
+    jne short 044beh                          ; 75 14
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor al, al                                ; 30 c0
     or AL, strict byte 002h                   ; 0c 02
     mov word [bp+010h], ax                    ; 89 46 10
-    jmp short 041e9h                          ; eb 08
+    jmp short 044beh                          ; eb 08
     or AL, strict byte 004h                   ; 0c 04
-    jmp short 041dch                          ; eb f7
+    jmp short 044b1h                          ; eb f7
     or AL, strict byte 005h                   ; 0c 05
-    jmp short 041dch                          ; eb f3
+    jmp short 044b1h                          ; eb f3
     mov es, [bp-008h]                         ; 8e 46 f8
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jnc near 03f3eh                           ; 0f 83 49 fd
+    jnc near 04213h                           ; 0f 83 49 fd
     mov word [bp+008h], 0efc7h                ; c7 46 08 c7 ef
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
-    jmp near 03f3eh                           ; e9 3c fd
+    jmp near 04213h                           ; e9 3c fd
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 03f42h                           ; e9 37 fd
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 04217h                           ; e9 37 fd
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 1b d7
+    call 01931h                               ; e8 46 d4
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0032ch                               ; 68 2c 03
-    push 0038fh                               ; 68 8f 03
+    push 0034ch                               ; 68 4c 03
+    push 003afh                               ; 68 af 03
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 4a d7
+    call 01972h                               ; e8 75 d4
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -5651,14 +5902,14 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 17 d4
+    call 0165eh                               ; e8 42 d1
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 03f51h                           ; e9 03 fd
+    jmp near 04226h                           ; e9 03 fd
     db  050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
-    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0ech, 047h, 068h
-    db  045h, 054h, 043h, 0ech, 047h, 049h, 043h, 0ech, 047h, 049h, 043h, 0ech, 047h, 068h, 045h, 0ech
-    db  047h, 0ech, 047h, 068h, 045h, 068h, 045h, 068h, 045h, 068h, 045h, 068h, 045h, 07eh, 043h, 068h
-    db  045h, 0ech, 047h, 087h, 043h, 09ah, 043h, 049h, 043h, 09ah, 043h, 0c8h, 044h, 082h, 045h, 09ah
-    db  043h, 0a9h, 045h, 0a5h, 047h, 0adh, 047h, 0ech, 047h
-_int13_cdrom:                                ; 0xf42a7 LB 0x562
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0c1h, 04ah, 03dh
+    db  048h, 029h, 046h, 0c1h, 04ah, 01eh, 046h, 0c1h, 04ah, 01eh, 046h, 0c1h, 04ah, 03dh, 048h, 0c1h
+    db  04ah, 0c1h, 04ah, 03dh, 048h, 03dh, 048h, 03dh, 048h, 03dh, 048h, 03dh, 048h, 053h, 046h, 03dh
+    db  048h, 0c1h, 04ah, 05ch, 046h, 06fh, 046h, 01eh, 046h, 06fh, 046h, 09dh, 047h, 057h, 048h, 06fh
+    db  046h, 07eh, 048h, 07ah, 04ah, 082h, 04ah, 0c1h, 04ah
+_int13_cdrom:                                ; 0xf457c LB 0x562
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -5668,5 +5919,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b4 d3
+    call 0166ch                               ; e8 df d0
     mov word [bp-01ah], ax                    ; 89 46 e6
     mov si, 00122h                            ; be 22 01
@@ -5675,11 +5926,11 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 92 d3
+    call 0165eh                               ; e8 bd d0
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 042dbh                           ; 72 05
+    jc short 045b0h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 042f9h                           ; 72 1e
+    jc short 045ceh                           ; 72 1e
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
@@ -5688,10 +5939,10 @@
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 003bfh                               ; 68 bf 03
-    push 003cbh                               ; 68 cb 03
+    push 003dfh                               ; 68 df 03
+    push 003ebh                               ; 68 eb 03
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 7f d6
+    call 01972h                               ; e8 aa d3
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 047c9h                           ; e9 d0 04
+    jmp near 04a9eh                           ; e9 d0 04
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
@@ -5699,27 +5950,27 @@
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    mov dl, byte [es:bx+000d0h]               ; 26 8a 97 d0 00
+    mov dl, byte [es:bx+00114h]               ; 26 8a 97 14 01
     mov byte [bp-008h], dl                    ; 88 56 f8
     cmp dl, 010h                              ; 80 fa 10
-    jc short 04322h                           ; 72 10
+    jc short 045f7h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 003bfh                               ; 68 bf 03
-    push 003f6h                               ; 68 f6 03
-    jmp short 042eeh                          ; eb cc
+    push 003dfh                               ; 68 df 03
+    push 00416h                               ; 68 16 04
+    jmp short 045c3h                          ; eb cc
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe near 047ech                          ; 0f 87 bd 04
+    jnbe near 04ac1h                          ; 0f 87 bd 04
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 0424eh                            ; bf 4e 42
+    mov di, 04523h                            ; bf 23 45
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0426bh]               ; 2e 8b 85 6b 42
+    mov ax, word [cs:di+04540h]               ; 2e 8b 85 40 45
     mov bx, word [bp+018h]                    ; 8b 5e 18
     xor bh, bh                                ; 30 ff
@@ -5728,8 +5979,8 @@
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 047d1h                           ; e9 7d 04
+    jmp near 04aa6h                           ; e9 7d 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 f3 d2
+    call 01650h                               ; e8 1e d0
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
@@ -5740,16 +5991,16 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 e9 d2
+    call 0165eh                               ; e8 14 d0
     test cl, cl                               ; 84 c9
-    je near 0456ch                            ; 0f 84 f1 01
-    jmp near 047e5h                           ; e9 67 04
+    je near 04841h                            ; 0f 84 f1 01
+    jmp near 04abah                           ; e9 67 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 047d4h                           ; e9 4d 04
+    jmp near 04aa9h                           ; e9 4d 04
     mov word [bp+012h], 0aa55h                ; c7 46 12 55 aa
     or bh, 030h                               ; 80 cf 30
     mov word [bp+018h], bx                    ; 89 5e 18
     mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
-    jmp near 0456ch                           ; e9 d2 01
+    jmp near 04841h                           ; e9 d2 01
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov es, [bp+006h]                         ; 8e 46 06
@@ -5766,14 +6017,14 @@
     mov di, word [es:bx+00eh]                 ; 26 8b 7f 0e
     or di, ax                                 ; 09 c7
-    je short 043e2h                           ; 74 18
+    je short 046b7h                           ; 74 18
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 003bfh                               ; 68 bf 03
-    push 00428h                               ; 68 28 04
+    push 003dfh                               ; 68 df 03
+    push 00448h                               ; 68 48 04
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 96 d5
+    call 01972h                               ; e8 c1 d2
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 047c9h                           ; e9 e7 03
+    jmp near 04a9eh                           ; e9 e7 03
     les bx, [bp-014h]                         ; c4 5e ec
     mov ax, word [es:bx+008h]                 ; 26 8b 47 08
@@ -5785,12 +6036,12 @@
     mov word [bp-016h], ax                    ; 89 46 ea
     cmp ax, strict word 00044h                ; 3d 44 00
-    je near 04568h                            ; 0f 84 66 01
+    je near 0483dh                            ; 0f 84 66 01
     cmp ax, strict word 00047h                ; 3d 47 00
-    je near 04568h                            ; 0f 84 5f 01
+    je near 0483dh                            ; 0f 84 5f 01
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ch]                         ; 8d 46 d4
-    call 097aah                               ; e8 94 53
+    call 09d6ah                               ; e8 7f 56
     mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
     mov ax, word [bp-018h]                    ; 8b 46 e8
@@ -5806,10 +6057,10 @@
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov es, [bp-00ch]                         ; 8e 46 f4
-    mov word [es:si+00ah], ax                 ; 26 89 44 0a
-    mov word [es:si+00ch], 00800h             ; 26 c7 44 0c 00 08
+    mov word [es:si+00eh], ax                 ; 26 89 44 0e
+    mov word [es:si+010h], 00800h             ; 26 c7 44 10 00 08
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    imul bx, bx, strict byte 00018h           ; 6b db 18
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
     add bx, si                                ; 01 f3
-    movzx di, byte [es:bx+01eh]               ; 26 0f b6 7f 1e
+    movzx di, byte [es:bx+022h]               ; 26 0f b6 7f 22
     add di, di                                ; 01 ff
     push word [bp-01ch]                       ; ff 76 e4
@@ -5820,5 +6071,5 @@
     sal ax, 1                                 ; d1 e0
     rcl bx, 1                                 ; d1 d3
-    loop 04460h                               ; e2 fa
+    loop 04735h                               ; e2 fa
     push bx                                   ; 53
     push ax                                   ; 50
@@ -5831,46 +6082,46 @@
     mov dx, ax                                ; 89 c2
     mov es, [bp-00ch]                         ; 8e 46 f4
-    mov ax, word [es:si+016h]                 ; 26 8b 44 16
-    mov di, word [es:si+018h]                 ; 26 8b 7c 18
+    mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
+    mov di, word [es:si+01ch]                 ; 26 8b 7c 1c
     mov cx, strict word 0000bh                ; b9 0b 00
     shr di, 1                                 ; d1 ef
     rcr ax, 1                                 ; d1 d8
-    loop 0448ah                               ; e2 fa
+    loop 0475fh                               ; e2 fa
     les bx, [bp-014h]                         ; c4 5e ec
     mov word [es:bx+002h], ax                 ; 26 89 47 02
     test dl, dl                               ; 84 d2
-    je near 04568h                            ; 0f 84 cb 00
-    mov bx, 00da2h                            ; bb a2 0d
+    je near 0483dh                            ; 0f 84 cb 00
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 89 d4
+    call 01931h                               ; e8 b4 d1
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
     push word [bp-016h]                       ; ff 76 ea
-    push 003bfh                               ; 68 bf 03
-    push 00451h                               ; 68 51 04
+    push 003dfh                               ; 68 df 03
+    push 00471h                               ; 68 71 04
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 b8 d4
+    call 01972h                               ; e8 e3 d1
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 047d1h                           ; e9 09 03
+    jmp near 04aa6h                           ; e9 09 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe near 047c9h                          ; 0f 87 fa 02
+    jnbe near 04a9eh                          ; 0f 87 fa 02
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov di, si                                ; 89 f7
     add di, ax                                ; 01 c7
-    mov al, byte [es:di+021h]                 ; 26 8a 45 21
+    mov al, byte [es:di+025h]                 ; 26 8a 45 25
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 04559h                           ; 74 73
+    je short 0482eh                           ; 74 73
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 04526h                           ; 74 3b
+    je short 047fbh                           ; 74 3b
     test bx, bx                               ; 85 db
-    jne near 04568h                           ; 0f 85 77 00
+    jne near 0483dh                           ; 0f 85 77 00
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 04507h                          ; 75 12
+    jne short 047dch                          ; 75 12
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
@@ -5879,30 +6130,30 @@
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 047d1h                           ; e9 ca 02
+    jmp near 04aa6h                           ; e9 ca 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
-    imul dx, dx, strict byte 00018h           ; 6b d2 18
+    imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov es, [bp-00ch]                         ; 8e 46 f4
     add si, dx                                ; 01 d6
-    mov byte [es:si+021h], al                 ; 26 88 44 21
+    mov byte [es:si+025h], al                 ; 26 88 44 25
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 04568h                           ; e9 42 00
+    jmp near 0483dh                           ; e9 42 00
     test al, al                               ; 84 c0
-    jne short 04536h                          ; 75 0c
+    jne short 0480bh                          ; 75 0c
     or bh, 0b0h                               ; 80 cf b0
     mov word [bp+018h], bx                    ; 89 5e 18
     mov byte [bp+018h], al                    ; 88 46 18
-    jmp near 047d4h                           ; e9 9e 02
+    jmp near 04aa9h                           ; e9 9e 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
-    imul dx, dx, strict byte 00018h           ; 6b d2 18
+    imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     db  0feh, 0c8h
     ; dec al                                    ; fe c8
     mov es, [bp-00ch]                         ; 8e 46 f4
     add si, dx                                ; 01 d6
-    mov byte [es:si+021h], al                 ; 26 88 44 21
+    mov byte [es:si+025h], al                 ; 26 88 44 25
     test al, al                               ; 84 c0
     db  00fh, 095h, 0c0h
@@ -5912,5 +6163,5 @@
     xor al, al                                ; 30 c0
     or ax, dx                                 ; 09 d0
-    jmp short 04520h                          ; eb c7
+    jmp short 047f5h                          ; eb c7
     test al, al                               ; 84 c0
     db  00fh, 095h, 0c0h
@@ -5924,5 +6175,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 e7 d0
+    call 0165eh                               ; e8 12 ce
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -5932,17 +6183,17 @@
     retn                                      ; c3
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-00ch]                         ; 8e 46 f4
     add si, ax                                ; 01 c6
-    mov al, byte [es:si+021h]                 ; 26 8a 44 21
+    mov al, byte [es:si+025h]                 ; 26 8a 44 25
     test al, al                               ; 84 c0
-    je short 0459ch                           ; 74 06
+    je short 04871h                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 04381h                           ; e9 e5 fd
-    je short 04568h                           ; 74 ca
+    jmp near 04656h                           ; e9 e5 fd
+    je short 0483dh                           ; 74 ca
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 047d1h                           ; e9 28 02
+    jmp near 04aa6h                           ; e9 28 02
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
@@ -5954,12 +6205,12 @@
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 047c9h                            ; 0f 82 04 02
-    jc short 04616h                           ; 72 4f
+    jc near 04a9eh                            ; 0f 82 04 02
+    jc short 048ebh                           ; 72 4f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov di, si                                ; 89 f7
     add di, ax                                ; 01 c7
-    mov ax, word [es:di+024h]                 ; 26 8b 45 24
+    mov ax, word [es:di+028h]                 ; 26 8b 45 28
     mov es, cx                                ; 8e c1
     mov di, dx                                ; 89 d7
@@ -5978,10 +6229,10 @@
     ; 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 046edh                            ; 0f 82 cf 00
+    jc near 049c2h                            ; 0f 82 cf 00
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov word [es:bx+01ch], ax                 ; 26 89 47 1c
-    mov word [es:bx+01ah], 00312h             ; 26 c7 47 1a 12 03
+    mov word [es:bx+01ah], 00356h             ; 26 c7 47 1a 56 03
     movzx cx, byte [bp-008h]                  ; 0f b6 4e f8
     mov ax, cx                                ; 89 c8
@@ -5994,13 +6245,13 @@
     mov es, [bp-00ch]                         ; 8e 46 f4
     add di, si                                ; 01 f7
-    mov ax, word [es:di+001c2h]               ; 26 8b 85 c2 01
+    mov ax, word [es:di+00206h]               ; 26 8b 85 06 02
     mov word [bp-01eh], ax                    ; 89 46 e2
-    mov dx, word [es:di+001c4h]               ; 26 8b 95 c4 01
-    mov al, byte [es:di+001c1h]               ; 26 8a 85 c1 01
+    mov dx, word [es:di+00208h]               ; 26 8b 95 08 02
+    mov al, byte [es:di+00205h]               ; 26 8a 85 05 02
     mov byte [bp-006h], al                    ; 88 46 fa
-    imul cx, cx, strict byte 00018h           ; 6b c9 18
+    imul cx, cx, strict byte 0001ch           ; 6b c9 1c
     mov di, si                                ; 89 f7
     add di, cx                                ; 01 cf
-    mov al, byte [es:di+022h]                 ; 26 8a 45 22
+    mov al, byte [es:di+026h]                 ; 26 8a 45 26
     cmp AL, strict byte 001h                  ; 3c 01
     db  00fh, 094h, 0c0h
@@ -6010,6 +6261,6 @@
     mov di, ax                                ; 89 c7
     mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [es:si+001f0h], ax               ; 26 89 84 f0 01
-    mov word [es:si+001f2h], dx               ; 26 89 94 f2 01
+    mov word [es:si+00234h], ax               ; 26 89 84 34 02
+    mov word [es:si+00236h], dx               ; 26 89 94 36 02
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cwd                                       ; 99
@@ -6019,31 +6270,31 @@
     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 byte [es:si+00238h], al               ; 26 88 84 38 02
+    mov byte [es:si+00239h], 0cbh             ; 26 c6 84 39 02 cb
     mov al, byte [bp-006h]                    ; 8a 46 fa
-    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+001fch], strict word 00000h ; 26 c7 84 fc 01 00 00
-    mov byte [es:si+001feh], 011h             ; 26 c6 84 fe 01 11
+    mov byte [es:si+0023ah], al               ; 26 88 84 3a 02
+    mov word [es:si+0023bh], strict word 00001h ; 26 c7 84 3b 02 01 00
+    mov byte [es:si+0023dh], 000h             ; 26 c6 84 3d 02 00
+    mov word [es:si+0023eh], di               ; 26 89 bc 3e 02
+    mov word [es:si+00240h], strict word 00000h ; 26 c7 84 40 02 00 00
+    mov byte [es:si+00242h], 011h             ; 26 c6 84 42 02 11
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
-    jmp short 046d0h                          ; eb 05
+    jmp short 049a5h                          ; eb 05
     cmp ch, 00fh                              ; 80 fd 0f
-    jnc short 046e3h                          ; 73 13
+    jnc short 049b8h                          ; 73 13
     movzx dx, ch                              ; 0f b6 d5
-    add dx, 00312h                            ; 81 c2 12 03
+    add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 01650h                               ; e8 73 cf
+    call 01650h                               ; e8 9e cc
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 046cbh                          ; eb e8
+    jmp short 049a0h                          ; eb e8
     neg cl                                    ; f6 d9
     mov es, [bp-00ch]                         ; 8e 46 f4
-    mov byte [es:si+001ffh], cl               ; 26 88 8c ff 01
+    mov byte [es:si+00243h], cl               ; 26 88 8c 43 02
     cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
-    jc near 04568h                            ; 0f 82 73 fe
+    jc near 0483dh                            ; 0f 82 73 fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cwd                                       ; 99
@@ -6055,6 +6306,6 @@
     mov es, [bp-00ch]                         ; 8e 46 f4
     add si, ax                                ; 01 c6
-    mov al, byte [es:si+001c0h]               ; 26 8a 84 c0 01
-    mov dx, word [es:si+001c2h]               ; 26 8b 94 c2 01
+    mov al, byte [es:si+00204h]               ; 26 8a 84 04 02
+    mov dx, word [es:si+00206h]               ; 26 8b 94 06 02
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:bx], strict word 00042h      ; 26 c7 07 42 00
@@ -6063,5 +6314,5 @@
     mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
     test al, al                               ; 84 c0
-    jne short 04736h                          ; 75 09
+    jne short 04a0bh                          ; 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
@@ -6072,5 +6323,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 04762h                          ; 75 13
+    jne short 04a37h                          ; 75 13
     mov word [es:bx+030h], dx                 ; 26 89 57 30
     db  066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
@@ -6087,7 +6338,7 @@
     xor al, al                                ; 30 c0
     mov AH, strict byte 01eh                  ; b4 1e
-    jmp short 0478ah                          ; eb 05
+    jmp short 04a5fh                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04799h                          ; 73 0f
+    jnc short 04a6eh                          ; 73 0f
     movzx si, ah                              ; 0f b6 f4
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6096,21 +6347,21 @@
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 04785h                          ; eb ec
+    jmp short 04a5ah                          ; eb ec
     neg al                                    ; f6 d8
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:bx+041h], al                 ; 26 88 47 41
-    jmp near 04568h                           ; e9 c3 fd
+    jmp near 0483dh                           ; e9 c3 fd
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 047e5h                          ; eb 38
+    jmp short 04abah                          ; eb 38
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je near 04568h                            ; 0f 84 b4 fd
+    je near 0483dh                            ; 0f 84 b4 fd
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 047c9h                           ; 72 10
-    jbe near 04568h                           ; 0f 86 ab fd
+    jc short 04a9eh                           ; 72 10
+    jbe near 0483dh                           ; 0f 86 ab fd
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 047c9h                           ; 72 07
+    jc short 04a9eh                           ; 72 07
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe near 04568h                           ; 0f 86 9f fd
+    jbe near 0483dh                           ; 0f 86 9f fd
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
@@ -6122,47 +6373,47 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 79 ce
+    call 0165eh                               ; e8 a4 cb
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp near 0457bh                           ; e9 8f fd
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 04850h                           ; e9 8f fd
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 3a d1
+    call 01931h                               ; e8 65 ce
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 003bfh                               ; 68 bf 03
-    push 00313h                               ; 68 13 03
+    push 003dfh                               ; 68 df 03
+    push 00333h                               ; 68 33 03
     push strict byte 00004h                   ; 6a 04
-    jmp near 043d9h                           ; e9 d0 fb
-print_boot_device_:                          ; 0xf4809 LB 0x4b
+    jmp near 046aeh                           ; e9 d0 fb
+print_boot_device_:                          ; 0xf4ade LB 0x4b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 04816h                           ; 74 05
+    je short 04aebh                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 04830h                          ; eb 1a
+    jmp short 04b05h                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 0481fh                           ; 74 05
+    je short 04af4h                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 04830h                          ; eb 11
+    jmp short 04b05h                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04828h                          ; 75 04
+    jne short 04afdh                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 04830h                          ; eb 08
+    jmp short 04b05h                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 0484eh                           ; 74 21
+    je short 04b23h                           ; 74 21
     mov dx, strict word 00001h                ; ba 01 00
-    mov bx, 00da2h                            ; bb a2 0d
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 f6 d0
+    call 01931h                               ; e8 21 ce
     imul dx, dx, strict byte 0000ah           ; 6b d2 0a
-    add dx, 00dc8h                            ; 81 c2 c8 0d
+    add dx, 00dc6h                            ; 81 c2 c6 0d
     push dx                                   ; 52
-    push 00474h                               ; 68 74 04
+    push 00494h                               ; 68 94 04
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 27 d1
+    call 01972h                               ; e8 52 ce
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -6170,5 +6421,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-print_boot_failure_:                         ; 0xf4854 LB 0x93
+print_boot_failure_:                         ; 0xf4b29 LB 0x93
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6179,51 +6430,51 @@
     movzx si, ah                              ; 0f b6 f4
     test al, al                               ; 84 c0
-    je short 04881h                           ; 74 1b
-    mov bx, 00da2h                            ; bb a2 0d
+    je short 04b56h                           ; 74 1b
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 c0 d0
-    push 00ddch                               ; 68 dc 0d
-    push 00488h                               ; 68 88 04
+    call 01931h                               ; e8 eb cd
+    push 00ddah                               ; 68 da 0d
+    push 004a8h                               ; 68 a8 04
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 f6 d0
+    call 01972h                               ; e8 21 ce
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 048c5h                          ; eb 44
+    jmp short 04b9ah                          ; eb 44
     test dl, dl                               ; 84 d2
-    je short 04895h                           ; 74 10
-    mov bx, 00da2h                            ; bb a2 0d
+    je short 04b6ah                           ; 74 10
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 a1 d0
-    push 00de6h                               ; 68 e6 0d
-    jmp short 04874h                          ; eb df
+    call 01931h                               ; e8 cc cd
+    push 00de4h                               ; 68 e4 0d
+    jmp short 04b49h                          ; eb df
     test bl, 080h                             ; f6 c3 80
-    je short 048abh                           ; 74 11
-    mov bx, 00da2h                            ; bb a2 0d
+    je short 04b80h                           ; 74 11
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 8c d0
+    call 01931h                               ; e8 b7 cd
     push si                                   ; 56
-    push 00dd2h                               ; 68 d2 0d
-    jmp short 048bah                          ; eb 0f
-    mov bx, 00da2h                            ; bb a2 0d
+    push 00dd0h                               ; 68 d0 0d
+    jmp short 04b8fh                          ; eb 0f
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 7b d0
+    call 01931h                               ; e8 a6 cd
     push si                                   ; 56
-    push 00dc8h                               ; 68 c8 0d
-    push 0049dh                               ; 68 9d 04
+    push 00dc6h                               ; 68 c6 0d
+    push 004bdh                               ; 68 bd 04
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 b0 d0
+    call 01972h                               ; e8 db cd
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 048dfh                          ; 75 14
+    jne short 04bb4h                          ; 75 14
     test dh, dh                               ; 84 f6
-    jne short 048d4h                          ; 75 05
-    push 004b5h                               ; 68 b5 04
-    jmp short 048d7h                          ; eb 03
-    push 004dfh                               ; 68 df 04
+    jne short 04ba9h                          ; 75 05
+    push 004d5h                               ; 68 d5 04
+    jmp short 04bach                          ; eb 03
+    push 004ffh                               ; 68 ff 04
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 96 d0
+    call 01972h                               ; e8 c1 cd
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -6231,5 +6482,5 @@
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-print_cdromboot_failure_:                    ; 0xf48e7 LB 0x27
+print_cdromboot_failure_:                    ; 0xf4bbc LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6238,12 +6489,12 @@
     push dx                                   ; 52
     mov dx, ax                                ; 89 c2
-    mov bx, 00da2h                            ; bb a2 0d
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 37 d0
+    call 01931h                               ; e8 62 cd
     push dx                                   ; 52
-    push 00514h                               ; 68 14 05
+    push 00534h                               ; 68 34 05
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 6f d0
+    call 01972h                               ; e8 9a cd
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -6253,5 +6504,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf490e LB 0x256
+_int19_function:                             ; 0xf4be3 LB 0x256
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6261,13 +6512,13 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 4d cd
+    call 0166ch                               ; e8 78 ca
     mov bx, ax                                ; 89 c3
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov ax, strict word 0003dh                ; b8 3d 00
-    call 016ach                               ; e8 7e cd
+    call 016ach                               ; e8 a9 ca
     movzx si, al                              ; 0f b6 f0
     mov ax, strict word 00038h                ; b8 38 00
-    call 016ach                               ; e8 75 cd
+    call 016ach                               ; e8 a0 ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
@@ -6275,37 +6526,37 @@
     or si, ax                                 ; 09 c6
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016ach                               ; e8 66 cd
+    call 016ach                               ; e8 91 ca
     and AL, strict byte 00fh                  ; 24 0f
     xor ah, ah                                ; 30 e4
     sal ax, 00ch                              ; c1 e0 0c
     or si, ax                                 ; 09 c6
-    mov dx, 00339h                            ; ba 39 03
+    mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01650h                               ; e8 f9 cc
+    call 01650h                               ; e8 24 ca
     test al, al                               ; 84 c0
-    je short 04966h                           ; 74 0b
-    mov dx, 00339h                            ; ba 39 03
+    je short 04c3bh                           ; 74 0b
+    mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01650h                               ; e8 ed cc
+    call 01650h                               ; e8 18 ca
     movzx si, al                              ; 0f b6 f0
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 0497ch                          ; 75 10
+    jne short 04c51h                          ; 75 10
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016ach                               ; e8 3a cd
+    call 016ach                               ; e8 65 ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
-    call 0781eh                               ; e8 a2 2e
+    call 07b6bh                               ; e8 1a 2f
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04985h                          ; 75 03
+    jne short 04c5ah                          ; 75 03
     shr si, 004h                              ; c1 ee 04
     cmp byte [bp+004h], 003h                  ; 80 7e 04 03
-    jne short 0498eh                          ; 75 03
+    jne short 04c63h                          ; 75 03
     shr si, 008h                              ; c1 ee 08
     cmp byte [bp+004h], 004h                  ; 80 7e 04 04
-    jne short 04997h                          ; 75 03
+    jne short 04c6ch                          ; 75 03
     shr si, 00ch                              ; c1 ee 0c
     cmp si, strict byte 00010h                ; 83 fe 10
-    jnc short 049a0h                          ; 73 04
+    jnc short 04c75h                          ; 73 04
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
     xor al, al                                ; 30 c0
@@ -6313,48 +6564,48 @@
     mov byte [bp-00ah], al                    ; 88 46 f6
     mov byte [bp-00ch], al                    ; 88 46 f4
-    mov bx, 00da2h                            ; bb a2 0d
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 7b cf
+    call 01931h                               ; e8 a6 cc
     push si                                   ; 56
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     push ax                                   ; 50
-    push 00534h                               ; 68 34 05
+    push 00554h                               ; 68 54 05
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 ae cf
+    call 01972h                               ; e8 d9 cc
     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 049ddh                           ; 72 0e
-    jbe short 049ech                          ; 76 1b
+    jc short 04cb2h                           ; 72 0e
+    jbe short 04cc1h                          ; 76 1b
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 04a0ah                           ; 74 34
+    je short 04cdfh                           ; 74 34
     cmp si, strict byte 00003h                ; 83 fe 03
-    je short 04a00h                           ; 74 25
-    jmp short 04a37h                          ; eb 5a
+    je short 04cd5h                           ; 74 25
+    jmp short 04d0ch                          ; eb 5a
     cmp si, strict byte 00001h                ; 83 fe 01
-    jne short 04a37h                          ; 75 55
+    jne short 04d0ch                          ; 75 55
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00ah], al                    ; 88 46 f6
-    jmp short 04a4fh                          ; eb 63
-    mov dx, 00338h                            ; ba 38 03
+    jmp short 04d24h                          ; eb 63
+    mov dx, 0037ch                            ; ba 7c 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 01650h                               ; e8 5b cc
+    call 01650h                               ; e8 86 c9
     add AL, strict byte 080h                  ; 04 80
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00ah], 000h                  ; c6 46 f6 00
-    jmp short 04a4fh                          ; eb 4f
+    jmp short 04d24h                          ; eb 4f
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
-    jmp short 04a14h                          ; eb 0a
+    jmp short 04ce9h                          ; eb 0a
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 04a4fh                           ; 74 3b
-    call 03a5dh                               ; e8 46 f0
+    je short 04d24h                           ; 74 3b
+    call 03d32h                               ; e8 46 f0
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 04a3eh                           ; 74 21
-    call 048e7h                               ; e8 c7 fe
+    je short 04d13h                           ; 74 21
+    call 04bbch                               ; e8 c7 fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -6363,45 +6614,45 @@
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     mov cx, strict word 00001h                ; b9 01 00
-    call 04854h                               ; e8 1d fe
+    call 04b29h                               ; e8 1d fe
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 04b5dh                           ; e9 1f 01
-    mov dx, 0032eh                            ; ba 2e 03
+    jmp near 04e32h                           ; e9 1f 01
+    mov dx, 00372h                            ; ba 72 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 0166ch                               ; e8 25 cc
+    call 0166ch                               ; e8 50 c9
     mov di, ax                                ; 89 c7
     shr bx, 008h                              ; c1 eb 08
     mov byte [bp-006h], bl                    ; 88 5e fa
     cmp byte [bp-00ch], 001h                  ; 80 7e f4 01
-    jne near 04acbh                           ; 0f 85 74 00
+    jne near 04da0h                           ; 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 04a20h                          ; 75 bb
+    jne short 04cf5h                          ; 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 04a20h                          ; 75 ad
+    jne short 04cf5h                          ; 75 ad
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04a20h                          ; 75 a6
+    jne short 04cf5h                          ; 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 04aa9h                          ; 75 1f
+    jne short 04d7eh                          ; 75 1f
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04aa9h                          ; 75 19
+    jne short 04d7eh                          ; 75 19
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 04809h                               ; e8 6a fd
+    call 04adeh                               ; e8 6a fd
     mov word [bp-012h], strict word 00006h    ; c7 46 ee 06 00
     mov word [bp-010h], cx                    ; 89 4e f0
-    jmp short 04ac5h                          ; eb 1c
+    jmp short 04d9ah                          ; eb 1c
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 04809h                               ; e8 51 fd
+    call 04adeh                               ; e8 51 fd
     sti                                       ; fb
     mov word [bp-010h], cx                    ; 89 4e f0
@@ -6410,9 +6661,9 @@
     mov word [bp-012h], ax                    ; 89 46 ee
     call far [bp-012h]                        ; ff 5e ee
-    jmp near 04a20h                           ; e9 55 ff
+    jmp near 04cf5h                           ; e9 55 ff
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04af7h                          ; 75 26
+    jne short 04dcch                          ; 75 26
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 04af7h                          ; 75 20
+    jne short 04dcch                          ; 75 20
     mov di, 007c0h                            ; bf c0 07
     mov es, di                                ; 8e c7
@@ -6427,27 +6678,27 @@
     sbb ax, strict byte 00000h                ; 83 d8 00
     test ax, ax                               ; 85 c0
-    jne near 04a20h                           ; 0f 85 29 ff
+    jne near 04cf5h                           ; 0f 85 29 ff
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
     db  00fh, 094h, 0c1h
     ; sete cl                                   ; 0f 94 c1
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 04b06h                           ; 74 02
+    je short 04ddbh                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     xor dx, dx                                ; 31 d2
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 5f cb
+    call 0166ch                               ; e8 8a c8
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 55 cb
+    call 0166ch                               ; e8 80 c8
     cmp bx, ax                                ; 39 c3
-    je short 04b2ch                           ; 74 11
+    je short 04e01h                           ; 74 11
     test cl, cl                               ; 84 c9
-    jne short 04b42h                          ; 75 23
+    jne short 04e17h                          ; 75 23
     mov dx, 001feh                            ; ba fe 01
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 45 cb
+    call 0166ch                               ; e8 70 c8
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04b42h                           ; 74 16
+    je short 04e17h                           ; 74 16
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -6456,9 +6707,9 @@
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     xor cx, cx                                ; 31 c9
-    jmp near 04a34h                           ; e9 f2 fe
+    jmp near 04d09h                           ; e9 f2 fe
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 04809h                               ; e8 b8 fc
+    call 04adeh                               ; e8 b8 fc
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     xor dx, dx                                ; 31 d2
@@ -6471,16 +6722,16 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4b64 LB 0x13
+keyboard_panic_:                             ; 0xf4e39 LB 0x13
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push ax                                   ; 50
-    push 00554h                               ; 68 54 05
+    push 00574h                               ; 68 74 05
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 02 ce
+    call 01972h                               ; e8 2d cb
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4b77 LB 0x26a
+_keyboard_init:                              ; 0xf4e4c LB 0x26a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6494,16 +6745,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04b9ah                           ; 74 0d
+    je short 04e6fh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04b9ah                          ; 76 08
+    jbe short 04e6fh                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04b83h                          ; eb e9
+    jmp short 04e58h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ba3h                          ; 75 05
+    jne short 04e78h                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04b64h                               ; e8 c1 ff
+    call 04e39h                               ; e8 c1 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6512,16 +6763,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04bbdh                          ; 75 0d
+    jne short 04e92h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04bbdh                          ; 76 08
+    jbe short 04e92h                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ba6h                          ; eb e9
+    jmp short 04e7bh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04bc7h                          ; 75 06
+    jne short 04e9ch                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04b64h                               ; e8 9d ff
+    call 04e39h                               ; e8 9d ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6529,7 +6780,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, strict word 00055h                ; 3d 55 00
-    je short 04bd8h                           ; 74 06
+    je short 04eadh                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04b64h                               ; e8 8c ff
+    call 04e39h                               ; e8 8c ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
@@ -6541,16 +6792,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04bf8h                           ; 74 0d
+    je short 04ecdh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04bf8h                          ; 76 08
+    jbe short 04ecdh                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04be1h                          ; eb e9
+    jmp short 04eb6h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04c02h                          ; 75 06
+    jne short 04ed7h                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04b64h                               ; e8 62 ff
+    call 04e39h                               ; e8 62 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6559,16 +6810,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04c1ch                          ; 75 0d
+    jne short 04ef1h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04c1ch                          ; 76 08
+    jbe short 04ef1h                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04c05h                          ; eb e9
+    jmp short 04edah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04c26h                          ; 75 06
+    jne short 04efbh                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04b64h                               ; e8 3e ff
+    call 04e39h                               ; e8 3e ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6576,7 +6827,7 @@
     ; sub ah, ah                                ; 2a e4
     test ax, ax                               ; 85 c0
-    je short 04c36h                           ; 74 06
+    je short 04f0bh                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04b64h                               ; e8 2e ff
+    call 04e39h                               ; e8 2e ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
@@ -6588,16 +6839,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04c56h                           ; 74 0d
+    je short 04f2bh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04c56h                          ; 76 08
+    jbe short 04f2bh                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04c3fh                          ; eb e9
+    jmp short 04f14h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04c60h                          ; 75 06
+    jne short 04f35h                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04b64h                               ; e8 04 ff
+    call 04e39h                               ; e8 04 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6606,16 +6857,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04c7ah                          ; 75 0d
+    jne short 04f4fh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04c7ah                          ; 76 08
+    jbe short 04f4fh                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04c63h                          ; eb e9
+    jmp short 04f38h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04c84h                          ; 75 06
+    jne short 04f59h                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04b64h                               ; e8 e0 fe
+    call 04e39h                               ; e8 e0 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6623,7 +6874,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04c95h                           ; 74 06
+    je short 04f6ah                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04b64h                               ; e8 cf fe
+    call 04e39h                               ; e8 cf fe
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
@@ -6631,9 +6882,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04ca7h                          ; 75 08
+    jne short 04f7ch                          ; 75 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04c95h                          ; eb ee
+    jmp short 04f6ah                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6641,12 +6892,12 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04cc0h                           ; 74 0e
+    je short 04f95h                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04cc0h                           ; 74 06
+    je short 04f95h                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04b64h                               ; e8 a4 fe
+    call 04e39h                               ; e8 a4 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
@@ -6658,16 +6909,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04ce0h                           ; 74 0d
+    je short 04fb5h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ce0h                          ; 76 08
+    jbe short 04fb5h                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04cc9h                          ; eb e9
+    jmp short 04f9eh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ceah                          ; 75 06
+    jne short 04fbfh                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04b64h                               ; e8 7a fe
+    call 04e39h                               ; e8 7a fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6676,16 +6927,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04d04h                          ; 75 0d
+    jne short 04fd9h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04d04h                          ; 76 08
+    jbe short 04fd9h                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04cedh                          ; eb e9
+    jmp short 04fc2h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04d0eh                          ; 75 06
+    jne short 04fe3h                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04b64h                               ; e8 56 fe
+    call 04e39h                               ; e8 56 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6693,7 +6944,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04d1fh                           ; 74 06
+    je short 04ff4h                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04b64h                               ; e8 45 fe
+    call 04e39h                               ; e8 45 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -6705,16 +6956,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04d3fh                           ; 74 0d
+    je short 05014h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04d3fh                          ; 76 08
+    jbe short 05014h                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04d28h                          ; eb e9
+    jmp short 04ffdh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04d49h                          ; 75 06
+    jne short 0501eh                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04b64h                               ; e8 1b fe
+    call 04e39h                               ; e8 1b fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
@@ -6726,16 +6977,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04d69h                           ; 74 0d
+    je short 0503eh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04d69h                          ; 76 08
+    jbe short 0503eh                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04d52h                          ; eb e9
+    jmp short 05027h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04d73h                          ; 75 06
+    jne short 05048h                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04b64h                               ; e8 f1 fd
+    call 04e39h                               ; e8 f1 fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
@@ -6747,16 +6998,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04d93h                           ; 74 0d
+    je short 05068h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04d93h                          ; 76 08
+    jbe short 05068h                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04d7ch                          ; eb e9
+    jmp short 05051h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04d9dh                          ; 75 06
+    jne short 05072h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04b64h                               ; e8 c7 fd
+    call 04e39h                               ; e8 c7 fd
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6765,16 +7016,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04db7h                          ; 75 0d
+    jne short 0508ch                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04db7h                          ; 76 08
+    jbe short 0508ch                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04da0h                          ; eb e9
+    jmp short 05075h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04dc1h                          ; 75 06
+    jne short 05096h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04b64h                               ; e8 a3 fd
+    call 04e39h                               ; e8 a3 fd
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6782,16 +7033,16 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04dd2h                           ; 74 06
+    je short 050a7h                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04b64h                               ; e8 92 fd
+    call 04e39h                               ; e8 92 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 060b6h                               ; e8 d9 12
+    call 06403h                               ; e8 51 13
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf4de1 LB 0x93
+enqueue_key_:                                ; 0xf50b6 LB 0x93
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6805,30 +7056,30 @@
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 75 c8
+    call 0166ch                               ; e8 a0 c5
     mov di, ax                                ; 89 c7
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 6a c8
+    call 0166ch                               ; e8 95 c5
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 04e0fh                           ; 72 03
+    jc short 050e4h                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 04e17h                          ; 75 04
+    jne short 050ech                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 04e3ch                          ; eb 25
+    jmp short 05111h                          ; eb 25
     xor bh, bh                                ; 30 ff
     mov dx, si                                ; 89 f2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 3d c8
+    call 0165eh                               ; e8 68 c5
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     lea dx, [si+001h]                         ; 8d 54 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 30 c8
+    call 0165eh                               ; e8 5b c5
     mov bx, cx                                ; 89 cb
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 41 c8
+    call 0167ah                               ; e8 6c c5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
@@ -6848,23 +7099,22 @@
     cmp bh, byte [bx+si]                      ; 3a 38
     sub bl, byte [ss:di]                      ; 36 2a 1d
-    fist word [bx+si+045h]                    ; df 50 45
-    dec di                                    ; 4f
-    or ax, 00d4fh                             ; 0d 4f 0d
-    dec di                                    ; 4f
-    ror word [bx-01dh], CL                    ; d3 4f e3
-    dec si                                    ; 4e
+    mov AH, strict byte 053h                  ; b4 53
+    sbb dl, byte [bp+si-01eh]                 ; 1a 52 e2
     push cx                                   ; 51
-    push ax                                   ; 50
-    mov word [0c550h], ax                     ; a3 50 c5
-    push ax                                   ; 50
-    mov [bx+00dh], cs                         ; 8c 4f 0d
-    dec di                                    ; 4f
-    or ax, 0124fh                             ; 0d 4f 12
-    push ax                                   ; 50
-    dec word [bp-07ch]                        ; ff 4e 84
-    push ax                                   ; 50
-    db  0beh
-    push ax                                   ; 50
-_int09_function:                             ; 0xf4e74 LB 0x3c7
+    loop 05182h                               ; e2 51
+    test AL, strict byte 052h                 ; a8 52
+    mov ax, 02651h                            ; b8 51 26
+    push bx                                   ; 53
+    js short 0518ch                           ; 78 53
+    call far 0e252h:06153h                    ; 9a 53 61 52 e2
+    push cx                                   ; 51
+    loop 05192h                               ; e2 51
+    out 052h, ax                              ; e7 52
+    aam 051h                                  ; d4 51
+    pop cx                                    ; 59
+    push bx                                   ; 53
+    xchg bx, ax                               ; 93
+    push bx                                   ; 53
+_int09_function:                             ; 0xf5149 LB 0x3c7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6874,27 +7124,27 @@
     mov byte [bp-008h], al                    ; 88 46 f8
     test al, al                               ; 84 c0
-    jne short 04e9eh                          ; 75 19
-    mov bx, 00da2h                            ; bb a2 0d
+    jne short 05173h                          ; 75 19
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 a1 ca
-    push 00567h                               ; 68 67 05
+    call 01931h                               ; e8 cc c7
+    push 00587h                               ; 68 87 05
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 da ca
+    call 01972h                               ; e8 05 c8
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 05235h                           ; e9 97 03
+    jmp near 0550ah                           ; e9 97 03
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 a9 c7
+    call 01650h                               ; e8 d4 c4
     mov byte [bp-010h], al                    ; 88 46 f0
     mov byte [bp-00ah], al                    ; 88 46 f6
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 9a c7
+    call 01650h                               ; e8 c5 c4
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov byte [bp-004h], al                    ; 88 46 fc
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 8b c7
+    call 01650h                               ; e8 b6 c4
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00ch], al                    ; 88 46 f4
@@ -6903,9 +7153,9 @@
     pop ES                                    ; 07
     mov cx, strict word 00010h                ; b9 10 00
-    mov di, 04e45h                            ; bf 45 4e
+    mov di, 0511ah                            ; bf 1a 51
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04e54h]               ; 2e 8b 85 54 4e
+    mov ax, word [cs:di+05129h]               ; 2e 8b 85 29 51
     jmp ax                                    ; ff e0
     xor byte [bp-00ah], 040h                  ; 80 76 f6 40
@@ -6913,15 +7163,15 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 6a c7
+    call 0165eh                               ; e8 95 c4
     or byte [bp-004h], 040h                   ; 80 4e fc 40
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
-    jmp near 05097h                           ; e9 98 01
+    jmp near 0536ch                           ; e9 98 01
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     and AL, strict byte 0bfh                  ; 24 bf
     mov byte [bp-004h], al                    ; 88 46 fc
     movzx bx, al                              ; 0f b6 d8
-    jmp near 05097h                           ; e9 8a 01
+    jmp near 0536ch                           ; e9 8a 01
     test byte [bp-00ch], 002h                 ; f6 46 f4 02
-    jne near 05217h                           ; 0f 85 02 03
+    jne near 054ech                           ; 0f 85 02 03
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 07fh                  ; 24 7f
@@ -6932,17 +7182,17 @@
     inc dx                                    ; 42
     test byte [bp-008h], 080h                 ; f6 46 f8 80
-    je short 04f32h                           ; 74 09
+    je short 05207h                           ; 74 09
     mov al, dl                                ; 88 d0
     not al                                    ; f6 d0
     and byte [bp-00ah], al                    ; 20 46 f6
-    jmp short 04f35h                          ; eb 03
+    jmp short 0520ah                          ; eb 03
     or byte [bp-00ah], dl                     ; 08 56 f6
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 1c c7
-    jmp near 05217h                           ; e9 d2 02
+    call 0165eh                               ; e8 47 c4
+    jmp near 054ech                           ; e9 d2 02
     test byte [bp-006h], 001h                 ; f6 46 fa 01
-    jne near 05217h                           ; 0f 85 ca 02
+    jne near 054ech                           ; 0f 85 ca 02
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 004h                   ; 0c 04
@@ -6951,13 +7201,13 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 fd c6
+    call 0165eh                               ; e8 28 c4
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 002h                 ; a8 02
-    je short 04f75h                           ; 74 0d
+    je short 0524ah                           ; 74 0d
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-00ch], al                    ; 88 46 f4
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04f83h                          ; eb 0e
+    jmp short 05258h                          ; eb 0e
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     or AL, strict byte 001h                   ; 0c 01
@@ -6966,8 +7216,8 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 d5 c6
-    jmp near 05217h                           ; e9 8b 02
+    call 0165eh                               ; e8 00 c4
+    jmp near 054ech                           ; e9 8b 02
     test byte [bp-006h], 001h                 ; f6 46 fa 01
-    jne near 05217h                           ; 0f 85 83 02
+    jne near 054ech                           ; 0f 85 83 02
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0fbh                  ; 24 fb
@@ -6976,13 +7226,13 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 b6 c6
+    call 0165eh                               ; e8 e1 c3
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 002h                 ; a8 02
-    je short 04fbch                           ; 74 0d
+    je short 05291h                           ; 74 0d
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-00ch], al                    ; 88 46 f4
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04fcah                          ; eb 0e
+    jmp short 0529fh                          ; eb 0e
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     and AL, strict byte 0feh                  ; 24 fe
@@ -6991,6 +7241,6 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 8e c6
-    jmp near 05217h                           ; e9 44 02
+    call 0165eh                               ; e8 b9 c3
+    jmp near 054ech                           ; e9 44 02
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 008h                   ; 0c 08
@@ -6999,13 +7249,13 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 77 c6
+    call 0165eh                               ; e8 a2 c3
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 002h                 ; a8 02
-    je short 04ffbh                           ; 74 0d
+    je short 052d0h                           ; 74 0d
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-00ch], al                    ; 88 46 f4
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05009h                          ; eb 0e
+    jmp short 052deh                          ; eb 0e
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     or AL, strict byte 002h                   ; 0c 02
@@ -7014,6 +7264,6 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 4f c6
-    jmp near 05217h                           ; e9 05 02
+    call 0165eh                               ; e8 7a c3
+    jmp near 054ech                           ; e9 05 02
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0f7h                  ; 24 f7
@@ -7022,13 +7272,13 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 38 c6
+    call 0165eh                               ; e8 63 c3
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 002h                 ; a8 02
-    je short 0503ah                           ; 74 0d
+    je short 0530fh                           ; 74 0d
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-00ch], al                    ; 88 46 f4
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05048h                          ; eb 0e
+    jmp short 0531dh                          ; eb 0e
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     and AL, strict byte 0fdh                  ; 24 fd
@@ -7037,8 +7287,8 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 10 c6
-    jmp near 05217h                           ; e9 c6 01
+    call 0165eh                               ; e8 3b c3
+    jmp near 054ech                           ; e9 c6 01
     test byte [bp-006h], 003h                 ; f6 46 fa 03
-    jne near 05217h                           ; 0f 85 be 01
+    jne near 054ech                           ; 0f 85 be 01
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     or AL, strict byte 020h                   ; 0c 20
@@ -7047,5 +7297,5 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 f1 c5
+    call 0165eh                               ; e8 1c c3
     mov al, byte [bp-010h]                    ; 8a 46 f0
     xor AL, strict byte 020h                  ; 34 20
@@ -7054,8 +7304,8 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 dd c5
-    jmp near 05217h                           ; e9 93 01
+    call 0165eh                               ; e8 08 c3
+    jmp near 054ech                           ; e9 93 01
     test byte [bp-006h], 003h                 ; f6 46 fa 03
-    jne near 05217h                           ; 0f 85 8b 01
+    jne near 054ech                           ; 0f 85 8b 01
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     and AL, strict byte 0dfh                  ; 24 df
@@ -7064,6 +7314,6 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 be c5
-    jmp near 05217h                           ; e9 74 01
+    call 0165eh                               ; e8 e9 c2
+    jmp near 054ech                           ; e9 74 01
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     or AL, strict byte 010h                   ; 0c 10
@@ -7072,36 +7322,36 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 a7 c5
+    call 0165eh                               ; e8 d2 c2
     mov al, byte [bp-010h]                    ; 8a 46 f0
     xor AL, strict byte 010h                  ; 34 10
-    jmp short 05072h                          ; eb b4
+    jmp short 05347h                          ; eb b4
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     and AL, strict byte 0efh                  ; 24 ef
-    jmp short 05091h                          ; eb cc
+    jmp short 05366h                          ; eb cc
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 00ch                  ; 24 0c
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jne short 050dfh                          ; 75 11
+    jne short 053b4h                          ; 75 11
     mov bx, 01234h                            ; bb 34 12
     mov dx, strict word 00072h                ; ba 72 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 a0 c5
+    call 0167ah                               ; e8 cb c2
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test AL, strict byte 080h                 ; a8 80
-    je short 0511dh                           ; 74 37
+    je short 053f2h                           ; 74 37
     cmp AL, strict byte 0fah                  ; 3c fa
-    jne short 050fah                          ; 75 10
+    jne short 053cfh                          ; 75 10
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 5d c5
+    call 01650h                               ; e8 88 c2
     mov dl, al                                ; 88 c2
     or dl, 010h                               ; 80 ca 10
-    jmp short 0510eh                          ; eb 14
+    jmp short 053e3h                          ; eb 14
     cmp AL, strict byte 0feh                  ; 3c fe
-    jne near 05217h                           ; 0f 85 17 01
+    jne near 054ech                           ; 0f 85 17 01
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 47 c5
+    call 01650h                               ; e8 72 c2
     mov dl, al                                ; 88 c2
     or dl, 020h                               ; 80 ca 20
@@ -7109,95 +7359,95 @@
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 44 c5
-    jmp near 05217h                           ; e9 fa 00
+    call 0165eh                               ; e8 6f c2
+    jmp near 054ech                           ; e9 fa 00
     cmp byte [bp-008h], 058h                  ; 80 7e f8 58
-    jbe short 05141h                          ; 76 1e
-    mov bx, 00da2h                            ; bb a2 0d
+    jbe short 05416h                          ; 76 1e
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 03 c8
+    call 01931h                               ; e8 2e c5
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    push 00581h                               ; 68 81 05
+    push 005a1h                               ; 68 a1 05
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 37 c8
+    call 01972h                               ; e8 62 c5
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 05235h                           ; e9 f4 00
+    jmp near 0550ah                           ; e9 f4 00
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 008h                 ; a8 08
-    je short 0515ah                           ; 74 12
-    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    imul bx, bx, strict byte 0000ah           ; 6b db 0a
-    mov dl, byte [bx+00df6h]                  ; 8a 97 f6 0d
-    mov ax, word [bx+00df6h]                  ; 8b 87 f6 0d
-    jmp near 051e8h                           ; e9 8e 00
-    test AL, strict byte 004h                 ; a8 04
-    je short 05170h                           ; 74 12
+    je short 0542fh                           ; 74 12
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
     mov dl, byte [bx+00df4h]                  ; 8a 97 f4 0d
     mov ax, word [bx+00df4h]                  ; 8b 87 f4 0d
-    jmp near 051e8h                           ; e9 78 00
+    jmp near 054bdh                           ; e9 8e 00
+    test AL, strict byte 004h                 ; a8 04
+    je short 05445h                           ; 74 12
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    imul bx, bx, strict byte 0000ah           ; 6b db 0a
+    mov dl, byte [bx+00df2h]                  ; 8a 97 f2 0d
+    mov ax, word [bx+00df2h]                  ; 8b 87 f2 0d
+    jmp near 054bdh                           ; e9 78 00
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 002h                  ; 24 02
     test al, al                               ; 84 c0
-    jbe short 0518eh                          ; 76 15
+    jbe short 05463h                          ; 76 15
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 0518eh                           ; 72 0e
+    jc short 05463h                           ; 72 0e
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 0518eh                         ; 77 0a
+    jnbe short 05463h                         ; 77 0a
     mov DL, strict byte 0e0h                  ; b2 e0
     movzx bx, al                              ; 0f b6 d8
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
-    jmp short 051e4h                          ; eb 56
+    jmp short 054b9h                          ; eb 56
     test byte [bp-00ah], 003h                 ; f6 46 f6 03
-    je short 051c2h                           ; 74 2e
+    je short 05497h                           ; 74 2e
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
-    movzx ax, byte [bx+00df8h]                ; 0f b6 87 f8 0d
+    movzx ax, byte [bx+00df6h]                ; 0f b6 87 f6 0d
     movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
     test dx, ax                               ; 85 c2
-    je short 051b2h                           ; 74 0a
-    mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
-    mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
-    jmp short 051bah                          ; eb 08
-    mov dl, byte [bx+00df2h]                  ; 8a 97 f2 0d
-    mov ax, word [bx+00df2h]                  ; 8b 87 f2 0d
-    shr ax, 008h                              ; c1 e8 08
-    mov byte [bp-008h], al                    ; 88 46 f8
-    jmp short 051eeh                          ; eb 2c
-    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    imul bx, bx, strict byte 0000ah           ; 6b db 0a
-    movzx ax, byte [bx+00df8h]                ; 0f b6 87 f8 0d
-    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
-    test dx, ax                               ; 85 c2
-    je short 051e0h                           ; 74 0a
-    mov dl, byte [bx+00df2h]                  ; 8a 97 f2 0d
-    mov ax, word [bx+00df2h]                  ; 8b 87 f2 0d
-    jmp short 051e8h                          ; eb 08
+    je short 05487h                           ; 74 0a
+    mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
+    mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
+    jmp short 0548fh                          ; eb 08
     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-008h], al                    ; 88 46 f8
+    jmp short 054c3h                          ; eb 2c
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    imul bx, bx, strict byte 0000ah           ; 6b db 0a
+    movzx ax, byte [bx+00df6h]                ; 0f b6 87 f6 0d
+    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
+    test dx, ax                               ; 85 c2
+    je short 054b5h                           ; 74 0a
+    mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
+    mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
+    jmp short 054bdh                          ; eb 08
+    mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
+    mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
+    shr ax, 008h                              ; c1 e8 08
+    mov byte [bp-008h], al                    ; 88 46 f8
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 0520eh                          ; 75 1a
+    jne short 054e3h                          ; 75 1a
     test dl, dl                               ; 84 d2
-    jne short 0520eh                          ; 75 16
-    mov bx, 00da2h                            ; bb a2 0d
+    jne short 054e3h                          ; 75 16
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 2e c7
-    push 005b8h                               ; 68 b8 05
+    call 01931h                               ; e8 59 c4
+    push 005d8h                               ; 68 d8 05
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 67 c7
+    call 01972h                               ; e8 92 c4
     add sp, strict byte 00004h                ; 83 c4 04
     xor dh, dh                                ; 30 f6
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 04de1h                               ; e8 ca fb
+    call 050b6h                               ; e8 ca fb
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 01dh                  ; 3c 1d
-    je short 05224h                           ; 74 04
+    je short 054f9h                           ; 74 04
     and byte [bp-00ch], 0feh                  ; 80 66 f4 fe
     and byte [bp-00ch], 0fdh                  ; 80 66 f4 fd
@@ -7205,10 +7455,10 @@
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 29 c4
+    call 0165eh                               ; e8 54 c1
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
-dequeue_key_:                                ; 0xf523b LB 0x94
+dequeue_key_:                                ; 0xf5510 LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -7223,18 +7473,18 @@
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 17 c4
+    call 0166ch                               ; e8 42 c1
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 0c c4
+    call 0166ch                               ; e8 37 c1
     cmp bx, ax                                ; 39 c3
-    je short 052a1h                           ; 74 3d
+    je short 05576h                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 e4 c3
+    call 01650h                               ; e8 0f c1
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 d9 c3
+    call 01650h                               ; e8 04 c1
     mov es, [bp-008h]                         ; 8e 46 f8
     mov byte [es:si], cl                      ; 26 88 0c
@@ -7242,15 +7492,15 @@
     mov byte [es:di], al                      ; 26 88 05
     cmp word [bp+004h], strict byte 00000h    ; 83 7e 04 00
-    je short 0529ch                           ; 74 13
+    je short 05571h                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 05293h                           ; 72 03
+    jc short 05568h                           ; 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 0167ah                               ; e8 de c3
+    call 0167ah                               ; e8 09 c1
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 052a3h                          ; eb 02
+    jmp short 05578h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -7263,20 +7513,23 @@
     or cl, byte [bx+di]                       ; 0a 09
     add ax, 00102h                            ; 05 02 01
-    add byte [di+055h], ch                    ; 00 6d 55
-    adc word [bp+di-036h], strict byte 00053h ; 83 53 ca 53
-    push SS                                   ; 16
-    push sp                                   ; 54
-    db  026h, 054h
-    ; es push sp                                ; 26 54
-    push ax                                   ; 50
-    push sp                                   ; 54
-    pop cx                                    ; 59
-    push sp                                   ; 54
-    retf 0fb54h                               ; ca 54 fb
-    push sp                                   ; 54
-    sub byte [di+062h], dl                    ; 28 55 62
-    push bp                                   ; 55
-    mov AL, strict byte 055h                  ; b0 55
-_int16_function:                             ; 0xf52cf LB 0x2e7
+    add byte [bp+si+058h], al                 ; 00 42 58
+    pop ax                                    ; 58
+    push si                                   ; 56
+    lahf                                      ; 9f
+    push si                                   ; 56
+    jmp short 055eah                          ; eb 56
+    sti                                       ; fb
+    push si                                   ; 56
+    and ax, 02e57h                            ; 25 57 2e
+    push di                                   ; 57
+    lahf                                      ; 9f
+    push di                                   ; 57
+    rcl byte [bx-003h], 1                     ; d0 57 fd
+    push di                                   ; 57
+    aaa                                       ; 37
+    pop ax                                    ; 58
+    db  085h
+    pop ax                                    ; 58
+_int16_function:                             ; 0xf55a4 LB 0x2e7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -7285,10 +7538,10 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 71 c3
+    call 01650h                               ; e8 9c c0
     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 01650h                               ; e8 64 c3
+    call 01650h                               ; e8 8f c0
     mov bl, al                                ; 88 c3
     movzx dx, cl                              ; 0f b6 d1
@@ -7299,5 +7552,5 @@
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 05361h                           ; 74 60
+    je short 05636h                           ; 74 60
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
@@ -7309,9 +7562,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0531ah                          ; 75 08
+    jne short 055efh                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05308h                          ; eb ee
+    jmp short 055ddh                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7319,5 +7572,5 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 05360h                          ; 75 3b
+    jne short 05635h                          ; 75 3b
     and bl, 0c8h                              ; 80 e3 c8
     movzx ax, bh                              ; 0f b6 c7
@@ -7335,9 +7588,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0534fh                          ; 75 08
+    jne short 05624h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0533dh                          ; eb ee
+    jmp short 05612h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7347,18 +7600,18 @@
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 fe c2
+    call 0165eh                               ; e8 29 c0
     sti                                       ; fb
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000a2h                            ; 3d a2 00
-    jnbe near 0556dh                          ; 0f 87 ff 01
+    jnbe near 05842h                          ; 0f 87 ff 01
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 052ach                            ; bf ac 52
+    mov di, 05581h                            ; bf 81 55
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+052b7h]               ; 2e 8b 85 b7 52
+    mov ax, word [cs:di+0558ch]               ; 2e 8b 85 8c 55
     jmp ax                                    ; ff e0
     push strict byte 00001h                   ; 6a 01
@@ -7367,17 +7620,17 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0523bh                               ; e8 a9 fe
+    call 05510h                               ; e8 a9 fe
     test ax, ax                               ; 85 c0
-    jne short 053a1h                          ; 75 0b
-    push 005efh                               ; 68 ef 05
+    jne short 05676h                          ; 75 0b
+    push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 d4 c5
+    call 01972h                               ; e8 ff c2
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 053adh                           ; 74 06
+    je short 05682h                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 053b3h                           ; 74 06
+    je short 05688h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 053b7h                          ; 75 04
+    jne short 0568ch                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
@@ -7386,5 +7639,5 @@
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 055b0h                           ; e9 e6 01
+    jmp near 05885h                           ; e9 e6 01
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     push strict byte 00000h                   ; 6a 00
@@ -7393,15 +7646,15 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0523bh                               ; e8 5d fe
+    call 05510h                               ; e8 5d fe
     test ax, ax                               ; 85 c0
-    jne short 053e9h                          ; 75 07
+    jne short 056beh                          ; 75 07
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp near 055b0h                           ; e9 c7 01
+    jmp near 05885h                           ; e9 c7 01
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 053f5h                           ; 74 06
+    je short 056cah                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 053fbh                           ; 74 06
+    je short 056d0h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 053ffh                          ; 75 04
+    jne short 056d4h                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
@@ -7411,11 +7664,11 @@
     mov word [bp+012h], dx                    ; 89 56 12
     and word [bp+01ch], strict byte 0ffbfh    ; 83 66 1c bf
-    jmp near 055b0h                           ; e9 9a 01
+    jmp near 05885h                           ; e9 9a 01
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 31 c2
+    call 01650h                               ; e8 5c bf
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
-    jmp short 053c4h                          ; eb 9e
+    jmp short 05699h                          ; eb 9e
     mov al, byte [bp+010h]                    ; 8a 46 10
     movzx dx, al                              ; 0f b6 d0
@@ -7423,18 +7676,18 @@
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 04de1h                               ; e8 aa f9
+    call 050b6h                               ; e8 aa f9
     test ax, ax                               ; 85 c0
-    jne short 05448h                          ; 75 0d
+    jne short 0571dh                          ; 75 0d
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 055b0h                           ; e9 68 01
+    jmp near 05885h                           ; e9 68 01
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 055b0h                           ; e9 60 01
+    jmp near 05885h                           ; e9 60 01
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 030h                   ; 0c 30
-    jmp short 05442h                          ; eb e9
+    jmp short 05717h                          ; eb e9
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
@@ -7449,15 +7702,15 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05480h                          ; 75 0d
+    jne short 05755h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05480h                          ; 76 08
+    jbe short 05755h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05469h                          ; eb e9
+    jmp short 0573eh                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 054c4h                          ; 76 40
+    jbe short 05799h                          ; 76 40
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7465,5 +7718,5 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 054c4h                          ; 75 35
+    jne short 05799h                          ; 75 35
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -7472,15 +7725,15 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 054a9h                          ; 75 0d
+    jne short 0577eh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 054a9h                          ; 76 08
+    jbe short 0577eh                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05492h                          ; eb e9
+    jmp short 05767h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 054bbh                          ; 76 0e
+    jbe short 05790h                          ; 76 0e
     shr cx, 008h                              ; c1 e9 08
     mov dx, strict word 00060h                ; ba 60 00
@@ -7492,7 +7745,7 @@
     dec byte [bp-004h]                        ; fe 4e fc
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jnbe short 0548fh                         ; 77 cb
+    jnbe short 05764h                         ; 77 cb
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 055b0h                           ; e9 e6 00
+    jmp near 05885h                           ; e9 e6 00
     push strict byte 00001h                   ; 6a 01
     mov cx, ss                                ; 8c d1
@@ -7500,16 +7753,16 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0523bh                               ; e8 62 fd
+    call 05510h                               ; e8 62 fd
     test ax, ax                               ; 85 c0
-    jne short 054e8h                          ; 75 0b
-    push 005efh                               ; 68 ef 05
+    jne short 057bdh                          ; 75 0b
+    push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 8d c4
+    call 01972h                               ; e8 b8 c1
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 053b7h                            ; 0f 84 c7 fe
+    je near 0568ch                            ; 0f 84 c7 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 053b3h                            ; 0f 84 bb fe
-    jmp near 053b7h                           ; e9 bc fe
+    je near 05688h                            ; 0f 84 bb fe
+    jmp near 0568ch                           ; e9 bc fe
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     push strict byte 00000h                   ; 6a 00
@@ -7518,15 +7771,15 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0523bh                               ; e8 2c fd
+    call 05510h                               ; e8 2c fd
     test ax, ax                               ; 85 c0
-    je near 053e2h                            ; 0f 84 cd fe
+    je near 056b7h                            ; 0f 84 cd fe
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 053ffh                            ; 0f 84 e2 fe
+    je near 056d4h                            ; 0f 84 e2 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 053fbh                            ; 0f 84 d6 fe
-    jmp near 053ffh                           ; e9 d7 fe
+    je near 056d0h                            ; 0f 84 d6 fe
+    jmp near 056d4h                           ; e9 d7 fe
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 1f c1
+    call 01650h                               ; e8 4a be
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
@@ -7534,10 +7787,10 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 0e c1
+    call 01650h                               ; e8 39 be
     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 01650h                               ; e8 00 c1
+    call 01650h                               ; e8 2b be
     and AL, strict byte 00ch                  ; 24 0c
     or bh, al                                 ; 08 c7
@@ -7546,24 +7799,24 @@
     movzx ax, bh                              ; 0f b6 c7
     sal ax, 008h                              ; c1 e0 08
-    jmp near 053c2h                           ; e9 60 fe
+    jmp near 05697h                           ; e9 60 fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 05442h                           ; e9 d5 fe
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 05717h                           ; e9 d5 fe
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 b9 c3
+    call 01931h                               ; e8 e4 c0
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 00613h                               ; 68 13 06
+    push 00633h                               ; 68 33 06
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 eb c3
+    call 01972h                               ; e8 16 c1
     add sp, strict byte 00006h                ; 83 c4 06
-    mov bx, 00da2h                            ; bb a2 0d
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 9c c3
+    call 01931h                               ; e8 c7 c0
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
@@ -7574,7 +7827,7 @@
     mov ax, word [bp+012h]                    ; 8b 46 12
     push ax                                   ; 50
-    push 0063bh                               ; 68 3b 06
+    push 0065bh                               ; 68 5b 06
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 c5 c3
+    call 01972h                               ; e8 f0 c0
     add sp, strict byte 0000ch                ; 83 c4 0c
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -7582,86 +7835,117 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_geom_lba_:                               ; 0xf55b6 LB 0x9e
+set_geom_lba_:                               ; 0xf588b LB 0xe5
+    push bx                                   ; 53
+    push cx                                   ; 51
     push si                                   ; 56
     push di                                   ; 57
-    enter 00004h, 000h                        ; c8 04 00 00
-    mov si, ax                                ; 89 c6
+    enter 00008h, 000h                        ; c8 08 00 00
+    mov di, ax                                ; 89 c7
     mov es, dx                                ; 8e c2
+    mov dword [bp-008h], strict dword 0007e0000h ; 66 c7 46 f8 00 00 7e 00
+    mov word [bp-002h], 000ffh                ; c7 46 fe ff 00
+    mov ax, word [bp+012h]                    ; 8b 46 12
+    mov bx, word [bp+010h]                    ; 8b 5e 10
+    mov cx, word [bp+00eh]                    ; 8b 4e 0e
+    mov dx, word [bp+00ch]                    ; 8b 56 0c
+    mov si, strict word 00020h                ; be 20 00
+    call 09d5ah                               ; e8 a4 44
+    test ax, ax                               ; 85 c0
+    jne short 058c6h                          ; 75 0c
+    test bx, bx                               ; 85 db
+    jne short 058c6h                          ; 75 08
+    test cx, cx                               ; 85 c9
+    jne short 058c6h                          ; 75 04
+    test dx, dx                               ; 85 d2
+    je short 058cdh                           ; 74 07
+    mov bx, strict word 0ffffh                ; bb ff ff
+    mov si, bx                                ; 89 de
+    jmp short 058d3h                          ; eb 06
+    mov bx, word [bp+00ch]                    ; 8b 5e 0c
+    mov si, word [bp+00eh]                    ; 8b 76 0e
     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 055d7h                          ; eb 05
+    jmp short 058dfh                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 055edh                          ; 7d 16
-    cmp dx, word [bp-002h]                    ; 3b 56 fe
-    jnbe short 055e3h                         ; 77 07
-    jne short 055e6h                          ; 75 08
-    cmp ax, word [bp-004h]                    ; 3b 46 fc
-    jc short 055e6h                           ; 72 03
-    inc di                                    ; 47
-    shr di, 1                                 ; d1 ef
-    shr dx, 1                                 ; d1 ea
-    rcr ax, 1                                 ; d1 d8
+    jnl short 05902h                          ; 7d 23
+    mov ax, word [bp-006h]                    ; 8b 46 fa
+    cmp si, ax                                ; 39 c6
+    jc short 058f0h                           ; 72 0a
+    jne short 058f9h                          ; 75 11
+    mov ax, word [bp-004h]                    ; 8b 46 fc
+    cmp ax, word [bp-008h]                    ; 3b 46 f8
+    jnbe short 058f9h                         ; 77 09
+    mov ax, word [bp-002h]                    ; 8b 46 fe
+    inc ax                                    ; 40
+    shr ax, 1                                 ; d1 e8
+    mov word [bp-002h], ax                    ; 89 46 fe
+    shr word [bp-006h], 1                     ; d1 6e fa
+    rcr word [bp-008h], 1                     ; d1 5e f8
     inc bx                                    ; 43
-    jmp short 055d2h                          ; eb e5
-    mov ax, di                                ; 89 f8
+    jmp short 058dah                          ; eb d8
+    mov ax, word [bp-002h]                    ; 8b 46 fe
     xor dx, dx                                ; 31 d2
     mov bx, strict word 0003fh                ; bb 3f 00
     xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 80 41
+    call 09d19h                               ; e8 0a 44
     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 09740h                               ; e8 3a 41
-    mov word [es:si+002h], ax                 ; 26 89 44 02
+    mov dx, si                                ; 89 f2
+    call 09ce0h                               ; e8 c5 43
+    mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 05615h                          ; 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
+    jbe short 0592ah                          ; 76 06
+    mov word [es:di+002h], 00400h             ; 26 c7 45 02 00 04
+    mov ax, word [bp-002h]                    ; 8b 46 fe
+    mov word [es:di], ax                      ; 26 89 05
+    mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00
     leave                                     ; c9
     pop di                                    ; 5f
     pop si                                    ; 5e
-    retn                                      ; c3
-    ficom word [bp+004h]                      ; de 56 04
-    push di                                   ; 57
-    xor word [bx+031h], dx                    ; 31 57 31
-    push di                                   ; 57
-    xor word [bx+009h], dx                    ; 31 57 09
     pop cx                                    ; 59
-    aaa                                       ; 37
+    pop bx                                    ; 5b
+    retn 00008h                               ; c2 08 00
+    cli                                       ; fa
+    pop cx                                    ; 59
+    and byte [bp+si+04dh], bl                 ; 20 5a 4d
     pop dx                                    ; 5a
-    aaa                                       ; 37
+    dec bp                                    ; 4d
     pop dx                                    ; 5a
-    and bl, byte [bx+di+014h]                 ; 22 59 14
+    dec bp                                    ; 4d
     pop dx                                    ; 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-    adc AL, strict byte 05ah                  ; 14 5a
-    adc AL, strict byte 05ah                  ; 14 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-    cbw                                       ; 98
-    pop cx                                    ; 59
-    adc AL, strict byte 05ah                  ; 14 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-    adc AL, strict byte 05ah                  ; 14 5a
-    enter 03759h, 05ah                        ; c8 59 37 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-    aaa                                       ; 37
-    pop dx                                    ; 5a
-_int13_harddisk:                             ; 0xf5654 LB 0x441
+    db  02eh, 05ch
+    ; cs pop sp                                 ; 2e 5c
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    inc di                                    ; 47
+    pop sp                                    ; 5c
+    cmp word [di+05ch], bx                    ; 39 5d 5c
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    cmp word [di+039h], bx                    ; 39 5d 39
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    mov bp, 0395ch                            ; bd 5c 39
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    cmp word [di-013h], bx                    ; 39 5d ed
+    pop sp                                    ; 5c
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+    pop sp                                    ; 5c
+    pop bp                                    ; 5d
+_int13_harddisk:                             ; 0xf5970 LB 0x44a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -7669,5 +7953,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 09 c0
+    call 0166ch                               ; e8 ed bc
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
@@ -7675,11 +7959,11 @@
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 ea bf
+    call 0165eh                               ; e8 ce bc
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05683h                           ; 72 05
+    jc short 0599fh                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 056a1h                           ; 72 1e
+    jc short 059bdh                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7688,10 +7972,10 @@
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0065eh                               ; 68 5e 06
-    push 0066dh                               ; 68 6d 06
+    push 0067eh                               ; 68 7e 06
+    push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 d7 c2
+    call 01972h                               ; e8 bb bf
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05a52h                           ; e9 b1 03
+    jmp near 05d77h                           ; e9 ba 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7699,30 +7983,30 @@
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    mov dl, byte [es:bx+0011fh]               ; 26 8a 97 1f 01
+    mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
     mov byte [bp-002h], dl                    ; 88 56 fe
     cmp dl, 010h                              ; 80 fa 10
-    jc short 056cah                           ; 72 10
+    jc short 059e6h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0065eh                               ; 68 5e 06
-    push 00698h                               ; 68 98 06
-    jmp short 05696h                          ; eb cc
+    push 0067eh                               ; 68 7e 06
+    push 006b8h                               ; 68 b8 06
+    jmp short 059b2h                          ; 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 05a37h                          ; 0f 87 60 03
+    jnbe near 05d5ch                          ; 0f 87 69 03
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+05622h]                   ; 2e ff a7 22 56
+    jmp word [cs:bx+0593eh]                   ; 2e ff a7 3e 59
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc near 056edh                           ; 0f 83 07 00
+    jnc near 05a09h                           ; 0f 83 07 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01c71h                               ; e8 84 c5
+    call 01d7ch                               ; e8 73 c3
     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 0165eh                               ; e8 62 bf
+    call 0165eh                               ; e8 46 bc
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
@@ -7731,5 +8015,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 43 bf
+    call 01650h                               ; e8 27 bc
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
@@ -7742,8 +8026,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 34 bf
+    call 0165eh                               ; e8 18 bc
     test cl, cl                               ; 84 c9
-    je short 056f1h                           ; 74 c3
-    jmp near 05a6eh                           ; e9 3d 03
+    je short 05a0dh                           ; 74 c3
+    jmp near 05d93h                           ; e9 46 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -7765,40 +8049,40 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, 00080h                            ; 3d 80 00
-    jnbe short 0576ch                         ; 77 04
+    jnbe short 05a88h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 0578fh                          ; 75 23
-    mov bx, 00da2h                            ; bb a2 0d
+    jne short 05aabh                          ; 75 23
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 ba c1
+    call 01931h                               ; e8 9e be
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0065eh                               ; 68 5e 06
-    push 006cah                               ; 68 ca 06
+    push 0067eh                               ; 68 7e 06
+    push 006eah                               ; 68 ea 06
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 e9 c1
+    call 01972h                               ; e8 cd be
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05a52h                           ; e9 c3 02
+    jmp near 05d77h                           ; e9 cc 02
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-004h]                         ; 8e 46 fc
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    mov ax, word [es:bx+028h]                 ; 26 8b 47 28
-    mov cx, word [es:bx+026h]                 ; 26 8b 4f 26
-    mov dx, word [es:bx+02ah]                 ; 26 8b 57 2a
+    mov ax, word [es:bx+02ch]                 ; 26 8b 47 2c
+    mov cx, word [es:bx+02ah]                 ; 26 8b 4f 2a
+    mov dx, word [es:bx+02eh]                 ; 26 8b 57 2e
     mov word [bp-00ah], dx                    ; 89 56 f6
     cmp di, ax                                ; 39 c7
-    jnc short 057bch                          ; 73 0c
+    jnc short 05ad8h                          ; 73 0c
     cmp cx, word [bp-008h]                    ; 3b 4e f8
-    jbe short 057bch                          ; 76 07
+    jbe short 05ad8h                          ; 76 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp ax, dx                                ; 39 d0
-    jbe short 057eah                          ; 76 2e
-    mov bx, 00da2h                            ; bb a2 0d
+    jbe short 05b06h                          ; 76 2e
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 6a c1
+    call 01931h                               ; e8 4e be
     push dword [bp-008h]                      ; 66 ff 76 f8
     push di                                   ; 57
@@ -7809,31 +8093,31 @@
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0065eh                               ; 68 5e 06
-    push 006f2h                               ; 68 f2 06
+    push 0067eh                               ; 68 7e 06
+    push 00712h                               ; 68 12 07
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 8e c1
+    call 01972h                               ; e8 72 be
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 05a52h                           ; e9 68 02
+    jmp near 05d77h                           ; e9 71 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 057f8h                          ; 75 03
-    jmp near 056edh                           ; e9 f5 fe
+    jne short 05b14h                          ; 75 03
+    jmp near 05a09h                           ; e9 f5 fe
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
-    imul bx, bx, strict byte 00018h           ; 6b db 18
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
     mov es, [bp-004h]                         ; 8e 46 fc
     add bx, si                                ; 01 f3
-    cmp cx, word [es:bx+02ch]                 ; 26 3b 4f 2c
-    jne short 05819h                          ; 75 0f
-    mov ax, word [es:bx+030h]                 ; 26 8b 47 30
+    cmp cx, word [es:bx+030h]                 ; 26 3b 4f 30
+    jne short 05b35h                          ; 75 0f
+    mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    jne short 05819h                          ; 75 06
+    jne short 05b35h                          ; 75 06
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 05849h                           ; 72 30
+    jc short 05b65h                           ; 72 30
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 55 3f
+    call 09d19h                               ; e8 d9 41
     xor bx, bx                                ; 31 db
     add ax, word [bp-008h]                    ; 03 46 f8
@@ -7841,5 +8125,5 @@
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 46 3f
+    call 09d19h                               ; e8 ca 41
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
@@ -7851,30 +8135,32 @@
     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
+    db  066h, 026h, 0c7h, 044h, 018h, 000h, 000h, 000h, 000h
+    ; mov dword [es:si+018h], strict dword 000000000h ; 66 26 c7 44 18 00 00 00 00
+    mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 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
+    db  066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h
+    ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00
     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 word [es:si+008h], ax                 ; 26 89 44 08
+    mov word [es:si+00ah], dx                 ; 26 89 54 0a
     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 word [es:si+00eh], ax                 ; 26 89 44 0e
+    mov word [es:si+010h], 00200h             ; 26 c7 44 10 00 02
+    mov word [es:si+012h], di                 ; 26 89 7c 12
     mov ax, word [bp-008h]                    ; 8b 46 f8
-    mov word [es:si+010h], ax                 ; 26 89 44 10
+    mov word [es:si+014h], ax                 ; 26 89 44 14
     mov ax, word [bp-006h]                    ; 8b 46 fa
-    mov word [es:si+012h], ax                 ; 26 89 44 12
+    mov word [es:si+016h], ax                 ; 26 89 44 16
     mov al, byte [bp-002h]                    ; 8a 46 fe
-    mov byte [es:si+008h], al                 ; 26 88 44 08
+    mov byte [es:si+00ch], al                 ; 26 88 44 0c
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    movzx ax, byte [es:bx+01eh]               ; 26 0f b6 47 1e
+    movzx ax, byte [es:bx+022h]               ; 26 0f b6 47 22
     mov bx, ax                                ; 89 c3
     sal bx, 002h                              ; c1 e3 02
@@ -7890,13 +8176,13 @@
     xor al, al                                ; 30 c0
     mov es, [bp-004h]                         ; 8e 46 fc
-    mov bx, word [es:si+014h]                 ; 26 8b 5c 14
+    mov bx, word [es:si+018h]                 ; 26 8b 5c 18
     or bx, ax                                 ; 09 c3
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je near 056edh                            ; 0f 84 13 fe
-    mov bx, 00da2h                            ; bb a2 0d
+    je near 05a09h                            ; 0f 84 0a fe
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 4c c0
+    call 01931h                               ; e8 27 bd
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -7904,32 +8190,32 @@
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0065eh                               ; 68 5e 06
-    push 00739h                               ; 68 39 07
+    push 0067eh                               ; 68 7e 06
+    push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 77 c0
+    call 01972h                               ; e8 52 bd
     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 05a5ah                           ; e9 51 01
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 05d7fh                           ; e9 51 01
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 1d c0
-    push 0075ah                               ; 68 5a 07
+    call 01931h                               ; e8 f8 bc
+    push 0077ah                               ; 68 7a 07
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 56 c0
+    call 01972h                               ; e8 31 bd
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 056edh                           ; e9 cb fd
+    jmp near 05a09h                           ; e9 c2 fd
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     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 di, word [es:bx+02ch]                 ; 26 8b 7f 2c
+    mov cx, word [es:bx+02ah]                 ; 26 8b 4f 2a
+    mov ax, word [es:bx+02eh]                 ; 26 8b 47 2e
     mov word [bp-00ah], ax                    ; 89 46 f6
-    movzx ax, byte [es:si+0019eh]             ; 26 0f b6 84 9e 01
+    movzx ax, byte [es:si+001e2h]             ; 26 0f b6 84 e2 01
     mov word [bp-00ch], ax                    ; 89 46 f4
     mov byte [bp+016h], 000h                  ; c6 46 16 00
@@ -7964,5 +8250,5 @@
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 056edh                           ; e9 55 fd
+    jmp near 05a09h                           ; e9 4c fd
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     cwd                                       ; 99
@@ -7973,5 +8259,5 @@
     mov es, [bp-004h]                         ; 8e 46 fc
     add si, ax                                ; 01 c6
-    mov dx, word [es:si+001c2h]               ; 26 8b 94 c2 01
+    mov dx, word [es:si+00206h]               ; 26 8b 94 06 02
     add dx, strict byte 00007h                ; 83 c2 07
     in AL, DX                                 ; ec
@@ -7980,18 +8266,18 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 059bdh                          ; 75 03
-    jmp near 056edh                           ; e9 30 fd
+    jne short 05ce2h                          ; 75 03
+    jmp near 05a09h                           ; e9 27 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 05a5ah                           ; e9 92 00
+    jmp near 05d7fh                           ; e9 92 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     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 di, word [es:si+032h]                 ; 26 8b 7c 32
+    mov ax, word [es:si+030h]                 ; 26 8b 44 30
     mov word [bp-008h], ax                    ; 89 46 f8
-    mov ax, word [es:si+030h]                 ; 26 8b 44 30
+    mov ax, word [es:si+034h]                 ; 26 8b 44 34
     mov word [bp-006h], ax                    ; 89 46 fa
     mov ax, di                                ; 89 f8
@@ -7999,8 +8285,8 @@
     mov bx, word [bp-008h]                    ; 8b 5e f8
     xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 87 3d
+    call 09d19h                               ; e8 02 40
     mov bx, word [bp-006h]                    ; 8b 5e fa
     xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 7f 3d
+    call 09d19h                               ; e8 fa 3f
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-00eh], dx                    ; 89 56 f2
@@ -8011,28 +8297,28 @@
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 056f1h                           ; e9 dd fc
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 05a0dh                           ; e9 d4 fc
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 12 bf
+    call 01931h                               ; e8 ed bb
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0065eh                               ; 68 5e 06
-    push 00774h                               ; 68 74 07
+    push 0067eh                               ; 68 7e 06
+    push 00794h                               ; 68 94 07
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 41 bf
+    call 01972h                               ; e8 1c bc
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 056edh                           ; e9 b6 fc
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 05a09h                           ; e9 ad fc
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 ef be
+    call 01931h                               ; e8 ca bb
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 0065eh                               ; 68 5e 06
-    push 007a7h                               ; 68 a7 07
-    jmp near 05784h                           ; e9 32 fd
+    push 0067eh                               ; 68 7e 06
+    push 007c7h                               ; 68 c7 07
+    jmp near 05aa0h                           ; e9 29 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -8044,56 +8330,49 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 f0 bb
+    call 0165eh                               ; e8 cb b8
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05700h                           ; e9 8b fc
-    xor byte [bp+di+048h], bl                 ; 30 5b 48
-    pop bx                                    ; 5b
-    dec ax                                    ; 48
-    pop bx                                    ; 5b
-    dec ax                                    ; 48
-    pop bx                                    ; 5b
-    neg word [bp-075h]                        ; f7 5e 8b
-    pop sp                                    ; 5c
-    dec ax                                    ; 48
-    pop bx                                    ; 5b
-    xchg cx, ax                               ; 91
-    pop sp                                    ; 5c
-    neg word [bp+046h]                        ; f7 5e 46
+    jmp near 05a1ch                           ; e9 82 fc
+    pop ax                                    ; 58
+    pop si                                    ; 5e
+    jo short 05dfch                           ; 70 5e
+    jo short 05dfeh                           ; 70 5e
+    jo short 05e00h                           ; 70 5e
+    inc sp                                    ; 44
+    db  062h
+    lds bx, [bx+070h]                         ; c5 5f 70
+    pop si                                    ; 5e
+    retf                                      ; cb
     pop di                                    ; 5f
-    inc si                                    ; 46
-    pop di                                    ; 5f
-    inc si                                    ; 46
-    pop di                                    ; 5f
-    inc si                                    ; 46
-    pop di                                    ; 5f
-    push CS                                   ; 0e
-    pop di                                    ; 5f
-    inc si                                    ; 46
-    pop di                                    ; 5f
-    inc si                                    ; 46
-    pop di                                    ; 5f
-_int13_harddisk_ext:                         ; 0xf5a95 LB 0x4cc
+    inc sp                                    ; 44
+    bound dx, [bp+di-06c9eh]                  ; 62 93 62 93
+    bound dx, [bp+di-06c9eh]                  ; 62 93 62 93
+    bound bx, [bp+di+062h]                    ; 62 5b 62
+    xchg bx, ax                               ; 93
+    db  062h
+    xchg bx, ax                               ; 93
+    db  062h
+_int13_harddisk_ext:                         ; 0xf5dba LB 0x4f4
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    sub sp, strict byte 00028h                ; 83 ec 28
+    sub sp, strict byte 00026h                ; 83 ec 26
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 c8 bb
+    call 0166ch                               ; e8 a3 b8
     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 0166ch                               ; e8 bc bb
-    mov si, 00122h                            ; be 22 01
-    mov word [bp-026h], ax                    ; 89 46 da
+    call 0166ch                               ; e8 97 b8
+    mov word [bp-008h], 00122h                ; c7 46 f8 22 01
+    mov word [bp-006h], ax                    ; 89 46 fa
     xor bx, bx                                ; 31 db
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 9d bb
+    call 0165eh                               ; e8 76 b8
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05ad0h                           ; 72 05
+    jc short 05df7h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05aeeh                           ; 72 1e
+    jc short 05e15h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -8102,34 +8381,34 @@
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 007d5h                               ; 68 d5 07
-    push 0066dh                               ; 68 6d 06
+    push 007f5h                               ; 68 f5 07
+    push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 8a be
+    call 01972h                               ; e8 63 bb
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05f24h                           ; e9 36 04
+    jmp near 06271h                           ; e9 5c 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
+    les bx, [bp-008h]                         ; c4 5e f8
     add bx, ax                                ; 01 c3
-    mov cl, byte [es:bx+0011fh]               ; 26 8a 8f 1f 01
-    cmp cl, 010h                              ; 80 f9 10
-    jc short 05b14h                           ; 72 10
+    mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
+    mov byte [bp-004h], dl                    ; 88 56 fc
+    cmp dl, 010h                              ; 80 fa 10
+    jc short 05e3ch                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 007d5h                               ; 68 d5 07
-    push 00698h                               ; 68 98 06
-    jmp short 05ae3h                          ; eb cf
+    push 007f5h                               ; 68 f5 07
+    push 006b8h                               ; 68 b8 06
+    jmp short 05e0ah                          ; eb ce
     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 05f46h                          ; 0f 87 22 04
+    jnbe near 06293h                          ; 0f 87 47 04
     add bx, bx                                ; 01 db
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
-    jmp word [cs:bx+05a75h]                   ; 2e ff a7 75 5a
+    jmp word [cs:bx+05d9ah]                   ; 2e ff a7 9a 5d
     mov word [bp+010h], 0aa55h                ; c7 46 10 55 aa
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -8138,247 +8417,263 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 05efbh                           ; e9 b3 03
-    mov bx, word [bp+00ah]                    ; 8b 5e 0a
+    jmp near 06248h                           ; e9 d8 03
+    mov di, word [bp+00ah]                    ; 8b 7e 0a
     mov es, [bp+004h]                         ; 8e 46 04
-    mov di, bx                                ; 89 df
-    mov [bp-010h], es                         ; 8c 46 f0
-    mov ax, word [es:bx+002h]                 ; 26 8b 47 02
+    mov word [bp-01ch], di                    ; 89 7e e4
+    mov [bp-01ah], es                         ; 8c 46 e6
+    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     mov word [bp-012h], ax                    ; 89 46 ee
-    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov ax, word [es:di+006h]                 ; 26 8b 45 06
+    mov word [bp-016h], ax                    ; 89 46 ea
+    mov ax, word [es:di+004h]                 ; 26 8b 45 04
     mov word [bp-018h], ax                    ; 89 46 e8
-    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-00ah], ax                    ; 89 46 f6
-    mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
-    or ax, word [bp-00ah]                     ; 0b 46 f6
-    je short 05b89h                           ; 74 11
+    mov dx, word [es:di+00ch]                 ; 26 8b 55 0c
+    mov cx, word [es:di+00eh]                 ; 26 8b 4d 0e
+    xor ax, ax                                ; 31 c0
+    xor bx, bx                                ; 31 db
+    mov si, strict word 00020h                ; be 20 00
+    call 09d4ah                               ; e8 a7 3e
+    mov word [bp-00eh], bx                    ; 89 5e f2
+    mov bx, word [es:di+008h]                 ; 26 8b 5d 08
+    mov di, word [es:di+00ah]                 ; 26 8b 7d 0a
+    or dx, bx                                 ; 09 da
+    or cx, di                                 ; 09 f9
+    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
+    les di, [bp-008h]                         ; c4 7e f8
+    add di, bx                                ; 01 df
+    mov bl, byte [es:di+022h]                 ; 26 8a 5d 22
+    cmp ax, word [es:di+03ch]                 ; 26 3b 45 3c
+    jnbe short 05eeah                         ; 77 22
+    jne short 05f0dh                          ; 75 43
+    mov si, word [bp-00eh]                    ; 8b 76 f2
+    cmp si, word [es:di+03ah]                 ; 26 3b 75 3a
+    jnbe short 05eeah                         ; 77 17
+    mov si, word [bp-00eh]                    ; 8b 76 f2
+    cmp si, word [es:di+03ah]                 ; 26 3b 75 3a
+    jne short 05f0dh                          ; 75 31
+    cmp cx, word [es:di+038h]                 ; 26 3b 4d 38
+    jnbe short 05eeah                         ; 77 08
+    jne short 05f0dh                          ; 75 29
+    cmp dx, word [es:di+036h]                 ; 26 3b 55 36
+    jc short 05f0dh                           ; 72 23
+    mov bx, 00da0h                            ; bb a0 0d
+    mov cx, ds                                ; 8c d9
+    mov ax, strict word 00004h                ; b8 04 00
+    call 01931h                               ; e8 3c ba
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 007d5h                               ; 68 d5 07
-    push 007e8h                               ; 68 e8 07
-    push strict byte 00007h                   ; 6a 07
-    jmp short 05bd3h                          ; eb 4a
-    mov es, [bp-010h]                         ; 8e 46 f0
-    mov ax, word [es:di+008h]                 ; 26 8b 45 08
-    mov word [bp-00ah], ax                    ; 89 46 f6
-    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
-    movzx dx, cl                              ; 0f b6 d1
-    imul dx, dx, strict byte 00018h           ; 6b d2 18
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov bx, si                                ; 89 f3
+    push 007f5h                               ; 68 f5 07
+    push 00808h                               ; 68 08 08
+    push strict byte 00004h                   ; 6a 04
+    call 01972h                               ; e8 6b ba
+    add sp, strict byte 00008h                ; 83 c4 08
+    jmp near 06271h                           ; e9 64 03
+    mov di, word [bp+016h]                    ; 8b 7e 16
+    shr di, 008h                              ; c1 ef 08
+    cmp di, strict byte 00044h                ; 83 ff 44
+    je near 06244h                            ; 0f 84 2a 03
+    cmp di, strict byte 00047h                ; 83 ff 47
+    je near 06244h                            ; 0f 84 23 03
+    les si, [bp-008h]                         ; c4 76 f8
+    db  066h, 026h, 0c7h, 044h, 018h, 000h, 000h, 000h, 000h
+    ; mov dword [es:si+018h], strict dword 000000000h ; 66 26 c7 44 18 00 00 00 00
+    mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00
+    mov word [es:si+006h], ax                 ; 26 89 44 06
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov word [es:si+004h], ax                 ; 26 89 44 04
+    mov word [es:si+002h], cx                 ; 26 89 4c 02
+    mov word [es:si], dx                      ; 26 89 14
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    mov word [es:si+008h], ax                 ; 26 89 44 08
+    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov word [es:si+00ah], ax                 ; 26 89 44 0a
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov word [es:si+00eh], ax                 ; 26 89 44 0e
+    mov word [es:si+010h], 00200h             ; 26 c7 44 10 00 02
+    mov word [es:si+016h], strict word 00000h ; 26 c7 44 16 00 00
+    mov al, byte [bp-004h]                    ; 8a 46 fc
+    mov byte [es:si+00ch], al                 ; 26 88 44 0c
+    mov dx, di                                ; 89 fa
+    add dx, di                                ; 01 fa
+    movzx ax, bl                              ; 0f b6 c3
+    mov bx, ax                                ; 89 c3
+    sal bx, 002h                              ; c1 e3 02
     add bx, dx                                ; 01 d3
-    mov ch, byte [es:bx+01eh]                 ; 26 8a 6f 1e
-    cmp ax, word [es:bx+034h]                 ; 26 3b 47 34
-    jnbe short 05bb9h                         ; 77 0b
-    jne short 05bdch                          ; 75 2c
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    cmp dx, word [es:bx+032h]                 ; 26 3b 57 32
-    jc short 05bdch                           ; 72 23
-    mov bx, 00da2h                            ; bb a2 0d
-    mov cx, ds                                ; 8c d9
-    mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 6d bd
-    mov ax, word [bp+016h]                    ; 8b 46 16
-    shr ax, 008h                              ; c1 e8 08
-    push ax                                   ; 50
-    push 007d5h                               ; 68 d5 07
-    push 00811h                               ; 68 11 08
-    push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 9c bd
-    add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05f24h                           ; e9 48 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 05ef7h                            ; 0f 84 0b 03
-    cmp dx, strict byte 00047h                ; 83 fa 47
-    je near 05ef7h                            ; 0f 84 04 03
-    mov es, [bp-026h]                         ; 8e 46 da
-    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 dx, word [bp-00ah]                    ; 8b 56 f6
-    mov word [es:si], dx                      ; 26 89 14
-    mov word [es:si+002h], ax                 ; 26 89 44 02
-    mov ax, word [bp-016h]                    ; 8b 46 ea
-    mov word [es:si+004h], ax                 ; 26 89 44 04
-    mov ax, word [bp-018h]                    ; 8b 46 e8
-    mov word [es:si+006h], ax                 ; 26 89 44 06
-    mov ax, word [bp-012h]                    ; 8b 46 ee
-    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+012h], strict word 00000h ; 26 c7 44 12 00 00
-    mov byte [es:si+008h], cl                 ; 26 88 4c 08
-    mov bx, word [bp-00ch]                    ; 8b 5e f4
-    add bx, bx                                ; 01 db
-    movzx ax, ch                              ; 0f b6 c5
-    sal ax, 002h                              ; c1 e0 02
-    add bx, ax                                ; 01 c3
     push ES                                   ; 06
     push si                                   ; 56
     call word [word bx-00002h]                ; ff 97 fe ff
     mov dx, ax                                ; 89 c2
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov ax, word [es:si+014h]                 ; 26 8b 44 14
+    mov es, [bp-006h]                         ; 8e 46 fa
+    mov bx, si                                ; 89 f3
+    mov ax, word [es:bx+018h]                 ; 26 8b 47 18
     mov word [bp-012h], ax                    ; 89 46 ee
-    mov es, [bp-010h]                         ; 8e 46 f0
-    mov word [es:di+002h], ax                 ; 26 89 45 02
+    les bx, [bp-01ch]                         ; c4 5e e4
+    mov word [es:bx+002h], ax                 ; 26 89 47 02
     test dl, dl                               ; 84 d2
-    je near 05ef7h                            ; 0f 84 97 02
-    mov bx, 00da2h                            ; bb a2 0d
+    je near 06244h                            ; 0f 84 a8 02
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 c6 bc
+    call 01931h                               ; e8 8a b9
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
-    push word [bp-00ch]                       ; ff 76 f4
-    push 007d5h                               ; 68 d5 07
-    push 00739h                               ; 68 39 07
+    push di                                   ; 57
+    push 007f5h                               ; 68 f5 07
+    push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 f5 bc
+    call 01972h                               ; e8 bb b9
     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 05f2ch                           ; e9 a1 02
+    jmp near 06279h                           ; e9 b4 02
     or ah, 0b2h                               ; 80 cc b2
-    jmp near 05f2ch                           ; e9 9b 02
+    jmp near 06279h                           ; e9 ae 02
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    mov word [bp-006h], ax                    ; 89 46 fa
-    mov word [bp-004h], ax                    ; 89 46 fc
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov di, bx                                ; 89 df
+    mov word [bp-00ah], ax                    ; 89 46 f6
     mov es, ax                                ; 8e c0
-    mov di, bx                                ; 89 df
-    mov ax, word [es:di]                      ; 26 8b 05
-    mov word [bp-00eh], ax                    ; 89 46 f2
+    mov ax, word [es:bx]                      ; 26 8b 07
+    mov word [bp-010h], ax                    ; 89 46 f0
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 05f24h                            ; 0f 82 76 02
-    jc near 05d35h                            ; 0f 82 83 00
-    movzx ax, cl                              ; 0f b6 c1
-    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 ax, word [es:di+02eh]                 ; 26 8b 45 2e
-    mov word [bp-028h], ax                    ; 89 46 d8
-    mov ax, word [es:di+02ch]                 ; 26 8b 45 2c
-    mov word [bp-01eh], ax                    ; 89 46 e2
-    mov ax, word [es:di+030h]                 ; 26 8b 45 30
+    jc near 06271h                            ; 0f 82 89 02
+    jc near 06087h                            ; 0f 82 9b 00
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    les bx, [bp-008h]                         ; c4 5e f8
+    add bx, ax                                ; 01 c3
+    mov ax, word [es:bx+032h]                 ; 26 8b 47 32
+    mov word [bp-026h], ax                    ; 89 46 da
+    mov ax, word [es:bx+030h]                 ; 26 8b 47 30
+    mov word [bp-020h], ax                    ; 89 46 e0
+    mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     mov word [bp-024h], ax                    ; 89 46 dc
-    mov ax, word [es:di+032h]                 ; 26 8b 45 32
-    mov word [bp-00ah], ax                    ; 89 46 f6
-    mov ax, word [es:di+034h]                 ; 26 8b 45 34
-    mov dx, word [es:di+024h]                 ; 26 8b 55 24
-    mov word [bp-022h], dx                    ; 89 56 de
-    mov es, [bp-006h]                         ; 8e 46 fa
-    mov di, bx                                ; 89 df
-    db  066h, 026h, 0c7h, 005h, 01ah, 000h, 002h, 000h
-    ; mov dword [es:di], strict dword 00002001ah ; 66 26 c7 05 1a 00 02 00
-    mov dx, word [bp-028h]                    ; 8b 56 d8
-    mov word [es:di+004h], dx                 ; 26 89 55 04
-    mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00
-    mov dx, word [bp-01eh]                    ; 8b 56 e2
-    mov word [es:di+008h], dx                 ; 26 89 55 08
-    mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00
-    mov dx, word [bp-024h]                    ; 8b 56 dc
-    mov word [es:di+00ch], dx                 ; 26 89 55 0c
-    mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00
-    mov dx, word [bp-022h]                    ; 8b 56 de
-    mov word [es:di+018h], dx                 ; 26 89 55 18
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    mov word [es:di+010h], dx                 ; 26 89 55 10
-    mov word [es:di+012h], ax                 ; 26 89 45 12
-    db  066h, 026h, 0c7h, 045h, 014h, 000h, 000h, 000h, 000h
-    ; 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 05e41h                            ; 0f 82 04 01
-    mov es, [bp-004h]                         ; 8e 46 fc
-    mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
+    mov ax, word [es:bx+03ch]                 ; 26 8b 47 3c
+    mov dx, word [es:bx+03ah]                 ; 26 8b 57 3a
+    mov word [bp-00eh], dx                    ; 89 56 f2
+    mov cx, word [es:bx+038h]                 ; 26 8b 4f 38
+    mov dx, word [es:bx+036h]                 ; 26 8b 57 36
+    mov bx, word [es:bx+028h]                 ; 26 8b 5f 28
+    mov word [bp-022h], bx                    ; 89 5e de
+    mov es, [bp-00ch]                         ; 8e 46 f4
+    mov bx, di                                ; 89 fb
+    db  066h, 026h, 0c7h, 007h, 01ah, 000h, 002h, 000h
+    ; mov dword [es:bx], strict dword 00002001ah ; 66 26 c7 07 1a 00 02 00
+    mov bx, word [bp-026h]                    ; 8b 5e da
+    mov si, di                                ; 89 fe
+    mov word [es:si+004h], bx                 ; 26 89 5c 04
+    mov bx, si                                ; 89 f3
+    mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
+    mov bx, word [bp-020h]                    ; 8b 5e e0
+    mov word [es:si+008h], bx                 ; 26 89 5c 08
+    mov bx, si                                ; 89 f3
+    mov word [es:bx+00ah], strict word 00000h ; 26 c7 47 0a 00 00
+    mov bx, word [bp-024h]                    ; 8b 5e dc
+    mov word [es:si+00ch], bx                 ; 26 89 5c 0c
+    mov bx, si                                ; 89 f3
+    mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00
+    mov bx, word [bp-022h]                    ; 8b 5e de
+    mov word [es:si+018h], bx                 ; 26 89 5c 18
+    mov bx, si                                ; 89 f3
+    mov word [es:bx+010h], dx                 ; 26 89 57 10
+    mov word [es:bx+012h], cx                 ; 26 89 4f 12
+    mov bx, word [bp-00eh]                    ; 8b 5e f2
+    mov si, strict word 00020h                ; be 20 00
+    call 09d5ah                               ; e8 dd 3c
+    mov bx, di                                ; 89 fb
+    mov word [es:bx+014h], dx                 ; 26 89 57 14
+    mov word [es:bx+016h], cx                 ; 26 89 4f 16
+    cmp word [bp-010h], strict byte 0001eh    ; 83 7e f0 1e
+    jc near 0618ch                            ; 0f 82 fd 00
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov word [es:di], strict word 0001eh      ; 26 c7 05 1e 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov word [es:bx+01ch], ax                 ; 26 89 47 1c
-    mov word [es:bx+01ah], 00312h             ; 26 c7 47 1a 12 03
-    movzx ax, cl                              ; 0f b6 c1
-    mov word [bp-020h], ax                    ; 89 46 e0
+    mov word [es:di+01ch], ax                 ; 26 89 45 1c
+    mov word [es:di+01ah], 00356h             ; 26 c7 45 1a 56 03
+    movzx cx, byte [bp-004h]                  ; 0f b6 4e fc
+    mov ax, cx                                ; 89 c8
     cwd                                       ; 99
     db  02bh, 0c2h
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
-    movzx di, al                              ; 0f b6 f8
-    imul di, di, strict byte 00006h           ; 6b ff 06
-    mov es, [bp-026h]                         ; 8e 46 da
-    add di, si                                ; 01 f7
-    mov ax, word [es:di+001c2h]               ; 26 8b 85 c2 01
-    mov word [bp-01ah], ax                    ; 89 46 e6
-    mov ax, word [es:di+001c4h]               ; 26 8b 85 c4 01
-    mov word [bp-01ch], ax                    ; 89 46 e4
-    mov ch, byte [es:di+001c1h]               ; 26 8a ad c1 01
-    imul di, word [bp-020h], strict byte 00018h ; 6b 7e e0 18
-    add di, si                                ; 01 f7
-    mov ah, byte [es:di+022h]                 ; 26 8a 65 22
-    mov al, byte [es:di+023h]                 ; 26 8a 45 23
+    movzx bx, al                              ; 0f b6 d8
+    imul bx, bx, strict byte 00006h           ; 6b db 06
+    mov es, [bp-006h]                         ; 8e 46 fa
+    add bx, word [bp-008h]                    ; 03 5e f8
+    mov ax, word [es:bx+00206h]               ; 26 8b 87 06 02
+    mov word [bp-01eh], ax                    ; 89 46 e2
+    mov dx, word [es:bx+00208h]               ; 26 8b 97 08 02
+    mov al, byte [es:bx+00205h]               ; 26 8a 87 05 02
+    mov byte [bp-002h], al                    ; 88 46 fe
+    imul bx, cx, strict byte 0001ch           ; 6b d9 1c
+    add bx, word [bp-008h]                    ; 03 5e f8
+    mov ah, byte [es:bx+026h]                 ; 26 8a 67 26
+    mov al, byte [es:bx+027h]                 ; 26 8a 47 27
     test al, al                               ; 84 c0
-    jne short 05d93h                          ; 75 04
-    xor dx, dx                                ; 31 d2
-    jmp short 05d96h                          ; eb 03
-    mov dx, strict word 00008h                ; ba 08 00
-    or dl, 010h                               ; 80 ca 10
-    mov word [bp-008h], dx                    ; 89 56 f8
+    jne short 060e6h                          ; 75 04
+    xor bx, bx                                ; 31 db
+    jmp short 060e9h                          ; eb 03
+    mov bx, strict word 00008h                ; bb 08 00
+    or bl, 010h                               ; 80 cb 10
     cmp ah, 001h                              ; 80 fc 01
     db  00fh, 094h, 0c4h
     ; sete ah                                   ; 0f 94 c4
-    movzx dx, ah                              ; 0f b6 d4
-    or word [bp-008h], dx                     ; 09 56 f8
+    movzx cx, ah                              ; 0f b6 cc
+    or bx, cx                                 ; 09 cb
     cmp AL, strict byte 001h                  ; 3c 01
     db  00fh, 094h, 0c4h
     ; sete ah                                   ; 0f 94 c4
-    movzx dx, ah                              ; 0f b6 d4
-    or word [bp-008h], dx                     ; 09 56 f8
+    movzx cx, ah                              ; 0f b6 cc
+    or bx, cx                                 ; 09 cb
     cmp AL, strict byte 003h                  ; 3c 03
-    jne short 05dbch                          ; 75 05
+    jne short 0610ah                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 05dbeh                          ; eb 02
+    jmp short 0610ch                          ; eb 02
     xor ax, ax                                ; 31 c0
-    or word [bp-008h], ax                     ; 09 46 f8
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov es, [bp-026h]                         ; 8e 46 da
-    mov word [es:si+001f0h], ax               ; 26 89 84 f0 01
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:si+001f2h], ax               ; 26 89 84 f2 01
-    movzx ax, cl                              ; 0f b6 c1
+    or bx, ax                                 ; 09 c3
+    mov ax, word [bp-01eh]                    ; 8b 46 e2
+    les si, [bp-008h]                         ; c4 76 f8
+    mov word [es:si+00234h], ax               ; 26 89 84 34 02
+    mov word [es:si+00236h], dx               ; 26 89 94 36 02
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cwd                                       ; 99
-    mov di, strict word 00002h                ; bf 02 00
-    idiv di                                   ; f7 ff
+    mov cx, strict word 00002h                ; b9 02 00
+    idiv cx                                   ; f7 f9
     or dl, 00eh                               ; 80 ca 0e
-    sal dx, 004h                              ; c1 e2 04
-    mov byte [es:si+001f4h], dl               ; 26 88 94 f4 01
-    mov byte [es:si+001f5h], 0cbh             ; 26 c6 84 f5 01 cb
-    mov byte [es:si+001f6h], ch               ; 26 88 ac 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 ax, word [bp-008h]                    ; 8b 46 f8
-    mov word [es:si+001fah], ax               ; 26 89 84 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 ch, ch                                ; 30 ed
-    mov byte [bp-002h], ch                    ; 88 6e fe
-    jmp short 05e22h                          ; eb 06
-    cmp byte [bp-002h], 00fh                  ; 80 7e fe 0f
-    jnc short 05e37h                          ; 73 15
-    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
-    add dx, 00312h                            ; 81 c2 12 03
+    mov ax, dx                                ; 89 d0
+    sal ax, 004h                              ; c1 e0 04
+    mov byte [es:si+00238h], al               ; 26 88 84 38 02
+    mov byte [es:si+00239h], 0cbh             ; 26 c6 84 39 02 cb
+    mov al, byte [bp-002h]                    ; 8a 46 fe
+    mov byte [es:si+0023ah], al               ; 26 88 84 3a 02
+    mov word [es:si+0023bh], strict word 00001h ; 26 c7 84 3b 02 01 00
+    mov byte [es:si+0023dh], 000h             ; 26 c6 84 3d 02 00
+    mov word [es:si+0023eh], bx               ; 26 89 9c 3e 02
+    mov bx, si                                ; 89 f3
+    mov word [es:bx+00240h], strict word 00000h ; 26 c7 87 40 02 00 00
+    mov byte [es:bx+00242h], 011h             ; 26 c6 87 42 02 11
+    xor bl, bl                                ; 30 db
+    xor bh, bh                                ; 30 ff
+    jmp short 0616fh                          ; eb 05
+    cmp bh, 00fh                              ; 80 ff 0f
+    jnc short 06182h                          ; 73 13
+    movzx dx, bh                              ; 0f b6 d7
+    add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-014h]                    ; 8b 46 ec
-    call 01650h                               ; e8 20 b8
-    add ch, al                                ; 00 c5
-    inc byte [bp-002h]                        ; fe 46 fe
-    jmp short 05e1ch                          ; 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 05ef7h                            ; 0f 82 ae 00
-    movzx ax, cl                              ; 0f b6 c1
+    call 01650h                               ; e8 d4 b4
+    add bl, al                                ; 00 c3
+    db  0feh, 0c7h
+    ; inc bh                                    ; fe c7
+    jmp short 0616ah                          ; eb e8
+    neg bl                                    ; f6 db
+    les si, [bp-008h]                         ; c4 76 f8
+    mov byte [es:si+00243h], bl               ; 26 88 9c 43 02
+    cmp word [bp-010h], strict byte 00042h    ; 83 7e f0 42
+    jc near 06244h                            ; 0f 82 b0 00
+    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -8387,57 +8682,57 @@
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 00006h           ; 6b c0 06
-    mov es, [bp-026h]                         ; 8e 46 da
-    add si, ax                                ; 01 c6
-    mov al, byte [es:si+001c0h]               ; 26 8a 84 c0 01
-    mov dx, word [es:si+001c2h]               ; 26 8b 94 c2 01
-    mov es, [bp-004h]                         ; 8e 46 fc
-    mov word [es:bx], strict word 00042h      ; 26 c7 07 42 00
-    db  066h, 026h, 0c7h, 047h, 01eh, 0ddh, 0beh, 024h, 000h
-    ; mov dword [es:bx+01eh], strict dword 00024beddh ; 66 26 c7 47 1e dd be 24 00
-    mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
+    les bx, [bp-008h]                         ; c4 5e f8
+    add bx, ax                                ; 01 c3
+    mov al, byte [es:bx+00204h]               ; 26 8a 87 04 02
+    mov dx, word [es:bx+00206h]               ; 26 8b 97 06 02
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov word [es:di], strict word 00042h      ; 26 c7 05 42 00
+    db  066h, 026h, 0c7h, 045h, 01eh, 0ddh, 0beh, 024h, 000h
+    ; mov dword [es:di+01eh], strict dword 00024beddh ; 66 26 c7 45 1e dd be 24 00
+    mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00
     test al, al                               ; 84 c0
-    jne short 05e89h                          ; 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
-    mov es, [bp-004h]                         ; 8e 46 fc
-    db  066h, 026h, 0c7h, 047h, 028h, 041h, 054h, 041h, 020h
-    ; mov dword [es:bx+028h], strict dword 020415441h ; 66 26 c7 47 28 41 54 41 20
-    db  066h, 026h, 0c7h, 047h, 02ch, 020h, 020h, 020h, 020h
-    ; mov dword [es:bx+02ch], strict dword 020202020h ; 66 26 c7 47 2c 20 20 20 20
+    jne short 061d5h                          ; 75 09
+    db  066h, 026h, 0c7h, 045h, 024h, 049h, 053h, 041h, 020h
+    ; mov dword [es:di+024h], strict dword 020415349h ; 66 26 c7 45 24 49 53 41 20
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    db  066h, 026h, 0c7h, 045h, 028h, 041h, 054h, 041h, 020h
+    ; mov dword [es:di+028h], strict dword 020415441h ; 66 26 c7 45 28 41 54 41 20
+    db  066h, 026h, 0c7h, 045h, 02ch, 020h, 020h, 020h, 020h
+    ; mov dword [es:di+02ch], strict dword 020202020h ; 66 26 c7 45 2c 20 20 20 20
     test al, al                               ; 84 c0
-    jne short 05eb5h                          ; 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, cl                                ; 88 c8
+    jne short 06201h                          ; 75 13
+    mov word [es:di+030h], dx                 ; 26 89 55 30
+    db  066h, 026h, 0c7h, 045h, 032h, 000h, 000h, 000h, 000h
+    ; mov dword [es:di+032h], strict dword 000000000h ; 66 26 c7 45 32 00 00 00 00
+    mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00
+    mov al, byte [bp-004h]                    ; 8a 46 fc
     and AL, strict byte 001h                  ; 24 01
     xor ah, ah                                ; 30 e4
-    mov es, [bp-004h]                         ; 8e 46 fc
-    mov word [es:bx+038h], ax                 ; 26 89 47 38
-    db  066h, 026h, 0c7h, 047h, 03ah, 000h, 000h, 000h, 000h
-    ; mov dword [es:bx+03ah], strict dword 000000000h ; 66 26 c7 47 3a 00 00 00 00
-    mov word [es:bx+03eh], strict word 00000h ; 26 c7 47 3e 00 00
-    xor cl, cl                                ; 30 c9
-    mov CH, strict byte 01eh                  ; b5 1e
-    jmp short 05edch                          ; eb 05
-    cmp ch, 040h                              ; 80 fd 40
-    jnc short 05eeeh                          ; 73 12
-    movzx dx, ch                              ; 0f b6 d5
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov word [es:di+038h], ax                 ; 26 89 45 38
+    db  066h, 026h, 0c7h, 045h, 03ah, 000h, 000h, 000h, 000h
+    ; mov dword [es:di+03ah], strict dword 000000000h ; 66 26 c7 45 3a 00 00 00 00
+    mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00
+    xor bl, bl                                ; 30 db
+    mov BH, strict byte 01eh                  ; b7 1e
+    jmp short 06229h                          ; eb 05
+    cmp bh, 040h                              ; 80 ff 40
+    jnc short 0623bh                          ; 73 12
+    movzx dx, bh                              ; 0f b6 d7
     add dx, word [bp+00ah]                    ; 03 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01650h                               ; e8 68 b7
-    add cl, al                                ; 00 c1
-    db  0feh, 0c5h
-    ; inc ch                                    ; fe c5
-    jmp short 05ed7h                          ; eb e9
-    neg cl                                    ; f6 d9
-    mov es, [bp-004h]                         ; 8e 46 fc
-    mov byte [es:bx+041h], cl                 ; 26 88 4f 41
+    call 01650h                               ; e8 1b b4
+    add bl, al                                ; 00 c3
+    db  0feh, 0c7h
+    ; inc bh                                    ; fe c7
+    jmp short 06224h                          ; eb e9
+    neg bl                                    ; f6 db
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:di+041h], bl                 ; 26 88 5d 41
     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 0165eh                               ; e8 58 b7
+    call 0165eh                               ; e8 0b b4
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
@@ -8445,12 +8740,12 @@
     retn                                      ; c3
     cmp ax, strict word 00006h                ; 3d 06 00
-    je short 05ef7h                           ; 74 e4
+    je short 06244h                           ; 74 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 05f24h                           ; 72 0c
-    jbe short 05ef7h                          ; 76 dd
+    jc short 06271h                           ; 72 0c
+    jbe short 06244h                          ; 76 dd
     cmp ax, strict word 00003h                ; 3d 03 00
-    jc short 05f24h                           ; 72 05
+    jc short 06271h                           ; 72 05
     cmp ax, strict word 00004h                ; 3d 04 00
-    jbe short 05ef7h                          ; 76 d3
+    jbe short 06244h                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -8462,18 +8757,18 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 1e b7
+    call 0165eh                               ; e8 d1 b3
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 05f0ah                          ; eb c4
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp short 06257h                          ; eb c4
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 e0 b9
+    call 01931h                               ; e8 93 b6
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
-    push 007d5h                               ; 68 d5 07
-    push 007a7h                               ; 68 a7 07
-    jmp near 05bd1h                           ; e9 70 fc
-_int14_function:                             ; 0xf5f61 LB 0x155
+    push 007f5h                               ; 68 f5 07
+    push 007c7h                               ; 68 c7 07
+    jmp near 05f02h                           ; e9 54 fc
+_int14_function:                             ; 0xf62ae LB 0x155
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -8483,5 +8778,5 @@
     add dx, dx                                ; 01 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 fb b6
+    call 0166ch                               ; e8 ae b3
     mov si, ax                                ; 89 c6
     mov bx, ax                                ; 89 c3
@@ -8489,21 +8784,21 @@
     add dx, strict byte 0007ch                ; 83 c2 7c
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 cf b6
+    call 01650h                               ; e8 82 b3
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc near 060ach                           ; 0f 83 21 01
+    jnc near 063f9h                           ; 0f 83 21 01
     test si, si                               ; 85 f6
-    jbe near 060ach                           ; 0f 86 1b 01
+    jbe near 063f9h                           ; 0f 86 1b 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 05fa9h                           ; 72 11
-    jbe short 05ffdh                          ; 76 63
+    jc short 062f6h                           ; 72 11
+    jbe short 0634ah                          ; 76 63
     cmp AL, strict byte 003h                  ; 3c 03
-    je near 06095h                            ; 0f 84 f5 00
+    je near 063e2h                            ; 0f 84 f5 00
     cmp AL, strict byte 002h                  ; 3c 02
-    je near 0604bh                            ; 0f 84 a5 00
-    jmp near 060a6h                           ; e9 fd 00
+    je near 06398h                            ; 0f 84 a5 00
+    jmp near 063f3h                           ; e9 fd 00
     test al, al                               ; 84 c0
-    jne near 060a6h                           ; 0f 85 f7 00
+    jne near 063f3h                           ; 0f 85 f7 00
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
@@ -8537,5 +8832,5 @@
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 06087h                           ; e9 97 00
+    jmp near 063d4h                           ; e9 97 00
     mov AL, strict byte 017h                  ; b0 17
     mov dx, bx                                ; 89 da
@@ -8544,8 +8839,8 @@
     mov AL, strict byte 004h                  ; b0 04
     out DX, AL                                ; ee
-    jmp short 05fd2h                          ; eb d5
+    jmp short 0631fh                          ; eb d5
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 66 b6
+    call 0166ch                               ; e8 19 b3
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
@@ -8555,18 +8850,18 @@
     and ax, strict word 00060h                ; 25 60 00
     cmp ax, strict word 00060h                ; 3d 60 00
-    je short 0602dh                           ; 74 17
+    je short 0637ah                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 0602dh                           ; 74 13
+    je short 0637ah                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 49 b6
+    call 0166ch                               ; e8 fc b2
     cmp ax, si                                ; 39 f0
-    je short 06008h                           ; 74 e1
+    je short 06355h                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 06008h                          ; eb db
+    jmp short 06355h                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 06037h                           ; 74 06
+    je short 06384h                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
@@ -8578,11 +8873,11 @@
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 06087h                          ; 75 43
+    jne short 063d4h                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 06087h                          ; eb 3c
+    jmp short 063d4h                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 18 b6
+    call 0166ch                               ; e8 cb b2
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
@@ -8591,18 +8886,18 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 06077h                          ; 75 17
+    jne short 063c4h                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 06077h                           ; 74 13
+    je short 063c4h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 ff b5
+    call 0166ch                               ; e8 b2 b2
     cmp ax, si                                ; 39 f0
-    je short 06056h                           ; 74 e5
+    je short 063a3h                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 06056h                          ; eb df
+    jmp short 063a3h                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 0608dh                           ; 74 12
+    je short 063dah                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
@@ -8612,10 +8907,10 @@
     mov byte [bp+012h], al                    ; 88 46 12
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 060b0h                          ; eb 23
+    jmp short 063fdh                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 06046h                          ; eb b1
+    jmp short 06393h                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
@@ -8627,7 +8922,7 @@
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 06084h                          ; eb de
+    jmp short 063d1h                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 060b0h                          ; eb 04
+    jmp short 063fdh                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -8635,5 +8930,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf60b6 LB 0x2c
+set_enable_a20_:                             ; 0xf6403 LB 0x2c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -8648,8 +8943,8 @@
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 060cfh                           ; 74 05
+    je short 0641ch                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 060d2h                          ; eb 03
+    jmp short 0641fh                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
@@ -8664,5 +8959,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf60e2 LB 0x8c
+set_e820_range_:                             ; 0xf642f LB 0x8c
     push si                                   ; 56
     push bp                                   ; 55
@@ -8693,8 +8988,8 @@
     retn 0000ah                               ; c2 0a 00
     db  0ech, 0e9h, 0d8h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 087h, 083h, 052h, 04fh, 041h, 024h
-    db  000h, 00dh, 066h, 0adh, 061h, 0c0h, 061h, 055h, 062h, 05bh, 062h, 060h, 062h, 065h, 062h, 007h
-    db  063h, 0a4h, 064h, 0cah, 064h, 04eh, 062h, 04eh, 062h, 097h, 065h, 0bfh, 065h, 0d2h, 065h, 0e1h
-    db  065h, 055h, 062h, 0e8h, 065h
-_int15_function:                             ; 0xf616e LB 0x4cd
+    db  000h, 05ah, 069h, 0fah, 064h, 00dh, 065h, 0a2h, 065h, 0a8h, 065h, 0adh, 065h, 0b2h, 065h, 054h
+    db  066h, 0f1h, 067h, 017h, 068h, 09bh, 065h, 09bh, 065h, 0e4h, 068h, 00ch, 069h, 01fh, 069h, 02eh
+    db  069h, 0a2h, 065h, 035h, 069h
+_int15_function:                             ; 0xf64bb LB 0x4cd
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -8706,13 +9001,13 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe near 0660dh                          ; 0f 87 8b 04
+    jnbe near 0695ah                          ; 0f 87 8b 04
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00012h                ; b9 12 00
-    mov di, 06139h                            ; bf 39 61
+    mov di, 06486h                            ; bf 86 64
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+0614ah]               ; 2e 8b b5 4a 61
+    mov si, word [cs:di+06497h]               ; 2e 8b b5 97 64
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -8727,28 +9022,28 @@
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    jne near 0660dh                           ; 0f 85 54 04
+    jne near 0695ah                           ; 0f 85 54 04
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 065b6h                           ; e9 f6 03
+    jmp near 06903h                           ; e9 f6 03
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 061d5h                           ; 72 0e
-    jbe short 061e9h                          ; 76 20
+    jc short 06522h                           ; 72 0e
+    jbe short 06536h                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 06216h                           ; 74 48
+    je short 06563h                           ; 74 48
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 061f9h                           ; 74 26
-    jmp short 06223h                          ; eb 4e
+    je short 06546h                           ; 74 26
+    jmp short 06570h                          ; eb 4e
     test ax, ax                               ; 85 c0
-    jne short 06223h                          ; 75 4a
+    jne short 06570h                          ; 75 4a
     xor ax, ax                                ; 31 c0
-    call 060b6h                               ; e8 d8 fe
+    call 06403h                               ; e8 d8 fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 0624eh                           ; e9 65 00
+    jmp near 0659bh                           ; e9 65 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 060b6h                               ; e8 c7 fe
+    call 06403h                               ; e8 c7 fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 0624eh                           ; e9 55 00
+    jmp near 0659bh                           ; e9 55 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
@@ -8762,19 +9057,19 @@
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
-    jmp near 0624eh                           ; e9 38 00
+    jmp near 0659bh                           ; e9 38 00
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
     mov word [bp+00ch], ax                    ; 89 46 0c
-    jmp near 0624eh                           ; e9 2b 00
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 0659bh                           ; e9 2b 00
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 03 b7
+    call 01931h                               ; e8 b6 b3
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
-    push 00836h                               ; 68 36 08
+    push 0082eh                               ; 68 2e 08
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 36 b7
+    call 01972h                               ; e8 e9 b3
     add sp, strict byte 00006h                ; 83 c4 06
     or byte [bp+018h], 001h                   ; 80 4e 18 01
@@ -8789,36 +9084,36 @@
     retn                                      ; c3
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 06301h                           ; e9 a6 00
+    jmp near 0664eh                           ; e9 a6 00
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 0624eh                          ; eb ee
+    jmp short 0659bh                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 0624bh                          ; eb e6
+    jmp short 06598h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    je short 062d7h                           ; 74 6c
+    je short 06624h                           ; 74 6c
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 dc b3
+    call 01650h                               ; e8 8f b0
     test AL, strict byte 001h                 ; a8 01
-    jne near 065adh                           ; 0f 85 33 03
+    jne near 068fah                           ; 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 0165eh                               ; e8 d8 b3
+    call 0165eh                               ; e8 8b b0
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 e8 b3
+    call 0167ah                               ; e8 9b b0
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 dc b3
+    call 0167ah                               ; e8 8f b0
     mov bx, word [bp+00eh]                    ; 8b 5e 0e
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 d0 b3
+    call 0167ah                               ; e8 83 b0
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, 0009eh                            ; ba 9e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 c4 b3
+    call 0167ah                               ; e8 77 b0
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
@@ -8829,21 +9124,21 @@
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 e3 b3
+    call 016ach                               ; e8 96 b0
     or AL, strict byte 040h                   ; 0c 40
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 f5 b3
-    jmp near 0624eh                           ; e9 77 ff
+    call 016c9h                               ; e8 a8 b0
+    jmp near 0659bh                           ; e9 77 ff
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 062f5h                          ; 75 19
+    jne short 06642h                          ; 75 19
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 77 b3
+    call 0165eh                               ; e8 2a b0
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 bb b3
+    call 016ach                               ; e8 6e b0
     and AL, strict byte 0bfh                  ; 24 bf
-    jmp short 062cbh                          ; eb d6
+    jmp short 06618h                          ; eb d6
     mov word [bp+018h], bx                    ; 89 5e 18
     mov ax, dx                                ; 89 d0
@@ -8853,8 +9148,8 @@
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 0624eh                           ; e9 47 ff
+    jmp near 0659bh                           ; e9 47 ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 060b6h                               ; e8 a8 fd
+    call 06403h                               ; e8 a8 fd
     mov di, ax                                ; 89 c7
     mov ax, word [bp+014h]                    ; 8b 46 14
@@ -8866,5 +9161,5 @@
     mov byte [bp-006h], dl                    ; 88 56 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 0632dh                          ; 73 05
+    jnc short 0667ah                          ; 73 05
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
@@ -8874,50 +9169,50 @@
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0002fh                ; bb 2f 00
-    call 0167ah                               ; e8 3e b3
+    call 0167ah                               ; e8 f1 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, cx                                ; 89 cb
-    call 0167ah                               ; e8 30 b3
+    call 0167ah                               ; e8 e3 af
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 0165eh                               ; e8 04 b3
+    call 0165eh                               ; e8 b7 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0000dh                ; 83 c2 0d
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, 00093h                            ; bb 93 00
-    call 0165eh                               ; e8 f5 b2
+    call 0165eh                               ; e8 a8 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 03 b3
+    call 0167ah                               ; e8 b6 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00020h                ; 83 c2 20
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0167ah                               ; e8 f4 b2
+    call 0167ah                               ; e8 a7 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00022h                ; 83 c2 22
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 e6 b2
+    call 0167ah                               ; e8 99 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00024h                ; 83 c2 24
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 0165eh                               ; e8 bb b2
+    call 0165eh                               ; e8 6e af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00025h                ; 83 c2 25
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, 0009bh                            ; bb 9b 00
-    call 0165eh                               ; e8 ac b2
+    call 0165eh                               ; e8 5f af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00026h                ; 83 c2 26
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 ba b2
+    call 0167ah                               ; e8 6d af
     mov ax, ss                                ; 8c d0
     mov cx, ax                                ; 89 c1
@@ -8929,25 +9224,25 @@
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0167ah                               ; e8 9e b2
+    call 0167ah                               ; e8 51 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0002ah                ; 83 c2 2a
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, cx                                ; 89 cb
-    call 0167ah                               ; e8 90 b2
+    call 0167ah                               ; e8 43 af
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0002ch                ; 83 c2 2c
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 0165eh                               ; e8 64 b2
+    call 0165eh                               ; e8 17 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0002dh                ; 83 c2 2d
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, 00093h                            ; bb 93 00
-    call 0165eh                               ; e8 55 b2
+    call 0165eh                               ; e8 08 af
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0002eh                ; 83 c2 2e
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 63 b2
+    call 0167ah                               ; e8 16 af
     mov si, word [bp+006h]                    ; 8b 76 06
     mov es, [bp+014h]                         ; 8e 46 14
@@ -8960,5 +9255,5 @@
     mov word [00467h], sp                     ; 89 26 67 04
     mov [00469h], ss                          ; 8c 16 69 04
-    call 06433h                               ; e8 00 00
+    call 06780h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 0001bh                ; 83 c7 1b
@@ -8983,5 +9278,5 @@
     cld                                       ; fc
     rep movsw                                 ; f3 a5
-    call 06467h                               ; e8 00 00
+    call 067b4h                               ; e8 00 00
     pop ax                                    ; 58
     push 0f000h                               ; 68 00 f0
@@ -9004,51 +9299,51 @@
     pop DS                                    ; 1f
     mov ax, di                                ; 89 f8
-    call 060b6h                               ; e8 1e fc
+    call 06403h                               ; e8 1e fc
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
-    jmp near 0624eh                           ; e9 aa fd
+    jmp near 0659bh                           ; e9 aa fd
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 02 b2
+    call 016ach                               ; e8 b5 ae
     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 016ach                               ; e8 f5 b1
+    call 016ach                               ; e8 a8 ae
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
     cmp dx, strict byte 0ffc0h                ; 83 fa c0
-    jbe short 0649dh                          ; 76 da
+    jbe short 067eah                          ; 76 da
     mov word [bp+012h], strict word 0ffc0h    ; c7 46 12 c0 ff
-    jmp short 0649dh                          ; eb d3
+    jmp short 067eah                          ; eb d3
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 060b6h                               ; e8 e5 fb
+    call 06403h                               ; e8 e5 fb
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00038h                ; 83 c2 38
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0167ah                               ; e8 9a b1
+    call 0167ah                               ; e8 4d ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ah                ; 83 c2 3a
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 8c b1
+    call 0167ah                               ; e8 3f ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ch                ; 83 c2 3c
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 0165eh                               ; e8 61 b1
+    call 0165eh                               ; e8 14 ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003dh                ; 83 c2 3d
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, 0009bh                            ; bb 9b 00
-    call 0165eh                               ; e8 52 b1
+    call 0165eh                               ; e8 05 ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003eh                ; 83 c2 3e
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 60 b1
+    call 0167ah                               ; e8 13 ae
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
@@ -9080,5 +9375,5 @@
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 0655bh                               ; e8 00 00
+    call 068a8h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
@@ -9108,12 +9403,12 @@
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 0624eh                           ; e9 b7 fc
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 0659bh                           ; e9 b7 fc
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 8f b3
-    push 00876h                               ; 68 76 08
+    call 01931h                               ; e8 42 b0
+    push 0086eh                               ; 68 6e 08
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 c8 b3
+    call 01972h                               ; e8 7b b0
     add sp, strict byte 00004h                ; 83 c4 04
     or byte [bp+018h], 001h                   ; 80 4e 18 01
@@ -9122,50 +9417,48 @@
     or ah, 086h                               ; 80 cc 86
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 0624eh                           ; e9 8f fc
+    jmp near 0659bh                           ; e9 8f fc
     mov word [bp+018h], cx                    ; 89 4e 18
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+00ch], 0e6f5h                ; c7 46 0c f5 e6
     mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
-    jmp near 0624eh                           ; e9 7c fc
+    jmp near 0659bh                           ; e9 7c fc
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 91 b0
+    call 0166ch                               ; e8 44 ad
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 0649dh                           ; e9 bc fe
-    push 008a5h                               ; 68 a5 08
+    jmp near 067eah                           ; e9 bc fe
+    push 0089dh                               ; 68 9d 08
     push strict byte 00008h                   ; 6a 08
-    jmp short 065a7h                          ; eb bf
+    jmp short 068f4h                          ; eb bf
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 0660dh                          ; 75 1f
+    jne short 0695ah                          ; 75 1f
     mov word [bp+012h], ax                    ; 89 46 12
     mov ax, word [bp+00ch]                    ; 8b 46 0c
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06606h                           ; 72 0b
+    jc short 06953h                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 06606h                         ; 77 06
+    jnbe short 06953h                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 0624eh                           ; e9 48 fc
+    jmp near 0659bh                           ; e9 48 fc
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 0624eh                           ; e9 41 fc
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 0659bh                           ; e9 41 fc
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 19 b3
+    call 01931h                               ; e8 cc af
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
-    push 008bch                               ; 68 bc 08
+    push 008b4h                               ; 68 b4 08
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 4c b3
+    call 01972h                               ; e8 ff af
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp short 065adh                          ; eb 82
-    in AL, strict byte 067h                   ; e4 67
-    push ES                                   ; 06
-    push 06829h                               ; 68 29 68
-    dec bx                                    ; 4b
-    push 0686bh                               ; 68 6b 68
-    mov [bx+si-035h], gs                      ; 8c 68 cb
-    push 068f7h                               ; 68 f7 68
-_int15_function32:                           ; 0xf663b LB 0x37e
+    jmp short 068fah                          ; eb 82
+    xor word [bp+di+053h], bp                 ; 31 6b 53
+    imul si, word [bp+06bh], strict byte 0ff98h ; 6b 76 6b 98
+    imul di, word [bx+si-02695h], strict byte 0006bh ; 6b b8 6b d9 6b
+    sbb byte [si+044h], ch                    ; 18 6c 44
+    insb                                      ; 6c
+_int15_function32:                           ; 0xf6988 LB 0x37e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9179,9 +9472,9 @@
     xor ah, ah                                ; 30 e4
     cmp dx, 000e8h                            ; 81 fa e8 00
-    je near 06708h                            ; 0f 84 ad 00
+    je near 06a55h                            ; 0f 84 ad 00
     cmp dx, 000d0h                            ; 81 fa d0 00
-    je short 066a3h                           ; 74 42
+    je short 069f0h                           ; 74 42
     cmp dx, 00086h                            ; 81 fa 86 00
-    jne near 06989h                           ; 0f 85 20 03
+    jne near 06cd6h                           ; 0f 85 20 03
     sti                                       ; fb
     mov ax, word [bp+01ch]                    ; 8b 46 1c
@@ -9202,31 +9495,31 @@
     db  066h, 00bh, 0c9h
     ; or ecx, ecx                               ; 66 0b c9
-    je near 066a0h                            ; 0f 84 0e 00
+    je near 069edh                            ; 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 06692h                           ; 74 f8
+    je short 069dfh                           ; 74 f8
     db  08ah, 0e0h
     ; mov ah, al                                ; 8a e0
     dec ecx                                   ; 66 49
-    jne short 06692h                          ; 75 f2
-    jmp near 069b3h                           ; e9 10 03
+    jne short 069dfh                          ; 75 f2
+    jmp near 06d00h                           ; e9 10 03
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jne near 06989h                           ; 0f 85 df 02
+    jne near 06cd6h                           ; 0f 85 df 02
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne near 06989h                           ; 0f 85 d6 02
+    jne near 06cd6h                           ; 0f 85 d6 02
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne near 06989h                           ; 0f 85 cd 02
+    jne near 06cd6h                           ; 0f 85 cd 02
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne near 06989h                           ; 0f 85 c4 02
+    jne near 06cd6h                           ; 0f 85 c4 02
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne near 06989h                           ; 0f 85 bb 02
+    jne near 06cd6h                           ; 0f 85 bb 02
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne near 06989h                           ; 0f 85 b1 02
+    jne near 06cd6h                           ; 0f 85 b1 02
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    jne near 06989h                           ; 0f 85 a7 02
+    jne near 06cd6h                           ; 0f 85 a7 02
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, word [bp+014h]                    ; 8b 46 14
@@ -9239,16 +9532,16 @@
     mov word [bp+006h], ax                    ; 89 46 06
     mov dword [bp+020h], strict dword 049413332h ; 66 c7 46 20 32 33 41 49
-    jmp near 069b3h                           ; e9 ab 02
+    jmp near 06d00h                           ; e9 ab 02
     cmp ax, strict word 00020h                ; 3d 20 00
-    je short 06717h                           ; 74 0a
+    je short 06a64h                           ; 74 0a
     cmp ax, strict word 00001h                ; 3d 01 00
-    je near 0693eh                            ; 0f 84 2a 02
-    jmp near 06989h                           ; e9 72 02
+    je near 06c8bh                            ; 0f 84 2a 02
+    jmp near 06cd6h                           ; e9 72 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne near 06989h                           ; 0f 85 69 02
+    jne near 06cd6h                           ; 0f 85 69 02
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne near 06989h                           ; 0f 85 60 02
+    jne near 06cd6h                           ; 0f 85 60 02
     mov ax, strict word 00035h                ; b8 35 00
-    call 016ach                               ; e8 7d af
+    call 016ach                               ; e8 30 ac
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
@@ -9256,7 +9549,7 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06737h                               ; e2 fa
+    loop 06a84h                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 016ach                               ; e8 69 af
+    call 016ach                               ; e8 1c ac
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
@@ -9266,10 +9559,10 @@
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 0675dh                           ; 72 06
-    jne short 0678ah                          ; 75 31
+    jc short 06aaah                           ; 72 06
+    jne short 06ad7h                          ; 75 31
     test bx, bx                               ; 85 db
-    jnbe short 0678ah                         ; 77 2d
+    jnbe short 06ad7h                         ; 77 2d
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 49 af
+    call 016ach                               ; e8 fc ab
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
@@ -9277,7 +9570,7 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 0676bh                               ; e2 fa
+    loop 06ab8h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 016ach                               ; e8 35 af
+    call 016ach                               ; e8 e8 ab
     xor ah, ah                                ; 30 e4
     or bx, ax                                 ; 09 c3
@@ -9285,9 +9578,9 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 0677eh                               ; e2 fa
+    loop 06acbh                               ; 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 016ach                               ; e8 1c af
+    call 016ach                               ; e8 cf ab
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
@@ -9297,7 +9590,7 @@
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 0679dh                               ; e2 f8
+    loop 06aeah                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 016ach                               ; e8 01 af
+    call 016ach                               ; e8 b4 ab
     xor ah, ah                                ; 30 e4
     or word [bp-00ah], ax                     ; 09 46 f6
@@ -9306,10 +9599,10 @@
     mov word [bp-00ah], strict word 00000h    ; c7 46 f6 00 00
     mov ax, strict word 00063h                ; b8 63 00
-    call 016ach                               ; e8 eb ae
+    call 016ach                               ; e8 9e ab
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-006h], al                    ; 88 46 fa
     mov ax, word [bp+014h]                    ; 8b 46 14
     cmp ax, strict word 00007h                ; 3d 07 00
-    jnbe near 06989h                          ; 0f 87 b8 01
+    jnbe near 06cd6h                          ; 0f 87 b8 01
     mov si, ax                                ; 89 c6
     add si, ax                                ; 01 c6
@@ -9318,5 +9611,5 @@
     mov ax, dx                                ; 89 d0
     adc ax, strict word 0ffffh                ; 15 ff ff
-    jmp word [cs:si+0662bh]                   ; 2e ff a4 2b 66
+    jmp word [cs:si+06978h]                   ; 2e ff a4 78 69
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
@@ -9327,7 +9620,7 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 060e2h                               ; e8 e7 f8
+    call 0642fh                               ; e8 e7 f8
     mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00
-    jmp near 06928h                           ; e9 22 01
+    jmp near 06c75h                           ; e9 22 01
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9338,7 +9631,7 @@
     mov bx, 0fc00h                            ; bb 00 fc
     mov cx, strict word 00009h                ; b9 09 00
-    call 060e2h                               ; e8 c4 f8
+    call 0642fh                               ; e8 c4 f8
     mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00
-    jmp near 06928h                           ; e9 ff 00
+    jmp near 06c75h                           ; e9 ff 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9349,7 +9642,7 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 060e2h                               ; e8 a2 f8
+    call 0642fh                               ; e8 a2 f8
     mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00
-    jmp near 06928h                           ; e9 dd 00
+    jmp near 06c75h                           ; e9 dd 00
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
@@ -9360,7 +9653,7 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 060e2h                               ; e8 82 f8
+    call 0642fh                               ; e8 82 f8
     mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00
-    jmp near 06928h                           ; e9 bd 00
+    jmp near 06c75h                           ; e9 bd 00
     push strict byte 00003h                   ; 6a 03
     push dword 000000000h                     ; 66 6a 00
@@ -9372,7 +9665,7 @@
     mov cx, ax                                ; 89 c1
     mov ax, si                                ; 89 f0
-    call 060e2h                               ; e8 61 f8
+    call 0642fh                               ; e8 61 f8
     mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00
-    jmp near 06928h                           ; e9 9c 00
+    jmp near 06c75h                           ; e9 9c 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9382,17 +9675,17 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 060e2h                               ; e8 40 f8
+    call 0642fh                               ; e8 40 f8
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 068afh                          ; 75 07
+    jne short 06bfch                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 068c3h                           ; 74 14
+    je short 06c10h                           ; 74 14
     mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00
-    jmp short 06928h                          ; eb 6f
+    jmp short 06c75h                          ; eb 6f
     mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00
-    jmp short 06928h                          ; eb 65
+    jmp short 06c75h                          ; eb 65
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06928h                          ; eb 5d
+    jmp short 06c75h                          ; eb 5d
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9402,18 +9695,18 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 060e2h                               ; e8 02 f8
+    call 0642fh                               ; e8 02 f8
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 068edh                          ; 75 07
+    jne short 06c3ah                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 068efh                           ; 74 02
-    jmp short 068afh                          ; eb c0
+    je short 06c3ch                           ; 74 02
+    jmp short 06bfch                          ; eb c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06928h                          ; eb 31
+    jmp short 06c75h                          ; eb 31
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06903h                          ; 75 06
+    jne short 06c50h                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 06928h                           ; 74 25
+    je short 06c75h                           ; 74 25
     push strict byte 00001h                   ; 6a 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
@@ -9428,5 +9721,5 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 060e2h                               ; e8 c2 f7
+    call 0642fh                               ; e8 c2 f7
     xor ax, ax                                ; 31 c0
     mov word [bp+014h], ax                    ; 89 46 14
@@ -9435,24 +9728,24 @@
     mov dword [bp+01ch], strict dword 000000014h ; 66 c7 46 1c 14 00 00 00
     and byte [bp+028h], 0feh                  ; 80 66 28 fe
-    jmp short 069b3h                          ; eb 75
+    jmp short 06d00h                          ; eb 75
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 65 ad
+    call 016ach                               ; e8 18 aa
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 016ach                               ; e8 59 ad
+    call 016ach                               ; e8 0c aa
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+01ch], dx                    ; 89 56 1c
     cmp dx, 03c00h                            ; 81 fa 00 3c
-    jbe short 06965h                          ; 76 05
+    jbe short 06cb2h                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 016ach                               ; e8 41 ad
+    call 016ach                               ; e8 f4 a9
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00034h                ; b8 34 00
-    call 016ach                               ; e8 35 ad
+    call 016ach                               ; e8 e8 a9
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
@@ -9461,14 +9754,14 @@
     mov word [bp+020h], ax                    ; 89 46 20
     mov word [bp+014h], dx                    ; 89 56 14
-    jmp short 069b3h                          ; eb 2a
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp short 06d00h                          ; eb 2a
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 9d af
+    call 01931h                               ; e8 50 ac
     push word [bp+014h]                       ; ff 76 14
     push word [bp+020h]                       ; ff 76 20
-    push 008bch                               ; 68 bc 08
+    push 008b4h                               ; 68 b4 08
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 d0 af
+    call 01972h                               ; e8 83 ac
     add sp, strict byte 00008h                ; 83 c4 08
     or byte [bp+028h], 001h                   ; 80 4e 28 01
@@ -9481,5 +9774,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_inv_op_handler:                             ; 0xf69b9 LB 0x195
+_inv_op_handler:                             ; 0xf6d06 LB 0x195
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9490,9 +9783,9 @@
     les bx, [bp+018h]                         ; c4 5e 18
     cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
-    jne short 069cfh                          ; 75 06
+    jne short 06d1ch                          ; 75 06
     inc word [bp+018h]                        ; ff 46 18
-    jmp near 06b47h                           ; e9 78 01
+    jmp near 06e94h                           ; e9 78 01
     cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
-    jne near 06b43h                           ; 0f 85 6b 01
+    jne near 06e90h                           ; 0f 85 6b 01
     mov si, 00800h                            ; be 00 08
     xor ax, ax                                ; 31 c0
@@ -9522,9 +9815,9 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06a28h                               ; e2 fa
+    loop 06d75h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06a36h                          ; 75 04
+    jne short 06d83h                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06a3bh                           ; 74 05
+    je short 06d88h                           ; 74 05
     mov word [bp-008h], strict word 00001h    ; c7 46 f8 01 00
     mov es, [bp-006h]                         ; 8e 46 fa
@@ -9536,9 +9829,9 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06a50h                               ; e2 fa
+    loop 06d9dh                               ; e2 fa
     cmp di, dx                                ; 39 d7
-    jne short 06a5eh                          ; 75 04
+    jne short 06dabh                          ; 75 04
     cmp bx, ax                                ; 39 c3
-    je short 06a62h                           ; 74 04
+    je short 06dafh                           ; 74 04
     or byte [bp-008h], 002h                   ; 80 4e f8 02
     push strict byte 00000h                   ; 6a 00
@@ -9590,8 +9883,8 @@
     mov ax, strict word 00008h                ; b8 08 00
     test cx, strict word 00001h               ; f7 c1 01 00
-    je near 06b00h                            ; 0f 84 02 00
+    je near 06e4dh                            ; 0f 84 02 00
     mov es, ax                                ; 8e c0
     test cx, strict word 00002h               ; f7 c1 02 00
-    je near 06b28h                            ; 0f 84 20 00
+    je near 06e75h                            ; 0f 84 20 00
     mov bx, word [word ss:00000h]             ; 36 8b 1e 00 00
     mov word [word ss:00008h], bx             ; 36 89 1e 08 00
@@ -9610,8 +9903,8 @@
     mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
     iret                                      ; cf
-    jmp short 06b47h                          ; eb 04
+    jmp short 06e94h                          ; eb 04
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 06b44h                          ; eb fd
+    jmp short 06e91h                          ; eb fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -9619,5 +9912,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf6b4e LB 0x28
+init_rtc_:                                   ; 0xf6e9b LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9625,17 +9918,17 @@
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016c9h                               ; e8 6e ab
+    call 016c9h                               ; e8 21 a8
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 65 ab
+    call 016c9h                               ; e8 18 a8
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016ach                               ; e8 42 ab
+    call 016ach                               ; e8 f5 a7
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 016ach                               ; e8 3c ab
+    call 016ach                               ; e8 ef a7
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf6b76 LB 0x21
+rtc_updating_:                               ; 0xf6ec3 LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9643,11 +9936,11 @@
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 06b8eh                           ; 74 0e
+    je short 06edbh                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016ach                               ; e8 26 ab
+    call 016ach                               ; e8 d9 a7
     test AL, strict byte 080h                 ; a8 80
-    jne short 06b7dh                          ; 75 f3
+    jne short 06ecah                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 06b91h                          ; eb 03
+    jmp short 06edeh                          ; eb 03
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -9655,5 +9948,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int70_function:                             ; 0xf6b97 LB 0xbe
+_int70_function:                             ; 0xf6ee4 LB 0xbe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9661,57 +9954,57 @@
     push ax                                   ; 50
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 0a ab
+    call 016ach                               ; e8 bd a7
     mov dl, al                                ; 88 c2
     mov byte [bp-004h], al                    ; 88 46 fc
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016ach                               ; e8 ff aa
+    call 016ach                               ; e8 b2 a7
     mov dh, al                                ; 88 c6
     test dl, 060h                             ; f6 c2 60
-    je near 06c3ch                            ; 0f 84 86 00
+    je near 06f89h                            ; 0f 84 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 06bbeh                           ; 74 04
+    je short 06f0bh                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dh, 040h                             ; f6 c6 40
-    je near 06c3ch                            ; 0f 84 77 00
+    je near 06f89h                            ; 0f 84 77 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 82 aa
+    call 01650h                               ; e8 35 a7
     test al, al                               ; 84 c0
-    je short 06c3ch                           ; 74 6a
+    je short 06f89h                           ; 74 6a
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01688h                               ; e8 ad aa
+    call 01688h                               ; e8 60 a7
     test dx, dx                               ; 85 d2
-    jne short 06c28h                          ; 75 49
+    jne short 06f75h                          ; 75 49
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 06c28h                          ; 73 44
+    jnc short 06f75h                          ; 73 44
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 7f aa
+    call 0166ch                               ; e8 32 a7
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 74 aa
+    call 0166ch                               ; e8 27 a7
     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 0165eh                               ; e8 59 aa
+    call 0165eh                               ; e8 0c a7
     mov al, byte [bp-004h]                    ; 8a 46 fc
     and AL, strict byte 037h                  ; 24 37
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 b6 aa
+    call 016c9h                               ; e8 69 a7
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01650h                               ; e8 36 aa
+    call 01650h                               ; e8 e9 a6
     or AL, strict byte 080h                   ; 0c 80
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 38 aa
-    jmp short 06c3ch                          ; eb 14
+    call 0165eh                               ; e8 eb a6
+    jmp short 06f89h                          ; eb 14
     mov bx, ax                                ; 89 c3
     add bx, 0fc2fh                            ; 81 c3 2f fc
@@ -9720,22 +10013,20 @@
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0169ah                               ; e8 5e aa
-    call 0e030h                               ; e8 f1 73
+    call 0169ah                               ; e8 11 a7
+    call 0e030h                               ; e8 a4 70
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    insb                                      ; 6c
-    insb                                      ; 6c
-    xchg bp, ax                               ; 95
-    insb                                      ; 6c
-    mov dx, 0ec6ch                            ; ba 6c ec
-    insb                                      ; 6c
-    cmp bp, word [di+073h]                    ; 3b 6d 73
-    insw                                      ; 6d
-    mov DH, strict byte 06dh                  ; b6 6d
-    db  00dh
-    outsb                                     ; 6e
-_int1a_function:                             ; 0xf6c55 LB 0x1c8
+    mov cx, 0e26fh                            ; b9 6f e2
+    outsw                                     ; 6f
+    pop ES                                    ; 07
+    jo short 06fd2h                           ; 70 39
+    jo short 06f23h                           ; 70 88
+    jo short 06f5dh                           ; 70 c0
+    jo short 06fa2h                           ; 70 03
+    jno short 06ffbh                          ; 71 5a
+    db  071h
+_int1a_function:                             ; 0xf6fa2 LB 0x1c8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9743,8 +10034,8 @@
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 06c91h                          ; 0f 87 2f 00
+    jnbe near 06fdeh                          ; 0f 87 2f 00
     movzx bx, al                              ; 0f b6 d8
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+06c45h]                   ; 2e ff a7 45 6c
+    jmp word [cs:bx+06f92h]                   ; 2e ff a7 92 6f
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
@@ -9777,39 +10068,39 @@
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 06c91h                          ; eb d7
-    call 06b76h                               ; e8 b9 fe
+    jmp short 06fdeh                          ; eb d7
+    call 06ec3h                               ; e8 b9 fe
     test ax, ax                               ; 85 c0
-    je short 06cc3h                           ; 74 02
-    jmp short 06c91h                          ; eb ce
+    je short 07010h                           ; 74 02
+    jmp short 06fdeh                          ; eb ce
     xor ax, ax                                ; 31 c0
-    call 016ach                               ; e8 e4 a9
+    call 016ach                               ; e8 97 a6
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 016ach                               ; e8 db a9
+    call 016ach                               ; e8 8e a6
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 016ach                               ; e8 d2 a9
+    call 016ach                               ; e8 85 a6
     mov bl, al                                ; 88 c3
     mov byte [bp+011h], al                    ; 88 46 11
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 c7 a9
+    call 016ach                               ; e8 7a a6
     and AL, strict byte 001h                  ; 24 01
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp short 06d31h                          ; eb 45
-    call 06b76h                               ; e8 87 fe
+    jmp short 0707eh                          ; eb 45
+    call 06ec3h                               ; e8 87 fe
     test ax, ax                               ; 85 c0
-    je short 06cf6h                           ; 74 03
-    call 06b4eh                               ; e8 58 fe
+    je short 07043h                           ; 74 03
+    call 06e9bh                               ; e8 58 fe
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     xor ax, ax                                ; 31 c0
-    call 016c9h                               ; e8 ca a9
+    call 016c9h                               ; e8 7d a6
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00002h                ; b8 02 00
-    call 016c9h                               ; e8 c0 a9
+    call 016c9h                               ; e8 73 a6
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00004h                ; b8 04 00
-    call 016c9h                               ; e8 b6 a9
+    call 016c9h                               ; e8 69 a6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 93 a9
+    call 016ach                               ; e8 46 a6
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
@@ -9820,69 +10111,69 @@
     movzx dx, bl                              ; 0f b6 d3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 98 a9
+    call 016c9h                               ; e8 4b a6
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp near 06c91h                           ; e9 56 ff
+    jmp near 06fdeh                           ; e9 56 ff
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 06b76h                               ; e8 34 fe
+    call 06ec3h                               ; e8 34 fe
     test ax, ax                               ; 85 c0
-    je short 06d49h                           ; 74 03
-    jmp near 06c91h                           ; e9 48 ff
+    je short 07096h                           ; 74 03
+    jmp near 06fdeh                           ; e9 48 ff
     mov ax, strict word 00009h                ; b8 09 00
-    call 016ach                               ; e8 5d a9
+    call 016ach                               ; e8 10 a6
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 016ach                               ; e8 54 a9
+    call 016ach                               ; e8 07 a6
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 016ach                               ; e8 4b a9
+    call 016ach                               ; e8 fe a5
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 016ach                               ; e8 42 a9
+    call 016ach                               ; e8 f5 a5
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 06c91h                           ; e9 1e ff
-    call 06b76h                               ; e8 00 fe
+    jmp near 06fdeh                           ; e9 1e ff
+    call 06ec3h                               ; e8 00 fe
     test ax, ax                               ; 85 c0
-    je short 06d80h                           ; 74 06
-    call 06b4eh                               ; e8 d1 fd
-    jmp near 06c91h                           ; e9 11 ff
+    je short 070cdh                           ; 74 06
+    call 06e9bh                               ; e8 d1 fd
+    jmp near 06fdeh                           ; e9 11 ff
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00009h                ; b8 09 00
-    call 016c9h                               ; e8 3f a9
+    call 016c9h                               ; e8 f2 a5
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00008h                ; b8 08 00
-    call 016c9h                               ; e8 35 a9
+    call 016c9h                               ; e8 e8 a5
     movzx dx, byte [bp+00eh]                  ; 0f b6 56 0e
     mov ax, strict word 00007h                ; b8 07 00
-    call 016c9h                               ; e8 2b a9
+    call 016c9h                               ; e8 de a5
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00032h                ; b8 32 00
-    call 016c9h                               ; e8 21 a9
+    call 016c9h                               ; e8 d4 a5
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 fe a8
+    call 016ach                               ; e8 b1 a5
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 06d28h                           ; e9 72 ff
+    jmp near 07075h                           ; e9 72 ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 f0 a8
+    call 016ach                               ; e8 a3 a5
     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 06dcah                           ; 74 03
-    jmp near 06c91h                           ; e9 c7 fe
-    call 06b76h                               ; e8 a9 fd
+    je short 07117h                           ; 74 03
+    jmp near 06fdeh                           ; e9 c7 fe
+    call 06ec3h                               ; e8 a9 fd
     test ax, ax                               ; 85 c0
-    je short 06dd4h                           ; 74 03
-    call 06b4eh                               ; e8 7a fd
+    je short 07121h                           ; 74 03
+    call 06e9bh                               ; e8 7a fd
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00001h                ; b8 01 00
-    call 016c9h                               ; e8 eb a8
+    call 016c9h                               ; e8 9e a5
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00003h                ; b8 03 00
-    call 016c9h                               ; e8 e1 a8
+    call 016c9h                               ; e8 94 a5
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00005h                ; b8 05 00
-    call 016c9h                               ; e8 d7 a8
+    call 016c9h                               ; e8 8a a5
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9896,13 +10187,13 @@
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 bf a8
-    jmp near 06c91h                           ; e9 84 fe
+    call 016c9h                               ; e8 72 a5
+    jmp near 06fdeh                           ; e9 84 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 99 a8
+    call 016ach                               ; e8 4c a5
     mov bl, al                                ; 88 c3
     and AL, strict byte 057h                  ; 24 57
     movzx dx, al                              ; 0f b6 d0
-    jmp near 06d2bh                           ; e9 0e ff
-send_to_mouse_ctrl_:                         ; 0xf6e1d LB 0x34
+    jmp near 07078h                           ; e9 0e ff
+send_to_mouse_ctrl_:                         ; 0xf716a LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9915,9 +10206,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 06e3ch                           ; 74 0e
-    push 008f6h                               ; 68 f6 08
-    push 0116ah                               ; 68 6a 11
+    je short 07189h                           ; 74 0e
+    push 008eeh                               ; 68 ee 08
+    push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 39 ab
+    call 01972h                               ; e8 ec a7
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
@@ -9933,5 +10224,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf6e51 LB 0x3b
+get_mouse_data_:                             ; 0xf719e LB 0x3b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9947,13 +10238,13 @@
     and ax, strict word 00021h                ; 25 21 00
     cmp ax, strict word 00021h                ; 3d 21 00
-    je short 06e72h                           ; 74 07
+    je short 071bfh                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 06e72h                           ; 74 03
+    je short 071bfh                           ; 74 03
     dec cx                                    ; 49
-    jmp short 06e5dh                          ; eb eb
+    jmp short 071aah                          ; eb eb
     test cx, cx                               ; 85 c9
-    jne short 06e7ah                          ; 75 04
+    jne short 071c7h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 06e85h                          ; eb 0b
+    jmp short 071d2h                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -9967,5 +10258,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf6e8c LB 0x32
+set_kbd_command_byte_:                       ; 0xf71d9 LB 0x32
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9978,9 +10269,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 06eabh                           ; 74 0e
-    push 00900h                               ; 68 00 09
-    push 0116ah                               ; 68 6a 11
+    je short 071f8h                           ; 74 0e
+    push 008f8h                               ; 68 f8 08
+    push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 ca aa
+    call 01972h                               ; e8 7d a7
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
@@ -9995,5 +10286,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf6ebe LB 0xca
+_int74_function:                             ; 0xf720b LB 0xca
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10001,5 +10292,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 9f a7
+    call 0166ch                               ; e8 52 a4
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
@@ -10010,5 +10301,5 @@
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne near 06f74h                           ; 0f 85 92 00
+    jne near 072c1h                           ; 0f 85 92 00
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -10018,12 +10309,12 @@
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 5e a7
+    call 01650h                               ; e8 11 a4
     mov byte [bp-006h], al                    ; 88 46 fa
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 53 a7
+    call 01650h                               ; e8 06 a4
     mov byte [bp-008h], al                    ; 88 46 f8
     test AL, strict byte 080h                 ; a8 80
-    je short 06f74h                           ; 74 70
+    je short 072c1h                           ; 74 70
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 007h                  ; 24 07
@@ -10036,21 +10327,21 @@
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 3d a7
+    call 0165eh                               ; e8 f0 a3
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp al, byte [bp-002h]                    ; 3a 46 fe
-    jc short 06f65h                           ; 72 3c
+    jc short 072b2h                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 1f a7
+    call 01650h                               ; e8 d2 a3
     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 01650h                               ; e8 12 a7
+    call 01650h                               ; e8 c5 a3
     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 01650h                               ; e8 05 a7
+    call 01650h                               ; e8 b8 a3
     xor ah, ah                                ; 30 e4
     mov word [bp+008h], ax                    ; 89 46 08
@@ -10059,26 +10350,24 @@
     mov byte [bp-006h], ah                    ; 88 66 fa
     test byte [bp-008h], 080h                 ; f6 46 f8 80
-    je short 06f68h                           ; 74 0a
+    je short 072b5h                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 06f68h                          ; eb 03
+    jmp short 072b5h                          ; 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 0165eh                               ; e8 ea a6
+    call 0165eh                               ; e8 9d a3
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    int3                                      ; cc
-    outsw                                     ; 6f
-    inc dx                                    ; 42
-    jo short 06f42h                           ; 70 c5
-    jo short 06fd5h                           ; 70 56
-    jno short 06f45h                          ; 71 c4
-    jno short 06f9bh                          ; 71 18
-    jo short 06f71h                           ; 70 ec
-    jno short 06f38h                          ; 71 b1
-    db  072h
-_int15_function_mouse:                       ; 0xf6f88 LB 0x38b
+    sbb word [bp+di-071h], si                 ; 19 73 8f
+    jnc short 072dch                          ; 73 12
+    je short 0726fh                           ; 74 a3
+    je short 072dfh                           ; 74 11
+    jne short 07335h                          ; 75 65
+    jnc short 0730bh                          ; 73 39
+    jne short 072d2h                          ; 75 fe
+    db  075h
+_int15_function_mouse:                       ; 0xf72d5 LB 0x38b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10087,31 +10376,31 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 d4 a6
+    call 0166ch                               ; e8 87 a3
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 06fabh                          ; 76 0b
+    jbe short 072f8h                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 0730dh                           ; e9 62 03
+    jmp near 0765ah                           ; e9 62 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 06e8ch                               ; e8 db fe
+    call 071d9h                               ; e8 db fe
     and word [bp+018h], strict byte 0fffeh    ; 83 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov al, byte [bp+012h]                    ; 8a 46 12
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 072f4h                          ; 0f 87 32 03
+    jnbe near 07641h                          ; 0f 87 32 03
     movzx si, al                              ; 0f b6 f0
     add si, si                                ; 01 f6
-    jmp word [cs:si+06f78h]                   ; 2e ff a4 78 6f
+    jmp word [cs:si+072c5h]                   ; 2e ff a4 c5 72
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe near 072ffh                          ; 0f 87 2b 03
+    jnbe near 0764ch                          ; 0f 87 2b 03
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 74 a6
+    call 01650h                               ; e8 27 a3
     test AL, strict byte 080h                 ; a8 80
-    jne short 06febh                          ; 75 0b
+    jne short 07338h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 07307h                           ; e9 1c 03
+    jmp near 07654h                           ; e9 1c 03
     cmp byte [bp+00dh], 000h                  ; 80 7e 0d 00
     db  00fh, 094h, 0c0h
@@ -10119,24 +10408,24 @@
     add AL, strict byte 0f4h                  ; 04 f4
     xor ah, ah                                ; 30 e4
-    call 06e1dh                               ; e8 24 fe
+    call 0716ah                               ; e8 24 fe
     test al, al                               ; 84 c0
-    jne near 0728dh                           ; 0f 85 8e 02
+    jne near 075dah                           ; 0f 85 8e 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 4a fe
+    call 0719eh                               ; e8 4a fe
     test al, al                               ; 84 c0
-    je near 07307h                            ; 0f 84 fa 02
+    je near 07654h                            ; 0f 84 fa 02
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    jne near 0728dh                           ; 0f 85 78 02
-    jmp near 07307h                           ; e9 ef 02
+    jne near 075dah                           ; 0f 85 78 02
+    jmp near 07654h                           ; e9 ef 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 07023h                           ; 72 04
+    jc short 07370h                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 07026h                          ; 76 03
-    jmp near 071b9h                           ; e9 93 01
+    jbe short 07373h                          ; 76 03
+    jmp near 07506h                           ; e9 93 01
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 22 a6
+    call 01650h                               ; e8 d5 a2
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
@@ -10147,194 +10436,194 @@
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 1c a6
+    call 0165eh                               ; e8 cf a2
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 06 a6
+    call 01650h                               ; e8 b9 a2
     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 0165eh                               ; e8 07 a6
+    call 0165eh                               ; e8 ba a2
     mov ax, 000ffh                            ; b8 ff 00
-    call 06e1dh                               ; e8 c0 fd
+    call 0716ah                               ; e8 c0 fd
     test al, al                               ; 84 c0
-    jne near 0728dh                           ; 0f 85 2a 02
+    jne near 075dah                           ; 0f 85 2a 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06e51h                               ; e8 e6 fd
+    call 0719eh                               ; e8 e6 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-004h], 0feh                  ; 80 7e fc fe
-    jne short 0707eh                          ; 75 0b
+    jne short 073cbh                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp near 07307h                           ; e9 89 02
+    jmp near 07654h                           ; e9 89 02
     cmp byte [bp-004h], 0fah                  ; 80 7e fc fa
-    je short 07094h                           ; 74 10
+    je short 073e1h                           ; 74 10
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
-    push 0090bh                               ; 68 0b 09
+    push 00903h                               ; 68 03 09
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 e1 a8
+    call 01972h                               ; e8 94 a5
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne near 0728dh                           ; 0f 85 f3 01
+    jne near 075dah                           ; 0f 85 f3 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 af fd
+    call 0719eh                               ; e8 af fd
     test al, al                               ; 84 c0
-    jne near 0728dh                           ; 0f 85 e5 01
+    jne near 075dah                           ; 0f 85 e5 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06e51h                               ; e8 a1 fd
+    call 0719eh                               ; e8 a1 fd
     test al, al                               ; 84 c0
-    jne near 0728dh                           ; 0f 85 d7 01
+    jne near 075dah                           ; 0f 85 d7 01
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00ch], al                    ; 88 46 0c
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+00dh], al                    ; 88 46 0d
-    jmp near 07307h                           ; e9 42 02
+    jmp near 07654h                           ; e9 42 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 070dch                           ; 72 10
-    jbe short 070fah                          ; 76 2c
+    jc short 07429h                           ; 72 10
+    jbe short 07447h                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 0710ch                           ; 74 3a
+    je short 07459h                           ; 74 3a
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 07106h                           ; 74 30
+    je short 07453h                           ; 74 30
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 07100h                           ; 74 26
-    jmp short 07112h                          ; eb 36
+    je short 0744dh                           ; 74 26
+    jmp short 0745fh                          ; eb 36
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 070f4h                           ; 74 14
+    je short 07441h                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 070eeh                           ; 74 0a
+    je short 0743bh                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 07112h                          ; 75 2a
+    jne short 0745fh                          ; 75 2a
     mov byte [bp-008h], 00ah                  ; c6 46 f8 0a
-    jmp short 07116h                          ; eb 28
+    jmp short 07463h                          ; eb 28
     mov byte [bp-008h], 014h                  ; c6 46 f8 14
-    jmp short 07116h                          ; eb 22
+    jmp short 07463h                          ; eb 22
     mov byte [bp-008h], 028h                  ; c6 46 f8 28
-    jmp short 07116h                          ; eb 1c
+    jmp short 07463h                          ; eb 1c
     mov byte [bp-008h], 03ch                  ; c6 46 f8 3c
-    jmp short 07116h                          ; eb 16
+    jmp short 07463h                          ; eb 16
     mov byte [bp-008h], 050h                  ; c6 46 f8 50
-    jmp short 07116h                          ; eb 10
+    jmp short 07463h                          ; eb 10
     mov byte [bp-008h], 064h                  ; c6 46 f8 64
-    jmp short 07116h                          ; eb 0a
+    jmp short 07463h                          ; eb 0a
     mov byte [bp-008h], 0c8h                  ; c6 46 f8 c8
-    jmp short 07116h                          ; eb 04
+    jmp short 07463h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jbe short 0714bh                          ; 76 2f
+    jbe short 07498h                          ; 76 2f
     mov ax, 000f3h                            ; b8 f3 00
-    call 06e1dh                               ; e8 fb fc
+    call 0716ah                               ; e8 fb fc
     test al, al                               ; 84 c0
-    jne short 07140h                          ; 75 1a
+    jne short 0748dh                          ; 75 1a
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06e51h                               ; e8 23 fd
+    call 0719eh                               ; e8 23 fd
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 06e1dh                               ; e8 e8 fc
+    call 0716ah                               ; e8 e8 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06e51h                               ; e8 14 fd
-    jmp near 07307h                           ; e9 c7 01
+    call 0719eh                               ; e8 14 fd
+    jmp near 07654h                           ; e9 c7 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07307h                           ; e9 bc 01
+    jmp near 07654h                           ; e9 bc 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp near 07307h                           ; e9 b1 01
+    jmp near 07654h                           ; e9 b1 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 071b9h                          ; 73 5d
+    jnc short 07506h                          ; 73 5d
     mov ax, 000e8h                            ; b8 e8 00
-    call 06e1dh                               ; e8 bb fc
+    call 0716ah                               ; e8 bb fc
     test al, al                               ; 84 c0
-    jne short 071aeh                          ; 75 48
+    jne short 074fbh                          ; 75 48
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 e3 fc
+    call 0719eh                               ; e8 e3 fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07184h                           ; 74 10
+    je short 074d1h                           ; 74 10
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    push 00936h                               ; 68 36 09
+    push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 f1 a7
+    call 01972h                               ; e8 a4 a4
     add sp, strict byte 00006h                ; 83 c4 06
     movzx ax, byte [bp+00dh]                  ; 0f b6 46 0d
-    call 06e1dh                               ; e8 92 fc
+    call 0716ah                               ; e8 92 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 be fc
+    call 0719eh                               ; e8 be fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je near 07307h                            ; 0f 84 6c 01
+    je near 07654h                            ; 0f 84 6c 01
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    push 00936h                               ; 68 36 09
+    push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 ca a7
+    call 01972h                               ; e8 7d a4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07307h                           ; e9 59 01
+    jmp near 07654h                           ; e9 59 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07307h                           ; e9 4e 01
+    jmp near 07654h                           ; e9 4e 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp near 07307h                           ; e9 43 01
+    jmp near 07654h                           ; e9 43 01
     mov ax, 000f2h                            ; b8 f2 00
-    call 06e1dh                               ; e8 53 fc
+    call 0716ah                               ; e8 53 fc
     test al, al                               ; 84 c0
-    jne short 071e1h                          ; 75 13
+    jne short 0752eh                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 7b fc
+    call 0719eh                               ; e8 7b fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06e51h                               ; e8 73 fc
-    jmp near 070bch                           ; e9 db fe
+    call 0719eh                               ; e8 73 fc
+    jmp near 07409h                           ; e9 db fe
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07307h                           ; e9 1b 01
+    jmp near 07654h                           ; e9 1b 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 071fah                          ; 76 07
+    jbe short 07547h                          ; 76 07
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 07263h                          ; 76 6c
-    jmp near 07297h                           ; e9 9d 00
+    jbe short 075b0h                          ; 76 6c
+    jmp near 075e4h                           ; e9 9d 00
     mov ax, 000e9h                            ; b8 e9 00
-    call 06e1dh                               ; e8 1d fc
+    call 0716ah                               ; e8 1d fc
     test al, al                               ; 84 c0
-    jne near 0728dh                           ; 0f 85 87 00
+    jne near 075dah                           ; 0f 85 87 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 43 fc
+    call 0719eh                               ; e8 43 fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07226h                           ; 74 10
+    je short 07573h                           ; 74 10
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
-    push 00936h                               ; 68 36 09
+    push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 4f a7
+    call 01972h                               ; e8 02 a4
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 0728dh                          ; 75 63
+    jne short 075dah                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 1f fc
+    call 0719eh                               ; e8 1f fc
     test al, al                               ; 84 c0
-    jne short 0728dh                          ; 75 57
+    jne short 075dah                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06e51h                               ; e8 13 fc
+    call 0719eh                               ; e8 13 fc
     test al, al                               ; 84 c0
-    jne short 0728dh                          ; 75 4b
+    jne short 075dah                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06e51h                               ; e8 07 fc
+    call 0719eh                               ; e8 07 fc
     test al, al                               ; 84 c0
-    jne short 0728dh                          ; 75 3f
+    jne short 075dah                          ; 75 3f
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00ch], al                    ; 88 46 0c
@@ -10343,74 +10632,74 @@
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp near 07307h                           ; e9 a4 00
+    jmp near 07654h                           ; e9 a4 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 0726ch                          ; 75 05
+    jne short 075b9h                          ; 75 05
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 0726fh                          ; eb 03
+    jmp short 075bch                          ; eb 03
     mov ax, 000e7h                            ; b8 e7 00
-    call 06e1dh                               ; e8 ab fb
+    call 0716ah                               ; e8 ab fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 07287h                          ; 75 0f
+    jne short 075d4h                          ; 75 0f
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06e51h                               ; e8 d1 fb
+    call 0719eh                               ; e8 d1 fb
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
     db  00fh, 095h, 0c1h
     ; setne cl                                  ; 0f 95 c1
     test cl, cl                               ; 84 c9
-    je near 07307h                            ; 0f 84 7a 00
+    je near 07654h                            ; 0f 84 7a 00
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 07307h                          ; eb 70
+    jmp short 07654h                          ; eb 70
     movzx ax, byte [bp+00dh]                  ; 0f b6 46 0d
     push ax                                   ; 50
-    push 00962h                               ; 68 62 09
+    push 0095ah                               ; 68 5a 09
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 ce a6
+    call 01972h                               ; e8 81 a3
     add sp, strict byte 00006h                ; 83 c4 06
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp short 07307h                          ; eb 56
+    jmp short 07654h                          ; eb 56
     mov si, word [bp+00ch]                    ; 8b 76 0c
     mov bx, si                                ; 89 f3
     mov dx, strict word 00022h                ; ba 22 00
     mov ax, cx                                ; 89 c8
-    call 0167ah                               ; e8 bc a3
+    call 0167ah                               ; e8 6f a0
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, strict word 00024h                ; ba 24 00
     mov ax, cx                                ; 89 c8
-    call 0167ah                               ; e8 b1 a3
+    call 0167ah                               ; e8 64 a0
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 7f a3
+    call 01650h                               ; e8 32 a0
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 072e5h                          ; 75 0e
+    jne short 07632h                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 072e5h                          ; 75 08
+    jne short 07632h                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 072e7h                           ; 74 06
+    je short 07634h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 072e7h                          ; eb 02
+    jmp short 07634h                          ; 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 0165eh                               ; e8 6c a3
-    jmp short 07307h                          ; eb 13
-    push 0097ch                               ; 68 7c 09
+    call 0165eh                               ; e8 1f a0
+    jmp short 07654h                          ; eb 13
+    push 00974h                               ; 68 74 09
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 76 a6
+    call 01972h                               ; e8 29 a3
     add sp, strict byte 00004h                ; 83 c4 04
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
     mov ax, strict word 00047h                ; b8 47 00
-    call 06e8ch                               ; e8 7f fb
+    call 071d9h                               ; e8 7f fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf7313 LB 0xb3
+_int17_function:                             ; 0xf7660 LB 0xb3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10422,22 +10711,22 @@
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 45 a3
+    call 0166ch                               ; e8 f8 9f
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc near 073bch                           ; 0f 83 89 00
+    jnc near 07709h                           ; 0f 83 89 00
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc near 073bch                           ; 0f 83 7f 00
+    jnc near 07709h                           ; 0f 83 7f 00
     test bx, bx                               ; 85 db
-    jbe near 073bch                           ; 0f 86 79 00
+    jbe near 07709h                           ; 0f 86 79 00
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00078h                ; 83 c2 78
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 02 a3
+    call 01650h                               ; e8 b5 9f
     movzx cx, al                              ; 0f b6 c8
     sal cx, 008h                              ; c1 e1 08
     cmp byte [bp+013h], 000h                  ; 80 7e 13 00
-    jne short 07387h                          ; 75 2d
+    jne short 076d4h                          ; 75 2d
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
@@ -10459,11 +10748,11 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 07387h                           ; 74 07
+    je short 076d4h                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 07387h                           ; 74 03
+    je short 076d4h                           ; 74 03
     dec cx                                    ; 49
-    jmp short 07376h                          ; eb ef
+    jmp short 076c3h                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 073a3h                          ; 75 16
+    jne short 076f0h                          ; 75 16
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
@@ -10484,8 +10773,8 @@
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 073b6h                          ; 75 04
+    jne short 07703h                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 073c0h                          ; eb 04
+    jmp short 0770dh                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -10493,5 +10782,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-wait_:                                       ; 0xf73c6 LB 0xb2
+wait_:                                       ; 0xf7713 LB 0xb2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10511,5 +10800,5 @@
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01688h                               ; e8 9f a2
+    call 01688h                               ; e8 52 9f
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov bx, dx                                ; 89 d3
@@ -10517,20 +10806,20 @@
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01688h                               ; e8 91 a2
+    call 01688h                               ; e8 44 9f
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 07407h                         ; 77 07
-    jne short 0740eh                          ; 75 0c
+    jnbe short 07754h                         ; 77 07
+    jne short 0775bh                          ; 75 0c
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jbe short 0740eh                          ; 76 07
+    jbe short 0775bh                          ; 76 07
     sub ax, word [bp-00eh]                    ; 2b 46 f2
     sbb dx, bx                                ; 19 da
-    jmp short 07419h                          ; eb 0b
+    jmp short 07766h                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 07419h                           ; 72 07
-    jne short 0741dh                          ; 75 09
+    jc short 07766h                           ; 72 07
+    jne short 0776ah                          ; 75 09
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jnc short 0741dh                          ; 73 04
+    jnc short 0776ah                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
@@ -10540,11 +10829,11 @@
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je near 07433h                            ; 0f 84 05 00
+    je near 07780h                            ; 0f 84 05 00
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 07435h                           ; e9 02 00
+    jmp near 07782h                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 0745dh                           ; 74 24
+    je short 077aah                           ; 74 24
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
@@ -10555,17 +10844,17 @@
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
-    push 0099eh                               ; 68 9e 09
+    push 00996h                               ; 68 96 09
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 22 a5
+    call 01972h                               ; e8 d5 a1
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 0745dh                           ; 74 04
+    je short 077aah                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 0746fh                          ; eb 12
+    jmp short 077bch                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 073eeh                         ; 7f 8d
-    jne short 07467h                          ; 75 04
+    jnle short 0773bh                         ; 7f 8d
+    jne short 077b4h                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 073eeh                         ; 77 87
+    jnbe short 0773bh                         ; 77 87
     mov ax, word [bp-010h]                    ; 8b 46 f0
     push ax                                   ; 50
@@ -10579,5 +10868,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf7478 LB 0x16
+read_logo_byte_:                             ; 0xf77c5 LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10594,5 +10883,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf748e LB 0x14
+read_logo_word_:                             ; 0xf77db LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10607,5 +10896,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf74a2 LB 0x130
+print_detected_harddisks_:                   ; 0xf77ef LB 0x130
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10619,27 +10908,27 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b7 a1
+    call 0166ch                               ; e8 6a 9e
     mov si, ax                                ; 89 c6
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
-    mov dx, 002c0h                            ; ba c0 02
-    call 01650h                               ; e8 8b a1
+    mov dx, 00304h                            ; ba 04 03
+    call 01650h                               ; e8 3e 9e
     mov byte [bp-00eh], al                    ; 88 46 f2
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp-00eh]                    ; 3a 5e f2
-    jnc near 075a4h                           ; 0f 83 d3 00
+    jnc near 078f1h                           ; 0f 83 d3 00
     movzx dx, bl                              ; 0f b6 d3
-    add dx, 002c1h                            ; 81 c2 c1 02
+    add dx, 00305h                            ; 81 c2 05 03
     mov ax, si                                ; 89 f0
-    call 01650h                               ; e8 73 a1
+    call 01650h                               ; e8 26 9e
     mov bh, al                                ; 88 c7
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 07507h                           ; 72 24
+    jc short 07854h                           ; 72 24
     test cl, cl                               ; 84 c9
-    jne short 074f4h                          ; 75 0d
-    push 009afh                               ; 68 af 09
+    jne short 07841h                          ; 75 0d
+    push 009a7h                               ; 68 a7 09
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 83 a4
+    call 01972h                               ; e8 36 a1
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
@@ -10647,36 +10936,36 @@
     inc ax                                    ; 40
     push ax                                   ; 50
-    push 009c4h                               ; 68 c4 09
+    push 009bch                               ; 68 bc 09
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 71 a4
+    call 01972h                               ; e8 24 a1
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 0759fh                           ; e9 98 00
+    jmp near 078ech                           ; e9 98 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 0751eh                           ; 72 13
+    jc short 0786bh                           ; 72 13
     test ch, ch                               ; 84 ed
-    jne short 0751ch                          ; 75 0d
-    push 009d7h                               ; 68 d7 09
+    jne short 07869h                          ; 75 0d
+    push 009cfh                               ; 68 cf 09
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 5b a4
+    call 01972h                               ; e8 0e a1
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
-    jmp short 074f4h                          ; eb d6
+    jmp short 07841h                          ; eb d6
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 07539h                          ; 73 17
+    jnc short 07886h                          ; 73 17
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07539h                          ; 75 11
-    push 009ech                               ; 68 ec 09
+    jne short 07886h                          ; 75 11
+    push 009e4h                               ; 68 e4 09
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 42 a4
+    call 01972h                               ; e8 f5 a0
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 0754fh                          ; eb 16
+    jmp short 0789ch                          ; eb 16
     cmp bh, 004h                              ; 80 ff 04
-    jc short 0754fh                           ; 72 11
+    jc short 0789ch                           ; 72 11
     test cl, cl                               ; 84 c9
-    jne short 0754fh                          ; 75 0d
-    push 009feh                               ; 68 fe 09
+    jne short 0789ch                          ; 75 0d
+    push 009f6h                               ; 68 f6 09
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 28 a4
+    call 01972h                               ; e8 db a0
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
@@ -10684,10 +10973,10 @@
     inc ax                                    ; 40
     push ax                                   ; 50
-    push 00a12h                               ; 68 12 0a
+    push 00a0ah                               ; 68 0a 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 16 a4
+    call 01972h                               ; e8 c9 a0
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07567h                           ; 72 03
+    jc short 078b4h                           ; 72 03
     sub bh, 004h                              ; 80 ef 04
     movzx ax, bh                              ; 0f b6 c7
@@ -10697,10 +10986,10 @@
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07578h                           ; 74 05
-    push 00a1ch                               ; 68 1c 0a
-    jmp short 0757bh                          ; eb 03
-    push 00a27h                               ; 68 27 0a
+    je short 078c5h                           ; 74 05
+    push 00a14h                               ; 68 14 0a
+    jmp short 078c8h                          ; eb 03
+    push 00a1fh                               ; 68 1f 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 f2 a3
+    call 01972h                               ; e8 a5 a0
     add sp, strict byte 00004h                ; 83 c4 04
     movzx ax, bh                              ; 0f b6 c7
@@ -10709,27 +10998,27 @@
     idiv di                                   ; f7 ff
     test dx, dx                               ; 85 d2
-    je short 07595h                           ; 74 05
-    push 00a30h                               ; 68 30 0a
-    jmp short 07598h                          ; eb 03
-    push 00a36h                               ; 68 36 0a
+    je short 078e2h                           ; 74 05
+    push 00a28h                               ; 68 28 0a
+    jmp short 078e5h                          ; eb 03
+    push 00a2eh                               ; 68 2e 0a
     push di                                   ; 57
-    call 01972h                               ; e8 d6 a3
+    call 01972h                               ; e8 89 a0
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp near 074cah                           ; e9 26 ff
+    jmp near 07817h                           ; e9 26 ff
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 075bdh                          ; 75 13
+    jne short 0790ah                          ; 75 13
     test cl, cl                               ; 84 c9
-    jne short 075bdh                          ; 75 0f
+    jne short 0790ah                          ; 75 0f
     test ch, ch                               ; 84 ed
-    jne short 075bdh                          ; 75 0b
-    push 00a3dh                               ; 68 3d 0a
+    jne short 0790ah                          ; 75 0b
+    push 00a35h                               ; 68 35 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 b8 a3
+    call 01972h                               ; e8 6b a0
     add sp, strict byte 00004h                ; 83 c4 04
-    push 00a51h                               ; 68 51 0a
+    push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 ad a3
+    call 01972h                               ; e8 60 a0
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -10741,5 +11030,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf75d2 LB 0x28
+get_boot_drive_:                             ; 0xf791f LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10749,10 +11038,10 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 8a a0
-    mov dx, 002c0h                            ; ba c0 02
-    call 01650h                               ; e8 68 a0
+    call 0166ch                               ; e8 3d 9d
+    mov dx, 00304h                            ; ba 04 03
+    call 01650h                               ; e8 1b 9d
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 075f1h                           ; 72 02
+    jc short 0793eh                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
@@ -10762,5 +11051,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf75fa LB 0x224
+show_logo_:                                  ; 0xf7947 LB 0x224
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10773,5 +11062,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 5e a0
+    call 0166ch                               ; e8 11 9d
     mov si, ax                                ; 89 c6
     xor cl, cl                                ; 30 c9
@@ -10784,7 +11073,7 @@
     out strict byte 040h, AL                  ; e6 40
     movzx ax, dl                              ; 0f b6 c2
-    call 0748eh                               ; e8 68 fe
+    call 077dbh                               ; e8 68 fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne near 076feh                           ; 0f 85 d1 00
+    jne near 07a4bh                           ; 0f 85 d1 00
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -10794,9 +11083,9 @@
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jne near 076feh                           ; 0f 85 bd 00
+    jne near 07a4bh                           ; 0f 85 bd 00
     mov al, dl                                ; 88 d0
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 07478h                               ; e8 2e fe
+    call 077c5h                               ; e8 2e fe
     mov ch, al                                ; 88 c5
     mov byte [bp-00ch], al                    ; 88 46 f4
@@ -10804,5 +11093,5 @@
     add AL, strict byte 005h                  ; 04 05
     xor ah, ah                                ; 30 e4
-    call 07478h                               ; e8 20 fe
+    call 077c5h                               ; e8 20 fe
     mov dh, al                                ; 88 c6
     mov byte [bp-010h], al                    ; 88 46 f0
@@ -10810,5 +11099,5 @@
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 0748eh                               ; e8 28 fe
+    call 077dbh                               ; e8 28 fe
     mov bx, ax                                ; 89 c3
     mov word [bp-014h], ax                    ; 89 46 ec
@@ -10816,22 +11105,22 @@
     add AL, strict byte 006h                  ; 04 06
     xor ah, ah                                ; 30 e4
-    call 07478h                               ; e8 04 fe
+    call 077c5h                               ; e8 04 fe
     mov byte [bp-012h], al                    ; 88 46 ee
     test ch, ch                               ; 84 ed
-    jne short 07685h                          ; 75 0a
+    jne short 079d2h                          ; 75 0a
     test dh, dh                               ; 84 f6
-    jne short 07685h                          ; 75 06
+    jne short 079d2h                          ; 75 06
     test bx, bx                               ; 85 db
-    je near 076feh                            ; 0f 84 79 00
+    je near 07a4bh                            ; 0f 84 79 00
     mov bx, 00142h                            ; bb 42 01
     mov ax, 04f02h                            ; b8 02 4f
     int 010h                                  ; cd 10
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 076b6h                           ; 74 23
+    je short 07a03h                           ; 74 23
     xor bx, bx                                ; 31 db
-    jmp short 0769dh                          ; eb 06
+    jmp short 079eah                          ; eb 06
     inc bx                                    ; 43
     cmp bx, strict byte 00010h                ; 83 fb 10
-    jnbe short 076bdh                         ; 77 20
+    jnbe short 07a0ah                         ; 77 20
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
@@ -10840,30 +11129,30 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 073c6h                               ; e8 18 fd
+    call 07713h                               ; e8 18 fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07697h                          ; 75 e5
+    jne short 079e4h                          ; 75 e5
     mov CL, strict byte 001h                  ; b1 01
-    jmp short 076bdh                          ; eb 07
+    jmp short 07a0ah                          ; 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 076d3h                          ; 75 12
+    jne short 07a20h                          ; 75 12
     mov ax, word [bp-014h]                    ; 8b 46 ec
     shr ax, 004h                              ; c1 e8 04
     mov dx, strict word 00001h                ; ba 01 00
-    call 073c6h                               ; e8 f9 fc
+    call 07713h                               ; e8 f9 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 076d3h                          ; 75 02
+    jne short 07a20h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    je short 076feh                           ; 74 25
+    je short 07a4bh                           ; 74 25
     test cl, cl                               ; 84 c9
-    jne short 076feh                          ; 75 21
+    jne short 07a4bh                          ; 75 21
     mov bx, strict word 00010h                ; bb 10 00
-    jmp short 076e7h                          ; eb 05
+    jmp short 07a34h                          ; eb 05
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 076feh                          ; 76 17
+    jbe short 07a4bh                          ; 76 17
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
@@ -10872,39 +11161,39 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 073c6h                               ; e8 ce fc
+    call 07713h                               ; e8 ce fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 076e2h                          ; 75 e6
+    jne short 07a2fh                          ; 75 e6
     mov CL, strict byte 001h                  ; b1 01
     xor bx, bx                                ; 31 db
-    mov dx, 00339h                            ; ba 39 03
+    mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 56 9f
+    call 0165eh                               ; e8 09 9c
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    je near 077ffh                            ; 0f 84 e9 00
+    je near 07b4ch                            ; 0f 84 e9 00
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0774ch                          ; 75 30
+    jne short 07a99h                          ; 75 30
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    jne short 0774ch                          ; 75 2a
+    jne short 07a99h                          ; 75 2a
     cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    jne short 0774ch                          ; 75 24
+    jne short 07a99h                          ; 75 24
     cmp byte [bp-012h], 002h                  ; 80 7e ee 02
-    jne short 07739h                          ; 75 0b
-    push 00a53h                               ; 68 53 0a
+    jne short 07a86h                          ; 75 0b
+    push 00a4bh                               ; 68 4b 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 3c a2
+    call 01972h                               ; e8 ef 9e
     add sp, strict byte 00004h                ; 83 c4 04
     test cl, cl                               ; 84 c9
-    jne short 0774ch                          ; 75 0f
+    jne short 07a99h                          ; 75 0f
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 073c6h                               ; e8 80 fc
+    call 07713h                               ; e8 80 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 0774ch                          ; 75 02
+    jne short 07a99h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je near 077ffh                            ; 0f 84 ad 00
+    je near 07b4ch                            ; 0f 84 ad 00
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     mov ax, 00100h                            ; b8 00 01
@@ -10923,54 +11212,54 @@
     ; xor dx, dx                                ; 33 d2
     int 010h                                  ; cd 10
-    push 00a75h                               ; 68 75 0a
+    push 00a6dh                               ; 68 6d 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 f7 a1
+    call 01972h                               ; e8 aa 9e
     add sp, strict byte 00004h                ; 83 c4 04
-    call 074a2h                               ; e8 21 fd
-    push 00ab9h                               ; 68 b9 0a
+    call 077efh                               ; e8 21 fd
+    push 00ab1h                               ; 68 b1 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 e9 a1
+    call 01972h                               ; e8 9c 9e
     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 073c6h                               ; e8 31 fc
+    call 07713h                               ; e8 31 fc
     mov bl, al                                ; 88 c3
     test al, al                               ; 84 c0
-    je short 0778ch                           ; 74 f1
+    je short 07ad9h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 077edh                           ; 74 4e
+    je short 07b3ah                           ; 74 4e
     cmp bl, 002h                              ; 80 fb 02
-    jc short 077c6h                           ; 72 22
+    jc short 07b13h                           ; 72 22
     cmp bl, 009h                              ; 80 fb 09
-    jnbe short 077c6h                         ; 77 1d
+    jnbe short 07b13h                         ; 77 1d
     movzx ax, bl                              ; 0f b6 c3
-    call 075d2h                               ; e8 23 fe
+    call 0791fh                               ; e8 23 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 077b5h                          ; 75 02
-    jmp short 0778ch                          ; eb d7
+    jne short 07b02h                          ; 75 02
+    jmp short 07ad9h                          ; eb d7
     movzx bx, al                              ; 0f b6 d8
-    mov dx, 00338h                            ; ba 38 03
+    mov dx, 0037ch                            ; ba 7c 03
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 9e 9e
+    call 0165eh                               ; e8 51 9b
     mov byte [bp-00eh], 002h                  ; c6 46 f2 02
-    jmp short 077edh                          ; eb 27
+    jmp short 07b3ah                          ; eb 27
     cmp bl, 02eh                              ; 80 fb 2e
-    je short 077dbh                           ; 74 10
+    je short 07b28h                           ; 74 10
     cmp bl, 026h                              ; 80 fb 26
-    je short 077e1h                           ; 74 11
+    je short 07b2eh                           ; 74 11
     cmp bl, 021h                              ; 80 fb 21
-    jne short 077e7h                          ; 75 12
+    jne short 07b34h                          ; 75 12
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 077edh                          ; eb 12
+    jmp short 07b3ah                          ; eb 12
     mov byte [bp-00eh], 003h                  ; c6 46 f2 03
-    jmp short 077edh                          ; eb 0c
+    jmp short 07b3ah                          ; eb 0c
     mov byte [bp-00eh], 004h                  ; c6 46 f2 04
-    jmp short 077edh                          ; eb 06
+    jmp short 07b3ah                          ; eb 06
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 0778ch                           ; 74 9f
+    je short 07ad9h                           ; 74 9f
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
-    mov dx, 00339h                            ; ba 39 03
+    mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 65 9e
+    call 0165eh                               ; e8 18 9b
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
@@ -10985,5 +11274,5 @@
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 ae 75
+    call 0edbfh                               ; e8 61 72
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -10996,5 +11285,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf781e LB 0x67
+delay_boot_:                                 ; 0xf7b6b LB 0x67
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11003,5 +11292,5 @@
     mov dx, ax                                ; 89 c2
     test ax, ax                               ; 85 c0
-    je short 0787eh                           ; 74 55
+    je short 07bcbh                           ; 74 55
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -11011,24 +11300,24 @@
     out strict byte 040h, AL                  ; e6 40
     push dx                                   ; 52
-    push 00b03h                               ; 68 03 0b
+    push 00afbh                               ; 68 fb 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 34 a1
+    call 01972h                               ; e8 e7 9d
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, dx                                ; 89 d3
     test bx, bx                               ; 85 db
-    jbe short 0785eh                          ; 76 17
+    jbe short 07babh                          ; 76 17
     push bx                                   ; 53
-    push 00b21h                               ; 68 21 0b
+    push 00b19h                               ; 68 19 0b
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 22 a1
+    call 01972h                               ; e8 d5 9d
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 073c6h                               ; e8 6b fb
+    call 07713h                               ; e8 6b fb
     dec bx                                    ; 4b
-    jmp short 07843h                          ; eb e5
-    push 00a51h                               ; 68 51 0a
+    jmp short 07b90h                          ; eb e5
+    push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 01972h                               ; e8 0c a1
+    call 01972h                               ; e8 bf 9d
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
@@ -11041,5 +11330,5 @@
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 44 75
+    call 0edbfh                               ; e8 f7 71
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -11049,5 +11338,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7885 LB 0xc9
+scsi_cmd_data_in_:                           ; 0xf7bd2 LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11057,6 +11346,6 @@
     mov si, ax                                ; 89 c6
     mov byte [bp-006h], dl                    ; 88 56 fa
-    mov word [bp-008h], bx                    ; 89 5e f8
-    mov word [bp-00ah], cx                    ; 89 4e f6
+    mov word [bp-00ah], bx                    ; 89 5e f6
+    mov word [bp-008h], cx                    ; 89 4e f8
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov dx, si                                ; 89 f2
@@ -11065,5 +11354,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0789bh                          ; 75 f7
+    jne short 07be8h                          ; 75 f7
     mov ax, bx                                ; 89 d8
     mov dx, word [bp+00ch]                    ; 8b 56 0c
@@ -11071,8 +11360,18 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 078ach                               ; e2 fa
-    and ax, 000f0h                            ; 25 f0 00
+    loop 07bf9h                               ; e2 fa
+    mov cx, ax                                ; 89 c1
+    and cx, 000f0h                            ; 81 e1 f0 00
+    cmp byte [bp+004h], 010h                  ; 80 7e 04 10
+    db  00fh, 094h, 0c0h
+    ; sete al                                   ; 0f 94 c0
+    xor ah, ah                                ; 30 e4
+    cwd                                       ; 99
+    or ax, cx                                 ; 09 c8
+    or ax, dx                                 ; 09 d0
+    je short 07c19h                           ; 74 04
+    xor cx, cx                                ; 31 c9
+    jmp short 07c1dh                          ; eb 04
     movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
-    or cx, ax                                 ; 09 c1
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov dx, si                                ; 89 f2
@@ -11089,5 +11388,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 078d2h                               ; e2 fa
+    loop 07c34h                               ; e2 fa
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
@@ -11095,7 +11394,6 @@
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 078f6h                          ; 73 11
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov di, word [bp-008h]                    ; 8b 7e f8
+    jnc short 07c55h                          ; 73 0e
+    les di, [bp-00ah]                         ; c4 7e f6
     add di, cx                                ; 01 cf
     mov al, byte [es:di]                      ; 26 8a 05
@@ -11103,5 +11401,5 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 078ddh                          ; eb e7
+    jmp short 07c3fh                          ; eb ea
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
@@ -11109,7 +11407,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 078f6h                          ; 75 f7
+    jne short 07c55h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07911h                           ; 74 0e
+    je short 07c70h                           ; 74 0e
     lea dx, [si+003h]                         ; 8d 54 03
     xor al, al                                ; 30 c0
@@ -11119,10 +11417,10 @@
     ; sub ah, ah                                ; 2a e4
     mov di, strict word 00004h                ; bf 04 00
-    jmp short 07943h                          ; eb 32
+    jmp short 07ca2h                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07920h                          ; 75 06
+    jne short 07c7fh                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 0793ah                          ; 76 1a
+    jbe short 07c99h                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
@@ -11133,5 +11431,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07911h                          ; eb d7
+    jmp short 07c70h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
@@ -11144,5 +11442,5 @@
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf794e LB 0xc9
+scsi_cmd_data_out_:                          ; 0xf7cad LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11152,6 +11450,6 @@
     mov di, ax                                ; 89 c7
     mov byte [bp-006h], dl                    ; 88 56 fa
-    mov word [bp-008h], bx                    ; 89 5e f8
-    mov word [bp-00ah], cx                    ; 89 4e f6
+    mov word [bp-00ah], bx                    ; 89 5e f6
+    mov word [bp-008h], cx                    ; 89 4e f8
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov dx, di                                ; 89 fa
@@ -11160,5 +11458,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07964h                          ; 75 f7
+    jne short 07cc3h                          ; 75 f7
     mov ax, bx                                ; 89 d8
     mov dx, word [bp+00ch]                    ; 8b 56 0c
@@ -11166,8 +11464,18 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07975h                               ; e2 fa
-    and ax, 000f0h                            ; 25 f0 00
+    loop 07cd4h                               ; e2 fa
+    mov cx, ax                                ; 89 c1
+    and cx, 000f0h                            ; 81 e1 f0 00
+    cmp byte [bp+004h], 010h                  ; 80 7e 04 10
+    db  00fh, 094h, 0c0h
+    ; sete al                                   ; 0f 94 c0
+    xor ah, ah                                ; 30 e4
+    cwd                                       ; 99
+    or ax, cx                                 ; 09 c8
+    or ax, dx                                 ; 09 d0
+    je short 07cf4h                           ; 74 04
+    xor cx, cx                                ; 31 c9
+    jmp short 07cf8h                          ; eb 04
     movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
-    or cx, ax                                 ; 09 c1
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov dx, di                                ; 89 fa
@@ -11184,5 +11492,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0799bh                               ; e2 fa
+    loop 07d0fh                               ; e2 fa
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
@@ -11190,7 +11498,6 @@
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 079bfh                          ; 73 11
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov si, word [bp-008h]                    ; 8b 76 f8
+    jnc short 07d30h                          ; 73 0e
+    les si, [bp-00ah]                         ; c4 76 f6
     add si, cx                                ; 01 ce
     mov al, byte [es:si]                      ; 26 8a 04
@@ -11198,10 +11505,10 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 079a6h                          ; eb e7
+    jmp short 07d1ah                          ; eb ea
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 079ceh                          ; 75 06
+    jne short 07d3fh                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 079e9h                          ; 76 1b
+    jbe short 07d5ah                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
@@ -11213,5 +11520,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 079bfh                          ; eb d6
+    jmp short 07d30h                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
@@ -11223,7 +11530,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 079f1h                          ; 75 f7
+    jne short 07d62h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07a0ch                           ; 74 0e
+    je short 07d7dh                           ; 74 0e
     lea dx, [di+003h]                         ; 8d 55 03
     xor al, al                                ; 30 c0
@@ -11233,5 +11540,5 @@
     ; sub ah, ah                                ; 2a e4
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 07a0eh                          ; eb 02
+    jmp short 07d7fh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11240,28 +11547,44 @@
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-@scsi_read_sectors:                          ; 0xf7a17 LB 0xb9
+@scsi_read_sectors:                          ; 0xf7d88 LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, strict byte 0000eh                ; 83 ec 0e
+    sub sp, strict byte 00016h                ; 83 ec 16
     mov si, word [bp+004h]                    ; 8b 76 04
     mov es, [bp+006h]                         ; 8e 46 06
-    mov bl, byte [es:si+008h]                 ; 26 8a 5c 08
-    sub bl, 008h                              ; 80 eb 08
-    cmp bl, 004h                              ; 80 fb 04
-    jbe short 07a43h                          ; 76 12
-    movzx ax, bl                              ; 0f b6 c3
+    mov al, byte [es:si+00ch]                 ; 26 8a 44 0c
+    sub AL, strict byte 008h                  ; 2c 08
+    mov byte [bp-006h], al                    ; 88 46 fa
+    cmp AL, strict byte 004h                  ; 3c 04
+    jbe short 07db6h                          ; 76 13
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
-    push 00b26h                               ; 68 26 0b
-    push 00b38h                               ; 68 38 0b
+    push 00b1eh                               ; 68 1e 0b
+    push 00b30h                               ; 68 30 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 32 9f
+    call 01972h                               ; e8 bf 9b
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
-    mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
-    mov word [bp-012h], strict word 00028h    ; c7 46 ee 28 00
-    mov ax, word [es:si]                      ; 26 8b 04
-    mov dx, word [es:si+002h]                 ; 26 8b 54 02
+    mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
+    mov word [bp-01ah], 00088h                ; c7 46 e6 88 00
+    mov ax, word [es:si+006h]                 ; 26 8b 44 06
+    mov bx, word [es:si+004h]                 ; 26 8b 5c 04
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    xchg ah, al                               ; 86 c4
+    xchg bh, bl                               ; 86 df
+    xchg ch, cl                               ; 86 cd
+    xchg dh, dl                               ; 86 d6
+    xchg dx, ax                               ; 92
+    xchg bx, cx                               ; 87 cb
+    mov word [bp-012h], ax                    ; 89 46 ee
+    mov word [bp-014h], bx                    ; 89 5e ec
+    mov word [bp-016h], cx                    ; 89 4e ea
+    mov word [bp-018h], dx                    ; 89 56 e8
+    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
+    mov ax, di                                ; 89 f8
+    xor dx, dx                                ; 31 d2
     xchg ah, al                               ; 86 c4
     xchg dh, dl                               ; 86 d6
@@ -11269,37 +11592,34 @@
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-00eh], dx                    ; 89 56 f2
-    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    mov ax, di                                ; 89 f8
-    xchg ah, al                               ; 86 c4
-    mov word [bp-00bh], ax                    ; 89 46 f5
-    mov byte [bp-009h], 000h                  ; c6 46 f7 00
-    xor bh, bh                                ; 30 ff
-    sal bx, 002h                              ; c1 e3 02
-    add bx, si                                ; 01 f3
-    mov ax, word [es:bx+001d8h]               ; 26 8b 87 d8 01
-    mov dl, byte [es:bx+001dah]               ; 26 8a 97 da 01
-    mov word [bp-008h], di                    ; 89 7e f8
-    mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
+    mov byte [bp-00bh], 000h                  ; c6 46 f5 00
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    sal ax, 002h                              ; c1 e0 02
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
+    mov ax, word [es:bx+0021ch]               ; 26 8b 87 1c 02
+    mov dl, byte [es:bx+0021eh]               ; 26 8a 97 1e 02
+    mov word [bp-00ah], di                    ; 89 7e f6
+    mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
     mov cx, strict word 00009h                ; b9 09 00
-    sal word [bp-008h], 1                     ; d1 66 f8
-    rcl word [bp-006h], 1                     ; d1 56 fa
-    loop 07a8ch                               ; e2 f8
-    push dword [bp-008h]                      ; 66 ff 76 f8
-    db  066h, 026h, 0ffh, 074h, 004h
-    ; push dword [es:si+004h]                   ; 66 26 ff 74 04
-    push strict byte 0000ah                   ; 6a 0a
+    sal word [bp-00ah], 1                     ; d1 66 f6
+    rcl word [bp-008h], 1                     ; d1 56 f8
+    loop 07e1fh                               ; e2 f8
+    push dword [bp-00ah]                      ; 66 ff 76 f6
+    db  066h, 026h, 0ffh, 074h, 008h
+    ; push dword [es:si+008h]                   ; 66 26 ff 74 08
+    push strict byte 00010h                   ; 6a 10
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-012h]                         ; 8d 5e ee
-    call 07885h                               ; e8 dc fd
+    lea bx, [bp-01ah]                         ; 8d 5e e6
+    call 07bd2h                               ; e8 96 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07ac4h                          ; 75 15
+    jne short 07e57h                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
-    mov word [es:si+014h], di                 ; 26 89 7c 14
+    mov word [es:si+018h], di                 ; 26 89 7c 18
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    mov word [es:si+01ah], dx                 ; 26 89 54 1a
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    mov word [es:si+016h], dx                 ; 26 89 54 16
-    mov dx, word [bp-006h]                    ; 8b 56 fa
-    mov word [es:si+018h], dx                 ; 26 89 54 18
+    mov word [es:si+01ch], dx                 ; 26 89 54 1c
     movzx ax, ah                              ; 0f b6 c4
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11308,28 +11628,44 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@scsi_write_sectors:                         ; 0xf7ad0 LB 0xb9
+@scsi_write_sectors:                         ; 0xf7e63 LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, strict byte 0000eh                ; 83 ec 0e
+    sub sp, strict byte 00016h                ; 83 ec 16
     mov si, word [bp+004h]                    ; 8b 76 04
     mov es, [bp+006h]                         ; 8e 46 06
-    mov bl, byte [es:si+008h]                 ; 26 8a 5c 08
-    sub bl, 008h                              ; 80 eb 08
-    cmp bl, 004h                              ; 80 fb 04
-    jbe short 07afch                          ; 76 12
-    movzx ax, bl                              ; 0f b6 c3
+    mov al, byte [es:si+00ch]                 ; 26 8a 44 0c
+    sub AL, strict byte 008h                  ; 2c 08
+    mov byte [bp-006h], al                    ; 88 46 fa
+    cmp AL, strict byte 004h                  ; 3c 04
+    jbe short 07e91h                          ; 76 13
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
-    push 00b57h                               ; 68 57 0b
-    push 00b38h                               ; 68 38 0b
+    push 00b4fh                               ; 68 4f 0b
+    push 00b30h                               ; 68 30 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 79 9e
+    call 01972h                               ; e8 e4 9a
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
-    mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
-    mov word [bp-012h], strict word 0002ah    ; c7 46 ee 2a 00
-    mov ax, word [es:si]                      ; 26 8b 04
-    mov dx, word [es:si+002h]                 ; 26 8b 54 02
+    mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
+    mov word [bp-01ah], 0008ah                ; c7 46 e6 8a 00
+    mov ax, word [es:si+006h]                 ; 26 8b 44 06
+    mov bx, word [es:si+004h]                 ; 26 8b 5c 04
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    xchg ah, al                               ; 86 c4
+    xchg bh, bl                               ; 86 df
+    xchg ch, cl                               ; 86 cd
+    xchg dh, dl                               ; 86 d6
+    xchg dx, ax                               ; 92
+    xchg bx, cx                               ; 87 cb
+    mov word [bp-012h], ax                    ; 89 46 ee
+    mov word [bp-014h], bx                    ; 89 5e ec
+    mov word [bp-016h], cx                    ; 89 4e ea
+    mov word [bp-018h], dx                    ; 89 56 e8
+    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
+    mov ax, di                                ; 89 f8
+    xor dx, dx                                ; 31 d2
     xchg ah, al                               ; 86 c4
     xchg dh, dl                               ; 86 d6
@@ -11337,37 +11673,34 @@
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-00eh], dx                    ; 89 56 f2
-    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    mov ax, di                                ; 89 f8
-    xchg ah, al                               ; 86 c4
-    mov word [bp-00bh], ax                    ; 89 46 f5
-    mov byte [bp-009h], 000h                  ; c6 46 f7 00
-    xor bh, bh                                ; 30 ff
-    sal bx, 002h                              ; c1 e3 02
-    add bx, si                                ; 01 f3
-    mov ax, word [es:bx+001d8h]               ; 26 8b 87 d8 01
-    mov dl, byte [es:bx+001dah]               ; 26 8a 97 da 01
-    mov word [bp-008h], di                    ; 89 7e f8
-    mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
+    mov byte [bp-00bh], 000h                  ; c6 46 f5 00
+    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
+    sal ax, 002h                              ; c1 e0 02
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
+    mov ax, word [es:bx+0021ch]               ; 26 8b 87 1c 02
+    mov dl, byte [es:bx+0021eh]               ; 26 8a 97 1e 02
+    mov word [bp-00ah], di                    ; 89 7e f6
+    mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
     mov cx, strict word 00009h                ; b9 09 00
-    sal word [bp-008h], 1                     ; d1 66 f8
-    rcl word [bp-006h], 1                     ; d1 56 fa
-    loop 07b45h                               ; e2 f8
-    push dword [bp-008h]                      ; 66 ff 76 f8
-    db  066h, 026h, 0ffh, 074h, 004h
-    ; push dword [es:si+004h]                   ; 66 26 ff 74 04
-    push strict byte 0000ah                   ; 6a 0a
+    sal word [bp-00ah], 1                     ; d1 66 f6
+    rcl word [bp-008h], 1                     ; d1 56 f8
+    loop 07efah                               ; e2 f8
+    push dword [bp-00ah]                      ; 66 ff 76 f6
+    db  066h, 026h, 0ffh, 074h, 008h
+    ; push dword [es:si+008h]                   ; 66 26 ff 74 08
+    push strict byte 00010h                   ; 6a 10
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-012h]                         ; 8d 5e ee
-    call 0794eh                               ; e8 ec fd
+    lea bx, [bp-01ah]                         ; 8d 5e e6
+    call 07cadh                               ; e8 96 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07b7dh                          ; 75 15
+    jne short 07f32h                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
-    mov word [es:si+014h], di                 ; 26 89 7c 14
+    mov word [es:si+018h], di                 ; 26 89 7c 18
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    mov word [es:si+01ah], dx                 ; 26 89 54 1a
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    mov word [es:si+016h], dx                 ; 26 89 54 16
-    mov dx, word [bp-006h]                    ; 8b 56 fa
-    mov word [es:si+018h], dx                 ; 26 89 54 18
+    mov word [es:si+01ch], dx                 ; 26 89 54 1c
     movzx ax, ah                              ; 0f b6 c4
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11376,5 +11709,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf7b89 LB 0x166
+scsi_cmd_packet_:                            ; 0xf7f3e LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11388,20 +11721,20 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 c7 9a
+    call 0166ch                               ; e8 12 97
     mov si, 00122h                            ; be 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 07bd0h                          ; 75 1f
-    mov bx, 00da2h                            ; bb a2 0d
+    jne short 07f85h                          ; 75 1f
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 75 9d
-    push 00b6ah                               ; 68 6a 0b
-    push 00b7ah                               ; 68 7a 0b
+    call 01931h                               ; e8 c0 99
+    push 00b62h                               ; 68 62 0b
+    push 00b72h                               ; 68 72 0b
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 ab 9d
+    call 01972h                               ; e8 f6 99
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 07ce4h                           ; e9 14 01
+    jmp near 08099h                           ; e9 14 01
     sub di, strict byte 00008h                ; 83 ef 08
     sal di, 002h                              ; c1 e7 02
@@ -11409,6 +11742,6 @@
     mov es, [bp-00eh]                         ; 8e 46 f2
     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 bx, word [es:di+0021ch]               ; 26 8b 9d 1c 02
+    mov al, byte [es:di+0021eh]               ; 26 8a 85 1e 02
     mov byte [bp-008h], al                    ; 88 46 f8
     mov dx, bx                                ; 89 da
@@ -11417,5 +11750,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07bech                          ; 75 f7
+    jne short 07fa1h                          ; 75 f7
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+006h]                    ; 8b 56 06
@@ -11423,5 +11756,5 @@
     adc ax, word [bp+008h]                    ; 13 46 08
     mov es, [bp-00eh]                         ; 8e 46 f2
-    mov cx, word [es:si+01ch]                 ; 26 8b 4c 1c
+    mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     xor di, di                                ; 31 ff
     add cx, dx                                ; 01 d1
@@ -11433,5 +11766,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07c17h                               ; e2 fa
+    loop 07fcch                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
@@ -11451,5 +11784,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07c3eh                               ; e2 fa
+    loop 07ff3h                               ; e2 fa
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11457,5 +11790,5 @@
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 07c5fh                          ; 73 0e
+    jnc short 08014h                          ; 73 0e
     les di, [bp-00ch]                         ; c4 7e f4
     add di, cx                                ; 01 cf
@@ -11464,5 +11797,5 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07c49h                          ; eb ea
+    jmp short 07ffeh                          ; eb ea
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -11470,7 +11803,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07c5fh                          ; 75 f7
+    jne short 08014h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07c7ah                           ; 74 0e
+    je short 0802fh                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
@@ -11480,22 +11813,22 @@
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 07ce4h                          ; eb 6a
+    jmp short 08099h                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 07c89h                           ; 74 08
+    je short 0803eh                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 07c86h                               ; e2 fd
+    loop 0803bh                               ; e2 fd
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov es, [bp-00eh]                         ; 8e 46 f2
-    mov word [es:si+016h], ax                 ; 26 89 44 16
+    mov word [es:si+01ah], ax                 ; 26 89 44 1a
     mov ax, word [bp+008h]                    ; 8b 46 08
-    mov word [es:si+018h], ax                 ; 26 89 44 18
+    mov word [es:si+01ch], ax                 ; 26 89 44 1c
     lea ax, [bx+001h]                         ; 8d 47 01
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 07caah                          ; 75 07
+    jne short 0805fh                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 07cc7h                          ; 76 1d
+    jbe short 0807ch                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
@@ -11507,5 +11840,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 07c9ah                          ; eb d3
+    jmp short 0804fh                          ; eb d3
     mov dx, ax                                ; 89 c2
     mov cx, word [bp+006h]                    ; 8b 4e 06
@@ -11513,9 +11846,9 @@
     rep insb                                  ; f3 6c
     mov es, [bp-00eh]                         ; 8e 46 f2
-    cmp word [es:si+01ch], strict byte 00000h ; 26 83 7c 1c 00
-    je short 07ce2h                           ; 74 07
-    mov cx, word [es:si+01ch]                 ; 26 8b 4c 1c
+    cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00
+    je short 08097h                           ; 74 07
+    mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     in AL, DX                                 ; ec
-    loop 07cdfh                               ; e2 fd
+    loop 08094h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
@@ -11525,5 +11858,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf7cef LB 0x3e4
+scsi_enumerate_attached_devices_:            ; 0xf80a4 LB 0x482
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11533,106 +11866,107 @@
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, 0021eh                            ; 81 ec 1e 02
+    sub sp, 0023ch                            ; 81 ec 3c 02
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 67 99
-    mov si, 00122h                            ; be 22 01
-    mov word [bp-018h], ax                    ; 89 46 e8
-    mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
-    jmp near 08055h                           ; e9 42 03
+    call 0166ch                               ; e8 b2 95
+    mov di, 00122h                            ; bf 22 01
+    mov word [bp-02eh], ax                    ; 89 46 d2
+    mov word [bp-01eh], strict word 00000h    ; c7 46 e2 00 00
+    jmp near 084a8h                           ; e9 e0 03
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 080c9h                           ; 0f 83 b0 03
-    mov cx, strict word 0000ah                ; b9 0a 00
+    jnc near 0851ch                           ; 0f 83 4e 04
+    mov cx, strict word 00010h                ; b9 10 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
-    lea ax, [bp-028h]                         ; 8d 46 d8
-    call 097aah                               ; e8 84 1a
-    mov byte [bp-028h], 025h                  ; c6 46 d8 25
-    push dword 000000008h                     ; 66 6a 08
-    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
+    lea ax, [bp-046h]                         ; 8d 46 ba
+    call 09d6ah                               ; e8 8f 1c
+    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
+    mov byte [bp-045h], 010h                  ; c6 46 bb 10
+    mov byte [bp-039h], 020h                  ; c6 46 c7 20
+    push dword 000000020h                     ; 66 6a 20
+    lea dx, [bp-00246h]                       ; 8d 96 ba fd
     push SS                                   ; 16
     push dx                                   ; 52
-    push strict byte 0000ah                   ; 6a 0a
-    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
+    push strict byte 00010h                   ; 6a 10
+    movzx dx, byte [bp-01eh]                  ; 0f b6 56 e2
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-028h]                         ; 8d 5e d8
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
-    call 07885h                               ; e8 40 fb
+    lea bx, [bp-046h]                         ; 8d 5e ba
+    mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
+    call 07bd2h                               ; e8 d0 fa
     test al, al                               ; 84 c0
-    je short 07d57h                           ; 74 0e
-    push 00b9ah                               ; 68 9a 0b
-    push 00bd3h                               ; 68 d3 0b
+    je short 08114h                           ; 74 0e
+    push 00b92h                               ; 68 92 0b
+    push 00bcbh                               ; 68 cb 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 1e 9c
+    call 01972h                               ; e8 61 98
     add sp, strict byte 00006h                ; 83 c4 06
-    movzx ax, byte [bp-00227h]                ; 0f b6 86 d9 fd
-    movzx di, byte [bp-00228h]                ; 0f b6 be d8 fd
-    sal di, 008h                              ; c1 e7 08
+    mov ax, word [bp-00240h]                  ; 8b 86 c0 fd
+    mov bx, word [bp-00242h]                  ; 8b 9e be fd
+    mov cx, word [bp-00244h]                  ; 8b 8e bc fd
+    mov dx, word [bp-00246h]                  ; 8b 96 ba fd
+    xchg ah, al                               ; 86 c4
+    xchg bh, bl                               ; 86 df
+    xchg ch, cl                               ; 86 cd
+    xchg dh, dl                               ; 86 d6
+    xchg dx, ax                               ; 92
+    xchg bx, cx                               ; 87 cb
+    add dx, strict byte 00001h                ; 83 c2 01
+    mov word [bp-016h], dx                    ; 89 56 ea
+    adc cx, strict byte 00000h                ; 83 d1 00
+    mov word [bp-012h], cx                    ; 89 4e ee
+    adc bx, strict byte 00000h                ; 83 d3 00
+    mov word [bp-030h], bx                    ; 89 5e d0
+    adc ax, strict word 00000h                ; 15 00 00
+    mov word [bp-010h], ax                    ; 89 46 f0
+    movzx ax, byte [bp-0023eh]                ; 0f b6 86 c2 fd
+    sal ax, 008h                              ; c1 e0 08
+    movzx si, byte [bp-0023dh]                ; 0f b6 b6 c3 fd
     xor bx, bx                                ; 31 db
-    or di, ax                                 ; 09 c7
-    movzx ax, byte [bp-00226h]                ; 0f b6 86 da fd
+    or si, ax                                 ; 09 c6
+    movzx ax, byte [bp-0023ch]                ; 0f b6 86 c4 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 07d72h                               ; e2 fa
+    loop 08162h                               ; e2 fa
     or bx, ax                                 ; 09 c3
-    or di, dx                                 ; 09 d7
-    movzx ax, byte [bp-00225h]                ; 0f b6 86 db fd
+    or dx, si                                 ; 09 f2
+    movzx ax, byte [bp-0023bh]                ; 0f b6 86 c5 fd
     or bx, ax                                 ; 09 c3
-    mov word [bp-014h], bx                    ; 89 5e ec
-    add word [bp-014h], strict byte 00001h    ; 83 46 ec 01
-    adc di, strict byte 00000h                ; 83 d7 00
-    movzx ax, byte [bp-00224h]                ; 0f b6 86 dc fd
-    sal ax, 008h                              ; c1 e0 08
-    movzx dx, byte [bp-00223h]                ; 0f b6 96 dd fd
-    xor bx, bx                                ; 31 db
-    or ax, dx                                 ; 09 d0
-    mov word [bp-012h], ax                    ; 89 46 ee
-    movzx ax, byte [bp-00222h]                ; 0f b6 86 de fd
-    xor dx, dx                                ; 31 d2
-    mov cx, strict word 00008h                ; b9 08 00
-    sal ax, 1                                 ; d1 e0
-    rcl dx, 1                                 ; d1 d2
-    loop 07dabh                               ; e2 fa
-    or ax, bx                                 ; 09 d8
-    or dx, word [bp-012h]                     ; 0b 56 ee
-    movzx bx, byte [bp-00221h]                ; 0f b6 9e df fd
-    or ax, bx                                 ; 09 d8
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-024h], bx                    ; 89 5e dc
     test dx, dx                               ; 85 d2
-    jne short 07dc9h                          ; 75 05
-    cmp ax, 00200h                            ; 3d 00 02
-    je short 07de9h                           ; 74 20
-    mov bx, 00da2h                            ; bb a2 0d
+    jne short 08180h                          ; 75 06
+    cmp bx, 00200h                            ; 81 fb 00 02
+    je short 081a0h                           ; 74 20
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 5d 9b
+    call 01931h                               ; e8 a6 97
     push dx                                   ; 52
-    push word [bp-010h]                       ; ff 76 f0
-    push word [bp-00eh]                       ; ff 76 f2
-    push 00bf2h                               ; 68 f2 0b
+    push word [bp-024h]                       ; ff 76 dc
+    push word [bp-01eh]                       ; ff 76 e2
+    push 00beah                               ; 68 ea 0b
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 8f 9b
+    call 01972h                               ; e8 d8 97
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 0804ch                           ; e9 63 02
+    jmp near 0849fh                           ; e9 ff 02
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 07dfch                           ; 72 0c
-    jbe short 07e04h                          ; 76 12
+    jc short 081b3h                           ; 72 0c
+    jbe short 081bbh                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 07e0ch                           ; 74 16
+    je short 081c3h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 07e08h                           ; 74 0e
-    jmp short 07e5bh                          ; eb 5f
+    je short 081bfh                           ; 74 0e
+    jmp short 0820ch                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 07e5bh                          ; 75 5b
+    jne short 0820ch                          ; 75 55
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 07e0eh                          ; eb 0a
+    jmp short 081c5h                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 07e0eh                          ; eb 06
+    jmp short 081c5h                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 07e0eh                          ; eb 02
+    jmp short 081c5h                          ; eb 02
     mov BL, strict byte 0a8h                  ; b3 a8
     mov al, bl                                ; 88 d8
@@ -11640,135 +11974,190 @@
     movzx cx, al                              ; 0f b6 c8
     mov ax, cx                                ; 89 c8
-    call 016ach                               ; e8 92 98
+    call 016ach                               ; e8 db 94
     test al, al                               ; 84 c0
-    je short 07e5bh                           ; 74 3d
+    je short 0820ch                           ; 74 37
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 85 98
+    call 016ach                               ; e8 ce 94
+    movzx dx, al                              ; 0f b6 d0
+    sal dx, 008h                              ; c1 e2 08
+    movzx ax, bl                              ; 0f b6 c3
+    call 016ach                               ; e8 c2 94
     xor ah, ah                                ; 30 e4
-    sal ax, 008h                              ; c1 e0 08
-    mov word [bp-012h], ax                    ; 89 46 ee
-    movzx ax, bl                              ; 0f b6 c3
-    call 016ach                               ; e8 77 98
-    xor ah, ah                                ; 30 e4
-    add ax, word [bp-012h]                    ; 03 46 ee
+    add ax, dx                                ; 01 d0
     cwd                                       ; 99
-    mov word [bp-01eh], ax                    ; 89 46 e2
-    mov word [bp-016h], dx                    ; 89 56 ea
+    mov si, ax                                ; 89 c6
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 62 98
+    call 016ach                               ; e8 b2 94
     xor ah, ah                                ; 30 e4
-    mov word [bp-01ch], ax                    ; 89 46 e4
+    mov word [bp-034h], ax                    ; 89 46 cc
     mov ax, cx                                ; 89 c8
-    call 016ach                               ; e8 58 98
+    call 016ach                               ; e8 a8 94
     xor ah, ah                                ; 30 e4
-    mov word [bp-01ah], ax                    ; 89 46 e6
-    jmp short 07e9ch                          ; eb 41
-    cmp di, strict byte 00040h                ; 83 ff 40
-    jnbe short 07e62h                         ; 77 02
-    jne short 07e6ch                          ; 75 0a
-    mov dword [bp-01ch], strict dword 0003f00ffh ; 66 c7 46 e4 ff 00 3f 00
-    jmp short 07e85h                          ; eb 19
-    cmp di, strict byte 00020h                ; 83 ff 20
-    jnbe short 07e73h                         ; 77 02
-    jne short 07e7dh                          ; 75 0a
-    mov dword [bp-01ch], strict dword 000200080h ; 66 c7 46 e4 80 00 20 00
-    jmp short 07e85h                          ; eb 08
-    mov dword [bp-01ch], strict dword 000200040h ; 66 c7 46 e4 40 00 20 00
+    mov word [bp-032h], ax                    ; 89 46 ce
+    jmp near 082f5h                           ; e9 e9 00
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov bx, word [bp-030h]                    ; 8b 5e d0
+    mov cx, word [bp-012h]                    ; 8b 4e ee
+    mov dx, word [bp-016h]                    ; 8b 56 ea
+    mov si, strict word 0000ch                ; be 0c 00
+    call 09d5ah                               ; e8 3c 1b
+    mov word [bp-018h], ax                    ; 89 46 e8
+    mov word [bp-014h], bx                    ; 89 5e ec
+    mov word [bp-036h], cx                    ; 89 4e ca
+    mov word [bp-020h], dx                    ; 89 56 e0
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    test ax, ax                               ; 85 c0
+    jnbe short 08247h                         ; 77 16
+    jne near 082bah                           ; 0f 85 85 00
+    cmp word [bp-030h], strict byte 00000h    ; 83 7e d0 00
+    jnbe short 08247h                         ; 77 0c
+    jne near 082bah                           ; 0f 85 7b 00
+    cmp word [bp-012h], strict byte 00040h    ; 83 7e ee 40
+    jnbe short 08247h                         ; 77 02
+    jne short 082bah                          ; 75 73
+    mov dword [bp-034h], strict dword 0003f00ffh ; 66 c7 46 cc ff 00 3f 00
+    mov bx, word [bp-030h]                    ; 8b 5e d0
+    mov cx, word [bp-012h]                    ; 8b 4e ee
+    mov dx, word [bp-016h]                    ; 8b 56 ea
+    mov si, strict word 00006h                ; be 06 00
+    call 09d5ah                               ; e8 fc 1a
+    mov si, word [bp-020h]                    ; 8b 76 e0
+    add si, dx                                ; 01 d6
+    mov word [bp-02ah], si                    ; 89 76 d6
+    mov dx, word [bp-036h]                    ; 8b 56 ca
+    adc dx, cx                                ; 11 ca
+    mov word [bp-028h], dx                    ; 89 56 d8
+    mov dx, word [bp-014h]                    ; 8b 56 ec
+    adc dx, bx                                ; 11 da
+    mov word [bp-01ch], dx                    ; 89 56 e4
+    mov dx, word [bp-018h]                    ; 8b 56 e8
+    adc dx, ax                                ; 11 c2
+    mov word [bp-026h], dx                    ; 89 56 da
+    mov ax, dx                                ; 89 d0
     mov bx, word [bp-01ch]                    ; 8b 5e e4
-    imul bx, word [bp-01ah]                   ; 0f af 5e e6
-    mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov dx, di                                ; 89 fa
-    xor cx, cx                                ; 31 c9
-    call 09740h                               ; e8 aa 18
-    mov word [bp-01eh], ax                    ; 89 46 e2
-    mov word [bp-016h], dx                    ; 89 56 ea
-    mov dl, byte [bp-00ch]                    ; 8a 56 f4
-    add dl, 008h                              ; 80 c2 08
-    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
-    sal bx, 002h                              ; c1 e3 02
-    mov es, [bp-018h]                         ; 8e 46 e8
-    add bx, si                                ; 01 f3
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
-    mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    mov byte [es:bx+001dah], al               ; 26 88 87 da 01
-    movzx ax, dl                              ; 0f b6 c2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov bx, si                                ; 89 f3
+    mov cx, word [bp-028h]                    ; 8b 4e d8
+    mov dx, si                                ; 89 f2
+    mov si, strict word 00008h                ; be 08 00
+    call 09d5ah                               ; e8 cc 1a
+    mov word [bp-022h], bx                    ; 89 5e de
+    mov word [bp-02ch], cx                    ; 89 4e d4
+    mov word [bp-01ah], dx                    ; 89 56 e6
+    mov ax, word [bp-026h]                    ; 8b 46 da
+    mov bx, word [bp-01ch]                    ; 8b 5e e4
+    mov cx, word [bp-028h]                    ; 8b 4e d8
+    mov dx, word [bp-02ah]                    ; 8b 56 d6
+    mov si, strict word 00010h                ; be 10 00
+    call 09d5ah                               ; e8 b1 1a
+    mov si, word [bp-01ah]                    ; 8b 76 e6
+    add si, dx                                ; 01 d6
+    mov dx, word [bp-02ch]                    ; 8b 56 d4
+    adc dx, cx                                ; 11 ca
+    mov ax, word [bp-022h]                    ; 8b 46 de
+    adc ax, bx                                ; 11 d8
+    jmp short 082f5h                          ; eb 3b
+    test ax, ax                               ; 85 c0
+    jnbe short 082d0h                         ; 77 12
+    jne short 082dah                          ; 75 1a
+    cmp word [bp-030h], strict byte 00000h    ; 83 7e d0 00
+    jnbe short 082d0h                         ; 77 0a
+    jne short 082dah                          ; 75 12
+    cmp word [bp-012h], strict byte 00020h    ; 83 7e ee 20
+    jnbe short 082d0h                         ; 77 02
+    jne short 082dah                          ; 75 0a
+    mov dword [bp-034h], strict dword 000200080h ; 66 c7 46 cc 80 00 20 00
+    jmp short 082f1h                          ; eb 17
+    mov dword [bp-034h], strict dword 000200040h ; 66 c7 46 cc 40 00 20 00
+    mov bx, word [bp-030h]                    ; 8b 5e d0
+    mov cx, word [bp-012h]                    ; 8b 4e ee
+    mov dx, word [bp-016h]                    ; 8b 56 ea
+    mov si, strict word 0000bh                ; be 0b 00
+    call 09d5ah                               ; e8 69 1a
+    mov si, dx                                ; 89 d6
+    mov dx, cx                                ; 89 ca
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    add AL, strict byte 008h                  ; 04 08
+    mov byte [bp-00eh], al                    ; 88 46 f2
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    sal ax, 002h                              ; c1 e0 02
+    mov es, [bp-02eh]                         ; 8e 46 d2
+    mov bx, di                                ; 89 fb
     add bx, ax                                ; 01 c3
-    db  066h, 026h, 0c7h, 047h, 01eh, 004h, 0ffh, 000h, 000h
-    ; mov dword [es:bx+01eh], strict dword 00000ff04h ; 66 26 c7 47 1e 04 ff 00 00
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov word [es:bx+024h], ax                 ; 26 89 47 24
-    mov byte [es:bx+023h], 001h               ; 26 c6 47 23 01
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:bx+026h], ax                 ; 26 89 47 26
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
+    mov word [es:bx+0021ch], ax               ; 26 89 87 1c 02
+    mov al, byte [bp-01eh]                    ; 8a 46 e2
+    mov byte [es:bx+0021eh], al               ; 26 88 87 1e 02
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov bx, di                                ; 89 fb
+    add bx, ax                                ; 01 c3
+    db  066h, 026h, 0c7h, 047h, 022h, 004h, 0ffh, 000h, 000h
+    ; mov dword [es:bx+022h], strict dword 00000ff04h ; 66 26 c7 47 22 04 ff 00 00
+    mov ax, word [bp-024h]                    ; 8b 46 dc
+    mov word [es:bx+028h], ax                 ; 26 89 47 28
+    mov byte [es:bx+027h], 001h               ; 26 c6 47 27 01
+    mov ax, word [bp-034h]                    ; 8b 46 cc
     mov word [es:bx+02ah], ax                 ; 26 89 47 2a
-    cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
-    jne short 07ef9h                          ; 75 07
-    cmp word [bp-01eh], 00400h                ; 81 7e e2 00 04
-    jbe short 07f01h                          ; 76 08
-    mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
-    jmp short 07f08h                          ; eb 07
-    mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [es:bx+028h], ax                 ; 26 89 47 28
-    mov bx, 00da2h                            ; bb a2 0d
+    mov ax, word [bp-032h]                    ; 8b 46 ce
+    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
+    mov ax, word [bp-034h]                    ; 8b 46 cc
+    mov word [es:bx+030h], ax                 ; 26 89 47 30
+    mov ax, word [bp-032h]                    ; 8b 46 ce
+    mov word [es:bx+034h], ax                 ; 26 89 47 34
+    test dx, dx                               ; 85 d2
+    jne short 08362h                          ; 75 06
+    cmp si, 00400h                            ; 81 fe 00 04
+    jbe short 08370h                          ; 76 0e
+    mov word [es:bx+02ch], 00400h             ; 26 c7 47 2c 00 04
+    mov word [es:bx+032h], 00400h             ; 26 c7 47 32 00 04
+    jmp short 08378h                          ; eb 08
+    mov word [es:bx+02ch], si                 ; 26 89 77 2c
+    mov word [es:bx+032h], si                 ; 26 89 77 32
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 1e 9a
-    push di                                   ; 57
-    push word [bp-014h]                       ; ff 76 ec
-    push dword [bp-01ch]                      ; 66 ff 76 e4
+    call 01931h                               ; e8 ae 95
+    push word [bp-010h]                       ; ff 76 f0
+    push word [bp-030h]                       ; ff 76 d0
+    push word [bp-012h]                       ; ff 76 ee
+    push word [bp-016h]                       ; ff 76 ea
+    push dword [bp-034h]                      ; 66 ff 76 cc
+    push dx                                   ; 52
+    push si                                   ; 56
     push word [bp-01eh]                       ; ff 76 e2
-    push word [bp-00eh]                       ; ff 76 f2
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
-    push 00c20h                               ; 68 20 0c
+    push 00c18h                               ; 68 18 0c
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 44 9a
-    add sp, strict byte 00012h                ; 83 c4 12
-    movzx ax, dl                              ; 0f b6 c2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-018h]                         ; 8e 46 e8
-    mov bx, si                                ; 89 f3
-    add bx, ax                                ; 01 c3
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:bx+02ch], ax                 ; 26 89 47 2c
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov word [es:bx+030h], ax                 ; 26 89 47 30
-    cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
-    jne short 07f59h                          ; 75 07
-    cmp word [bp-01eh], 00400h                ; 81 7e e2 00 04
-    jbe short 07f61h                          ; 76 08
-    mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
-    jmp short 07f68h                          ; eb 07
-    mov ax, word [bp-01eh]                    ; 8b 46 e2
-    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
-    movzx ax, dl                              ; 0f b6 c2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-018h]                         ; 8e 46 e8
-    mov bx, si                                ; 89 f3
-    add bx, ax                                ; 01 c3
-    mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov word [es:bx+032h], ax                 ; 26 89 47 32
-    mov word [es:bx+034h], di                 ; 26 89 7f 34
-    mov al, byte [es:si+0019eh]               ; 26 8a 84 9e 01
+    call 01972h                               ; e8 cd 95
+    add sp, strict byte 00018h                ; 83 c4 18
+    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
+    imul bx, bx, strict byte 0001ch           ; 6b db 1c
+    mov es, [bp-02eh]                         ; 8e 46 d2
+    add bx, di                                ; 01 fb
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov word [es:bx+03ch], ax                 ; 26 89 47 3c
+    mov ax, word [bp-030h]                    ; 8b 46 d0
+    mov word [es:bx+03ah], ax                 ; 26 89 47 3a
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov word [es:bx+038h], ax                 ; 26 89 47 38
+    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov word [es:bx+036h], ax                 ; 26 89 47 36
+    mov al, byte [es:di+001e2h]               ; 26 8a 85 e2 01
     mov ah, byte [bp-00ch]                    ; 8a 66 f4
     add ah, 008h                              ; 80 c4 08
     movzx bx, al                              ; 0f b6 d8
-    add bx, si                                ; 01 f3
-    mov byte [es:bx+0019fh], ah               ; 26 88 a7 9f 01
+    add bx, di                                ; 01 fb
+    mov byte [es:bx+001e3h], ah               ; 26 88 a7 e3 01
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    mov byte [es:si+0019eh], al               ; 26 88 84 9e 01
+    mov byte [es:di+001e2h], al               ; 26 88 85 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 ab 96
+    call 01650h                               ; e8 5b 92
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -11776,95 +12165,96 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 ab 96
+    call 0165eh                               ; e8 5b 92
     inc byte [bp-00ch]                        ; fe 46 f4
-    jmp near 08041h                           ; e9 88 00
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp near 08494h                           ; e9 8b 00
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 6d 99
-    push word [bp-00eh]                       ; ff 76 f2
+    call 01931h                               ; e8 1d 95
+    push word [bp-01eh]                       ; ff 76 e2
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
-    push 00c4ah                               ; 68 4a 0c
+    push 00c46h                               ; 68 46 0c
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 9e 99
+    call 01972h                               ; e8 4e 95
     add sp, strict byte 00008h                ; 83 c4 08
-    mov dl, byte [bp-00ch]                    ; 8a 56 f4
-    add dl, 008h                              ; 80 c2 08
-    test byte [bp-00227h], 080h               ; f6 86 d9 fd 80
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    add AL, strict byte 008h                  ; 04 08
+    mov byte [bp-00eh], al                    ; 88 46 f2
+    test byte [bp-00245h], 080h               ; f6 86 bb fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov cx, ax                                ; 89 c1
+    mov dx, ax                                ; 89 c2
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     sal ax, 002h                              ; c1 e0 02
-    mov es, [bp-018h]                         ; 8e 46 e8
-    mov bx, si                                ; 89 f3
+    mov es, [bp-02eh]                         ; 8e 46 d2
+    mov bx, di                                ; 89 fb
     add bx, ax                                ; 01 c3
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
-    mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    mov byte [es:bx+001dah], al               ; 26 88 87 da 01
-    movzx ax, dl                              ; 0f b6 c2
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov bx, si                                ; 89 f3
+    mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
+    mov word [es:bx+0021ch], ax               ; 26 89 87 1c 02
+    mov al, byte [bp-01eh]                    ; 8a 46 e2
+    mov byte [es:bx+0021eh], al               ; 26 88 87 1e 02
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    mov bx, di                                ; 89 fb
     add bx, ax                                ; 01 c3
-    mov word [es:bx+01eh], 00504h             ; 26 c7 47 1e 04 05
-    mov byte [es:bx+020h], cl                 ; 26 88 4f 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 word [es:bx+022h], 00504h             ; 26 c7 47 22 04 05
+    mov byte [es:bx+024h], dl                 ; 26 88 57 24
+    mov word [es:bx+028h], 00800h             ; 26 c7 47 28 00 08
+    mov al, byte [es:di+001f3h]               ; 26 8a 85 f3 01
     mov ah, byte [bp-00ch]                    ; 8a 66 f4
     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
+    add bx, di                                ; 01 fb
+    mov byte [es:bx+001f4h], ah               ; 26 88 a7 f4 01
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    mov byte [es:si+001afh], al               ; 26 88 84 af 01
+    mov byte [es:di+001f3h], al               ; 26 88 85 f3 01
     inc byte [bp-00ch]                        ; fe 46 f4
     mov al, byte [bp-00ch]                    ; 8a 46 f4
-    mov es, [bp-018h]                         ; 8e 46 e8
-    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
-    inc word [bp-00eh]                        ; ff 46 f2
-    cmp word [bp-00eh], strict byte 00010h    ; 83 7e f2 10
-    jnl short 080c9h                          ; 7d 74
-    mov byte [bp-028h], 012h                  ; c6 46 d8 12
+    mov es, [bp-02eh]                         ; 8e 46 d2
+    mov byte [es:di+0022ch], al               ; 26 88 85 2c 02
+    inc word [bp-01eh]                        ; ff 46 e2
+    cmp word [bp-01eh], strict byte 00010h    ; 83 7e e2 10
+    jnl short 0851ch                          ; 7d 74
+    mov byte [bp-046h], 012h                  ; c6 46 ba 12
     xor al, al                                ; 30 c0
-    mov byte [bp-027h], al                    ; 88 46 d9
-    mov byte [bp-026h], al                    ; 88 46 da
-    mov byte [bp-025h], al                    ; 88 46 db
-    mov byte [bp-024h], 005h                  ; c6 46 dc 05
-    mov byte [bp-023h], al                    ; 88 46 dd
+    mov byte [bp-045h], al                    ; 88 46 bb
+    mov byte [bp-044h], al                    ; 88 46 bc
+    mov byte [bp-043h], al                    ; 88 46 bd
+    mov byte [bp-042h], 005h                  ; c6 46 be 05
+    mov byte [bp-041h], al                    ; 88 46 bf
     push dword 000000005h                     ; 66 6a 05
-    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
+    lea dx, [bp-00246h]                       ; 8d 96 ba fd
     push SS                                   ; 16
     push dx                                   ; 52
     push strict byte 00006h                   ; 6a 06
-    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
+    movzx dx, byte [bp-01eh]                  ; 0f b6 56 e2
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-028h]                         ; 8d 5e d8
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
-    call 07885h                               ; e8 ff f7
+    lea bx, [bp-046h]                         ; 8d 5e ba
+    mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
+    call 07bd2h                               ; e8 f9 f6
     test al, al                               ; 84 c0
-    je short 08098h                           ; 74 0e
-    push 00b9ah                               ; 68 9a 0b
-    push 00bbah                               ; 68 ba 0b
+    je short 084ebh                           ; 74 0e
+    push 00b92h                               ; 68 92 0b
+    push 00bb2h                               ; 68 b2 0b
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 dd 98
+    call 01972h                               ; e8 8a 94
     add sp, strict byte 00006h                ; 83 c4 06
-    mov es, [bp-018h]                         ; 8e 46 e8
-    mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
+    mov es, [bp-02eh]                         ; 8e 46 d2
+    mov al, byte [es:di+0022ch]               ; 26 8a 85 2c 02
     mov byte [bp-00ch], al                    ; 88 46 f4
-    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
-    jne short 080b3h                          ; 75 09
-    test byte [bp-00228h], 01fh               ; f6 86 d8 fd 1f
-    je near 07d13h                            ; 0f 84 60 fc
-    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
-    jne short 08041h                          ; 75 87
-    mov al, byte [bp-00228h]                  ; 8a 86 d8 fd
+    test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
+    jne short 08506h                          ; 75 09
+    test byte [bp-00246h], 01fh               ; f6 86 ba fd 1f
+    je near 080c8h                            ; 0f 84 c2 fb
+    test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
+    jne short 08494h                          ; 75 87
+    mov al, byte [bp-00246h]                  ; 8a 86 ba fd
     and AL, strict byte 01fh                  ; 24 1f
     cmp AL, strict byte 005h                  ; 3c 05
-    je near 07fb9h                            ; 0f 84 f3 fe
-    jmp near 08041h                           ; e9 78 ff
+    je near 08409h                            ; 0f 84 f0 fe
+    jmp near 08494h                           ; e9 78 ff
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -11875,13 +12265,13 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf80d3 LB 0x66
+_scsi_init:                                  ; 0xf8526 LB 0x66
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 8d 95
+    call 0166ch                               ; e8 3a 91
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
-    mov byte [es:bx+001e8h], 000h             ; 26 c6 87 e8 01 00
+    mov byte [es:bx+0022ch], 000h             ; 26 c6 87 2c 02 00
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00432h                            ; ba 32 04
@@ -11891,10 +12281,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08103h                          ; 75 0c
+    jne short 08556h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 07cefh                               ; e8 ec fb
+    call 080a4h                               ; e8 4e fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
@@ -11904,10 +12294,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 0811ch                          ; 75 0c
+    jne short 0856fh                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 07cefh                               ; e8 d3 fb
+    call 080a4h                               ; e8 35 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
@@ -11917,47 +12307,401 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08135h                          ; 75 0c
+    jne short 08588h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 07cefh                               ; e8 ba fb
+    call 080a4h                               ; e8 1c fb
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-high_bits_save_:                             ; 0xf8139 LB 0x17
+ahci_ctrl_extract_bits_:                     ; 0xf858c LB 0x1b
+    push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
+    mov si, bx                                ; 89 de
+    and ax, bx                                ; 21 d8
+    and dx, cx                                ; 21 ca
+    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
+    jcxz 085a2h                               ; e3 06
+    shr dx, 1                                 ; d1 ea
+    rcr ax, 1                                 ; d1 d8
+    loop 0859ch                               ; e2 fa
+    pop bp                                    ; 5d
+    pop si                                    ; 5e
+    retn 00002h                               ; c2 02 00
+ahci_addr_to_phys_:                          ; 0xf85a7 LB 0x1e
     push bx                                   ; 53
-    mov bx, ax                                ; 89 c3
-    shr eax, 010h                             ; 66 c1 e8 10
-    mov es, dx                                ; 8e c2
-    mov word [es:bx+00268h], ax               ; 26 89 87 68 02
-    lea sp, [bp-002h]                         ; 8d 66 fe
-    pop bx                                    ; 5b
-    pop bp                                    ; 5d
-    retn                                      ; c3
-high_bits_restore_:                          ; 0xf8150 LB 0x17
+    push cx                                   ; 51
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    push bx                                   ; 53
     mov bx, ax                                ; 89 c3
-    mov es, dx                                ; 8e c2
-    mov ax, word [es:bx+00268h]               ; 26 8b 87 68 02
-    sal eax, 010h                             ; 66 c1 e0 10
-    lea sp, [bp-002h]                         ; 8d 66 fe
+    mov ax, dx                                ; 89 d0
+    xor dx, dx                                ; 31 d2
+    mov cx, strict word 00004h                ; b9 04 00
+    sal ax, 1                                 ; d1 e0
+    rcl dx, 1                                 ; d1 d2
+    loop 085b5h                               ; e2 fa
+    xor cx, cx                                ; 31 c9
+    add ax, bx                                ; 01 d8
+    adc dx, cx                                ; 11 ca
+    pop bp                                    ; 5d
+    pop cx                                    ; 59
     pop bx                                    ; 5b
-    pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_set_bits_:                         ; 0xf8167 LB 0x43
+ahci_port_cmd_sync_:                         ; 0xf85c5 LB 0x14b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
+    push cx                                   ; 51
     push si                                   ; 56
     push di                                   ; 57
     push ax                                   ; 50
     mov si, ax                                ; 89 c6
-    mov ax, dx                                ; 89 d0
-    mov word [bp-006h], bx                    ; 89 5e fa
-    mov di, cx                                ; 89 cf
+    mov cx, dx                                ; 89 d1
+    mov al, bl                                ; 88 d8
+    mov es, dx                                ; 8e c2
+    mov ah, byte [es:si+00262h]               ; 26 8a a4 62 02
+    mov byte [bp-008h], ah                    ; 88 66 f8
+    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
+    cmp ah, 0ffh                              ; 80 fc ff
+    je near 08708h                            ; 0f 84 20 01
+    movzx dx, byte [es:si+00263h]             ; 26 0f b6 94 63 02
+    xor di, di                                ; 31 ff
+    or di, 00080h                             ; 81 cf 80 00
+    xor ah, ah                                ; 30 e4
+    or di, ax                                 ; 09 c7
+    mov word [es:si], di                      ; 26 89 3c
+    mov word [es:si+002h], dx                 ; 26 89 54 02
+    db  066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h
+    ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00
+    lea ax, [si+00080h]                       ; 8d 84 80 00
+    mov dx, cx                                ; 89 ca
+    call 085a7h                               ; e8 96 ff
+    mov es, cx                                ; 8e c1
+    mov word [es:si+008h], ax                 ; 26 89 44 08
+    mov word [es:si+00ah], dx                 ; 26 89 54 0a
+    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
+    sal di, 007h                              ; c1 e7 07
+    lea ax, [di+00118h]                       ; 8d 85 18 01
+    xor cx, cx                                ; 31 c9
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea si, [bx+004h]                         ; 8d 77 04
+    mov dx, si                                ; 89 f2
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    or AL, strict byte 011h                   ; 0c 11
+    mov cx, dx                                ; 89 d1
+    mov dx, si                                ; 89 f2
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea ax, [di+00138h]                       ; 8d 85 38 01
+    cwd                                       ; 99
+    mov cx, dx                                ; 89 d1
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    mov ax, strict word 00001h                ; b8 01 00
+    xor cx, cx                                ; 31 c9
+    mov dx, si                                ; 89 f2
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    sal ax, 007h                              ; c1 e0 07
+    add ax, 00110h                            ; 05 10 01
+    xor cx, cx                                ; 31 c9
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea dx, [bx+004h]                         ; 8d 57 04
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    test dh, 040h                             ; f6 c6 40
+    jne short 0869eh                          ; 75 04
+    test AL, strict byte 001h                 ; a8 01
+    je short 086a2h                           ; 74 04
+    mov AL, strict byte 001h                  ; b0 01
+    jmp short 086a4h                          ; eb 02
+    xor al, al                                ; 30 c0
+    test al, al                               ; 84 c0
+    je short 08672h                           ; 74 ca
+    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
+    sal di, 007h                              ; c1 e7 07
+    lea ax, [di+00110h]                       ; 8d 85 10 01
+    xor cx, cx                                ; 31 c9
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea si, [bx+004h]                         ; 8d 77 04
+    mov dx, si                                ; 89 f2
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    or AL, strict byte 001h                   ; 0c 01
+    mov cx, dx                                ; 89 d1
+    mov dx, si                                ; 89 f2
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea ax, [di+00118h]                       ; 8d 85 18 01
+    xor cx, cx                                ; 31 c9
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    mov dx, si                                ; 89 f2
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    and AL, strict byte 0feh                  ; 24 fe
+    mov cx, dx                                ; 89 d1
+    mov dx, si                                ; 89 f2
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea sp, [bp-006h]                         ; 8d 66 fa
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    pop cx                                    ; 59
+    pop bp                                    ; 5d
+    retn                                      ; c3
+ahci_cmd_data_:                              ; 0xf8710 LB 0x262
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    push cx                                   ; 51
+    push si                                   ; 56
+    push di                                   ; 57
+    sub sp, strict byte 0000ch                ; 83 ec 0c
+    push ax                                   ; 50
+    push dx                                   ; 52
+    mov byte [bp-008h], bl                    ; 88 5e f8
+    xor di, di                                ; 31 ff
+    mov es, dx                                ; 8e c2
+    mov bx, ax                                ; 89 c3
+    mov ax, word [es:bx+00232h]               ; 26 8b 87 32 02
+    mov word [bp-00ah], ax                    ; 89 46 f6
+    mov word [bp-00eh], di                    ; 89 7e f2
+    mov word [bp-00ch], ax                    ; 89 46 f4
+    mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
+    mov word [bp-012h], ax                    ; 89 46 ee
+    mov ax, word [es:bx+010h]                 ; 26 8b 47 10
+    mov word [bp-010h], ax                    ; 89 46 f0
+    mov cx, strict word 00040h                ; b9 40 00
+    xor bx, bx                                ; 31 db
+    mov ax, 00080h                            ; b8 80 00
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    call 09d6ah                               ; e8 1c 16
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
+    mov al, byte [bp-008h]                    ; 8a 46 f8
+    mov byte [es:di+00082h], al               ; 26 88 85 82 00
+    mov byte [es:di+00083h], 000h             ; 26 c6 85 83 00 00
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov ax, word [es:bx]                      ; 26 8b 07
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:di+00084h], al               ; 26 88 85 84 00
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-014h]                    ; 8b 76 ec
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00008h                ; be 08 00
+    call 09d5ah                               ; e8 c8 15
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-014h]                    ; 8b 76 ec
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00010h                ; be 10 00
+    call 09d5ah                               ; e8 a2 15
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
+    mov byte [es:di+00087h], 040h             ; 26 c6 85 87 00 40
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-014h]                    ; 8b 76 ec
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00018h                ; be 18 00
+    call 09d5ah                               ; e8 76 15
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-014h]                    ; 8b 76 ec
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00020h                ; be 20 00
+    call 09d5ah                               ; e8 50 15
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
+    mov bx, word [es:bx+004h]                 ; 26 8b 5f 04
+    mov si, word [bp-014h]                    ; 8b 76 ec
+    mov cx, word [es:si+002h]                 ; 26 8b 4c 02
+    mov dx, word [es:si]                      ; 26 8b 14
+    mov si, strict word 00028h                ; be 28 00
+    call 09d5ah                               ; e8 2a 15
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
+    mov byte [es:di+0008bh], 000h             ; 26 c6 85 8b 00 00
+    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov byte [es:di+0008ch], al               ; 26 88 85 8c 00
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    shr ax, 008h                              ; c1 e8 08
+    mov byte [es:di+0008dh], al               ; 26 88 85 8d 00
+    mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    xor dx, dx                                ; 31 d2
+    mov bx, word [bp-010h]                    ; 8b 5e f0
+    xor cx, cx                                ; 31 c9
+    call 09d19h                               ; e8 b4 14
+    push dx                                   ; 52
+    push ax                                   ; 50
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    mov bx, word [es:bx+008h]                 ; 26 8b 5f 08
+    mov si, word [bp-014h]                    ; 8b 76 ec
+    mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
+    mov ax, 0026ah                            ; b8 6a 02
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    call 09c33h                               ; e8 b2 13
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov ax, word [es:di+0027eh]               ; 26 8b 85 7e 02
+    add ax, strict word 0ffffh                ; 05 ff ff
+    mov dx, word [es:di+00280h]               ; 26 8b 95 80 02
+    adc dx, strict byte 0ffffh                ; 83 d2 ff
+    movzx bx, byte [es:di+00263h]             ; 26 0f b6 9d 63 02
+    sal bx, 004h                              ; c1 e3 04
+    mov word [es:bx+0010ch], ax               ; 26 89 87 0c 01
+    mov word [es:bx+0010eh], dx               ; 26 89 97 0e 01
+    movzx bx, byte [es:di+00263h]             ; 26 0f b6 9d 63 02
+    sal bx, 004h                              ; c1 e3 04
+    mov ax, word [es:di+0027ah]               ; 26 8b 85 7a 02
+    mov dx, word [es:di+0027ch]               ; 26 8b 95 7c 02
+    mov word [es:bx+00100h], ax               ; 26 89 87 00 01
+    mov word [es:bx+00102h], dx               ; 26 89 97 02 01
+    inc byte [es:di+00263h]                   ; 26 fe 85 63 02
+    mov es, [bp-016h]                         ; 8e 46 ea
+    mov bx, si                                ; 89 f3
+    mov ax, word [es:bx+020h]                 ; 26 8b 47 20
+    test ax, ax                               ; 85 c0
+    je short 0890fh                           ; 74 39
+    dec ax                                    ; 48
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    movzx bx, byte [es:di+00263h]             ; 26 0f b6 9d 63 02
+    sal bx, 004h                              ; c1 e3 04
+    mov word [es:bx+0010ch], ax               ; 26 89 87 0c 01
+    mov word [es:bx+0010eh], di               ; 26 89 bf 0e 01
+    movzx bx, byte [es:di+00263h]             ; 26 0f b6 9d 63 02
+    sal bx, 004h                              ; c1 e3 04
+    mov dx, word [es:di+00264h]               ; 26 8b 95 64 02
+    mov ax, word [es:di+00266h]               ; 26 8b 85 66 02
+    mov word [es:bx+00100h], dx               ; 26 89 97 00 01
+    mov word [es:bx+00102h], ax               ; 26 89 87 02 01
+    inc byte [es:di+00263h]                   ; 26 fe 85 63 02
+    mov al, byte [bp-008h]                    ; 8a 46 f8
+    cmp AL, strict byte 035h                  ; 3c 35
+    jne short 0891ch                          ; 75 06
+    mov byte [bp-008h], 040h                  ; c6 46 f8 40
+    jmp short 08933h                          ; eb 17
+    cmp AL, strict byte 0a0h                  ; 3c a0
+    jne short 0892fh                          ; 75 0f
+    or byte [bp-008h], 020h                   ; 80 4e f8 20
+    les bx, [bp-00eh]                         ; c4 5e f2
+    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
+    jmp short 08933h                          ; eb 04
+    mov byte [bp-008h], 000h                  ; c6 46 f8 00
+    or byte [bp-008h], 005h                   ; 80 4e f8 05
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    call 085c5h                               ; e8 81 fc
+    mov cx, word [bp-00ch]                    ; 8b 4e f4
+    mov bx, word [bp-00eh]                    ; 8b 5e f2
+    add bx, 00240h                            ; 81 c3 40 02
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    add ax, 0026ah                            ; 05 6a 02
+    mov dx, cx                                ; 89 ca
+    call 09cach                               ; e8 53 13
+    mov es, cx                                ; 8e c1
+    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
+    test al, al                               ; 84 c0
+    je short 08968h                           ; 74 05
+    mov ax, strict word 00004h                ; b8 04 00
+    jmp short 0896ah                          ; eb 02
+    xor ah, ah                                ; 30 e4
+    lea sp, [bp-006h]                         ; 8d 66 fa
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    pop cx                                    ; 59
+    pop bp                                    ; 5d
+    retn                                      ; c3
+ahci_port_deinit_current_:                   ; 0xf8972 LB 0x17f
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    push bx                                   ; 53
+    push cx                                   ; 51
+    push si                                   ; 56
+    push di                                   ; 57
+    sub sp, strict byte 00006h                ; 83 ec 06
+    mov di, ax                                ; 89 c7
+    mov word [bp-00ch], dx                    ; 89 56 f4
+    mov es, dx                                ; 8e c2
+    mov si, word [es:di+00260h]               ; 26 8b b5 60 02
+    mov al, byte [es:di+00262h]               ; 26 8a 85 62 02
+    mov byte [bp-00ah], al                    ; 88 46 f6
+    cmp AL, strict byte 0ffh                  ; 3c ff
+    je near 08ae8h                            ; 0f 84 52 01
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    sal ax, 007h                              ; c1 e0 07
+    add ax, 00118h                            ; 05 18 01
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -11974,7 +12718,6 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    or ax, word [bp-006h]                     ; 0b 46 fa
+    and AL, strict byte 0eeh                  ; 24 ee
     mov cx, dx                                ; 89 d1
-    or cx, di                                 ; 09 f9
     mov dx, bx                                ; 89 da
     xchg cx, ax                               ; 91
@@ -11983,57 +12726,7 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    lea sp, [bp-004h]                         ; 8d 66 fc
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    pop bp                                    ; 5d
-    retn                                      ; c3
-ahci_ctrl_clear_bits_:                       ; 0xf81aa LB 0x47
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    push si                                   ; 56
-    push di                                   ; 57
-    push ax                                   ; 50
-    mov si, ax                                ; 89 c6
-    mov ax, dx                                ; 89 d0
-    mov di, bx                                ; 89 df
-    mov word [bp-006h], cx                    ; 89 4e fa
-    xor cx, cx                                ; 31 c9
-    mov dx, si                                ; 89 f2
-    xchg cx, ax                               ; 91
-    sal eax, 010h                             ; 66 c1 e0 10
-    db  08bh, 0c1h
-    ; mov ax, cx                                ; 8b c1
-    out DX, eax                               ; 66 ef
-    lea bx, [si+004h]                         ; 8d 5c 04
-    mov dx, bx                                ; 89 da
-    in eax, DX                                ; 66 ed
-    db  08bh, 0d0h
-    ; mov dx, ax                                ; 8b d0
-    shr eax, 010h                             ; 66 c1 e8 10
-    xchg dx, ax                               ; 92
-    not di                                    ; f7 d7
-    mov cx, word [bp-006h]                    ; 8b 4e fa
-    not cx                                    ; f7 d1
-    and ax, di                                ; 21 f8
-    and cx, dx                                ; 21 d1
-    mov dx, bx                                ; 89 da
-    xchg cx, ax                               ; 91
-    sal eax, 010h                             ; 66 c1 e0 10
-    db  08bh, 0c1h
-    ; mov ax, cx                                ; 8b c1
-    out DX, eax                               ; 66 ef
-    lea sp, [bp-004h]                         ; 8d 66 fc
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    pop bp                                    ; 5d
-    retn                                      ; c3
-ahci_ctrl_is_bit_set_:                       ; 0xf81f1 LB 0x39
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    push si                                   ; 56
-    push di                                   ; 57
-    mov si, ax                                ; 89 c6
-    mov ax, dx                                ; 89 d0
-    mov di, cx                                ; 89 cf
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    sal ax, 007h                              ; c1 e0 07
+    add ax, 00118h                            ; 05 18 01
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -12049,334 +12742,29 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    test dx, di                               ; 85 fa
-    jne short 0821dh                          ; 75 04
-    test ax, bx                               ; 85 d8
-    je short 08221h                           ; 74 04
+    test ax, 0c011h                           ; a9 11 c0
+    je short 089f6h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08223h                          ; eb 02
+    jmp short 089f8h                          ; eb 02
     xor al, al                                ; 30 c0
-    lea sp, [bp-004h]                         ; 8d 66 fc
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    pop bp                                    ; 5d
-    retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf822a LB 0x1b
-    push si                                   ; 56
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    mov si, bx                                ; 89 de
-    and ax, bx                                ; 21 d8
-    and dx, cx                                ; 21 ca
-    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
-    jcxz 08240h                               ; e3 06
-    shr dx, 1                                 ; d1 ea
-    rcr ax, 1                                 ; d1 d8
-    loop 0823ah                               ; e2 fa
-    pop bp                                    ; 5d
-    pop si                                    ; 5e
-    retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf8245 LB 0x1e
-    push bx                                   ; 53
-    push cx                                   ; 51
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    mov bx, ax                                ; 89 c3
-    mov ax, dx                                ; 89 d0
-    xor dx, dx                                ; 31 d2
-    mov cx, strict word 00004h                ; b9 04 00
-    sal ax, 1                                 ; d1 e0
-    rcl dx, 1                                 ; d1 d2
-    loop 08253h                               ; e2 fa
-    xor cx, cx                                ; 31 c9
-    add ax, bx                                ; 01 d8
-    adc dx, cx                                ; 11 ca
-    pop bp                                    ; 5d
-    pop cx                                    ; 59
-    pop bx                                    ; 5b
-    retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf8263 LB 0xd5
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    push cx                                   ; 51
-    push si                                   ; 56
-    push di                                   ; 57
-    sub sp, strict byte 00006h                ; 83 ec 06
-    mov si, ax                                ; 89 c6
-    mov word [bp-00ah], dx                    ; 89 56 f6
-    mov es, dx                                ; 8e c2
-    mov al, byte [es:si+00262h]               ; 26 8a 84 62 02
-    mov byte [bp-008h], al                    ; 88 46 f8
-    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
-    cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 08330h                            ; 0f 84 aa 00
-    movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
-    xor dx, dx                                ; 31 d2
-    or dl, 080h                               ; 80 ca 80
-    movzx ax, bl                              ; 0f b6 c3
-    or dx, ax                                 ; 09 c2
-    mov word [es:si], dx                      ; 26 89 14
-    mov word [es:si+002h], cx                 ; 26 89 4c 02
-    db  066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h
-    ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00
-    lea ax, [si+00080h]                       ; 8d 84 80 00
-    mov dx, es                                ; 8c c2
-    call 08245h                               ; e8 96 ff
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov word [es:si+008h], ax                 ; 26 89 44 08
-    mov word [es:si+00ah], dx                 ; 26 89 54 0a
-    movzx si, byte [bp-008h]                  ; 0f b6 76 f8
-    sal si, 007h                              ; c1 e6 07
-    lea dx, [si+00118h]                       ; 8d 94 18 01
-    mov bx, strict word 00011h                ; bb 11 00
-    xor cx, cx                                ; 31 c9
-    mov ax, di                                ; 89 f8
-    call 08167h                               ; e8 98 fe
-    lea ax, [si+00138h]                       ; 8d 84 38 01
-    cwd                                       ; 99
-    mov cx, dx                                ; 89 d1
-    mov dx, di                                ; 89 fa
-    xchg cx, ax                               ; 91
-    sal eax, 010h                             ; 66 c1 e0 10
-    db  08bh, 0c1h
-    ; mov ax, cx                                ; 8b c1
-    out DX, eax                               ; 66 ef
-    lea dx, [di+004h]                         ; 8d 55 04
-    mov ax, strict word 00001h                ; b8 01 00
-    xor cx, cx                                ; 31 c9
-    xchg cx, ax                               ; 91
-    sal eax, 010h                             ; 66 c1 e0 10
-    db  08bh, 0c1h
-    ; mov ax, cx                                ; 8b c1
-    out DX, eax                               ; 66 ef
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    sal ax, 007h                              ; c1 e0 07
-    mov word [bp-00ch], ax                    ; 89 46 f4
-    mov si, ax                                ; 89 c6
-    add si, 00110h                            ; 81 c6 10 01
-    mov bx, strict word 00001h                ; bb 01 00
-    mov cx, 04000h                            ; b9 00 40
-    mov dx, si                                ; 89 f2
-    mov ax, di                                ; 89 f8
-    call 081f1h                               ; e8 e2 fe
-    test al, al                               ; 84 c0
-    je short 082f2h                           ; 74 df
-    mov bx, strict word 00001h                ; bb 01 00
-    xor cx, cx                                ; 31 c9
-    mov dx, si                                ; 89 f2
-    mov ax, di                                ; 89 f8
-    call 08167h                               ; e8 48 fe
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
-    add dx, 00118h                            ; 81 c2 18 01
-    mov bx, strict word 00001h                ; bb 01 00
-    xor cx, cx                                ; 31 c9
-    mov ax, di                                ; 89 f8
-    call 081aah                               ; e8 7a fe
-    lea sp, [bp-006h]                         ; 8d 66 fa
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    pop cx                                    ; 59
-    pop bp                                    ; 5d
-    retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf8338 LB 0x1e4
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    push cx                                   ; 51
-    push si                                   ; 56
-    push di                                   ; 57
-    sub sp, strict byte 00010h                ; 83 ec 10
-    mov di, ax                                ; 89 c7
-    mov word [bp-00ch], dx                    ; 89 56 f4
-    mov byte [bp-008h], bl                    ; 88 5e f8
-    xor si, si                                ; 31 f6
-    mov es, dx                                ; 8e c2
-    mov ax, word [es:di+001eeh]               ; 26 8b 85 ee 01
-    mov word [bp-00ah], ax                    ; 89 46 f6
-    mov word [bp-010h], si                    ; 89 76 f0
-    mov word [bp-00eh], ax                    ; 89 46 f2
-    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
-    mov word [bp-016h], ax                    ; 89 46 ea
-    mov ax, word [es:di+00ch]                 ; 26 8b 45 0c
-    mov word [bp-012h], ax                    ; 89 46 ee
-    mov cx, strict word 00040h                ; b9 40 00
-    xor bx, bx                                ; 31 db
-    mov ax, 00080h                            ; b8 80 00
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 097aah                               ; e8 33 14
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
-    mov al, byte [bp-008h]                    ; 8a 46 f8
-    mov byte [es:si+00082h], al               ; 26 88 84 82 00
-    mov byte [es:si+00083h], 000h             ; 26 c6 84 83 00 00
-    mov es, [bp-00ch]                         ; 8e 46 f4
-    mov al, byte [es:di]                      ; 26 8a 05
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov byte [es:si+00084h], al               ; 26 88 84 84 00
-    mov es, [bp-00ch]                         ; 8e 46 f4
-    mov ax, word [es:di]                      ; 26 8b 05
-    mov bx, word [es:di+002h]                 ; 26 8b 5d 02
-    mov cx, strict word 00008h                ; b9 08 00
-    shr bx, 1                                 ; d1 eb
-    rcr ax, 1                                 ; d1 d8
-    loop 083aah                               ; e2 fa
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov byte [es:si+00085h], al               ; 26 88 84 85 00
-    mov es, [bp-00ch]                         ; 8e 46 f4
-    mov ax, word [es:di+002h]                 ; 26 8b 45 02
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov byte [es:si+00086h], al               ; 26 88 84 86 00
-    mov byte [es:si+00087h], 040h             ; 26 c6 84 87 00 40
-    mov es, [bp-00ch]                         ; 8e 46 f4
-    mov ax, word [es:di+002h]                 ; 26 8b 45 02
-    shr ax, 008h                              ; c1 e8 08
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov byte [es:si+00088h], al               ; 26 88 84 88 00
-    mov word [es:si+00089h], strict word 00000h ; 26 c7 84 89 00 00 00
-    mov byte [es:si+0008bh], 000h             ; 26 c6 84 8b 00 00
-    mov al, byte [bp-016h]                    ; 8a 46 ea
-    mov byte [es:si+0008ch], al               ; 26 88 84 8c 00
-    mov ax, word [bp-016h]                    ; 8b 46 ea
-    shr ax, 008h                              ; c1 e8 08
-    mov byte [es:si+0008dh], al               ; 26 88 84 8d 00
-    mov word [es:si+00276h], strict word 00010h ; 26 c7 84 76 02 10 00
-    mov ax, word [bp-016h]                    ; 8b 46 ea
-    xor dx, dx                                ; 31 d2
-    mov bx, word [bp-012h]                    ; 8b 5e ee
-    xor cx, cx                                ; 31 c9
-    call 09779h                               ; e8 66 13
-    push dx                                   ; 52
-    push ax                                   ; 50
-    mov es, [bp-00ch]                         ; 8e 46 f4
-    mov bx, word [es:di+004h]                 ; 26 8b 5d 04
-    mov cx, word [es:di+006h]                 ; 26 8b 4d 06
-    mov ax, 0026ah                            ; b8 6a 02
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09688h                               ; e8 5f 12
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
-    mov dx, word [es:si+0027eh]               ; 26 8b 94 7e 02
-    add dx, strict byte 0ffffh                ; 83 c2 ff
-    mov bx, word [es:si+00280h]               ; 26 8b 9c 80 02
-    adc bx, strict byte 0ffffh                ; 83 d3 ff
-    mov word [bp-014h], bx                    ; 89 5e ec
-    mov bx, ax                                ; 89 c3
-    sal bx, 004h                              ; c1 e3 04
-    mov word [es:bx+0010ch], dx               ; 26 89 97 0c 01
-    mov dx, word [bp-014h]                    ; 8b 56 ec
-    mov word [es:bx+0010eh], dx               ; 26 89 97 0e 01
-    mov dx, word [es:si+0027ah]               ; 26 8b 94 7a 02
-    mov cx, word [es:si+0027ch]               ; 26 8b 8c 7c 02
-    mov word [es:bx+00100h], dx               ; 26 89 97 00 01
-    mov word [es:bx+00102h], cx               ; 26 89 8f 02 01
-    inc ax                                    ; 40
-    mov es, [bp-00ch]                         ; 8e 46 f4
-    cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
-    je short 084a2h                           ; 74 2c
-    mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
-    dec dx                                    ; 4a
-    mov bx, ax                                ; 89 c3
-    sal bx, 004h                              ; c1 e3 04
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov word [es:bx+0010ch], dx               ; 26 89 97 0c 01
-    mov word [es:bx+0010eh], si               ; 26 89 b7 0e 01
-    mov dx, word [es:si+00264h]               ; 26 8b 94 64 02
-    mov cx, word [es:si+00266h]               ; 26 8b 8c 66 02
-    mov word [es:bx+00100h], dx               ; 26 89 97 00 01
-    mov word [es:bx+00102h], cx               ; 26 89 8f 02 01
-    inc ax                                    ; 40
-    les bx, [bp-010h]                         ; c4 5e f0
-    mov byte [es:bx+00263h], al               ; 26 88 87 63 02
-    xor ax, ax                                ; 31 c0
-    les bx, [bp-010h]                         ; c4 5e f0
-    movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
-    cmp ax, dx                                ; 39 d0
-    jnc short 084bch                          ; 73 03
-    inc ax                                    ; 40
-    jmp short 084ach                          ; eb f0
-    mov al, byte [bp-008h]                    ; 8a 46 f8
-    cmp AL, strict byte 035h                  ; 3c 35
-    jne short 084c9h                          ; 75 06
-    mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 084ddh                          ; eb 14
-    cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 084d9h                          ; 75 0c
-    or byte [bp-008h], 020h                   ; 80 4e f8 20
-    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
-    jmp short 084ddh                          ; eb 04
-    mov byte [bp-008h], 000h                  ; c6 46 f8 00
-    or byte [bp-008h], 005h                   ; 80 4e f8 05
-    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov dx, word [bp-00eh]                    ; 8b 56 f2
-    call 08263h                               ; e8 75 fd
-    mov cx, word [bp-00eh]                    ; 8b 4e f2
-    mov bx, word [bp-010h]                    ; 8b 5e f0
-    add bx, 00240h                            ; 81 c3 40 02
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    add ax, 0026ah                            ; 05 6a 02
-    mov dx, cx                                ; 89 ca
-    call 09701h                               ; e8 fe 11
-    mov es, cx                                ; 8e c1
-    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
-    test al, al                               ; 84 c0
-    je short 08512h                           ; 74 05
-    mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08514h                          ; eb 02
-    xor ah, ah                                ; 30 e4
-    lea sp, [bp-006h]                         ; 8d 66 fa
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    pop cx                                    ; 59
-    pop bp                                    ; 5d
-    retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf851c LB 0x144
-    push bp                                   ; 55
-    mov bp, sp                                ; 89 e5
-    push bx                                   ; 53
-    push cx                                   ; 51
-    push si                                   ; 56
-    push di                                   ; 57
-    sub sp, strict byte 00006h                ; 83 ec 06
-    mov di, ax                                ; 89 c7
-    mov word [bp-00ch], dx                    ; 89 56 f4
-    mov es, dx                                ; 8e c2
-    mov si, word [es:di+00260h]               ; 26 8b b5 60 02
-    mov al, byte [es:di+00262h]               ; 26 8a 85 62 02
-    mov byte [bp-00ah], al                    ; 88 46 f6
-    cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 08657h                            ; 0f 84 17 01
-    movzx dx, al                              ; 0f b6 d0
-    sal dx, 007h                              ; c1 e2 07
-    add dx, 00118h                            ; 81 c2 18 01
-    mov bx, strict word 00011h                ; bb 11 00
-    xor cx, cx                                ; 31 c9
-    mov ax, si                                ; 89 f0
-    call 081aah                               ; e8 56 fc
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    sal ax, 007h                              ; c1 e0 07
-    mov word [bp-00eh], ax                    ; 89 46 f2
-    mov dx, ax                                ; 89 c2
-    add dx, 00118h                            ; 81 c2 18 01
-    mov bx, 0c011h                            ; bb 11 c0
-    xor cx, cx                                ; 31 c9
-    mov ax, si                                ; 89 f0
-    call 081f1h                               ; e8 83 fc
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08554h                           ; 74 e2
+    je short 089cah                           ; 74 ce
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 097aah                               ; e8 2b 12
+    call 09d6ah                               ; e8 61 13
     lea ax, [di+00080h]                       ; 8d 85 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 097aah                               ; e8 1c 12
+    call 09d6ah                               ; e8 52 13
     lea ax, [di+00200h]                       ; 8d 85 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 097aah                               ; e8 0d 12
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    call 09d6ah                               ; e8 43 13
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    sal ax, 007h                              ; c1 e0 07
+    mov word [bp-00eh], ax                    ; 89 46 f2
     add ax, 00108h                            ; 05 08 01
     cwd                                       ; 99
@@ -12479,5 +12867,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8660 LB 0x206
+ahci_port_init_:                             ; 0xf8af1 LB 0x24a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12489,44 +12877,25 @@
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 0851ch                               ; e8 a8 fe
-    movzx dx, bl                              ; 0f b6 d3
-    sal dx, 007h                              ; c1 e2 07
-    add dx, 00118h                            ; 81 c2 18 01
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov ax, word [es:si+00260h]               ; 26 8b 84 60 02
-    mov bx, strict word 00011h                ; bb 11 00
-    xor cx, cx                                ; 31 c9
-    call 081aah                               ; e8 1c fb
-    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
-    sal di, 007h                              ; c1 e7 07
-    lea dx, [di+00118h]                       ; 8d 95 18 01
-    mov es, [bp-00ah]                         ; 8e 46 f6
-    mov ax, word [es:si+00260h]               ; 26 8b 84 60 02
-    mov bx, 0c011h                            ; bb 11 c0
-    xor cx, cx                                ; 31 c9
-    call 081f1h                               ; e8 48 fb
-    cmp AL, strict byte 001h                  ; 3c 01
-    je short 0868eh                           ; 74 e1
-    mov cx, strict word 00020h                ; b9 20 00
-    xor bx, bx                                ; 31 db
-    mov ax, si                                ; 89 f0
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 097aah                               ; e8 f0 10
-    lea ax, [si+00080h]                       ; 8d 84 80 00
-    mov cx, strict word 00040h                ; b9 40 00
-    xor bx, bx                                ; 31 db
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 097aah                               ; e8 e1 10
-    mov ax, si                                ; 89 f0
-    add ah, 002h                              ; 80 c4 02
-    mov word [bp-00ch], ax                    ; 89 46 f4
-    mov cx, strict word 00060h                ; b9 60 00
-    xor bx, bx                                ; 31 db
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 097aah                               ; e8 ce 10
-    lea ax, [di+00108h]                       ; 8d 85 08 01
-    cwd                                       ; 99
+    call 08972h                               ; e8 6d fe
+    movzx ax, bl                              ; 0f b6 c3
+    sal ax, 007h                              ; c1 e0 07
+    add ax, 00118h                            ; 05 18 01
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
+    xor cx, cx                                ; 31 c9
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    add bx, strict byte 00004h                ; 83 c3 04
+    mov dx, bx                                ; 89 da
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    and AL, strict byte 0eeh                  ; 24 ee
     mov cx, dx                                ; 89 d1
     mov dx, bx                                ; 89 da
@@ -12536,11 +12905,10 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov ax, word [bp-00ch]                    ; 8b 46 f4
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08245h                               ; e8 46 fb
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    sal ax, 007h                              ; c1 e0 07
+    add ax, 00118h                            ; 05 18 01
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
-    add bx, strict byte 00004h                ; 83 c3 04
-    mov cx, dx                                ; 89 d1
+    xor cx, cx                                ; 31 c9
     mov dx, bx                                ; 89 da
     xchg cx, ax                               ; 91
@@ -12549,10 +12917,66 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    lea ax, [di+0010ch]                       ; 8d 85 0c 01
+    lea dx, [bx+004h]                         ; 8d 57 04
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    test ax, 0c011h                           ; a9 11 c0
+    je short 08b74h                           ; 74 04
+    mov AL, strict byte 001h                  ; b0 01
+    jmp short 08b76h                          ; eb 02
+    xor al, al                                ; 30 c0
+    cmp AL, strict byte 001h                  ; 3c 01
+    je short 08b40h                           ; 74 c6
+    mov cx, strict word 00020h                ; b9 20 00
+    xor bx, bx                                ; 31 db
+    mov ax, si                                ; 89 f0
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    call 09d6ah                               ; e8 e3 11
+    lea ax, [si+00080h]                       ; 8d 84 80 00
+    mov cx, strict word 00040h                ; b9 40 00
+    xor bx, bx                                ; 31 db
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    call 09d6ah                               ; e8 d4 11
+    lea di, [si+00200h]                       ; 8d bc 00 02
+    mov cx, strict word 00060h                ; b9 60 00
+    xor bx, bx                                ; 31 db
+    mov ax, di                                ; 89 f8
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    call 09d6ah                               ; e8 c3 11
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
+    sal bx, 007h                              ; c1 e3 07
+    lea ax, [bx+00108h]                       ; 8d 87 08 01
     cwd                                       ; 99
     mov es, [bp-00ah]                         ; 8e 46 f6
-    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
+    mov cx, word [es:si+00260h]               ; 26 8b 8c 60 02
+    mov word [bp-00ch], cx                    ; 89 4e f4
     mov cx, dx                                ; 89 d1
-    mov dx, bx                                ; 89 da
+    mov dx, word [bp-00ch]                    ; 8b 56 f4
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    mov ax, di                                ; 89 f8
+    mov dx, word [bp-00ah]                    ; 8b 56 f6
+    call 085a7h                               ; e8 d3 f9
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
+    add di, strict byte 00004h                ; 83 c7 04
+    mov cx, dx                                ; 89 d1
+    mov dx, di                                ; 89 fa
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea ax, [bx+0010ch]                       ; 8d 87 0c 01
+    cwd                                       ; 99
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
+    mov cx, dx                                ; 89 d1
+    mov dx, di                                ; 89 fa
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12570,10 +12994,10 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    lea ax, [di+00100h]                       ; 8d 85 00 01
+    lea ax, [bx+00100h]                       ; 8d 87 00 01
     cwd                                       ; 99
     mov es, [bp-00ah]                         ; 8e 46 f6
-    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
+    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     mov cx, dx                                ; 89 d1
-    mov dx, bx                                ; 89 da
+    mov dx, di                                ; 89 fa
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12583,10 +13007,10 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08245h                               ; e8 da fa
+    call 085a7h                               ; e8 67 f9
     mov es, [bp-00ah]                         ; 8e 46 f6
-    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
-    add bx, strict byte 00004h                ; 83 c3 04
+    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
+    add di, strict byte 00004h                ; 83 c7 04
     mov cx, dx                                ; 89 d1
-    mov dx, bx                                ; 89 da
+    mov dx, di                                ; 89 fa
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12594,10 +13018,10 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    lea ax, [di+00104h]                       ; 8d 85 04 01
+    lea ax, [bx+00104h]                       ; 8d 87 04 01
     cwd                                       ; 99
     mov es, [bp-00ah]                         ; 8e 46 f6
-    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
+    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     mov cx, dx                                ; 89 d1
-    mov dx, bx                                ; 89 da
+    mov dx, di                                ; 89 fa
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12615,10 +13039,10 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    lea ax, [di+00114h]                       ; 8d 85 14 01
+    lea ax, [bx+00114h]                       ; 8d 87 14 01
     cwd                                       ; 99
     mov es, [bp-00ah]                         ; 8e 46 f6
-    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
+    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     mov cx, dx                                ; 89 d1
-    mov dx, bx                                ; 89 da
+    mov dx, di                                ; 89 fa
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12636,10 +13060,10 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    lea ax, [di+00110h]                       ; 8d 85 10 01
+    lea ax, [bx+00110h]                       ; 8d 87 10 01
     cwd                                       ; 99
     mov es, [bp-00ah]                         ; 8e 46 f6
-    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
+    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     mov cx, dx                                ; 89 d1
-    mov dx, bx                                ; 89 da
+    mov dx, di                                ; 89 fa
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12657,5 +13081,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    lea ax, [di+00130h]                       ; 8d 85 30 01
+    lea ax, [bx+00130h]                       ; 8d 87 30 01
     cwd                                       ; 99
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -12688,44 +13112,48 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-@ahci_read_sectors:                          ; 0xf8866 LB 0x93
+@ahci_read_sectors:                          ; 0xf8d3b LB 0xa6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    les bx, [bp+004h]                         ; c4 5e 04
-    movzx bx, byte [es:bx+008h]               ; 26 0f b6 5f 08
-    sub bx, strict byte 0000ch                ; 83 eb 0c
-    cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 0888ah                          ; 76 0f
-    push bx                                   ; 53
-    push 00c66h                               ; 68 66 0c
-    push 00c78h                               ; 68 78 0c
+    push ax                                   ; 50
+    les di, [bp+004h]                         ; c4 7e 04
+    movzx di, byte [es:di+00ch]               ; 26 0f b6 7d 0c
+    sub di, strict byte 0000ch                ; 83 ef 0c
+    cmp di, strict byte 00004h                ; 83 ff 04
+    jbe short 08d60h                          ; 76 0f
+    push di                                   ; 57
+    push 00c62h                               ; 68 62 0c
+    push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 eb 90
+    call 01972h                               ; e8 15 8c
     add sp, strict byte 00008h                ; 83 c4 08
-    les di, [bp+004h]                         ; c4 7e 04
-    mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
+    xor bx, bx                                ; 31 db
+    les si, [bp+004h]                         ; c4 76 04
+    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
+    shr eax, 010h                             ; 66 c1 e8 10
+    mov es, dx                                ; 8e c2
+    mov word [es:bx+00268h], ax               ; 26 89 87 68 02
+    mov es, [bp+006h]                         ; 8e 46 06
+    add di, si                                ; 01 f7
+    movzx bx, byte [es:di+0022dh]             ; 26 0f b6 9d 2d 02
+    mov di, si                                ; 89 f7
+    mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
     xor ax, ax                                ; 31 c0
-    call 08139h                               ; e8 a2 f8
+    call 08af1h                               ; e8 65 fd
+    mov bx, strict word 00025h                ; bb 25 00
+    mov ax, si                                ; 89 f0
+    mov dx, word [bp+006h]                    ; 8b 56 06
+    call 08710h                               ; e8 79 f9
+    mov word [bp-006h], ax                    ; 89 46 fa
     mov es, [bp+006h]                         ; 8e 46 06
-    add bx, di                                ; 01 fb
-    movzx bx, byte [es:bx+001e9h]             ; 26 0f b6 9f e9 01
-    mov si, di                                ; 89 fe
-    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
-    xor ax, ax                                ; 31 c0
-    call 08660h                               ; e8 b2 fd
-    mov bx, strict word 00025h                ; bb 25 00
-    mov ax, di                                ; 89 f8
-    mov dx, word [bp+006h]                    ; 8b 56 06
-    call 08338h                               ; e8 7f fa
-    mov bx, ax                                ; 89 c3
-    mov es, [bp+006h]                         ; 8e 46 06
-    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
-    mov word [es:si+014h], ax                 ; 26 89 44 14
+    mov bx, si                                ; 89 f3
+    mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
+    mov word [es:bx+018h], ax                 ; 26 89 47 18
     mov cx, ax                                ; 89 c1
     sal cx, 009h                              ; c1 e1 09
     shr cx, 1                                 ; d1 e9
-    mov di, word [es:di+004h]                 ; 26 8b 7d 04
-    mov ax, word [es:si+006h]                 ; 26 8b 44 06
+    mov di, word [es:di+008h]                 ; 26 8b 7d 08
+    mov ax, word [es:bx+00ah]                 ; 26 8b 47 0a
     mov si, di                                ; 89 fe
     mov dx, ax                                ; 89 c2
@@ -12735,9 +13163,10 @@
     rep movsw                                 ; f3 a5
     pop DS                                    ; 1f
-    les si, [bp+004h]                         ; c4 76 04
-    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
-    xor ax, ax                                ; 31 c0
-    call 08150h                               ; e8 62 f8
-    mov ax, bx                                ; 89 d8
+    xor bx, bx                                ; 31 db
+    les di, [bp+004h]                         ; c4 7e 04
+    mov es, [es:di+00232h]                    ; 26 8e 85 32 02
+    mov ax, word [es:bx+00268h]               ; 26 8b 87 68 02
+    sal eax, 010h                             ; 66 c1 e0 10
+    mov ax, word [bp-006h]                    ; 8b 46 fa
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -12745,48 +13174,54 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@ahci_write_sectors:                         ; 0xf88f9 LB 0x72
+@ahci_write_sectors:                         ; 0xf8de1 LB 0x84
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
+    push di                                   ; 57
     mov si, word [bp+004h]                    ; 8b 76 04
     mov cx, word [bp+006h]                    ; 8b 4e 06
     mov es, cx                                ; 8e c1
-    movzx bx, byte [es:si+008h]               ; 26 0f b6 5c 08
-    sub bx, strict byte 0000ch                ; 83 eb 0c
-    cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 08921h                          ; 76 0f
-    push bx                                   ; 53
-    push 00c97h                               ; 68 97 0c
-    push 00c78h                               ; 68 78 0c
+    movzx dx, byte [es:si+00ch]               ; 26 0f b6 54 0c
+    sub dx, strict byte 0000ch                ; 83 ea 0c
+    cmp dx, strict byte 00004h                ; 83 fa 04
+    jbe short 08e0ah                          ; 76 0f
+    push dx                                   ; 52
+    push 00c93h                               ; 68 93 0c
+    push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 01972h                               ; e8 54 90
+    call 01972h                               ; e8 6b 8b
     add sp, strict byte 00008h                ; 83 c4 08
+    xor bx, bx                                ; 31 db
     mov es, cx                                ; 8e c1
-    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
+    mov di, word [es:si+00232h]               ; 26 8b bc 32 02
+    shr eax, 010h                             ; 66 c1 e8 10
+    mov es, di                                ; 8e c7
+    mov word [es:bx+00268h], ax               ; 26 89 87 68 02
+    mov es, cx                                ; 8e c1
+    mov bx, si                                ; 89 f3
+    add bx, dx                                ; 01 d3
+    movzx bx, byte [es:bx+0022dh]             ; 26 0f b6 9f 2d 02
+    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08139h                               ; e8 0c f8
-    mov es, cx                                ; 8e c1
-    add bx, si                                ; 01 f3
-    movzx bx, byte [es:bx+001e9h]             ; 26 0f b6 9f e9 01
-    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
-    xor ax, ax                                ; 31 c0
-    call 08660h                               ; e8 1f fd
+    call 08af1h                               ; e8 bd fc
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 08338h                               ; e8 ed f9
-    mov bx, ax                                ; 89 c3
+    call 08710h                               ; e8 d2 f8
+    mov dx, ax                                ; 89 c2
     mov es, cx                                ; 8e c1
-    mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
-    mov word [es:si+014h], dx                 ; 26 89 54 14
-    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
-    xor ax, ax                                ; 31 c0
-    call 08150h                               ; e8 ef f7
-    mov ax, bx                                ; 89 d8
-    lea sp, [bp-002h]                         ; 8d 66 fe
+    mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
+    mov word [es:si+018h], ax                 ; 26 89 44 18
+    xor bx, bx                                ; 31 db
+    mov es, [es:si+00232h]                    ; 26 8e 84 32 02
+    mov ax, word [es:bx+00268h]               ; 26 8b 87 68 02
+    sal eax, 010h                             ; 66 c1 e0 10
+    mov ax, dx                                ; 89 d0
+    lea sp, [bp-004h]                         ; 8d 66 fc
+    pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf896b LB 0x173
+ahci_cmd_packet_:                            ; 0xf8e65 LB 0x183
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12800,22 +13235,22 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 e6 8c
+    call 0166ch                               ; e8 ec 87
     mov si, 00122h                            ; be 22 01
     mov word [bp-008h], ax                    ; 89 46 f8
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 089b1h                          ; 75 1f
-    mov bx, 00da2h                            ; bb a2 0d
+    jne short 08eabh                          ; 75 1f
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 94 8f
-    push 00caah                               ; 68 aa 0c
-    push 00cbah                               ; 68 ba 0c
+    call 01931h                               ; e8 9a 8a
+    push 00ca6h                               ; 68 a6 0c
+    push 00cb6h                               ; 68 b6 0c
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 ca 8f
+    call 01972h                               ; e8 d0 8a
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 08ad5h                           ; e9 24 01
+    jmp near 08fdfh                           ; e9 34 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 089abh                          ; 75 f4
+    jne short 08ea5h                          ; 75 f4
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
@@ -12823,34 +13258,36 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 089c0h                               ; e2 fa
+    loop 08ebah                               ; e2 fa
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si], ax                      ; 26 89 04
     mov word [es:si+002h], dx                 ; 26 89 54 02
+    db  066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h
+    ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00
     mov ax, word [bp+00ch]                    ; 8b 46 0c
-    mov word [es:si+004h], ax                 ; 26 89 44 04
+    mov word [es:si+008h], ax                 ; 26 89 44 08
     mov ax, word [bp+00eh]                    ; 8b 46 0e
-    mov word [es:si+006h], ax                 ; 26 89 44 06
-    mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
+    mov word [es:si+00ah], ax                 ; 26 89 44 0a
+    mov bx, word [es:si+010h]                 ; 26 8b 5c 10
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 09740h                               ; e8 53 0d
-    mov word [es:si+00ah], ax                 ; 26 89 44 0a
+    call 09ce0h                               ; e8 f0 0d
+    mov word [es:si+00eh], ax                 ; 26 89 44 0e
     xor di, di                                ; 31 ff
-    mov ax, word [es:si+001eeh]               ; 26 8b 84 ee 01
+    mov ax, word [es:si+00232h]               ; 26 8b 84 32 02
     mov word [bp-00ah], ax                    ; 89 46 f6
     mov word [bp-00eh], di                    ; 89 7e f2
     mov word [bp-00ch], ax                    ; 89 46 f4
     sub word [bp-014h], strict byte 0000ch    ; 83 6e ec 0c
-    xor ax, ax                                ; 31 c0
-    mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08139h                               ; e8 2c f7
+    shr eax, 010h                             ; 66 c1 e8 10
+    mov es, [bp-00ah]                         ; 8e 46 f6
+    mov word [es:di+00268h], ax               ; 26 89 85 68 02
     mov es, [bp-008h]                         ; 8e 46 f8
     mov bx, word [bp-014h]                    ; 8b 5e ec
     add bx, si                                ; 01 f3
-    movzx bx, byte [es:bx+001e9h]             ; 26 0f b6 9f e9 01
-    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
+    movzx bx, byte [es:bx+0022dh]             ; 26 0f b6 9f 2d 02
+    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08660h                               ; e8 3b fc
+    call 08af1h                               ; e8 c5 fb
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -12859,37 +13296,37 @@
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 097b7h                               ; e8 7e 0d
+    call 09d77h                               ; e8 37 0e
     mov es, [bp-008h]                         ; 8e 46 f8
-    mov word [es:si+014h], di                 ; 26 89 7c 14
-    mov word [es:si+016h], di                 ; 26 89 7c 16
     mov word [es:si+018h], di                 ; 26 89 7c 18
-    mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
+    mov word [es:si+01ah], di                 ; 26 89 7c 1a
+    mov word [es:si+01ch], di                 ; 26 89 7c 1c
+    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
     test ax, ax                               ; 85 c0
-    je short 08a77h                           ; 74 27
+    je short 08f7eh                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+0010ch], ax               ; 26 89 85 0c 01
     mov word [es:di+0010eh], di               ; 26 89 bd 0e 01
-    mov ax, word [es:di+00264h]               ; 26 8b 85 64 02
-    mov dx, word [es:di+00266h]               ; 26 8b 95 66 02
-    mov word [es:di+00100h], ax               ; 26 89 85 00 01
-    mov word [es:di+00102h], dx               ; 26 89 95 02 01
+    mov dx, word [es:di+00264h]               ; 26 8b 95 64 02
+    mov ax, word [es:di+00266h]               ; 26 8b 85 66 02
+    mov word [es:di+00100h], dx               ; 26 89 95 00 01
+    mov word [es:di+00102h], ax               ; 26 89 85 02 01
     inc byte [es:di+00263h]                   ; 26 fe 85 63 02
     mov bx, 000a0h                            ; bb a0 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 08338h                               ; e8 b6 f8
+    call 08710h                               ; e8 87 f7
     les bx, [bp-00eh]                         ; c4 5e f2
     mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     mov dx, word [es:bx+006h]                 ; 26 8b 57 06
     mov es, [bp-008h]                         ; 8e 46 f8
-    mov word [es:si+016h], ax                 ; 26 89 44 16
-    mov word [es:si+018h], dx                 ; 26 89 54 18
-    mov bx, word [es:si+016h]                 ; 26 8b 5c 16
+    mov word [es:si+01ah], ax                 ; 26 89 44 1a
+    mov word [es:si+01ch], dx                 ; 26 89 54 1c
+    mov bx, word [es:si+01ah]                 ; 26 8b 5c 1a
     mov cx, dx                                ; 89 d1
     shr cx, 1                                 ; d1 e9
     rcr bx, 1                                 ; d1 db
-    mov di, word [es:si+004h]                 ; 26 8b 7c 04
-    mov ax, word [es:si+006h]                 ; 26 8b 44 06
+    mov di, word [es:si+008h]                 ; 26 8b 7c 08
+    mov ax, word [es:si+00ah]                 ; 26 8b 44 0a
     mov cx, bx                                ; 89 d9
     mov si, di                                ; 89 fe
@@ -12900,13 +13337,13 @@
     rep movsw                                 ; f3 a5
     pop DS                                    ; 1f
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
-    mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 08150h                               ; e8 8f f6
     les bx, [bp-00eh]                         ; c4 5e f2
+    mov ax, word [es:bx+00268h]               ; 26 8b 87 68 02
+    sal eax, 010h                             ; 66 c1 e0 10
+    mov es, [bp-00ch]                         ; 8e 46 f4
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 08ad3h                          ; 75 05
+    jne short 08fddh                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08ad5h                          ; eb 02
+    jmp short 08fdfh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12915,5 +13352,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf8ade LB 0x451
+ahci_port_detect_device_:                    ; 0xf8fe8 LB 0x4b1
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12921,25 +13358,25 @@
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, 00220h                            ; 81 ec 20 02
+    sub sp, 00224h                            ; 81 ec 24 02
     mov si, ax                                ; 89 c6
     mov word [bp-012h], dx                    ; 89 56 ee
-    mov byte [bp-008h], bl                    ; 88 5e f8
+    mov byte [bp-00ah], bl                    ; 88 5e f6
     movzx di, bl                              ; 0f b6 fb
     mov bx, di                                ; 89 fb
-    call 08660h                               ; e8 68 fb
+    call 08af1h                               ; e8 ef fa
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 6b 8b
+    call 0166ch                               ; e8 61 86
     mov word [bp-010h], 00122h                ; c7 46 f0 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
     sal di, 007h                              ; c1 e7 07
-    mov word [bp-020h], di                    ; 89 7e e0
+    mov word [bp-024h], di                    ; 89 7e dc
     lea ax, [di+0012ch]                       ; 8d 85 2c 01
     cwd                                       ; 99
-    mov di, ax                                ; 89 c7
-    mov bx, dx                                ; 89 d3
+    mov bx, ax                                ; 89 c3
+    mov di, dx                                ; 89 d7
     mov es, [bp-012h]                         ; 8e 46 ee
     mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
-    mov cx, bx                                ; 89 d9
+    mov cx, di                                ; 89 f9
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12959,6 +13396,6 @@
     mov es, [bp-012h]                         ; 8e 46 ee
     mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
-    mov ax, di                                ; 89 f8
-    mov cx, bx                                ; 89 d9
+    mov ax, bx                                ; 89 d8
+    mov cx, di                                ; 89 f9
     xchg cx, ax                               ; 91
     sal eax, 010h                             ; 66 c1 e0 10
@@ -12976,5 +13413,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    mov ax, word [bp-020h]                    ; 8b 46 e0
+    mov ax, word [bp-024h]                    ; 8b 46 dc
     add ax, 00128h                            ; 05 28 01
     cwd                                       ; 99
@@ -12999,10 +13436,10 @@
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0822ah                               ; e8 7f f6
+    call 0858ch                               ; e8 d7 f4
     test ax, ax                               ; 85 c0
-    je near 08f27h                            ; 0f 84 76 03
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    je near 09491h                            ; 0f 84 d6 03
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     sal ax, 007h                              ; c1 e0 07
-    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-018h], ax                    ; 89 46 e8
     add ax, 00128h                            ; 05 28 01
     cwd                                       ; 99
@@ -13025,20 +13462,20 @@
     xchg dx, ax                               ; 92
     mov di, ax                                ; 89 c7
-    mov word [bp-01ah], dx                    ; 89 56 e6
+    mov word [bp-022h], dx                    ; 89 56 de
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0822ah                               ; e8 33 f6
+    call 0858ch                               ; e8 8b f4
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 08bb1h                           ; 74 b5
+    je short 090bbh                           ; 74 b5
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    mov dx, word [bp-01ah]                    ; 8b 56 e6
-    call 0822ah                               ; e8 1f f6
+    mov dx, word [bp-022h]                    ; 8b 56 de
+    call 0858ch                               ; e8 77 f4
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne near 08f27h                           ; 0f 85 15 03
-    mov ax, word [bp-016h]                    ; 8b 46 ea
+    jne near 09491h                           ; 0f 85 75 03
+    mov ax, word [bp-018h]                    ; 8b 46 e8
     add ax, 00130h                            ; 05 30 01
     cwd                                       ; 99
@@ -13063,16 +13500,35 @@
     out DX, eax                               ; 66 ef
     les bx, [bp-010h]                         ; c4 5e f0
-    mov al, byte [es:bx+001edh]               ; 26 8a 87 ed 01
-    mov byte [bp-00ch], al                    ; 88 46 f4
+    mov al, byte [es:bx+00231h]               ; 26 8a 87 31 02
+    mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 08f27h                           ; 0f 83 cf 02
-    mov dx, word [bp-016h]                    ; 8b 56 ea
-    add dx, 00118h                            ; 81 c2 18 01
+    jnc near 09491h                           ; 0f 83 2f 03
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    add ax, 00118h                            ; 05 18 01
     mov es, [bp-012h]                         ; 8e 46 ee
-    mov ax, word [es:si+00260h]               ; 26 8b 84 60 02
-    mov bx, strict word 00010h                ; bb 10 00
+    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     xor cx, cx                                ; 31 c9
-    call 08167h                               ; e8 f8 f4
-    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    add bx, strict byte 00004h                ; 83 c3 04
+    mov dx, bx                                ; 89 da
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    or AL, strict byte 010h                   ; 0c 10
+    mov cx, dx                                ; 89 d1
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    mov ax, word [bp-018h]                    ; 8b 46 e8
     add ax, 00124h                            ; 05 24 01
     cwd                                       ; 99
@@ -13094,84 +13550,96 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    mov cl, byte [bp-00ch]                    ; 8a 4e f4
+    mov di, ax                                ; 89 c7
+    mov ax, dx                                ; 89 d0
+    mov cl, byte [bp-008h]                    ; 8a 4e f8
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne near 08e83h                           ; 0f 85 d8 01
-    cmp ax, 00101h                            ; 3d 01 01
-    jne near 08e83h                           ; 0f 85 d1 01
+    jne near 093e7h                           ; 0f 85 0d 02
+    cmp di, 00101h                            ; 81 ff 01 01
+    jne near 093e7h                           ; 0f 85 05 02
     les bx, [bp-010h]                         ; c4 5e f0
+    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
+    ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00
     db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
     ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00
-    lea dx, [bp-00226h]                       ; 8d 96 da fd
-    mov word [es:bx+004h], dx                 ; 26 89 57 04
-    mov [es:bx+006h], ss                      ; 26 8c 57 06
-    db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 002h
-    ; mov dword [es:bx+00ah], strict dword 002000001h ; 66 26 c7 47 0a 01 00 00 02
+    lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
+    mov word [es:bx+008h], dx                 ; 26 89 57 08
+    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
+    db  066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 002h
+    ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02
     mov bx, 000ech                            ; bb ec 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 08338h                               ; e8 5b f6
-    mov byte [bp-00ah], cl                    ; 88 4e f6
-    test byte [bp-00226h], 080h               ; f6 86 da fd 80
+    call 08710h                               ; e8 fa f4
+    mov byte [bp-00ch], cl                    ; 88 4e f4
+    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     xor ah, ah                                ; 30 e4
-    mov dl, al                                ; 88 c2
-    mov ax, word [bp-00224h]                  ; 8b 86 dc fd
-    mov word [bp-018h], ax                    ; 89 46 e8
-    mov ax, word [bp-00220h]                  ; 8b 86 e0 fd
-    mov word [bp-01eh], ax                    ; 89 46 e2
-    mov ax, word [bp-0021ah]                  ; 8b 86 e6 fd
-    mov word [bp-01ch], ax                    ; 89 46 e4
-    mov ax, word [bp-001aeh]                  ; 8b 86 52 fe
-    mov word [bp-014h], ax                    ; 89 46 ec
-    mov di, word [bp-001ach]                  ; 8b be 54 fe
+    mov dx, word [bp-00228h]                  ; 8b 96 d8 fd
+    mov word [bp-020h], dx                    ; 89 56 e0
+    mov dx, word [bp-00224h]                  ; 8b 96 dc fd
+    mov word [bp-01ch], dx                    ; 89 56 e4
+    mov dx, word [bp-0021eh]                  ; 8b 96 e2 fd
+    mov word [bp-01eh], dx                    ; 89 56 e2
+    mov dx, word [bp-001b2h]                  ; 8b 96 4e fe
+    mov word [bp-01ah], dx                    ; 89 56 e6
+    mov di, word [bp-001b0h]                  ; 8b be 50 fe
+    mov dword [bp-016h], strict dword 000000000h ; 66 c7 46 ea 00 00 00 00
     cmp di, 00fffh                            ; 81 ff ff 0f
-    jne short 08d22h                          ; 75 10
-    cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 08d22h                          ; 75 0b
-    mov ax, word [bp-0015eh]                  ; 8b 86 a2 fe
-    mov word [bp-014h], ax                    ; 89 46 ec
-    mov di, word [bp-0015ch]                  ; 8b be a4 fe
-    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
+    jne short 0926fh                          ; 75 1e
+    cmp dx, strict byte 0ffffh                ; 83 fa ff
+    jne short 0926fh                          ; 75 19
+    mov dx, word [bp-0015ch]                  ; 8b 96 a4 fe
+    mov word [bp-014h], dx                    ; 89 56 ec
+    mov dx, word [bp-0015eh]                  ; 8b 96 a2 fe
+    mov word [bp-016h], dx                    ; 89 56 ea
+    mov di, word [bp-00160h]                  ; 8b be a0 fe
+    mov dx, word [bp-00162h]                  ; 8b 96 9e fe
+    mov word [bp-01ah], dx                    ; 89 56 e6
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     mov es, [bp-00eh]                         ; 8e 46 f2
     add bx, word [bp-010h]                    ; 03 5e f0
-    mov al, byte [bp-008h]                    ; 8a 46 f8
-    mov byte [es:bx+001e9h], al               ; 26 88 87 e9 01
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov ah, byte [bp-00ah]                    ; 8a 66 f6
+    mov byte [es:bx+0022dh], ah               ; 26 88 a7 2d 02
+    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
+    imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     mov si, word [bp-010h]                    ; 8b 76 f0
-    add si, ax                                ; 01 c6
-    mov word [es:si+01eh], 0ff05h             ; 26 c7 44 1e 05 ff
-    mov byte [es:si+020h], dl                 ; 26 88 54 20
-    mov byte [es:si+021h], 000h               ; 26 c6 44 21 00
-    mov word [es:si+024h], 00200h             ; 26 c7 44 24 00 02
-    mov byte [es:si+023h], 001h               ; 26 c6 44 23 01
+    add si, dx                                ; 01 d6
+    mov word [es:si+022h], 0ff05h             ; 26 c7 44 22 05 ff
+    mov byte [es:si+024h], al                 ; 26 88 44 24
+    mov byte [es:si+025h], 000h               ; 26 c6 44 25 00
+    mov word [es:si+028h], 00200h             ; 26 c7 44 28 00 02
+    mov byte [es:si+027h], 001h               ; 26 c6 44 27 01
     mov ax, word [bp-014h]                    ; 8b 46 ec
-    mov word [es:si+032h], ax                 ; 26 89 44 32
-    mov word [es:si+034h], di                 ; 26 89 7c 34
-    mov ax, word [bp-01eh]                    ; 8b 46 e2
-    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 word [es:si+03ch], ax                 ; 26 89 44 3c
+    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov word [es:si+03ah], ax                 ; 26 89 44 3a
+    mov word [es:si+038h], di                 ; 26 89 7c 38
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    mov word [es:si+036h], ax                 ; 26 89 44 36
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     mov word [es:si+030h], ax                 ; 26 89 44 30
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov ax, word [bp-020h]                    ; 8b 46 e0
+    mov word [es:si+032h], ax                 ; 26 89 44 32
+    mov ax, word [bp-01eh]                    ; 8b 46 e2
+    mov word [es:si+034h], ax                 ; 26 89 44 34
+    mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08d8dh                           ; 72 0c
-    jbe short 08d95h                          ; 76 12
+    jc short 092e8h                           ; 72 0c
+    jbe short 092f0h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08d9dh                           ; 74 16
+    je short 092f8h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 08d99h                           ; 74 0e
-    jmp short 08de6h                          ; eb 59
+    je short 092f4h                           ; 74 0e
+    jmp short 09341h                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 08de6h                          ; 75 55
+    jne short 09341h                          ; 75 55
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 08d9fh                          ; eb 0a
+    jmp short 092fah                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 08d9fh                          ; eb 06
+    jmp short 092fah                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 08d9fh                          ; eb 02
+    jmp short 092fah                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov al, dl                                ; 88 d0
@@ -13179,68 +13647,71 @@
     movzx bx, al                              ; 0f b6 d8
     mov ax, bx                                ; 89 d8
-    call 016ach                               ; e8 01 89
+    call 016ach                               ; e8 a6 83
     test al, al                               ; 84 c0
-    je short 08de6h                           ; 74 37
+    je short 09341h                           ; 74 37
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 f4 88
+    call 016ach                               ; e8 99 83
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     sal si, 008h                              ; c1 e6 08
     movzx ax, dl                              ; 0f b6 c2
-    call 016ach                               ; e8 e7 88
+    call 016ach                               ; e8 8c 83
     xor ah, ah                                ; 30 e4
     add ax, si                                ; 01 f0
-    mov word [bp-024h], ax                    ; 89 46 dc
+    mov word [bp-028h], ax                    ; 89 46 d8
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 d7 88
+    call 016ach                               ; e8 7c 83
+    xor ah, ah                                ; 30 e4
+    mov word [bp-02ah], ax                    ; 89 46 d6
+    mov ax, bx                                ; 89 d8
+    call 016ach                               ; e8 72 83
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    mov ax, bx                                ; 89 d8
-    call 016ach                               ; e8 cd 88
-    xor ah, ah                                ; 30 e4
-    mov word [bp-022h], ax                    ; 89 46 de
-    jmp short 08df3h                          ; eb 0d
-    mov bx, word [bp-014h]                    ; 8b 5e ec
-    mov cx, di                                ; 89 f9
+    jmp short 09351h                          ; eb 10
+    push dword [bp-016h]                      ; 66 ff 76 ea
+    push di                                   ; 57
+    push word [bp-01ah]                       ; ff 76 e6
     mov dx, ss                                ; 8c d2
-    lea ax, [bp-026h]                         ; 8d 46 da
-    call 055b6h                               ; e8 c3 c7
-    mov bx, 00da2h                            ; bb a2 0d
+    lea ax, [bp-02ah]                         ; 8d 46 d6
+    call 0588bh                               ; e8 3a c5
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 33 8b
+    call 01931h                               ; e8 d5 85
+    push dword [bp-016h]                      ; 66 ff 76 ea
     push di                                   ; 57
-    push word [bp-014h]                       ; ff 76 ec
-    mov ax, word [bp-022h]                    ; 8b 46 de
-    push ax                                   ; 50
+    push word [bp-01ah]                       ; ff 76 e6
     mov ax, word [bp-026h]                    ; 8b 46 da
     push ax                                   ; 50
-    mov ax, word [bp-024h]                    ; 8b 46 dc
+    mov ax, word [bp-02ah]                    ; 8b 46 d6
     push ax                                   ; 50
-    push dword [bp-01eh]                      ; 66 ff 76 e2
-    push word [bp-018h]                       ; ff 76 e8
+    mov ax, word [bp-028h]                    ; 8b 46 d8
+    push ax                                   ; 50
+    push word [bp-01eh]                       ; ff 76 e2
+    push word [bp-01ch]                       ; ff 76 e4
+    push word [bp-020h]                       ; ff 76 e0
+    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
+    push ax                                   ; 50
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
+    push 00cd6h                               ; 68 d6 0c
+    push strict byte 00004h                   ; 6a 04
+    call 01972h                               ; e8 e7 85
+    add sp, strict byte 0001ch                ; 83 c4 1c
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    push ax                                   ; 50
-    push 00cdah                               ; 68 da 0c
-    push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 4b 8b
-    add sp, strict byte 00018h                ; 83 c4 18
-    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov di, word [bp-010h]                    ; 8b 7e f0
     add di, ax                                ; 01 c7
     mov es, [bp-00eh]                         ; 8e 46 f2
-    lea di, [di+026h]                         ; 8d 7d 26
+    lea di, [di+02ah]                         ; 8d 7d 2a
     push DS                                   ; 1e
     push SS                                   ; 16
     pop DS                                    ; 1f
-    lea si, [bp-026h]                         ; 8d 76 da
+    lea si, [bp-02ah]                         ; 8d 76 d6
     movsw                                     ; a5
     movsw                                     ; a5
@@ -13248,17 +13719,17 @@
     pop DS                                    ; 1f
     mov bx, word [bp-010h]                    ; 8b 5e f0
-    mov al, byte [es:bx+0019eh]               ; 26 8a 87 9e 01
-    mov ah, byte [bp-00ch]                    ; 8a 66 f4
+    mov al, byte [es:bx+001e2h]               ; 26 8a 87 e2 01
+    mov ah, byte [bp-008h]                    ; 8a 66 f8
     add ah, 00ch                              ; 80 c4 0c
     movzx bx, al                              ; 0f b6 d8
     add bx, word [bp-010h]                    ; 03 5e f0
-    mov byte [es:bx+0019fh], ah               ; 26 88 a7 9f 01
+    mov byte [es:bx+001e3h], ah               ; 26 88 a7 e3 01
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov bx, word [bp-010h]                    ; 8b 5e f0
-    mov byte [es:bx+0019eh], al               ; 26 88 87 9e 01
+    mov byte [es:bx+001e2h], al               ; 26 88 87 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 de 87
+    call 01650h                               ; e8 7a 82
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -13266,54 +13737,54 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 de 87
-    jmp near 08f19h                           ; e9 96 00
+    call 0165eh                               ; e8 7a 82
+    jmp near 09483h                           ; e9 9c 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne near 08f19h                           ; 0f 85 8e 00
-    cmp ax, 00101h                            ; 3d 01 01
-    jne near 08f19h                           ; 0f 85 87 00
+    jne near 09483h                           ; 0f 85 94 00
+    cmp di, 00101h                            ; 81 ff 01 01
+    jne near 09483h                           ; 0f 85 8c 00
     les bx, [bp-010h]                         ; c4 5e f0
+    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
+    ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00
     db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
     ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00
-    lea dx, [bp-00226h]                       ; 8d 96 da fd
-    mov word [es:bx+004h], dx                 ; 26 89 57 04
-    mov [es:bx+006h], ss                      ; 26 8c 57 06
-    db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 002h
-    ; mov dword [es:bx+00ah], strict dword 002000001h ; 66 26 c7 47 0a 01 00 00 02
+    lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
+    mov word [es:bx+008h], dx                 ; 26 89 57 08
+    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
+    db  066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 002h
+    ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02
     mov bx, 000a1h                            ; bb a1 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 08338h                               ; e8 7b f4
-    test byte [bp-00226h], 080h               ; f6 86 da fd 80
+    call 08710h                               ; e8 e5 f2
+    test byte [bp-0022ah], 080h               ; f6 86 d6 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-00ch]                  ; 0f b6 5e f4
+    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     mov es, [bp-00eh]                         ; 8e 46 f2
     add bx, word [bp-010h]                    ; 03 5e f0
-    mov al, byte [bp-008h]                    ; 8a 46 f8
-    mov byte [es:bx+001e9h], al               ; 26 88 87 e9 01
-    movzx ax, cl                              ; 0f b6 c1
-    imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov si, word [bp-010h]                    ; 8b 76 f0
-    add si, ax                                ; 01 c6
-    mov word [es:si+01eh], 00505h             ; 26 c7 44 1e 05 05
-    mov byte [es:si+020h], dl                 ; 26 88 54 20
-    mov word [es:si+024h], 00800h             ; 26 c7 44 24 00 08
+    mov ah, byte [bp-00ah]                    ; 8a 66 f6
+    mov byte [es:bx+0022dh], ah               ; 26 88 a7 2d 02
+    movzx si, cl                              ; 0f b6 f1
+    imul si, si, strict byte 0001ch           ; 6b f6 1c
+    add si, word [bp-010h]                    ; 03 76 f0
+    mov word [es:si+022h], 00505h             ; 26 c7 44 22 05 05
+    mov byte [es:si+024h], al                 ; 26 88 44 24
+    mov word [es:si+028h], 00800h             ; 26 c7 44 28 00 08
     mov bx, word [bp-010h]                    ; 8b 5e f0
-    mov al, byte [es:bx+001afh]               ; 26 8a 87 af 01
-    mov ah, byte [bp-00ch]                    ; 8a 66 f4
+    mov al, byte [es:bx+001f3h]               ; 26 8a 87 f3 01
+    mov ah, byte [bp-008h]                    ; 8a 66 f8
     add ah, 00ch                              ; 80 c4 0c
     movzx bx, al                              ; 0f b6 d8
     add bx, word [bp-010h]                    ; 03 5e f0
-    mov byte [es:bx+001b0h], ah               ; 26 88 a7 b0 01
+    mov byte [es:bx+001f4h], ah               ; 26 88 a7 f4 01
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov bx, word [bp-010h]                    ; 8b 5e f0
-    mov byte [es:bx+001afh], al               ; 26 88 87 af 01
-    inc byte [bp-00ch]                        ; fe 46 f4
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov byte [es:bx+001f3h], al               ; 26 88 87 f3 01
+    inc byte [bp-008h]                        ; fe 46 f8
+    mov al, byte [bp-008h]                    ; 8a 46 f8
     les bx, [bp-010h]                         ; c4 5e f0
-    mov byte [es:bx+001edh], al               ; 26 88 87 ed 01
+    mov byte [es:bx+00231h], al               ; 26 88 87 31 02
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -13322,5 +13793,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf8f2f LB 0x43
+ahci_mem_alloc_:                             ; 0xf9499 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13332,7 +13803,7 @@
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0166ch                               ; e8 2d 87
+    call 0166ch                               ; e8 c3 81
     test ax, ax                               ; 85 c0
-    je short 08f68h                           ; 74 25
+    je short 094d2h                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
@@ -13341,5 +13812,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08f4bh                               ; e2 fa
+    loop 094b5h                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
@@ -13347,8 +13818,8 @@
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 08f58h                               ; e2 fa
+    loop 094c2h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0167ah                               ; e8 14 87
+    call 0167ah                               ; e8 aa 81
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -13360,5 +13831,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf8f72 LB 0x125
+ahci_hba_init_:                              ; 0xf94dc LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13372,7 +13843,7 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 e4 86
+    call 0166ch                               ; e8 7a 81
     mov bx, 00122h                            ; bb 22 01
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov di, ax                                ; 89 c7
     mov ax, strict word 00010h                ; b8 10 00
     xor cx, cx                                ; 31 c9
@@ -13389,22 +13860,41 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 08f2fh                               ; e8 82 ff
-    mov di, ax                                ; 89 c7
+    call 09499h                               ; e8 83 ff
+    mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    je near 09076h                            ; 0f 84 c1 00
-    mov es, [bp-010h]                         ; 8e 46 f0
-    mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
-    mov byte [es:bx+001edh], 000h             ; 26 c6 87 ed 01 00
+    je near 09621h                            ; 0f 84 02 01
+    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov es, di                                ; 8e c7
+    mov word [es:bx+00232h], ax               ; 26 89 87 32 02
+    mov byte [es:bx+00231h], 000h             ; 26 c6 87 31 02 00
     xor bx, bx                                ; 31 db
-    mov es, di                                ; 8e c7
+    mov es, ax                                ; 8e c0
     mov byte [es:bx+00262h], 0ffh             ; 26 c6 87 62 02 ff
     mov word [es:bx+00260h], si               ; 26 89 b7 60 02
     db  066h, 026h, 0c7h, 087h, 064h, 002h, 000h, 0c0h, 00ch, 000h
     ; mov dword [es:bx+00264h], strict dword 0000cc000h ; 66 26 c7 87 64 02 00 c0 0c 00
-    mov bx, strict word 00001h                ; bb 01 00
+    mov ax, strict word 00004h                ; b8 04 00
     xor cx, cx                                ; 31 c9
-    mov dx, strict word 00004h                ; ba 04 00
-    mov ax, si                                ; 89 f0
-    call 08167h                               ; e8 7e f1
+    mov dx, si                                ; 89 f2
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea bx, [si+004h]                         ; 8d 5c 04
+    mov dx, bx                                ; 89 da
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    or AL, strict byte 001h                   ; 0c 01
+    mov cx, dx                                ; 89 d1
+    mov dx, bx                                ; 89 da
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
     mov ax, strict word 00004h                ; b8 04 00
     xor cx, cx                                ; 31 c9
@@ -13423,5 +13913,5 @@
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 08fe9h                          ; 75 de
+    jne short 09575h                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
@@ -13441,33 +13931,49 @@
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 0822ah                               ; e8 fb f1
+    call 0858ch                               ; e8 d1 ef
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    jmp short 09043h                          ; eb 09
+    jmp short 095e6h                          ; eb 20
+    xor al, al                                ; 30 c0
+    test al, al                               ; 84 c0
+    je short 095ddh                           ; 74 11
+    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
+    xor ax, ax                                ; 31 c0
+    mov dx, word [bp-010h]                    ; 8b 56 f0
+    call 08fe8h                               ; e8 10 fa
+    dec byte [bp-00eh]                        ; fe 4e f2
+    je short 0961fh                           ; 74 42
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
-    jnc short 09074h                          ; 73 31
+    jnc short 0961fh                          ; 73 39
     movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
-    mov ax, strict word 00001h                ; b8 01 00
-    xor dx, dx                                ; 31 d2
-    jcxz 09054h                               ; e3 06
-    sal ax, 1                                 ; d1 e0
-    rcl dx, 1                                 ; d1 d2
-    loop 0904eh                               ; e2 fa
-    mov bx, ax                                ; 89 c3
-    mov cx, dx                                ; 89 d1
-    mov dx, strict word 0000ch                ; ba 0c 00
-    mov ax, si                                ; 89 f0
-    call 081f1h                               ; e8 91 f1
-    test al, al                               ; 84 c0
-    je short 0903ah                           ; 74 d6
-    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
-    xor ax, ax                                ; 31 c0
-    mov dx, di                                ; 89 fa
-    call 08adeh                               ; e8 6f fa
-    dec byte [bp-00eh]                        ; fe 4e f2
-    jne short 0903ah                          ; 75 c6
+    mov bx, strict word 00001h                ; bb 01 00
+    xor di, di                                ; 31 ff
+    jcxz 095f7h                               ; e3 06
+    sal bx, 1                                 ; d1 e3
+    rcl di, 1                                 ; d1 d7
+    loop 095f1h                               ; e2 fa
+    mov ax, strict word 0000ch                ; b8 0c 00
+    xor cx, cx                                ; 31 c9
+    mov dx, si                                ; 89 f2
+    xchg cx, ax                               ; 91
+    sal eax, 010h                             ; 66 c1 e0 10
+    db  08bh, 0c1h
+    ; mov ax, cx                                ; 8b c1
+    out DX, eax                               ; 66 ef
+    lea dx, [si+004h]                         ; 8d 54 04
+    in eax, DX                                ; 66 ed
+    db  08bh, 0d0h
+    ; mov dx, ax                                ; 8b d0
+    shr eax, 010h                             ; 66 c1 e8 10
+    xchg dx, ax                               ; 92
+    test dx, di                               ; 85 fa
+    jne short 0961bh                          ; 75 04
+    test ax, bx                               ; 85 d8
+    je short 095c6h                           ; 74 ab
+    mov AL, strict byte 001h                  ; b0 01
+    jmp short 095c8h                          ; eb a9
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -13479,7 +13985,7 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 066h, 091h, 044h, 091h, 04ah, 091h, 050h, 091h, 056h
-    db  091h, 05ch, 091h, 062h, 091h, 066h, 091h
-_ahci_init:                                  ; 0xf9097 LB 0xfe
+    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 011h, 097h, 0efh, 096h, 0f5h, 096h, 0fbh, 096h, 001h
+    db  097h, 007h, 097h, 00dh, 097h, 011h, 097h
+_ahci_init:                                  ; 0xf9642 LB 0xfe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13489,8 +13995,8 @@
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 095b5h                               ; e8 0d 05
+    call 09b60h                               ; e8 0d 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je near 0918eh                            ; 0f 84 dd 00
+    je near 09739h                            ; 0f 84 dd 00
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
@@ -13500,8 +14006,8 @@
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 095e0h                               ; e8 1a 05
+    call 09b8bh                               ; e8 1a 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 090efh                           ; 74 23
+    je short 0969ah                           ; 74 23
     movzx bx, cl                              ; 0f b6 d9
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
@@ -13509,7 +14015,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 095e0h                               ; e8 02 05
+    call 09b8bh                               ; e8 02 05
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 090efh                           ; 74 0d
+    je short 0969ah                           ; 74 0d
     mov al, cl                                ; 88 c8
     db  0feh, 0c0h
@@ -13518,7 +14024,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    jmp short 090c3h                          ; eb d4
+    jmp short 0966eh                          ; eb d4
     test cl, cl                               ; 84 c9
-    je near 0918eh                            ; 0f 84 99 00
+    je near 09739h                            ; 0f 84 99 00
     add cl, 002h                              ; 80 c1 02
     movzx bx, cl                              ; 0f b6 d9
@@ -13527,7 +14033,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 095e0h                               ; e8 d6 04
+    call 09b8bh                               ; e8 d6 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne near 0918eh                           ; 0f 85 7e 00
+    jne near 09739h                           ; 0f 85 7e 00
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov al, cl                                ; 88 c8
@@ -13536,29 +14042,29 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 09604h                               ; e8 e2 04
+    call 09bafh                               ; e8 e2 04
     mov dx, ax                                ; 89 c2
     and ax, strict word 0000fh                ; 25 0f 00
     sub ax, strict word 00004h                ; 2d 04 00
     cmp ax, strict word 0000bh                ; 3d 0b 00
-    jnbe short 09166h                         ; 77 37
+    jnbe short 09711h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 09080h                            ; bf 80 90
+    mov di, 0962bh                            ; bf 2b 96
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-06f79h]               ; 2e 8b 85 87 90
+    mov ax, word [cs:di-069ceh]               ; 2e 8b 85 32 96
     jmp ax                                    ; ff e0
     mov byte [bp-006h], 010h                  ; c6 46 fa 10
-    jmp short 09166h                          ; eb 1c
+    jmp short 09711h                          ; eb 1c
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 09166h                          ; eb 16
+    jmp short 09711h                          ; eb 16
     mov byte [bp-006h], 018h                  ; c6 46 fa 18
-    jmp short 09166h                          ; eb 10
+    jmp short 09711h                          ; eb 10
     mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
-    jmp short 09166h                          ; eb 0a
+    jmp short 09711h                          ; eb 0a
     mov byte [bp-006h], 020h                  ; c6 46 fa 20
-    jmp short 09166h                          ; eb 04
+    jmp short 09711h                          ; eb 04
     mov byte [bp-006h], 024h                  ; c6 46 fa 24
     mov si, dx                                ; 89 d6
@@ -13567,14 +14073,14 @@
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test al, al                               ; 84 c0
-    je short 0918eh                           ; 74 19
+    je short 09739h                           ; 74 19
     movzx bx, al                              ; 0f b6 d8
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 09626h                               ; e8 a3 04
+    call 09bd1h                               ; e8 a3 04
     test AL, strict byte 001h                 ; a8 01
-    je short 0918eh                           ; 74 07
+    je short 09739h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, si                                ; 01 f0
-    call 08f72h                               ; e8 e4 fd
+    call 094dch                               ; e8 a3 fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -13582,5 +14088,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf9195 LB 0x39
+apm_out_str_:                                ; 0xf9740 LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13588,5 +14094,5 @@
     mov bx, ax                                ; 89 c3
     cmp byte [bx], 000h                       ; 80 3f 00
-    je short 091aah                           ; 74 0a
+    je short 09755h                           ; 74 0a
     mov al, byte [bx]                         ; 8a 07
     out DX, AL                                ; ee
@@ -13595,31 +14101,28 @@
     db  00ah, 0c0h
     ; or al, al                                 ; 0a c0
-    jne short 091a2h                          ; 75 f8
+    jne short 0974dh                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  0f1h
-    xchg cx, ax                               ; 91
-    mov bp, 00392h                            ; bd 92 03
-    xchg dx, ax                               ; 92
-    push DS                                   ; 1e
-    xchg dx, ax                               ; 92
-    mov bp, 04992h                            ; bd 92 49
-    xchg dx, ax                               ; 92
-    mov bp, 04e92h                            ; bd 92 4e
-    xchg dx, ax                               ; 92
-    xchg dx, ax                               ; 92
-    xchg dx, ax                               ; 92
-    xchg dx, ax                               ; 92
-    xchg dx, ax                               ; 92
-    xchg dx, ax                               ; 92
-    xchg dx, ax                               ; 92
-    lea dx, [bp+si-06d6eh]                    ; 8d 92 92 92
-    xchg dx, ax                               ; 92
-    xchg dx, ax                               ; 92
-    db  086h
-    xchg dx, ax                               ; 92
-_apm_function:                               ; 0xf91ce LB 0xf5
+    pushfw                                    ; 9c
+    xchg di, ax                               ; 97
+    push 0ae98h                               ; 68 98 ae
+    xchg di, ax                               ; 97
+    leave                                     ; c9
+    xchg di, ax                               ; 97
+    push 0f498h                               ; 68 98 f4
+    xchg di, ax                               ; 97
+    push 0f998h                               ; 68 98 f9
+    xchg di, ax                               ; 97
+    cmp ax, 03d98h                            ; 3d 98 3d
+    cbw                                       ; 98
+    cmp ax, 03898h                            ; 3d 98 38
+    cbw                                       ; 98
+    cmp ax, 03d98h                            ; 3d 98 3d
+    cbw                                       ; 98
+    db  031h
+    cbw                                       ; 98
+_apm_function:                               ; 0xf9779 LB 0xf5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13629,21 +14132,21 @@
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    jnbe near 09292h                          ; 0f 87 b0 00
+    jnbe near 0983dh                          ; 0f 87 b0 00
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     mov dx, word [bp+018h]                    ; 8b 56 18
     or dl, 001h                               ; 80 ca 01
-    jmp word [cs:bx-06e50h]                   ; 2e ff a7 b0 91
+    jmp word [cs:bx-068a5h]                   ; 2e ff a7 5b 97
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
     mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
     mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
-    jmp near 092bdh                           ; e9 ba 00
+    jmp near 09868h                           ; e9 ba 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
-    mov word [bp+00ch], 09824h                ; c7 46 0c 24 98
+    mov word [bp+00ch], 09de4h                ; c7 46 0c e4 9d
     mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
     mov ax, strict word 0fff0h                ; b8 f0 ff
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+004h], ax                    ; 89 46 04
-    jmp near 092bdh                           ; e9 9f 00
+    jmp near 09868h                           ; e9 9f 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
@@ -13658,41 +14161,41 @@
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 092bdh                           ; e9 74 00
+    jmp near 09868h                           ; e9 74 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 092bdh                           ; e9 6f 00
+    jmp near 09868h                           ; e9 6f 00
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 09273h                           ; 74 1f
+    je short 0981eh                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 0926bh                           ; 74 11
+    je short 09816h                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 0927bh                          ; 75 1b
+    jne short 09826h                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
-    mov ax, 00d12h                            ; b8 12 0d
-    call 09195h                               ; e8 2c ff
-    jmp short 092bdh                          ; eb 52
+    mov ax, 00d10h                            ; b8 10 0d
+    call 09740h                               ; e8 2c ff
+    jmp short 09868h                          ; eb 52
     mov dx, 08900h                            ; ba 00 89
-    mov ax, 00d1ah                            ; b8 1a 0d
-    jmp short 09266h                          ; eb f3
+    mov ax, 00d18h                            ; b8 18 0d
+    jmp short 09811h                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
-    mov ax, 00d22h                            ; b8 22 0d
-    jmp short 09266h                          ; eb eb
+    mov ax, 00d20h                            ; b8 20 0d
+    jmp short 09811h                          ; eb eb
     or ah, 00ah                               ; 80 cc 0a
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 092bdh                          ; eb 37
+    jmp short 09868h                          ; eb 37
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 092bdh                          ; eb 30
+    jmp short 09868h                          ; eb 30
     or ah, 080h                               ; 80 cc 80
-    jmp short 0927eh                          ; eb ec
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp short 09829h                          ; eb ec
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 94 86
+    call 01931h                               ; e8 e9 80
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
-    push 00d2bh                               ; 68 2b 0d
+    push 00d29h                               ; 68 29 0d
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 c7 86
+    call 01972h                               ; e8 1c 81
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -13705,5 +14208,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_select_reg_:                           ; 0xf92c3 LB 0x24
+pci16_select_reg_:                           ; 0xf986e LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13722,5 +14225,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf92e7 LB 0xf7
+pci16_find_device_:                          ; 0xf9892 LB 0xf7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13736,8 +14239,8 @@
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     test bl, 007h                             ; f6 c3 07
-    jne short 0932fh                          ; 75 2d
+    jne short 098dah                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 092c3h                               ; e8 b9 ff
+    call 0986eh                               ; e8 b9 ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -13746,23 +14249,23 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 0931dh                          ; 75 06
+    jne short 098c8h                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 093b0h                           ; e9 93 00
+    jmp near 0995bh                           ; e9 93 00
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 0932ah                           ; 74 07
+    je short 098d5h                           ; 74 07
     mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
-    jmp short 0932fh                          ; eb 05
+    jmp short 098dah                          ; eb 05
     mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 09357h                          ; 75 1f
+    jne short 09902h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 09357h                          ; 75 16
+    jne short 09902h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 092c3h                               ; e8 7a ff
+    call 0986eh                               ; e8 7a ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -13770,13 +14273,13 @@
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-008h]                    ; 3a 46 f8
-    jbe short 09357h                          ; 76 03
+    jbe short 09902h                          ; 76 03
     mov byte [bp-008h], al                    ; 88 46 f8
     test di, di                               ; 85 ff
-    je short 09360h                           ; 74 05
+    je short 0990bh                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 09362h                          ; eb 02
+    jmp short 0990dh                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 092c3h                               ; e8 5c ff
+    call 0986eh                               ; e8 5c ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -13789,22 +14292,22 @@
     mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
     test di, di                               ; 85 ff
-    je short 09391h                           ; 74 0f
+    je short 0993ch                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 09385h                               ; e2 fa
+    loop 09930h                               ; e2 fa
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov word [bp-00ch], dx                    ; 89 56 f4
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, word [bp-014h]                    ; 3b 46 ec
-    jne short 093a1h                          ; 75 08
+    jne short 0994ch                          ; 75 08
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 093a7h                           ; 74 06
+    je short 09952h                           ; 74 06
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    je short 093adh                           ; 74 06
+    je short 09958h                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 093bfh                           ; 74 12
+    je short 0996ah                           ; 74 12
     add bx, word [bp-00ah]                    ; 03 5e f6
     mov dx, bx                                ; 89 da
@@ -13812,9 +14315,9 @@
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cmp dx, ax                                ; 39 c2
-    jbe near 092fdh                           ; 0f 86 3e ff
+    jbe near 098a8h                           ; 0f 86 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 093c8h                          ; 75 04
+    jne short 09973h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 093cbh                          ; eb 03
+    jmp short 09976h                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -13823,10 +14326,9 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    rcl byte [si-06b26h], 0edh                ; c0 94 da 94 ed
-    xchg sp, ax                               ; 94
-    add dl, byte [di-06aebh]                  ; 02 95 15 95
-    db  028h
-    xchg bp, ax                               ; 95
-_pci16_function:                             ; 0xf93de LB 0x1d7
+    imul bx, word [bp+si-0657bh], strict byte 0ff98h ; 6b 9a 85 9a 98
+    call far 09ac0h:09aadh                    ; 9a ad 9a c0 9a
+    db  0d3h
+    db  09ah
+_pci16_function:                             ; 0xf9989 LB 0x1d7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13842,17 +14344,17 @@
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 09417h                           ; 72 1a
-    jbe short 0946fh                          ; 76 70
+    jc short 099c2h                           ; 72 1a
+    jbe short 09a1ah                          ; 76 70
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je near 0953ch                            ; 0f 84 36 01
+    je near 09ae7h                            ; 0f 84 36 01
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc near 09581h                            ; 0f 82 74 01
+    jc near 09b2ch                            ; 0f 82 74 01
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe near 09494h                           ; 0f 86 80 00
-    jmp near 09581h                           ; e9 6a 01
+    jbe near 09a3fh                           ; 0f 86 80 00
+    jmp near 09b2ch                           ; e9 6a 01
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 0943fh                           ; 74 23
+    je short 099eah                           ; 74 23
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jne near 09581h                           ; 0f 85 5e 01
+    jne near 09b2ch                           ; 0f 85 5e 01
     mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
     mov word [bp+014h], 00210h                ; c7 46 14 10 02
@@ -13860,49 +14362,49 @@
     mov word [bp+018h], 04350h                ; c7 46 18 50 43
     mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
-    jmp near 095aeh                           ; e9 6f 01
+    jmp near 09b59h                           ; e9 6f 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 0944bh                          ; 75 06
+    jne short 099f6h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 095a7h                           ; e9 5c 01
+    jmp near 09b52h                           ; e9 5c 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor cx, cx                                ; 31 c9
-    call 092e7h                               ; e8 8e fe
+    call 09892h                               ; e8 8e fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09469h                          ; 75 0b
+    jne short 09a14h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 095a7h                           ; e9 3e 01
+    jmp near 09b52h                           ; e9 3e 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 095aeh                           ; e9 3f 01
+    jmp near 09b59h                           ; e9 3f 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+01eh]                    ; 8b 56 1e
     mov cx, strict word 00001h                ; b9 01 00
-    call 092e7h                               ; e8 69 fe
+    call 09892h                               ; e8 69 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 0948eh                          ; 75 0b
+    jne short 09a39h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 095a7h                           ; e9 19 01
+    jmp near 09b52h                           ; e9 19 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 095aeh                           ; e9 1a 01
+    jmp near 09b59h                           ; e9 1a 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 094a1h                           ; 72 06
+    jc short 09a4ch                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 095a7h                           ; e9 06 01
+    jmp near 09b52h                           ; e9 06 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 092c3h                               ; e8 19 fe
+    call 0986eh                               ; e8 19 fe
     mov bx, word [bp+020h]                    ; 8b 5e 20
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00008h                ; 83 eb 08
     cmp bx, strict byte 00005h                ; 83 fb 05
-    jnbe near 095aeh                          ; 0f 87 f5 00
+    jnbe near 09b59h                          ; 0f 87 f5 00
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-06c2eh]                   ; 2e ff a7 d2 93
+    jmp word [cs:bx-06683h]                   ; 2e ff a7 7d 99
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
@@ -13915,5 +14417,5 @@
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp near 095aeh                           ; e9 d4 00
+    jmp near 09b59h                           ; e9 d4 00
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
@@ -13922,5 +14424,5 @@
     in ax, DX                                 ; ed
     mov word [bp+01ch], ax                    ; 89 46 1c
-    jmp near 095aeh                           ; e9 c1 00
+    jmp near 09b59h                           ; e9 c1 00
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -13931,5 +14433,5 @@
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp near 095aeh                           ; e9 ac 00
+    jmp near 09b59h                           ; e9 ac 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -13938,5 +14440,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp near 095aeh                           ; e9 99 00
+    jmp near 09b59h                           ; e9 99 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -13945,5 +14447,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp near 095aeh                           ; e9 86 00
+    jmp near 09b59h                           ; e9 86 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov cx, word [bp+01eh]                    ; 8b 4e 1e
@@ -13954,5 +14456,5 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 095aeh                          ; eb 72
+    jmp short 09b59h                          ; eb 72
     mov bx, word [bp+004h]                    ; 8b 5e 04
     mov es, [bp+026h]                         ; 8e 46 26
@@ -13961,5 +14463,5 @@
     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 09562h                          ; 76 11
+    jbe short 09b0dh                          ; 76 11
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -13967,5 +14469,5 @@
     mov word [bp+020h], ax                    ; 89 46 20
     or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
-    jmp short 09576h                          ; eb 14
+    jmp short 09b21h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
@@ -13979,16 +14481,16 @@
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 095aeh                          ; eb 2d
-    mov bx, 00da2h                            ; bb a2 0d
+    jmp short 09b59h                          ; eb 2d
+    mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01931h                               ; e8 a5 83
+    call 01931h                               ; e8 fa 7d
     mov ax, word [bp+014h]                    ; 8b 46 14
     push ax                                   ; 50
     mov ax, word [bp+020h]                    ; 8b 46 20
     push ax                                   ; 50
-    push 00d5eh                               ; 68 5e 0d
+    push 00d5ch                               ; 68 5c 0d
     push strict byte 00004h                   ; 6a 04
-    call 01972h                               ; e8 d6 83
+    call 01972h                               ; e8 2b 7e
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -14002,5 +14504,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf95b5 LB 0x2b
+pci_find_classcode_:                         ; 0xf9b60 LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14017,5 +14519,5 @@
     int 01ah                                  ; cd 1a
     cmp ah, 000h                              ; 80 fc 00
-    je near 095d6h                            ; 0f 84 03 00
+    je near 09b81h                            ; 0f 84 03 00
     mov bx, strict word 0ffffh                ; bb ff ff
     mov ax, bx                                ; 89 d8
@@ -14026,5 +14528,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf95e0 LB 0x24
+pci_read_config_byte_:                       ; 0xf9b8b LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14045,5 +14547,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf9604 LB 0x22
+pci_read_config_word_:                       ; 0xf9baf LB 0x22
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14064,5 +14566,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf9626 LB 0x27
+pci_read_config_dword_:                      ; 0xf9bd1 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14085,5 +14587,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf964d LB 0x1d
+vds_is_present_:                             ; 0xf9bf8 LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
@@ -14093,5 +14595,5 @@
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 09665h                           ; 74 06
+    je short 09c10h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -14102,5 +14604,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf966a LB 0x1e
+vds_real_to_lin_:                            ; 0xf9c15 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -14113,5 +14615,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09678h                               ; e2 fa
+    loop 09c23h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -14121,5 +14623,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9688 LB 0x79
+vds_build_sg_list_:                          ; 0xf9c33 LB 0x79
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14135,21 +14637,21 @@
     mov bx, word [bp+006h]                    ; 8b 5e 06
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 0966ah                               ; e8 c3 ff
+    call 09c15h                               ; 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 0964dh                               ; e8 93 ff
+    call 09bf8h                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 096d1h                           ; 74 13
+    je short 09c7ch                           ; 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 096ceh                            ; 0f 82 02 00
+    jc near 09c79h                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 096f8h                          ; eb 27
+    jmp short 09ca3h                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
@@ -14168,5 +14670,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf9701 LB 0x3f
+vds_free_sg_list_:                           ; 0xf9cac LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14174,7 +14676,7 @@
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 0964dh                               ; e8 42 ff
+    call 09bf8h                               ; e8 42 ff
     test ax, ax                               ; 85 c0
-    je short 09722h                           ; 74 13
+    je short 09ccdh                           ; 74 13
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
@@ -14182,5 +14684,5 @@
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 09721h                            ; 0f 82 02 00
+    jc near 09ccch                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
@@ -14193,6 +14695,6 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0xf db 0
-__U4D:                                       ; 0xf9740 LB 0x39
+    times 0x4 db 0
+__U4D:                                       ; 0xf9ce0 LB 0x39
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -14224,5 +14726,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-__U4M:                                       ; 0xf9779 LB 0x31
+__U4M:                                       ; 0xf9d19 LB 0x31
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -14249,5 +14751,25 @@
     popfw                                     ; 9d
     retn                                      ; c3
-_fmemset_:                                   ; 0xf97aa LB 0xd
+__U8LS:                                      ; 0xf9d4a LB 0x10
+    test si, si                               ; 85 f6
+    je short 09d59h                           ; 74 0b
+    sal dx, 1                                 ; d1 e2
+    rcl cx, 1                                 ; d1 d1
+    rcl bx, 1                                 ; d1 d3
+    rcl ax, 1                                 ; d1 d0
+    dec si                                    ; 4e
+    jne short 09d4eh                          ; 75 f5
+    retn                                      ; c3
+__U8RS:                                      ; 0xf9d5a LB 0x10
+    test si, si                               ; 85 f6
+    je short 09d69h                           ; 74 0b
+    shr ax, 1                                 ; d1 e8
+    rcr bx, 1                                 ; d1 db
+    rcr cx, 1                                 ; d1 d9
+    rcr dx, 1                                 ; d1 da
+    dec si                                    ; 4e
+    jne short 09d5eh                          ; 75 f5
+    retn                                      ; c3
+_fmemset_:                                   ; 0xf9d6a LB 0xd
     push di                                   ; 57
     mov es, dx                                ; 8e c2
@@ -14259,5 +14781,5 @@
     pop di                                    ; 5f
     retn                                      ; c3
-_fmemcpy_:                                   ; 0xf97b7 LB 0x33
+_fmemcpy_:                                   ; 0xf9d77 LB 0x33
     push bp                                   ; 55
     db  08bh, 0ech
@@ -14279,19 +14801,20 @@
     leave                                     ; c9
     retn                                      ; c3
-    add byte [bx+si], al                      ; 00 00
-    cbw                                       ; 98
-    add bl, byte [bx+si-067fah]               ; 02 98 06 98
-    push ES                                   ; 06
-    cbw                                       ; 98
-    push ES                                   ; 06
-    cbw                                       ; 98
-    or byte [bx+si-067f8h], bl                ; 08 98 08 98
-    or bl, byte [bx+si-067f2h]                ; 0a 98 0e 98
-    push CS                                   ; 0e
-    cbw                                       ; 98
-    adc byte [bx+si-067ebh], bl               ; 10 98 15 98
-    pop SS                                    ; 17
-    cbw                                       ; 98
-apm_worker:                                  ; 0xf97ea LB 0x3a
+    add al, al                                ; 00 c0
+    popfw                                     ; 9d
+    retn 0c69dh                               ; c2 9d c6
+    popfw                                     ; 9d
+    db  0c6h, 09dh, 0c6h, 09dh, 0c8h
+    ; mov byte [di-0623ah], 0c8h                ; c6 9d c6 9d c8
+    popfw                                     ; 9d
+    enter 0ca9dh, 09dh                        ; c8 9d ca 9d
+    into                                      ; ce
+    popfw                                     ; 9d
+    into                                      ; ce
+    popfw                                     ; 9d
+    rcr byte [di-0622bh], 1                   ; d0 9d d5 9d
+    xlatb                                     ; d7
+    popfw                                     ; 9d
+apm_worker:                                  ; 0xf9daa LB 0x3a
     sti                                       ; fb
     push ax                                   ; 50
@@ -14305,21 +14828,21 @@
     pop ax                                    ; 58
     mov AH, strict byte 053h                  ; b4 53
-    jnc short 09820h                          ; 73 25
-    jmp word [cs:bp-06830h]                   ; 2e ff a6 d0 97
-    jmp short 0981eh                          ; eb 1c
+    jnc short 09de0h                          ; 73 25
+    jmp word [cs:bp-06270h]                   ; 2e ff a6 90 9d
+    jmp short 09ddeh                          ; eb 1c
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 0981eh                          ; eb 18
-    jmp short 0981eh                          ; eb 16
-    jmp short 09820h                          ; eb 16
+    jmp short 09ddeh                          ; eb 18
+    jmp short 09ddeh                          ; eb 16
+    jmp short 09de0h                          ; eb 16
     mov AH, strict byte 080h                  ; b4 80
-    jmp short 09822h                          ; eb 14
-    jmp short 09820h                          ; eb 10
+    jmp short 09de2h                          ; eb 14
+    jmp short 09de0h                          ; eb 10
     mov ax, 00102h                            ; b8 02 01
-    jmp short 0981eh                          ; eb 09
-    jmp short 0981eh                          ; eb 07
+    jmp short 09ddeh                          ; eb 09
+    jmp short 09ddeh                          ; eb 07
     mov BL, strict byte 000h                  ; b3 00
     mov cx, strict word 00000h                ; b9 00 00
-    jmp short 0981eh                          ; eb 00
+    jmp short 09ddeh                          ; eb 00
     clc                                       ; f8
     retn                                      ; c3
@@ -14327,5 +14850,5 @@
     stc                                       ; f9
     retn                                      ; c3
-apm_pm16_entry:                              ; 0xf9824 LB 0x11
+apm_pm16_entry:                              ; 0xf9de4 LB 0x11
     mov AH, strict byte 002h                  ; b4 02
     push DS                                   ; 1e
@@ -14335,11 +14858,11 @@
     add bp, strict byte 00008h                ; 83 c5 08
     mov ds, bp                                ; 8e dd
-    call 097eah                               ; e8 b8 ff
+    call 09daah                               ; e8 b8 ff
     pop bp                                    ; 5d
     pop DS                                    ; 1f
     retf                                      ; cb
 
-  ; Padding 0x41cb bytes at 0xf9835
-  times 16843 db 0
+  ; Padding 0x3c0b bytes at 0xf9df5
+  times 15371 db 0
 
 section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
@@ -14388,5 +14911,5 @@
     add bp, strict byte 00008h                ; 83 c5 08
     push ebp                                  ; 66 55
-    mov bp, 09826h                            ; bd 26 98
+    mov bp, 09de6h                            ; bd e6 9d
     add byte [bx+si], al                      ; 00 00
     push ebp                                  ; 66 55
@@ -14994,5 +15517,5 @@
     mov dx, 0c800h                            ; ba 00 c8
     call 01600h                               ; e8 e7 33
-    call 04b77h                               ; e8 5b 69
+    call 04e4ch                               ; e8 30 6c
     pop DS                                    ; 1f
     mov ax, 0ff53h                            ; b8 53 ff
@@ -15108,8 +15631,8 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 01badh                               ; e8 71 38
-    call 01fa7h                               ; e8 68 3c
-    call 09097h                               ; e8 55 ad
-    call 080d3h                               ; e8 8e 9d
+    call 01cafh                               ; e8 73 39
+    call 0213ch                               ; e8 fd 3d
+    call 09642h                               ; e8 00 b3
+    call 08526h                               ; e8 e1 a1
     call 0ed2fh                               ; e8 e7 09
     call 0e2d2h                               ; e8 87 ff
@@ -15121,5 +15644,5 @@
     call 01600h                               ; e8 a9 32
     call 01797h                               ; e8 3d 34
-    call 0385bh                               ; e8 fe 54
+    call 03b30h                               ; e8 d3 57
     sti                                       ; fb
     int 019h                                  ; cd 19
@@ -15219,5 +15742,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05f61h                               ; e8 1f 78
+    call 062aeh                               ; e8 6c 7b
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -15294,5 +15817,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 052cfh                               ; e8 8d 6a
+    call 055a4h                               ; e8 62 6d
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -15311,5 +15834,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 052cfh                               ; e8 6f 6a
+    call 055a4h                               ; e8 44 6d
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -15413,5 +15936,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 04e74h                               ; e8 a5 64
+    call 05149h                               ; e8 7a 67
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -15429,5 +15952,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 069b9h                               ; e8 d4 7f
+    call 06d06h                               ; e8 21 83
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -15450,5 +15973,5 @@
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 0389fh                           ; e9 2e 4c
+    jmp near 03b74h                           ; e9 03 4f
     push ES                                   ; 06
     push ax                                   ; 50
@@ -15456,8 +15979,8 @@
     push cx                                   ; 51
     push dx                                   ; 52
-    call 03873h                               ; e8 fa 4b
+    call 03b48h                               ; e8 cf 4e
     cmp AL, strict byte 000h                  ; 3c 00
     je short 0ecabh                           ; 74 2e
-    call 03889h                               ; e8 09 4c
+    call 03b5eh                               ; e8 de 4e
     pop dx                                    ; 5a
     push dx                                   ; 52
@@ -15477,5 +16000,5 @@
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 03e73h                           ; e9 dc 51
+    jmp near 04148h                           ; e9 b1 54
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
@@ -15517,5 +16040,5 @@
     jne short 0ecc8h                          ; 75 06
     push 0ece9h                               ; 68 e9 ec
-    jmp near 02f2eh                           ; e9 66 42
+    jmp near 03203h                           ; e9 3b 45
 int13_notfloppy:                             ; 0xfecc8 LB 0x14
     cmp dl, 0e0h                              ; 80 fa e0
@@ -15523,5 +16046,5 @@
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 042a7h                               ; e8 d2 55
+    call 0457ch                               ; e8 a7 58
     pop bx                                    ; 5b
     sal ebx, 010h                             ; 66 c1 e3 10
@@ -15530,7 +16053,7 @@
     cmp ah, 040h                              ; 80 fc 40
     jnbe short 0ece6h                         ; 77 05
-    call 05654h                               ; e8 70 69
+    call 05970h                               ; e8 8c 6c
     jmp short 0ece9h                          ; eb 03
-    call 05a95h                               ; e8 ac 6d
+    call 05dbah                               ; e8 d1 70
 int13_out:                                   ; 0xfece9 LB 0x4
     pop DS                                    ; 1f
@@ -15745,5 +16268,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07313h                               ; e8 36 83
+    call 07660h                               ; e8 83 86
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -15793,5 +16316,5 @@
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 0490eh                               ; e8 3e 58
+    call 04be3h                               ; e8 13 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -15800,5 +16323,5 @@
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 0490eh                               ; e8 31 58
+    call 04be3h                               ; e8 06 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -15807,5 +16330,5 @@
     mov ax, strict word 00003h                ; b8 03 00
     push strict byte 00003h                   ; 6a 03
-    call 0490eh                               ; e8 23 58
+    call 04be3h                               ; e8 f8 5a
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -15814,5 +16337,5 @@
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 0490eh                               ; e8 16 58
+    call 04be3h                               ; e8 eb 5a
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -16105,5 +16628,5 @@
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f887h                           ; 74 0e
-    call 0616eh                               ; e8 f2 68
+    call 064bbh                               ; e8 3f 6c
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -16111,12 +16634,12 @@
     popfw                                     ; 9d
     jmp short 0f895h                          ; eb 13
-    call 091ceh                               ; e8 49 99
+    call 09779h                               ; e8 f4 9e
     jmp short 0f87ch                          ; eb f5
 int15_handler_mouse:                         ; 0xff887 LB 0x5
-    call 06f88h                               ; e8 fe 76
+    call 072d5h                               ; e8 4b 7a
     jmp short 0f87ch                          ; eb f0
 int15_handler32:                             ; 0xff88c LB 0x9
     pushad                                    ; 66 60
-    call 0663bh                               ; e8 aa 6d
+    call 06988h                               ; e8 f7 70
     popad                                     ; 66 61
     jmp short 0f87dh                          ; eb e8
@@ -16148,5 +16671,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06ebeh                               ; e8 01 76
+    call 0720bh                               ; e8 4e 79
     pop cx                                    ; 59
     jcxz 0f8cch                               ; e3 0c
@@ -16240,6 +16763,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, 061h, 095h, 066h
-    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 0cah, 06dh, 061h, 01fh, 007h
+    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 00ch, 09bh, 066h
+    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 017h, 071h, 061h, 01fh, 007h
     db  0cfh
 int70_handler:                               ; 0xffe8f LB 0x16
@@ -16250,5 +16773,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06b97h                               ; e8 ff 6c
+    call 06ee4h                               ; e8 4c 70
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -16349,3 +16872,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, 087h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0e4h
Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 58830)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 58831)
@@ -1,1 +1,1 @@
-6d3230e23c6948548bc0468e6f090fbd *VBoxPcBios.rom
+ab1e993b060084077a7d481b70e44ab8 *VBoxPcBios.rom
