Index: /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.asm	(revision 50158)
+++ /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.asm	(revision 50159)
@@ -1643,5 +1643,5 @@
     movzx bx, ch                              ; 0f b6 dd
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     jne short 00b5ah                          ; 75 2d
     mov dx, ax                                ; 89 c2
@@ -1659,5 +1659,5 @@
     mov dx, cx                                ; 89 ca
     add dx, ax                                ; 01 c2
-    mov ax, word [bx+04836h]                  ; 8b 87 36 48
+    mov ax, word [bx+04833h]                  ; 8b 87 33 48
     call 02f93h                               ; e8 3c 24
     mov word [ss:si], ax                      ; 36 89 04
@@ -1725,16 +1725,16 @@
     mov dx, 0010ch                            ; ba 0c 01
     jmp short 00b91h                          ; eb bf
-    mov ax, 05db2h                            ; b8 b2 5d
+    mov ax, 05dafh                            ; b8 af 5d
     mov dx, 0c000h                            ; ba 00 c0
     jmp short 00b96h                          ; eb bc
-    mov ax, 055b2h                            ; b8 b2 55
+    mov ax, 055afh                            ; b8 af 55
     jmp short 00bd5h                          ; eb f6
-    mov ax, 059b2h                            ; b8 b2 59
+    mov ax, 059afh                            ; b8 af 59
     jmp short 00bd5h                          ; eb f1
-    mov ax, 07bb2h                            ; b8 b2 7b
+    mov ax, 07bafh                            ; b8 af 7b
     jmp short 00bd5h                          ; eb ec
-    mov ax, 06bb2h                            ; b8 b2 6b
+    mov ax, 06bafh                            ; b8 af 6b
     jmp short 00bd5h                          ; eb e7
-    mov ax, 07cdfh                            ; b8 df 7c
+    mov ax, 07cdch                            ; b8 dc 7c
     jmp short 00bd5h                          ; eb e2
     jmp short 00bc4h                          ; eb cf
@@ -1758,7 +1758,7 @@
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     je near 00d27h                            ; 0f 84 fe 00
-    mov bl, byte [bx+04834h]                  ; 8a 9f 34 48
+    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
     cmp bl, 003h                              ; 80 fb 03
     jc short 00c43h                           ; 72 11
@@ -1819,5 +1819,5 @@
     movzx bx, cl                              ; 0f b6 d9
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04835h], 002h                ; 80 bf 35 48 02
+    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
     jne short 00cebh                          ; 75 1b
     mov cx, si                                ; 89 f1
@@ -2120,5 +2120,5 @@
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
+    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
     jne short 00f83h                          ; 75 40
     mov dx, strict word 0004ah                ; ba 4a 00
@@ -2147,8 +2147,8 @@
     imul bx, di                               ; 0f af df
     jmp short 00f95h                          ; eb 12
-    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
+    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     sal bx, 006h                              ; c1 e3 06
     movzx ax, cl                              ; 0f b6 c1
-    mov bx, word [bx+048c9h]                  ; 8b 9f c9 48
+    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
     imul bx, ax                               ; 0f af d8
     mov dx, strict word 00063h                ; ba 63 00
@@ -2215,13 +2215,13 @@
     je near 01359h                            ; 0f 84 43 03
     movzx si, al                              ; 0f b6 f0
-    mov al, byte [si+048b2h]                  ; 8a 84 b2 48
+    mov al, byte [si+048afh]                  ; 8a 84 af 48
     mov byte [bp-00ch], al                    ; 88 46 f4
     movzx bx, al                              ; 0f b6 d8
     sal bx, 006h                              ; c1 e3 06
-    movzx ax, byte [bx+048c6h]                ; 0f b6 87 c6 48
+    movzx ax, byte [bx+048c3h]                ; 0f b6 87 c3 48
     mov word [bp-018h], ax                    ; 89 46 e8
-    movzx ax, byte [bx+048c7h]                ; 0f b6 87 c7 48
+    movzx ax, byte [bx+048c4h]                ; 0f b6 87 c4 48
     mov word [bp-016h], ax                    ; 89 46 ea
-    movzx ax, byte [bx+048c8h]                ; 0f b6 87 c8 48
+    movzx ax, byte [bx+048c5h]                ; 0f b6 87 c5 48
     mov word [bp-014h], ax                    ; 89 46 ec
     mov dx, 00087h                            ; ba 87 00
@@ -2239,5 +2239,5 @@
     mov bx, si                                ; 89 f3
     sal bx, 003h                              ; c1 e3 03
-    mov al, byte [bx+04838h]                  ; 8a 87 38 48
+    mov al, byte [bx+04835h]                  ; 8a 87 35 48
     mov dx, 003c6h                            ; ba c6 03
     out DX, AL                                ; ee
@@ -2245,5 +2245,5 @@
     mov dx, 003c8h                            ; ba c8 03
     out DX, AL                                ; ee
-    mov bl, byte [bx+04839h]                  ; 8a 9f 39 48
+    mov bl, byte [bx+04836h]                  ; 8a 9f 36 48
     cmp bl, 001h                              ; 80 fb 01
     jc short 0108bh                           ; 72 0e
@@ -2256,11 +2256,11 @@
     test bl, bl                               ; 84 db
     jne short 010a1h                          ; 75 12
-    mov di, 05046h                            ; bf 46 50
+    mov di, 05043h                            ; bf 43 50
     jmp short 010a1h                          ; eb 0d
-    mov di, 05106h                            ; bf 06 51
+    mov di, 05103h                            ; bf 03 51
     jmp short 010a1h                          ; eb 08
-    mov di, 051c6h                            ; bf c6 51
+    mov di, 051c3h                            ; bf c3 51
     jmp short 010a1h                          ; eb 03
-    mov di, 05286h                            ; bf 86 52
+    mov di, 05283h                            ; bf 83 52
     xor bx, bx                                ; 31 db
     jmp short 010b4h                          ; eb 0f
@@ -2275,6 +2275,6 @@
     movzx si, byte [bp-012h]                  ; 0f b6 76 ee
     sal si, 003h                              ; c1 e6 03
-    movzx si, byte [si+04839h]                ; 0f b6 b4 39 48
-    movzx dx, byte [si+048c2h]                ; 0f b6 94 c2 48
+    movzx si, byte [si+04836h]                ; 0f b6 b4 36 48
+    movzx dx, byte [si+048bfh]                ; 0f b6 94 bf 48
     cmp bx, dx                                ; 39 d3
     jnbe short 010a5h                         ; 77 dc
@@ -2308,5 +2308,5 @@
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048e9h]                  ; 8a 84 e9 48
+    mov al, byte [si+048e6h]                  ; 8a 84 e6 48
     out DX, AL                                ; ee
     inc bx                                    ; 43
@@ -2332,5 +2332,5 @@
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048cah]                  ; 8a 84 ca 48
+    mov al, byte [si+048c7h]                  ; 8a 84 c7 48
     mov dx, 003c5h                            ; ba c5 03
     out DX, AL                                ; ee
@@ -2347,5 +2347,5 @@
     sal si, 006h                              ; c1 e6 06
     add si, bx                                ; 01 de
-    mov al, byte [si+048fdh]                  ; 8a 84 fd 48
+    mov al, byte [si+048fah]                  ; 8a 84 fa 48
     mov dx, 003cfh                            ; ba cf 03
     out DX, AL                                ; ee
@@ -2354,5 +2354,5 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04834h], 001h                ; 80 bf 34 48 01
+    cmp byte [bx+04831h], 001h                ; 80 bf 31 48 01
     jne short 0117eh                          ; 75 05
     mov dx, 003b4h                            ; ba b4 03
@@ -2374,10 +2374,10 @@
     add di, bx                                ; 01 df
     lea dx, [si+001h]                         ; 8d 54 01
-    mov al, byte [di+048d0h]                  ; 8a 85 d0 48
+    mov al, byte [di+048cdh]                  ; 8a 85 cd 48
     out DX, AL                                ; ee
     inc bx                                    ; 43
     jmp short 0118bh                          ; eb e0
     mov bx, cx                                ; 89 cb
-    mov al, byte [bx+048cfh]                  ; 8a 87 cf 48
+    mov al, byte [bx+048cch]                  ; 8a 87 cc 48
     mov dx, 003c2h                            ; ba c2 03
     out DX, AL                                ; ee
@@ -2393,7 +2393,7 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     jne short 011e8h                          ; 75 13
-    mov es, [bx+04836h]                       ; 8e 87 36 48
+    mov es, [bx+04833h]                       ; 8e 87 33 48
     mov cx, 04000h                            ; b9 00 40
     mov ax, 00720h                            ; b8 20 07
@@ -2405,5 +2405,5 @@
     cmp byte [bp-00eh], 00dh                  ; 80 7e f2 0d
     jnc short 01200h                          ; 73 12
-    mov es, [bx+04836h]                       ; 8e 87 36 48
+    mov es, [bx+04833h]                       ; 8e 87 33 48
     mov cx, 04000h                            ; b9 00 40
     xor ax, ax                                ; 31 c0
@@ -2423,5 +2423,5 @@
     mov AL, strict byte 00fh                  ; b0 0f
     out DX, AL                                ; ee
-    mov es, [bx+04836h]                       ; 8e 87 36 48
+    mov es, [bx+04833h]                       ; 8e 87 33 48
     mov cx, 08000h                            ; b9 00 80
     xor ax, ax                                ; 31 c0
@@ -2442,5 +2442,5 @@
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     sal bx, 006h                              ; c1 e3 06
-    mov bx, word [bx+048c9h]                  ; 8b 9f c9 48
+    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
     mov dx, strict word 0004ch                ; ba 4c 00
     mov ax, strict word 00040h                ; b8 40 00
@@ -2481,5 +2481,5 @@
     call 02f85h                               ; e8 ce 1c
     mov cx, ds                                ; 8c d9
-    mov bx, 05596h                            ; bb 96 55
+    mov bx, 05593h                            ; bb 93 55
     mov dx, 000a8h                            ; ba a8 00
     mov ax, strict word 00040h                ; b8 40 00
@@ -2495,5 +2495,5 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     jne short 012f2h                          ; 75 09
     mov dx, strict word 00007h                ; ba 07 00
@@ -2513,5 +2513,5 @@
     movzx bx, byte [bp-012h]                  ; 0f b6 5e ee
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     jne short 01329h                          ; 75 10
     xor bl, bl                                ; 30 db
@@ -2523,5 +2523,5 @@
     mov AH, strict byte 011h                  ; b4 11
     int 010h                                  ; cd 10
-    mov dx, 059b2h                            ; ba b2 59
+    mov dx, 059afh                            ; ba af 59
     mov ax, strict word 0001fh                ; b8 1f 00
     call 00a00h                               ; e8 ce f6
@@ -2533,11 +2533,11 @@
     cmp ax, strict word 00008h                ; 3d 08 00
     jne short 01359h                          ; 75 15
-    mov dx, 055b2h                            ; ba b2 55
+    mov dx, 055afh                            ; ba af 55
     mov ax, strict word 00043h                ; b8 43 00
     call 00a00h                               ; e8 b3 f6
     jmp short 01359h                          ; eb 0a
-    mov dx, 05db2h                            ; ba b2 5d
+    mov dx, 05dafh                            ; ba af 5d
     jmp short 01347h                          ; eb f3
-    mov dx, 06bb2h                            ; ba b2 6b
+    mov dx, 06bafh                            ; ba af 6b
     jmp short 01347h                          ; eb ee
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -2849,5 +2849,5 @@
     mov ax, word [bp-016h]                    ; 8b 46 ea
     imul ax, cx                               ; 0f af c1
-    cmp byte [di+04833h], 000h                ; 80 bd 33 48 00
+    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
     jne near 017c7h                           ; 0f 85 9f 01
     mov dx, ax                                ; 89 c2
@@ -2872,5 +2872,5 @@
     sal dx, 008h                              ; c1 e2 08
     add dx, strict byte 00020h                ; 83 c2 20
-    mov es, [di+04836h]                       ; 8e 85 36 48
+    mov es, [di+04833h]                       ; 8e 85 33 48
     mov cx, ax                                ; 89 c1
     mov ax, dx                                ; 89 d0
@@ -2906,5 +2906,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov es, [si+04836h]                       ; 8e 84 36 48
+    mov es, [si+04833h]                       ; 8e 84 33 48
     cld                                       ; fc
     jcxz 016d3h                               ; e3 02
@@ -2920,5 +2920,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    mov ax, word [si+04833h]                  ; 8b 84 33 48
     mov si, word [bp-014h]                    ; 8b 76 ec
     imul si, word [bp-016h]                   ; 0f af 76 ea
@@ -2964,5 +2964,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov es, [si+04836h]                       ; 8e 84 36 48
+    mov es, [si+04833h]                       ; 8e 84 33 48
     cld                                       ; fc
     jcxz 01774h                               ; e3 02
@@ -2979,5 +2979,5 @@
     movzx si, byte [bp-00eh]                  ; 0f b6 76 f2
     sal si, 003h                              ; c1 e6 03
-    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    mov ax, word [si+04833h]                  ; 8b 84 33 48
     mov si, word [bp-014h]                    ; 8b 76 ec
     imul si, word [bp-016h]                   ; 0f af 76 ea
@@ -2999,9 +2999,9 @@
     dec word [bp-014h]                        ; ff 4e ec
     jmp near 01723h                           ; e9 5c ff
-    movzx bx, byte [si+048b2h]                ; 0f b6 9c b2 48
+    movzx bx, byte [si+048afh]                ; 0f b6 9c af 48
     sal bx, 006h                              ; c1 e3 06
-    mov dl, byte [bx+048c8h]                  ; 8a 97 c8 48
+    mov dl, byte [bx+048c5h]                  ; 8a 97 c5 48
     mov byte [bp-00ah], dl                    ; 88 56 f6
-    mov bl, byte [di+04834h]                  ; 8a 9d 34 48
+    mov bl, byte [di+04831h]                  ; 8a 9d 31 48
     cmp bl, 004h                              ; 80 fb 04
     je short 017eeh                           ; 74 0f
@@ -3036,5 +3036,5 @@
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     sal bx, 003h                              ; c1 e3 03
-    mov es, [bx+04836h]                       ; 8e 87 36 48
+    mov es, [bx+04833h]                       ; 8e 87 33 48
     xor di, di                                ; 31 ff
     cld                                       ; fc
@@ -3118,5 +3118,5 @@
     dec word [bp-014h]                        ; ff 4e ec
     jmp short 018bch                          ; eb 8f
-    mov dl, byte [di+04835h]                  ; 8a 95 35 48
+    mov dl, byte [di+04832h]                  ; 8a 95 32 48
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
     jne short 01974h                          ; 75 3d
@@ -3136,5 +3136,5 @@
     imul cx, ax                               ; 0f af c8
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    mov es, [di+04836h]                       ; 8e 85 36 48
+    mov es, [di+04833h]                       ; 8e 85 33 48
     xor di, di                                ; 31 ff
     cld                                       ; fc
@@ -3238,9 +3238,9 @@
     cmp byte [bp+006h], 00eh                  ; 80 7e 06 0e
     jne short 01a91h                          ; 75 0a
-    mov di, 05db2h                            ; bf b2 5d
+    mov di, 05dafh                            ; bf af 5d
     jmp short 01a94h                          ; eb 08
-    mov di, 06bb2h                            ; bf b2 6b
+    mov di, 06bafh                            ; bf af 6b
     jmp short 01a94h                          ; eb 03
-    mov di, 055b2h                            ; bf b2 55
+    mov di, 055afh                            ; bf af 55
     movzx si, cl                              ; 0f b6 f1
     movzx bx, byte [bp+006h]                  ; 0f b6 5e 06
@@ -3329,5 +3329,5 @@
     sub sp, strict byte 00008h                ; 83 ec 08
     mov byte [bp-008h], dl                    ; 88 56 f8
-    mov si, 055b2h                            ; be b2 55
+    mov si, 055afh                            ; be af 55
     xor bh, bh                                ; 30 ff
     movzx di, byte [bp+006h]                  ; 0f b6 7e 06
@@ -3443,5 +3443,5 @@
     sub sp, strict byte 00008h                ; 83 ec 08
     mov byte [bp-006h], dl                    ; 88 56 fa
-    mov di, 055b2h                            ; bf b2 55
+    mov di, 055afh                            ; bf af 55
     movzx dx, cl                              ; 0f b6 d1
     movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
@@ -3538,5 +3538,5 @@
     mov di, bx                                ; 89 df
     sal di, 003h                              ; c1 e7 03
-    cmp byte [di+04833h], 000h                ; 80 bd 33 48 00
+    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
     jne short 01dc3h                          ; 75 47
     mov bx, word [bp-018h]                    ; 8b 5e e8
@@ -3559,5 +3559,5 @@
     mov word [bp-01ah], ax                    ; 89 46 e6
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    mov es, [di+04836h]                       ; 8e 85 36 48
+    mov es, [di+04833h]                       ; 8e 85 33 48
     mov cx, si                                ; 89 f1
     mov di, dx                                ; 89 d7
@@ -3566,9 +3566,9 @@
     rep stosw                                 ; f3 ab
     jmp near 01e69h                           ; e9 a6 00
-    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
+    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     sal bx, 006h                              ; c1 e3 06
-    mov al, byte [bx+048c8h]                  ; 8a 87 c8 48
+    mov al, byte [bx+048c5h]                  ; 8a 87 c5 48
     mov byte [bp-008h], al                    ; 88 46 f8
-    mov al, byte [di+04835h]                  ; 8a 85 35 48
+    mov al, byte [di+04832h]                  ; 8a 85 32 48
     mov byte [bp-014h], al                    ; 88 46 ec
     dec si                                    ; 4e
@@ -3580,5 +3580,5 @@
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     sal bx, 003h                              ; c1 e3 03
-    mov al, byte [bx+04834h]                  ; 8a 87 34 48
+    mov al, byte [bx+04831h]                  ; 8a 87 31 48
     cmp AL, strict byte 003h                  ; 3c 03
     jc short 01e07h                           ; 72 0c
@@ -3668,5 +3668,5 @@
     mov bx, di                                ; 89 fb
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     jne short 01f2eh                          ; 75 4a
     mov dx, word [bp-018h]                    ; 8b 56 e8
@@ -3690,5 +3690,5 @@
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     sal bx, 003h                              ; c1 e3 03
-    mov di, word [bx+04836h]                  ; 8b bf 36 48
+    mov di, word [bx+04833h]                  ; 8b bf 33 48
     mov bx, ax                                ; 89 c3
     mov dx, cx                                ; 89 ca
@@ -3698,9 +3698,9 @@
     inc cx                                    ; 41
     jmp short 01f0ah                          ; eb dc
-    movzx di, byte [di+048b2h]                ; 0f b6 bd b2 48
+    movzx di, byte [di+048afh]                ; 0f b6 bd af 48
     sal di, 006h                              ; c1 e7 06
-    mov al, byte [di+048c8h]                  ; 8a 85 c8 48
+    mov al, byte [di+048c5h]                  ; 8a 85 c5 48
     mov byte [bp-00ah], al                    ; 88 46 f6
-    mov al, byte [bx+04835h]                  ; 8a 87 35 48
+    mov al, byte [bx+04832h]                  ; 8a 87 32 48
     mov byte [bp-008h], al                    ; 88 46 f8
     dec si                                    ; 4e
@@ -3712,5 +3712,5 @@
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     sal bx, 003h                              ; c1 e3 03
-    mov bl, byte [bx+04834h]                  ; 8a 9f 34 48
+    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
     cmp bl, 003h                              ; 80 fb 03
     jc short 01f75h                           ; 72 0e
@@ -3775,7 +3775,7 @@
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp byte [bx+04833h], 000h                ; 80 bf 33 48 00
+    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
     je near 02121h                            ; 0f 84 0f 01
-    mov al, byte [bx+04834h]                  ; 8a 87 34 48
+    mov al, byte [bx+04831h]                  ; 8a 87 31 48
     cmp AL, strict byte 003h                  ; 3c 03
     jc short 02029h                           ; 72 0f
@@ -3831,5 +3831,5 @@
     shr ax, 1                                 ; d1 e8
     imul ax, ax, strict byte 00050h           ; 6b c0 50
-    cmp byte [bx+04835h], 002h                ; 80 bf 35 48 02
+    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
     jne short 020abh                          ; 75 08
     mov bx, word [bp-00ah]                    ; 8b 5e f6
@@ -3849,5 +3849,5 @@
     movzx si, byte [bp-004h]                  ; 0f b6 76 fc
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04835h], 002h                ; 80 bc 35 48 02
+    cmp byte [si+04832h], 002h                ; 80 bc 32 48 02
     jne short 020f1h                          ; 75 19
     mov al, byte [bp-00ah]                    ; 8a 46 f6
@@ -3989,5 +3989,5 @@
     mov si, bx                                ; 89 de
     sal si, 003h                              ; c1 e6 03
-    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
+    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
     jne short 02293h                          ; 75 4b
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -4005,5 +4005,5 @@
     add cx, dx                                ; 01 d1
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
-    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    mov ax, word [si+04833h]                  ; 8b 84 33 48
     mov dx, cx                                ; 89 ca
     call 02f85h                               ; e8 0b 0d
@@ -4013,12 +4013,12 @@
     mov dx, cx                                ; 89 ca
     inc dx                                    ; 42
-    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    mov ax, word [si+04833h]                  ; 8b 84 33 48
     call 02f85h                               ; e8 f5 0c
     jmp near 02311h                           ; e9 7e 00
-    movzx bx, byte [bx+048b2h]                ; 0f b6 9f b2 48
+    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
     sal bx, 006h                              ; c1 e3 06
-    mov ah, byte [bx+048c8h]                  ; 8a a7 c8 48
-    mov dl, byte [si+04835h]                  ; 8a 94 35 48
-    mov al, byte [si+04834h]                  ; 8a 84 34 48
+    mov ah, byte [bx+048c5h]                  ; 8a a7 c5 48
+    mov dl, byte [si+04832h]                  ; 8a 94 32 48
+    mov al, byte [si+04831h]                  ; 8a 84 31 48
     cmp AL, strict byte 003h                  ; 3c 03
     jc short 022b7h                           ; 72 0c
@@ -4076,5 +4076,5 @@
     db  0feh, 0cfh
     ; dec bh                                    ; fe cf
-    cmp byte [si+04833h], 000h                ; 80 bc 33 48 00
+    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
     jne short 0238dh                          ; 75 46
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -4093,5 +4093,5 @@
     add dx, cx                                ; 01 ca
     inc dx                                    ; 42
-    mov ax, word [si+04836h]                  ; 8b 84 36 48
+    mov ax, word [si+04833h]                  ; 8b 84 33 48
     call 02f77h                               ; e8 02 0c
     push strict byte 00001h                   ; 6a 01
@@ -4368,5 +4368,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-00ch]                    ; 03 7e f4
-    add si, 05db2h                            ; 81 c6 b2 5d
+    add si, 05dafh                            ; 81 c6 af 5d
     mov cx, strict word 0000eh                ; b9 0e 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4424,5 +4424,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-00ch]                    ; 03 7e f4
-    add si, 055b2h                            ; 81 c6 b2 55
+    add si, 055afh                            ; 81 c6 af 55
     mov cx, strict word 00008h                ; b9 08 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4480,5 +4480,5 @@
     sal di, 005h                              ; c1 e7 05
     add di, word [bp-00ch]                    ; 03 7e f4
-    add si, 06bb2h                            ; 81 c6 b2 6b
+    add si, 06bafh                            ; 81 c6 af 6b
     mov cx, strict word 00010h                ; b9 10 00
     mov dx, 0c000h                            ; ba 00 c0
@@ -4614,5 +4614,5 @@
     push bx                                   ; 53
     mov cx, ds                                ; 8c d9
-    mov bx, 05586h                            ; bb 86 55
+    mov bx, 05583h                            ; bb 83 55
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     mov ax, word [bp-008h]                    ; 8b 46 f8
@@ -5514,5 +5514,5 @@
     movzx bx, al                              ; 0f b6 d8
     sal bx, 003h                              ; c1 e3 03
-    cmp dl, byte [bx+04832h]                  ; 3a 97 32 48
+    cmp dl, byte [bx+0482fh]                  ; 3a 97 2f 48
     jne short 02f5dh                          ; 75 ee
     mov ah, al                                ; 88 c4
@@ -6215,5 +6215,5 @@
     ; mov dword [es:bx], strict dword 041534556h ; 66 26 c7 07 56 45 53 41
     mov word [es:bx+004h], 00200h             ; 26 c7 47 04 00 02
-    mov word [es:bx+006h], 07e24h             ; 26 c7 47 06 24 7e
+    mov word [es:bx+006h], 07e20h             ; 26 c7 47 06 20 7e
     mov [es:bx+008h], ds                      ; 26 8c 5f 08
     db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 000h
@@ -6231,9 +6231,9 @@
     je short 03602h                           ; 74 24
     mov word [es:bx+014h], strict word 00003h ; 26 c7 47 14 03 00
-    mov word [es:bx+016h], 07e39h             ; 26 c7 47 16 39 7e
+    mov word [es:bx+016h], 07e35h             ; 26 c7 47 16 35 7e
     mov [es:bx+018h], ds                      ; 26 8c 5f 18
-    mov word [es:bx+01ah], 07e4ch             ; 26 c7 47 1a 4c 7e
+    mov word [es:bx+01ah], 07e48h             ; 26 c7 47 1a 48 7e
     mov [es:bx+01ch], ds                      ; 26 8c 5f 1c
-    mov word [es:bx+01eh], 07e6dh             ; 26 c7 47 1e 6d 7e
+    mov word [es:bx+01eh], 07e69h             ; 26 c7 47 1e 69 7e
     mov [es:bx+020h], ds                      ; 26 8c 5f 20
     mov dx, cx                                ; 89 ca
@@ -6780,8 +6780,8 @@
   times 235 db 0
 
-section _DATA progbits vstart=0x4800 align=1 ; size=0x36e8 class=DATA group=DGROUP
-_msg_vga_init:                               ; 0xc4800 LB 0x32
-    db  'Oracle VM VirtualBox Version 4.3.0_RC1 VGA BIOS', 00dh, 00ah, 000h
-_vga_modes:                                  ; 0xc4832 LB 0x80
+section _DATA progbits vstart=0x4800 align=1 ; size=0x36e1 class=DATA group=DGROUP
+_msg_vga_init:                               ; 0xc4800 LB 0x2f
+    db  'Oracle VM VirtualBox Version 4.3.53 VGA BIOS', 00dh, 00ah, 000h
+_vga_modes:                                  ; 0xc482f LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -6792,9 +6792,9 @@
     db  011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
     db  013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
-_line_to_vpti:                               ; 0xc48b2 LB 0x10
+_line_to_vpti:                               ; 0xc48af LB 0x10
     db  017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
-_dac_regs:                                   ; 0xc48c2 LB 0x4
+_dac_regs:                                   ; 0xc48bf LB 0x4
     dd  0ff3f3f3fh
-_video_param_table:                          ; 0xc48c6 LB 0x780
+_video_param_table:                          ; 0xc48c3 LB 0x780
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
@@ -6917,5 +6917,5 @@
     db  073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
     db  03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
-_palette0:                                   ; 0xc5046 LB 0xc0
+_palette0:                                   ; 0xc5043 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
@@ -6930,5 +6930,5 @@
     db  02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
     db  03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
-_palette1:                                   ; 0xc5106 LB 0xc0
+_palette1:                                   ; 0xc5103 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
@@ -6943,5 +6943,5 @@
     db  015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
-_palette2:                                   ; 0xc51c6 LB 0xc0
+_palette2:                                   ; 0xc51c3 LB 0xc0
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
@@ -6956,5 +6956,5 @@
     db  015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
-_palette3:                                   ; 0xc5286 LB 0x300
+_palette3:                                   ; 0xc5283 LB 0x300
     db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
     db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
@@ -7005,10 +7005,10 @@
     db  00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_static_functionality:                       ; 0xc5586 LB 0x10
+_static_functionality:                       ; 0xc5583 LB 0x10
     db  0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
-_video_save_pointer_table:                   ; 0xc5596 LB 0x1c
-    db  0c6h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+_video_save_pointer_table:                   ; 0xc5593 LB 0x1c
+    db  0c3h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont8:                                   ; 0xc55b2 LB 0x800
+_vgafont8:                                   ; 0xc55af LB 0x800
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
     db  07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
@@ -7139,5 +7139,5 @@
     db  078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
     db  000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont14:                                  ; 0xc5db2 LB 0xe00
+_vgafont14:                                  ; 0xc5daf LB 0xe00
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
@@ -7364,5 +7364,5 @@
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont16:                                  ; 0xc6bb2 LB 0x1000
+_vgafont16:                                  ; 0xc6baf LB 0x1000
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
@@ -7621,5 +7621,5 @@
     db  000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-_vgafont14alt:                               ; 0xc7bb2 LB 0x12d
+_vgafont14alt:                               ; 0xc7baf LB 0x12d
     db  01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
     db  000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
@@ -7641,5 +7641,5 @@
     db  000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
     db  018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
-_vgafont16alt:                               ; 0xc7cdf LB 0x145
+_vgafont16alt:                               ; 0xc7cdc LB 0x144
     db  01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
     db  000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
@@ -7662,29 +7662,32 @@
     db  000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
     db  000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
-    db  006h, 000h, 000h, 000h, 000h
-_vbebios_copyright:                          ; 0xc7e24 LB 0x15
+    db  006h, 000h, 000h, 000h
+_vbebios_copyright:                          ; 0xc7e20 LB 0x15
     db  'VirtualBox VESA BIOS', 000h
-_vbebios_vendor_name:                        ; 0xc7e39 LB 0x13
+_vbebios_vendor_name:                        ; 0xc7e35 LB 0x13
     db  'Oracle Corporation', 000h
-_vbebios_product_name:                       ; 0xc7e4c LB 0x21
+_vbebios_product_name:                       ; 0xc7e48 LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
-_vbebios_product_revision:                   ; 0xc7e6d LB 0x27
-    db  'Oracle VM VirtualBox Version 4.3.0_RC1', 000h
-_vbebios_info_string:                        ; 0xc7e94 LB 0x2b
+_vbebios_product_revision:                   ; 0xc7e69 LB 0x24
+    db  'Oracle VM VirtualBox Version 4.3.53', 000h
+_vbebios_info_string:                        ; 0xc7e8d LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
-_no_vbebios_info_string:                     ; 0xc7ebf LB 0x29
+_no_vbebios_info_string:                     ; 0xc7eb8 LB 0x29
     db  'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
 
-section CONST progbits vstart=0x7ee8 align=1 ; size=0x0 class=DATA group=DGROUP
+  ; Padding 0x1 bytes at 0xc7ee1
+    db  001h
 
-section CONST2 progbits vstart=0x7ee8 align=1 ; size=0x0 class=DATA group=DGROUP
+section CONST progbits vstart=0x7ee2 align=1 ; size=0x0 class=DATA group=DGROUP
 
-  ; Padding 0x118 bytes at 0xc7ee8
-    db  001h, 000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh
-    db  065h, 02fh, 066h, 06dh, 033h, 02fh, 073h, 072h, 063h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 06fh
-    db  075h, 074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh, 072h
-    db  065h, 06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h, 056h
-    db  067h, 061h, 042h, 069h, 06fh, 073h, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h, 061h, 042h, 069h
-    db  06fh, 073h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+section CONST2 progbits vstart=0x7ee2 align=1 ; size=0x0 class=DATA group=DGROUP
+
+  ; Padding 0x11e bytes at 0xc7ee2
+    db  000h, 000h, 000h, 000h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 02fh, 068h, 06fh, 06dh, 065h
+    db  02fh, 066h, 06dh, 033h, 02fh, 073h, 072h, 063h, 02fh, 076h, 062h, 06fh, 078h, 02fh, 06fh, 075h
+    db  074h, 02fh, 06ch, 069h, 06eh, 075h, 078h, 02eh, 061h, 06dh, 064h, 036h, 034h, 02fh, 072h, 065h
+    db  06ch, 065h, 061h, 073h, 065h, 02fh, 06fh, 062h, 06ah, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h
+    db  061h, 042h, 069h, 06fh, 073h, 02fh, 056h, 042h, 06fh, 078h, 056h, 067h, 061h, 042h, 069h, 06fh
+    db  073h, 02eh, 073h, 079h, 06dh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
@@ -7698,3 +7701,3 @@
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 01eh
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01ch
Index: /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.md5sum	(revision 50158)
+++ /trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.md5sum	(revision 50159)
@@ -1,1 +1,1 @@
-3557a7c86dae36c5374543e0c446f1b9 *VBoxVgaBios.rom
+70d2883225c6a0e2a6d9d96362e9adad *VBoxVgaBios.rom
Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 50158)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm	(revision 50159)
@@ -441,4 +441,22 @@
 ;   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
 ;  
+
+;
+; Source file: invop.c
+;
+;  $Id$
+;  Real mode invalid opcode handler.
+;  
+;  
+;  
+;  Copyright (C) 2013 Oracle Corporation
+;  
+;  This file is part of VirtualBox Open Source Edition (OSE), as
+;  available from http://www.virtualbox.org. This file is free software;
+;  you can redistribute it and/or modify it under the terms of the GNU
+;  General Public License (GPL) as published by the Free Software
+;  Foundation, in version 2 as it comes in the "COPYING" file of the
+;  VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+;  hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 
 ;
@@ -821,10 +839,10 @@
     db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
 _pktacc:                                     ; 0xf006a LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 02ah, 028h, 038h, 077h, 08eh, 084h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 03fh, 028h, 0ech, 078h, 0b4h, 086h
 _softrst:                                    ; 0xf0076 LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 012h, 02bh, 022h, 036h, 022h, 036h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 027h, 02bh, 041h, 036h, 041h, 036h
 _dskacc:                                     ; 0xf0082 LB 0x2e
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 073h, 027h, 0edh, 027h, 000h, 000h, 000h, 000h
-    db  0cch, 075h, 082h, 076h, 08ah, 083h, 01eh, 084h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 088h, 027h, 002h, 028h, 000h, 000h, 000h, 000h
+    db  080h, 077h, 036h, 078h, 0b0h, 085h, 044h, 086h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
@@ -945,18 +963,18 @@
     db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
 
-section CONST2 progbits vstart=0xd90 align=1 ; size=0x3fe class=DATA group=DGROUP
-_bios_cvs_version_string:                    ; 0xf0d90 LB 0x16
-    db  'VirtualBox 4.3.0_RC1', 000h, 000h
-_bios_prefix_string:                         ; 0xf0da6 LB 0x8
+section CONST2 progbits vstart=0xd90 align=1 ; size=0x3fa class=DATA group=DGROUP
+_bios_cvs_version_string:                    ; 0xf0d90 LB 0x12
+    db  'VirtualBox 4.3.53', 000h
+_bios_prefix_string:                         ; 0xf0da2 LB 0x8
     db  'BIOS: ', 000h, 000h
-_isotag:                                     ; 0xf0dae LB 0x6
+_isotag:                                     ; 0xf0daa LB 0x6
     db  'CD001', 000h
-_eltorito:                                   ; 0xf0db4 LB 0x18
+_eltorito:                                   ; 0xf0db0 LB 0x18
     db  'EL TORITO SPECIFICATION', 000h
-_drivetypes:                                 ; 0xf0dcc LB 0x28
+_drivetypes:                                 ; 0xf0dc8 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:                          ; 0xf0df4 LB 0x37a
+_scan_to_scanascii:                          ; 0xf0df0 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
@@ -1015,11 +1033,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:                 ; 0xf116e LB 0x20
+_panic_msg_keyb_buffer_full:                 ; 0xf116a LB 0x20
     db  '%s: keyboard input buffer full', 00ah, 000h
 
-  ; Padding 0x472 bytes at 0xf118e
-  times 1138 db 0
+  ; Padding 0x476 bytes at 0xf118a
+  times 1142 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x7cd5 class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x7ef5 class=CODE group=AUTO
 read_byte_:                                  ; 0xf1600 LB 0xe
     push bx                                   ; 53
@@ -1084,11 +1102,16 @@
     pop si                                    ; 5e
     retn                                      ; c3
-inb_cmos_:                                   ; 0xf165c LB 0x14
+inb_cmos_:                                   ; 0xf165c LB 0x1d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
-    mov dx, strict word 00070h                ; ba 70 00
-    out DX, AL                                ; ee
-    mov dx, strict word 00071h                ; ba 71 00
+    mov AH, strict byte 070h                  ; b4 70
+    cmp AL, strict byte 080h                  ; 3c 80
+    jc short 01668h                           ; 72 02
+    mov AH, strict byte 072h                  ; b4 72
+    movzx dx, ah                              ; 0f b6 d4
+    out DX, AL                                ; ee
+    movzx dx, ah                              ; 0f b6 d4
+    inc dx                                    ; 42
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -1098,17 +1121,24 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-outb_cmos_:                                  ; 0xf1670 LB 0x13
+outb_cmos_:                                  ; 0xf1679 LB 0x1f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
+    push bx                                   ; 53
     mov ah, dl                                ; 88 d4
-    mov dx, strict word 00070h                ; ba 70 00
-    out DX, AL                                ; ee
+    mov BL, strict byte 070h                  ; b3 70
+    cmp AL, strict byte 080h                  ; 3c 80
+    jc short 01687h                           ; 72 02
+    mov BL, strict byte 072h                  ; b3 72
+    movzx dx, bl                              ; 0f b6 d3
+    out DX, AL                                ; ee
+    movzx dx, bl                              ; 0f b6 d3
+    inc dx                                    ; 42
     mov al, ah                                ; 88 e0
-    mov dx, strict word 00071h                ; ba 71 00
-    out DX, AL                                ; ee
-    mov sp, bp                                ; 89 ec
+    out DX, AL                                ; ee
+    lea sp, [bp-002h]                         ; 8d 66 fe
+    pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_dummy_isr_function:                         ; 0xf1683 LB 0x6b
+_dummy_isr_function:                         ; 0xf1698 LB 0x6b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1124,5 +1154,5 @@
     mov byte [bp-002h], al                    ; 88 46 fe
     test al, al                               ; 84 c0
-    je short 016deh                           ; 74 43
+    je short 016f3h                           ; 74 43
     mov AL, strict byte 00bh                  ; b0 0b
     mov dx, 000a0h                            ; ba a0 00
@@ -1133,5 +1163,5 @@
     mov cx, ax                                ; 89 c1
     test al, al                               ; 84 c0
-    je short 016c0h                           ; 74 16
+    je short 016d5h                           ; 74 16
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -1145,5 +1175,5 @@
     mov dx, 000a0h                            ; ba a0 00
     out DX, AL                                ; ee
-    jmp short 016d5h                          ; eb 15
+    jmp short 016eah                          ; eb 15
     mov dx, strict word 00021h                ; ba 21 00
     in AL, DX                                 ; ec
@@ -1163,65 +1193,65 @@
     mov dx, strict word 0006bh                ; ba 6b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 24 ff
+    call 0160eh                               ; e8 0f ff
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_nmi_handler_msg:                            ; 0xf16ee LB 0x12
+_nmi_handler_msg:                            ; 0xf1703 LB 0x12
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push 000b0h                               ; 68 b0 00
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 14 02
+    call 01922h                               ; e8 14 02
     add sp, strict byte 00004h                ; 83 c4 04
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_int18_panic_msg:                            ; 0xf1700 LB 0x12
+_int18_panic_msg:                            ; 0xf1715 LB 0x12
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push 000c4h                               ; 68 c4 00
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 02 02
+    call 01922h                               ; e8 02 02
     add sp, strict byte 00004h                ; 83 c4 04
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_log_bios_start:                             ; 0xf1712 LB 0x20
+_log_bios_start:                             ; 0xf1727 LB 0x20
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
-    mov bx, 00da6h                            ; bb a6 0d
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 ac 01
+    call 018e1h                               ; e8 ac 01
     push 00d90h                               ; 68 90 0d
     push 000d9h                               ; 68 d9 00
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 e2 01
+    call 01922h                               ; e8 e2 01
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_print_bios_banner:                          ; 0xf1732 LB 0x2e
+_print_bios_banner:                          ; 0xf1747 LB 0x2e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 00072h                ; ba 72 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 de fe
+    call 0161ch                               ; e8 c9 fe
     mov cx, ax                                ; 89 c1
     xor bx, bx                                ; 31 db
     mov dx, strict word 00072h                ; ba 72 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 df fe
+    call 0162ah                               ; e8 ca fe
     cmp cx, 01234h                            ; 81 f9 34 12
-    jne short 01759h                          ; 75 08
+    jne short 0176eh                          ; 75 08
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
-    jmp short 0175ch                          ; eb 03
-    call 071dbh                               ; e8 7f 5a
+    jmp short 01771h                          ; eb 03
+    call 0738fh                               ; e8 1e 5c
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-send_:                                       ; 0xf1760 LB 0x3b
+send_:                                       ; 0xf1775 LB 0x3b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1231,17 +1261,17 @@
     mov cl, dl                                ; 88 d1
     test AL, strict byte 008h                 ; a8 08
-    je short 01773h                           ; 74 06
+    je short 01788h                           ; 74 06
     mov al, dl                                ; 88 d0
     mov dx, 00403h                            ; ba 03 04
     out DX, AL                                ; ee
     test bl, 004h                             ; f6 c3 04
-    je short 0177eh                           ; 74 06
+    je short 01793h                           ; 74 06
     mov al, cl                                ; 88 c8
     mov dx, 00504h                            ; ba 04 05
     out DX, AL                                ; ee
     test bl, 002h                             ; f6 c3 02
-    je short 01794h                           ; 74 11
+    je short 017a9h                           ; 74 11
     cmp cl, 00ah                              ; 80 f9 0a
-    jne short 0178eh                          ; 75 06
+    jne short 017a3h                          ; 75 06
     mov AL, strict byte 00dh                  ; b0 0d
     mov AH, strict byte 00eh                  ; b4 0e
@@ -1255,5 +1285,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-put_int_:                                    ; 0xf179b LB 0x5f
+put_int_:                                    ; 0xf17b0 LB 0x5f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1270,22 +1300,22 @@
     mov word [bp-006h], ax                    ; 89 46 fa
     test ax, ax                               ; 85 c0
-    je short 017c0h                           ; 74 0a
+    je short 017d5h                           ; 74 0a
     dec bx                                    ; 4b
     mov dx, ax                                ; 89 c2
     mov ax, si                                ; 89 f0
-    call 0179bh                               ; e8 dd ff
-    jmp short 017dbh                          ; eb 1b
+    call 017b0h                               ; e8 dd ff
+    jmp short 017f0h                          ; eb 1b
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jle short 017cfh                          ; 7e 0a
+    jle short 017e4h                          ; 7e 0a
     mov dx, strict word 00020h                ; ba 20 00
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 93 ff
-    jmp short 017c0h                          ; eb f1
+    call 01775h                               ; e8 93 ff
+    jmp short 017d5h                          ; eb f1
     test cx, cx                               ; 85 c9
-    je short 017dbh                           ; 74 08
+    je short 017f0h                           ; 74 08
     mov dx, strict word 0002dh                ; ba 2d 00
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 85 ff
+    call 01775h                               ; e8 85 ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov DL, strict byte 00ah                  ; b2 0a
@@ -1297,5 +1327,5 @@
     movzx dx, al                              ; 0f b6 d0
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 6d ff
+    call 01775h                               ; e8 6d ff
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -1303,5 +1333,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-put_uint_:                                   ; 0xf17fa LB 0x60
+put_uint_:                                   ; 0xf180f LB 0x60
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1318,22 +1348,22 @@
     mov word [bp-006h], ax                    ; 89 46 fa
     test ax, ax                               ; 85 c0
-    je short 01820h                           ; 74 0a
+    je short 01835h                           ; 74 0a
     dec bx                                    ; 4b
     mov dx, ax                                ; 89 c2
     mov ax, si                                ; 89 f0
-    call 017fah                               ; e8 dc ff
-    jmp short 0183bh                          ; eb 1b
+    call 0180fh                               ; e8 dc ff
+    jmp short 01850h                          ; eb 1b
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jle short 0182fh                          ; 7e 0a
+    jle short 01844h                          ; 7e 0a
     mov dx, strict word 00020h                ; ba 20 00
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 33 ff
-    jmp short 01820h                          ; eb f1
+    call 01775h                               ; e8 33 ff
+    jmp short 01835h                          ; eb f1
     test cx, cx                               ; 85 c9
-    je short 0183bh                           ; 74 08
+    je short 01850h                           ; 74 08
     mov dx, strict word 0002dh                ; ba 2d 00
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 25 ff
+    call 01775h                               ; e8 25 ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov DL, strict byte 00ah                  ; b2 0a
@@ -1345,5 +1375,5 @@
     movzx dx, al                              ; 0f b6 d0
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 0d ff
+    call 01775h                               ; e8 0d ff
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -1351,5 +1381,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-put_luint_:                                  ; 0xf185a LB 0x72
+put_luint_:                                  ; 0xf186f LB 0x72
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1365,28 +1395,28 @@
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 091e0h                               ; e8 6c 79
+    call 09400h                               ; e8 77 7b
     mov word [bp-008h], ax                    ; 89 46 f8
     mov cx, dx                                ; 89 d1
     mov dx, ax                                ; 89 c2
     or dx, cx                                 ; 09 ca
-    je short 0188eh                           ; 74 0f
+    je short 018a3h                           ; 74 0f
     push word [bp+004h]                       ; ff 76 04
     lea dx, [di-001h]                         ; 8d 55 ff
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 0185ah                               ; e8 ce ff
-    jmp short 018abh                          ; eb 1d
+    call 0186fh                               ; e8 ce ff
+    jmp short 018c0h                          ; eb 1d
     dec di                                    ; 4f
     test di, di                               ; 85 ff
-    jle short 0189dh                          ; 7e 0a
+    jle short 018b2h                          ; 7e 0a
     mov dx, strict word 00020h                ; ba 20 00
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 c5 fe
-    jmp short 0188eh                          ; eb f1
+    call 01775h                               ; e8 c5 fe
+    jmp short 018a3h                          ; eb f1
     cmp word [bp+004h], strict byte 00000h    ; 83 7e 04 00
-    je short 018abh                           ; 74 08
+    je short 018c0h                           ; 74 08
     mov dx, strict word 0002dh                ; ba 2d 00
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 b5 fe
+    call 01775h                               ; e8 b5 fe
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov DL, strict byte 00ah                  ; b2 0a
@@ -1398,5 +1428,5 @@
     movzx dx, al                              ; 0f b6 d0
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 9d fe
+    call 01775h                               ; e8 9d fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -1404,5 +1434,5 @@
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-put_str_:                                    ; 0xf18cc LB 0x21
+put_str_:                                    ; 0xf18e1 LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1413,10 +1443,10 @@
     mov dl, byte [es:bx]                      ; 26 8a 17
     test dl, dl                               ; 84 d2
-    je short 018e6h                           ; 74 0a
+    je short 018fbh                           ; 74 0a
     xor dh, dh                                ; 30 f6
     mov ax, si                                ; 89 f0
-    call 01760h                               ; e8 7d fe
+    call 01775h                               ; e8 7d fe
     inc bx                                    ; 43
-    jmp short 018d3h                          ; eb ed
+    jmp short 018e8h                          ; eb ed
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop si                                    ; 5e
@@ -1424,5 +1454,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-put_str_near_:                               ; 0xf18ed LB 0x20
+put_str_near_:                               ; 0xf1902 LB 0x20
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1433,10 +1463,10 @@
     mov dl, byte [bx]                         ; 8a 17
     test dl, dl                               ; 84 d2
-    je short 01906h                           ; 74 0a
+    je short 0191bh                           ; 74 0a
     xor dh, dh                                ; 30 f6
     mov ax, cx                                ; 89 c8
-    call 01760h                               ; e8 5d fe
+    call 01775h                               ; e8 5d fe
     inc bx                                    ; 43
-    jmp short 018f6h                          ; eb f0
+    jmp short 0190bh                          ; eb f0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop cx                                    ; 59
@@ -1444,5 +1474,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-bios_printf_:                                ; 0xf190d LB 0x23b
+bios_printf_:                                ; 0xf1922 LB 0x23b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1461,29 +1491,29 @@
     and ax, strict word 00007h                ; 25 07 00
     cmp ax, strict word 00007h                ; 3d 07 00
-    jne short 0193bh                          ; 75 0b
+    jne short 01950h                          ; 75 0b
     push 000deh                               ; 68 de 00
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 d5 ff
+    call 01922h                               ; 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
     test dl, dl                               ; 84 d2
-    je near 01b2ch                            ; 0f 84 e6 01
+    je near 01b41h                            ; 0f 84 e6 01
     cmp dl, 025h                              ; 80 fa 25
-    jne short 01953h                          ; 75 08
+    jne short 01968h                          ; 75 08
     mov cx, strict word 00001h                ; b9 01 00
     xor si, si                                ; 31 f6
-    jmp near 01b26h                           ; e9 d3 01
+    jmp near 01b3bh                           ; e9 d3 01
     test cx, cx                               ; 85 c9
-    je near 01b1eh                            ; 0f 84 c5 01
+    je near 01b33h                            ; 0f 84 c5 01
     cmp dl, 030h                              ; 80 fa 30
-    jc short 01971h                           ; 72 13
+    jc short 01986h                           ; 72 13
     cmp dl, 039h                              ; 80 fa 39
-    jnbe short 01971h                         ; 77 0e
+    jnbe short 01986h                         ; 77 0e
     movzx ax, dl                              ; 0f b6 c2
     imul si, si, strict byte 0000ah           ; 6b f6 0a
     sub ax, strict word 00030h                ; 2d 30 00
     add si, ax                                ; 01 c6
-    jmp near 01b26h                           ; e9 b5 01
+    jmp near 01b3bh                           ; e9 b5 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov word [bp-010h], ax                    ; 89 46 f0
@@ -1493,18 +1523,18 @@
     mov word [bp-00ch], ax                    ; 89 46 f4
     cmp dl, 078h                              ; 80 fa 78
-    je short 0198fh                           ; 74 05
+    je short 019a4h                           ; 74 05
     cmp dl, 058h                              ; 80 fa 58
-    jne short 019d8h                          ; 75 49
+    jne short 019edh                          ; 75 49
     test si, si                               ; 85 f6
-    jne short 01996h                          ; 75 03
+    jne short 019abh                          ; 75 03
     mov si, strict word 00004h                ; be 04 00
     cmp dl, 078h                              ; 80 fa 78
-    jne short 019a0h                          ; 75 05
+    jne short 019b5h                          ; 75 05
     mov di, strict word 00061h                ; bf 61 00
-    jmp short 019a3h                          ; eb 03
+    jmp short 019b8h                          ; eb 03
     mov di, strict word 00041h                ; bf 41 00
     lea bx, [si-001h]                         ; 8d 5c ff
     test bx, bx                               ; 85 db
-    jl near 01b1ah                            ; 0f 8c 6e 01
+    jl near 01b2fh                            ; 0f 8c 6e 01
     mov cx, bx                                ; 89 d9
     sal cx, 002h                              ; c1 e1 02
@@ -1514,8 +1544,8 @@
     and AL, strict byte 00fh                  ; 24 0f
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 019c6h                         ; 77 07
+    jnbe short 019dbh                         ; 77 07
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00030h                ; 83 c2 30
-    jmp short 019cdh                          ; eb 07
+    jmp short 019e2h                          ; eb 07
     mov dx, ax                                ; 89 c2
     sub dx, strict byte 0000ah                ; 83 ea 0a
@@ -1523,18 +1553,18 @@
     xor dh, dh                                ; 30 f6
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01760h                               ; e8 8b fd
+    call 01775h                               ; e8 8b fd
     dec bx                                    ; 4b
-    jmp short 019a6h                          ; eb ce
+    jmp short 019bbh                          ; eb ce
     cmp dl, 075h                              ; 80 fa 75
-    jne short 019ech                          ; 75 0f
+    jne short 01a01h                          ; 75 0f
     xor cx, cx                                ; 31 c9
     mov bx, si                                ; 89 f3
     mov dx, ax                                ; 89 c2
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 017fah                               ; e8 11 fe
-    jmp near 01b1ah                           ; e9 2e 01
+    call 0180fh                               ; e8 11 fe
+    jmp near 01b2fh                           ; e9 2e 01
     lea bx, [si-001h]                         ; 8d 5c ff
     cmp dl, 06ch                              ; 80 fa 6c
-    jne near 01aa8h                           ; 0f 85 b2 00
+    jne near 01abdh                           ; 0f 85 b2 00
     inc word [bp+006h]                        ; ff 46 06
     mov di, word [bp+006h]                    ; 8b 7e 06
@@ -1547,7 +1577,7 @@
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp dl, 064h                              ; 80 fa 64
-    jne short 01a44h                          ; 75 2d
+    jne short 01a59h                          ; 75 2d
     test byte [bp-00dh], 080h                 ; f6 46 f3 80
-    je short 01a32h                           ; 74 15
+    je short 01a47h                           ; 74 15
     push strict byte 00001h                   ; 6a 01
     mov ax, word [bp-00ch]                    ; 8b 46 f4
@@ -1558,5 +1588,5 @@
     mov dx, bx                                ; 89 da
     mov bx, ax                                ; 89 c3
-    jmp short 01a3bh                          ; eb 09
+    jmp short 01a50h                          ; eb 09
     push strict byte 00000h                   ; 6a 00
     mov bx, word [bp-00ch]                    ; 8b 5e f4
@@ -1564,38 +1594,38 @@
     mov cx, ax                                ; 89 c1
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0185ah                               ; e8 19 fe
-    jmp near 01b1ah                           ; e9 d6 00
+    call 0186fh                               ; e8 19 fe
+    jmp near 01b2fh                           ; e9 d6 00
     cmp dl, 075h                              ; 80 fa 75
-    jne short 01a4bh                          ; 75 02
-    jmp short 01a32h                          ; eb e7
+    jne short 01a60h                          ; 75 02
+    jmp short 01a47h                          ; eb e7
     cmp dl, 078h                              ; 80 fa 78
-    je short 01a57h                           ; 74 07
+    je short 01a6ch                           ; 74 07
     cmp dl, 058h                              ; 80 fa 58
-    jne near 01b1ah                           ; 0f 85 c3 00
+    jne near 01b2fh                           ; 0f 85 c3 00
     test si, si                               ; 85 f6
-    jne short 01a5eh                          ; 75 03
+    jne short 01a73h                          ; 75 03
     mov si, strict word 00008h                ; be 08 00
     cmp dl, 078h                              ; 80 fa 78
-    jne short 01a68h                          ; 75 05
+    jne short 01a7dh                          ; 75 05
     mov di, strict word 00061h                ; bf 61 00
-    jmp short 01a6bh                          ; eb 03
+    jmp short 01a80h                          ; eb 03
     mov di, strict word 00041h                ; bf 41 00
     lea bx, [si-001h]                         ; 8d 5c ff
     test bx, bx                               ; 85 db
-    jl near 01b1ah                            ; 0f 8c a6 00
+    jl near 01b2fh                            ; 0f 8c a6 00
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     mov cx, bx                                ; 89 d9
     sal cx, 002h                              ; c1 e1 02
     mov dx, word [bp-00eh]                    ; 8b 56 f2
-    jcxz 01a87h                               ; e3 06
+    jcxz 01a9ch                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 01a81h                               ; e2 fa
+    loop 01a96h                               ; e2 fa
     and ax, strict word 0000fh                ; 25 0f 00
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 01a96h                         ; 77 07
+    jnbe short 01aabh                         ; 77 07
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00030h                ; 83 c2 30
-    jmp short 01a9dh                          ; eb 07
+    jmp short 01ab2h                          ; eb 07
     mov dx, ax                                ; 89 c2
     sub dx, strict byte 0000ah                ; 83 ea 0a
@@ -1603,30 +1633,30 @@
     xor dh, dh                                ; 30 f6
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01760h                               ; e8 bb fc
+    call 01775h                               ; e8 bb fc
     dec bx                                    ; 4b
-    jmp short 01a6eh                          ; eb c6
+    jmp short 01a83h                          ; eb c6
     cmp dl, 064h                              ; 80 fa 64
-    jne short 01acah                          ; 75 1d
+    jne short 01adfh                          ; 75 1d
     test byte [bp-00bh], 080h                 ; f6 46 f5 80
-    je short 01abch                           ; 74 09
+    je short 01ad1h                           ; 74 09
     mov dx, ax                                ; 89 c2
     neg dx                                    ; f7 da
     mov cx, strict word 00001h                ; b9 01 00
-    jmp short 01ac2h                          ; eb 06
+    jmp short 01ad7h                          ; eb 06
     xor cx, cx                                ; 31 c9
     mov bx, si                                ; 89 f3
     mov dx, ax                                ; 89 c2
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0179bh                               ; e8 d3 fc
-    jmp short 01b1ah                          ; eb 50
+    call 017b0h                               ; e8 d3 fc
+    jmp short 01b2fh                          ; eb 50
     cmp dl, 073h                              ; 80 fa 73
-    jne short 01adbh                          ; 75 0c
+    jne short 01af0h                          ; 75 0c
     mov cx, ds                                ; 8c d9
     mov bx, ax                                ; 89 c3
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 018cch                               ; e8 f3 fd
-    jmp short 01b1ah                          ; eb 3f
+    call 018e1h                               ; e8 f3 fd
+    jmp short 01b2fh                          ; eb 3f
     cmp dl, 053h                              ; 80 fa 53
-    jne short 01afeh                          ; 75 1e
+    jne short 01b13h                          ; 75 1e
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov ax, word [bp-010h]                    ; 8b 46 f0
@@ -1638,30 +1668,30 @@
     mov bx, ax                                ; 89 c3
     mov cx, word [bp-00eh]                    ; 8b 4e f2
-    jmp short 01ad3h                          ; eb d5
+    jmp short 01ae8h                          ; eb d5
     cmp dl, 063h                              ; 80 fa 63
-    jne short 01b0fh                          ; 75 0c
+    jne short 01b24h                          ; 75 0c
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01760h                               ; e8 53 fc
-    jmp short 01b1ah                          ; eb 0b
+    call 01775h                               ; e8 53 fc
+    jmp short 01b2fh                          ; eb 0b
     push 000e6h                               ; 68 e6 00
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 f6 fd
+    call 01922h                               ; e8 f6 fd
     add sp, strict byte 00004h                ; 83 c4 04
     xor cx, cx                                ; 31 c9
-    jmp short 01b26h                          ; eb 08
+    jmp short 01b3bh                          ; eb 08
     xor dh, dh                                ; 30 f6
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01760h                               ; e8 3a fc
+    call 01775h                               ; e8 3a fc
     inc word [bp+006h]                        ; ff 46 06
-    jmp near 0193bh                           ; e9 0f fe
+    jmp near 01950h                           ; e9 0f fe
     xor ax, ax                                ; 31 c0
     mov word [bp-012h], ax                    ; 89 46 ee
     mov word [bp-010h], ax                    ; 89 46 f0
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    je short 01b3eh                           ; 74 04
+    je short 01b53h                           ; 74 04
     cli                                       ; fa
     hlt                                       ; f4
-    jmp short 01b3bh                          ; eb fd
+    jmp short 01b50h                          ; eb fd
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -1672,5 +1702,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_ata_init:                                   ; 0xf1b48 LB 0xc4
+_ata_init:                                   ; 0xf1b5d LB 0xc4
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1678,11 +1708,11 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 c7 fa
+    call 0161ch                               ; e8 b2 fa
     mov si, 00122h                            ; be 22 01
     mov dx, ax                                ; 89 c2
     xor al, al                                ; 30 c0
-    jmp short 01b62h                          ; eb 04
+    jmp short 01b77h                          ; eb 04
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 01b86h                          ; 73 24
+    jnc short 01b9bh                          ; 73 24
     movzx bx, al                              ; 0f b6 d8
     imul bx, bx, strict byte 00006h           ; 6b db 06
@@ -1695,9 +1725,9 @@
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    jmp short 01b5eh                          ; eb d8
+    jmp short 01b73h                          ; eb d8
     xor al, al                                ; 30 c0
-    jmp short 01b8eh                          ; eb 04
+    jmp short 01ba3h                          ; eb 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jnc short 01bd9h                          ; 73 4b
+    jnc short 01beeh                          ; 73 4b
     movzx bx, al                              ; 0f b6 d8
     imul bx, bx, strict byte 00018h           ; 6b db 18
@@ -1719,9 +1749,9 @@
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    jmp short 01b8ah                          ; eb b1
+    jmp short 01b9fh                          ; eb b1
     xor al, al                                ; 30 c0
-    jmp short 01be1h                          ; eb 04
+    jmp short 01bf6h                          ; eb 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jnc short 01bf8h                          ; 73 17
+    jnc short 01c0dh                          ; 73 17
     movzx bx, al                              ; 0f b6 d8
     mov es, dx                                ; 8e c2
@@ -1731,5 +1761,5 @@
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
-    jmp short 01bddh                          ; eb e5
+    jmp short 01bf2h                          ; eb e5
     mov es, dx                                ; 8e c2
     mov byte [es:si+0019eh], 000h             ; 26 c6 84 9e 01 00
@@ -1739,5 +1769,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ata_reset_:                                  ; 0xf1c0c LB 0xde
+ata_reset_:                                  ; 0xf1c21 LB 0xde
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1752,5 +1782,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 fc f9
+    call 0161ch                               ; e8 e7 f9
     mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
     mov di, ax                                ; 89 c7
@@ -1772,5 +1802,5 @@
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 01c64h                          ; 76 0c
+    jbe short 01c79h                          ; 76 0c
     mov dx, cx                                ; 89 ca
     add dx, strict byte 00007h                ; 83 c2 07
@@ -1779,5 +1809,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 01c53h                           ; 74 ef
+    je short 01c68h                           ; 74 ef
     lea dx, [si+006h]                         ; 8d 54 06
     mov AL, strict byte 00ah                  ; b0 0a
@@ -1787,9 +1817,9 @@
     add bx, word [bp-00eh]                    ; 03 5e f2
     cmp byte [es:bx+01eh], 000h               ; 26 80 7f 1e 00
-    je short 01cc6h                           ; 74 4c
+    je short 01cdbh                           ; 74 4c
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 01c85h                           ; 74 05
+    je short 01c9ah                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 01c88h                          ; eb 03
+    jmp short 01c9dh                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     mov dx, cx                                ; 89 ca
@@ -1809,11 +1839,11 @@
     ; sub ah, ah                                ; 2a e4
     cmp bl, 001h                              ; 80 fb 01
-    jne short 01cc6h                          ; 75 22
+    jne short 01cdbh                          ; 75 22
     cmp al, bl                                ; 38 d8
-    jne short 01cc6h                          ; 75 1e
+    jne short 01cdbh                          ; 75 1e
     mov bx, strict word 0ffffh                ; bb ff ff
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 01cc6h                          ; 76 16
+    jbe short 01cdbh                          ; 76 16
     mov dx, cx                                ; 89 ca
     add dx, strict byte 00007h                ; 83 c2 07
@@ -1822,14 +1852,14 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 01cc6h                           ; 74 0a
+    je short 01cdbh                           ; 74 0a
     mov ax, strict word 0ffffh                ; b8 ff ff
     dec ax                                    ; 48
     test ax, ax                               ; 85 c0
-    jnbe short 01cbfh                         ; 77 fb
-    jmp short 01cabh                          ; eb e5
+    jnbe short 01cd4h                         ; 77 fb
+    jmp short 01cc0h                          ; eb e5
     mov bx, strict word 00010h                ; bb 10 00
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 01cdah                          ; 76 0c
+    jbe short 01cefh                          ; 76 0c
     mov dx, cx                                ; 89 ca
     add dx, strict byte 00007h                ; 83 c2 07
@@ -1838,5 +1868,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 01cc9h                           ; 74 ef
+    je short 01cdeh                           ; 74 ef
     lea dx, [si+006h]                         ; 8d 54 06
     mov AL, strict byte 008h                  ; b0 08
@@ -1850,5 +1880,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ata_cmd_data_in_:                            ; 0xf1cea LB 0x258
+ata_cmd_data_in_:                            ; 0xf1cff LB 0x258
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -1881,15 +1911,15 @@
     mov word [bp-00ch], ax                    ; 89 46 f4
     test ax, ax                               ; 85 c0
-    jne short 01d52h                          ; 75 14
+    jne short 01d67h                          ; 75 14
     cmp byte [bp-006h], 001h                  ; 80 7e fa 01
-    jne short 01d4bh                          ; 75 07
+    jne short 01d60h                          ; 75 07
     mov word [bp-00ch], 04000h                ; c7 46 f4 00 40
-    jmp short 01d61h                          ; eb 16
+    jmp short 01d76h                          ; eb 16
     mov word [bp-00ch], 08000h                ; c7 46 f4 00 80
-    jmp short 01d61h                          ; eb 0f
+    jmp short 01d76h                          ; eb 0f
     cmp byte [bp-006h], 001h                  ; 80 7e fa 01
-    jne short 01d5eh                          ; 75 06
+    jne short 01d73h                          ; 75 06
     shr word [bp-00ch], 002h                  ; c1 6e f4 02
-    jmp short 01d61h                          ; eb 03
+    jmp short 01d76h                          ; eb 03
     shr word [bp-00ch], 1                     ; d1 6e f4
     lea dx, [bx+007h]                         ; 8d 57 07
@@ -1898,5 +1928,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 01d7ah                           ; 74 0f
+    je short 01d8fh                           ; 74 0f
     mov dx, word [bp-01ch]                    ; 8b 56 e4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -1904,5 +1934,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 01f39h                           ; e9 bf 01
+    jmp near 01f4eh                           ; e9 bf 01
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov ax, word [es:si]                      ; 26 8b 04
@@ -1921,11 +1951,11 @@
     mov ax, word [bp-010h]                    ; 8b 46 f0
     test ax, ax                               ; 85 c0
-    jne short 01e18h                          ; 75 67
+    jne short 01e2dh                          ; 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 01dc1h                         ; 77 02
-    jne short 01dech                          ; 75 2b
+    jnbe short 01dd6h                         ; 77 02
+    jne short 01e01h                          ; 75 2b
     mov ax, word [bp-01eh]                    ; 8b 46 e2
     xor al, al                                ; 30 c0
@@ -1952,5 +1982,5 @@
     shr word [bp-01eh], 1                     ; d1 6e e2
     rcr word [bp-020h], 1                     ; d1 5e e0
-    loop 01df7h                               ; e2 f8
+    loop 01e0ch                               ; e2 f8
     mov ax, word [bp-020h]                    ; 8b 46 e0
     mov word [bp-012h], ax                    ; 89 46 ee
@@ -1981,7 +2011,7 @@
     out DX, AL                                ; ee
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 01e4eh                           ; 74 05
+    je short 01e63h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 01e51h                          ; eb 03
+    jmp short 01e66h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     movzx dx, byte [bp-018h]                  ; 0f b6 56 e8
@@ -1994,11 +2024,11 @@
     mov ax, word [bp-016h]                    ; 8b 46 ea
     cmp ax, 000c4h                            ; 3d c4 00
-    je short 01e6fh                           ; 74 05
+    je short 01e84h                           ; 74 05
     cmp ax, strict word 00029h                ; 3d 29 00
-    jne short 01e7ch                          ; 75 0d
+    jne short 01e91h                          ; 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 01e81h                          ; eb 05
+    jmp short 01e96h                          ; eb 05
     mov word [bp-01ah], strict word 00001h    ; c7 46 e6 01 00
     lea dx, [bx+007h]                         ; 8d 57 07
@@ -2008,7 +2038,7 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 01e81h                          ; 75 f4
+    jne short 01e96h                          ; 75 f4
     test AL, strict byte 001h                 ; a8 01
-    je short 01ea0h                           ; 74 0f
+    je short 01eb5h                           ; 74 0f
     mov dx, word [bp-01ch]                    ; 8b 56 e4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2016,7 +2046,7 @@
     out DX, AL                                ; ee
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 01f39h                           ; e9 99 00
+    jmp near 01f4eh                           ; e9 99 00
     test dl, 008h                             ; f6 c2 08
-    jne short 01eb4h                          ; 75 0f
+    jne short 01ec9h                          ; 75 0f
     mov dx, word [bp-01ch]                    ; 8b 56 e4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2024,8 +2054,8 @@
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 01f39h                           ; e9 85 00
+    jmp near 01f4eh                           ; e9 85 00
     sti                                       ; fb
     cmp di, 0f800h                            ; 81 ff 00 f8
-    jc short 01ec8h                           ; 72 0d
+    jc short 01eddh                           ; 72 0d
     sub di, 00800h                            ; 81 ef 00 08
     mov ax, word [bp-00eh]                    ; 8b 46 f2
@@ -2033,5 +2063,5 @@
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp byte [bp-006h], 001h                  ; 80 7e fa 01
-    jne short 01edbh                          ; 75 0d
+    jne short 01ef0h                          ; 75 0d
     mov dx, bx                                ; 89 da
     mov cx, word [bp-00ch]                    ; 8b 4e f4
@@ -2039,5 +2069,5 @@
     db  0f3h, 066h, 06dh
     ; rep insd                                  ; f3 66 6d
-    jmp short 01ee5h                          ; eb 0a
+    jmp short 01efah                          ; eb 0a
     mov dx, bx                                ; 89 da
     mov cx, word [bp-00ch]                    ; 8b 4e f4
@@ -2054,10 +2084,10 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 01ef2h                          ; 75 f4
+    jne short 01f07h                          ; 75 f4
     cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    jne short 01f18h                          ; 75 14
+    jne short 01f2dh                          ; 75 14
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 01f2eh                           ; 74 24
+    je short 01f43h                           ; 74 24
     mov dx, word [bp-01ch]                    ; 8b 56 e4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2065,9 +2095,9 @@
     out DX, AL                                ; ee
     mov dx, strict word 00004h                ; ba 04 00
-    jmp short 01f39h                          ; eb 21
+    jmp short 01f4eh                          ; eb 21
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 01eb5h                           ; 74 95
+    je short 01ecah                           ; 74 95
     mov dx, word [bp-01ch]                    ; 8b 56 e4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2075,5 +2105,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00005h                ; ba 05 00
-    jmp short 01f39h                          ; eb 0b
+    jmp short 01f4eh                          ; eb 0b
     mov dx, word [bp-01ch]                    ; 8b 56 e4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2087,5 +2117,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_ata_detect:                                 ; 0xf1f42 LB 0x617
+_ata_detect:                                 ; 0xf1f57 LB 0x617
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -2095,5 +2125,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 c8 f6
+    call 0161ch                               ; e8 b3 f6
     mov word [bp-024h], ax                    ; 89 46 dc
     mov di, 00122h                            ; bf 22 01
@@ -2113,5 +2143,5 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00eh], al                    ; 88 46 f2
-    jmp near 024e4h                           ; e9 48 05
+    jmp near 024f9h                           ; e9 48 05
     mov ax, 000a0h                            ; b8 a0 00
     lea dx, [si+006h]                         ; 8d 54 06
@@ -2145,7 +2175,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp cl, 055h                              ; 80 f9 55
-    jne near 02096h                           ; 0f 85 c0 00
+    jne near 020abh                           ; 0f 85 c0 00
     cmp AL, strict byte 0aah                  ; 3c aa
-    jne near 02096h                           ; 0f 85 ba 00
+    jne near 020abh                           ; 0f 85 ba 00
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -2154,9 +2184,9 @@
     mov byte [es:bx+01eh], 001h               ; 26 c6 47 1e 01
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 01c0ch                               ; e8 18 fc
+    call 01c21h                               ; e8 18 fc
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 01fffh                           ; 74 05
+    je short 02014h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 02002h                          ; eb 03
+    jmp short 02017h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     lea dx, [si+006h]                         ; 8d 54 06
@@ -2172,7 +2202,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp bl, 001h                              ; 80 fb 01
-    jne near 02096h                           ; 0f 85 7b 00
+    jne near 020abh                           ; 0f 85 7b 00
     cmp al, bl                                ; 38 d8
-    jne near 02096h                           ; 0f 85 75 00
+    jne near 020abh                           ; 0f 85 75 00
     lea dx, [si+004h]                         ; 8d 54 04
     in AL, DX                                 ; ec
@@ -2192,7 +2222,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp bl, 014h                              ; 80 fb 14
-    jne short 02059h                          ; 75 18
+    jne short 0206eh                          ; 75 18
     cmp cl, 0ebh                              ; 80 f9 eb
-    jne short 02059h                          ; 75 13
+    jne short 0206eh                          ; 75 13
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -2200,11 +2230,11 @@
     add bx, ax                                ; 01 c3
     mov byte [es:bx+01eh], 003h               ; 26 c6 47 1e 03
-    jmp short 02096h                          ; eb 3d
+    jmp short 020abh                          ; eb 3d
     test bh, bh                               ; 84 ff
-    jne short 0207bh                          ; 75 1e
+    jne short 02090h                          ; 75 1e
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0207bh                          ; 75 18
+    jne short 02090h                          ; 75 18
     test al, al                               ; 84 c0
-    je short 0207bh                           ; 74 14
+    je short 02090h                           ; 74 14
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     imul bx, bx, strict byte 00018h           ; 6b db 18
@@ -2212,9 +2242,9 @@
     add bx, word [bp-028h]                    ; 03 5e d8
     mov byte [es:bx+01eh], 002h               ; 26 c6 47 1e 02
-    jmp short 02096h                          ; eb 1b
+    jmp short 020abh                          ; eb 1b
     cmp bh, 0ffh                              ; 80 ff ff
-    jne short 02096h                          ; 75 16
+    jne short 020abh                          ; 75 16
     cmp bh, byte [bp-00ch]                    ; 3a 7e f4
-    jne short 02096h                          ; 75 11
+    jne short 020abh                          ; 75 11
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -2233,5 +2263,5 @@
     mov byte [bp-010h], al                    ; 88 46 f0
     cmp AL, strict byte 002h                  ; 3c 02
-    jne near 022bch                           ; 0f 85 03 02
+    jne near 022d1h                           ; 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
@@ -2246,10 +2276,10 @@
     mov ax, word [bp-028h]                    ; 8b 46 d8
     mov dx, es                                ; 8c c2
-    call 01ceah                               ; e8 03 fc
+    call 01cffh                               ; e8 03 fc
     test ax, ax                               ; 85 c0
-    je short 020f6h                           ; 74 0b
+    je short 0210bh                           ; 74 0b
     push 00104h                               ; 68 04 01
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 1a f8
+    call 01922h                               ; e8 1a f8
     add sp, strict byte 00004h                ; 83 c4 04
     test byte [bp-00260h], 080h               ; f6 86 a0 fd 80
@@ -2274,7 +2304,7 @@
     mov si, word [bp-001e6h]                  ; 8b b6 1a fe
     cmp si, 00fffh                            ; 81 fe ff 0f
-    jne short 0214bh                          ; 75 10
+    jne short 02160h                          ; 75 10
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 0214bh                          ; 75 0b
+    jne short 02160h                          ; 75 0b
     mov ax, word [bp-00198h]                  ; 8b 86 68 fe
     mov word [bp-020h], ax                    ; 89 46 e0
@@ -2282,19 +2312,19 @@
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 0215eh                           ; 72 0c
-    jbe short 02166h                          ; 76 12
+    jc short 02173h                           ; 72 0c
+    jbe short 0217bh                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 0216eh                           ; 74 16
+    je short 02183h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0216ah                           ; 74 0e
-    jmp short 021abh                          ; eb 4d
+    je short 0217fh                           ; 74 0e
+    jmp short 021c0h                          ; eb 4d
     test al, al                               ; 84 c0
-    jne short 021abh                          ; 75 49
+    jne short 021c0h                          ; 75 49
     mov BL, strict byte 01eh                  ; b3 1e
-    jmp short 02170h                          ; eb 0a
+    jmp short 02185h                          ; eb 0a
     mov BL, strict byte 026h                  ; b3 26
-    jmp short 02170h                          ; eb 06
+    jmp short 02185h                          ; eb 06
     mov BL, strict byte 067h                  ; b3 67
-    jmp short 02170h                          ; eb 02
+    jmp short 02185h                          ; eb 02
     mov BL, strict byte 070h                  ; b3 70
     mov al, bl                                ; 88 d8
@@ -2302,10 +2332,10 @@
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 e3 f4
+    call 0165ch                               ; e8 ce f4
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     movzx ax, bl                              ; 0f b6 c3
-    call 0165ch                               ; e8 d6 f4
+    call 0165ch                               ; e8 c1 f4
     xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
@@ -2314,5 +2344,5 @@
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 c6 f4
+    call 0165ch                               ; e8 b1 f4
     xor ah, ah                                ; 30 e4
     mov word [bp-036h], ax                    ; 89 46 ca
@@ -2320,17 +2350,17 @@
     add AL, strict byte 007h                  ; 04 07
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 b8 f4
+    call 0165ch                               ; e8 a3 f4
     xor ah, ah                                ; 30 e4
     mov word [bp-032h], ax                    ; 89 46 ce
-    jmp short 021b8h                          ; eb 0d
+    jmp short 021cdh                          ; eb 0d
     mov bx, word [bp-020h]                    ; 8b 5e e0
     mov cx, si                                ; 89 f1
     mov dx, ss                                ; 8c d2
     lea ax, [bp-036h]                         ; 8d 46 ca
-    call 0532ch                               ; e8 74 31
-    mov bx, 00da6h                            ; bb a6 0d
+    call 0534bh                               ; e8 7e 31
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 09 f7
+    call 018e1h                               ; e8 09 f7
     mov ax, word [bp-032h]                    ; 8b 46 ce
     push ax                                   ; 50
@@ -2348,5 +2378,5 @@
     push 0012dh                               ; 68 2d 01
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 23 f7
+    call 01922h                               ; e8 23 f7
     add sp, strict byte 00014h                ; 83 c4 14
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
@@ -2381,9 +2411,9 @@
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     cmp AL, strict byte 002h                  ; 3c 02
-    jnc short 022a7h                          ; 73 60
+    jnc short 022bch                          ; 73 60
     test al, al                               ; 84 c0
-    jne short 02250h                          ; 75 05
+    jne short 02265h                          ; 75 05
     mov di, strict word 0003dh                ; bf 3d 00
-    jmp short 02253h                          ; eb 03
+    jmp short 02268h                          ; eb 03
     mov di, strict word 0004dh                ; bf 4d 00
     mov dx, word [bp-024h]                    ; 8b 56 dc
@@ -2404,7 +2434,7 @@
     xor al, al                                ; 30 c0
     xor ah, ah                                ; 30 e4
-    jmp short 02291h                          ; eb 05
+    jmp short 022a6h                          ; eb 05
     cmp ah, 00fh                              ; 80 fc 0f
-    jnc short 0229fh                          ; 73 0e
+    jnc short 022b4h                          ; 73 0e
     movzx bx, ah                              ; 0f b6 dc
     mov es, dx                                ; 8e c2
@@ -2413,5 +2443,5 @@
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 0228ch                          ; eb ed
+    jmp short 022a1h                          ; eb ed
     neg al                                    ; f6 d8
     mov es, dx                                ; 8e c2
@@ -2424,5 +2454,5 @@
     inc byte [bp-006h]                        ; fe 46 fa
     cmp byte [bp-010h], 003h                  ; 80 7e f0 03
-    jne near 0235ch                           ; 0f 85 98 00
+    jne near 02371h                           ; 0f 85 98 00
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -2441,10 +2471,10 @@
     mov ax, word [bp-028h]                    ; 8b 46 d8
     mov dx, es                                ; 8c c2
-    call 01ceah                               ; e8 ec f9
+    call 01cffh                               ; e8 ec f9
     test ax, ax                               ; 85 c0
-    je short 0230dh                           ; 74 0b
+    je short 02322h                           ; 74 0b
     push 00154h                               ; 68 54 01
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 03 f6
+    call 01922h                               ; e8 03 f6
     add sp, strict byte 00004h                ; 83 c4 04
     mov cl, byte [bp-0025fh]                  ; 8a 8e a1 fd
@@ -2475,7 +2505,7 @@
     mov al, byte [bp-010h]                    ; 8a 46 f0
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 0238fh                           ; 74 2c
+    je short 023a4h                           ; 74 2c
     cmp AL, strict byte 002h                  ; 3c 02
-    jne near 023f2h                           ; 0f 85 89 00
+    jne near 02407h                           ; 0f 85 89 00
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     imul bx, bx, strict byte 00018h           ; 6b db 18
@@ -2489,5 +2519,5 @@
     shr word [bp-02eh], 1                     ; d1 6e d2
     rcr word [bp-030h], 1                     ; d1 5e d0
-    loop 02387h                               ; e2 f8
+    loop 0239ch                               ; e2 f8
     movzx dx, byte [bp-001bfh]                ; 0f b6 96 41 fe
     sal dx, 008h                              ; c1 e2 08
@@ -2495,17 +2525,17 @@
     or dx, ax                                 ; 09 c2
     mov byte [bp-012h], 00fh                  ; c6 46 ee 0f
-    jmp short 023adh                          ; eb 09
+    jmp short 023c2h                          ; eb 09
     dec byte [bp-012h]                        ; fe 4e ee
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jbe short 023bah                          ; 76 0d
+    jbe short 023cfh                          ; 76 0d
     movzx cx, byte [bp-012h]                  ; 0f b6 4e ee
     mov ax, strict word 00001h                ; b8 01 00
     sal ax, CL                                ; d3 e0
     test dx, ax                               ; 85 c2
-    je short 023a4h                           ; 74 ea
+    je short 023b9h                           ; 74 ea
     xor di, di                                ; 31 ff
-    jmp short 023c3h                          ; eb 05
+    jmp short 023d8h                          ; eb 05
     cmp di, strict byte 00014h                ; 83 ff 14
-    jnl short 023d8h                          ; 7d 15
+    jnl short 023edh                          ; 7d 15
     mov si, di                                ; 89 fe
     add si, di                                ; 01 fe
@@ -2515,27 +2545,27 @@
     mov byte [bp+si-05fh], al                 ; 88 42 a1
     inc di                                    ; 47
-    jmp short 023beh                          ; eb e6
+    jmp short 023d3h                          ; eb e6
     mov byte [bp-038h], 000h                  ; c6 46 c8 00
     mov di, strict word 00027h                ; bf 27 00
-    jmp short 023e6h                          ; eb 05
+    jmp short 023fbh                          ; eb 05
     dec di                                    ; 4f
     test di, di                               ; 85 ff
-    jle short 023f2h                          ; 7e 0c
+    jle short 02407h                          ; 7e 0c
     cmp byte [bp+di-060h], 020h               ; 80 7b a0 20
-    jne short 023f2h                          ; 75 06
+    jne short 02407h                          ; 75 06
     mov byte [bp+di-060h], 000h               ; c6 43 a0 00
-    jmp short 023e1h                          ; eb ef
+    jmp short 023f6h                          ; eb ef
     mov al, byte [bp-010h]                    ; 8a 46 f0
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 02455h                           ; 74 5c
+    je short 0246ah                           ; 74 5c
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 02406h                           ; 74 09
+    je short 0241bh                           ; 74 09
     cmp AL, strict byte 001h                  ; 3c 01
-    je near 024bch                            ; 0f 84 b9 00
-    jmp near 024dbh                           ; e9 d5 00
+    je near 024d1h                            ; 0f 84 b9 00
+    jmp near 024f0h                           ; e9 d5 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 02411h                           ; 74 05
+    je short 02426h                           ; 74 05
     mov ax, 0017fh                            ; b8 7f 01
-    jmp short 02414h                          ; eb 03
+    jmp short 02429h                          ; eb 03
     mov ax, 00186h                            ; b8 86 01
     push ax                                   ; 50
@@ -2544,5 +2574,5 @@
     push 0018dh                               ; 68 8d 01
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 eb f4
+    call 01922h                               ; e8 eb f4
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
@@ -2550,11 +2580,11 @@
     inc di                                    ; 47
     test ax, ax                               ; 85 c0
-    je short 0243eh                           ; 74 0e
+    je short 02453h                           ; 74 0e
     push ax                                   ; 50
     push 00198h                               ; 68 98 01
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 d4 f4
+    call 01922h                               ; e8 d4 f4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 02427h                          ; eb e9
+    jmp short 0243ch                          ; eb e9
     push dword [bp-030h]                      ; 66 ff 76 d0
     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
@@ -2562,11 +2592,11 @@
     push 0019bh                               ; 68 9b 01
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 be f4
+    call 01922h                               ; e8 be f4
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 024dbh                           ; e9 86 00
+    jmp near 024f0h                           ; e9 86 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 02460h                           ; 74 05
+    je short 02475h                           ; 74 05
     mov ax, 0017fh                            ; b8 7f 01
-    jmp short 02463h                          ; eb 03
+    jmp short 02478h                          ; eb 03
     mov ax, 00186h                            ; b8 86 01
     push ax                                   ; 50
@@ -2575,5 +2605,5 @@
     push 0018dh                               ; 68 8d 01
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 9c f4
+    call 01922h                               ; e8 9c f4
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
@@ -2581,11 +2611,11 @@
     inc di                                    ; 47
     test ax, ax                               ; 85 c0
-    je short 0248dh                           ; 74 0e
+    je short 024a2h                           ; 74 0e
     push ax                                   ; 50
     push 00198h                               ; 68 98 01
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 85 f4
+    call 01922h                               ; e8 85 f4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 02476h                          ; eb e9
+    jmp short 0248bh                          ; eb e9
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -2593,20 +2623,20 @@
     add bx, ax                                ; 01 c3
     cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
-    jne short 024aah                          ; 75 0a
+    jne short 024bfh                          ; 75 0a
     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     push ax                                   ; 50
     push 001bbh                               ; 68 bb 01
-    jmp short 024b2h                          ; eb 08
+    jmp short 024c7h                          ; eb 08
     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     push ax                                   ; 50
     push 001d5h                               ; 68 d5 01
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 56 f4
+    call 01922h                               ; e8 56 f4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 024dbh                          ; eb 1f
+    jmp short 024f0h                          ; eb 1f
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 024c7h                           ; 74 05
+    je short 024dch                           ; 74 05
     mov ax, 0017fh                            ; b8 7f 01
-    jmp short 024cah                          ; eb 03
+    jmp short 024dfh                          ; eb 03
     mov ax, 00186h                            ; b8 86 01
     push ax                                   ; 50
@@ -2615,9 +2645,9 @@
     push 001e7h                               ; 68 e7 01
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 35 f4
+    call 01922h                               ; e8 35 f4
     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 02532h                          ; 73 4e
+    jnc short 02547h                          ; 73 4e
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     mov ax, bx                                ; 89 d8
@@ -2647,7 +2677,7 @@
     out DX, AL                                ; ee
     test cl, cl                               ; 84 c9
-    je near 01f9ch                            ; 0f 84 70 fa
+    je near 01fb1h                            ; 0f 84 70 fa
     mov ax, 000b0h                            ; b8 b0 00
-    jmp near 01f9fh                           ; e9 6d fa
+    jmp near 01fb4h                           ; e9 6d fa
     mov al, byte [bp-006h]                    ; 8a 46 fa
     les bx, [bp-028h]                         ; c4 5e d8
@@ -2658,5 +2688,5 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 bc f0
+    call 0160eh                               ; e8 a7 f0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -2664,5 +2694,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ata_cmd_data_out_:                           ; 0xf2559 LB 0x21a
+ata_cmd_data_out_:                           ; 0xf256e LB 0x21a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -2693,7 +2723,7 @@
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 025adh                          ; 75 07
+    jne short 025c2h                          ; 75 07
     mov word [bp-012h], 00080h                ; c7 46 ee 80 00
-    jmp short 025b2h                          ; eb 05
+    jmp short 025c7h                          ; eb 05
     mov word [bp-012h], 00100h                ; c7 46 ee 00 01
     lea dx, [bx+007h]                         ; 8d 57 07
@@ -2702,5 +2732,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 025cbh                           ; 74 0f
+    je short 025e0h                           ; 74 0f
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2708,5 +2738,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 0276ah                           ; e9 9f 01
+    jmp near 0277fh                           ; e9 9f 01
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov ax, word [es:di]                      ; 26 8b 05
@@ -2725,11 +2755,11 @@
     mov ax, word [bp-010h]                    ; 8b 46 f0
     test ax, ax                               ; 85 c0
-    jne short 02669h                          ; 75 67
+    jne short 0267eh                          ; 75 67
     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 02612h                         ; 77 02
-    jne short 0263dh                          ; 75 2b
+    jnbe short 02627h                         ; 77 02
+    jne short 02652h                          ; 75 2b
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     xor al, al                                ; 30 c0
@@ -2756,5 +2786,5 @@
     shr word [bp-01ch], 1                     ; d1 6e e4
     rcr word [bp-01eh], 1                     ; d1 5e e2
-    loop 02648h                               ; e2 f8
+    loop 0265dh                               ; e2 f8
     mov ax, word [bp-01eh]                    ; 8b 46 e2
     mov word [bp-016h], ax                    ; 89 46 ea
@@ -2785,7 +2815,7 @@
     out DX, AL                                ; ee
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 0269fh                           ; 74 05
+    je short 026b4h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 026a2h                          ; eb 03
+    jmp short 026b7h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     movzx dx, byte [bp-014h]                  ; 0f b6 56 ec
@@ -2802,7 +2832,7 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 026b3h                          ; 75 f4
+    jne short 026c8h                          ; 75 f4
     test AL, strict byte 001h                 ; a8 01
-    je short 026d2h                           ; 74 0f
+    je short 026e7h                           ; 74 0f
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2810,7 +2840,7 @@
     out DX, AL                                ; ee
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 0276ah                           ; e9 98 00
+    jmp near 0277fh                           ; e9 98 00
     test dl, 008h                             ; f6 c2 08
-    jne short 026e6h                          ; 75 0f
+    jne short 026fbh                          ; 75 0f
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2818,8 +2848,8 @@
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 0276ah                           ; e9 84 00
+    jmp near 0277fh                           ; e9 84 00
     sti                                       ; fb
     cmp si, 0f800h                            ; 81 fe 00 f8
-    jc short 026fah                           ; 72 0d
+    jc short 0270fh                           ; 72 0d
     sub si, 00800h                            ; 81 ee 00 08
     mov ax, word [bp-018h]                    ; 8b 46 e8
@@ -2827,5 +2857,5 @@
     mov word [bp-018h], ax                    ; 89 46 e8
     cmp byte [bp-008h], 001h                  ; 80 7e f8 01
-    jne short 0270eh                          ; 75 0e
+    jne short 02723h                          ; 75 0e
     mov dx, bx                                ; 89 da
     mov cx, word [bp-012h]                    ; 8b 4e ee
@@ -2833,5 +2863,5 @@
     db  0f3h, 066h, 026h, 06fh
     ; rep es outsd                              ; f3 66 26 6f
-    jmp short 02719h                          ; eb 0b
+    jmp short 0272eh                          ; eb 0b
     mov dx, bx                                ; 89 da
     mov cx, word [bp-012h]                    ; 8b 4e ee
@@ -2848,10 +2878,10 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 02723h                          ; 75 f4
+    jne short 02738h                          ; 75 f4
     cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
-    jne short 02749h                          ; 75 14
+    jne short 0275eh                          ; 75 14
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 0275fh                           ; 74 24
+    je short 02774h                           ; 74 24
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2859,9 +2889,9 @@
     out DX, AL                                ; ee
     mov dx, strict word 00006h                ; ba 06 00
-    jmp short 0276ah                          ; eb 21
+    jmp short 0277fh                          ; eb 21
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 026e7h                           ; 74 96
+    je short 026fch                           ; 74 96
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2869,5 +2899,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00007h                ; ba 07 00
-    jmp short 0276ah                          ; eb 0b
+    jmp short 0277fh                          ; eb 0b
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, strict byte 00006h                ; 83 c2 06
@@ -2881,5 +2911,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-@ata_read_sectors:                           ; 0xf2773 LB 0x7a
+@ata_read_sectors:                           ; 0xf2788 LB 0x7a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -2895,10 +2925,10 @@
     mov ax, word [es:si+012h]                 ; 26 8b 44 12
     test ax, ax                               ; 85 c0
-    je short 027a1h                           ; 74 0d
+    je short 027b6h                           ; 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 027cdh                          ; eb 2c
+    jmp short 027e2h                          ; eb 2c
     mov di, word [es:si]                      ; 26 8b 3c
     add di, cx                                ; 01 cf
@@ -2906,11 +2936,11 @@
     adc ax, word [es:si+002h]                 ; 26 13 44 02
     cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 027b4h                         ; 77 02
-    jne short 027c0h                          ; 75 0c
+    jnbe short 027c9h                         ; 77 02
+    jne short 027d5h                          ; 75 0c
     mov bx, strict word 00024h                ; bb 24 00
     mov ax, si                                ; 89 f0
     mov dx, es                                ; 8c c2
-    call 01ceah                               ; e8 2c f5
-    jmp short 027e4h                          ; eb 24
+    call 01cffh                               ; e8 2c f5
+    jmp short 027f9h                          ; eb 24
     movzx ax, bl                              ; 0f b6 c3
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -2922,5 +2952,5 @@
     mov ax, si                                ; 89 f0
     mov dx, es                                ; 8c c2
-    call 01ceah                               ; e8 0f f5
+    call 01cffh                               ; e8 0f f5
     mov es, [bp-006h]                         ; 8e 46 fa
     mov word [es:di+024h], 00200h             ; 26 c7 45 24 00 02
@@ -2930,5 +2960,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@ata_write_sectors:                          ; 0xf27ed LB 0x3d
+@ata_write_sectors:                          ; 0xf2802 LB 0x3d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -2937,10 +2967,10 @@
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     cmp word [es:si+012h], strict byte 00000h ; 26 83 7c 12 00
-    je short 0280bh                           ; 74 0c
+    je short 02820h                           ; 74 0c
     mov bx, strict word 00030h                ; bb 30 00
     mov ax, si                                ; 89 f0
     mov dx, es                                ; 8c c2
-    call 02559h                               ; e8 50 fd
-    jmp short 02822h                          ; eb 17
+    call 0256eh                               ; e8 50 fd
+    jmp short 02837h                          ; eb 17
     xor ax, ax                                ; 31 c0
     mov dx, word [es:si]                      ; 26 8b 14
@@ -2948,13 +2978,13 @@
     adc ax, word [es:si+002h]                 ; 26 13 44 02
     cmp ax, 01000h                            ; 3d 00 10
-    jnbe short 0281dh                         ; 77 02
-    jne short 027ffh                          ; 75 e2
+    jnbe short 02832h                         ; 77 02
+    jne short 02814h                          ; 75 e2
     mov bx, strict word 00034h                ; bb 34 00
-    jmp short 02802h                          ; eb e0
+    jmp short 02817h                          ; eb e0
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ata_cmd_packet_:                             ; 0xf282a LB 0x2e8
+ata_cmd_packet_:                             ; 0xf283f LB 0x2e8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -2967,5 +2997,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 db ed
+    call 0161ch                               ; e8 c6 ed
     mov word [bp-012h], 00122h                ; c7 46 ee 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -2976,18 +3006,18 @@
     mov byte [bp-006h], ah                    ; 88 66 fa
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 0287ch                          ; 75 1f
-    mov bx, 00da6h                            ; bb a6 0d
+    jne short 02891h                          ; 75 1f
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 64 f0
+    call 018e1h                               ; e8 64 f0
     push 00201h                               ; 68 01 02
     push 00210h                               ; 68 10 02
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 9a f0
+    call 01922h                               ; e8 9a f0
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 02b07h                           ; e9 8b 02
+    jmp near 02b1ch                           ; e9 8b 02
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 02876h                          ; 75 f4
+    jne short 0288bh                          ; 75 f4
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 00006h           ; 6b c0 06
@@ -3007,8 +3037,8 @@
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jnc short 028bfh                          ; 73 06
+    jnc short 028d4h                          ; 73 06
     mov byte [bp-008h], 00ch                  ; c6 46 f8 0c
-    jmp short 028c5h                          ; eb 06
-    jbe short 028c5h                          ; 76 04
+    jmp short 028dah                          ; eb 06
+    jbe short 028dah                          ; 76 04
     mov byte [bp-008h], 010h                  ; c6 46 f8 10
     shr byte [bp-008h], 1                     ; d0 6e f8
@@ -3023,7 +3053,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    je short 028edh                           ; 74 06
+    je short 02902h                           ; 74 06
     mov dx, strict word 00002h                ; ba 02 00
-    jmp near 02b07h                           ; e9 1a 02
+    jmp near 02b1ch                           ; e9 1a 02
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3037,7 +3067,7 @@
     out DX, AL                                ; ee
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 0290dh                           ; 74 05
+    je short 02922h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 02910h                          ; eb 03
+    jmp short 02925h                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     lea dx, [bx+006h]                         ; 8d 57 06
@@ -3052,7 +3082,7 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 0291ah                          ; 75 f4
+    jne short 0292fh                          ; 75 f4
     test AL, strict byte 001h                 ; a8 01
-    je short 02939h                           ; 74 0f
+    je short 0294eh                           ; 74 0f
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3060,7 +3090,7 @@
     out DX, AL                                ; ee
     mov dx, strict word 00003h                ; ba 03 00
-    jmp near 02b07h                           ; e9 ce 01
+    jmp near 02b1ch                           ; e9 ce 01
     test dl, 008h                             ; f6 c2 08
-    jne short 0294dh                          ; 75 0f
+    jne short 02962h                          ; 75 0f
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3068,5 +3098,5 @@
     out DX, AL                                ; ee
     mov dx, strict word 00004h                ; ba 04 00
-    jmp near 02b07h                           ; e9 ba 01
+    jmp near 02b1ch                           ; e9 ba 01
     sti                                       ; fb
     mov ax, di                                ; 89 f8
@@ -3081,5 +3111,5 @@
     ; rep es outsw                              ; f3 26 6f
     cmp byte [bp+00ah], 000h                  ; 80 7e 0a 00
-    jne short 02976h                          ; 75 0b
+    jne short 0298bh                          ; 75 0b
     lea dx, [bx+007h]                         ; 8d 57 07
     in AL, DX                                 ; ec
@@ -3087,5 +3117,5 @@
     ; sub ah, ah                                ; 2a e4
     mov dl, al                                ; 88 c2
-    jmp near 02ae8h                           ; e9 72 01
+    jmp near 02afdh                           ; e9 72 01
     lea dx, [bx+007h]                         ; 8d 57 07
     in AL, DX                                 ; ec
@@ -3094,23 +3124,23 @@
     mov dl, al                                ; 88 c2
     test AL, strict byte 080h                 ; a8 80
-    jne short 02976h                          ; 75 f4
+    jne short 0298bh                          ; 75 f4
     test AL, strict byte 088h                 ; a8 88
-    je near 02ae8h                            ; 0f 84 60 01
+    je near 02afdh                            ; 0f 84 60 01
     test AL, strict byte 001h                 ; a8 01
-    je short 02997h                           ; 74 0b
+    je short 029ach                           ; 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 02933h                          ; eb 9c
+    jmp short 02948h                          ; eb 9c
     mov al, dl                                ; 88 d0
     and AL, strict byte 0c9h                  ; 24 c9
     cmp AL, strict byte 048h                  ; 3c 48
-    je short 029aah                           ; 74 0b
+    je short 029bfh                           ; 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 02947h                          ; eb 9d
+    jmp short 0295ch                          ; eb 9d
     mov ax, word [bp+00ch]                    ; 8b 46 0c
     shr ax, 004h                              ; c1 e8 04
@@ -3135,10 +3165,10 @@
     mov ax, word [bp+004h]                    ; 8b 46 04
     cmp ax, cx                                ; 39 c8
-    jbe short 029eah                          ; 76 0c
+    jbe short 029ffh                          ; 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 029f4h                          ; eb 0a
+    jmp short 02a09h                          ; eb 0a
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
@@ -3146,8 +3176,8 @@
     xor ax, ax                                ; 31 c0
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 02a1dh                          ; 75 21
+    jne short 02a32h                          ; 75 21
     mov dx, word [bp-014h]                    ; 8b 56 ec
     cmp dx, word [bp+006h]                    ; 3b 56 06
-    jbe short 02a1dh                          ; 76 19
+    jbe short 02a32h                          ; 76 19
     mov ax, word [bp-014h]                    ; 8b 46 ec
     sub ax, word [bp+006h]                    ; 2b 46 06
@@ -3158,5 +3188,5 @@
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 02a29h                          ; eb 0c
+    jmp short 02a3eh                          ; eb 0c
     mov word [bp-00ch], ax                    ; 89 46 f4
     mov dx, word [bp-014h]                    ; 8b 56 ec
@@ -3166,37 +3196,37 @@
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test cl, 003h                             ; f6 c1 03
-    je short 02a36h                           ; 74 02
+    je short 02a4bh                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-014h], 003h                 ; f6 46 ec 03
-    je short 02a3eh                           ; 74 02
+    je short 02a53h                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-00ch], 003h                 ; f6 46 f4 03
-    je short 02a46h                           ; 74 02
+    je short 02a5bh                           ; 74 02
     xor al, al                                ; 30 c0
     test byte [bp-014h], 001h                 ; f6 46 ec 01
-    je short 02a5eh                           ; 74 12
+    je short 02a73h                           ; 74 12
     inc word [bp-014h]                        ; ff 46 ec
     cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
-    jbe short 02a5eh                          ; 76 09
+    jbe short 02a73h                          ; 76 09
     test byte [bp-00ch], 001h                 ; f6 46 f4 01
-    je short 02a5eh                           ; 74 03
+    je short 02a73h                           ; 74 03
     dec word [bp-00ch]                        ; ff 4e f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 02a6fh                          ; 75 0d
+    jne short 02a84h                          ; 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 02a77h                          ; eb 08
+    jmp short 02a8ch                          ; 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 02aa7h                          ; 75 2c
+    jne short 02abch                          ; 75 2c
     test cx, cx                               ; 85 c9
-    je short 02a89h                           ; 74 0a
+    je short 02a9eh                           ; 74 0a
     mov dx, bx                                ; 89 da
     push eax                                  ; 66 50
     in eax, DX                                ; 66 ed
-    loop 02a83h                               ; e2 fc
+    loop 02a98h                               ; e2 fc
     pop eax                                   ; 66 58
     mov dx, bx                                ; 89 da
@@ -3207,16 +3237,16 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     test ax, ax                               ; 85 c0
-    je short 02ac6h                           ; 74 2b
+    je short 02adbh                           ; 74 2b
     mov cx, ax                                ; 89 c1
     push eax                                  ; 66 50
     in eax, DX                                ; 66 ed
-    loop 02a9fh                               ; e2 fc
+    loop 02ab4h                               ; e2 fc
     pop eax                                   ; 66 58
-    jmp short 02ac6h                          ; eb 1f
+    jmp short 02adbh                          ; eb 1f
     test cx, cx                               ; 85 c9
-    je short 02ab0h                           ; 74 05
+    je short 02ac5h                           ; 74 05
     mov dx, bx                                ; 89 da
     in ax, DX                                 ; ed
-    loop 02aadh                               ; e2 fd
+    loop 02ac2h                               ; e2 fd
     mov dx, bx                                ; 89 da
     mov cx, word [bp-014h]                    ; 8b 4e ec
@@ -3225,8 +3255,8 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     test ax, ax                               ; 85 c0
-    je short 02ac6h                           ; 74 05
+    je short 02adbh                           ; 74 05
     mov cx, ax                                ; 89 c1
     in ax, DX                                 ; ed
-    loop 02ac3h                               ; e2 fd
+    loop 02ad8h                               ; e2 fd
     add word [bp+00ch], si                    ; 01 76 0c
     xor ax, ax                                ; 31 c0
@@ -3239,14 +3269,14 @@
     mov ax, word [bp-016h]                    ; 8b 46 ea
     mov word [es:si+018h], ax                 ; 26 89 44 18
-    jmp near 02976h                           ; e9 8e fe
+    jmp near 0298bh                           ; e9 8e fe
     mov al, dl                                ; 88 d0
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02afch                           ; 74 0c
+    je short 02b11h                           ; 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 02947h                           ; e9 4b fe
+    jmp near 0295ch                           ; e9 4b fe
     mov dx, word [bp-010h]                    ; 8b 56 f0
     add dx, strict byte 00006h                ; 83 c2 06
@@ -3260,5 +3290,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ata_soft_reset_:                             ; 0xf2b12 LB 0x80
+ata_soft_reset_:                             ; 0xf2b27 LB 0x80
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3270,5 +3300,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 f8 ea
+    call 0161ch                               ; e8 e3 ea
     mov dx, bx                                ; 89 da
     shr dx, 1                                 ; d1 ea
@@ -3285,7 +3315,7 @@
     out DX, AL                                ; ee
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 02b54h                           ; 74 05
+    je short 02b69h                           ; 74 05
     mov ax, 000b0h                            ; b8 b0 00
-    jmp short 02b57h                          ; eb 03
+    jmp short 02b6ch                          ; eb 03
     mov ax, 000a0h                            ; b8 a0 00
     mov dx, cx                                ; 89 ca
@@ -3302,13 +3332,13 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 080h                 ; a8 80
-    jne short 02b65h                          ; 75 f4
+    jne short 02b7ah                          ; 75 f4
     and AL, strict byte 0e9h                  ; 24 e9
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02b82h                           ; 74 0b
+    je short 02b97h                           ; 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 02b8ah                          ; eb 08
+    jmp short 02b9fh                          ; eb 08
     lea dx, [bx+006h]                         ; 8d 57 06
     mov AL, strict byte 008h                  ; b0 08
@@ -3321,5 +3351,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_diskette_ret_status_:                    ; 0xf2b92 LB 0x18
+set_diskette_ret_status_:                    ; 0xf2ba7 LB 0x18
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3329,5 +3359,5 @@
     mov dx, strict word 00041h                ; ba 41 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 6b ea
+    call 0160eh                               ; e8 56 ea
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -3335,5 +3365,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_diskette_current_cyl_:                   ; 0xf2baa LB 0x2d
+set_diskette_current_cyl_:                   ; 0xf2bbf LB 0x2d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3341,8 +3371,8 @@
     mov bl, al                                ; 88 c3
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 02bbfh                          ; 76 0b
+    jbe short 02bd4h                          ; 76 0b
     push 00230h                               ; 68 30 02
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 51 ed
+    call 01922h                               ; e8 51 ed
     add sp, strict byte 00004h                ; 83 c4 04
     movzx ax, dl                              ; 0f b6 c2
@@ -3351,10 +3381,10 @@
     mov bx, ax                                ; 89 c3
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 3d ea
+    call 0160eh                               ; e8 28 ea
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_wait_for_interrupt_:                  ; 0xf2bd7 LB 0x21
+floppy_wait_for_interrupt_:                  ; 0xf2bec LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3363,18 +3393,18 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 1b ea
+    call 01600h                               ; e8 06 ea
     test AL, strict byte 080h                 ; a8 80
-    je short 02bedh                           ; 74 04
+    je short 02c02h                           ; 74 04
     and AL, strict byte 080h                  ; 24 80
-    jmp short 02bf2h                          ; eb 05
+    jmp short 02c07h                          ; eb 05
     sti                                       ; fb
     hlt                                       ; f4
     cli                                       ; fa
-    jmp short 02bdch                          ; eb ea
+    jmp short 02bf1h                          ; eb ea
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_wait_for_interrupt_or_timeout_:       ; 0xf2bf8 LB 0x46
+floppy_wait_for_interrupt_or_timeout_:       ; 0xf2c0d LB 0x46
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3385,26 +3415,26 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 01600h                               ; e8 f9 e9
+    call 01600h                               ; e8 e4 e9
     test al, al                               ; 84 c0
-    jne short 02c10h                          ; 75 05
+    jne short 02c25h                          ; 75 05
     sti                                       ; fb
     xor cl, cl                                ; 30 c9
-    jmp short 02c34h                          ; eb 24
+    jmp short 02c49h                          ; eb 24
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 e7 e9
+    call 01600h                               ; e8 d2 e9
     mov cl, al                                ; 88 c1
     test AL, strict byte 080h                 ; a8 80
-    je short 02c2fh                           ; 74 10
+    je short 02c44h                           ; 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 0160eh                               ; e8 e1 e9
-    jmp short 02c34h                          ; eb 05
+    call 0160eh                               ; e8 cc e9
+    jmp short 02c49h                          ; eb 05
     sti                                       ; fb
     hlt                                       ; f4
     cli                                       ; fa
-    jmp short 02bffh                          ; eb cb
+    jmp short 02c14h                          ; eb cb
     mov al, cl                                ; 88 c8
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -3414,5 +3444,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_reset_controller_:                    ; 0xf2c3e LB 0x2b
+floppy_reset_controller_:                    ; 0xf2c53 LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3436,5 +3466,5 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02c56h                          ; 75 f4
+    jne short 02c6bh                          ; 75 f4
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
@@ -3442,5 +3472,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_prepare_controller_:                  ; 0xf2c69 LB 0x81
+floppy_prepare_controller_:                  ; 0xf2c7e LB 0x81
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3452,10 +3482,10 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 85 e9
+    call 01600h                               ; e8 70 e9
     and AL, strict byte 07fh                  ; 24 7f
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 85 e9
+    call 0160eh                               ; e8 70 e9
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
@@ -3465,7 +3495,7 @@
     mov byte [bp-008h], al                    ; 88 46 f8
     test cx, cx                               ; 85 c9
-    je short 02c9ch                           ; 74 04
+    je short 02cb1h                           ; 74 04
     mov AL, strict byte 020h                  ; b0 20
-    jmp short 02c9eh                          ; eb 02
+    jmp short 02cb3h                          ; eb 02
     mov AL, strict byte 010h                  ; b0 10
     or AL, strict byte 00ch                   ; 0c 0c
@@ -3476,8 +3506,8 @@
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 0160eh                               ; e8 5d e9
+    call 0160eh                               ; e8 48 e9
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 46 e9
+    call 01600h                               ; e8 31 e9
     shr al, 006h                              ; c0 e8 06
     mov dx, 003f7h                            ; ba f7 03
@@ -3489,12 +3519,12 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02cc1h                          ; 75 f4
+    jne short 02cd6h                          ; 75 f4
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 02ce2h                          ; 75 0f
-    call 02bd7h                               ; e8 01 ff
+    jne short 02cf7h                          ; 75 0f
+    call 02bech                               ; 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 0160eh                               ; e8 2c e9
+    call 0160eh                               ; e8 17 e9
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -3503,5 +3533,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_known_:                         ; 0xf2cea LB 0x43
+floppy_media_known_:                         ; 0xf2cff LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3511,23 +3541,23 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 06 e9
+    call 01600h                               ; e8 f1 e8
     mov ah, al                                ; 88 c4
     test bx, bx                               ; 85 db
-    je short 02d02h                           ; 74 02
+    je short 02d17h                           ; 74 02
     shr al, 1                                 ; d0 e8
     and AL, strict byte 001h                  ; 24 01
-    jne short 02d0ah                          ; 75 04
+    jne short 02d1fh                          ; 75 04
     xor ah, ah                                ; 30 e4
-    jmp short 02d26h                          ; eb 1c
+    jmp short 02d3bh                          ; eb 1c
     mov dx, 00090h                            ; ba 90 00
     test bx, bx                               ; 85 db
-    je short 02d14h                           ; 74 03
+    je short 02d29h                           ; 74 03
     mov dx, 00091h                            ; ba 91 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 e6 e8
+    call 01600h                               ; e8 d1 e8
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
     and AL, strict byte 001h                  ; 24 01
-    je short 02d06h                           ; 74 e3
+    je short 02d1bh                           ; 74 e3
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -3536,5 +3566,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_read_id_:                             ; 0xf2d2d LB 0x40
+floppy_read_id_:                             ; 0xf2d42 LB 0x40
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3544,5 +3574,5 @@
     sub sp, strict byte 00008h                ; 83 ec 08
     mov bx, ax                                ; 89 c3
-    call 02c69h                               ; e8 2e ff
+    call 02c7eh                               ; e8 2e ff
     mov AL, strict byte 04ah                  ; b0 4a
     mov dx, 003f5h                            ; ba f5 03
@@ -3550,9 +3580,9 @@
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02bd7h                               ; e8 90 fe
+    call 02bech                               ; e8 90 fe
     xor si, si                                ; 31 f6
-    jmp short 02d50h                          ; eb 05
+    jmp short 02d65h                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 02d5ch                          ; 7d 0c
+    jnl short 02d71h                          ; 7d 0c
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -3561,5 +3591,5 @@
     mov byte [bp+si-00eh], al                 ; 88 42 f2
     inc si                                    ; 46
-    jmp short 02d4bh                          ; eb ef
+    jmp short 02d60h                          ; eb ef
     test byte [bp-00eh], 0c0h                 ; f6 46 f2 c0
     db  00fh, 094h, 0c0h
@@ -3572,5 +3602,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_recal_:                         ; 0xf2d6d LB 0x48
+floppy_drive_recal_:                         ; 0xf2d82 LB 0x48
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3579,5 +3609,5 @@
     push dx                                   ; 52
     mov bx, ax                                ; 89 c3
-    call 02c69h                               ; e8 f1 fe
+    call 02c7eh                               ; e8 f1 fe
     mov AL, strict byte 007h                  ; b0 07
     mov dx, 003f5h                            ; ba f5 03
@@ -3585,10 +3615,10 @@
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02bd7h                               ; e8 53 fe
+    call 02bech                               ; e8 53 fe
     test bx, bx                               ; 85 db
-    je short 02d8fh                           ; 74 07
+    je short 02da4h                           ; 74 07
     or AL, strict byte 002h                   ; 0c 02
     mov cx, 00095h                            ; b9 95 00
-    jmp short 02d94h                          ; eb 05
+    jmp short 02da9h                          ; eb 05
     or AL, strict byte 001h                   ; 0c 01
     mov cx, 00094h                            ; b9 94 00
@@ -3596,9 +3626,9 @@
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 6e e8
+    call 0160eh                               ; e8 59 e8
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 64 e8
+    call 0160eh                               ; e8 4f e8
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -3608,5 +3638,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_sense_:                         ; 0xf2db5 LB 0xf0
+floppy_media_sense_:                         ; 0xf2dca LB 0xf0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3617,49 +3647,49 @@
     push di                                   ; 57
     mov di, ax                                ; 89 c7
-    call 02d6dh                               ; e8 ab ff
+    call 02d82h                               ; e8 ab ff
     test ax, ax                               ; 85 c0
-    jne short 02dcbh                          ; 75 05
+    jne short 02de0h                          ; 75 05
     xor cx, cx                                ; 31 c9
-    jmp near 02e99h                           ; e9 ce 00
+    jmp near 02eaeh                           ; e9 ce 00
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 8b e8
+    call 0165ch                               ; e8 76 e8
     test di, di                               ; 85 ff
-    jne short 02ddch                          ; 75 07
+    jne short 02df1h                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 02de1h                          ; eb 05
+    jmp short 02df6h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     cmp cl, 001h                              ; 80 f9 01
-    jne short 02defh                          ; 75 09
+    jne short 02e04h                          ; 75 09
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 015h                  ; b5 15
     mov si, strict word 00001h                ; be 01 00
-    jmp short 02e2dh                          ; eb 3e
+    jmp short 02e42h                          ; eb 3e
     cmp cl, 002h                              ; 80 f9 02
-    jne short 02dfah                          ; 75 06
+    jne short 02e0fh                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 035h                  ; b5 35
-    jmp short 02deah                          ; eb f0
+    jmp short 02dffh                          ; eb f0
     cmp cl, 003h                              ; 80 f9 03
-    jne short 02e05h                          ; 75 06
+    jne short 02e1ah                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 02deah                          ; eb e5
+    jmp short 02dffh                          ; eb e5
     cmp cl, 004h                              ; 80 f9 04
-    jne short 02e10h                          ; 75 06
+    jne short 02e25h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 02deah                          ; eb da
+    jmp short 02dffh                          ; eb da
     cmp cl, 005h                              ; 80 f9 05
-    jne short 02e1bh                          ; 75 06
+    jne short 02e30h                          ; 75 06
     mov CL, strict byte 0cch                  ; b1 cc
     mov CH, strict byte 0d7h                  ; b5 d7
-    jmp short 02deah                          ; eb cf
+    jmp short 02dffh                          ; eb cf
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 02e25h                           ; 74 05
+    je short 02e3ah                           ; 74 05
     cmp cl, 00fh                              ; 80 f9 0f
-    jne short 02e27h                          ; 75 02
-    jmp short 02e15h                          ; eb ee
+    jne short 02e3ch                          ; 75 02
+    jmp short 02e2ah                          ; eb ee
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
@@ -3668,32 +3698,32 @@
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 d5 e7
+    call 0160eh                               ; e8 c0 e7
     mov ax, di                                ; 89 f8
-    call 02d2dh                               ; e8 ef fe
+    call 02d42h                               ; e8 ef fe
     test ax, ax                               ; 85 c0
-    jne short 02e74h                          ; 75 32
+    jne short 02e89h                          ; 75 32
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    je short 02e74h                           ; 74 2a
+    je short 02e89h                           ; 74 2a
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 02e61h                           ; 74 0f
+    je short 02e76h                           ; 74 0f
     mov ah, cl                                ; 88 cc
     and ah, 03fh                              ; 80 e4 3f
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 02e6dh                           ; 74 12
+    je short 02e82h                           ; 74 12
     test al, al                               ; 84 c0
-    je short 02e66h                           ; 74 07
-    jmp short 02e2dh                          ; eb cc
+    je short 02e7bh                           ; 74 07
+    jmp short 02e42h                          ; eb cc
     and cl, 03fh                              ; 80 e1 3f
-    jmp short 02e2dh                          ; eb c7
+    jmp short 02e42h                          ; eb c7
     mov cl, ah                                ; 88 e1
     or cl, 040h                               ; 80 c9 40
-    jmp short 02e2dh                          ; eb c0
+    jmp short 02e42h                          ; eb c0
     mov cl, ah                                ; 88 e1
     or cl, 080h                               ; 80 c9 80
-    jmp short 02e2dh                          ; eb b9
+    jmp short 02e42h                          ; eb b9
     test di, di                               ; 85 ff
     db  00fh, 095h, 0c0h
@@ -3704,9 +3734,9 @@
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 82 e7
+    call 0160eh                               ; e8 6d e7
     movzx bx, ch                              ; 0f b6 dd
     mov dx, di                                ; 89 fa
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 77 e7
+    call 0160eh                               ; e8 62 e7
     mov cx, si                                ; 89 f1
     mov ax, cx                                ; 89 c8
@@ -3719,5 +3749,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_exists_:                        ; 0xf2ea5 LB 0x24
+floppy_drive_exists_:                        ; 0xf2eba LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3725,9 +3755,9 @@
     mov dx, ax                                ; 89 c2
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 ab e7
+    call 0165ch                               ; e8 96 e7
     test dx, dx                               ; 85 d2
-    jne short 02ebah                          ; 75 05
+    jne short 02ecfh                          ; 75 05
     shr al, 004h                              ; c0 e8 04
-    jmp short 02ebch                          ; eb 02
+    jmp short 02ed1h                          ; eb 02
     and AL, strict byte 00fh                  ; 24 0f
     test al, al                               ; 84 c0
@@ -3739,5 +3769,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_diskette_function:                    ; 0xf2ec9 LB 0x72a
+_int13_diskette_function:                    ; 0xf2ede LB 0x734
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -3752,37 +3782,36 @@
     mov ah, byte [bp+00eh]                    ; 8a 66 0e
     cmp bl, 008h                              ; 80 fb 08
-    jc short 02f22h                           ; 72 3a
+    jc short 02f35h                           ; 72 38
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     or dl, 001h                               ; 80 ca 01
     cmp bl, 008h                              ; 80 fb 08
-    jbe near 03472h                           ; 0f 86 7d 05
+    jbe near 03491h                           ; 0f 86 87 05
     cmp bl, 016h                              ; 80 fb 16
-    jc short 02f18h                           ; 72 1e
+    jc short 02f2bh                           ; 72 1c
     or si, 00100h                             ; 81 ce 00 01
-    mov cx, si                                ; 89 f1
     cmp bl, 016h                              ; 80 fb 16
-    jbe near 035aeh                           ; 0f 86 a7 06
+    jbe near 035cdh                           ; 0f 86 b3 06
     cmp bl, 018h                              ; 80 fb 18
-    je near 035b3h                            ; 0f 84 a5 06
+    je near 035d2h                            ; 0f 84 b1 06
     cmp bl, 017h                              ; 80 fb 17
-    je near 035b3h                            ; 0f 84 9e 06
-    jmp near 035d0h                           ; e9 b8 06
+    je near 035d2h                            ; 0f 84 aa 06
+    jmp near 035efh                           ; e9 c4 06
     cmp bl, 015h                              ; 80 fb 15
-    je near 03568h                            ; 0f 84 49 06
-    jmp near 035d0h                           ; e9 ae 06
+    je near 03587h                            ; 0f 84 55 06
+    jmp near 035efh                           ; e9 ba 06
     cmp bl, 001h                              ; 80 fb 01
-    jc short 02f3ch                           ; 72 15
-    jbe near 02fb5h                           ; 0f 86 8a 00
+    jc short 02f4fh                           ; 72 15
+    jbe near 02fc8h                           ; 0f 86 8a 00
     cmp bl, 005h                              ; 80 fb 05
-    je near 032f8h                            ; 0f 84 c6 03
+    je near 0330bh                            ; 0f 84 c6 03
     cmp bl, 004h                              ; 80 fb 04
-    jbe near 02fd3h                           ; 0f 86 9a 00
-    jmp near 035d0h                           ; e9 94 06
+    jbe near 02fe6h                           ; 0f 86 9a 00
+    jmp near 035efh                           ; e9 a0 06
     test bl, bl                               ; 84 db
-    jne near 035d0h                           ; 0f 85 8e 06
+    jne near 035efh                           ; 0f 85 9a 06
     mov al, byte [bp+00eh]                    ; 8a 46 0e
     mov byte [bp-00eh], al                    ; 88 46 f2
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 02f60h                          ; 76 14
+    jbe short 02f73h                          ; 76 14
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -3790,17 +3819,17 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02b92h                               ; e8 35 fc
-    jmp near 032d4h                           ; e9 74 03
+    call 02ba7h                               ; e8 37 fc
+    jmp near 032e7h                           ; e9 74 03
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 f6 e6
+    call 0165ch                               ; e8 e3 e6
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 02f73h                          ; 75 07
+    jne short 02f86h                          ; 75 07
     mov dl, al                                ; 88 c2
     shr dl, 004h                              ; c0 ea 04
-    jmp short 02f78h                          ; eb 05
+    jmp short 02f8bh                          ; eb 05
     mov dl, al                                ; 88 c2
     and dl, 00fh                              ; 80 e2 0f
     test dl, dl                               ; 84 d2
-    jne short 02f8ch                          ; 75 10
+    jne short 02f9fh                          ; 75 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -3808,17 +3837,17 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp short 02f5ah                          ; eb ce
+    jmp short 02f6dh                          ; eb ce
     xor bx, bx                                ; 31 db
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 77 e6
+    call 0160eh                               ; e8 64 e6
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02b92h                               ; e8 f1 fb
+    call 02ba7h                               ; e8 f3 fb
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     xor dx, dx                                ; 31 d2
-    call 02baah                               ; e8 fc fb
+    call 02bbfh                               ; e8 fe fb
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -3829,5 +3858,5 @@
     mov dx, 00441h                            ; ba 41 04
     xor ax, ax                                ; 31 c0
-    call 01600h                               ; e8 3f e6
+    call 01600h                               ; e8 2c e6
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
@@ -3835,34 +3864,34 @@
     mov word [bp+016h], si                    ; 89 76 16
     test al, al                               ; 84 c0
-    je short 02faeh                           ; 74 de
-    jmp near 032d4h                           ; e9 01 03
+    je short 02fc1h                           ; 74 de
+    jmp near 032e7h                           ; e9 01 03
     mov al, byte [bp+016h]                    ; 8a 46 16
     mov byte [bp-00ch], al                    ; 88 46 f4
     mov dx, word [bp+014h]                    ; 8b 56 14
     shr dx, 008h                              ; c1 ea 08
-    mov byte [bp-008h], dl                    ; 88 56 f8
+    mov byte [bp-006h], dl                    ; 88 56 fa
     mov al, byte [bp+014h]                    ; 8a 46 14
     mov byte [bp-00ah], al                    ; 88 46 f6
     mov dx, word [bp+012h]                    ; 8b 56 12
     shr dx, 008h                              ; c1 ea 08
-    mov byte [bp-006h], dl                    ; 88 56 fa
+    mov byte [bp-008h], dl                    ; 88 56 f8
     mov byte [bp-00eh], ah                    ; 88 66 f2
     cmp ah, 001h                              ; 80 fc 01
-    jnbe short 03009h                         ; 77 10
+    jnbe short 0301ch                         ; 77 10
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 03009h                         ; 77 0b
+    jnbe short 0301ch                         ; 77 0b
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     test al, al                               ; 84 c0
-    je short 03009h                           ; 74 04
+    je short 0301ch                           ; 74 04
     cmp AL, strict byte 048h                  ; 3c 48
-    jbe short 03032h                          ; 76 29
-    mov bx, 00da6h                            ; bb a6 0d
+    jbe short 03045h                          ; 76 29
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 b8 e8
+    call 018e1h                               ; e8 ba e8
     push 00255h                               ; 68 55 02
     push 0026dh                               ; 68 6d 02
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 ee e8
+    call 01922h                               ; e8 f0 e8
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -3871,18 +3900,18 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 030a3h                          ; eb 71
+    jmp short 030b6h                          ; eb 71
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 02ea5h                               ; e8 6c fe
+    call 02ebah                               ; e8 6e fe
     test ax, ax                               ; 85 c0
-    je near 03136h                            ; 0f 84 f7 00
+    je near 03149h                            ; 0f 84 f7 00
     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     mov ax, dx                                ; 89 d0
-    call 02ceah                               ; e8 a2 fc
+    call 02cffh                               ; e8 a4 fc
     test ax, ax                               ; 85 c0
-    jne short 03065h                          ; 75 19
+    jne short 03078h                          ; 75 19
     mov ax, dx                                ; 89 d0
-    call 02db5h                               ; e8 64 fd
+    call 02dcah                               ; e8 66 fd
     test ax, ax                               ; 85 c0
-    jne short 03065h                          ; 75 10
+    jne short 03078h                          ; 75 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -3890,7 +3919,161 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp short 030a3h                          ; eb 3e
+    jmp short 030b6h                          ; eb 3e
     cmp ch, 002h                              ; 80 fd 02
-    jne near 031cdh                           ; 0f 85 61 01
+    jne near 031e0h                           ; 0f 85 61 01
+    mov cx, word [bp+006h]                    ; 8b 4e 06
+    shr cx, 00ch                              ; c1 e9 0c
+    mov ah, cl                                ; 88 cc
+    mov dx, word [bp+006h]                    ; 8b 56 06
+    sal dx, 004h                              ; c1 e2 04
+    mov bx, word [bp+010h]                    ; 8b 5e 10
+    add bx, dx                                ; 01 d3
+    cmp bx, dx                                ; 39 d3
+    jnc short 03098h                          ; 73 02
+    db  0feh, 0c4h
+    ; inc ah                                    ; fe c4
+    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
+    sal cx, 009h                              ; c1 e1 09
+    dec cx                                    ; 49
+    mov dx, bx                                ; 89 da
+    add dx, cx                                ; 01 ca
+    cmp dx, bx                                ; 39 da
+    jnc short 030c0h                          ; 73 18
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 009h                               ; 80 cc 09
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov ax, strict word 00009h                ; b8 09 00
+    call 02ba7h                               ; e8 ee fa
+    mov byte [bp+016h], 000h                  ; c6 46 16 00
+    jmp near 032e7h                           ; e9 27 02
+    mov AL, strict byte 006h                  ; b0 06
+    mov dx, strict word 0000ah                ; ba 0a 00
+    out DX, AL                                ; ee
+    xor al, al                                ; 30 c0
+    mov dx, strict word 0000ch                ; ba 0c 00
+    out DX, AL                                ; ee
+    mov al, bl                                ; 88 d8
+    mov dx, strict word 00004h                ; ba 04 00
+    out DX, AL                                ; ee
+    shr bx, 008h                              ; c1 eb 08
+    mov al, bl                                ; 88 d8
+    out DX, AL                                ; ee
+    xor al, bl                                ; 30 d8
+    mov dx, strict word 0000ch                ; ba 0c 00
+    out DX, AL                                ; ee
+    mov al, cl                                ; 88 c8
+    mov dx, strict word 00005h                ; ba 05 00
+    out DX, AL                                ; ee
+    shr cx, 008h                              ; c1 e9 08
+    mov al, cl                                ; 88 c8
+    out DX, AL                                ; ee
+    mov AL, strict byte 046h                  ; b0 46
+    mov dx, strict word 0000bh                ; ba 0b 00
+    out DX, AL                                ; ee
+    mov al, ah                                ; 88 e0
+    mov dx, 00081h                            ; ba 81 00
+    out DX, AL                                ; ee
+    mov AL, strict byte 002h                  ; b0 02
+    mov dx, strict word 0000ah                ; ba 0a 00
+    out DX, AL                                ; ee
+    out DX, AL                                ; ee
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    call 02c7eh                               ; e8 7a fb
+    mov AL, strict byte 0e6h                  ; b0 e6
+    mov dx, 003f5h                            ; ba f5 03
+    out DX, AL                                ; ee
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    sal ax, 002h                              ; c1 e0 02
+    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
+    or ax, dx                                 ; 09 d0
+    mov dx, 003f5h                            ; ba f5 03
+    out DX, AL                                ; ee
+    mov al, byte [bp-006h]                    ; 8a 46 fa
+    out DX, AL                                ; ee
+    mov al, byte [bp-008h]                    ; 8a 46 f8
+    out DX, AL                                ; ee
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    out DX, AL                                ; ee
+    mov AL, strict byte 002h                  ; b0 02
+    out DX, AL                                ; ee
+    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    add ax, dx                                ; 01 d0
+    dec ax                                    ; 48
+    mov dx, 003f5h                            ; ba f5 03
+    out DX, AL                                ; ee
+    xor al, al                                ; 30 c0
+    out DX, AL                                ; ee
+    mov AL, strict byte 0ffh                  ; b0 ff
+    out DX, AL                                ; ee
+    call 02c0dh                               ; e8 cb fa
+    test al, al                               ; 84 c0
+    jne short 0315ah                          ; 75 14
+    call 02c53h                               ; e8 0a fb
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 080h                               ; 80 cc 80
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov ax, 00080h                            ; b8 80 00
+    jmp near 030b6h                           ; e9 5c ff
+    mov dx, 003f4h                            ; ba f4 03
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    and AL, strict byte 0c0h                  ; 24 c0
+    cmp AL, strict byte 0c0h                  ; 3c c0
+    je short 03174h                           ; 74 0e
+    push 00255h                               ; 68 55 02
+    push 00288h                               ; 68 88 02
+    push strict byte 00007h                   ; 6a 07
+    call 01922h                               ; e8 b1 e7
+    add sp, strict byte 00006h                ; 83 c4 06
+    xor si, si                                ; 31 f6
+    jmp short 0317dh                          ; eb 05
+    cmp si, strict byte 00007h                ; 83 fe 07
+    jnl short 03195h                          ; 7d 18
+    mov dx, 003f5h                            ; ba f5 03
+    in AL, DX                                 ; ec
+    db  02ah, 0e4h
+    ; sub ah, ah                                ; 2a e4
+    mov byte [bp+si-016h], al                 ; 88 42 ea
+    movzx bx, al                              ; 0f b6 d8
+    lea dx, [si+042h]                         ; 8d 54 42
+    mov ax, strict word 00040h                ; b8 40 00
+    call 0160eh                               ; e8 7c e4
+    inc si                                    ; 46
+    jmp short 03178h                          ; eb e3
+    test byte [bp-016h], 0c0h                 ; f6 46 ea c0
+    je short 031ach                           ; 74 11
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 020h                               ; 80 cc 20
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov ax, strict word 00020h                ; b8 20 00
+    jmp near 030b6h                           ; e9 0a ff
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    sal ax, 009h                              ; c1 e0 09
+    cwd                                       ; 99
+    db  02bh, 0c2h
+    ; sub ax, dx                                ; 2b c2
+    sar ax, 1                                 ; d1 f8
+    mov si, word [bp+010h]                    ; 8b 76 10
+    mov dx, word [bp+006h]                    ; 8b 56 06
+    mov di, si                                ; 89 f7
+    mov es, dx                                ; 8e c2
+    mov cx, ax                                ; 89 c1
+    push DS                                   ; 1e
+    mov ds, dx                                ; 8e da
+    rep movsw                                 ; f3 a5
+    pop DS                                    ; 1f
+    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    call 02bbfh                               ; e8 ea f9
+    mov byte [bp+017h], 000h                  ; c6 46 17 00
+    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
+    jmp near 02fc1h                           ; e9 e1 fd
+    cmp ch, 003h                              ; 80 fd 03
+    jne near 032f5h                           ; 0f 85 0e 01
     mov dx, word [bp+006h]                    ; 8b 56 06
     shr dx, 00ch                              ; c1 ea 0c
@@ -3901,5 +4084,5 @@
     add bx, cx                                ; 01 cb
     cmp bx, cx                                ; 39 cb
-    jnc short 03085h                          ; 73 02
+    jnc short 03200h                          ; 73 02
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
@@ -3910,13 +4093,5 @@
     add dx, cx                                ; 01 ca
     cmp dx, bx                                ; 39 da
-    jnc short 030adh                          ; 73 18
-    mov ax, word [bp+016h]                    ; 8b 46 16
-    xor ah, ah                                ; 30 e4
-    or ah, 009h                               ; 80 cc 09
-    mov word [bp+016h], ax                    ; 89 46 16
-    mov ax, strict word 00009h                ; b8 09 00
-    call 02b92h                               ; e8 ec fa
-    mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 032d4h                           ; e9 27 02
+    jc near 030a8h                            ; 0f 82 96 fe
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -3940,5 +4115,5 @@
     mov al, cl                                ; 88 c8
     out DX, AL                                ; ee
-    mov AL, strict byte 046h                  ; b0 46
+    mov AL, strict byte 04ah                  ; b0 4a
     mov dx, strict word 0000bh                ; ba 0b 00
     out DX, AL                                ; ee
@@ -3949,11 +4124,10 @@
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    out DX, AL                                ; ee
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 02c69h                               ; e8 78 fb
-    mov AL, strict byte 0e6h                  ; b0 e6
+    call 02c7eh                               ; e8 29 fa
+    mov AL, strict byte 0c5h                  ; b0 c5
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
+    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     sal dx, 002h                              ; c1 e2 02
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
@@ -3961,7 +4135,7 @@
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
+    mov al, byte [bp-006h]                    ; 8a 46 fa
+    out DX, AL                                ; ee
     mov al, byte [bp-008h]                    ; 8a 46 f8
-    out DX, AL                                ; ee
-    mov al, byte [bp-006h]                    ; 8a 46 fa
     out DX, AL                                ; ee
     mov al, byte [bp-00ah]                    ; 8a 46 f6
@@ -3979,14 +4153,7 @@
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02bf8h                               ; e8 c9 fa
+    call 02c0dh                               ; e8 7a f9
     test al, al                               ; 84 c0
-    jne short 03147h                          ; 75 14
-    call 02c3eh                               ; e8 08 fb
-    mov ax, word [bp+016h]                    ; 8b 46 16
-    xor ah, ah                                ; 30 e4
-    or ah, 080h                               ; 80 cc 80
-    mov word [bp+016h], ax                    ; 89 46 16
-    mov ax, 00080h                            ; b8 80 00
-    jmp near 030a3h                           ; e9 5c ff
+    je near 03146h                            ; 0f 84 ad fe
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -3995,14 +4162,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03161h                           ; 74 0e
+    je short 032b3h                           ; 74 0e
     push 00255h                               ; 68 55 02
     push 00288h                               ; 68 88 02
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 af e7
+    call 01922h                               ; e8 72 e6
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 0316ah                          ; eb 05
+    jmp short 032bch                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03182h                          ; 7d 18
+    jnl short 032d4h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -4013,38 +4180,63 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 8f e4
+    call 0160eh                               ; e8 3d e3
     inc si                                    ; 46
-    jmp short 03165h                          ; eb e3
+    jmp short 032b7h                          ; eb e3
     test byte [bp-016h], 0c0h                 ; f6 46 ea c0
-    je short 03199h                           ; 74 11
+    je near 031cah                            ; 0f 84 ee fe
+    test byte [bp-015h], 002h                 ; f6 46 eb 02
+    je short 032eeh                           ; 74 0c
+    mov word [bp+016h], 00300h                ; c7 46 16 00 03
+    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
+    jmp near 02fc1h                           ; e9 d3 fc
+    mov word [bp+016h], 00100h                ; c7 46 16 00 01
+    jmp short 032e7h                          ; eb f2
+    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    call 02bbfh                               ; e8 bf f8
+    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
+    mov byte [bp+017h], 000h                  ; c6 46 17 00
+    jmp near 02fc1h                           ; e9 b6 fc
+    mov al, byte [bp+016h]                    ; 8a 46 16
+    mov byte [bp-00ch], al                    ; 88 46 f4
+    mov dx, word [bp+014h]                    ; 8b 56 14
+    shr dx, 008h                              ; c1 ea 08
+    mov byte [bp-006h], dl                    ; 88 56 fa
+    mov ax, word [bp+012h]                    ; 8b 46 12
+    shr ax, 008h                              ; c1 e8 08
+    mov byte [bp-008h], al                    ; 88 46 f8
+    mov bl, byte [bp+00eh]                    ; 8a 5e 0e
+    mov byte [bp-00eh], bl                    ; 88 5e f2
+    cmp bl, 001h                              ; 80 fb 01
+    jnbe short 03342h                         ; 77 14
+    cmp AL, strict byte 001h                  ; 3c 01
+    jnbe short 03342h                         ; 77 10
+    cmp dl, 04fh                              ; 80 fa 4f
+    jnbe short 03342h                         ; 77 0b
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    test al, al                               ; 84 c0
+    je short 03342h                           ; 74 04
+    cmp AL, strict byte 012h                  ; 3c 12
+    jbe short 03357h                          ; 76 15
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
-    or ah, 020h                               ; 80 cc 20
+    or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
-    mov ax, strict word 00020h                ; b8 20 00
-    jmp near 030a3h                           ; e9 0a ff
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    sal ax, 009h                              ; c1 e0 09
-    cwd                                       ; 99
-    db  02bh, 0c2h
-    ; sub ax, dx                                ; 2b c2
-    sar ax, 1                                 ; d1 f8
-    mov cx, ax                                ; 89 c1
-    mov si, word [bp+010h]                    ; 8b 76 10
-    mov dx, word [bp+006h]                    ; 8b 56 06
-    mov di, si                                ; 89 f7
-    mov es, dx                                ; 8e c2
-    push DS                                   ; 1e
-    mov ds, dx                                ; 8e da
-    rep movsw                                 ; f3 a5
-    pop DS                                    ; 1f
-    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
+    mov ax, strict word 00001h                ; b8 01 00
+    call 02ba7h                               ; e8 54 f8
+    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 02baah                               ; e8 e8 f9
-    mov byte [bp+017h], 000h                  ; c6 46 17 00
-    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp near 02faeh                           ; e9 e1 fd
-    cmp ch, 003h                              ; 80 fd 03
-    jne near 032e2h                           ; 0f 85 0e 01
+    call 02ebah                               ; e8 5c fb
+    test ax, ax                               ; 85 c0
+    je near 02f8fh                            ; 0f 84 2b fc
+    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
+    mov ax, dx                                ; 89 d0
+    call 02cffh                               ; e8 92 f9
+    test ax, ax                               ; 85 c0
+    jne short 0337ch                          ; 75 0b
+    mov ax, dx                                ; 89 d0
+    call 02dcah                               ; e8 54 fa
+    test ax, ax                               ; 85 c0
+    je near 03068h                            ; 0f 84 ec fc
     mov cx, word [bp+006h]                    ; 8b 4e 06
     shr cx, 00ch                              ; c1 e9 0c
@@ -4055,14 +4247,14 @@
     add bx, dx                                ; 01 d3
     cmp bx, dx                                ; 39 d3
-    jnc short 031edh                          ; 73 02
+    jnc short 03395h                          ; 73 02
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
     movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
-    sal cx, 009h                              ; c1 e1 09
+    sal cx, 002h                              ; c1 e1 02
     dec cx                                    ; 49
     mov dx, bx                                ; 89 da
     add dx, cx                                ; 01 ca
     cmp dx, bx                                ; 39 da
-    jc near 03095h                            ; 0f 82 96 fe
+    jc near 030a8h                            ; 0f 82 01 fd
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -4096,35 +4288,33 @@
     out DX, AL                                ; ee
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 02c69h                               ; e8 27 fa
-    mov AL, strict byte 0c5h                  ; b0 c5
+    call 02c7eh                               ; e8 94 f8
+    mov AL, strict byte 00fh                  ; b0 0f
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    sal dx, 002h                              ; c1 e2 02
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    or ax, dx                                 ; 09 d0
-    mov dx, 003f5h                            ; ba f5 03
-    out DX, AL                                ; ee
-    mov al, byte [bp-008h]                    ; 8a 46 f8
+    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    sal ax, 002h                              ; c1 e0 02
+    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
+    or bx, ax                                 ; 09 c3
+    mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
     mov al, byte [bp-006h]                    ; 8a 46 fa
     out DX, AL                                ; ee
-    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    mov AL, strict byte 04dh                  ; b0 4d
+    out DX, AL                                ; ee
+    mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
-    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
-    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    add ax, dx                                ; 01 d0
-    dec ax                                    ; 48
-    mov dx, 003f5h                            ; ba f5 03
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
-    mov AL, strict byte 0ffh                  ; b0 ff
-    out DX, AL                                ; ee
-    call 02bf8h                               ; e8 78 f9
+    mov AL, strict byte 0f6h                  ; b0 f6
+    out DX, AL                                ; ee
+    call 02c0dh                               ; e8 f3 f7
     test al, al                               ; 84 c0
-    je near 03133h                            ; 0f 84 ad fe
+    jne short 03424h                          ; 75 06
+    call 02c53h                               ; e8 32 f8
+    jmp near 02f8fh                           ; e9 6b fb
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
@@ -4133,14 +4323,14 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 032a0h                           ; 74 0e
+    je short 0343eh                           ; 74 0e
     push 00255h                               ; 68 55 02
     push 00288h                               ; 68 88 02
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 70 e6
+    call 01922h                               ; e8 e7 e4
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 032a9h                          ; eb 05
+    jmp short 03447h                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 032c1h                          ; 7d 18
+    jnl short 0345fh                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
@@ -4151,181 +4341,27 @@
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 50 e3
+    call 0160eh                               ; e8 b2 e1
     inc si                                    ; 46
-    jmp short 032a4h                          ; eb e3
+    jmp short 03442h                          ; eb e3
     test byte [bp-016h], 0c0h                 ; f6 46 ea c0
-    je near 031b7h                            ; 0f 84 ee fe
+    je short 0347bh                           ; 74 16
     test byte [bp-015h], 002h                 ; f6 46 eb 02
-    je short 032dbh                           ; 74 0c
-    mov word [bp+016h], 00300h                ; c7 46 16 00 03
-    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 02faeh                           ; e9 d3 fc
-    mov word [bp+016h], 00100h                ; c7 46 16 00 01
-    jmp short 032d4h                          ; eb f2
-    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 02baah                               ; e8 bd f8
-    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 02faeh                           ; e9 b6 fc
-    mov al, byte [bp+016h]                    ; 8a 46 16
-    mov byte [bp-00ch], al                    ; 88 46 f4
-    mov dx, word [bp+014h]                    ; 8b 56 14
-    shr dx, 008h                              ; c1 ea 08
-    mov ax, word [bp+012h]                    ; 8b 46 12
-    shr ax, 008h                              ; c1 e8 08
-    mov byte [bp-006h], al                    ; 88 46 fa
-    mov bl, byte [bp+00eh]                    ; 8a 5e 0e
-    mov byte [bp-00eh], bl                    ; 88 5e f2
-    cmp bl, 001h                              ; 80 fb 01
-    jnbe short 0332ch                         ; 77 14
-    cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 0332ch                         ; 77 10
-    cmp dl, 04fh                              ; 80 fa 4f
-    jnbe short 0332ch                         ; 77 0b
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
-    test al, al                               ; 84 c0
-    je short 0332ch                           ; 74 04
-    cmp AL, strict byte 012h                  ; 3c 12
-    jbe short 03341h                          ; 76 15
-    mov ax, word [bp+016h]                    ; 8b 46 16
-    xor ah, ah                                ; 30 e4
-    or ah, 001h                               ; 80 cc 01
-    mov word [bp+016h], ax                    ; 89 46 16
-    mov ax, strict word 00001h                ; b8 01 00
-    call 02b92h                               ; e8 55 f8
-    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 02ea5h                               ; e8 5d fb
-    test ax, ax                               ; 85 c0
-    je near 02f7ch                            ; 0f 84 2e fc
-    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
-    mov ax, dx                                ; 89 d0
-    call 02ceah                               ; e8 93 f9
-    test ax, ax                               ; 85 c0
-    jne short 03366h                          ; 75 0b
-    mov ax, dx                                ; 89 d0
-    call 02db5h                               ; e8 55 fa
-    test ax, ax                               ; 85 c0
-    je near 03055h                            ; 0f 84 ef fc
-    mov dx, word [bp+006h]                    ; 8b 56 06
-    shr dx, 00ch                              ; c1 ea 0c
-    mov ah, dl                                ; 88 d4
-    mov cx, word [bp+006h]                    ; 8b 4e 06
-    sal cx, 004h                              ; c1 e1 04
-    mov bx, word [bp+010h]                    ; 8b 5e 10
-    add bx, cx                                ; 01 cb
-    cmp bx, cx                                ; 39 cb
-    jnc short 0337fh                          ; 73 02
-    db  0feh, 0c4h
-    ; inc ah                                    ; fe c4
-    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
-    sal cx, 002h                              ; c1 e1 02
-    dec cx                                    ; 49
-    mov dx, bx                                ; 89 da
-    add dx, cx                                ; 01 ca
-    cmp dx, bx                                ; 39 da
-    jc near 03095h                            ; 0f 82 04 fd
-    mov AL, strict byte 006h                  ; b0 06
-    mov dx, strict word 0000ah                ; ba 0a 00
-    out DX, AL                                ; ee
-    xor al, al                                ; 30 c0
-    mov dx, strict word 0000ch                ; ba 0c 00
-    out DX, AL                                ; ee
-    mov al, bl                                ; 88 d8
-    mov dx, strict word 00004h                ; ba 04 00
-    out DX, AL                                ; ee
-    shr bx, 008h                              ; c1 eb 08
-    mov al, bl                                ; 88 d8
-    out DX, AL                                ; ee
-    xor al, bl                                ; 30 d8
-    mov dx, strict word 0000ch                ; ba 0c 00
-    out DX, AL                                ; ee
-    mov al, cl                                ; 88 c8
-    mov dx, strict word 00005h                ; ba 05 00
-    out DX, AL                                ; ee
-    shr cx, 008h                              ; c1 e9 08
-    mov al, cl                                ; 88 c8
-    out DX, AL                                ; ee
-    mov AL, strict byte 04ah                  ; b0 4a
-    mov dx, strict word 0000bh                ; ba 0b 00
-    out DX, AL                                ; ee
-    mov al, ah                                ; 88 e0
-    mov dx, 00081h                            ; ba 81 00
-    out DX, AL                                ; ee
-    mov AL, strict byte 002h                  ; b0 02
-    mov dx, strict word 0000ah                ; ba 0a 00
-    out DX, AL                                ; ee
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    call 02c69h                               ; e8 95 f8
-    mov AL, strict byte 04dh                  ; b0 4d
-    mov dx, 003f5h                            ; ba f5 03
-    out DX, AL                                ; ee
-    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
-    sal dx, 002h                              ; c1 e2 02
-    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
-    or ax, dx                                 ; 09 d0
-    mov dx, 003f5h                            ; ba f5 03
-    out DX, AL                                ; ee
-    mov AL, strict byte 002h                  ; b0 02
-    out DX, AL                                ; ee
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
-    out DX, AL                                ; ee
-    xor al, al                                ; 30 c0
-    out DX, AL                                ; ee
-    mov AL, strict byte 0f6h                  ; b0 f6
-    out DX, AL                                ; ee
-    call 02bf8h                               ; e8 fd f7
-    test al, al                               ; 84 c0
-    jne short 03405h                          ; 75 06
-    call 02c3eh                               ; e8 3c f8
-    jmp near 02f7ch                           ; e9 77 fb
-    mov dx, 003f4h                            ; ba f4 03
-    in AL, DX                                 ; ec
-    db  02ah, 0e4h
-    ; sub ah, ah                                ; 2a e4
-    and AL, strict byte 0c0h                  ; 24 c0
-    cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 0341fh                           ; 74 0e
-    push 00255h                               ; 68 55 02
-    push 00288h                               ; 68 88 02
-    push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 f1 e4
-    add sp, strict byte 00006h                ; 83 c4 06
-    xor si, si                                ; 31 f6
-    jmp short 03428h                          ; eb 05
-    cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03440h                          ; 7d 18
-    mov dx, 003f5h                            ; ba f5 03
-    in AL, DX                                 ; ec
-    db  02ah, 0e4h
-    ; sub ah, ah                                ; 2a e4
-    mov byte [bp+si-016h], al                 ; 88 42 ea
-    movzx bx, al                              ; 0f b6 d8
-    lea dx, [si+042h]                         ; 8d 54 42
-    mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 d1 e1
-    inc si                                    ; 46
-    jmp short 03423h                          ; eb e3
-    test byte [bp-016h], 0c0h                 ; f6 46 ea c0
-    je short 0345ch                           ; 74 16
-    test byte [bp-015h], 002h                 ; f6 46 eb 02
-    jne near 032cfh                           ; 0f 85 81 fe
+    jne near 032e2h                           ; 0f 85 75 fe
     push 00255h                               ; 68 55 02
     push 0029ch                               ; 68 9c 02
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 b4 e4
+    call 01922h                               ; e8 aa e4
     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 02b92h                               ; e8 2c f7
+    call 02ba7h                               ; e8 22 f7
     movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     xor dx, dx                                ; 31 d2
-    call 02baah                               ; e8 3b f7
-    jmp near 031c6h                           ; e9 54 fd
+    call 02bbfh                               ; e8 31 f7
+    jmp near 031d9h                           ; e9 48 fd
     mov byte [bp-00eh], ah                    ; 88 66 f2
     cmp ah, 001h                              ; 80 fc 01
-    jbe short 0349ah                          ; 76 20
+    jbe short 034b9h                          ; 76 20
     xor ax, ax                                ; 31 c0
     mov word [bp+016h], ax                    ; 89 46 16
@@ -4338,20 +4374,20 @@
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+01ch], dx                    ; 89 56 1c
-    jmp near 02faeh                           ; e9 14 fb
+    jmp near 02fc1h                           ; e9 08 fb
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 bc e1
+    call 0165ch                               ; e8 9d e1
     mov dl, al                                ; 88 c2
     xor cl, cl                                ; 30 c9
     test AL, strict byte 0f0h                 ; a8 f0
-    je short 034aah                           ; 74 02
+    je short 034c9h                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     test dl, 00fh                             ; f6 c2 0f
-    je short 034b1h                           ; 74 02
+    je short 034d0h                           ; 74 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 034bch                          ; 75 05
+    jne short 034dbh                          ; 75 05
     shr dl, 004h                              ; c0 ea 04
-    jmp short 034bfh                          ; eb 03
+    jmp short 034deh                          ; eb 03
     and dl, 00fh                              ; 80 e2 0f
     mov byte [bp+011h], 000h                  ; c6 46 11 00
@@ -4369,59 +4405,59 @@
     mov word [bp+012h], ax                    ; 89 46 12
     cmp dl, 003h                              ; 80 fa 03
-    jc short 034ffh                           ; 72 15
-    jbe short 03526h                          ; 76 3a
+    jc short 0351eh                           ; 72 15
+    jbe short 03545h                          ; 76 3a
     cmp dl, 005h                              ; 80 fa 05
-    jc short 0352dh                           ; 72 3c
-    jbe short 03534h                          ; 76 41
+    jc short 0354ch                           ; 72 3c
+    jbe short 03553h                          ; 76 41
     cmp dl, 00fh                              ; 80 fa 0f
-    je short 03542h                           ; 74 4a
+    je short 03561h                           ; 74 4a
     cmp dl, 00eh                              ; 80 fa 0e
-    je short 0353bh                           ; 74 3e
-    jmp short 03549h                          ; eb 4a
+    je short 0355ah                           ; 74 3e
+    jmp short 03568h                          ; eb 4a
     cmp dl, 002h                              ; 80 fa 02
-    je short 0351fh                           ; 74 1b
+    je short 0353eh                           ; 74 1b
     cmp dl, 001h                              ; 80 fa 01
-    je short 03518h                           ; 74 0f
+    je short 03537h                           ; 74 0f
     test dl, dl                               ; 84 d2
-    jne short 03549h                          ; 75 3c
+    jne short 03568h                          ; 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 03557h                          ; eb 3f
+    jmp short 03576h                          ; eb 3f
     mov word [bp+014h], 02709h                ; c7 46 14 09 27
-    jmp short 03557h                          ; eb 38
+    jmp short 03576h                          ; eb 38
     mov word [bp+014h], 04f0fh                ; c7 46 14 0f 4f
-    jmp short 03557h                          ; eb 31
+    jmp short 03576h                          ; eb 31
     mov word [bp+014h], 04f09h                ; c7 46 14 09 4f
-    jmp short 03557h                          ; eb 2a
+    jmp short 03576h                          ; eb 2a
     mov word [bp+014h], 04f12h                ; c7 46 14 12 4f
-    jmp short 03557h                          ; eb 23
+    jmp short 03576h                          ; eb 23
     mov word [bp+014h], 04f24h                ; c7 46 14 24 4f
-    jmp short 03557h                          ; eb 1c
+    jmp short 03576h                          ; eb 1c
     mov word [bp+014h], 0fe3fh                ; c7 46 14 3f fe
-    jmp short 03557h                          ; eb 15
+    jmp short 03576h                          ; eb 15
     mov word [bp+014h], 0feffh                ; c7 46 14 ff fe
-    jmp short 03557h                          ; eb 0e
+    jmp short 03576h                          ; eb 0e
     push 00255h                               ; 68 55 02
     push 002adh                               ; 68 ad 02
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 b9 e3
+    call 01922h                               ; e8 af e3
     add sp, strict byte 00006h                ; 83 c4 06
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     movzx ax, dl                              ; 0f b6 c2
-    call 035f3h                               ; e8 91 00
+    call 03612h                               ; e8 91 00
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 031c6h                           ; e9 5e fc
+    jmp near 031d9h                           ; e9 52 fc
     mov byte [bp-00eh], ah                    ; 88 66 f2
     cmp ah, 001h                              ; 80 fc 01
-    jbe short 03576h                          ; 76 06
+    jbe short 03595h                          ; 76 06
     mov word [bp+016h], si                    ; 89 76 16
-    jmp near 03494h                           ; e9 1e ff
+    jmp near 034b3h                           ; e9 1e ff
     mov ax, strict word 00010h                ; b8 10 00
-    call 0165ch                               ; e8 e0 e0
+    call 0165ch                               ; e8 c1 e0
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 03589h                          ; 75 07
+    jne short 035a8h                          ; 75 07
     mov dl, al                                ; 88 c2
     shr dl, 004h                              ; c0 ea 04
-    jmp short 0358eh                          ; eb 05
+    jmp short 035adh                          ; eb 05
     mov dl, al                                ; 88 c2
     and dl, 00fh                              ; 80 e2 0f
@@ -4430,18 +4466,18 @@
     xor bh, bh                                ; 30 ff
     test dl, dl                               ; 84 d2
-    je short 035a8h                           ; 74 0d
+    je short 035c7h                           ; 74 0d
     cmp dl, 001h                              ; 80 fa 01
-    jbe short 035a5h                          ; 76 05
+    jbe short 035c4h                          ; 76 05
     or bh, 002h                               ; 80 cf 02
-    jmp short 035a8h                          ; eb 03
+    jmp short 035c7h                          ; eb 03
     or bh, 001h                               ; 80 cf 01
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 02faeh                           ; e9 00 fa
+    jmp near 02fc1h                           ; e9 f4 f9
     cmp ah, 001h                              ; 80 fc 01
-    jbe short 035bfh                          ; 76 0c
+    jbe short 035deh                          ; 76 0c
     mov word [bp+016h], si                    ; 89 76 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02b92h                               ; e8 d6 f5
-    jmp near 03494h                           ; e9 d5 fe
+    call 02ba7h                               ; e8 cc f5
+    jmp near 034b3h                           ; e9 d5 fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4449,9 +4485,9 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 02f5ah                           ; e9 8a f9
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 02f6dh                           ; e9 7e f9
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 f1 e2
+    call 018e1h                               ; e8 e7 e2
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -4460,8 +4496,8 @@
     push 002c2h                               ; 68 c2 02
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 20 e3
+    call 01922h                               ; e8 16 e3
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 02f4ch                           ; e9 59 f9
-get_floppy_dpt_:                             ; 0xf35f3 LB 0x2f
+    jmp near 02f5fh                           ; e9 4d f9
+get_floppy_dpt_:                             ; 0xf3612 LB 0x2f
     push bx                                   ; 53
     push dx                                   ; 52
@@ -4470,16 +4506,16 @@
     mov dl, al                                ; 88 c2
     xor ax, ax                                ; 31 c0
-    jmp short 03604h                          ; eb 06
+    jmp short 03623h                          ; eb 06
     inc ax                                    ; 40
     cmp ax, strict word 00007h                ; 3d 07 00
-    jnc short 0361bh                          ; 73 17
+    jnc short 0363ah                          ; 73 17
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     cmp dl, byte [word bx+0005bh]             ; 3a 97 5b 00
-    jne short 035feh                          ; 75 f0
+    jne short 0361dh                          ; 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 0361eh                          ; eb 03
+    jmp short 0363dh                          ; eb 03
     mov ax, strict word 00041h                ; b8 41 00
     pop bp                                    ; 5d
@@ -4487,5 +4523,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-dummy_soft_reset_:                           ; 0xf3622 LB 0x7
+dummy_soft_reset_:                           ; 0xf3641 LB 0x7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4493,39 +4529,39 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_init:                                 ; 0xf3629 LB 0x18
+_cdemu_init:                                 ; 0xf3648 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 0161ch                               ; e8 e7 df
+    call 0161ch                               ; e8 c8 df
     xor bx, bx                                ; 31 db
     mov dx, 00322h                            ; ba 22 03
-    call 0160eh                               ; e8 d1 df
+    call 0160eh                               ; e8 b2 df
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_isactive:                             ; 0xf3641 LB 0x16
+_cdemu_isactive:                             ; 0xf3660 LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 cf df
+    call 0161ch                               ; e8 b0 df
     mov dx, 00322h                            ; ba 22 03
-    call 01600h                               ; e8 ad df
+    call 01600h                               ; e8 8e df
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_emulated_drive:                       ; 0xf3657 LB 0x16
+_cdemu_emulated_drive:                       ; 0xf3676 LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 b9 df
+    call 0161ch                               ; e8 9a df
     mov dx, 00324h                            ; ba 24 03
-    call 01600h                               ; e8 97 df
+    call 01600h                               ; e8 78 df
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_eltorito:                             ; 0xf366d LB 0x189
+_int13_eltorito:                             ; 0xf368c LB 0x189
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4534,5 +4570,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 a1 df
+    call 0161ch                               ; e8 82 df
     mov si, 00322h                            ; be 22 03
     mov di, ax                                ; 89 c7
@@ -4540,26 +4576,26 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 0004bh                ; 3d 4b 00
-    jc short 03695h                           ; 72 0a
-    jbe short 036bbh                          ; 76 2e
+    jc short 036b4h                           ; 72 0a
+    jbe short 036dah                          ; 76 2e
     cmp ax, strict word 0004dh                ; 3d 4d 00
-    jbe short 0369ch                          ; 76 0a
-    jmp near 037bah                           ; e9 25 01
+    jbe short 036bbh                          ; 76 0a
+    jmp near 037d9h                           ; e9 25 01
     cmp ax, strict word 0004ah                ; 3d 4a 00
-    jne near 037bah                           ; 0f 85 1e 01
-    mov bx, 00da6h                            ; bb a6 0d
+    jne near 037d9h                           ; 0f 85 1e 01
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 25 e2
+    call 018e1h                               ; e8 1b e2
     push word [bp+016h]                       ; ff 76 16
     push 002dch                               ; 68 dc 02
     push 002ebh                               ; 68 eb 02
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 58 e2
+    call 01922h                               ; e8 4e e2
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 037d5h                           ; e9 1a 01
+    jmp near 037f4h                           ; 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 0160eh                               ; e8 47 df
+    call 0160eh                               ; e8 28 df
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+001h]               ; 26 0f b6 5c 01
@@ -4567,5 +4603,5 @@
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0160eh                               ; e8 36 df
+    call 0160eh                               ; e8 17 df
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+002h]               ; 26 0f b6 5c 02
@@ -4574,5 +4610,5 @@
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0160eh                               ; e8 24 df
+    call 0160eh                               ; e8 05 df
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+003h]               ; 26 0f b6 5c 03
@@ -4580,5 +4616,5 @@
     add dx, strict byte 00003h                ; 83 c2 03
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0160eh                               ; e8 11 df
+    call 0160eh                               ; e8 f2 de
     mov es, di                                ; 8e c7
     mov bx, word [es:si+008h]                 ; 26 8b 5c 08
@@ -4587,5 +4623,5 @@
     add dx, strict byte 00004h                ; 83 c2 04
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0164ah                               ; e8 37 df
+    call 0164ah                               ; e8 18 df
     mov es, di                                ; 8e c7
     mov bx, word [es:si+004h]                 ; 26 8b 5c 04
@@ -4593,5 +4629,5 @@
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0162ah                               ; e8 05 df
+    call 0162ah                               ; e8 e6 de
     mov es, di                                ; 8e c7
     mov bx, word [es:si+006h]                 ; 26 8b 5c 06
@@ -4599,5 +4635,5 @@
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0162ah                               ; e8 f3 de
+    call 0162ah                               ; e8 d4 de
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
@@ -4605,5 +4641,5 @@
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0162ah                               ; e8 e1 de
+    call 0162ah                               ; e8 c2 de
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
@@ -4611,5 +4647,5 @@
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0162ah                               ; e8 cf de
+    call 0162ah                               ; e8 b0 de
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+012h]               ; 26 0f b6 5c 12
@@ -4617,5 +4653,5 @@
     add dx, strict byte 00010h                ; 83 c2 10
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0160eh                               ; e8 a0 de
+    call 0160eh                               ; e8 81 de
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+014h]               ; 26 0f b6 5c 14
@@ -4623,5 +4659,5 @@
     add dx, strict byte 00011h                ; 83 c2 11
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0160eh                               ; e8 8d de
+    call 0160eh                               ; e8 6e de
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+010h]               ; 26 0f b6 5c 10
@@ -4629,7 +4665,7 @@
     add dx, strict byte 00012h                ; 83 c2 12
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0160eh                               ; e8 7a de
+    call 0160eh                               ; e8 5b de
     test byte [bp+016h], 0ffh                 ; f6 46 16 ff
-    jne short 037a0h                          ; 75 06
+    jne short 037bfh                          ; 75 06
     mov es, di                                ; 8e c7
     mov byte [es:si], 000h                    ; 26 c6 04 00
@@ -4638,5 +4674,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 5f de
+    call 0160eh                               ; e8 40 de
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -4645,8 +4681,8 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    mov bx, 00da6h                            ; bb a6 0d
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 07 e1
+    call 018e1h                               ; e8 fd e0
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -4654,5 +4690,5 @@
     push 002dch                               ; 68 dc 02
     push 00313h                               ; 68 13 03
-    jmp near 036b0h                           ; e9 db fe
+    jmp near 036cfh                           ; e9 db fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -4664,8 +4700,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 1e de
+    call 0160eh                               ; e8 ff dd
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 037b3h                          ; eb bd
-device_is_cdrom_:                            ; 0xf37f6 LB 0x35
+    jmp short 037d2h                          ; eb bd
+device_is_cdrom_:                            ; 0xf3815 LB 0x35
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4675,9 +4711,9 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 16 de
+    call 0161ch                               ; e8 f7 dd
     cmp bl, 010h                              ; 80 fb 10
-    jc short 0380fh                           ; 72 04
+    jc short 0382eh                           ; 72 04
     xor ax, ax                                ; 31 c0
-    jmp short 03824h                          ; eb 15
+    jmp short 03843h                          ; eb 15
     xor bh, bh                                ; 30 ff
     imul bx, bx, strict byte 00018h           ; 6b db 18
@@ -4685,5 +4721,5 @@
     add bx, 00122h                            ; 81 c3 22 01
     cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
-    jne short 0380bh                          ; 75 ea
+    jne short 0382ah                          ; 75 ea
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -4692,5 +4728,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf382b LB 0x416
+cdrom_boot_:                                 ; 0xf384a LB 0x416
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -4703,5 +4739,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 dc dd
+    call 0161ch                               ; e8 bd dd
     mov word [bp-018h], ax                    ; 89 46 e8
     mov si, 00322h                            ; be 22 03
@@ -4710,21 +4746,21 @@
     mov word [bp-012h], ax                    ; 89 46 ee
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    jmp short 03860h                          ; eb 09
+    jmp short 0387fh                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jnc short 0386bh                          ; 73 0b
+    jnc short 0388ah                          ; 73 0b
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    call 037f6h                               ; e8 8f ff
+    call 03815h                               ; e8 8f ff
     test ax, ax                               ; 85 c0
-    je short 03857h                           ; 74 ec
+    je short 03876h                           ; 74 ec
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jc short 03877h                           ; 72 06
+    jc short 03896h                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 03bdeh                           ; e9 67 03
+    jmp near 03bfdh                           ; 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 0924ah                               ; e8 c6 59
+    call 0946ah                               ; e8 c7 5b
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
     mov ax, strict word 00011h                ; b8 11 00
@@ -4742,8 +4778,8 @@
     ; mov dword [es:bx+00ah], strict dword 008000001h ; 66 26 c7 47 0a 01 00 00 08
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
-    jmp short 038bch                          ; eb 09
+    jmp short 038dbh                          ; eb 09
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 004h                  ; 80 7e f2 04
-    jnbe short 038f3h                         ; 77 37
+    jnbe short 03912h                         ; 77 37
     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
     imul di, di, strict byte 00018h           ; 6b ff 18
@@ -4765,33 +4801,33 @@
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    jne short 038b3h                          ; 75 c0
+    jne short 038d2h                          ; 75 c0
     test ax, ax                               ; 85 c0
-    je short 038fdh                           ; 74 06
+    je short 0391ch                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 03bdeh                           ; e9 e1 02
+    jmp near 03bfdh                           ; e9 e1 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
-    je short 0390ah                           ; 74 06
+    je short 03929h                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 03bdeh                           ; e9 d4 02
+    jmp near 03bfdh                           ; e9 d4 02
     xor di, di                                ; 31 ff
-    jmp short 03914h                          ; eb 06
+    jmp short 03933h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00005h                ; 83 ff 05
-    jnc short 03924h                          ; 73 10
+    jnc short 03943h                          ; 73 10
     mov al, byte [bp+di-00825h]               ; 8a 83 db f7
-    cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
-    je short 0390eh                           ; 74 f0
+    cmp al, byte [di+00daah]                  ; 3a 85 aa 0d
+    je short 0392dh                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 03bdeh                           ; e9 ba 02
+    jmp near 03bfdh                           ; e9 ba 02
     xor di, di                                ; 31 ff
-    jmp short 0392eh                          ; eb 06
+    jmp short 0394dh                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00017h                ; 83 ff 17
-    jnc short 0393eh                          ; 73 10
+    jnc short 0395dh                          ; 73 10
     mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
-    cmp al, byte [di+00db4h]                  ; 3a 85 b4 0d
-    je short 03928h                           ; 74 f0
+    cmp al, byte [di+00db0h]                  ; 3a 85 b0 0d
+    je short 03947h                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 03bdeh                           ; e9 a0 02
+    jmp near 03bfdh                           ; e9 a0 02
     mov ax, word [bp-007dfh]                  ; 8b 86 21 f8
     mov dx, word [bp-007ddh]                  ; 8b 96 23 f8
@@ -4824,36 +4860,36 @@
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    je short 0399bh                           ; 74 06
+    je short 039bah                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 03bdeh                           ; e9 43 02
+    jmp near 03bfdh                           ; e9 43 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
-    je short 039a8h                           ; 74 06
+    je short 039c7h                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 03bdeh                           ; e9 36 02
+    jmp near 03bfdh                           ; e9 36 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
-    je short 039b5h                           ; 74 06
+    je short 039d4h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 03bdeh                           ; e9 29 02
+    jmp near 03bfdh                           ; e9 29 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
-    je short 039c2h                           ; 74 06
+    je short 039e1h                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 03bdeh                           ; e9 1c 02
+    jmp near 03bfdh                           ; e9 1c 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
-    jne short 039bch                          ; 75 f3
+    jne short 039dbh                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
-    je short 039d6h                           ; 74 06
+    je short 039f5h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 03bdeh                           ; e9 08 02
+    jmp near 03bfdh                           ; 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 039efh                          ; 75 07
+    jne short 03a0eh                          ; 75 07
     mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
-    jmp short 03a02h                          ; eb 13
+    jmp short 03a21h                          ; eb 13
     cmp byte [bp-00805h], 004h                ; 80 be fb f7 04
-    jnc short 039fdh                          ; 73 07
+    jnc short 03a1ch                          ; 73 07
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
-    jmp short 03a02h                          ; eb 05
+    jmp short 03a21h                          ; eb 05
     mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
@@ -4873,5 +4909,5 @@
     mov word [bp-016h], ax                    ; 89 46 ea
     test ax, ax                               ; 85 c0
-    jne short 03a30h                          ; 75 05
+    jne short 03a4fh                          ; 75 05
     mov word [bp-016h], 007c0h                ; c7 46 ea c0 07
     mov ax, word [bp-016h]                    ; 8b 46 ea
@@ -4882,9 +4918,9 @@
     mov word [es:si+00eh], di                 ; 26 89 7c 0e
     test di, di                               ; 85 ff
-    je short 03a52h                           ; 74 06
+    je short 03a71h                           ; 74 06
     cmp di, 00400h                            ; 81 ff 00 04
-    jbe short 03a58h                          ; 76 06
+    jbe short 03a77h                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 03bdeh                           ; e9 86 01
+    jmp near 03bfdh                           ; e9 86 01
     mov ax, word [bp-007feh]                  ; 8b 86 02 f8
     mov dx, word [bp-007fch]                  ; 8b 96 04 f8
@@ -4926,5 +4962,5 @@
     sal ax, 1                                 ; d1 e0
     rcl di, 1                                 ; d1 d7
-    loop 03ac6h                               ; e2 fa
+    loop 03ae5h                               ; e2 fa
     push di                                   ; 57
     push ax                                   ; 50
@@ -4939,33 +4975,33 @@
     mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00
     test ax, ax                               ; 85 c0
-    je short 03af6h                           ; 74 06
+    je short 03b15h                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 03bdeh                           ; e9 e8 00
+    jmp near 03bfdh                           ; 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 03b0eh                           ; 72 0d
-    jbe short 03b26h                          ; 76 23
+    jc short 03b2dh                           ; 72 0d
+    jbe short 03b45h                          ; 76 23
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 03b3ch                           ; 74 35
+    je short 03b5bh                           ; 74 35
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 03b31h                           ; 74 26
-    jmp near 03b87h                           ; e9 79 00
+    je short 03b50h                           ; 74 26
+    jmp near 03ba6h                           ; e9 79 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 03b87h                          ; 75 75
+    jne short 03ba6h                          ; 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 03b87h                          ; eb 61
+    jmp short 03ba6h                          ; 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 03b1eh                          ; eb ed
+    jmp short 03b3dh                          ; 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 03b1eh                          ; eb e2
+    jmp short 03b3dh                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01600h                               ; e8 bb da
+    call 01600h                               ; e8 9c da
     and AL, strict byte 03fh                  ; 24 3f
     xor ah, ah                                ; 30 e4
@@ -4974,10 +5010,10 @@
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01600h                               ; e8 a7 da
+    call 01600h                               ; e8 88 da
     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 01600h                               ; e8 98 da
+    call 01600h                               ; e8 79 da
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
@@ -4987,5 +5023,5 @@
     mov dx, 001c3h                            ; ba c3 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01600h                               ; e8 83 da
+    call 01600h                               ; e8 64 da
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
@@ -4994,18 +5030,18 @@
     mov es, [bp-010h]                         ; 8e 46 f0
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 03bc5h                           ; 74 34
+    je short 03be4h                           ; 74 34
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 03baeh                          ; 75 16
+    jne short 03bcdh                          ; 75 16
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 5f da
+    call 01600h                               ; e8 40 da
     or AL, strict byte 041h                   ; 0c 41
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    jmp short 03bc2h                          ; eb 14
+    jmp short 03be1h                          ; eb 14
     mov dx, 002c0h                            ; ba c0 02
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 01600h                               ; e8 49 da
+    call 01600h                               ; e8 2a da
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -5013,8 +5049,8 @@
     mov dx, 002c0h                            ; ba c0 02
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 0160eh                               ; e8 49 da
+    call 0160eh                               ; e8 2a da
     mov es, [bp-010h]                         ; 8e 46 f0
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 03bd3h                           ; 74 04
+    je short 03bf2h                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
     mov es, [bp-010h]                         ; 8e 46 f0
@@ -5030,10 +5066,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, 0d9h, 03fh, 0e7h
-    db  03ch, 031h, 03dh, 059h, 03dh, 026h, 03dh, 059h, 03dh, 026h, 03dh, 02fh, 03fh, 00ch, 03dh, 0d9h
-    db  03fh, 0d9h, 03fh, 00ch, 03dh, 00ch, 03dh, 00ch, 03dh, 00ch, 03dh, 00ch, 03dh, 0d0h, 03fh, 00ch
-    db  03dh, 0d9h, 03fh, 0d9h, 03fh, 0d9h, 03fh, 0d9h, 03fh, 0d9h, 03fh, 0d9h, 03fh, 0d9h, 03fh, 0d9h
-    db  03fh, 0d9h, 03fh, 0d9h, 03fh, 0d9h, 03fh, 0d9h, 03fh
-_int13_cdemu:                                ; 0xf3c41 LB 0x434
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0f8h, 03fh, 006h
+    db  03dh, 050h, 03dh, 078h, 03dh, 045h, 03dh, 078h, 03dh, 045h, 03dh, 04eh, 03fh, 02bh, 03dh, 0f8h
+    db  03fh, 0f8h, 03fh, 02bh, 03dh, 02bh, 03dh, 02bh, 03dh, 02bh, 03dh, 02bh, 03dh, 0efh, 03fh, 02bh
+    db  03dh, 0f8h, 03fh, 0f8h, 03fh, 0f8h, 03fh, 0f8h, 03fh, 0f8h, 03fh, 0f8h, 03fh, 0f8h, 03fh, 0f8h
+    db  03fh, 0f8h, 03fh, 0f8h, 03fh, 0f8h, 03fh, 0f8h, 03fh
+_int13_cdemu:                                ; 0xf3c60 LB 0x434
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -5043,5 +5079,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 ca d9
+    call 0161ch                               ; e8 ab d9
     mov di, 00322h                            ; bf 22 03
     mov cx, ax                                ; 89 c1
@@ -5059,17 +5095,17 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 8d d9
+    call 0160eh                               ; e8 6e d9
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 03c97h                           ; 74 0e
+    je short 03cb6h                           ; 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 03cc0h                           ; 74 29
-    mov bx, 00da6h                            ; bb a6 0d
+    je short 03cdfh                           ; 74 29
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 2a dc
+    call 018e1h                               ; e8 20 dc
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -5081,19 +5117,19 @@
     push 00338h                               ; 68 38 03
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 53 dc
+    call 01922h                               ; e8 49 dc
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 03ff9h                           ; e9 39 03
+    jmp near 04018h                           ; 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 03fd9h                          ; 0f 87 0c 03
+    jnbe near 03ff8h                          ; 0f 87 0c 03
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 03be8h                            ; bf e8 3b
+    mov di, 03c07h                            ; bf 07 3c
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+03c05h]               ; 2e 8b 85 05 3c
+    mov ax, word [cs:di+03c24h]               ; 2e 8b 85 24 3c
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
@@ -5106,5 +5142,5 @@
     add bx, bx                                ; 01 db
     cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00
-    je near 03d0ch                            ; 0f 84 08 00
+    je near 03d2bh                            ; 0f 84 08 00
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     call word [word bx+00076h]                ; ff 97 76 00
@@ -5113,5 +5149,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f3 d8
+    call 0160eh                               ; e8 d4 d8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -5123,8 +5159,8 @@
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 04001h                           ; e9 d0 02
+    jmp near 04020h                           ; e9 d0 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 c6 d8
+    call 01600h                               ; e8 a7 d8
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
@@ -5135,8 +5171,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 bc d8
+    call 0160eh                               ; e8 9d d8
     test cl, cl                               ; 84 c9
-    je short 03d10h                           ; 74 ba
-    jmp near 04015h                           ; e9 bc 02
+    je short 03d2fh                           ; 74 ba
+    jmp near 04034h                           ; e9 bc 02
     mov es, [bp-008h]                         ; 8e 46 f8
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
@@ -5162,17 +5198,17 @@
     mov word [bp-00ah], cx                    ; 89 4e f6
     test cx, cx                               ; 85 c9
-    jne short 03da6h                          ; 75 03
-    jmp near 03d0ch                           ; e9 66 ff
+    jne short 03dc5h                          ; 75 03
+    jmp near 03d2bh                           ; e9 66 ff
     cmp di, word [bp-010h]                    ; 3b 7e f0
-    jc near 03ff9h                            ; 0f 82 4c 02
+    jc near 04018h                            ; 0f 82 4c 02
     cmp ax, dx                                ; 39 d0
-    jnc near 03ff9h                           ; 0f 83 46 02
+    jnc near 04018h                           ; 0f 83 46 02
     cmp si, bx                                ; 39 de
-    jnc near 03ff9h                           ; 0f 83 40 02
+    jnc near 04018h                           ; 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 03dc7h                          ; 75 03
-    jmp near 03d0ch                           ; e9 45 ff
+    jne short 03de6h                          ; 75 03
+    jmp near 03d2bh                           ; e9 45 ff
     mov dx, word [bp+010h]                    ; 8b 56 10
     shr dx, 004h                              ; c1 ea 04
@@ -5185,5 +5221,5 @@
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 34 54
+    call 09439h                               ; e8 35 56
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
@@ -5191,5 +5227,5 @@
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 27 54
+    call 09439h                               ; e8 28 56
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-010h]                    ; 8b 46 f0
@@ -5226,5 +5262,5 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 0924ah                               ; e8 01 54
+    call 0946ah                               ; e8 02 56
     mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
@@ -5274,5 +5310,5 @@
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 03ec9h                               ; e2 fa
+    loop 03ee8h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
@@ -5289,9 +5325,9 @@
     ; mov dword [es:bx+01ah], strict dword 000000000h ; 66 26 c7 47 1a 00 00 00 00
     test al, al                               ; 84 c0
-    je near 03d0ch                            ; 0f 84 13 fe
-    mov bx, 00da6h                            ; bb a6 0d
+    je near 03d2bh                            ; 0f 84 13 fe
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 c8 d9
+    call 018e1h                               ; e8 be d9
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -5302,5 +5338,5 @@
     push 0036eh                               ; 68 6e 03
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 f3 d9
+    call 01922h                               ; e8 e9 d9
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -5309,5 +5345,5 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 04004h                           ; e9 d5 00
+    jmp near 04023h                           ; e9 d5 00
     mov es, [bp-008h]                         ; 8e 46 f8
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
@@ -5348,31 +5384,31 @@
     mov word [bp+010h], ax                    ; 89 46 10
     cmp dl, 003h                              ; 80 fa 03
-    je short 03fb3h                           ; 74 1a
+    je short 03fd2h                           ; 74 1a
     cmp dl, 002h                              ; 80 fa 02
-    je short 03fafh                           ; 74 11
+    je short 03fceh                           ; 74 11
     cmp dl, 001h                              ; 80 fa 01
-    jne short 03fb7h                          ; 75 14
+    jne short 03fd6h                          ; 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 03fb7h                          ; eb 08
+    jmp short 03fd6h                          ; eb 08
     or AL, strict byte 004h                   ; 0c 04
-    jmp short 03faah                          ; eb f7
+    jmp short 03fc9h                          ; eb f7
     or AL, strict byte 005h                   ; 0c 05
-    jmp short 03faah                          ; eb f3
+    jmp short 03fc9h                          ; eb f3
     mov es, [bp-008h]                         ; 8e 46 f8
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jnc near 03d0ch                           ; 0f 83 49 fd
+    jnc near 03d2bh                           ; 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 03d0ch                           ; e9 3c fd
+    jmp near 03d2bh                           ; e9 3c fd
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 03d10h                           ; e9 37 fd
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 03d2fh                           ; e9 37 fd
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 e8 d8
+    call 018e1h                               ; e8 de d8
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -5381,5 +5417,5 @@
     push 0038fh                               ; 68 8f 03
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 17 d9
+    call 01922h                               ; e8 0d d9
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -5392,14 +5428,14 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f9 d5
+    call 0160eh                               ; e8 da d5
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 03d1fh                           ; e9 03 fd
+    jmp near 03d3eh                           ; 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, 0bah, 045h, 036h
-    db  043h, 022h, 041h, 0bah, 045h, 017h, 041h, 0bah, 045h, 017h, 041h, 0bah, 045h, 036h, 043h, 0bah
-    db  045h, 0bah, 045h, 036h, 043h, 036h, 043h, 036h, 043h, 036h, 043h, 036h, 043h, 04ch, 041h, 036h
-    db  043h, 0bah, 045h, 055h, 041h, 068h, 041h, 017h, 041h, 068h, 041h, 096h, 042h, 050h, 043h, 068h
-    db  041h, 077h, 043h, 073h, 045h, 07bh, 045h, 0bah, 045h
-_int13_cdrom:                                ; 0xf4075 LB 0x562
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0d9h, 045h, 055h
+    db  043h, 041h, 041h, 0d9h, 045h, 036h, 041h, 0d9h, 045h, 036h, 041h, 0d9h, 045h, 055h, 043h, 0d9h
+    db  045h, 0d9h, 045h, 055h, 043h, 055h, 043h, 055h, 043h, 055h, 043h, 055h, 043h, 06bh, 041h, 055h
+    db  043h, 0d9h, 045h, 074h, 041h, 087h, 041h, 036h, 041h, 087h, 041h, 0b5h, 042h, 06fh, 043h, 087h
+    db  041h, 096h, 043h, 092h, 045h, 09ah, 045h, 0d9h, 045h
+_int13_cdrom:                                ; 0xf4094 LB 0x562
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -5409,5 +5445,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 96 d5
+    call 0161ch                               ; e8 77 d5
     mov word [bp-01ah], ax                    ; 89 46 e6
     mov si, 00122h                            ; be 22 01
@@ -5416,11 +5452,11 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 74 d5
+    call 0160eh                               ; e8 55 d5
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 040a9h                           ; 72 05
+    jc short 040c8h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 040c7h                           ; 72 1e
+    jc short 040e6h                           ; 72 1e
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
@@ -5432,7 +5468,7 @@
     push 003cbh                               ; 68 cb 03
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 4c d8
+    call 01922h                               ; e8 42 d8
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04597h                           ; e9 d0 04
+    jmp near 045b6h                           ; e9 d0 04
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
@@ -5443,5 +5479,5 @@
     mov byte [bp-008h], dl                    ; 88 56 f8
     cmp dl, 010h                              ; 80 fa 10
-    jc short 040f0h                           ; 72 10
+    jc short 0410fh                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+018h]                    ; 8b 46 18
@@ -5450,17 +5486,17 @@
     push 003bfh                               ; 68 bf 03
     push 003f6h                               ; 68 f6 03
-    jmp short 040bch                          ; eb cc
+    jmp short 040dbh                          ; 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 045bah                          ; 0f 87 bd 04
+    jnbe near 045d9h                          ; 0f 87 bd 04
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 0401ch                            ; bf 1c 40
+    mov di, 0403bh                            ; bf 3b 40
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04039h]               ; 2e 8b 85 39 40
+    mov ax, word [cs:di+04058h]               ; 2e 8b 85 58 40
     mov bx, word [bp+018h]                    ; 8b 5e 18
     xor bh, bh                                ; 30 ff
@@ -5469,8 +5505,8 @@
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 0459fh                           ; e9 7d 04
+    jmp near 045beh                           ; e9 7d 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 d5 d4
+    call 01600h                               ; e8 b6 d4
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
@@ -5481,16 +5517,16 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 cb d4
+    call 0160eh                               ; e8 ac d4
     test cl, cl                               ; 84 c9
-    je near 0433ah                            ; 0f 84 f1 01
-    jmp near 045b3h                           ; e9 67 04
+    je near 04359h                            ; 0f 84 f1 01
+    jmp near 045d2h                           ; e9 67 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 045a2h                           ; e9 4d 04
+    jmp near 045c1h                           ; 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 0433ah                           ; e9 d2 01
+    jmp near 04359h                           ; e9 d2 01
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov es, [bp+006h]                         ; 8e 46 06
@@ -5507,5 +5543,5 @@
     mov di, word [es:bx+00eh]                 ; 26 8b 7f 0e
     or di, ax                                 ; 09 c7
-    je short 041b0h                           ; 74 18
+    je short 041cfh                           ; 74 18
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
@@ -5514,7 +5550,7 @@
     push 00428h                               ; 68 28 04
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 63 d7
+    call 01922h                               ; e8 59 d7
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 04597h                           ; e9 e7 03
+    jmp near 045b6h                           ; e9 e7 03
     les bx, [bp-014h]                         ; c4 5e ec
     mov ax, word [es:bx+008h]                 ; 26 8b 47 08
@@ -5526,12 +5562,12 @@
     mov word [bp-016h], ax                    ; 89 46 ea
     cmp ax, strict word 00044h                ; 3d 44 00
-    je near 04336h                            ; 0f 84 66 01
+    je near 04355h                            ; 0f 84 66 01
     cmp ax, strict word 00047h                ; 3d 47 00
-    je near 04336h                            ; 0f 84 5f 01
+    je near 04355h                            ; 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 0924ah                               ; e8 66 50
+    call 0946ah                               ; e8 67 52
     mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
     mov ax, word [bp-018h]                    ; 8b 46 e8
@@ -5561,5 +5597,5 @@
     sal ax, 1                                 ; d1 e0
     rcl bx, 1                                 ; d1 d3
-    loop 0422eh                               ; e2 fa
+    loop 0424dh                               ; e2 fa
     push bx                                   ; 53
     push ax                                   ; 50
@@ -5577,13 +5613,13 @@
     shr di, 1                                 ; d1 ef
     rcr ax, 1                                 ; d1 d8
-    loop 04258h                               ; e2 fa
+    loop 04277h                               ; 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 04336h                            ; 0f 84 cb 00
-    mov bx, 00da6h                            ; bb a6 0d
+    je near 04355h                            ; 0f 84 cb 00
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 56 d6
+    call 018e1h                               ; e8 4c d6
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -5592,12 +5628,12 @@
     push 00451h                               ; 68 51 04
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 85 d6
+    call 01922h                               ; e8 7b d6
     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 0459fh                           ; e9 09 03
+    jmp near 045beh                           ; e9 09 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe near 04597h                          ; 0f 87 fa 02
+    jnbe near 045b6h                          ; 0f 87 fa 02
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -5607,11 +5643,11 @@
     mov al, byte [es:di+021h]                 ; 26 8a 45 21
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 04327h                           ; 74 73
+    je short 04346h                           ; 74 73
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 042f4h                           ; 74 3b
+    je short 04313h                           ; 74 3b
     test bx, bx                               ; 85 db
-    jne near 04336h                           ; 0f 85 77 00
+    jne near 04355h                           ; 0f 85 77 00
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 042d5h                          ; 75 12
+    jne short 042f4h                          ; 75 12
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
@@ -5620,5 +5656,5 @@
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 0459fh                           ; e9 ca 02
+    jmp near 045beh                           ; e9 ca 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     imul dx, dx, strict byte 00018h           ; 6b d2 18
@@ -5632,11 +5668,11 @@
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 04336h                           ; e9 42 00
+    jmp near 04355h                           ; e9 42 00
     test al, al                               ; 84 c0
-    jne short 04304h                          ; 75 0c
+    jne short 04323h                          ; 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 045a2h                           ; e9 9e 02
+    jmp near 045c1h                           ; e9 9e 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     imul dx, dx, strict byte 00018h           ; 6b d2 18
@@ -5653,5 +5689,5 @@
     xor al, al                                ; 30 c0
     or ax, dx                                 ; 09 d0
-    jmp short 042eeh                          ; eb c7
+    jmp short 0430dh                          ; eb c7
     test al, al                               ; 84 c0
     db  00fh, 095h, 0c0h
@@ -5665,5 +5701,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 c9 d2
+    call 0160eh                               ; e8 aa d2
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -5678,12 +5714,12 @@
     mov al, byte [es:si+021h]                 ; 26 8a 44 21
     test al, al                               ; 84 c0
-    je short 0436ah                           ; 74 06
+    je short 04389h                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 0414fh                           ; e9 e5 fd
-    je short 04336h                           ; 74 ca
+    jmp near 0416eh                           ; e9 e5 fd
+    je short 04355h                           ; 74 ca
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 0459fh                           ; e9 28 02
+    jmp near 045beh                           ; e9 28 02
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
@@ -5695,6 +5731,6 @@
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 04597h                            ; 0f 82 04 02
-    jc short 043e4h                           ; 72 4f
+    jc near 045b6h                            ; 0f 82 04 02
+    jc short 04403h                           ; 72 4f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -5719,5 +5755,5 @@
     ; 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 044bbh                            ; 0f 82 cf 00
+    jc near 044dah                            ; 0f 82 cf 00
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
@@ -5771,20 +5807,20 @@
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
-    jmp short 0449eh                          ; eb 05
+    jmp short 044bdh                          ; eb 05
     cmp ch, 00fh                              ; 80 fd 0f
-    jnc short 044b1h                          ; 73 13
+    jnc short 044d0h                          ; 73 13
     movzx dx, ch                              ; 0f b6 d5
     add dx, 00312h                            ; 81 c2 12 03
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 01600h                               ; e8 55 d1
+    call 01600h                               ; e8 36 d1
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 04499h                          ; eb e8
+    jmp short 044b8h                          ; eb e8
     neg cl                                    ; f6 d9
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov byte [es:si+001ffh], cl               ; 26 88 8c ff 01
     cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
-    jc near 04336h                            ; 0f 82 73 fe
+    jc near 04355h                            ; 0f 82 73 fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cwd                                       ; 99
@@ -5804,5 +5840,5 @@
     mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
     test al, al                               ; 84 c0
-    jne short 04504h                          ; 75 09
+    jne short 04523h                          ; 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
@@ -5813,5 +5849,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 04530h                          ; 75 13
+    jne short 0454fh                          ; 75 13
     mov word [es:bx+030h], dx                 ; 26 89 57 30
     db  066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
@@ -5828,7 +5864,7 @@
     xor al, al                                ; 30 c0
     mov AH, strict byte 01eh                  ; b4 1e
-    jmp short 04558h                          ; eb 05
+    jmp short 04577h                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04567h                          ; 73 0f
+    jnc short 04586h                          ; 73 0f
     movzx si, ah                              ; 0f b6 f4
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -5837,21 +5873,21 @@
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 04553h                          ; eb ec
+    jmp short 04572h                          ; 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 04336h                           ; e9 c3 fd
+    jmp near 04355h                           ; e9 c3 fd
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 045b3h                          ; eb 38
+    jmp short 045d2h                          ; eb 38
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je near 04336h                            ; 0f 84 b4 fd
+    je near 04355h                            ; 0f 84 b4 fd
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 04597h                           ; 72 10
-    jbe near 04336h                           ; 0f 86 ab fd
+    jc short 045b6h                           ; 72 10
+    jbe near 04355h                           ; 0f 86 ab fd
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 04597h                           ; 72 07
+    jc short 045b6h                           ; 72 07
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe near 04336h                           ; 0f 86 9f fd
+    jbe near 04355h                           ; 0f 86 9f fd
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
@@ -5863,11 +5899,11 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 5b d0
+    call 0160eh                               ; e8 3c d0
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp near 04349h                           ; e9 8f fd
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 04368h                           ; e9 8f fd
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 07 d3
+    call 018e1h                               ; e8 fd d2
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
@@ -5876,34 +5912,34 @@
     push 00313h                               ; 68 13 03
     push strict byte 00004h                   ; 6a 04
-    jmp near 041a7h                           ; e9 d0 fb
-print_boot_device_:                          ; 0xf45d7 LB 0x4b
+    jmp near 041c6h                           ; e9 d0 fb
+print_boot_device_:                          ; 0xf45f6 LB 0x4b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 045e4h                           ; 74 05
+    je short 04603h                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 045feh                          ; eb 1a
+    jmp short 0461dh                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 045edh                           ; 74 05
+    je short 0460ch                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 045feh                          ; eb 11
+    jmp short 0461dh                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 045f6h                          ; 75 04
+    jne short 04615h                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 045feh                          ; eb 08
+    jmp short 0461dh                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 0461ch                           ; 74 21
+    je short 0463bh                           ; 74 21
     mov dx, strict word 00001h                ; ba 01 00
-    mov bx, 00da6h                            ; bb a6 0d
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 c3 d2
+    call 018e1h                               ; e8 b9 d2
     imul dx, dx, strict byte 0000ah           ; 6b d2 0a
-    add dx, 00dcch                            ; 81 c2 cc 0d
+    add dx, 00dc8h                            ; 81 c2 c8 0d
     push dx                                   ; 52
     push 00474h                               ; 68 74 04
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 f4 d2
+    call 01922h                               ; e8 ea d2
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -5911,5 +5947,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-print_boot_failure_:                         ; 0xf4622 LB 0x93
+print_boot_failure_:                         ; 0xf4641 LB 0x93
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -5920,51 +5956,51 @@
     movzx si, ah                              ; 0f b6 f4
     test al, al                               ; 84 c0
-    je short 0464fh                           ; 74 1b
-    mov bx, 00da6h                            ; bb a6 0d
+    je short 0466eh                           ; 74 1b
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 8d d2
-    push 00de0h                               ; 68 e0 0d
+    call 018e1h                               ; e8 83 d2
+    push 00ddch                               ; 68 dc 0d
     push 00488h                               ; 68 88 04
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 c3 d2
+    call 01922h                               ; e8 b9 d2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 04693h                          ; eb 44
+    jmp short 046b2h                          ; eb 44
     test dl, dl                               ; 84 d2
-    je short 04663h                           ; 74 10
-    mov bx, 00da6h                            ; bb a6 0d
+    je short 04682h                           ; 74 10
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 6e d2
-    push 00deah                               ; 68 ea 0d
-    jmp short 04642h                          ; eb df
+    call 018e1h                               ; e8 64 d2
+    push 00de6h                               ; 68 e6 0d
+    jmp short 04661h                          ; eb df
     test bl, 080h                             ; f6 c3 80
-    je short 04679h                           ; 74 11
-    mov bx, 00da6h                            ; bb a6 0d
+    je short 04698h                           ; 74 11
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 59 d2
+    call 018e1h                               ; e8 4f d2
     push si                                   ; 56
-    push 00dd6h                               ; 68 d6 0d
-    jmp short 04688h                          ; eb 0f
-    mov bx, 00da6h                            ; bb a6 0d
+    push 00dd2h                               ; 68 d2 0d
+    jmp short 046a7h                          ; eb 0f
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 48 d2
+    call 018e1h                               ; e8 3e d2
     push si                                   ; 56
-    push 00dcch                               ; 68 cc 0d
+    push 00dc8h                               ; 68 c8 0d
     push 0049dh                               ; 68 9d 04
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 7d d2
+    call 01922h                               ; e8 73 d2
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 046adh                          ; 75 14
+    jne short 046cch                          ; 75 14
     test dh, dh                               ; 84 f6
-    jne short 046a2h                          ; 75 05
+    jne short 046c1h                          ; 75 05
     push 004b5h                               ; 68 b5 04
-    jmp short 046a5h                          ; eb 03
+    jmp short 046c4h                          ; eb 03
     push 004dfh                               ; 68 df 04
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 63 d2
+    call 01922h                               ; e8 59 d2
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -5972,5 +6008,5 @@
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-print_cdromboot_failure_:                    ; 0xf46b5 LB 0x27
+print_cdromboot_failure_:                    ; 0xf46d4 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -5979,12 +6015,12 @@
     push dx                                   ; 52
     mov dx, ax                                ; 89 c2
-    mov bx, 00da6h                            ; bb a6 0d
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 04 d2
+    call 018e1h                               ; e8 fa d1
     push dx                                   ; 52
     push 00514h                               ; 68 14 05
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 3c d2
+    call 01922h                               ; e8 32 d2
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -5994,5 +6030,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf46dc LB 0x256
+_int19_function:                             ; 0xf46fb LB 0x256
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6002,13 +6038,13 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 2f cf
+    call 0161ch                               ; e8 10 cf
     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 0165ch                               ; e8 60 cf
+    call 0165ch                               ; e8 41 cf
     movzx si, al                              ; 0f b6 f0
     mov ax, strict word 00038h                ; b8 38 00
-    call 0165ch                               ; e8 57 cf
+    call 0165ch                               ; e8 38 cf
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
@@ -6016,5 +6052,5 @@
     or si, ax                                 ; 09 c6
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 0165ch                               ; e8 48 cf
+    call 0165ch                               ; e8 29 cf
     and AL, strict byte 00fh                  ; 24 0f
     xor ah, ah                                ; 30 e4
@@ -6023,30 +6059,30 @@
     mov dx, 00339h                            ; ba 39 03
     mov ax, bx                                ; 89 d8
-    call 01600h                               ; e8 db ce
+    call 01600h                               ; e8 bc ce
     test al, al                               ; 84 c0
-    je short 04734h                           ; 74 0b
+    je short 04753h                           ; 74 0b
     mov dx, 00339h                            ; ba 39 03
     mov ax, bx                                ; 89 d8
-    call 01600h                               ; e8 cf ce
+    call 01600h                               ; e8 b0 ce
     movzx si, al                              ; 0f b6 f0
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 0474ah                          ; 75 10
+    jne short 04769h                          ; 75 10
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 0165ch                               ; e8 1c cf
+    call 0165ch                               ; e8 fd ce
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
-    call 073ffh                               ; e8 b5 2c
+    call 075b3h                               ; e8 4a 2e
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04753h                          ; 75 03
+    jne short 04772h                          ; 75 03
     shr si, 004h                              ; c1 ee 04
     cmp byte [bp+004h], 003h                  ; 80 7e 04 03
-    jne short 0475ch                          ; 75 03
+    jne short 0477bh                          ; 75 03
     shr si, 008h                              ; c1 ee 08
     cmp byte [bp+004h], 004h                  ; 80 7e 04 04
-    jne short 04765h                          ; 75 03
+    jne short 04784h                          ; 75 03
     shr si, 00ch                              ; c1 ee 0c
     cmp si, strict byte 00010h                ; 83 fe 10
-    jnc short 0476eh                          ; 73 04
+    jnc short 0478dh                          ; 73 04
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
     xor al, al                                ; 30 c0
@@ -6054,8 +6090,8 @@
     mov byte [bp-00ah], al                    ; 88 46 f6
     mov byte [bp-00ch], al                    ; 88 46 f4
-    mov bx, 00da6h                            ; bb a6 0d
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 48 d1
+    call 018e1h                               ; e8 3e d1
     push si                                   ; 56
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
@@ -6063,39 +6099,39 @@
     push 00534h                               ; 68 34 05
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 7b d1
+    call 01922h                               ; e8 71 d1
     add sp, strict byte 00008h                ; 83 c4 08
     and si, strict byte 0000fh                ; 83 e6 0f
     cmp si, strict byte 00002h                ; 83 fe 02
-    jc short 047abh                           ; 72 0e
-    jbe short 047bah                          ; 76 1b
+    jc short 047cah                           ; 72 0e
+    jbe short 047d9h                          ; 76 1b
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 047d8h                           ; 74 34
+    je short 047f7h                           ; 74 34
     cmp si, strict byte 00003h                ; 83 fe 03
-    je short 047ceh                           ; 74 25
-    jmp short 04805h                          ; eb 5a
+    je short 047edh                           ; 74 25
+    jmp short 04824h                          ; eb 5a
     cmp si, strict byte 00001h                ; 83 fe 01
-    jne short 04805h                          ; 75 55
+    jne short 04824h                          ; 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 0481dh                          ; eb 63
+    jmp short 0483ch                          ; eb 63
     mov dx, 00338h                            ; ba 38 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 01600h                               ; e8 3d ce
+    call 01600h                               ; e8 1e ce
     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 0481dh                          ; eb 4f
+    jmp short 0483ch                          ; eb 4f
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
-    jmp short 047e2h                          ; eb 0a
+    jmp short 04801h                          ; eb 0a
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 0481dh                           ; 74 3b
-    call 0382bh                               ; e8 46 f0
+    je short 0483ch                           ; 74 3b
+    call 0384ah                               ; e8 46 f0
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 0480ch                           ; 74 21
-    call 046b5h                               ; e8 c7 fe
+    je short 0482bh                           ; 74 21
+    call 046d4h                               ; e8 c7 fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -6104,45 +6140,45 @@
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     mov cx, strict word 00001h                ; b9 01 00
-    call 04622h                               ; e8 1d fe
+    call 04641h                               ; e8 1d fe
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 0492bh                           ; e9 1f 01
+    jmp near 0494ah                           ; e9 1f 01
     mov dx, 0032eh                            ; ba 2e 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 0161ch                               ; e8 07 ce
+    call 0161ch                               ; e8 e8 cd
     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 04899h                           ; 0f 85 74 00
+    jne near 048b8h                           ; 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 047eeh                          ; 75 bb
+    jne short 0480dh                          ; 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 047eeh                          ; 75 ad
+    jne short 0480dh                          ; 75 ad
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 047eeh                          ; 75 a6
+    jne short 0480dh                          ; 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 04877h                          ; 75 1f
+    jne short 04896h                          ; 75 1f
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04877h                          ; 75 19
+    jne short 04896h                          ; 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 045d7h                               ; e8 6a fd
+    call 045f6h                               ; 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 04893h                          ; eb 1c
+    jmp short 048b2h                          ; 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 045d7h                               ; e8 51 fd
+    call 045f6h                               ; e8 51 fd
     sti                                       ; fb
     mov word [bp-010h], cx                    ; 89 4e f0
@@ -6151,9 +6187,9 @@
     mov word [bp-012h], ax                    ; 89 46 ee
     call far [bp-012h]                        ; ff 5e ee
-    jmp near 047eeh                           ; e9 55 ff
+    jmp near 0480dh                           ; e9 55 ff
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 048c5h                          ; 75 26
+    jne short 048e4h                          ; 75 26
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 048c5h                          ; 75 20
+    jne short 048e4h                          ; 75 20
     mov di, 007c0h                            ; bf c0 07
     mov es, di                                ; 8e c7
@@ -6168,27 +6204,27 @@
     sbb ax, strict byte 00000h                ; 83 d8 00
     test ax, ax                               ; 85 c0
-    jne near 047eeh                           ; 0f 85 29 ff
+    jne near 0480dh                           ; 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 048d4h                           ; 74 02
+    je short 048f3h                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     xor dx, dx                                ; 31 d2
     mov ax, di                                ; 89 f8
-    call 0161ch                               ; e8 41 cd
+    call 0161ch                               ; e8 22 cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, di                                ; 89 f8
-    call 0161ch                               ; e8 37 cd
+    call 0161ch                               ; e8 18 cd
     cmp bx, ax                                ; 39 c3
-    je short 048fah                           ; 74 11
+    je short 04919h                           ; 74 11
     test cl, cl                               ; 84 c9
-    jne short 04910h                          ; 75 23
+    jne short 0492fh                          ; 75 23
     mov dx, 001feh                            ; ba fe 01
     mov ax, di                                ; 89 f8
-    call 0161ch                               ; e8 27 cd
+    call 0161ch                               ; e8 08 cd
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04910h                           ; 74 16
+    je short 0492fh                           ; 74 16
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
@@ -6197,9 +6233,9 @@
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     xor cx, cx                                ; 31 c9
-    jmp near 04802h                           ; e9 f2 fe
+    jmp near 04821h                           ; 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 045d7h                               ; e8 b8 fc
+    call 045f6h                               ; e8 b8 fc
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     xor dx, dx                                ; 31 d2
@@ -6212,5 +6248,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4932 LB 0x13
+keyboard_panic_:                             ; 0xf4951 LB 0x13
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6218,10 +6254,10 @@
     push 00554h                               ; 68 54 05
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 cf cf
+    call 01922h                               ; e8 c5 cf
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4945 LB 0x27c
+_keyboard_init:                              ; 0xf4964 LB 0x27c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6235,16 +6271,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04968h                           ; 74 0d
+    je short 04987h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04968h                          ; 76 08
+    jbe short 04987h                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04951h                          ; eb e9
+    jmp short 04970h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04971h                          ; 75 05
+    jne short 04990h                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04932h                               ; e8 c1 ff
+    call 04951h                               ; e8 c1 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6253,16 +6289,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0498bh                          ; 75 0d
+    jne short 049aah                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0498bh                          ; 76 08
+    jbe short 049aah                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04974h                          ; eb e9
+    jmp short 04993h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04995h                          ; 75 06
+    jne short 049b4h                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04932h                               ; e8 9d ff
+    call 04951h                               ; e8 9d ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6270,7 +6306,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, strict word 00055h                ; 3d 55 00
-    je short 049a6h                           ; 74 06
+    je short 049c5h                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04932h                               ; e8 8c ff
+    call 04951h                               ; e8 8c ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
@@ -6282,16 +6318,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 049c6h                           ; 74 0d
+    je short 049e5h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 049c6h                          ; 76 08
+    jbe short 049e5h                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 049afh                          ; eb e9
+    jmp short 049ceh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 049d0h                          ; 75 06
+    jne short 049efh                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04932h                               ; e8 62 ff
+    call 04951h                               ; e8 62 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6300,16 +6336,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 049eah                          ; 75 0d
+    jne short 04a09h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 049eah                          ; 76 08
+    jbe short 04a09h                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 049d3h                          ; eb e9
+    jmp short 049f2h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 049f4h                          ; 75 06
+    jne short 04a13h                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04932h                               ; e8 3e ff
+    call 04951h                               ; e8 3e ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6317,7 +6353,7 @@
     ; sub ah, ah                                ; 2a e4
     test ax, ax                               ; 85 c0
-    je short 04a04h                           ; 74 06
+    je short 04a23h                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04932h                               ; e8 2e ff
+    call 04951h                               ; e8 2e ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
@@ -6329,16 +6365,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04a24h                           ; 74 0d
+    je short 04a43h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04a24h                          ; 76 08
+    jbe short 04a43h                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04a0dh                          ; eb e9
+    jmp short 04a2ch                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04a2eh                          ; 75 06
+    jne short 04a4dh                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04932h                               ; e8 04 ff
+    call 04951h                               ; e8 04 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6347,16 +6383,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04a48h                          ; 75 0d
+    jne short 04a67h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04a48h                          ; 76 08
+    jbe short 04a67h                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04a31h                          ; eb e9
+    jmp short 04a50h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04a52h                          ; 75 06
+    jne short 04a71h                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04932h                               ; e8 e0 fe
+    call 04951h                               ; e8 e0 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6364,7 +6400,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04a63h                           ; 74 06
+    je short 04a82h                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04932h                               ; e8 cf fe
+    call 04951h                               ; e8 cf fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6373,16 +6409,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04a7dh                          ; 75 0d
+    jne short 04a9ch                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04a7dh                          ; 76 08
+    jbe short 04a9ch                          ; 76 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04a66h                          ; eb e9
+    jmp short 04a85h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04a87h                          ; 75 06
+    jne short 04aa6h                          ; 75 06
     mov ax, strict word 0001fh                ; b8 1f 00
-    call 04932h                               ; e8 ab fe
+    call 04951h                               ; e8 ab fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6390,12 +6426,12 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04aa0h                           ; 74 0e
+    je short 04abfh                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04aa0h                           ; 74 06
+    je short 04abfh                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04932h                               ; e8 92 fe
+    call 04951h                               ; e8 92 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
@@ -6407,16 +6443,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04ac0h                           ; 74 0d
+    je short 04adfh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ac0h                          ; 76 08
+    jbe short 04adfh                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04aa9h                          ; eb e9
+    jmp short 04ac8h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04acah                          ; 75 06
+    jne short 04ae9h                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04932h                               ; e8 68 fe
+    call 04951h                               ; e8 68 fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6425,16 +6461,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04ae4h                          ; 75 0d
+    jne short 04b03h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ae4h                          ; 76 08
+    jbe short 04b03h                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04acdh                          ; eb e9
+    jmp short 04aech                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04aeeh                          ; 75 06
+    jne short 04b0dh                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04932h                               ; e8 44 fe
+    call 04951h                               ; e8 44 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6442,7 +6478,7 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04affh                           ; 74 06
+    je short 04b1eh                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04932h                               ; e8 33 fe
+    call 04951h                               ; e8 33 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -6454,16 +6490,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04b1fh                           ; 74 0d
+    je short 04b3eh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04b1fh                          ; 76 08
+    jbe short 04b3eh                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04b08h                          ; eb e9
+    jmp short 04b27h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04b29h                          ; 75 06
+    jne short 04b48h                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04932h                               ; e8 09 fe
+    call 04951h                               ; e8 09 fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
@@ -6475,16 +6511,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04b49h                           ; 74 0d
+    je short 04b68h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04b49h                          ; 76 08
+    jbe short 04b68h                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04b32h                          ; eb e9
+    jmp short 04b51h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04b53h                          ; 75 06
+    jne short 04b72h                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04932h                               ; e8 df fd
+    call 04951h                               ; e8 df fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
@@ -6496,16 +6532,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04b73h                           ; 74 0d
+    je short 04b92h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04b73h                          ; 76 08
+    jbe short 04b92h                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04b5ch                          ; eb e9
+    jmp short 04b7bh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04b7dh                          ; 75 06
+    jne short 04b9ch                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04932h                               ; e8 b5 fd
+    call 04951h                               ; e8 b5 fd
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -6514,16 +6550,16 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04b97h                          ; 75 0d
+    jne short 04bb6h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04b97h                          ; 76 08
+    jbe short 04bb6h                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04b80h                          ; eb e9
+    jmp short 04b9fh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ba1h                          ; 75 06
+    jne short 04bc0h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04932h                               ; e8 91 fd
+    call 04951h                               ; e8 91 fd
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -6531,16 +6567,16 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04bb2h                           ; 74 06
+    je short 04bd1h                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04932h                               ; e8 80 fd
+    call 04951h                               ; e8 80 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 05e2ch                               ; e8 6f 12
+    call 05e4bh                               ; e8 6f 12
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf4bc1 LB 0x93
+enqueue_key_:                                ; 0xf4be0 LB 0x93
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6554,30 +6590,30 @@
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 45 ca
+    call 0161ch                               ; e8 26 ca
     mov di, ax                                ; 89 c7
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 3a ca
+    call 0161ch                               ; e8 1b ca
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 04befh                           ; 72 03
+    jc short 04c0eh                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 04bf7h                          ; 75 04
+    jne short 04c16h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 04c1ch                          ; eb 25
+    jmp short 04c3bh                          ; eb 25
     xor bh, bh                                ; 30 ff
     mov dx, si                                ; 89 f2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 0d ca
+    call 0160eh                               ; e8 ee c9
     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 0160eh                               ; e8 00 ca
+    call 0160eh                               ; e8 e1 c9
     mov bx, cx                                ; 89 cb
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 11 ca
+    call 0162ah                               ; e8 f2 c9
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
@@ -6597,19 +6633,27 @@
     cmp bh, byte [bx+si]                      ; 3a 38
     sub bl, byte [ss:di]                      ; 36 2a 1d
-    mov cs, [bp+01bh]                         ; 8e 4e 1b
+    lodsw                                     ; ad
+    dec si                                    ; 4e
+    cmp cl, byte [di+009h]                    ; 3a 4d 09
     dec bp                                    ; 4d
-    jmp far 09d4ch:0ea4ch                     ; ea 4c ea 4c 9d
+    or word [di-044h], cx                     ; 09 4d bc
     dec bp                                    ; 4d
-    retn                                      ; c3
+    loop 04cabh                               ; e2 4c
+    db  02eh, 04eh
+    ; cs dec si                                 ; 2e 4e
+    jnl short 04cb1h                          ; 7d 4e
+    mov AL, byte [07b4eh]                     ; a0 4e 7b
+    dec bp                                    ; 4d
+    or word [di+009h], cx                     ; 09 4d 09
+    dec bp                                    ; 4d
+    cmc                                       ; f5
+    dec bp                                    ; 4d
+    sti                                       ; fb
     dec sp                                    ; 4c
-    cmovle bx, word [bp+04eh]                 ; 0f 4e 5e 4e
-    or word [bp+05ch], 0ea4dh                 ; 81 4e 5c 4d ea
-    dec sp                                    ; 4c
-    jmp far 0dc4dh:0d64ch                     ; ea 4c d6 4d dc
-    dec sp                                    ; 4c
-    aas                                       ; 3f
+    pop si                                    ; 5e
     dec si                                    ; 4e
-    jp short 04ca2h                           ; 7a 4e
-_int09_function:                             ; 0xf4c54 LB 0x35d
+    cwd                                       ; 99
+    dec si                                    ; 4e
+_int09_function:                             ; 0xf4c73 LB 0x35d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6620,27 +6664,27 @@
     mov byte [bp-00ah], al                    ; 88 46 f6
     test al, al                               ; 84 c0
-    jne short 04c7fh                          ; 75 19
-    mov bx, 00da6h                            ; bb a6 0d
+    jne short 04c9eh                          ; 75 19
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 5b cc
+    call 018e1h                               ; e8 51 cc
     push 00567h                               ; 68 67 05
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 94 cc
+    call 01922h                               ; e8 8a cc
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 04faah                           ; e9 2b 03
+    jmp near 04fc9h                           ; e9 2b 03
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 78 c9
+    call 01600h                               ; e8 59 c9
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov bl, al                                ; 88 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 6a c9
+    call 01600h                               ; e8 4b c9
     mov byte [bp-010h], al                    ; 88 46 f0
     mov byte [bp-00ch], al                    ; 88 46 f4
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 5b c9
+    call 01600h                               ; e8 3c c9
     mov byte [bp-008h], al                    ; 88 46 f8
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -6649,9 +6693,9 @@
     pop ES                                    ; 07
     mov cx, strict word 00010h                ; b9 10 00
-    mov di, 04c25h                            ; bf 25 4c
+    mov di, 04c44h                            ; bf 44 4c
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04c34h]               ; 2e 8b 85 34 4c
+    mov ax, word [cs:di+04c53h]               ; 2e 8b 85 53 4c
     jmp ax                                    ; ff e0
     xor bl, 040h                              ; 80 f3 40
@@ -6659,15 +6703,15 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 3d c9
+    call 0160eh                               ; e8 1e c9
     or byte [bp-00ch], 040h                   ; 80 4e f4 40
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
-    jmp near 04e52h                           ; e9 76 01
+    jmp near 04e71h                           ; e9 76 01
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0bfh                  ; 24 bf
     mov byte [bp-00ch], al                    ; 88 46 f4
     movzx bx, al                              ; 0f b6 d8
-    jmp near 04e52h                           ; e9 68 01
+    jmp near 04e71h                           ; e9 68 01
     test byte [bp-006h], 002h                 ; f6 46 fa 02
-    jne near 04f8ch                           ; 0f 85 9a 02
+    jne near 04fabh                           ; 0f 85 9a 02
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     and AL, strict byte 07fh                  ; 24 7f
@@ -6678,29 +6722,29 @@
     inc ax                                    ; 40
     test byte [bp-00ah], 080h                 ; f6 46 f6 80
-    je short 04d0bh                           ; 74 06
+    je short 04d2ah                           ; 74 06
     not al                                    ; f6 d0
     and bl, al                                ; 20 c3
-    jmp short 04d0dh                          ; eb 02
+    jmp short 04d2ch                          ; eb 02
     or bl, al                                 ; 08 c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f6 c8
-    jmp near 04f8ch                           ; e9 71 02
+    call 0160eh                               ; e8 d7 c8
+    jmp near 04fabh                           ; e9 71 02
     test byte [bp-008h], 001h                 ; f6 46 f8 01
-    jne near 04f8ch                           ; 0f 85 69 02
+    jne near 04fabh                           ; 0f 85 69 02
     or bl, 004h                               ; 80 cb 04
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 dd c8
+    call 0160eh                               ; e8 be c8
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test AL, strict byte 002h                 ; a8 02
-    je short 04d45h                           ; 74 0d
+    je short 04d64h                           ; 74 0d
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-006h], al                    ; 88 46 fa
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04d53h                          ; eb 0e
+    jmp short 04d72h                          ; eb 0e
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 001h                   ; 0c 01
@@ -6709,21 +6753,21 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 b5 c8
-    jmp near 04f8ch                           ; e9 30 02
+    call 0160eh                               ; e8 96 c8
+    jmp near 04fabh                           ; e9 30 02
     test byte [bp-008h], 001h                 ; f6 46 f8 01
-    jne near 04f8ch                           ; 0f 85 28 02
+    jne near 04fabh                           ; 0f 85 28 02
     and bl, 0fbh                              ; 80 e3 fb
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 9c c8
+    call 0160eh                               ; e8 7d c8
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test AL, strict byte 002h                 ; a8 02
-    je short 04d86h                           ; 74 0d
+    je short 04da5h                           ; 74 0d
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-006h], al                    ; 88 46 fa
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04d94h                          ; eb 0e
+    jmp short 04db3h                          ; eb 0e
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0feh                  ; 24 fe
@@ -6732,19 +6776,19 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 74 c8
-    jmp near 04f8ch                           ; e9 ef 01
+    call 0160eh                               ; e8 55 c8
+    jmp near 04fabh                           ; e9 ef 01
     or bl, 008h                               ; 80 cb 08
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 63 c8
+    call 0160eh                               ; e8 44 c8
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test AL, strict byte 002h                 ; a8 02
-    je short 04dbfh                           ; 74 0d
+    je short 04ddeh                           ; 74 0d
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-006h], al                    ; 88 46 fa
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04dcdh                          ; eb 0e
+    jmp short 04dech                          ; eb 0e
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 002h                   ; 0c 02
@@ -6753,19 +6797,19 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 3b c8
-    jmp near 04f8ch                           ; e9 b6 01
+    call 0160eh                               ; e8 1c c8
+    jmp near 04fabh                           ; e9 b6 01
     and bl, 0f7h                              ; 80 e3 f7
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 2a c8
+    call 0160eh                               ; e8 0b c8
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test AL, strict byte 002h                 ; a8 02
-    je short 04df8h                           ; 74 0d
+    je short 04e17h                           ; 74 0d
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-006h], al                    ; 88 46 fa
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 04e06h                          ; eb 0e
+    jmp short 04e25h                          ; eb 0e
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0fdh                  ; 24 fd
@@ -6774,8 +6818,8 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 02 c8
-    jmp near 04f8ch                           ; e9 7d 01
+    call 0160eh                               ; e8 e3 c7
+    jmp near 04fabh                           ; e9 7d 01
     test byte [bp-008h], 003h                 ; f6 46 f8 03
-    jne near 04f8ch                           ; 0f 85 75 01
+    jne near 04fabh                           ; 0f 85 75 01
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 020h                   ; 0c 20
@@ -6784,5 +6828,5 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 e3 c7
+    call 0160eh                               ; e8 c4 c7
     mov bl, byte [bp-00eh]                    ; 8a 5e f2
     xor bl, 020h                              ; 80 f3 20
@@ -6790,8 +6834,8 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 d2 c7
-    jmp near 04f8ch                           ; e9 4d 01
+    call 0160eh                               ; e8 b3 c7
+    jmp near 04fabh                           ; e9 4d 01
     test byte [bp-008h], 003h                 ; f6 46 f8 03
-    jne near 04f8ch                           ; 0f 85 45 01
+    jne near 04fabh                           ; 0f 85 45 01
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0dfh                  ; 24 df
@@ -6800,6 +6844,6 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 b3 c7
-    jmp near 04f8ch                           ; e9 2e 01
+    call 0160eh                               ; e8 94 c7
+    jmp near 04fabh                           ; e9 2e 01
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 010h                   ; 0c 10
@@ -6808,106 +6852,106 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 9c c7
+    call 0160eh                               ; e8 7d c7
     mov bl, byte [bp-00eh]                    ; 8a 5e f2
     xor bl, 010h                              ; 80 f3 10
-    jmp short 04e31h                          ; eb b7
+    jmp short 04e50h                          ; eb b7
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0efh                  ; 24 ef
-    jmp short 04e4ch                          ; eb cb
+    jmp short 04e6bh                          ; eb cb
     mov al, bl                                ; 88 d8
     and AL, strict byte 00ch                  ; 24 0c
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jne short 04e8eh                          ; 75 05
+    jne short 04eadh                          ; 75 05
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-00ah], 080h                 ; f6 46 f6 80
-    jne near 04f8ch                           ; 0f 85 f6 00
+    jne near 04fabh                           ; 0f 85 f6 00
     cmp byte [bp-00ah], 058h                  ; 80 7e f6 58
-    jbe short 04ebah                          ; 76 1e
-    mov bx, 00da6h                            ; bb a6 0d
+    jbe short 04ed9h                          ; 76 1e
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 25 ca
+    call 018e1h                               ; e8 1b ca
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     push ax                                   ; 50
     push 00581h                               ; 68 81 05
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 59 ca
+    call 01922h                               ; e8 4f ca
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 04faah                           ; e9 f0 00
+    jmp near 04fc9h                           ; e9 f0 00
     test bl, 008h                             ; f6 c3 08
-    je short 04ed1h                           ; 74 12
+    je short 04ef0h                           ; 74 12
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    mov dl, byte [si+00dfah]                  ; 8a 94 fa 0d
-    mov ax, word [si+00dfah]                  ; 8b 84 fa 0d
-    jmp near 04f5dh                           ; e9 8c 00
+    mov dl, byte [si+00df6h]                  ; 8a 94 f6 0d
+    mov ax, word [si+00df6h]                  ; 8b 84 f6 0d
+    jmp near 04f7ch                           ; e9 8c 00
     test bl, 004h                             ; f6 c3 04
-    je short 04ee8h                           ; 74 12
+    je short 04f07h                           ; 74 12
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    mov dl, byte [si+00df8h]                  ; 8a 94 f8 0d
-    mov ax, word [si+00df8h]                  ; 8b 84 f8 0d
-    jmp near 04f5dh                           ; e9 75 00
+    mov dl, byte [si+00df4h]                  ; 8a 94 f4 0d
+    mov ax, word [si+00df4h]                  ; 8b 84 f4 0d
+    jmp near 04f7ch                           ; e9 75 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 002h                  ; 24 02
     test al, al                               ; 84 c0
-    jbe short 04f06h                          ; 76 15
+    jbe short 04f25h                          ; 76 15
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 04f06h                           ; 72 0e
+    jc short 04f25h                           ; 72 0e
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 04f06h                         ; 77 0a
+    jnbe short 04f25h                         ; 77 0a
     mov DL, strict byte 0e0h                  ; b2 e0
     movzx si, al                              ; 0f b6 f0
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    jmp short 04f59h                          ; eb 53
+    jmp short 04f78h                          ; eb 53
     test bl, 003h                             ; f6 c3 03
-    je short 04f38h                           ; 74 2d
+    je short 04f57h                           ; 74 2d
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    movzx ax, byte [si+00dfch]                ; 0f b6 84 fc 0d
+    movzx ax, byte [si+00df8h]                ; 0f b6 84 f8 0d
     movzx dx, bl                              ; 0f b6 d3
     test dx, ax                               ; 85 c2
-    je short 04f28h                           ; 74 0a
-    mov dl, byte [si+00df4h]                  ; 8a 94 f4 0d
-    mov ax, word [si+00df4h]                  ; 8b 84 f4 0d
-    jmp short 04f30h                          ; eb 08
-    mov dl, byte [si+00df6h]                  ; 8a 94 f6 0d
-    mov ax, word [si+00df6h]                  ; 8b 84 f6 0d
+    je short 04f47h                           ; 74 0a
+    mov dl, byte [si+00df0h]                  ; 8a 94 f0 0d
+    mov ax, word [si+00df0h]                  ; 8b 84 f0 0d
+    jmp short 04f4fh                          ; eb 08
+    mov dl, byte [si+00df2h]                  ; 8a 94 f2 0d
+    mov ax, word [si+00df2h]                  ; 8b 84 f2 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ah], al                    ; 88 46 f6
-    jmp short 04f63h                          ; eb 2b
+    jmp short 04f82h                          ; eb 2b
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     imul si, si, strict byte 0000ah           ; 6b f6 0a
-    movzx ax, byte [si+00dfch]                ; 0f b6 84 fc 0d
+    movzx ax, byte [si+00df8h]                ; 0f b6 84 f8 0d
     movzx dx, bl                              ; 0f b6 d3
     test dx, ax                               ; 85 c2
-    je short 04f55h                           ; 74 0a
-    mov dl, byte [si+00df6h]                  ; 8a 94 f6 0d
-    mov ax, word [si+00df6h]                  ; 8b 84 f6 0d
-    jmp short 04f5dh                          ; eb 08
-    mov dl, byte [si+00df4h]                  ; 8a 94 f4 0d
-    mov ax, word [si+00df4h]                  ; 8b 84 f4 0d
+    je short 04f74h                           ; 74 0a
+    mov dl, byte [si+00df2h]                  ; 8a 94 f2 0d
+    mov ax, word [si+00df2h]                  ; 8b 84 f2 0d
+    jmp short 04f7ch                          ; eb 08
+    mov dl, byte [si+00df0h]                  ; 8a 94 f0 0d
+    mov ax, word [si+00df0h]                  ; 8b 84 f0 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04f83h                          ; 75 1a
+    jne short 04fa2h                          ; 75 1a
     test dl, dl                               ; 84 d2
-    jne short 04f83h                          ; 75 16
-    mov bx, 00da6h                            ; bb a6 0d
+    jne short 04fa2h                          ; 75 16
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 54 c9
+    call 018e1h                               ; e8 4a c9
     push 005b8h                               ; 68 b8 05
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 8d c9
+    call 01922h                               ; e8 83 c9
     add sp, strict byte 00004h                ; 83 c4 04
     xor dh, dh                                ; 30 f6
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 04bc1h                               ; e8 35 fc
+    call 04be0h                               ; e8 35 fc
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 01dh                  ; 3c 1d
-    je short 04f99h                           ; 74 04
+    je short 04fb8h                           ; 74 04
     and byte [bp-006h], 0feh                  ; 80 66 fa fe
     and byte [bp-006h], 0fdh                  ; 80 66 fa fd
@@ -6915,5 +6959,5 @@
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 64 c6
+    call 0160eh                               ; e8 45 c6
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6921,5 +6965,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-dequeue_key_:                                ; 0xf4fb1 LB 0x94
+dequeue_key_:                                ; 0xf4fd0 LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6934,18 +6978,18 @@
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 51 c6
+    call 0161ch                               ; e8 32 c6
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 46 c6
+    call 0161ch                               ; e8 27 c6
     cmp bx, ax                                ; 39 c3
-    je short 05017h                           ; 74 3d
+    je short 05036h                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 1e c6
+    call 01600h                               ; e8 ff c5
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 13 c6
+    call 01600h                               ; e8 f4 c5
     mov es, [bp-008h]                         ; 8e 46 f8
     mov byte [es:si], cl                      ; 26 88 0c
@@ -6953,15 +6997,15 @@
     mov byte [es:di], al                      ; 26 88 05
     cmp word [bp+004h], strict byte 00000h    ; 83 7e 04 00
-    je short 05012h                           ; 74 13
+    je short 05031h                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 05009h                           ; 72 03
+    jc short 05028h                           ; 72 03
     mov bx, strict word 0001eh                ; bb 1e 00
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 18 c6
+    call 0162ah                               ; e8 f9 c5
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 05019h                          ; eb 02
+    jmp short 05038h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -6974,22 +7018,23 @@
     or cl, byte [bx+di]                       ; 0a 09
     add ax, 00102h                            ; 05 02 01
-    add bl, ah                                ; 00 e3
+    add byte [bp+si], al                      ; 00 02
+    push bx                                   ; 53
+    sbb byte [bx+di+05fh], dl                 ; 18 51 5f
+    push cx                                   ; 51
+    stosw                                     ; ab
+    push cx                                   ; 51
+    mov bx, 0e551h                            ; bb 51 e5
+    push cx                                   ; 51
+    out DX, AL                                ; ee
+    push cx                                   ; 51
+    pop di                                    ; 5f
     push dx                                   ; 52
-    stc                                       ; f9
-    push ax                                   ; 50
-    inc ax                                    ; 40
-    push cx                                   ; 51
-    mov [bx+di-064h], ss                      ; 8c 51 9c
-    push cx                                   ; 51
-    db  0c6h, 051h, 0cfh, 051h
-    ; mov byte [bx+di-031h], 051h               ; c6 51 cf 51
-    inc ax                                    ; 40
+    nop                                       ; 90
     push dx                                   ; 52
-    jno short 05091h                          ; 71 52
-    sahf                                      ; 9e
+    mov bp, 0f752h                            ; bd 52 f7
     push dx                                   ; 52
-    fcom dword [bp+si+026h]                   ; d8 52 26
+    inc bp                                    ; 45
     push bx                                   ; 53
-_int16_function:                             ; 0xf5045 LB 0x2e7
+_int16_function:                             ; 0xf5064 LB 0x2e7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -6998,10 +7043,10 @@
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 ab c5
+    call 01600h                               ; e8 8c c5
     mov cl, al                                ; 88 c1
     mov bh, al                                ; 88 c7
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 9e c5
+    call 01600h                               ; e8 7f c5
     mov bl, al                                ; 88 c3
     movzx dx, cl                              ; 0f b6 d1
@@ -7012,5 +7057,5 @@
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 050d7h                           ; 74 60
+    je short 050f6h                           ; 74 60
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
@@ -7022,9 +7067,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05090h                          ; 75 08
+    jne short 050afh                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0507eh                          ; eb ee
+    jmp short 0509dh                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7032,5 +7077,5 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 050d6h                          ; 75 3b
+    jne short 050f5h                          ; 75 3b
     and bl, 0f8h                              ; 80 e3 f8
     movzx ax, bh                              ; 0f b6 c7
@@ -7048,9 +7093,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 050c5h                          ; 75 08
+    jne short 050e4h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050b3h                          ; eb ee
+    jmp short 050d2h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7060,18 +7105,18 @@
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 38 c5
+    call 0160eh                               ; e8 19 c5
     sti                                       ; fb
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000a2h                            ; 3d a2 00
-    jnbe near 052e3h                          ; 0f 87 ff 01
+    jnbe near 05302h                          ; 0f 87 ff 01
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 05022h                            ; bf 22 50
+    mov di, 05041h                            ; bf 41 50
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0502dh]               ; 2e 8b 85 2d 50
+    mov ax, word [cs:di+0504ch]               ; 2e 8b 85 4c 50
     jmp ax                                    ; ff e0
     push strict byte 00001h                   ; 6a 01
@@ -7080,17 +7125,17 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 04fb1h                               ; e8 a9 fe
+    call 04fd0h                               ; e8 a9 fe
     test ax, ax                               ; 85 c0
-    jne short 05117h                          ; 75 0b
+    jne short 05136h                          ; 75 0b
     push 005efh                               ; 68 ef 05
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 f9 c7
+    call 01922h                               ; e8 ef c7
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 05123h                           ; 74 06
+    je short 05142h                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 05129h                           ; 74 06
+    je short 05148h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 0512dh                          ; 75 04
+    jne short 0514ch                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
@@ -7099,5 +7144,5 @@
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 05326h                           ; e9 e6 01
+    jmp near 05345h                           ; e9 e6 01
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     push strict byte 00000h                   ; 6a 00
@@ -7106,15 +7151,15 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 04fb1h                               ; e8 5d fe
+    call 04fd0h                               ; e8 5d fe
     test ax, ax                               ; 85 c0
-    jne short 0515fh                          ; 75 07
+    jne short 0517eh                          ; 75 07
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp near 05326h                           ; e9 c7 01
+    jmp near 05345h                           ; e9 c7 01
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 0516bh                           ; 74 06
+    je short 0518ah                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 05171h                           ; 74 06
+    je short 05190h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 05175h                          ; 75 04
+    jne short 05194h                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
@@ -7124,11 +7169,11 @@
     mov word [bp+012h], dx                    ; 89 56 12
     and word [bp+01ch], strict byte 0ffbfh    ; 83 66 1c bf
-    jmp near 05326h                           ; e9 9a 01
+    jmp near 05345h                           ; e9 9a 01
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 6b c4
+    call 01600h                               ; e8 4c c4
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
-    jmp short 0513ah                          ; eb 9e
+    jmp short 05159h                          ; eb 9e
     mov al, byte [bp+010h]                    ; 8a 46 10
     movzx dx, al                              ; 0f b6 d0
@@ -7136,18 +7181,18 @@
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 04bc1h                               ; e8 14 fa
+    call 04be0h                               ; e8 14 fa
     test ax, ax                               ; 85 c0
-    jne short 051beh                          ; 75 0d
+    jne short 051ddh                          ; 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 05326h                           ; e9 68 01
+    jmp near 05345h                           ; e9 68 01
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 05326h                           ; e9 60 01
+    jmp near 05345h                           ; 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 051b8h                          ; eb e9
+    jmp short 051d7h                          ; eb e9
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
@@ -7162,15 +7207,15 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 051f6h                          ; 75 0d
+    jne short 05215h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 051f6h                          ; 76 08
+    jbe short 05215h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 051dfh                          ; eb e9
+    jmp short 051feh                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 0523ah                          ; 76 40
+    jbe short 05259h                          ; 76 40
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7178,5 +7223,5 @@
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 0523ah                          ; 75 35
+    jne short 05259h                          ; 75 35
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
@@ -7185,15 +7230,15 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0521fh                          ; 75 0d
+    jne short 0523eh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0521fh                          ; 76 08
+    jbe short 0523eh                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05208h                          ; eb e9
+    jmp short 05227h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05231h                          ; 76 0e
+    jbe short 05250h                          ; 76 0e
     shr cx, 008h                              ; c1 e9 08
     mov dx, strict word 00060h                ; ba 60 00
@@ -7205,7 +7250,7 @@
     dec byte [bp-004h]                        ; fe 4e fc
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jnbe short 05205h                         ; 77 cb
+    jnbe short 05224h                         ; 77 cb
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 05326h                           ; e9 e6 00
+    jmp near 05345h                           ; e9 e6 00
     push strict byte 00001h                   ; 6a 01
     mov cx, ss                                ; 8c d1
@@ -7213,16 +7258,16 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 04fb1h                               ; e8 62 fd
+    call 04fd0h                               ; e8 62 fd
     test ax, ax                               ; 85 c0
-    jne short 0525eh                          ; 75 0b
+    jne short 0527dh                          ; 75 0b
     push 005efh                               ; 68 ef 05
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 b2 c6
+    call 01922h                               ; e8 a8 c6
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 0512dh                            ; 0f 84 c7 fe
+    je near 0514ch                            ; 0f 84 c7 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 05129h                            ; 0f 84 bb fe
-    jmp near 0512dh                           ; e9 bc fe
+    je near 05148h                            ; 0f 84 bb fe
+    jmp near 0514ch                           ; e9 bc fe
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     push strict byte 00000h                   ; 6a 00
@@ -7231,15 +7276,15 @@
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 04fb1h                               ; e8 2c fd
+    call 04fd0h                               ; e8 2c fd
     test ax, ax                               ; 85 c0
-    je near 05158h                            ; 0f 84 cd fe
+    je near 05177h                            ; 0f 84 cd fe
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 05175h                            ; 0f 84 e2 fe
+    je near 05194h                            ; 0f 84 e2 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 05171h                            ; 0f 84 d6 fe
-    jmp near 05175h                           ; e9 d7 fe
+    je near 05190h                            ; 0f 84 d6 fe
+    jmp near 05194h                           ; e9 d7 fe
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 59 c3
+    call 01600h                               ; e8 3a c3
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
@@ -7247,10 +7292,10 @@
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 48 c3
+    call 01600h                               ; e8 29 c3
     mov bh, al                                ; 88 c7
     and bh, 073h                              ; 80 e7 73
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 3a c3
+    call 01600h                               ; e8 1b c3
     and AL, strict byte 00ch                  ; 24 0c
     or bh, al                                 ; 08 c7
@@ -7259,13 +7304,13 @@
     movzx ax, bh                              ; 0f b6 c7
     sal ax, 008h                              ; c1 e0 08
-    jmp near 05138h                           ; e9 60 fe
+    jmp near 05157h                           ; e9 60 fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 051b8h                           ; e9 d5 fe
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 051d7h                           ; e9 d5 fe
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 de c5
+    call 018e1h                               ; e8 d4 c5
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
@@ -7273,10 +7318,10 @@
     push 00613h                               ; 68 13 06
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 10 c6
+    call 01922h                               ; e8 06 c6
     add sp, strict byte 00006h                ; 83 c4 06
-    mov bx, 00da6h                            ; bb a6 0d
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 c1 c5
+    call 018e1h                               ; e8 b7 c5
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
@@ -7289,5 +7334,5 @@
     push 0063bh                               ; 68 3b 06
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 ea c5
+    call 01922h                               ; e8 e0 c5
     add sp, strict byte 0000ch                ; 83 c4 0c
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -7295,5 +7340,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_geom_lba_:                               ; 0xf532c LB 0x9e
+set_geom_lba_:                               ; 0xf534b LB 0x9e
     push si                                   ; 56
     push di                                   ; 57
@@ -7307,12 +7352,12 @@
     mov di, 000ffh                            ; bf ff 00
     xor bx, bx                                ; 31 db
-    jmp short 0534dh                          ; eb 05
+    jmp short 0536ch                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 05363h                          ; 7d 16
+    jnl short 05382h                          ; 7d 16
     cmp dx, word [bp-002h]                    ; 3b 56 fe
-    jnbe short 05359h                         ; 77 07
-    jne short 0535ch                          ; 75 08
+    jnbe short 05378h                         ; 77 07
+    jne short 0537bh                          ; 75 08
     cmp ax, word [bp-004h]                    ; 3b 46 fc
-    jc short 0535ch                           ; 72 03
+    jc short 0537bh                           ; 72 03
     inc di                                    ; 47
     shr di, 1                                 ; d1 ef
@@ -7320,18 +7365,18 @@
     rcr ax, 1                                 ; d1 d8
     inc bx                                    ; 43
-    jmp short 05348h                          ; eb e5
+    jmp short 05367h                          ; eb e5
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, strict word 0003fh                ; bb 3f 00
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 aa 3e
+    call 09439h                               ; e8 ab 40
     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 091e0h                               ; e8 64 3e
+    call 09400h                               ; e8 65 40
     mov word [es:si+002h], ax                 ; 26 89 44 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 0538bh                          ; 76 06
+    jbe short 053aah                          ; 76 06
     mov word [es:si+002h], 00400h             ; 26 c7 44 02 00 04
     mov word [es:si], di                      ; 26 89 3c
@@ -7341,45 +7386,41 @@
     pop si                                    ; 5e
     retn                                      ; c3
+    jnc short 0540dh                          ; 73 54
+    cwd                                       ; 99
     push sp                                   ; 54
-    push sp                                   ; 54
-    jp short 053f0h                           ; 7a 54
-    cmpsw                                     ; a7
-    push sp                                   ; 54
-    cmpsw                                     ; a7
-    push sp                                   ; 54
-    cmpsw                                     ; a7
-    push sp                                   ; 54
-    jnle short 053fah                         ; 7f 56
-    lodsw                                     ; ad
+    db  0c6h, 054h, 0c6h, 054h
+    ; mov byte [si-03ah], 054h                  ; c6 54 c6 54
+    db  0c6h, 054h, 09eh, 056h
+    ; mov byte [si-062h], 056h                  ; c6 54 9e 56
+    int3                                      ; cc
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-    cbw                                       ; 98
-    push si                                   ; 56
-    mov dl, byte [bx-053h]                    ; 8a 57 ad
+    mov BH, strict byte 056h                  ; b7 56
+    test ax, 0cc57h                           ; a9 57 cc
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-    mov dl, byte [bx-076h]                    ; 8a 57 8a
+    test ax, 0a957h                           ; a9 57 a9
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-    push CS                                   ; 0e
+    sub ax, 0a957h                            ; 2d 57 a9
     push di                                   ; 57
-    mov dl, byte [bx-053h]                    ; 8a 57 ad
+    int3                                      ; cc
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-    mov dl, byte [bx+03eh]                    ; 8a 57 3e
+    test ax, 05d57h                           ; a9 57 5d
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-    lodsw                                     ; ad
+    int3                                      ; cc
     push di                                   ; 57
-_int13_harddisk:                             ; 0xf53ca LB 0x441
+_int13_harddisk:                             ; 0xf53e9 LB 0x441
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -7387,5 +7428,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 43 c2
+    call 0161ch                               ; e8 24 c2
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
@@ -7393,11 +7434,11 @@
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 24 c2
+    call 0160eh                               ; e8 05 c2
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 053f9h                           ; 72 05
+    jc short 05418h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05417h                           ; 72 1e
+    jc short 05436h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7409,7 +7450,7 @@
     push 0066dh                               ; 68 6d 06
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 fc c4
+    call 01922h                               ; e8 f2 c4
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 057c8h                           ; e9 b1 03
+    jmp near 057e7h                           ; e9 b1 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7420,5 +7461,5 @@
     mov byte [bp-002h], dl                    ; 88 56 fe
     cmp dl, 010h                              ; 80 fa 10
-    jc short 05440h                           ; 72 10
+    jc short 0545fh                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -7427,20 +7468,20 @@
     push 0065eh                               ; 68 5e 06
     push 00698h                               ; 68 98 06
-    jmp short 0540ch                          ; eb cc
+    jmp short 0542bh                          ; 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 057adh                          ; 0f 87 60 03
+    jnbe near 057cch                          ; 0f 87 60 03
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+05398h]                   ; 2e ff a7 98 53
+    jmp word [cs:bx+053b7h]                   ; 2e ff a7 b7 53
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc near 05463h                           ; 0f 83 07 00
+    jnc near 05482h                           ; 0f 83 07 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01c0ch                               ; e8 a9 c7
+    call 01c21h                               ; e8 9f c7
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 9c c1
+    call 0160eh                               ; e8 7d c1
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
@@ -7449,5 +7490,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 7d c1
+    call 01600h                               ; e8 5e c1
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
@@ -7460,8 +7501,8 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 6e c1
+    call 0160eh                               ; e8 4f c1
     test cl, cl                               ; 84 c9
-    je short 05467h                           ; 74 c3
-    jmp near 057e4h                           ; e9 3d 03
+    je short 05486h                           ; 74 c3
+    jmp near 05803h                           ; e9 3d 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -7483,11 +7524,11 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, 00080h                            ; 3d 80 00
-    jnbe short 054e2h                         ; 77 04
+    jnbe short 05501h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 05505h                          ; 75 23
-    mov bx, 00da6h                            ; bb a6 0d
+    jne short 05524h                          ; 75 23
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 df c3
+    call 018e1h                               ; e8 d5 c3
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7496,7 +7537,7 @@
     push 006cah                               ; 68 ca 06
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 0e c4
+    call 01922h                               ; e8 04 c4
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 057c8h                           ; e9 c3 02
+    jmp near 057e7h                           ; e9 c3 02
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -7509,14 +7550,14 @@
     mov word [bp-00ah], dx                    ; 89 56 f6
     cmp di, ax                                ; 39 c7
-    jnc short 05532h                          ; 73 0c
+    jnc short 05551h                          ; 73 0c
     cmp cx, word [bp-008h]                    ; 3b 4e f8
-    jbe short 05532h                          ; 76 07
+    jbe short 05551h                          ; 76 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp ax, dx                                ; 39 d0
-    jbe short 05560h                          ; 76 2e
-    mov bx, 00da6h                            ; bb a6 0d
+    jbe short 0557fh                          ; 76 2e
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 8f c3
+    call 018e1h                               ; e8 85 c3
     push dword [bp-008h]                      ; 66 ff 76 f8
     push di                                   ; 57
@@ -7530,12 +7571,12 @@
     push 006f2h                               ; 68 f2 06
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 b3 c3
+    call 01922h                               ; e8 a9 c3
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 057c8h                           ; e9 68 02
+    jmp near 057e7h                           ; e9 68 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00004h                ; 3d 04 00
-    jne short 0556eh                          ; 75 03
-    jmp near 05463h                           ; e9 f5 fe
+    jne short 0558dh                          ; 75 03
+    jmp near 05482h                           ; e9 f5 fe
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     imul bx, bx, strict byte 00018h           ; 6b db 18
@@ -7543,15 +7584,15 @@
     add bx, si                                ; 01 f3
     cmp cx, word [es:bx+02ch]                 ; 26 3b 4f 2c
-    jne short 0558fh                          ; 75 0f
+    jne short 055aeh                          ; 75 0f
     mov ax, word [es:bx+030h]                 ; 26 8b 47 30
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    jne short 0558fh                          ; 75 06
+    jne short 055aeh                          ; 75 06
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 055bfh                           ; 72 30
+    jc short 055deh                           ; 72 30
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 7f 3c
+    call 09439h                               ; e8 80 3e
     xor bx, bx                                ; 31 db
     add ax, word [bp-008h]                    ; 03 46 f8
@@ -7559,5 +7600,5 @@
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 70 3c
+    call 09439h                               ; e8 71 3e
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
@@ -7612,9 +7653,9 @@
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je near 05463h                            ; 0f 84 13 fe
-    mov bx, 00da6h                            ; bb a6 0d
+    je near 05482h                            ; 0f 84 13 fe
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 71 c2
+    call 018e1h                               ; e8 67 c2
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -7625,19 +7666,19 @@
     push 00739h                               ; 68 39 07
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 9c c2
+    call 01922h                               ; e8 92 c2
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 057d0h                           ; e9 51 01
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 057efh                           ; e9 51 01
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 42 c2
+    call 018e1h                               ; e8 38 c2
     push 0075ah                               ; 68 5a 07
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 7b c2
+    call 01922h                               ; e8 71 c2
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 05463h                           ; e9 cb fd
+    jmp near 05482h                           ; e9 cb fd
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -7682,5 +7723,5 @@
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 05463h                           ; e9 55 fd
+    jmp near 05482h                           ; e9 55 fd
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     cwd                                       ; 99
@@ -7698,10 +7739,10 @@
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 05733h                          ; 75 03
-    jmp near 05463h                           ; e9 30 fd
+    jne short 05752h                          ; 75 03
+    jmp near 05482h                           ; e9 30 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 057d0h                           ; e9 92 00
+    jmp near 057efh                           ; e9 92 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -7717,8 +7758,8 @@
     mov bx, word [bp-008h]                    ; 8b 5e f8
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 b1 3a
+    call 09439h                               ; e8 b2 3c
     mov bx, word [bp-006h]                    ; 8b 5e fa
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 a9 3a
+    call 09439h                               ; e8 aa 3c
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-00eh], dx                    ; 89 56 f2
@@ -7729,9 +7770,9 @@
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05467h                           ; e9 dd fc
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 05486h                           ; e9 dd fc
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 37 c1
+    call 018e1h                               ; e8 2d c1
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7740,11 +7781,11 @@
     push 00774h                               ; 68 74 07
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 66 c1
+    call 01922h                               ; e8 5c c1
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05463h                           ; e9 b6 fc
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 05482h                           ; e9 b6 fc
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 14 c1
+    call 018e1h                               ; e8 0a c1
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7752,5 +7793,5 @@
     push 0065eh                               ; 68 5e 06
     push 007a7h                               ; 68 a7 07
-    jmp near 054fah                           ; e9 32 fd
+    jmp near 05519h                           ; e9 32 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -7762,28 +7803,24 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 2a be
+    call 0160eh                               ; e8 0b be
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05476h                           ; e9 8b fc
-    cmpsb                                     ; a6
+    jmp near 05495h                           ; e9 8b fc
+    lds bx, [bx+si-023h]                      ; c5 58 dd
     pop ax                                    ; 58
-    mov si, 0be58h                            ; be 58 be
+    fstp qword [bx+si-023h]                   ; dd 58 dd
     pop ax                                    ; 58
-    mov si, 06d58h                            ; be 58 6d
+    mov [si+020h], ds                         ; 8c 5c 20
+    pop dx                                    ; 5a
+    fstp qword [bx+si+026h]                   ; dd 58 26
+    pop dx                                    ; 5a
+    mov [si-025h], ds                         ; 8c 5c db
     pop sp                                    ; 5c
-    add word [bp+si-042h], bx                 ; 01 5a be
-    pop ax                                    ; 58
-    pop ES                                    ; 07
-    pop dx                                    ; 5a
-    insw                                      ; 6d
+    fistp dword [si-025h]                     ; db 5c db
     pop sp                                    ; 5c
-    mov sp, 0bc5ch                            ; bc 5c bc
+    fistp dword [si-05dh]                     ; db 5c a3
     pop sp                                    ; 5c
-    mov sp, 0bc5ch                            ; bc 5c bc
+    fistp dword [si-025h]                     ; db 5c db
     pop sp                                    ; 5c
-    test byte [si-044h], bl                   ; 84 5c bc
-    pop sp                                    ; 5c
-    db  0bch
-    pop sp                                    ; 5c
-_int13_harddisk_ext:                         ; 0xf580b LB 0x4cc
+_int13_harddisk_ext:                         ; 0xf582a LB 0x4cc
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -7791,9 +7828,9 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 02 be
+    call 0161ch                               ; e8 e3 bd
     mov word [bp-014h], ax                    ; 89 46 ec
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 f6 bd
+    call 0161ch                               ; e8 d7 bd
     mov si, 00122h                            ; be 22 01
     mov word [bp-026h], ax                    ; 89 46 da
@@ -7801,11 +7838,11 @@
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 d7 bd
+    call 0160eh                               ; e8 b8 bd
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05846h                           ; 72 05
+    jc short 05865h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05864h                           ; 72 1e
+    jc short 05883h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7817,7 +7854,7 @@
     push 0066dh                               ; 68 6d 06
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 af c0
+    call 01922h                               ; e8 a5 c0
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05c9ah                           ; e9 36 04
+    jmp near 05cb9h                           ; e9 36 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
@@ -7827,5 +7864,5 @@
     mov cl, byte [es:bx+0011fh]               ; 26 8a 8f 1f 01
     cmp cl, 010h                              ; 80 f9 10
-    jc short 0588ah                           ; 72 10
+    jc short 058a9h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -7834,14 +7871,14 @@
     push 007d5h                               ; 68 d5 07
     push 00698h                               ; 68 98 06
-    jmp short 05859h                          ; eb cf
+    jmp short 05878h                          ; eb cf
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     sub bx, strict byte 00041h                ; 83 eb 41
     cmp bx, strict byte 0000fh                ; 83 fb 0f
-    jnbe near 05cbch                          ; 0f 87 22 04
+    jnbe near 05cdbh                          ; 0f 87 22 04
     add bx, bx                                ; 01 db
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
-    jmp word [cs:bx+057ebh]                   ; 2e ff a7 eb 57
+    jmp word [cs:bx+0580ah]                   ; 2e ff a7 0a 58
     mov word [bp+010h], 0aa55h                ; c7 46 10 55 aa
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -7850,5 +7887,5 @@
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 05c71h                           ; e9 b3 03
+    jmp near 05c90h                           ; e9 b3 03
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov es, [bp+004h]                         ; 8e 46 04
@@ -7865,5 +7902,5 @@
     mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
     or ax, word [bp-00ah]                     ; 0b 46 f6
-    je short 058ffh                           ; 74 11
+    je short 0591eh                           ; 74 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7872,5 +7909,5 @@
     push 007e8h                               ; 68 e8 07
     push strict byte 00007h                   ; 6a 07
-    jmp short 05949h                          ; eb 4a
+    jmp short 05968h                          ; eb 4a
     mov es, [bp-010h]                         ; 8e 46 f0
     mov ax, word [es:di+008h]                 ; 26 8b 45 08
@@ -7884,13 +7921,13 @@
     mov ch, byte [es:bx+01eh]                 ; 26 8a 6f 1e
     cmp ax, word [es:bx+034h]                 ; 26 3b 47 34
-    jnbe short 0592fh                         ; 77 0b
-    jne short 05952h                          ; 75 2c
+    jnbe short 0594eh                         ; 77 0b
+    jne short 05971h                          ; 75 2c
     mov dx, word [bp-00ah]                    ; 8b 56 f6
     cmp dx, word [es:bx+032h]                 ; 26 3b 57 32
-    jc short 05952h                           ; 72 23
-    mov bx, 00da6h                            ; bb a6 0d
+    jc short 05971h                           ; 72 23
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 92 bf
+    call 018e1h                               ; e8 88 bf
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -7899,14 +7936,14 @@
     push 00811h                               ; 68 11 08
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 c1 bf
+    call 01922h                               ; e8 b7 bf
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05c9ah                           ; e9 48 03
+    jmp near 05cb9h                           ; 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 05c6dh                            ; 0f 84 0b 03
+    je near 05c8ch                            ; 0f 84 0b 03
     cmp dx, strict byte 00047h                ; 83 fa 47
-    je near 05c6dh                            ; 0f 84 04 03
+    je near 05c8ch                            ; 0f 84 04 03
     mov es, [bp-026h]                         ; 8e 46 da
     db  066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h
@@ -7940,9 +7977,9 @@
     mov word [es:di+002h], ax                 ; 26 89 45 02
     test dl, dl                               ; 84 d2
-    je near 05c6dh                            ; 0f 84 97 02
-    mov bx, 00da6h                            ; bb a6 0d
+    je near 05c8ch                            ; 0f 84 97 02
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 eb be
+    call 018e1h                               ; e8 e1 be
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
@@ -7951,12 +7988,12 @@
     push 00739h                               ; 68 39 07
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 1a bf
+    call 01922h                               ; e8 10 bf
     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 05ca2h                           ; e9 a1 02
+    jmp near 05cc1h                           ; e9 a1 02
     or ah, 0b2h                               ; 80 cc b2
-    jmp near 05ca2h                           ; e9 9b 02
+    jmp near 05cc1h                           ; e9 9b 02
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
@@ -7968,6 +8005,6 @@
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 05c9ah                            ; 0f 82 76 02
-    jc near 05aabh                            ; 0f 82 83 00
+    jc near 05cb9h                            ; 0f 82 76 02
+    jc near 05acah                            ; 0f 82 83 00
     movzx ax, cl                              ; 0f b6 c1
     imul ax, ax, strict byte 00018h           ; 6b c0 18
@@ -8007,5 +8044,5 @@
     ; mov dword [es:di+014h], strict dword 000000000h ; 66 26 c7 45 14 00 00 00 00
     cmp word [bp-00eh], strict byte 0001eh    ; 83 7e f2 1e
-    jc near 05bb7h                            ; 0f 82 04 01
+    jc near 05bd6h                            ; 0f 82 04 01
     mov es, [bp-004h]                         ; 8e 46 fc
     mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
@@ -8033,7 +8070,7 @@
     mov al, byte [es:di+023h]                 ; 26 8a 45 23
     test al, al                               ; 84 c0
-    jne short 05b09h                          ; 75 04
+    jne short 05b28h                          ; 75 04
     xor dx, dx                                ; 31 d2
-    jmp short 05b0ch                          ; eb 03
+    jmp short 05b2bh                          ; eb 03
     mov dx, strict word 00008h                ; ba 08 00
     or dl, 010h                               ; 80 ca 10
@@ -8050,7 +8087,7 @@
     or word [bp-008h], dx                     ; 09 56 f8
     cmp AL, strict byte 003h                  ; 3c 03
-    jne short 05b32h                          ; 75 05
+    jne short 05b51h                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 05b34h                          ; eb 02
+    jmp short 05b53h                          ; eb 02
     xor ax, ax                                ; 31 c0
     or word [bp-008h], ax                     ; 09 46 f8
@@ -8077,19 +8114,19 @@
     xor ch, ch                                ; 30 ed
     mov byte [bp-002h], ch                    ; 88 6e fe
-    jmp short 05b98h                          ; eb 06
+    jmp short 05bb7h                          ; eb 06
     cmp byte [bp-002h], 00fh                  ; 80 7e fe 0f
-    jnc short 05badh                          ; 73 15
+    jnc short 05bcch                          ; 73 15
     movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
     add dx, 00312h                            ; 81 c2 12 03
     mov ax, word [bp-014h]                    ; 8b 46 ec
-    call 01600h                               ; e8 5a ba
+    call 01600h                               ; e8 3b ba
     add ch, al                                ; 00 c5
     inc byte [bp-002h]                        ; fe 46 fe
-    jmp short 05b92h                          ; eb e5
+    jmp short 05bb1h                          ; 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 05c6dh                            ; 0f 82 ae 00
+    jc near 05c8ch                            ; 0f 82 ae 00
     movzx ax, cl                              ; 0f b6 c1
     cwd                                       ; 99
@@ -8109,5 +8146,5 @@
     mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
     test al, al                               ; 84 c0
-    jne short 05bffh                          ; 75 09
+    jne short 05c1eh                          ; 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
@@ -8118,5 +8155,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 05c2bh                          ; 75 13
+    jne short 05c4ah                          ; 75 13
     mov word [es:bx+030h], dx                 ; 26 89 57 30
     db  066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
@@ -8133,15 +8170,15 @@
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 01eh                  ; b5 1e
-    jmp short 05c52h                          ; eb 05
+    jmp short 05c71h                          ; eb 05
     cmp ch, 040h                              ; 80 fd 40
-    jnc short 05c64h                          ; 73 12
+    jnc short 05c83h                          ; 73 12
     movzx dx, ch                              ; 0f b6 d5
     add dx, word [bp+00ah]                    ; 03 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01600h                               ; e8 a2 b9
+    call 01600h                               ; e8 83 b9
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 05c4dh                          ; eb e9
+    jmp short 05c6ch                          ; eb e9
     neg cl                                    ; f6 d9
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8151,5 +8188,5 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 92 b9
+    call 0160eh                               ; e8 73 b9
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
@@ -8157,12 +8194,12 @@
     retn                                      ; c3
     cmp ax, strict word 00006h                ; 3d 06 00
-    je short 05c6dh                           ; 74 e4
+    je short 05c8ch                           ; 74 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 05c9ah                           ; 72 0c
-    jbe short 05c6dh                          ; 76 dd
+    jc short 05cb9h                           ; 72 0c
+    jbe short 05c8ch                          ; 76 dd
     cmp ax, strict word 00003h                ; 3d 03 00
-    jc short 05c9ah                           ; 72 05
+    jc short 05cb9h                           ; 72 05
     cmp ax, strict word 00004h                ; 3d 04 00
-    jbe short 05c6dh                          ; 76 d3
+    jbe short 05c8ch                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -8174,11 +8211,11 @@
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 58 b9
+    call 0160eh                               ; e8 39 b9
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 05c80h                          ; eb c4
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp short 05c9fh                          ; eb c4
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 05 bc
+    call 018e1h                               ; e8 fb bb
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
@@ -8186,6 +8223,6 @@
     push 007d5h                               ; 68 d5 07
     push 007a7h                               ; 68 a7 07
-    jmp near 05947h                           ; e9 70 fc
-_int14_function:                             ; 0xf5cd7 LB 0x155
+    jmp near 05966h                           ; e9 70 fc
+_int14_function:                             ; 0xf5cf6 LB 0x155
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -8195,5 +8232,5 @@
     add dx, dx                                ; 01 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 35 b9
+    call 0161ch                               ; e8 16 b9
     mov si, ax                                ; 89 c6
     mov bx, ax                                ; 89 c3
@@ -8201,21 +8238,21 @@
     add dx, strict byte 0007ch                ; 83 c2 7c
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 09 b9
+    call 01600h                               ; e8 ea b8
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc near 05e22h                           ; 0f 83 21 01
+    jnc near 05e41h                           ; 0f 83 21 01
     test si, si                               ; 85 f6
-    jbe near 05e22h                           ; 0f 86 1b 01
+    jbe near 05e41h                           ; 0f 86 1b 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 05d1fh                           ; 72 11
-    jbe short 05d73h                          ; 76 63
+    jc short 05d3eh                           ; 72 11
+    jbe short 05d92h                          ; 76 63
     cmp AL, strict byte 003h                  ; 3c 03
-    je near 05e0bh                            ; 0f 84 f5 00
+    je near 05e2ah                            ; 0f 84 f5 00
     cmp AL, strict byte 002h                  ; 3c 02
-    je near 05dc1h                            ; 0f 84 a5 00
-    jmp near 05e1ch                           ; e9 fd 00
+    je near 05de0h                            ; 0f 84 a5 00
+    jmp near 05e3bh                           ; e9 fd 00
     test al, al                               ; 84 c0
-    jne near 05e1ch                           ; 0f 85 f7 00
+    jne near 05e3bh                           ; 0f 85 f7 00
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
@@ -8249,5 +8286,5 @@
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 05dfdh                           ; e9 97 00
+    jmp near 05e1ch                           ; e9 97 00
     mov AL, strict byte 017h                  ; b0 17
     mov dx, bx                                ; 89 da
@@ -8256,8 +8293,8 @@
     mov AL, strict byte 004h                  ; b0 04
     out DX, AL                                ; ee
-    jmp short 05d48h                          ; eb d5
+    jmp short 05d67h                          ; eb d5
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 a0 b8
+    call 0161ch                               ; e8 81 b8
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
@@ -8267,18 +8304,18 @@
     and ax, strict word 00060h                ; 25 60 00
     cmp ax, strict word 00060h                ; 3d 60 00
-    je short 05da3h                           ; 74 17
+    je short 05dc2h                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 05da3h                           ; 74 13
+    je short 05dc2h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 83 b8
+    call 0161ch                               ; e8 64 b8
     cmp ax, si                                ; 39 f0
-    je short 05d7eh                           ; 74 e1
+    je short 05d9dh                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 05d7eh                          ; eb db
+    jmp short 05d9dh                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 05dadh                           ; 74 06
+    je short 05dcch                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
@@ -8290,11 +8327,11 @@
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 05dfdh                          ; 75 43
+    jne short 05e1ch                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 05dfdh                          ; eb 3c
+    jmp short 05e1ch                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 52 b8
+    call 0161ch                               ; e8 33 b8
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
@@ -8303,18 +8340,18 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05dedh                          ; 75 17
+    jne short 05e0ch                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 05dedh                           ; 74 13
+    je short 05e0ch                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 39 b8
+    call 0161ch                               ; e8 1a b8
     cmp ax, si                                ; 39 f0
-    je short 05dcch                           ; 74 e5
+    je short 05debh                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 05dcch                          ; eb df
+    jmp short 05debh                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 05e03h                           ; 74 12
+    je short 05e22h                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
@@ -8324,10 +8361,10 @@
     mov byte [bp+012h], al                    ; 88 46 12
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 05e26h                          ; eb 23
+    jmp short 05e45h                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05dbch                          ; eb b1
+    jmp short 05ddbh                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
@@ -8339,7 +8376,7 @@
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05dfah                          ; eb de
+    jmp short 05e19h                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 05e26h                          ; eb 04
+    jmp short 05e45h                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -8347,5 +8384,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf5e2c LB 0x2c
+set_enable_a20_:                             ; 0xf5e4b LB 0x2c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -8360,8 +8397,8 @@
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 05e45h                           ; 74 05
+    je short 05e64h                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 05e48h                          ; eb 03
+    jmp short 05e67h                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
@@ -8376,5 +8413,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf5e58 LB 0x8c
+set_e820_range_:                             ; 0xf5e77 LB 0x8c
     push si                                   ; 56
     push bp                                   ; 55
@@ -8405,5 +8442,5 @@
     retn 0000ah                               ; c2 0a 00
     in AL, DX                                 ; ec
-    jmp near 0208bh                           ; e9 d8 c1
+    jmp near 020aah                           ; e9 d8 c1
     sar byte [bx-06f6fh], 089h                ; c0 bf 91 90 89
     mov byte [bx+05283h], al                  ; 88 87 83 52
@@ -8411,25 +8448,26 @@
     inc cx                                    ; 41
     and AL, strict byte 000h                  ; 24 00
-    and word [bp+di+023h], strict byte 0005fh ; 83 63 23 5f
-    db  036h, 05fh
-    ; ss pop di                                 ; 36 5f
-    retf                                      ; cb
+    mov byte [04263h], AL                     ; a2 63 42
     pop di                                    ; 5f
-    rcr word [bx-02ah], 1                     ; d1 5f d6
+    push bp                                   ; 55
     pop di                                    ; 5f
-    fistp dword [bx+07dh]                     ; db 5f 7d
+    jmp far 0f55fh:0f05fh                     ; ea 5f f0 5f f5
+    pop di                                    ; 5f
+    cli                                       ; fa
+    pop di                                    ; 5f
+    pushfw                                    ; 9c
     pushaw                                    ; 60
-    sbb ah, byte [bp+si+040h]                 ; 1a 62 40
+    cmp word [bp+si+05fh], sp                 ; 39 62 5f
     db  062h
-    les bx, [bx-03ch]                         ; c4 5f c4
+    jcxz 05f54h                               ; e3 5f
+    jcxz 05f56h                               ; e3 5f
+    sub AL, strict byte 063h                  ; 2c 63
+    push sp                                   ; 54
+    arpl word [bx+063h], sp                   ; 63 67 63
+    jbe short 05f62h                          ; 76 63
+    db  0eah
     pop di                                    ; 5f
-    or ax, 03563h                             ; 0d 63 35
-    arpl word [bx+si+063h], cx                ; 63 48 63
-    push di                                   ; 57
-    arpl bx, cx                               ; 63 cb
-    pop di                                    ; 5f
-    pop si                                    ; 5e
-    db  063h
-_int15_function:                             ; 0xf5ee4 LB 0x4cd
+    jnl short 05f66h                          ; 7d 63
+_int15_function:                             ; 0xf5f03 LB 0x4cd
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -8441,13 +8479,13 @@
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe near 06383h                          ; 0f 87 8b 04
+    jnbe near 063a2h                          ; 0f 87 8b 04
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00012h                ; b9 12 00
-    mov di, 05eafh                            ; bf af 5e
+    mov di, 05eceh                            ; bf ce 5e
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+05ec0h]               ; 2e 8b b5 c0 5e
+    mov si, word [cs:di+05edfh]               ; 2e 8b b5 df 5e
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -8462,28 +8500,28 @@
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    jne near 06383h                           ; 0f 85 54 04
+    jne near 063a2h                           ; 0f 85 54 04
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 0632ch                           ; e9 f6 03
+    jmp near 0634bh                           ; e9 f6 03
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 05f4bh                           ; 72 0e
-    jbe short 05f5fh                          ; 76 20
+    jc short 05f6ah                           ; 72 0e
+    jbe short 05f7eh                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 05f8ch                           ; 74 48
+    je short 05fabh                           ; 74 48
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 05f6fh                           ; 74 26
-    jmp short 05f99h                          ; eb 4e
+    je short 05f8eh                           ; 74 26
+    jmp short 05fb8h                          ; eb 4e
     test ax, ax                               ; 85 c0
-    jne short 05f99h                          ; 75 4a
+    jne short 05fb8h                          ; 75 4a
     xor ax, ax                                ; 31 c0
-    call 05e2ch                               ; e8 d8 fe
+    call 05e4bh                               ; e8 d8 fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 05fc4h                           ; e9 65 00
+    jmp near 05fe3h                           ; e9 65 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 05e2ch                               ; e8 c7 fe
+    call 05e4bh                               ; e8 c7 fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 05fc4h                           ; e9 55 00
+    jmp near 05fe3h                           ; e9 55 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
@@ -8497,13 +8535,13 @@
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
-    jmp near 05fc4h                           ; e9 38 00
+    jmp near 05fe3h                           ; 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 05fc4h                           ; e9 2b 00
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 05fe3h                           ; e9 2b 00
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 28 b9
+    call 018e1h                               ; e8 1e b9
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -8511,5 +8549,5 @@
     push 00836h                               ; 68 36 08
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 5b b9
+    call 01922h                               ; e8 51 b9
     add sp, strict byte 00006h                ; 83 c4 06
     or byte [bp+018h], 001h                   ; 80 4e 18 01
@@ -8524,36 +8562,36 @@
     retn                                      ; c3
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 06077h                           ; e9 a6 00
+    jmp near 06096h                           ; e9 a6 00
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 05fc4h                          ; eb ee
+    jmp short 05fe3h                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 05fc1h                          ; eb e6
+    jmp short 05fe0h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    je short 0604dh                           ; 74 6c
+    je short 0606ch                           ; 74 6c
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 16 b6
+    call 01600h                               ; e8 f7 b5
     test AL, strict byte 001h                 ; a8 01
-    jne near 06323h                           ; 0f 85 33 03
+    jne near 06342h                           ; 0f 85 33 03
     mov bx, strict word 00001h                ; bb 01 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 12 b6
+    call 0160eh                               ; e8 f3 b5
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 22 b6
+    call 0162ah                               ; e8 03 b6
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 16 b6
+    call 0162ah                               ; e8 f7 b5
     mov bx, word [bp+00eh]                    ; 8b 5e 0e
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 0a b6
+    call 0162ah                               ; e8 eb b5
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, 0009eh                            ; ba 9e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0162ah                               ; e8 fe b5
+    call 0162ah                               ; e8 df b5
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
@@ -8564,21 +8602,21 @@
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 1d b6
+    call 0165ch                               ; e8 fe b5
     or AL, strict byte 040h                   ; 0c 40
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01670h                               ; e8 26 b6
-    jmp near 05fc4h                           ; e9 77 ff
+    call 01679h                               ; e8 10 b6
+    jmp near 05fe3h                           ; e9 77 ff
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 0606bh                          ; 75 19
+    jne short 0608ah                          ; 75 19
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 b1 b5
+    call 0160eh                               ; e8 92 b5
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 f5 b5
+    call 0165ch                               ; e8 d6 b5
     and AL, strict byte 0bfh                  ; 24 bf
-    jmp short 06041h                          ; eb d6
+    jmp short 06060h                          ; eb d6
     mov word [bp+018h], bx                    ; 89 5e 18
     mov ax, dx                                ; 89 d0
@@ -8588,8 +8626,8 @@
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 05fc4h                           ; e9 47 ff
+    jmp near 05fe3h                           ; e9 47 ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 05e2ch                               ; e8 a8 fd
+    call 05e4bh                               ; e8 a8 fd
     mov di, ax                                ; 89 c7
     mov ax, word [bp+014h]                    ; 8b 46 14
@@ -8601,5 +8639,5 @@
     mov byte [bp-006h], dl                    ; 88 56 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 060a3h                          ; 73 05
+    jnc short 060c2h                          ; 73 05
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
@@ -8609,50 +8647,50 @@
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0002fh                ; bb 2f 00
-    call 0162ah                               ; e8 78 b5
+    call 0162ah                               ; e8 59 b5
     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 0162ah                               ; e8 6a b5
+    call 0162ah                               ; e8 4b b5
     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 0160eh                               ; e8 3e b5
+    call 0160eh                               ; e8 1f b5
     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 0160eh                               ; e8 2f b5
+    call 0160eh                               ; e8 10 b5
     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 0162ah                               ; e8 3d b5
+    call 0162ah                               ; e8 1e b5
     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 0162ah                               ; e8 2e b5
+    call 0162ah                               ; e8 0f b5
     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 0162ah                               ; e8 20 b5
+    call 0162ah                               ; e8 01 b5
     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 0160eh                               ; e8 f5 b4
+    call 0160eh                               ; e8 d6 b4
     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 0160eh                               ; e8 e6 b4
+    call 0160eh                               ; e8 c7 b4
     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 0162ah                               ; e8 f4 b4
+    call 0162ah                               ; e8 d5 b4
     mov ax, ss                                ; 8c d0
     mov cx, ax                                ; 89 c1
@@ -8664,25 +8702,25 @@
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0162ah                               ; e8 d8 b4
+    call 0162ah                               ; e8 b9 b4
     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 0162ah                               ; e8 ca b4
+    call 0162ah                               ; e8 ab b4
     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 0160eh                               ; e8 9e b4
+    call 0160eh                               ; e8 7f b4
     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 0160eh                               ; e8 8f b4
+    call 0160eh                               ; e8 70 b4
     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 0162ah                               ; e8 9d b4
+    call 0162ah                               ; e8 7e b4
     mov si, word [bp+006h]                    ; 8b 76 06
     mov es, [bp+014h]                         ; 8e 46 14
@@ -8695,5 +8733,5 @@
     mov word [00467h], sp                     ; 89 26 67 04
     mov [00469h], ss                          ; 8c 16 69 04
-    call 061a9h                               ; e8 00 00
+    call 061c8h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 0001bh                ; 83 c7 1b
@@ -8718,5 +8756,5 @@
     cld                                       ; fc
     rep movsw                                 ; f3 a5
-    call 061ddh                               ; e8 00 00
+    call 061fch                               ; e8 00 00
     pop ax                                    ; 58
     push 0f000h                               ; 68 00 f0
@@ -8739,51 +8777,51 @@
     pop DS                                    ; 1f
     mov ax, di                                ; 89 f8
-    call 05e2ch                               ; e8 1e fc
+    call 05e4bh                               ; 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 05fc4h                           ; e9 aa fd
+    jmp near 05fe3h                           ; e9 aa fd
     mov ax, strict word 00031h                ; b8 31 00
-    call 0165ch                               ; e8 3c b4
+    call 0165ch                               ; e8 1d b4
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 0165ch                               ; e8 2f b4
+    call 0165ch                               ; e8 10 b4
     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 06213h                          ; 76 da
+    jbe short 06232h                          ; 76 da
     mov word [bp+012h], strict word 0ffc0h    ; c7 46 12 c0 ff
-    jmp short 06213h                          ; eb d3
+    jmp short 06232h                          ; eb d3
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 05e2ch                               ; e8 e5 fb
+    call 05e4bh                               ; 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 0162ah                               ; e8 d4 b3
+    call 0162ah                               ; e8 b5 b3
     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 0162ah                               ; e8 c6 b3
+    call 0162ah                               ; e8 a7 b3
     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 0160eh                               ; e8 9b b3
+    call 0160eh                               ; e8 7c b3
     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 0160eh                               ; e8 8c b3
+    call 0160eh                               ; e8 6d b3
     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 0162ah                               ; e8 9a b3
+    call 0162ah                               ; e8 7b b3
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
@@ -8815,5 +8853,5 @@
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 062d1h                               ; e8 00 00
+    call 062f0h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
@@ -8843,12 +8881,12 @@
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 05fc4h                           ; e9 b7 fc
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 05fe3h                           ; e9 b7 fc
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 b4 b5
+    call 018e1h                               ; e8 aa b5
     push 00876h                               ; 68 76 08
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 ed b5
+    call 01922h                               ; e8 e3 b5
     add sp, strict byte 00004h                ; 83 c4 04
     or byte [bp+018h], 001h                   ; 80 4e 18 01
@@ -8857,51 +8895,52 @@
     or ah, 086h                               ; 80 cc 86
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 05fc4h                           ; e9 8f fc
+    jmp near 05fe3h                           ; 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 05fc4h                           ; e9 7c fc
+    jmp near 05fe3h                           ; e9 7c fc
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 cb b2
+    call 0161ch                               ; e8 ac b2
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 06213h                           ; e9 bc fe
+    jmp near 06232h                           ; e9 bc fe
     push 008a5h                               ; 68 a5 08
     push strict byte 00008h                   ; 6a 08
-    jmp short 0631dh                          ; eb bf
+    jmp short 0633ch                          ; eb bf
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 06383h                          ; 75 1f
+    jne short 063a2h                          ; 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 0637ch                           ; 72 0b
+    jc short 0639bh                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 0637ch                         ; 77 06
+    jnbe short 0639bh                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 05fc4h                           ; e9 48 fc
+    jmp near 05fe3h                           ; e9 48 fc
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 05fc4h                           ; e9 41 fc
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 05fe3h                           ; e9 41 fc
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 3e b5
+    call 018e1h                               ; e8 34 b5
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     push 008bch                               ; 68 bc 08
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 71 b5
+    call 01922h                               ; e8 67 b5
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp short 06323h                          ; eb 82
-    pop dx                                    ; 5a
-    db  065h, 07ch, 065h
-    ; gs jl short 0640ah                        ; 65 7c 65
-    lahf                                      ; 9f
-    sal word [gs:di-01fh], 065h               ; 65 c1 65 e1 65
-    add ah, byte [bp+041h]                    ; 02 66 41
-    insd                                      ; 66 6d
+    jmp short 06342h                          ; eb 82
+    jns short 06427h                          ; 79 65
+    wait                                      ; 9b
+    db  065h, 0beh, 065h, 0e0h
+    ; gs mov si, 0e065h                         ; 65 be 65 e0
+    add byte [gs:bp+021h], ah                 ; 65 00 66 21
+    pushad                                    ; 66 60
     db  066h
-_int15_function32:                           ; 0xf63b1 LB 0x37e
+    db  08ch
+    db  066h
+_int15_function32:                           ; 0xf63d0 LB 0x37e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -8915,9 +8954,9 @@
     xor ah, ah                                ; 30 e4
     cmp dx, 000e8h                            ; 81 fa e8 00
-    je near 0647eh                            ; 0f 84 ad 00
+    je near 0649dh                            ; 0f 84 ad 00
     cmp dx, 000d0h                            ; 81 fa d0 00
-    je short 06419h                           ; 74 42
+    je short 06438h                           ; 74 42
     cmp dx, 00086h                            ; 81 fa 86 00
-    jne near 066ffh                           ; 0f 85 20 03
+    jne near 0671eh                           ; 0f 85 20 03
     sti                                       ; fb
     mov ax, word [bp+01ch]                    ; 8b 46 1c
@@ -8938,31 +8977,31 @@
     db  066h, 00bh, 0c9h
     ; or ecx, ecx                               ; 66 0b c9
-    je near 06416h                            ; 0f 84 0e 00
+    je near 06435h                            ; 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 06408h                           ; 74 f8
+    je short 06427h                           ; 74 f8
     db  08ah, 0e0h
     ; mov ah, al                                ; 8a e0
     dec ecx                                   ; 66 49
-    jne short 06408h                          ; 75 f2
-    jmp near 06729h                           ; e9 10 03
+    jne short 06427h                          ; 75 f2
+    jmp near 06748h                           ; e9 10 03
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jne near 066ffh                           ; 0f 85 df 02
+    jne near 0671eh                           ; 0f 85 df 02
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne near 066ffh                           ; 0f 85 d6 02
+    jne near 0671eh                           ; 0f 85 d6 02
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne near 066ffh                           ; 0f 85 cd 02
+    jne near 0671eh                           ; 0f 85 cd 02
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne near 066ffh                           ; 0f 85 c4 02
+    jne near 0671eh                           ; 0f 85 c4 02
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne near 066ffh                           ; 0f 85 bb 02
+    jne near 0671eh                           ; 0f 85 bb 02
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne near 066ffh                           ; 0f 85 b1 02
+    jne near 0671eh                           ; 0f 85 b1 02
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    jne near 066ffh                           ; 0f 85 a7 02
+    jne near 0671eh                           ; 0f 85 a7 02
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, word [bp+014h]                    ; 8b 46 14
@@ -8975,16 +9014,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 06729h                           ; e9 ab 02
+    jmp near 06748h                           ; e9 ab 02
     cmp ax, strict word 00020h                ; 3d 20 00
-    je short 0648dh                           ; 74 0a
+    je short 064ach                           ; 74 0a
     cmp ax, strict word 00001h                ; 3d 01 00
-    je near 066b4h                            ; 0f 84 2a 02
-    jmp near 066ffh                           ; e9 72 02
+    je near 066d3h                            ; 0f 84 2a 02
+    jmp near 0671eh                           ; e9 72 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne near 066ffh                           ; 0f 85 69 02
+    jne near 0671eh                           ; 0f 85 69 02
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne near 066ffh                           ; 0f 85 60 02
+    jne near 0671eh                           ; 0f 85 60 02
     mov ax, strict word 00035h                ; b8 35 00
-    call 0165ch                               ; e8 b7 b1
+    call 0165ch                               ; e8 98 b1
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
@@ -8992,7 +9031,7 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 064adh                               ; e2 fa
+    loop 064cch                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 0165ch                               ; e8 a3 b1
+    call 0165ch                               ; e8 84 b1
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
@@ -9002,10 +9041,10 @@
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 064d3h                           ; 72 06
-    jne short 06500h                          ; 75 31
+    jc short 064f2h                           ; 72 06
+    jne short 0651fh                          ; 75 31
     test bx, bx                               ; 85 db
-    jnbe short 06500h                         ; 77 2d
+    jnbe short 0651fh                         ; 77 2d
     mov ax, strict word 00031h                ; b8 31 00
-    call 0165ch                               ; e8 83 b1
+    call 0165ch                               ; e8 64 b1
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
@@ -9013,7 +9052,7 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 064e1h                               ; e2 fa
+    loop 06500h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 0165ch                               ; e8 6f b1
+    call 0165ch                               ; e8 50 b1
     xor ah, ah                                ; 30 e4
     or bx, ax                                 ; 09 c3
@@ -9021,9 +9060,9 @@
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 064f4h                               ; e2 fa
+    loop 06513h                               ; e2 fa
     add bx, strict byte 00000h                ; 83 c3 00
     adc dx, strict byte 00010h                ; 83 d2 10
     mov ax, strict word 00062h                ; b8 62 00
-    call 0165ch                               ; e8 56 b1
+    call 0165ch                               ; e8 37 b1
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
@@ -9033,7 +9072,7 @@
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 06513h                               ; e2 f8
+    loop 06532h                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 0165ch                               ; e8 3b b1
+    call 0165ch                               ; e8 1c b1
     xor ah, ah                                ; 30 e4
     or word [bp-00ah], ax                     ; 09 46 f6
@@ -9042,10 +9081,10 @@
     mov word [bp-00ah], strict word 00000h    ; c7 46 f6 00 00
     mov ax, strict word 00063h                ; b8 63 00
-    call 0165ch                               ; e8 25 b1
+    call 0165ch                               ; e8 06 b1
     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 066ffh                          ; 0f 87 b8 01
+    jnbe near 0671eh                          ; 0f 87 b8 01
     mov si, ax                                ; 89 c6
     add si, ax                                ; 01 c6
@@ -9054,5 +9093,5 @@
     mov ax, dx                                ; 89 d0
     adc ax, strict word 0ffffh                ; 15 ff ff
-    jmp word [cs:si+063a1h]                   ; 2e ff a4 a1 63
+    jmp word [cs:si+063c0h]                   ; 2e ff a4 c0 63
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
@@ -9063,7 +9102,7 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 05e58h                               ; e8 e7 f8
+    call 05e77h                               ; e8 e7 f8
     mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00
-    jmp near 0669eh                           ; e9 22 01
+    jmp near 066bdh                           ; e9 22 01
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9074,7 +9113,7 @@
     mov bx, 0fc00h                            ; bb 00 fc
     mov cx, strict word 00009h                ; b9 09 00
-    call 05e58h                               ; e8 c4 f8
+    call 05e77h                               ; e8 c4 f8
     mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00
-    jmp near 0669eh                           ; e9 ff 00
+    jmp near 066bdh                           ; e9 ff 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9085,7 +9124,7 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 05e58h                               ; e8 a2 f8
+    call 05e77h                               ; e8 a2 f8
     mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00
-    jmp near 0669eh                           ; e9 dd 00
+    jmp near 066bdh                           ; e9 dd 00
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
@@ -9096,7 +9135,7 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 05e58h                               ; e8 82 f8
+    call 05e77h                               ; e8 82 f8
     mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00
-    jmp near 0669eh                           ; e9 bd 00
+    jmp near 066bdh                           ; e9 bd 00
     push strict byte 00003h                   ; 6a 03
     push dword 000000000h                     ; 66 6a 00
@@ -9108,7 +9147,7 @@
     mov cx, ax                                ; 89 c1
     mov ax, si                                ; 89 f0
-    call 05e58h                               ; e8 61 f8
+    call 05e77h                               ; e8 61 f8
     mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00
-    jmp near 0669eh                           ; e9 9c 00
+    jmp near 066bdh                           ; e9 9c 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9118,17 +9157,17 @@
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 05e58h                               ; e8 40 f8
+    call 05e77h                               ; e8 40 f8
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06625h                          ; 75 07
+    jne short 06644h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06639h                           ; 74 14
+    je short 06658h                           ; 74 14
     mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00
-    jmp short 0669eh                          ; eb 6f
+    jmp short 066bdh                          ; eb 6f
     mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00
-    jmp short 0669eh                          ; eb 65
+    jmp short 066bdh                          ; eb 65
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 0669eh                          ; eb 5d
+    jmp short 066bdh                          ; eb 5d
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
@@ -9138,18 +9177,18 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 05e58h                               ; e8 02 f8
+    call 05e77h                               ; e8 02 f8
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06663h                          ; 75 07
+    jne short 06682h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06665h                           ; 74 02
-    jmp short 06625h                          ; eb c0
+    je short 06684h                           ; 74 02
+    jmp short 06644h                          ; eb c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 0669eh                          ; eb 31
+    jmp short 066bdh                          ; eb 31
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06679h                          ; 75 06
+    jne short 06698h                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 0669eh                           ; 74 25
+    je short 066bdh                           ; 74 25
     push strict byte 00001h                   ; 6a 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
@@ -9164,5 +9203,5 @@
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 05e58h                               ; e8 c2 f7
+    call 05e77h                               ; e8 c2 f7
     xor ax, ax                                ; 31 c0
     mov word [bp+014h], ax                    ; 89 46 14
@@ -9171,24 +9210,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 06729h                          ; eb 75
+    jmp short 06748h                          ; eb 75
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 0165ch                               ; e8 9f af
+    call 0165ch                               ; e8 80 af
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 0165ch                               ; e8 93 af
+    call 0165ch                               ; e8 74 af
     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 066dbh                          ; 76 05
+    jbe short 066fah                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 0165ch                               ; e8 7b af
+    call 0165ch                               ; e8 5c af
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00034h                ; b8 34 00
-    call 0165ch                               ; e8 6f af
+    call 0165ch                               ; e8 50 af
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
@@ -9197,14 +9236,14 @@
     mov word [bp+020h], ax                    ; 89 46 20
     mov word [bp+014h], dx                    ; 89 56 14
-    jmp short 06729h                          ; eb 2a
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp short 06748h                          ; eb 2a
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 c2 b1
+    call 018e1h                               ; e8 b8 b1
     push word [bp+014h]                       ; ff 76 14
     push word [bp+020h]                       ; ff 76 20
     push 008bch                               ; 68 bc 08
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 f5 b1
+    call 01922h                               ; e8 eb b1
     add sp, strict byte 00008h                ; 83 c4 08
     or byte [bp+028h], 001h                   ; 80 4e 28 01
@@ -9217,5 +9256,143 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf672f LB 0x28
+_inv_op_handler:                             ; 0xf674e LB 0x195
+    push bp                                   ; 55
+    mov bp, sp                                ; 89 e5
+    push si                                   ; 56
+    push di                                   ; 57
+    push ax                                   ; 50
+    push ax                                   ; 50
+    les bx, [bp+018h]                         ; c4 5e 18
+    cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
+    jne short 06764h                          ; 75 06
+    inc word [bp+018h]                        ; ff 46 18
+    jmp near 068dch                           ; e9 78 01
+    cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
+    jne near 068d8h                           ; 0f 85 6b 01
+    mov si, 00800h                            ; be 00 08
+    xor ax, ax                                ; 31 c0
+    mov word [bp-006h], ax                    ; 89 46 fa
+    mov word [bp-008h], ax                    ; 89 46 f8
+    mov es, ax                                ; 8e c0
+    mov bx, word [es:si+02ch]                 ; 26 8b 5c 2c
+    sub bx, strict byte 00006h                ; 83 eb 06
+    mov dx, word [es:si+020h]                 ; 26 8b 54 20
+    mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
+    mov es, dx                                ; 8e c2
+    mov word [es:bx], ax                      ; 26 89 07
+    mov es, [bp-006h]                         ; 8e 46 fa
+    mov ax, word [es:si+022h]                 ; 26 8b 44 22
+    mov es, dx                                ; 8e c2
+    mov word [es:bx+002h], ax                 ; 26 89 47 02
+    mov es, [bp-006h]                         ; 8e 46 fa
+    mov ax, word [es:si+018h]                 ; 26 8b 44 18
+    mov es, dx                                ; 8e c2
+    mov word [es:bx+004h], ax                 ; 26 89 47 04
+    mov es, [bp-006h]                         ; 8e 46 fa
+    movzx bx, byte [es:si+038h]               ; 26 0f b6 5c 38
+    mov di, word [es:si+036h]                 ; 26 8b 7c 36
+    mov ax, word [es:si+024h]                 ; 26 8b 44 24
+    xor dx, dx                                ; 31 d2
+    mov cx, strict word 00004h                ; b9 04 00
+    sal ax, 1                                 ; d1 e0
+    rcl dx, 1                                 ; d1 d2
+    loop 067bdh                               ; e2 fa
+    cmp bx, dx                                ; 39 d3
+    jne short 067cbh                          ; 75 04
+    cmp di, ax                                ; 39 c7
+    je short 067d0h                           ; 74 05
+    mov word [bp-008h], strict word 00001h    ; c7 46 f8 01 00
+    mov es, [bp-006h]                         ; 8e 46 fa
+    movzx di, byte [es:si+04ah]               ; 26 0f b6 7c 4a
+    mov bx, word [es:si+048h]                 ; 26 8b 5c 48
+    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
+    xor dx, dx                                ; 31 d2
+    mov cx, strict word 00004h                ; b9 04 00
+    sal ax, 1                                 ; d1 e0
+    rcl dx, 1                                 ; d1 d2
+    loop 067e5h                               ; e2 fa
+    cmp di, dx                                ; 39 d7
+    jne short 067f3h                          ; 75 04
+    cmp bx, ax                                ; 39 c3
+    je short 067f7h                           ; 74 04
+    or byte [bp-008h], 002h                   ; 80 4e f8 02
+    push strict byte 00000h                   ; 6a 00
+    push 00800h                               ; 68 00 08
+    push strict byte 0001fh                   ; 6a 1f
+    db  08bh, 0dch
+    ; mov bx, sp                                ; 8b dc
+    lgdt [ss:bx]                              ; 36 0f 01 17
+    add sp, strict byte 00006h                ; 83 c4 06
+    mov es, [bp-006h]                         ; 8e 46 fa
+    mov ax, word [es:si+03ah]                 ; 26 8b 44 3a
+    mov word [es:si+008h], ax                 ; 26 89 44 08
+    mov ax, word [es:si+036h]                 ; 26 8b 44 36
+    mov word [es:si+00ah], ax                 ; 26 89 44 0a
+    movzx dx, byte [es:si+039h]               ; 26 0f b6 54 39
+    sal dx, 008h                              ; c1 e2 08
+    movzx ax, byte [es:si+038h]               ; 26 0f b6 44 38
+    or dx, ax                                 ; 09 c2
+    mov word [es:si+00ch], dx                 ; 26 89 54 0c
+    mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00
+    mov ax, word [es:si+04ch]                 ; 26 8b 44 4c
+    mov word [es:si], ax                      ; 26 89 04
+    mov ax, word [es:si+048h]                 ; 26 8b 44 48
+    mov word [es:si+002h], ax                 ; 26 89 44 02
+    movzx dx, byte [es:si+04bh]               ; 26 0f b6 54 4b
+    sal dx, 008h                              ; c1 e2 08
+    movzx ax, byte [es:si+04ah]               ; 26 0f b6 44 4a
+    or dx, ax                                 ; 09 c2
+    mov word [es:si+004h], dx                 ; 26 89 54 04
+    movzx ax, byte [es:si+05ch]               ; 26 0f b6 44 5c
+    mov dx, word [es:si+05ah]                 ; 26 8b 54 5a
+    push ax                                   ; 50
+    push dx                                   ; 52
+    push word [es:si+05eh]                    ; 26 ff 74 5e
+    db  08bh, 0dch
+    ; mov bx, sp                                ; 8b dc
+    lidt [ss:bx]                              ; 36 0f 01 1f
+    add sp, strict byte 00006h                ; 83 c4 06
+    mov cx, word [bp-008h]                    ; 8b 4e f8
+    mov ax, 00080h                            ; b8 80 00
+    mov ss, ax                                ; 8e d0
+    mov ax, word [ss:0001eh]                  ; 36 a1 1e 00
+    mov ds, ax                                ; 8e d8
+    mov ax, word [ss:00024h]                  ; 36 a1 24 00
+    mov es, ax                                ; 8e c0
+    smsw ax                                   ; 0f 01 e0
+    inc ax                                    ; 40
+    lmsw ax                                   ; 0f 01 f0
+    mov ax, strict word 00008h                ; b8 08 00
+    test cx, strict word 00001h               ; f7 c1 01 00
+    je near 06895h                            ; 0f 84 02 00
+    mov es, ax                                ; 8e c0
+    test cx, strict word 00002h               ; f7 c1 02 00
+    je near 068bdh                            ; 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
+    mov bx, word [word ss:00002h]             ; 36 8b 1e 02 00
+    mov word [word ss:0000ah], bx             ; 36 89 1e 0a 00
+    mov bx, word [word ss:00004h]             ; 36 8b 1e 04 00
+    mov word [word ss:0000ch], bx             ; 36 89 1e 0c 00
+    mov ds, ax                                ; 8e d8
+    mov eax, cr0                              ; 0f 20 c0
+    dec ax                                    ; 48
+    mov cr0, eax                              ; 0f 22 c0
+    mov sp, strict word 00026h                ; bc 26 00
+    popaw                                     ; 61
+    mov sp, word [word ss:0002ch]             ; 36 8b 26 2c 00
+    sub sp, strict byte 00006h                ; 83 ec 06
+    mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
+    iret                                      ; cf
+    jmp short 068dch                          ; eb 04
+    sti                                       ; fb
+    hlt                                       ; f4
+    jmp short 068d9h                          ; eb fd
+    lea sp, [bp-004h]                         ; 8d 66 fc
+    pop di                                    ; 5f
+    pop si                                    ; 5e
+    pop bp                                    ; 5d
+    retn                                      ; c3
+init_rtc_:                                   ; 0xf68e3 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9223,17 +9400,17 @@
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 01670h                               ; e8 34 af
+    call 01679h                               ; e8 89 ad
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01670h                               ; e8 2b af
+    call 01679h                               ; e8 80 ad
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 0165ch                               ; e8 11 af
+    call 0165ch                               ; e8 5d ad
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 0165ch                               ; e8 0b af
+    call 0165ch                               ; e8 57 ad
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf6757 LB 0x21
+rtc_updating_:                               ; 0xf690b LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9241,11 +9418,11 @@
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 0676fh                           ; 74 0e
+    je short 06923h                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 0165ch                               ; e8 f5 ae
+    call 0165ch                               ; e8 41 ad
     test AL, strict byte 080h                 ; a8 80
-    jne short 0675eh                          ; 75 f3
+    jne short 06912h                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 06772h                          ; eb 03
+    jmp short 06926h                          ; eb 03
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -9253,5 +9430,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int70_function:                             ; 0xf6778 LB 0xbe
+_int70_function:                             ; 0xf692c LB 0xbe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9259,57 +9436,57 @@
     push ax                                   ; 50
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 d9 ae
+    call 0165ch                               ; e8 25 ad
     mov dl, al                                ; 88 c2
     mov byte [bp-004h], al                    ; 88 46 fc
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 0165ch                               ; e8 ce ae
+    call 0165ch                               ; e8 1a ad
     mov dh, al                                ; 88 c6
     test dl, 060h                             ; f6 c2 60
-    je near 0681dh                            ; 0f 84 86 00
+    je near 069d1h                            ; 0f 84 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 0679fh                           ; 74 04
+    je short 06953h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dh, 040h                             ; f6 c6 40
-    je near 0681dh                            ; 0f 84 77 00
+    je near 069d1h                            ; 0f 84 77 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 51 ae
+    call 01600h                               ; e8 9d ac
     test al, al                               ; 84 c0
-    je short 0681dh                           ; 74 6a
+    je short 069d1h                           ; 74 6a
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01638h                               ; e8 7c ae
+    call 01638h                               ; e8 c8 ac
     test dx, dx                               ; 85 d2
-    jne short 06809h                          ; 75 49
+    jne short 069bdh                          ; 75 49
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 06809h                          ; 73 44
+    jnc short 069bdh                          ; 73 44
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 4e ae
+    call 0161ch                               ; e8 9a ac
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 43 ae
+    call 0161ch                               ; e8 8f ac
     mov cx, ax                                ; 89 c1
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 28 ae
+    call 0160eh                               ; e8 74 ac
     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 01670h                               ; e8 7c ae
+    call 01679h                               ; e8 d1 ac
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01600h                               ; e8 05 ae
+    call 01600h                               ; e8 51 ac
     or AL, strict byte 080h                   ; 0c 80
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 07 ae
-    jmp short 0681dh                          ; eb 14
+    call 0160eh                               ; e8 53 ac
+    jmp short 069d1h                          ; eb 14
     mov bx, ax                                ; 89 c3
     add bx, 0fc2fh                            ; 81 c3 2f fc
@@ -9318,22 +9495,18 @@
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0164ah                               ; e8 2d ae
-    call 0e03bh                               ; e8 1b 78
+    call 0164ah                               ; e8 79 ac
+    call 0e03bh                               ; e8 67 76
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    dec bp                                    ; 4d
-    push 06876h                               ; 68 76 68
-    wait                                      ; 9b
-    push 068cdh                               ; 68 cd 68
-    sbb AL, strict byte 069h                  ; 1c 69
-    push sp                                   ; 54
-    db  069h
-    xchg di, ax                               ; 97
-    db  069h
-    out DX, AL                                ; ee
-    db  069h
-_int1a_function:                             ; 0xf6836 LB 0x1c8
+    add word [bp+si+02ah], bp                 ; 01 6a 2a
+    push strict byte 0004fh                   ; 6a 4f
+    push strict byte 0ff81h                   ; 6a 81
+    push strict byte 0ffd0h                   ; 6a d0
+    push strict byte 00008h                   ; 6a 08
+    imul cx, word [bp+di+06bh], strict byte 0ffa2h ; 6b 4b 6b a2
+    db  06bh
+_int1a_function:                             ; 0xf69ea LB 0x1c8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9341,8 +9514,8 @@
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 06872h                          ; 0f 87 2f 00
+    jnbe near 06a26h                          ; 0f 87 2f 00
     movzx bx, al                              ; 0f b6 d8
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+06826h]                   ; 2e ff a7 26 68
+    jmp word [cs:bx+069dah]                   ; 2e ff a7 da 69
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
@@ -9375,39 +9548,39 @@
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 06872h                          ; eb d7
-    call 06757h                               ; e8 b9 fe
+    jmp short 06a26h                          ; eb d7
+    call 0690bh                               ; e8 b9 fe
     test ax, ax                               ; 85 c0
-    je short 068a4h                           ; 74 02
-    jmp short 06872h                          ; eb ce
+    je short 06a58h                           ; 74 02
+    jmp short 06a26h                          ; eb ce
     xor ax, ax                                ; 31 c0
-    call 0165ch                               ; e8 b3 ad
+    call 0165ch                               ; e8 ff ab
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 0165ch                               ; e8 aa ad
+    call 0165ch                               ; e8 f6 ab
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 0165ch                               ; e8 a1 ad
+    call 0165ch                               ; e8 ed ab
     mov bl, al                                ; 88 c3
     mov byte [bp+011h], al                    ; 88 46 11
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 96 ad
+    call 0165ch                               ; e8 e2 ab
     and AL, strict byte 001h                  ; 24 01
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp short 06912h                          ; eb 45
-    call 06757h                               ; e8 87 fe
+    jmp short 06ac6h                          ; eb 45
+    call 0690bh                               ; e8 87 fe
     test ax, ax                               ; 85 c0
-    je short 068d7h                           ; 74 03
-    call 0672fh                               ; e8 58 fe
+    je short 06a8bh                           ; 74 03
+    call 068e3h                               ; e8 58 fe
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     xor ax, ax                                ; 31 c0
-    call 01670h                               ; e8 90 ad
+    call 01679h                               ; e8 e5 ab
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00002h                ; b8 02 00
-    call 01670h                               ; e8 86 ad
+    call 01679h                               ; e8 db ab
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00004h                ; b8 04 00
-    call 01670h                               ; e8 7c ad
+    call 01679h                               ; e8 d1 ab
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 62 ad
+    call 0165ch                               ; e8 ae ab
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
@@ -9418,69 +9591,69 @@
     movzx dx, bl                              ; 0f b6 d3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01670h                               ; e8 5e ad
+    call 01679h                               ; e8 b3 ab
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp near 06872h                           ; e9 56 ff
+    jmp near 06a26h                           ; e9 56 ff
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 06757h                               ; e8 34 fe
+    call 0690bh                               ; e8 34 fe
     test ax, ax                               ; 85 c0
-    je short 0692ah                           ; 74 03
-    jmp near 06872h                           ; e9 48 ff
+    je short 06adeh                           ; 74 03
+    jmp near 06a26h                           ; e9 48 ff
     mov ax, strict word 00009h                ; b8 09 00
-    call 0165ch                               ; e8 2c ad
+    call 0165ch                               ; e8 78 ab
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 0165ch                               ; e8 23 ad
+    call 0165ch                               ; e8 6f ab
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 0165ch                               ; e8 1a ad
+    call 0165ch                               ; e8 66 ab
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 0165ch                               ; e8 11 ad
+    call 0165ch                               ; e8 5d ab
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 06872h                           ; e9 1e ff
-    call 06757h                               ; e8 00 fe
+    jmp near 06a26h                           ; e9 1e ff
+    call 0690bh                               ; e8 00 fe
     test ax, ax                               ; 85 c0
-    je short 06961h                           ; 74 06
-    call 0672fh                               ; e8 d1 fd
-    jmp near 06872h                           ; e9 11 ff
+    je short 06b15h                           ; 74 06
+    call 068e3h                               ; e8 d1 fd
+    jmp near 06a26h                           ; e9 11 ff
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00009h                ; b8 09 00
-    call 01670h                               ; e8 05 ad
+    call 01679h                               ; e8 5a ab
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00008h                ; b8 08 00
-    call 01670h                               ; e8 fb ac
+    call 01679h                               ; e8 50 ab
     movzx dx, byte [bp+00eh]                  ; 0f b6 56 0e
     mov ax, strict word 00007h                ; b8 07 00
-    call 01670h                               ; e8 f1 ac
+    call 01679h                               ; e8 46 ab
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00032h                ; b8 32 00
-    call 01670h                               ; e8 e7 ac
+    call 01679h                               ; e8 3c ab
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 cd ac
+    call 0165ch                               ; e8 19 ab
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 06909h                           ; e9 72 ff
+    jmp near 06abdh                           ; e9 72 ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 bf ac
+    call 0165ch                               ; e8 0b ab
     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 069abh                           ; 74 03
-    jmp near 06872h                           ; e9 c7 fe
-    call 06757h                               ; e8 a9 fd
+    je short 06b5fh                           ; 74 03
+    jmp near 06a26h                           ; e9 c7 fe
+    call 0690bh                               ; e8 a9 fd
     test ax, ax                               ; 85 c0
-    je short 069b5h                           ; 74 03
-    call 0672fh                               ; e8 7a fd
+    je short 06b69h                           ; 74 03
+    call 068e3h                               ; e8 7a fd
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00001h                ; b8 01 00
-    call 01670h                               ; e8 b1 ac
+    call 01679h                               ; e8 06 ab
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00003h                ; b8 03 00
-    call 01670h                               ; e8 a7 ac
+    call 01679h                               ; e8 fc aa
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00005h                ; b8 05 00
-    call 01670h                               ; e8 9d ac
+    call 01679h                               ; e8 f2 aa
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9494,13 +9667,13 @@
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01670h                               ; e8 85 ac
-    jmp near 06872h                           ; e9 84 fe
+    call 01679h                               ; e8 da aa
+    jmp near 06a26h                           ; e9 84 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 0165ch                               ; e8 68 ac
+    call 0165ch                               ; e8 b4 aa
     mov bl, al                                ; 88 c3
     and AL, strict byte 057h                  ; 24 57
     movzx dx, al                              ; 0f b6 d0
-    jmp near 0690ch                           ; e9 0e ff
-send_to_mouse_ctrl_:                         ; 0xf69fe LB 0x34
+    jmp near 06ac0h                           ; e9 0e ff
+send_to_mouse_ctrl_:                         ; 0xf6bb2 LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9513,9 +9686,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 06a1dh                           ; 74 0e
+    je short 06bd1h                           ; 74 0e
     push 008f6h                               ; 68 f6 08
-    push 0116eh                               ; 68 6e 11
+    push 0116ah                               ; 68 6a 11
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 f3 ae
+    call 01922h                               ; e8 54 ad
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
@@ -9531,5 +9704,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf6a32 LB 0x3b
+get_mouse_data_:                             ; 0xf6be6 LB 0x3b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9545,13 +9718,13 @@
     and ax, strict word 00021h                ; 25 21 00
     cmp ax, strict word 00021h                ; 3d 21 00
-    je short 06a53h                           ; 74 07
+    je short 06c07h                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 06a53h                           ; 74 03
+    je short 06c07h                           ; 74 03
     dec cx                                    ; 49
-    jmp short 06a3eh                          ; eb eb
+    jmp short 06bf2h                          ; eb eb
     test cx, cx                               ; 85 c9
-    jne short 06a5bh                          ; 75 04
+    jne short 06c0fh                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 06a66h                          ; eb 0b
+    jmp short 06c1ah                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -9565,5 +9738,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf6a6d LB 0x32
+set_kbd_command_byte_:                       ; 0xf6c21 LB 0x32
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9576,9 +9749,9 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 06a8ch                           ; 74 0e
+    je short 06c40h                           ; 74 0e
     push 00900h                               ; 68 00 09
-    push 0116eh                               ; 68 6e 11
+    push 0116ah                               ; 68 6a 11
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 84 ae
+    call 01922h                               ; e8 e5 ac
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
@@ -9593,5 +9766,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf6a9f LB 0xca
+_int74_function:                             ; 0xf6c53 LB 0xca
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9599,5 +9772,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 6e ab
+    call 0161ch                               ; e8 ba a9
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
@@ -9608,5 +9781,5 @@
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne near 06b55h                           ; 0f 85 92 00
+    jne near 06d09h                           ; 0f 85 92 00
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -9616,12 +9789,12 @@
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 2d ab
+    call 01600h                               ; e8 79 a9
     mov byte [bp-006h], al                    ; 88 46 fa
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 22 ab
+    call 01600h                               ; e8 6e a9
     mov byte [bp-008h], al                    ; 88 46 f8
     test AL, strict byte 080h                 ; a8 80
-    je short 06b55h                           ; 74 70
+    je short 06d09h                           ; 74 70
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 007h                  ; 24 07
@@ -9634,21 +9807,21 @@
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 0c ab
+    call 0160eh                               ; e8 58 a9
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp al, byte [bp-002h]                    ; 3a 46 fe
-    jc short 06b46h                           ; 72 3c
+    jc short 06cfah                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 ee aa
+    call 01600h                               ; e8 3a a9
     xor ah, ah                                ; 30 e4
     mov word [bp+00ch], ax                    ; 89 46 0c
     mov dx, strict word 00029h                ; ba 29 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 e1 aa
+    call 01600h                               ; e8 2d a9
     xor ah, ah                                ; 30 e4
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov dx, strict word 0002ah                ; ba 2a 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 d4 aa
+    call 01600h                               ; e8 20 a9
     xor ah, ah                                ; 30 e4
     mov word [bp+008h], ax                    ; 89 46 08
@@ -9657,28 +9830,31 @@
     mov byte [bp-006h], ah                    ; 88 66 fa
     test byte [bp-008h], 080h                 ; f6 46 f8 80
-    je short 06b49h                           ; 74 0a
+    je short 06cfdh                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 06b49h                          ; eb 03
+    jmp short 06cfdh                          ; eb 03
     inc byte [bp-006h]                        ; fe 46 fa
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 b9 aa
+    call 0160eh                               ; e8 05 a9
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
+    popaw                                     ; 61
+    insw                                      ; 6d
+    xlatb                                     ; d7
+    insw                                      ; 6d
+    pop dx                                    ; 5a
+    outsb                                     ; 6e
+    jmp short 06d83h                          ; eb 6e
+    pop cx                                    ; 59
+    outsw                                     ; 6f
     lodsw                                     ; ad
-    imul sp, word [bp+di], strict byte 0006ch ; 6b 23 6c
-    cmpsb                                     ; a6
-    insb                                      ; 6c
-    aaa                                       ; 37
     insw                                      ; 6d
-    movsw                                     ; a5
-    insw                                      ; 6d
-    stc                                       ; f9
-    imul cx, bp, strict byte 0006dh           ; 6b cd 6d
-    xchg dx, ax                               ; 92
-    outsb                                     ; 6e
-_int15_function_mouse:                       ; 0xf6b69 LB 0x38b
+    db  081h
+    outsw                                     ; 6f
+    inc si                                    ; 46
+    db  070h
+_int15_function_mouse:                       ; 0xf6d1d LB 0x38b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9687,31 +9863,31 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 a3 aa
+    call 0161ch                               ; e8 ef a8
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 06b8ch                          ; 76 0b
+    jbe short 06d40h                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 06eeeh                           ; e9 62 03
+    jmp near 070a2h                           ; e9 62 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 06a6dh                               ; e8 db fe
+    call 06c21h                               ; 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 06ed5h                          ; 0f 87 32 03
+    jnbe near 07089h                          ; 0f 87 32 03
     movzx si, al                              ; 0f b6 f0
     add si, si                                ; 01 f6
-    jmp word [cs:si+06b59h]                   ; 2e ff a4 59 6b
+    jmp word [cs:si+06d0dh]                   ; 2e ff a4 0d 6d
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe near 06ee0h                          ; 0f 87 2b 03
+    jnbe near 07094h                          ; 0f 87 2b 03
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 43 aa
+    call 01600h                               ; e8 8f a8
     test AL, strict byte 080h                 ; a8 80
-    jne short 06bcch                          ; 75 0b
+    jne short 06d80h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 06ee8h                           ; e9 1c 03
+    jmp near 0709ch                           ; e9 1c 03
     cmp byte [bp+00dh], 000h                  ; 80 7e 0d 00
     db  00fh, 094h, 0c0h
@@ -9719,24 +9895,24 @@
     add AL, strict byte 0f4h                  ; 04 f4
     xor ah, ah                                ; 30 e4
-    call 069feh                               ; e8 24 fe
+    call 06bb2h                               ; e8 24 fe
     test al, al                               ; 84 c0
-    jne near 06e6eh                           ; 0f 85 8e 02
+    jne near 07022h                           ; 0f 85 8e 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 4a fe
+    call 06be6h                               ; e8 4a fe
     test al, al                               ; 84 c0
-    je near 06ee8h                            ; 0f 84 fa 02
+    je near 0709ch                            ; 0f 84 fa 02
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    jne near 06e6eh                           ; 0f 85 78 02
-    jmp near 06ee8h                           ; e9 ef 02
+    jne near 07022h                           ; 0f 85 78 02
+    jmp near 0709ch                           ; e9 ef 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 06c04h                           ; 72 04
+    jc short 06db8h                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 06c07h                          ; 76 03
-    jmp near 06d9ah                           ; e9 93 01
+    jbe short 06dbbh                          ; 76 03
+    jmp near 06f4eh                           ; e9 93 01
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 f1 a9
+    call 01600h                               ; e8 3d a8
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
@@ -9747,194 +9923,194 @@
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 eb a9
+    call 0160eh                               ; e8 37 a8
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 d5 a9
+    call 01600h                               ; e8 21 a8
     and AL, strict byte 0f8h                  ; 24 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 d6 a9
+    call 0160eh                               ; e8 22 a8
     mov ax, 000ffh                            ; b8 ff 00
-    call 069feh                               ; e8 c0 fd
+    call 06bb2h                               ; e8 c0 fd
     test al, al                               ; 84 c0
-    jne near 06e6eh                           ; 0f 85 2a 02
+    jne near 07022h                           ; 0f 85 2a 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06a32h                               ; e8 e6 fd
+    call 06be6h                               ; e8 e6 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-004h], 0feh                  ; 80 7e fc fe
-    jne short 06c5fh                          ; 75 0b
+    jne short 06e13h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp near 06ee8h                           ; e9 89 02
+    jmp near 0709ch                           ; e9 89 02
     cmp byte [bp-004h], 0fah                  ; 80 7e fc fa
-    je short 06c75h                           ; 74 10
+    je short 06e29h                           ; 74 10
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
     push 0090bh                               ; 68 0b 09
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 9b ac
+    call 01922h                               ; e8 fc aa
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne near 06e6eh                           ; 0f 85 f3 01
+    jne near 07022h                           ; 0f 85 f3 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 af fd
+    call 06be6h                               ; e8 af fd
     test al, al                               ; 84 c0
-    jne near 06e6eh                           ; 0f 85 e5 01
+    jne near 07022h                           ; 0f 85 e5 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06a32h                               ; e8 a1 fd
+    call 06be6h                               ; e8 a1 fd
     test al, al                               ; 84 c0
-    jne near 06e6eh                           ; 0f 85 d7 01
+    jne near 07022h                           ; 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 06ee8h                           ; e9 42 02
+    jmp near 0709ch                           ; e9 42 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 06cbdh                           ; 72 10
-    jbe short 06cdbh                          ; 76 2c
+    jc short 06e71h                           ; 72 10
+    jbe short 06e8fh                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 06cedh                           ; 74 3a
+    je short 06ea1h                           ; 74 3a
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 06ce7h                           ; 74 30
+    je short 06e9bh                           ; 74 30
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 06ce1h                           ; 74 26
-    jmp short 06cf3h                          ; eb 36
+    je short 06e95h                           ; 74 26
+    jmp short 06ea7h                          ; eb 36
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 06cd5h                           ; 74 14
+    je short 06e89h                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 06ccfh                           ; 74 0a
+    je short 06e83h                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 06cf3h                          ; 75 2a
+    jne short 06ea7h                          ; 75 2a
     mov byte [bp-008h], 00ah                  ; c6 46 f8 0a
-    jmp short 06cf7h                          ; eb 28
+    jmp short 06eabh                          ; eb 28
     mov byte [bp-008h], 014h                  ; c6 46 f8 14
-    jmp short 06cf7h                          ; eb 22
+    jmp short 06eabh                          ; eb 22
     mov byte [bp-008h], 028h                  ; c6 46 f8 28
-    jmp short 06cf7h                          ; eb 1c
+    jmp short 06eabh                          ; eb 1c
     mov byte [bp-008h], 03ch                  ; c6 46 f8 3c
-    jmp short 06cf7h                          ; eb 16
+    jmp short 06eabh                          ; eb 16
     mov byte [bp-008h], 050h                  ; c6 46 f8 50
-    jmp short 06cf7h                          ; eb 10
+    jmp short 06eabh                          ; eb 10
     mov byte [bp-008h], 064h                  ; c6 46 f8 64
-    jmp short 06cf7h                          ; eb 0a
+    jmp short 06eabh                          ; eb 0a
     mov byte [bp-008h], 0c8h                  ; c6 46 f8 c8
-    jmp short 06cf7h                          ; eb 04
+    jmp short 06eabh                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jbe short 06d2ch                          ; 76 2f
+    jbe short 06ee0h                          ; 76 2f
     mov ax, 000f3h                            ; b8 f3 00
-    call 069feh                               ; e8 fb fc
+    call 06bb2h                               ; e8 fb fc
     test al, al                               ; 84 c0
-    jne short 06d21h                          ; 75 1a
+    jne short 06ed5h                          ; 75 1a
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06a32h                               ; e8 23 fd
+    call 06be6h                               ; e8 23 fd
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 069feh                               ; e8 e8 fc
+    call 06bb2h                               ; e8 e8 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06a32h                               ; e8 14 fd
-    jmp near 06ee8h                           ; e9 c7 01
+    call 06be6h                               ; e8 14 fd
+    jmp near 0709ch                           ; 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 06ee8h                           ; e9 bc 01
+    jmp near 0709ch                           ; 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 06ee8h                           ; e9 b1 01
+    jmp near 0709ch                           ; e9 b1 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 06d9ah                          ; 73 5d
+    jnc short 06f4eh                          ; 73 5d
     mov ax, 000e8h                            ; b8 e8 00
-    call 069feh                               ; e8 bb fc
+    call 06bb2h                               ; e8 bb fc
     test al, al                               ; 84 c0
-    jne short 06d8fh                          ; 75 48
+    jne short 06f43h                          ; 75 48
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 e3 fc
+    call 06be6h                               ; e8 e3 fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 06d65h                           ; 74 10
+    je short 06f19h                           ; 74 10
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     push 00936h                               ; 68 36 09
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 ab ab
+    call 01922h                               ; e8 0c aa
     add sp, strict byte 00006h                ; 83 c4 06
     movzx ax, byte [bp+00dh]                  ; 0f b6 46 0d
-    call 069feh                               ; e8 92 fc
+    call 06bb2h                               ; e8 92 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 be fc
+    call 06be6h                               ; e8 be fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je near 06ee8h                            ; 0f 84 6c 01
+    je near 0709ch                            ; 0f 84 6c 01
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     push 00936h                               ; 68 36 09
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 84 ab
+    call 01922h                               ; e8 e5 a9
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 06ee8h                           ; e9 59 01
+    jmp near 0709ch                           ; 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 06ee8h                           ; e9 4e 01
+    jmp near 0709ch                           ; 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 06ee8h                           ; e9 43 01
+    jmp near 0709ch                           ; e9 43 01
     mov ax, 000f2h                            ; b8 f2 00
-    call 069feh                               ; e8 53 fc
+    call 06bb2h                               ; e8 53 fc
     test al, al                               ; 84 c0
-    jne short 06dc2h                          ; 75 13
+    jne short 06f76h                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 7b fc
+    call 06be6h                               ; e8 7b fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06a32h                               ; e8 73 fc
-    jmp near 06c9dh                           ; e9 db fe
+    call 06be6h                               ; e8 73 fc
+    jmp near 06e51h                           ; 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 06ee8h                           ; e9 1b 01
+    jmp near 0709ch                           ; e9 1b 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 06ddbh                          ; 76 07
+    jbe short 06f8fh                          ; 76 07
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 06e44h                          ; 76 6c
-    jmp near 06e78h                           ; e9 9d 00
+    jbe short 06ff8h                          ; 76 6c
+    jmp near 0702ch                           ; e9 9d 00
     mov ax, 000e9h                            ; b8 e9 00
-    call 069feh                               ; e8 1d fc
+    call 06bb2h                               ; e8 1d fc
     test al, al                               ; 84 c0
-    jne near 06e6eh                           ; 0f 85 87 00
+    jne near 07022h                           ; 0f 85 87 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 43 fc
+    call 06be6h                               ; e8 43 fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 06e07h                           ; 74 10
+    je short 06fbbh                           ; 74 10
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     push 00936h                               ; 68 36 09
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 09 ab
+    call 01922h                               ; e8 6a a9
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 06e6eh                          ; 75 63
+    jne short 07022h                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 1f fc
+    call 06be6h                               ; e8 1f fc
     test al, al                               ; 84 c0
-    jne short 06e6eh                          ; 75 57
+    jne short 07022h                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 06a32h                               ; e8 13 fc
+    call 06be6h                               ; e8 13 fc
     test al, al                               ; 84 c0
-    jne short 06e6eh                          ; 75 4b
+    jne short 07022h                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 06a32h                               ; e8 07 fc
+    call 06be6h                               ; e8 07 fc
     test al, al                               ; 84 c0
-    jne short 06e6eh                          ; 75 3f
+    jne short 07022h                          ; 75 3f
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00ch], al                    ; 88 46 0c
@@ -9943,74 +10119,74 @@
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp near 06ee8h                           ; e9 a4 00
+    jmp near 0709ch                           ; e9 a4 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 06e4dh                          ; 75 05
+    jne short 07001h                          ; 75 05
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 06e50h                          ; eb 03
+    jmp short 07004h                          ; eb 03
     mov ax, 000e7h                            ; b8 e7 00
-    call 069feh                               ; e8 ab fb
+    call 06bb2h                               ; e8 ab fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 06e68h                          ; 75 0f
+    jne short 0701ch                          ; 75 0f
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 06a32h                               ; e8 d1 fb
+    call 06be6h                               ; 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 06ee8h                            ; 0f 84 7a 00
+    je near 0709ch                            ; 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 06ee8h                          ; eb 70
+    jmp short 0709ch                          ; eb 70
     movzx ax, byte [bp+00dh]                  ; 0f b6 46 0d
     push ax                                   ; 50
     push 00962h                               ; 68 62 09
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 88 aa
+    call 01922h                               ; e8 e9 a8
     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 06ee8h                          ; eb 56
+    jmp short 0709ch                          ; 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 0162ah                               ; e8 8b a7
+    call 0162ah                               ; e8 d7 a5
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, strict word 00024h                ; ba 24 00
     mov ax, cx                                ; 89 c8
-    call 0162ah                               ; e8 80 a7
+    call 0162ah                               ; e8 cc a5
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01600h                               ; e8 4e a7
+    call 01600h                               ; e8 9a a5
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 06ec6h                          ; 75 0e
+    jne short 0707ah                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 06ec6h                          ; 75 08
+    jne short 0707ah                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 06ec8h                           ; 74 06
+    je short 0707ch                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 06ec8h                          ; eb 02
+    jmp short 0707ch                          ; eb 02
     or AL, strict byte 080h                   ; 0c 80
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0160eh                               ; e8 3b a7
-    jmp short 06ee8h                          ; eb 13
+    call 0160eh                               ; e8 87 a5
+    jmp short 0709ch                          ; eb 13
     push 0097ch                               ; 68 7c 09
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 30 aa
+    call 01922h                               ; e8 91 a8
     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 06a6dh                               ; e8 7f fb
+    call 06c21h                               ; e8 7f fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf6ef4 LB 0xb3
+_int17_function:                             ; 0xf70a8 LB 0xb3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10022,22 +10198,22 @@
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 14 a7
+    call 0161ch                               ; e8 60 a5
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc near 06f9dh                           ; 0f 83 89 00
+    jnc near 07151h                           ; 0f 83 89 00
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc near 06f9dh                           ; 0f 83 7f 00
+    jnc near 07151h                           ; 0f 83 7f 00
     test bx, bx                               ; 85 db
-    jbe near 06f9dh                           ; 0f 86 79 00
+    jbe near 07151h                           ; 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 01600h                               ; e8 d1 a6
+    call 01600h                               ; e8 1d a5
     movzx cx, al                              ; 0f b6 c8
     sal cx, 008h                              ; c1 e1 08
     cmp byte [bp+013h], 000h                  ; 80 7e 13 00
-    jne short 06f68h                          ; 75 2d
+    jne short 0711ch                          ; 75 2d
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
@@ -10059,11 +10235,11 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 06f68h                           ; 74 07
+    je short 0711ch                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 06f68h                           ; 74 03
+    je short 0711ch                           ; 74 03
     dec cx                                    ; 49
-    jmp short 06f57h                          ; eb ef
+    jmp short 0710bh                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 06f84h                          ; 75 16
+    jne short 07138h                          ; 75 16
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
@@ -10084,8 +10260,8 @@
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 06f97h                          ; 75 04
+    jne short 0714bh                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 06fa1h                          ; eb 04
+    jmp short 07155h                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -10093,5 +10269,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-wait_:                                       ; 0xf6fa7 LB 0xb2
+wait_:                                       ; 0xf715b LB 0xb2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10111,5 +10287,5 @@
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01638h                               ; e8 6e a6
+    call 01638h                               ; e8 ba a4
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov bx, dx                                ; 89 d3
@@ -10117,20 +10293,20 @@
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01638h                               ; e8 60 a6
+    call 01638h                               ; e8 ac a4
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 06fe8h                         ; 77 07
-    jne short 06fefh                          ; 75 0c
+    jnbe short 0719ch                         ; 77 07
+    jne short 071a3h                          ; 75 0c
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jbe short 06fefh                          ; 76 07
+    jbe short 071a3h                          ; 76 07
     sub ax, word [bp-00eh]                    ; 2b 46 f2
     sbb dx, bx                                ; 19 da
-    jmp short 06ffah                          ; eb 0b
+    jmp short 071aeh                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 06ffah                           ; 72 07
-    jne short 06ffeh                          ; 75 09
+    jc short 071aeh                           ; 72 07
+    jne short 071b2h                          ; 75 09
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jnc short 06ffeh                          ; 73 04
+    jnc short 071b2h                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
@@ -10140,11 +10316,11 @@
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je near 07014h                            ; 0f 84 05 00
+    je near 071c8h                            ; 0f 84 05 00
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 07016h                           ; e9 02 00
+    jmp near 071cah                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 0703eh                           ; 74 24
+    je short 071f2h                           ; 74 24
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
@@ -10157,15 +10333,15 @@
     push 0099eh                               ; 68 9e 09
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 dc a8
+    call 01922h                               ; e8 3d a7
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 0703eh                           ; 74 04
+    je short 071f2h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 07050h                          ; eb 12
+    jmp short 07204h                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 06fcfh                         ; 7f 8d
-    jne short 07048h                          ; 75 04
+    jnle short 07183h                         ; 7f 8d
+    jne short 071fch                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 06fcfh                         ; 77 87
+    jnbe short 07183h                         ; 77 87
     mov ax, word [bp-010h]                    ; 8b 46 f0
     push ax                                   ; 50
@@ -10179,5 +10355,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf7059 LB 0x16
+read_logo_byte_:                             ; 0xf720d LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10194,5 +10370,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf706f LB 0x14
+read_logo_word_:                             ; 0xf7223 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10207,5 +10383,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf7083 LB 0x130
+print_detected_harddisks_:                   ; 0xf7237 LB 0x130
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10219,5 +10395,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 86 a5
+    call 0161ch                               ; e8 d2 a3
     mov si, ax                                ; 89 c6
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
@@ -10225,21 +10401,21 @@
     xor ch, ch                                ; 30 ed
     mov dx, 002c0h                            ; ba c0 02
-    call 01600h                               ; e8 5a a5
+    call 01600h                               ; e8 a6 a3
     mov byte [bp-00eh], al                    ; 88 46 f2
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp-00eh]                    ; 3a 5e f2
-    jnc near 07185h                           ; 0f 83 d3 00
+    jnc near 07339h                           ; 0f 83 d3 00
     movzx dx, bl                              ; 0f b6 d3
     add dx, 002c1h                            ; 81 c2 c1 02
     mov ax, si                                ; 89 f0
-    call 01600h                               ; e8 42 a5
+    call 01600h                               ; e8 8e a3
     mov bh, al                                ; 88 c7
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 070e8h                           ; 72 24
+    jc short 0729ch                           ; 72 24
     test cl, cl                               ; 84 c9
-    jne short 070d5h                          ; 75 0d
+    jne short 07289h                          ; 75 0d
     push 009afh                               ; 68 af 09
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 3d a8
+    call 01922h                               ; e8 9e a6
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
@@ -10249,34 +10425,34 @@
     push 009c3h                               ; 68 c3 09
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 2b a8
+    call 01922h                               ; e8 8c a6
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07180h                           ; e9 98 00
+    jmp near 07334h                           ; e9 98 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 070ffh                           ; 72 13
+    jc short 072b3h                           ; 72 13
     test ch, ch                               ; 84 ed
-    jne short 070fdh                          ; 75 0d
+    jne short 072b1h                          ; 75 0d
     push 009d6h                               ; 68 d6 09
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 15 a8
+    call 01922h                               ; e8 76 a6
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
-    jmp short 070d5h                          ; eb d6
+    jmp short 07289h                          ; eb d6
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 0711ah                          ; 73 17
+    jnc short 072ceh                          ; 73 17
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0711ah                          ; 75 11
+    jne short 072ceh                          ; 75 11
     push 009eah                               ; 68 ea 09
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 fc a7
+    call 01922h                               ; e8 5d a6
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07130h                          ; eb 16
+    jmp short 072e4h                          ; eb 16
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07130h                           ; 72 11
+    jc short 072e4h                           ; 72 11
     test cl, cl                               ; 84 c9
-    jne short 07130h                          ; 75 0d
+    jne short 072e4h                          ; 75 0d
     push 009afh                               ; 68 af 09
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 e2 a7
+    call 01922h                               ; e8 43 a6
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
@@ -10286,8 +10462,8 @@
     push 009fbh                               ; 68 fb 09
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 d0 a7
+    call 01922h                               ; e8 31 a6
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07148h                           ; 72 03
+    jc short 072fch                           ; 72 03
     sub bh, 004h                              ; 80 ef 04
     movzx ax, bh                              ; 0f b6 c7
@@ -10297,10 +10473,10 @@
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07159h                           ; 74 05
+    je short 0730dh                           ; 74 05
     push 00a05h                               ; 68 05 0a
-    jmp short 0715ch                          ; eb 03
+    jmp short 07310h                          ; eb 03
     push 00a10h                               ; 68 10 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 ac a7
+    call 01922h                               ; e8 0d a6
     add sp, strict byte 00004h                ; 83 c4 04
     movzx ax, bh                              ; 0f b6 c7
@@ -10309,27 +10485,27 @@
     idiv di                                   ; f7 ff
     test dx, dx                               ; 85 d2
-    je short 07176h                           ; 74 05
+    je short 0732ah                           ; 74 05
     push 00a19h                               ; 68 19 0a
-    jmp short 07179h                          ; eb 03
+    jmp short 0732dh                          ; eb 03
     push 00a1fh                               ; 68 1f 0a
     push di                                   ; 57
-    call 0190dh                               ; e8 90 a7
+    call 01922h                               ; e8 f1 a5
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp near 070abh                           ; e9 26 ff
+    jmp near 0725fh                           ; e9 26 ff
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0719eh                          ; 75 13
+    jne short 07352h                          ; 75 13
     test cl, cl                               ; 84 c9
-    jne short 0719eh                          ; 75 0f
+    jne short 07352h                          ; 75 0f
     test ch, ch                               ; 84 ed
-    jne short 0719eh                          ; 75 0b
+    jne short 07352h                          ; 75 0b
     push 00a26h                               ; 68 26 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 72 a7
+    call 01922h                               ; e8 d3 a5
     add sp, strict byte 00004h                ; 83 c4 04
     push 00a3ah                               ; 68 3a 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 67 a7
+    call 01922h                               ; e8 c8 a5
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -10341,5 +10517,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf71b3 LB 0x28
+get_boot_drive_:                             ; 0xf7367 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10349,10 +10525,10 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 59 a4
+    call 0161ch                               ; e8 a5 a2
     mov dx, 002c0h                            ; ba c0 02
-    call 01600h                               ; e8 37 a4
+    call 01600h                               ; e8 83 a2
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 071d2h                           ; 72 02
+    jc short 07386h                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
@@ -10362,5 +10538,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf71db LB 0x224
+show_logo_:                                  ; 0xf738f LB 0x224
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10373,5 +10549,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 2d a4
+    call 0161ch                               ; e8 79 a2
     mov si, ax                                ; 89 c6
     xor cl, cl                                ; 30 c9
@@ -10384,7 +10560,7 @@
     out strict byte 040h, AL                  ; e6 40
     movzx ax, dl                              ; 0f b6 c2
-    call 0706fh                               ; e8 68 fe
+    call 07223h                               ; e8 68 fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne near 072dfh                           ; 0f 85 d1 00
+    jne near 07493h                           ; 0f 85 d1 00
     push SS                                   ; 16
     pop ES                                    ; 07
@@ -10394,9 +10570,9 @@
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jne near 072dfh                           ; 0f 85 bd 00
+    jne near 07493h                           ; 0f 85 bd 00
     mov al, dl                                ; 88 d0
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 07059h                               ; e8 2e fe
+    call 0720dh                               ; e8 2e fe
     mov ch, al                                ; 88 c5
     mov byte [bp-00ch], al                    ; 88 46 f4
@@ -10404,5 +10580,5 @@
     add AL, strict byte 005h                  ; 04 05
     xor ah, ah                                ; 30 e4
-    call 07059h                               ; e8 20 fe
+    call 0720dh                               ; e8 20 fe
     mov dh, al                                ; 88 c6
     mov byte [bp-010h], al                    ; 88 46 f0
@@ -10410,5 +10586,5 @@
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 0706fh                               ; e8 28 fe
+    call 07223h                               ; e8 28 fe
     mov bx, ax                                ; 89 c3
     mov word [bp-014h], ax                    ; 89 46 ec
@@ -10416,22 +10592,22 @@
     add AL, strict byte 006h                  ; 04 06
     xor ah, ah                                ; 30 e4
-    call 07059h                               ; e8 04 fe
+    call 0720dh                               ; e8 04 fe
     mov byte [bp-012h], al                    ; 88 46 ee
     test ch, ch                               ; 84 ed
-    jne short 07266h                          ; 75 0a
+    jne short 0741ah                          ; 75 0a
     test dh, dh                               ; 84 f6
-    jne short 07266h                          ; 75 06
+    jne short 0741ah                          ; 75 06
     test bx, bx                               ; 85 db
-    je near 072dfh                            ; 0f 84 79 00
+    je near 07493h                            ; 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 07297h                           ; 74 23
+    je short 0744bh                           ; 74 23
     xor bx, bx                                ; 31 db
-    jmp short 0727eh                          ; eb 06
+    jmp short 07432h                          ; eb 06
     inc bx                                    ; 43
     cmp bx, strict byte 00010h                ; 83 fb 10
-    jnbe short 0729eh                         ; 77 20
+    jnbe short 07452h                         ; 77 20
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
@@ -10440,30 +10616,30 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 06fa7h                               ; e8 18 fd
+    call 0715bh                               ; e8 18 fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07278h                          ; 75 e5
+    jne short 0742ch                          ; 75 e5
     mov CL, strict byte 001h                  ; b1 01
-    jmp short 0729eh                          ; eb 07
+    jmp short 07452h                          ; 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 072b4h                          ; 75 12
+    jne short 07468h                          ; 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 06fa7h                               ; e8 f9 fc
+    call 0715bh                               ; e8 f9 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 072b4h                          ; 75 02
+    jne short 07468h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    je short 072dfh                           ; 74 25
+    je short 07493h                           ; 74 25
     test cl, cl                               ; 84 c9
-    jne short 072dfh                          ; 75 21
+    jne short 07493h                          ; 75 21
     mov bx, strict word 00010h                ; bb 10 00
-    jmp short 072c8h                          ; eb 05
+    jmp short 0747ch                          ; eb 05
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 072dfh                          ; 76 17
+    jbe short 07493h                          ; 76 17
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
@@ -10472,39 +10648,39 @@
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 06fa7h                               ; e8 ce fc
+    call 0715bh                               ; e8 ce fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 072c3h                          ; 75 e6
+    jne short 07477h                          ; 75 e6
     mov CL, strict byte 001h                  ; b1 01
     xor bx, bx                                ; 31 db
     mov dx, 00339h                            ; ba 39 03
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 25 a3
+    call 0160eh                               ; e8 71 a1
     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 073e0h                            ; 0f 84 e9 00
+    je near 07594h                            ; 0f 84 e9 00
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 0732dh                          ; 75 30
+    jne short 074e1h                          ; 75 30
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    jne short 0732dh                          ; 75 2a
+    jne short 074e1h                          ; 75 2a
     cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    jne short 0732dh                          ; 75 24
+    jne short 074e1h                          ; 75 24
     cmp byte [bp-012h], 002h                  ; 80 7e ee 02
-    jne short 0731ah                          ; 75 0b
+    jne short 074ceh                          ; 75 0b
     push 00a3ch                               ; 68 3c 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 f6 a5
+    call 01922h                               ; e8 57 a4
     add sp, strict byte 00004h                ; 83 c4 04
     test cl, cl                               ; 84 c9
-    jne short 0732dh                          ; 75 0f
+    jne short 074e1h                          ; 75 0f
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 06fa7h                               ; e8 80 fc
+    call 0715bh                               ; e8 80 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 0732dh                          ; 75 02
+    jne short 074e1h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je near 073e0h                            ; 0f 84 ad 00
+    je near 07594h                            ; 0f 84 ad 00
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     mov ax, 00100h                            ; b8 00 01
@@ -10525,52 +10701,52 @@
     push 00a5eh                               ; 68 5e 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 b1 a5
+    call 01922h                               ; e8 12 a4
     add sp, strict byte 00004h                ; 83 c4 04
-    call 07083h                               ; e8 21 fd
+    call 07237h                               ; e8 21 fd
     push 00aa2h                               ; 68 a2 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 a3 a5
+    call 01922h                               ; e8 04 a4
     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 06fa7h                               ; e8 31 fc
+    call 0715bh                               ; e8 31 fc
     mov bl, al                                ; 88 c3
     test al, al                               ; 84 c0
-    je short 0736dh                           ; 74 f1
+    je short 07521h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 073ceh                           ; 74 4e
+    je short 07582h                           ; 74 4e
     cmp bl, 002h                              ; 80 fb 02
-    jc short 073a7h                           ; 72 22
+    jc short 0755bh                           ; 72 22
     cmp bl, 009h                              ; 80 fb 09
-    jnbe short 073a7h                         ; 77 1d
+    jnbe short 0755bh                         ; 77 1d
     movzx ax, bl                              ; 0f b6 c3
-    call 071b3h                               ; e8 23 fe
+    call 07367h                               ; e8 23 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 07396h                          ; 75 02
-    jmp short 0736dh                          ; eb d7
+    jne short 0754ah                          ; 75 02
+    jmp short 07521h                          ; eb d7
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00338h                            ; ba 38 03
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 6d a2
+    call 0160eh                               ; e8 b9 a0
     mov byte [bp-00eh], 002h                  ; c6 46 f2 02
-    jmp short 073ceh                          ; eb 27
+    jmp short 07582h                          ; eb 27
     cmp bl, 02eh                              ; 80 fb 2e
-    je short 073bch                           ; 74 10
+    je short 07570h                           ; 74 10
     cmp bl, 026h                              ; 80 fb 26
-    je short 073c2h                           ; 74 11
+    je short 07576h                           ; 74 11
     cmp bl, 021h                              ; 80 fb 21
-    jne short 073c8h                          ; 75 12
+    jne short 0757ch                          ; 75 12
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 073ceh                          ; eb 12
+    jmp short 07582h                          ; eb 12
     mov byte [bp-00eh], 003h                  ; c6 46 f2 03
-    jmp short 073ceh                          ; eb 0c
+    jmp short 07582h                          ; eb 0c
     mov byte [bp-00eh], 004h                  ; c6 46 f2 04
-    jmp short 073ceh                          ; eb 06
+    jmp short 07582h                          ; eb 06
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 0736dh                           ; 74 9f
+    je short 07521h                           ; 74 9f
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     mov dx, 00339h                            ; ba 39 03
     mov ax, si                                ; 89 f0
-    call 0160eh                               ; e8 34 a2
+    call 0160eh                               ; e8 80 a0
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
@@ -10585,5 +10761,5 @@
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 cd 79
+    call 0edbfh                               ; e8 19 78
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -10596,5 +10772,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf73ff LB 0x67
+delay_boot_:                                 ; 0xf75b3 LB 0x67
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10603,5 +10779,5 @@
     mov dx, ax                                ; 89 c2
     test ax, ax                               ; 85 c0
-    je short 0745fh                           ; 74 55
+    je short 07613h                           ; 74 55
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -10613,22 +10789,22 @@
     push 00aech                               ; 68 ec 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 ee a4
+    call 01922h                               ; e8 4f a3
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, dx                                ; 89 d3
     test bx, bx                               ; 85 db
-    jbe short 0743fh                          ; 76 17
+    jbe short 075f3h                          ; 76 17
     push bx                                   ; 53
     push 00b0ah                               ; 68 0a 0b
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 dc a4
+    call 01922h                               ; e8 3d a3
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 06fa7h                               ; e8 6b fb
+    call 0715bh                               ; e8 6b fb
     dec bx                                    ; 4b
-    jmp short 07424h                          ; eb e5
+    jmp short 075d8h                          ; eb e5
     push 00a3ah                               ; 68 3a 0a
     push strict byte 00002h                   ; 6a 02
-    call 0190dh                               ; e8 c6 a4
+    call 01922h                               ; e8 27 a3
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
@@ -10641,5 +10817,5 @@
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 63 79
+    call 0edbfh                               ; e8 af 77
     pop DS                                    ; 1f
     popad                                     ; 66 61
@@ -10649,5 +10825,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7466 LB 0xb2
+scsi_cmd_data_in_:                           ; 0xf761a LB 0xb2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10665,5 +10841,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0747ch                          ; 75 f7
+    jne short 07630h                          ; 75 f7
     mov ax, bx                                ; 89 d8
     mov dx, word [bp+00ch]                    ; 8b 56 0c
@@ -10671,5 +10847,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0748dh                               ; e2 fa
+    loop 07641h                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
@@ -10689,5 +10865,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 074b3h                               ; e2 fa
+    loop 07667h                               ; e2 fa
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
@@ -10695,5 +10871,5 @@
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 074d4h                          ; 73 0e
+    jnc short 07688h                          ; 73 0e
     les di, [bp-00ah]                         ; c4 7e f6
     add di, cx                                ; 01 cf
@@ -10702,5 +10878,5 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 074beh                          ; eb ea
+    jmp short 07672h                          ; eb ea
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
@@ -10708,10 +10884,10 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 074d4h                          ; 75 f7
+    jne short 07688h                          ; 75 f7
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 074ech                          ; 75 06
+    jne short 076a0h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07506h                          ; 76 1a
+    jbe short 076bah                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
@@ -10722,5 +10898,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 074ddh                          ; eb d7
+    jmp short 07691h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
@@ -10732,5 +10908,5 @@
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7518 LB 0xb4
+scsi_cmd_data_out_:                          ; 0xf76cc LB 0xb4
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10748,5 +10924,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0752eh                          ; 75 f7
+    jne short 076e2h                          ; 75 f7
     mov ax, bx                                ; 89 d8
     mov dx, word [bp+00ch]                    ; 8b 56 0c
@@ -10754,5 +10930,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0753fh                               ; e2 fa
+    loop 076f3h                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
@@ -10772,5 +10948,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07565h                               ; e2 fa
+    loop 07719h                               ; e2 fa
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
@@ -10778,5 +10954,5 @@
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 07586h                          ; 73 0e
+    jnc short 0773ah                          ; 73 0e
     les si, [bp-00ah]                         ; c4 76 f6
     add si, cx                                ; 01 ce
@@ -10785,10 +10961,10 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07570h                          ; eb ea
+    jmp short 07724h                          ; eb ea
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07595h                          ; 75 06
+    jne short 07749h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 075b0h                          ; 76 1b
+    jbe short 07764h                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
@@ -10800,5 +10976,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07586h                          ; eb d6
+    jmp short 0773ah                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
@@ -10810,5 +10986,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 075b8h                          ; 75 f7
+    jne short 0776ch                          ; 75 f7
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -10817,5 +10993,5 @@
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-@scsi_read_sectors:                          ; 0xf75cc LB 0xb6
+@scsi_read_sectors:                          ; 0xf7780 LB 0xb6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10828,10 +11004,10 @@
     sub bl, 008h                              ; 80 eb 08
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 075f5h                          ; 76 0f
+    jbe short 077a9h                          ; 76 0f
     movzx ax, bl                              ; 0f b6 c3
     push ax                                   ; 50
     push 00b0eh                               ; 68 0e 0b
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 1b a3
+    call 01922h                               ; e8 7c a1
     add sp, strict byte 00006h                ; 83 c4 06
     mov es, [bp+006h]                         ; 8e 46 06
@@ -10860,5 +11036,5 @@
     sal word [bp-008h], 1                     ; d1 66 f8
     rcl word [bp-006h], 1                     ; d1 56 fa
-    loop 0763eh                               ; e2 f8
+    loop 077f2h                               ; e2 f8
     push dword [bp-008h]                      ; 66 ff 76 f8
     db  066h, 026h, 0ffh, 074h, 004h
@@ -10868,8 +11044,8 @@
     mov cx, ss                                ; 8c d1
     lea bx, [bp-012h]                         ; 8d 5e ee
-    call 07466h                               ; e8 0b fe
+    call 0761ah                               ; e8 0b fe
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07676h                          ; 75 15
+    jne short 0782ah                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -10884,5 +11060,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@scsi_write_sectors:                         ; 0xf7682 LB 0xb6
+@scsi_write_sectors:                         ; 0xf7836 LB 0xb6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10895,10 +11071,10 @@
     sub bl, 008h                              ; 80 eb 08
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 076abh                          ; 76 0f
+    jbe short 0785fh                          ; 76 0f
     movzx ax, bl                              ; 0f b6 c3
     push ax                                   ; 50
     push 00b3ch                               ; 68 3c 0b
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 65 a2
+    call 01922h                               ; e8 c6 a0
     add sp, strict byte 00006h                ; 83 c4 06
     mov es, [bp+006h]                         ; 8e 46 06
@@ -10927,5 +11103,5 @@
     sal word [bp-008h], 1                     ; d1 66 f8
     rcl word [bp-006h], 1                     ; d1 56 fa
-    loop 076f4h                               ; e2 f8
+    loop 078a8h                               ; e2 f8
     push dword [bp-008h]                      ; 66 ff 76 f8
     db  066h, 026h, 0ffh, 074h, 004h
@@ -10935,8 +11111,8 @@
     mov cx, ss                                ; 8c d1
     lea bx, [bp-012h]                         ; 8d 5e ee
-    call 07518h                               ; e8 07 fe
+    call 076cch                               ; e8 07 fe
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 0772ch                          ; 75 15
+    jne short 078e0h                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -10951,5 +11127,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf7738 LB 0x166
+scsi_cmd_packet_:                            ; 0xf78ec LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -10963,20 +11139,20 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 c8 9e
+    call 0161ch                               ; e8 14 9d
     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 0777fh                          ; 75 1f
-    mov bx, 00da6h                            ; bb a6 0d
+    jne short 07933h                          ; 75 1f
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 61 a1
+    call 018e1h                               ; e8 c2 9f
     push 00b6bh                               ; 68 6b 0b
     push 00b7bh                               ; 68 7b 0b
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 97 a1
+    call 01922h                               ; e8 f8 9f
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 07893h                           ; e9 14 01
+    jmp near 07a47h                           ; e9 14 01
     sub di, strict byte 00008h                ; 83 ef 08
     sal di, 002h                              ; c1 e7 02
@@ -10992,5 +11168,5 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0779bh                          ; 75 f7
+    jne short 0794fh                          ; 75 f7
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+006h]                    ; 8b 56 06
@@ -11008,5 +11184,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 077c6h                               ; e2 fa
+    loop 0797ah                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
@@ -11026,5 +11202,5 @@
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 077edh                               ; e2 fa
+    loop 079a1h                               ; e2 fa
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11032,5 +11208,5 @@
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 0780eh                          ; 73 0e
+    jnc short 079c2h                          ; 73 0e
     les di, [bp-00ch]                         ; c4 7e f4
     add di, cx                                ; 01 cf
@@ -11039,5 +11215,5 @@
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 077f8h                          ; eb ea
+    jmp short 079ach                          ; eb ea
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -11045,7 +11221,7 @@
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0780eh                          ; 75 f7
+    jne short 079c2h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07829h                           ; 74 0e
+    je short 079ddh                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
@@ -11055,12 +11231,12 @@
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 07893h                          ; eb 6a
+    jmp short 07a47h                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 07838h                           ; 74 08
+    je short 079ech                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 07835h                               ; e2 fd
+    loop 079e9h                               ; e2 fd
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov es, [bp-00eh]                         ; 8e 46 f2
@@ -11070,7 +11246,7 @@
     lea ax, [bx+001h]                         ; 8d 47 01
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 07859h                          ; 75 07
+    jne short 07a0dh                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 07876h                          ; 76 1d
+    jbe short 07a2ah                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
@@ -11082,5 +11258,5 @@
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 07849h                          ; eb d3
+    jmp short 079fdh                          ; eb d3
     mov dx, ax                                ; 89 c2
     mov cx, word [bp+006h]                    ; 8b 4e 06
@@ -11089,8 +11265,8 @@
     mov es, [bp-00eh]                         ; 8e 46 f2
     cmp word [es:si+01ch], strict byte 00000h ; 26 83 7c 1c 00
-    je short 07891h                           ; 74 07
+    je short 07a45h                           ; 74 07
     mov cx, word [es:si+01ch]                 ; 26 8b 4c 1c
     in AL, DX                                 ; ec
-    loop 0788eh                               ; e2 fd
+    loop 07a42h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
@@ -11100,5 +11276,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf789e LB 0x373
+scsi_enumerate_attached_devices_:            ; 0xf7a52 LB 0x3e5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11108,117 +11284,172 @@
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, 0021eh                            ; 81 ec 1e 02
+    sub sp, 0021ch                            ; 81 ec 1c 02
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 68 9d
+    call 0161ch                               ; e8 b4 9b
     mov si, 00122h                            ; be 22 01
-    mov word [bp-012h], ax                    ; 89 46 ee
-    mov word [bp-014h], strict word 00000h    ; c7 46 ec 00 00
-    jmp near 07b9fh                           ; e9 dd 02
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov word [bp-01ah], ax                    ; 89 46 e6
+    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
+    jmp near 07dc5h                           ; e9 4f 03
+    mov es, [bp-01ah]                         ; 8e 46 e6
     cmp byte [es:si+001e8h], 004h             ; 26 80 bc e8 01 04
-    jnc near 07c07h                           ; 0f 83 38 03
+    jnc near 07e2dh                           ; 0f 83 aa 03
     mov cx, strict word 0000ah                ; b9 0a 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
-    lea ax, [bp-028h]                         ; 8d 46 d8
-    call 0924ah                               ; e8 6e 19
-    mov byte [bp-028h], 025h                  ; c6 46 d8 25
+    lea ax, [bp-026h]                         ; 8d 46 da
+    call 0946ah                               ; e8 da 19
+    mov byte [bp-026h], 025h                  ; c6 46 da 25
     push dword 000000008h                     ; 66 6a 08
-    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
+    lea dx, [bp-00226h]                       ; 8d 96 da fd
     push SS                                   ; 16
     push dx                                   ; 52
     push strict byte 0000ah                   ; 6a 0a
-    movzx dx, byte [bp-014h]                  ; 0f b6 56 ec
+    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-028h]                         ; 8d 5e d8
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
-    call 07466h                               ; e8 6b fb
+    lea bx, [bp-026h]                         ; 8d 5e da
+    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
+    call 0761ah                               ; e8 6b fb
     test al, al                               ; 84 c0
-    je short 0790dh                           ; 74 0e
+    je short 07ac1h                           ; 74 0e
     push 00b9bh                               ; 68 9b 0b
     push 00bd4h                               ; 68 d4 0b
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 03 a0
+    call 01922h                               ; e8 64 9e
     add sp, strict byte 00006h                ; 83 c4 06
-    movzx dx, byte [bp-00227h]                ; 0f b6 96 d9 fd
-    movzx di, byte [bp-00228h]                ; 0f b6 be d8 fd
+    movzx ax, byte [bp-00225h]                ; 0f b6 86 db fd
+    movzx di, byte [bp-00226h]                ; 0f b6 be da fd
     sal di, 008h                              ; c1 e7 08
     xor bx, bx                                ; 31 db
-    or di, dx                                 ; 09 d7
-    movzx ax, byte [bp-00226h]                ; 0f b6 86 da fd
+    or di, ax                                 ; 09 c7
+    movzx ax, byte [bp-00224h]                ; 0f b6 86 dc 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 07928h                               ; e2 fa
-    or ax, bx                                 ; 09 d8
+    loop 07adch                               ; e2 fa
+    or bx, ax                                 ; 09 c3
+    or dx, di                                 ; 09 fa
+    movzx ax, byte [bp-00223h]                ; 0f b6 86 dd fd
+    or bx, ax                                 ; 09 c3
+    mov word [bp-00eh], bx                    ; 89 5e f2
+    mov word [bp-018h], dx                    ; 89 56 e8
+    movzx di, byte [bp-00222h]                ; 0f b6 be de fd
+    sal di, 008h                              ; c1 e7 08
+    movzx dx, byte [bp-00221h]                ; 0f b6 96 df fd
+    xor bx, bx                                ; 31 db
     or di, dx                                 ; 09 d7
-    movzx dx, byte [bp-00225h]                ; 0f b6 96 db fd
-    or ax, dx                                 ; 09 d0
-    mov word [bp-010h], ax                    ; 89 46 f0
-    movzx dx, byte [bp-00224h]                ; 0f b6 96 dc fd
-    sal dx, 008h                              ; c1 e2 08
-    movzx ax, byte [bp-00223h]                ; 0f b6 86 dd fd
-    or dx, ax                                 ; 09 c2
-    mov word [bp-01eh], dx                    ; 89 56 e2
-    movzx ax, byte [bp-00222h]                ; 0f b6 86 de fd
+    movzx ax, byte [bp-00220h]                ; 0f b6 86 e0 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 07958h                               ; e2 fa
-    or bx, ax                                 ; 09 c3
-    or dx, word [bp-01eh]                     ; 0b 56 e2
-    movzx ax, byte [bp-00221h]                ; 0f b6 86 df fd
-    or bx, ax                                 ; 09 c3
-    mov word [bp-00eh], bx                    ; 89 5e f2
+    loop 07b0eh                               ; e2 fa
+    or ax, bx                                 ; 09 d8
+    or dx, di                                 ; 09 fa
+    movzx bx, byte [bp-0021fh]                ; 0f b6 9e e1 fd
+    or ax, bx                                 ; 09 d8
+    mov word [bp-016h], ax                    ; 89 46 ea
     test dx, dx                               ; 85 d2
-    jne short 07977h                          ; 75 06
-    cmp bx, 00200h                            ; 81 fb 00 02
-    je short 07997h                           ; 74 20
-    mov bx, 00da6h                            ; bb a6 0d
+    jne short 07b2bh                          ; 75 05
+    cmp ax, 00200h                            ; 3d 00 02
+    je short 07b4bh                           ; 74 20
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 4a 9f
+    call 018e1h                               ; e8 ab 9d
     push dx                                   ; 52
-    push word [bp-00eh]                       ; ff 76 f2
-    push word [bp-014h]                       ; ff 76 ec
+    push word [bp-016h]                       ; ff 76 ea
+    push word [bp-010h]                       ; ff 76 f0
     push 00bf3h                               ; 68 f3 0b
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 7c 9f
+    call 01922h                               ; e8 dd 9d
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 07b96h                           ; e9 ff 01
-    cmp di, strict byte 00040h                ; 83 ff 40
-    jnbe short 0799eh                         ; 77 02
-    jne short 079a8h                          ; 75 0a
-    mov dword [bp-018h], strict dword 000ff003fh ; 66 c7 46 e8 3f 00 ff 00
-    jmp short 079c1h                          ; eb 19
-    cmp di, strict byte 00020h                ; 83 ff 20
-    jnbe short 079afh                         ; 77 02
-    jne short 079b9h                          ; 75 0a
-    mov dword [bp-018h], strict dword 000800020h ; 66 c7 46 e8 20 00 80 00
-    jmp short 079c1h                          ; eb 08
-    mov dword [bp-018h], strict dword 000400020h ; 66 c7 46 e8 20 00 40 00
-    mov bx, word [bp-016h]                    ; 8b 5e ea
-    imul bx, word [bp-018h]                   ; 0f af 5e e8
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov dx, di                                ; 89 fa
-    xor cx, cx                                ; 31 c9
-    call 091e0h                               ; e8 0e 18
-    mov word [bp-01ch], ax                    ; 89 46 e4
-    mov word [bp-01ah], dx                    ; 89 56 e6
-    mov es, [bp-012h]                         ; 8e 46 ee
+    jmp near 07dbch                           ; e9 71 02
+    mov es, [bp-01ah]                         ; 8e 46 e6
     mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
     mov byte [bp-00ch], al                    ; 88 46 f4
-    mov dl, al                                ; 88 c2
+    cmp AL, strict byte 001h                  ; 3c 01
+    jc short 07b66h                           ; 72 0c
+    jbe short 07b6eh                          ; 76 12
+    cmp AL, strict byte 003h                  ; 3c 03
+    je short 07b76h                           ; 74 16
+    cmp AL, strict byte 002h                  ; 3c 02
+    je short 07b72h                           ; 74 0e
+    jmp short 07bc2h                          ; eb 5c
+    test al, al                               ; 84 c0
+    jne short 07bc2h                          ; 75 58
+    mov BL, strict byte 090h                  ; b3 90
+    jmp short 07b78h                          ; eb 0a
+    mov BL, strict byte 098h                  ; b3 98
+    jmp short 07b78h                          ; eb 06
+    mov BL, strict byte 0a0h                  ; b3 a0
+    jmp short 07b78h                          ; eb 02
+    mov BL, strict byte 0a8h                  ; b3 a8
+    mov al, bl                                ; 88 d8
+    add AL, strict byte 007h                  ; 04 07
+    movzx cx, al                              ; 0f b6 c8
+    mov ax, cx                                ; 89 c8
+    call 0165ch                               ; e8 d8 9a
+    test al, al                               ; 84 c0
+    je short 07bc2h                           ; 74 3a
+    mov al, bl                                ; 88 d8
+    db  0feh, 0c0h
+    ; inc al                                    ; fe c0
+    xor ah, ah                                ; 30 e4
+    call 0165ch                               ; e8 cb 9a
+    xor ah, ah                                ; 30 e4
+    mov dx, ax                                ; 89 c2
+    sal dx, 008h                              ; c1 e2 08
+    movzx ax, bl                              ; 0f b6 c3
+    call 0165ch                               ; e8 be 9a
+    xor ah, ah                                ; 30 e4
+    add ax, dx                                ; 01 d0
+    cwd                                       ; 99
+    mov di, ax                                ; 89 c7
+    mov word [bp-012h], dx                    ; 89 56 ee
+    mov al, bl                                ; 88 d8
+    add AL, strict byte 002h                  ; 04 02
+    xor ah, ah                                ; 30 e4
+    call 0165ch                               ; e8 ab 9a
+    xor ah, ah                                ; 30 e4
+    mov word [bp-014h], ax                    ; 89 46 ec
+    mov ax, cx                                ; 89 c8
+    call 0165ch                               ; e8 a1 9a
+    xor ah, ah                                ; 30 e4
+    mov word [bp-01ch], ax                    ; 89 46 e4
+    jmp short 07c07h                          ; eb 45
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    cmp ax, strict word 00040h                ; 3d 40 00
+    jnbe short 07bcch                         ; 77 02
+    jne short 07bd8h                          ; 75 0c
+    mov word [bp-014h], 000ffh                ; c7 46 ec ff 00
+    mov word [bp-01ch], strict word 0003fh    ; c7 46 e4 3f 00
+    jmp short 07bf0h                          ; eb 18
+    cmp ax, strict word 00020h                ; 3d 20 00
+    jnbe short 07bdfh                         ; 77 02
+    jne short 07be6h                          ; 75 07
+    mov word [bp-014h], 00080h                ; c7 46 ec 80 00
+    jmp short 07bebh                          ; eb 05
+    mov word [bp-014h], strict word 00040h    ; c7 46 ec 40 00
+    mov word [bp-01ch], strict word 00020h    ; c7 46 e4 20 00
+    mov bx, word [bp-014h]                    ; 8b 5e ec
+    imul bx, word [bp-01ch]                   ; 0f af 5e e4
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov dx, word [bp-018h]                    ; 8b 56 e8
+    xor cx, cx                                ; 31 c9
+    call 09400h                               ; e8 fe 17
+    mov di, ax                                ; 89 c7
+    mov word [bp-012h], dx                    ; 89 56 ee
+    mov dl, byte [bp-00ch]                    ; 8a 56 f4
     add dl, 008h                              ; 80 c2 08
-    movzx bx, al                              ; 0f b6 d8
+    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     sal bx, 002h                              ; c1 e3 02
+    mov es, [bp-01ah]                         ; 8e 46 e6
     add bx, si                                ; 01 f3
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
+    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
     mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
-    mov al, byte [bp-014h]                    ; 8a 46 ec
+    mov al, byte [bp-010h]                    ; 8a 46 f0
     mov byte [es:bx+001dah], al               ; 26 88 87 da 01
     movzx ax, dl                              ; 0f b6 c2
@@ -11228,60 +11459,59 @@
     db  066h, 026h, 0c7h, 047h, 01eh, 004h, 0ffh, 000h, 000h
     ; mov dword [es:bx+01eh], strict dword 00000ff04h ; 66 26 c7 47 1e 04 ff 00 00
-    mov ax, word [bp-00eh]                    ; 8b 46 f2
+    mov ax, word [bp-016h]                    ; 8b 46 ea
     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-016h]                    ; 8b 46 ea
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     mov word [es:bx+026h], ax                 ; 26 89 47 26
-    mov ax, word [bp-018h]                    ; 8b 46 e8
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     mov word [es:bx+02ah], ax                 ; 26 89 47 2a
-    cmp word [bp-01ah], strict byte 00000h    ; 83 7e e6 00
-    jne short 07a3bh                          ; 75 07
-    cmp word [bp-01ch], 00400h                ; 81 7e e4 00 04
-    jbe short 07a43h                          ; 76 08
+    cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
+    jne short 07c63h                          ; 75 06
+    cmp di, 00400h                            ; 81 ff 00 04
+    jbe short 07c6bh                          ; 76 08
     mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
-    jmp short 07a4ah                          ; eb 07
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:bx+028h], ax                 ; 26 89 47 28
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp short 07c6fh                          ; eb 04
+    mov word [es:bx+028h], di                 ; 26 89 7f 28
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 77 9e
+    call 018e1h                               ; e8 67 9c
+    push word [bp-018h]                       ; ff 76 e8
+    push word [bp-00eh]                       ; ff 76 f2
+    push word [bp-01ch]                       ; ff 76 e4
+    push word [bp-014h]                       ; ff 76 ec
     push di                                   ; 57
     push word [bp-010h]                       ; ff 76 f0
-    push word [bp-018h]                       ; ff 76 e8
-    push word [bp-016h]                       ; ff 76 ea
-    push word [bp-01ch]                       ; ff 76 e4
-    push word [bp-014h]                       ; ff 76 ec
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
     push 00c21h                               ; 68 21 0c
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 9b 9e
+    call 01922h                               ; e8 8b 9c
     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-012h]                         ; 8e 46 ee
+    mov es, [bp-01ah]                         ; 8e 46 e6
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    mov ax, word [bp-016h]                    ; 8b 46 ea
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     mov word [es:bx+02ch], ax                 ; 26 89 47 2c
-    mov ax, word [bp-018h]                    ; 8b 46 e8
+    mov ax, word [bp-01ch]                    ; 8b 46 e4
     mov word [es:bx+030h], ax                 ; 26 89 47 30
-    cmp word [bp-01ah], strict byte 00000h    ; 83 7e e6 00
-    jne short 07a9dh                          ; 75 07
-    cmp word [bp-01ch], 00400h                ; 81 7e e4 00 04
-    jbe short 07aa5h                          ; 76 08
+    cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
+    jne short 07cc1h                          ; 75 06
+    cmp di, 00400h                            ; 81 ff 00 04
+    jbe short 07cc9h                          ; 76 08
     mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
-    jmp short 07aach                          ; eb 07
-    mov ax, word [bp-01ch]                    ; 8b 46 e4
-    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
+    jmp short 07ccdh                          ; eb 04
+    mov word [es:bx+02eh], di                 ; 26 89 7f 2e
     movzx ax, dl                              ; 0f b6 c2
     imul ax, ax, strict byte 00018h           ; 6b c0 18
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-01ah]                         ; 8e 46 e6
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov word [es:bx+032h], ax                 ; 26 89 47 32
-    mov word [es:bx+034h], di                 ; 26 89 7f 34
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    mov word [es:bx+034h], ax                 ; 26 89 47 34
     mov al, byte [es:si+0019eh]               ; 26 8a 84 9e 01
     mov ah, byte [bp-00ch]                    ; 8a 66 f4
@@ -11295,5 +11525,5 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 17 9b
+    call 01600h                               ; e8 f3 98
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -11301,24 +11531,24 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 17 9b
+    call 0160eh                               ; e8 f3 98
     inc byte [bp-00ch]                        ; fe 46 f4
     mov al, byte [bp-00ch]                    ; 8a 46 f4
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-01ah]                         ; 8e 46 e6
     mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
-    jmp near 07b96h                           ; e9 8e 00
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp near 07dbch                           ; e9 90 00
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 b9 9d
-    push word [bp-014h]                       ; ff 76 ec
+    call 018e1h                               ; e8 aa 9b
+    push word [bp-010h]                       ; ff 76 f0
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
     push 00c4bh                               ; 68 4b 0c
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 ea 9d
+    call 01922h                               ; e8 db 9b
     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
+    test byte [bp-00225h], 080h               ; f6 86 db fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
@@ -11327,14 +11557,15 @@
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     sal ax, 002h                              ; c1 e0 02
-    mov es, [bp-012h]                         ; 8e 46 ee
+    mov es, [bp-01ah]                         ; 8e 46 e6
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
+    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
     mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
-    mov al, byte [bp-014h]                    ; 8a 46 ec
+    mov al, byte [bp-010h]                    ; 8a 46 f0
     mov byte [es:bx+001dah], al               ; 26 88 87 da 01
-    movzx bx, dl                              ; 0f b6 da
-    imul bx, bx, strict byte 00018h           ; 6b db 18
-    add bx, si                                ; 01 f3
+    movzx ax, dl                              ; 0f b6 c2
+    imul ax, ax, strict byte 00018h           ; 6b c0 18
+    mov bx, si                                ; 89 f3
+    add bx, ax                                ; 01 c3
     mov word [es:bx+01eh], 00504h             ; 26 c7 47 1e 04 05
     mov byte [es:bx+020h], cl                 ; 26 88 4f 20
@@ -11352,42 +11583,42 @@
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
-    inc word [bp-014h]                        ; ff 46 ec
-    cmp word [bp-014h], strict byte 00010h    ; 83 7e ec 10
-    jnl short 07c07h                          ; 7d 68
-    mov byte [bp-028h], 012h                  ; c6 46 d8 12
+    inc word [bp-010h]                        ; ff 46 f0
+    cmp word [bp-010h], strict byte 00010h    ; 83 7e f0 10
+    jnl short 07e2dh                          ; 7d 68
+    mov byte [bp-026h], 012h                  ; c6 46 da 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-024h], al                    ; 88 46 dc
     mov byte [bp-023h], al                    ; 88 46 dd
+    mov byte [bp-022h], 005h                  ; c6 46 de 05
+    mov byte [bp-021h], al                    ; 88 46 df
     push dword 000000005h                     ; 66 6a 05
-    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
+    lea dx, [bp-00226h]                       ; 8d 96 da fd
     push SS                                   ; 16
     push dx                                   ; 52
     push strict byte 00006h                   ; 6a 06
-    movzx dx, byte [bp-014h]                  ; 0f b6 56 ec
+    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     mov cx, ss                                ; 8c d1
-    lea bx, [bp-028h]                         ; 8d 5e d8
-    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
-    call 07466h                               ; e8 96 f8
+    lea bx, [bp-026h]                         ; 8d 5e da
+    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
+    call 0761ah                               ; e8 24 f8
     test al, al                               ; 84 c0
-    je short 07be2h                           ; 74 0e
+    je short 07e08h                           ; 74 0e
     push 00b9bh                               ; 68 9b 0b
     push 00bbbh                               ; 68 bb 0b
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 2e 9d
+    call 01922h                               ; e8 1d 9b
     add sp, strict byte 00006h                ; 83 c4 06
-    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
-    jne short 07bf2h                          ; 75 09
-    test byte [bp-00228h], 01fh               ; f6 86 d8 fd 1f
-    je near 078c2h                            ; 0f 84 d0 fc
-    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
-    jne short 07b96h                          ; 75 9d
-    mov al, byte [bp-00228h]                  ; 8a 86 d8 fd
+    test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
+    jne short 07e18h                          ; 75 09
+    test byte [bp-00226h], 01fh               ; f6 86 da fd 1f
+    je near 07a76h                            ; 0f 84 5e fc
+    test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
+    jne short 07dbch                          ; 75 9d
+    mov al, byte [bp-00226h]                  ; 8a 86 da fd
     and AL, strict byte 01fh                  ; 24 1f
     cmp AL, strict byte 005h                  ; 3c 05
-    je near 07b08h                            ; 0f 84 03 ff
-    jmp short 07b96h                          ; eb 8f
+    je near 07d2ch                            ; 0f 84 01 ff
+    jmp short 07dbch                          ; eb 8f
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -11398,10 +11629,10 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf7c11 LB 0x66
+_scsi_init:                                  ; 0xf7e37 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 0161ch                               ; e8 ff 99
+    call 0161ch                               ; e8 d9 97
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
@@ -11414,10 +11645,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 07c41h                          ; 75 0c
+    jne short 07e67h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 0789eh                               ; e8 5d fc
+    call 07a52h                               ; e8 eb fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
@@ -11427,10 +11658,10 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 07c5ah                          ; 75 0c
+    jne short 07e80h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 0789eh                               ; e8 44 fc
+    call 07a52h                               ; e8 d2 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
@@ -11440,14 +11671,14 @@
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 07c73h                          ; 75 0c
+    jne short 07e99h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 0789eh                               ; e8 2b fc
+    call 07a52h                               ; e8 b9 fb
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-high_bits_save_:                             ; 0xf7c77 LB 0x17
+high_bits_save_:                             ; 0xf7e9d LB 0x17
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11461,5 +11692,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-high_bits_restore_:                          ; 0xf7c8e LB 0x17
+high_bits_restore_:                          ; 0xf7eb4 LB 0x17
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11473,5 +11704,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_set_bits_:                         ; 0xf7ca5 LB 0x43
+ahci_ctrl_set_bits_:                         ; 0xf7ecb LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11511,5 +11742,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_clear_bits_:                       ; 0xf7ce8 LB 0x47
+ahci_ctrl_clear_bits_:                       ; 0xf7f0e LB 0x47
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11551,5 +11782,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_is_bit_set_:                       ; 0xf7d2f LB 0x39
+ahci_ctrl_is_bit_set_:                       ; 0xf7f55 LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11573,9 +11804,9 @@
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 07d5bh                          ; 75 04
+    jne short 07f81h                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 07d5fh                           ; 74 04
+    je short 07f85h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 07d61h                          ; eb 02
+    jmp short 07f87h                          ; eb 02
     xor al, al                                ; 30 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11584,5 +11815,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf7d68 LB 0x1b
+ahci_ctrl_extract_bits_:                     ; 0xf7f8e LB 0x1b
     push si                                   ; 56
     push bp                                   ; 55
@@ -11592,12 +11823,12 @@
     and dx, cx                                ; 21 ca
     movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
-    jcxz 07d7eh                               ; e3 06
+    jcxz 07fa4h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07d78h                               ; e2 fa
+    loop 07f9eh                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf7d83 LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf7fa9 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -11610,5 +11841,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 07d91h                               ; e2 fa
+    loop 07fb7h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -11618,5 +11849,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf7da1 LB 0xd5
+ahci_port_cmd_sync_:                         ; 0xf7fc7 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11632,5 +11863,5 @@
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 07e6eh                            ; 0f 84 aa 00
+    je near 08094h                            ; 0f 84 aa 00
     movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
     xor dx, dx                                ; 31 d2
@@ -11644,5 +11875,5 @@
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov dx, es                                ; 8c c2
-    call 07d83h                               ; e8 96 ff
+    call 07fa9h                               ; e8 96 ff
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:si+008h], ax                 ; 26 89 44 08
@@ -11654,5 +11885,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 07ca5h                               ; e8 98 fe
+    call 07ecbh                               ; e8 98 fe
     lea ax, [si+00138h]                       ; 8d 84 38 01
     cwd                                       ; 99
@@ -11681,12 +11912,12 @@
     mov dx, si                                ; 89 f2
     mov ax, di                                ; 89 f8
-    call 07d2fh                               ; e8 e2 fe
+    call 07f55h                               ; e8 e2 fe
     test al, al                               ; 84 c0
-    je short 07e30h                           ; 74 df
+    je short 08056h                           ; 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 07ca5h                               ; e8 48 fe
+    call 07ecbh                               ; e8 48 fe
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     add dx, 00118h                            ; 81 c2 18 01
@@ -11694,5 +11925,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 07ce8h                               ; e8 7a fe
+    call 07f0eh                               ; e8 7a fe
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -11701,5 +11932,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf7e76 LB 0x1ca
+ahci_cmd_data_:                              ; 0xf809c LB 0x1ca
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11725,5 +11956,5 @@
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0924ah                               ; e8 95 13
+    call 0946ah                               ; e8 8f 13
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
@@ -11741,5 +11972,5 @@
     shr bx, 1                                 ; d1 eb
     rcr ax, 1                                 ; d1 d8
-    loop 07ee8h                               ; e2 fa
+    loop 0810eh                               ; e2 fa
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:si+00085h], al               ; 26 88 84 85 00
@@ -11766,5 +11997,5 @@
     mov bx, word [bp-016h]                    ; 8b 5e ea
     xor cx, cx                                ; 31 c9
-    call 09219h                               ; e8 c8 12
+    call 09439h                               ; e8 c2 12
     push dx                                   ; 52
     push ax                                   ; 50
@@ -11774,5 +12005,5 @@
     mov ax, 0026ah                            ; b8 6a 02
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0912bh                               ; e8 c4 11
+    call 09351h                               ; e8 c4 11
     mov es, [bp-00ah]                         ; 8e 46 f6
     movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
@@ -11794,5 +12025,5 @@
     mov es, [bp-012h]                         ; 8e 46 ee
     cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
-    je short 07fe0h                           ; 74 2c
+    je short 08206h                           ; 74 2c
     mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
     dec dx                                    ; 4a
@@ -11813,17 +12044,17 @@
     movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
     cmp ax, dx                                ; 39 d0
-    jnc short 07ffah                          ; 73 03
+    jnc short 08220h                          ; 73 03
     inc ax                                    ; 40
-    jmp short 07feah                          ; eb f0
+    jmp short 08210h                          ; eb f0
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 035h                  ; 3c 35
-    jne short 08007h                          ; 75 06
+    jne short 0822dh                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 0801bh                          ; eb 14
+    jmp short 08241h                          ; eb 14
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 08017h                          ; 75 0c
+    jne short 0823dh                          ; 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 0801bh                          ; eb 04
+    jmp short 08241h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     or byte [bp-008h], 005h                   ; 80 4e f8 05
@@ -11831,9 +12062,9 @@
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 07da1h                               ; e8 75 fd
+    call 07fc7h                               ; e8 75 fd
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     add ax, 0026ah                            ; 05 6a 02
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 091a4h                               ; e8 6c 11
+    call 093cah                               ; e8 6c 11
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -11842,5 +12073,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf8040 LB 0x144
+ahci_port_deinit_current_:                   ; 0xf8266 LB 0x144
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -11857,5 +12088,5 @@
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 0817bh                            ; 0f 84 17 01
+    je near 083a1h                            ; 0f 84 17 01
     movzx dx, al                              ; 0f b6 d0
     sal dx, 007h                              ; c1 e2 07
@@ -11864,5 +12095,5 @@
     xor cx, cx                                ; 31 c9
     mov ax, si                                ; 89 f0
-    call 07ce8h                               ; e8 70 fc
+    call 07f0eh                               ; e8 70 fc
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     sal ax, 007h                              ; c1 e0 07
@@ -11873,22 +12104,22 @@
     xor cx, cx                                ; 31 c9
     mov ax, si                                ; 89 f0
-    call 07d2fh                               ; e8 9d fc
+    call 07f55h                               ; e8 9d fc
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08078h                           ; 74 e2
+    je short 0829eh                           ; 74 e2
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 0924ah                               ; e8 a7 11
+    call 0946ah                               ; e8 a1 11
     lea ax, [di+00080h]                       ; 8d 85 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 0924ah                               ; e8 98 11
+    call 0946ah                               ; e8 92 11
     lea ax, [di+00200h]                       ; 8d 85 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 0924ah                               ; e8 89 11
+    call 0946ah                               ; e8 83 11
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     add ax, 00108h                            ; 05 08 01
@@ -11992,5 +12223,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8184 LB 0x206
+ahci_port_init_:                             ; 0xf83aa LB 0x206
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12002,5 +12233,5 @@
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 08040h                               ; e8 a8 fe
+    call 08266h                               ; e8 a8 fe
     movzx dx, bl                              ; 0f b6 d3
     sal dx, 007h                              ; c1 e2 07
@@ -12010,5 +12241,5 @@
     mov bx, strict word 00011h                ; bb 11 00
     xor cx, cx                                ; 31 c9
-    call 07ce8h                               ; e8 36 fb
+    call 07f0eh                               ; e8 36 fb
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     sal di, 007h                              ; c1 e7 07
@@ -12018,17 +12249,17 @@
     mov bx, 0c011h                            ; bb 11 c0
     xor cx, cx                                ; 31 c9
-    call 07d2fh                               ; e8 62 fb
+    call 07f55h                               ; e8 62 fb
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 081b2h                           ; 74 e1
+    je short 083d8h                           ; 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 0924ah                               ; e8 6c 10
+    call 0946ah                               ; e8 66 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 0924ah                               ; e8 5d 10
+    call 0946ah                               ; e8 57 10
     mov ax, si                                ; 89 f0
     add ah, 002h                              ; 80 c4 02
@@ -12037,5 +12268,5 @@
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0924ah                               ; e8 4a 10
+    call 0946ah                               ; e8 44 10
     lea ax, [di+00108h]                       ; 8d 85 08 01
     cwd                                       ; 99
@@ -12051,5 +12282,5 @@
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 07d83h                               ; e8 60 fb
+    call 07fa9h                               ; e8 60 fb
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
@@ -12096,5 +12327,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 07d83h                               ; e8 f4 fa
+    call 07fa9h                               ; e8 f4 fa
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
@@ -12201,5 +12432,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-@ahci_read_sectors:                          ; 0xf838a LB 0x94
+@ahci_read_sectors:                          ; 0xf85b0 LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12210,15 +12441,15 @@
     sub di, strict byte 0000ch                ; 83 ef 0c
     cmp di, strict byte 00004h                ; 83 ff 04
-    jbe short 083aeh                          ; 76 0f
+    jbe short 085d4h                          ; 76 0f
     push di                                   ; 57
     push 00c66h                               ; 68 66 0c
     push 00c78h                               ; 68 78 0c
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 62 95
+    call 01922h                               ; e8 51 93
     add sp, strict byte 00008h                ; 83 c4 08
     les bx, [bp+004h]                         ; c4 5e 04
     mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c77h                               ; e8 bc f8
+    call 07e9dh                               ; e8 bc f8
     mov es, [bp+006h]                         ; 8e 46 06
     add di, bx                                ; 01 df
@@ -12227,9 +12458,9 @@
     mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
     xor ax, ax                                ; 31 c0
-    call 08184h                               ; e8 b1 fd
+    call 083aah                               ; e8 b1 fd
     mov bx, strict word 00025h                ; bb 25 00
     mov ax, di                                ; 89 f8
     mov dx, word [bp+006h]                    ; 8b 56 06
-    call 07e76h                               ; e8 98 fa
+    call 0809ch                               ; e8 98 fa
     mov es, [bp+006h]                         ; 8e 46 06
     mov bx, di                                ; 89 fb
@@ -12251,5 +12482,5 @@
     mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c8eh                               ; e8 7b f8
+    call 07eb4h                               ; e8 7b f8
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12258,5 +12489,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-@ahci_write_sectors:                         ; 0xf841e LB 0x70
+@ahci_write_sectors:                         ; 0xf8644 LB 0x70
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12268,15 +12499,15 @@
     sub bx, strict byte 0000ch                ; 83 eb 0c
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 08446h                          ; 76 0f
+    jbe short 0866ch                          ; 76 0f
     push bx                                   ; 53
     push 00c97h                               ; 68 97 0c
     push 00c78h                               ; 68 78 0c
     push strict byte 00007h                   ; 6a 07
-    call 0190dh                               ; e8 ca 94
+    call 01922h                               ; e8 b9 92
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, cx                                ; 8e c1
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c77h                               ; e8 25 f8
+    call 07e9dh                               ; e8 25 f8
     mov es, cx                                ; 8e c1
     add bx, si                                ; 01 f3
@@ -12284,9 +12515,9 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 08184h                               ; e8 1e fd
+    call 083aah                               ; e8 1e fd
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 07e76h                               ; e8 06 fa
+    call 0809ch                               ; e8 06 fa
     mov es, cx                                ; 8e c1
     mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
@@ -12294,5 +12525,5 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 07c8eh                               ; e8 0a f8
+    call 07eb4h                               ; e8 0a f8
     xor ax, ax                                ; 31 c0
     lea sp, [bp-002h]                         ; 8d 66 fe
@@ -12300,5 +12531,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf848e LB 0x173
+ahci_cmd_packet_:                            ; 0xf86b4 LB 0x173
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12312,22 +12543,22 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 73 91
+    call 0161ch                               ; e8 4d 8f
     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 084d4h                          ; 75 1f
-    mov bx, 00da6h                            ; bb a6 0d
+    jne short 086fah                          ; 75 1f
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 0c 94
+    call 018e1h                               ; e8 fb 91
     push 00caah                               ; 68 aa 0c
     push 00cbah                               ; 68 ba 0c
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 42 94
+    call 01922h                               ; e8 31 92
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 085f8h                           ; e9 24 01
+    jmp near 0881eh                           ; e9 24 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 084ceh                          ; 75 f4
+    jne short 086f4h                          ; 75 f4
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
@@ -12335,5 +12566,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 084e3h                               ; e2 fa
+    loop 08709h                               ; e2 fa
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si], ax                      ; 26 89 04
@@ -12347,5 +12578,5 @@
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 091e0h                               ; e8 d0 0c
+    call 09400h                               ; e8 ca 0c
     mov word [es:si+00ah], ax                 ; 26 89 44 0a
     xor di, di                                ; 31 ff
@@ -12357,5 +12588,5 @@
     xor ax, ax                                ; 31 c0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 07c77h                               ; e8 47 f7
+    call 07e9dh                               ; e8 47 f7
     mov es, [bp-008h]                         ; 8e 46 f8
     mov bx, word [bp-014h]                    ; 8b 5e ec
@@ -12364,5 +12595,5 @@
     mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     xor ax, ax                                ; 31 c0
-    call 08184h                               ; e8 3c fc
+    call 083aah                               ; e8 3c fc
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
@@ -12371,5 +12602,5 @@
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09257h                               ; e8 fb 0c
+    call 09477h                               ; e8 f5 0c
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si+014h], di                 ; 26 89 7c 14
@@ -12378,5 +12609,5 @@
     mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
     test ax, ax                               ; 85 c0
-    je short 0859ah                           ; 74 27
+    je short 087c0h                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -12391,5 +12622,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 07e76h                               ; e8 d1 f8
+    call 0809ch                               ; e8 d1 f8
     les bx, [bp-00eh]                         ; c4 5e f2
     mov ax, word [es:bx+004h]                 ; 26 8b 47 04
@@ -12414,11 +12645,11 @@
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 07c8eh                               ; e8 aa f6
+    call 07eb4h                               ; e8 aa f6
     les bx, [bp-00eh]                         ; c4 5e f2
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 085f6h                          ; 75 05
+    jne short 0881ch                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 085f8h                          ; eb 02
+    jmp short 0881eh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12427,5 +12658,5 @@
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf8601 LB 0x3d1
+ahci_port_detect_device_:                    ; 0xf8827 LB 0x3d1
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12439,8 +12670,8 @@
     movzx cx, bl                              ; 0f b6 cb
     mov bx, cx                                ; 89 cb
-    call 08184h                               ; e8 69 fb
+    call 083aah                               ; e8 69 fb
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 f8 8f
+    call 0161ch                               ; e8 d2 8d
     mov word [bp-020h], ax                    ; 89 46 e0
     mov si, 00122h                            ; be 22 01
@@ -12515,12 +12746,12 @@
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 07d68h                               ; e8 90 f6
+    call 07f8eh                               ; e8 90 f6
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne near 089cah                           ; 0f 85 eb 02
+    jne near 08bf0h                           ; 0f 85 eb 02
     mov es, [bp-00eh]                         ; 8e 46 f2
     mov al, byte [es:si+001edh]               ; 26 8a 84 ed 01
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 089cah                           ; 0f 83 da 02
+    jnc near 08bf0h                           ; 0f 83 da 02
     mov dx, word [bp-01ch]                    ; 8b 56 e4
     add dx, 00118h                            ; 81 c2 18 01
@@ -12529,5 +12760,5 @@
     mov bx, strict word 00010h                ; bb 10 00
     xor cx, cx                                ; 31 c9
-    call 07ca5h                               ; e8 9e f5
+    call 07ecbh                               ; e8 9e f5
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     add ax, 00124h                            ; 05 24 01
@@ -12555,7 +12786,7 @@
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne near 0891ch                           ; 0f 85 d5 01
+    jne near 08b42h                           ; 0f 85 d5 01
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne near 0891ch                           ; 0f 85 cd 01
+    jne near 08b42h                           ; 0f 85 cd 01
     mov es, [bp-00eh]                         ; 8e 46 f2
     db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
@@ -12569,5 +12800,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-020h]                    ; 8b 56 e0
-    call 07e76h                               ; e8 fc f6
+    call 0809ch                               ; e8 fc f6
     mov byte [bp-00ch], cl                    ; 88 4e f4
     test byte [bp-00228h], 080h               ; f6 86 d8 fd 80
@@ -12585,7 +12816,7 @@
     mov word [bp-014h], dx                    ; 89 56 ec
     cmp dx, 00fffh                            ; 81 fa ff 0f
-    jne short 087bdh                          ; 75 10
+    jne short 089e3h                          ; 75 10
     cmp di, strict byte 0ffffh                ; 83 ff ff
-    jne short 087bdh                          ; 75 0b
+    jne short 089e3h                          ; 75 0b
     mov di, word [bp-00160h]                  ; 8b be a0 fe
     mov dx, word [bp-0015eh]                  ; 8b 96 a2 fe
@@ -12616,19 +12847,19 @@
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08828h                           ; 72 0c
-    jbe short 08830h                          ; 76 12
+    jc short 08a4eh                           ; 72 0c
+    jbe short 08a56h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08838h                           ; 74 16
+    je short 08a5eh                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 08834h                           ; 74 0e
-    jmp short 08881h                          ; eb 59
+    je short 08a5ah                           ; 74 0e
+    jmp short 08aa7h                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 08881h                          ; 75 55
+    jne short 08aa7h                          ; 75 55
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 0883ah                          ; eb 0a
+    jmp short 08a60h                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 0883ah                          ; eb 06
+    jmp short 08a60h                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 0883ah                          ; eb 02
+    jmp short 08a60h                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov al, dl                                ; 88 d0
@@ -12636,17 +12867,17 @@
     movzx bx, al                              ; 0f b6 d8
     mov ax, bx                                ; 89 d8
-    call 0165ch                               ; e8 16 8e
+    call 0165ch                               ; e8 f0 8b
     test al, al                               ; 84 c0
-    je short 08881h                           ; 74 37
+    je short 08aa7h                           ; 74 37
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 09 8e
+    call 0165ch                               ; e8 e3 8b
     xor ah, ah                                ; 30 e4
     mov cx, ax                                ; 89 c1
     sal cx, 008h                              ; c1 e1 08
     movzx ax, dl                              ; 0f b6 c2
-    call 0165ch                               ; e8 fc 8d
+    call 0165ch                               ; e8 d6 8b
     xor ah, ah                                ; 30 e4
     add ax, cx                                ; 01 c8
@@ -12655,21 +12886,21 @@
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 0165ch                               ; e8 ec 8d
+    call 0165ch                               ; e8 c6 8b
     xor ah, ah                                ; 30 e4
     mov word [bp-028h], ax                    ; 89 46 d8
     mov ax, bx                                ; 89 d8
-    call 0165ch                               ; e8 e2 8d
+    call 0165ch                               ; e8 bc 8b
     xor ah, ah                                ; 30 e4
     mov word [bp-024h], ax                    ; 89 46 dc
-    jmp short 0888eh                          ; eb 0d
+    jmp short 08ab4h                          ; eb 0d
     mov bx, di                                ; 89 fb
     mov cx, word [bp-014h]                    ; 8b 4e ec
     mov dx, ss                                ; 8c d2
     lea ax, [bp-028h]                         ; 8d 46 d8
-    call 0532ch                               ; e8 9e ca
-    mov bx, 00da6h                            ; bb a6 0d
+    call 0534bh                               ; e8 97 c8
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 33 90
+    call 018e1h                               ; e8 22 8e
     push word [bp-014h]                       ; ff 76 ec
     push di                                   ; 57
@@ -12688,5 +12919,5 @@
     push 00cdah                               ; 68 da 0c
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 4b 90
+    call 01922h                               ; e8 3a 8e
     add sp, strict byte 00018h                ; 83 c4 18
     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
@@ -12716,5 +12947,5 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01600h                               ; e8 f5 8c
+    call 01600h                               ; e8 cf 8a
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
@@ -12722,10 +12953,10 @@
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0160eh                               ; e8 f5 8c
-    jmp near 089b9h                           ; e9 9d 00
+    call 0160eh                               ; e8 cf 8a
+    jmp near 08bdfh                           ; e9 9d 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne near 089b9h                           ; 0f 85 95 00
+    jne near 08bdfh                           ; 0f 85 95 00
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne near 089b9h                           ; 0f 85 8d 00
+    jne near 08bdfh                           ; 0f 85 8d 00
     mov es, [bp-00eh]                         ; 8e 46 f2
     db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
@@ -12739,5 +12970,5 @@
     mov ax, si                                ; 89 f0
     mov dx, word [bp-020h]                    ; 8b 56 e0
-    call 07e76h                               ; e8 1f f5
+    call 0809ch                               ; e8 1f f5
     test byte [bp-00228h], 080h               ; f6 86 d8 fd 80
     db  00fh, 095h, 0c0h
@@ -12780,5 +13011,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf89d2 LB 0x43
+ahci_mem_alloc_:                             ; 0xf8bf8 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12790,7 +13021,7 @@
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0161ch                               ; e8 3a 8c
+    call 0161ch                               ; e8 14 8a
     test ax, ax                               ; 85 c0
-    je short 08a0bh                           ; 74 25
+    je short 08c31h                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
@@ -12799,5 +13030,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 089eeh                               ; e2 fa
+    loop 08c14h                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
@@ -12805,8 +13036,8 @@
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 089fbh                               ; e2 fa
+    loop 08c21h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0162ah                               ; e8 21 8c
+    call 0162ah                               ; e8 fb 89
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -12818,5 +13049,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf8a15 LB 0x125
+ahci_hba_init_:                              ; 0xf8c3b LB 0x125
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12830,5 +13061,5 @@
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0161ch                               ; e8 f1 8b
+    call 0161ch                               ; e8 cb 89
     mov bx, 00122h                            ; bb 22 01
     mov word [bp-010h], ax                    ; 89 46 f0
@@ -12847,8 +13078,8 @@
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 089d2h                               ; e8 82 ff
+    call 08bf8h                               ; e8 82 ff
     mov di, ax                                ; 89 c7
     test ax, ax                               ; 85 c0
-    je near 08b19h                            ; 0f 84 c1 00
+    je near 08d3fh                            ; 0f 84 c1 00
     mov es, [bp-010h]                         ; 8e 46 f0
     mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
@@ -12864,5 +13095,5 @@
     mov dx, strict word 00004h                ; ba 04 00
     mov ax, si                                ; 89 f0
-    call 07ca5h                               ; e8 19 f2
+    call 07ecbh                               ; e8 19 f2
     mov ax, strict word 00004h                ; b8 04 00
     xor cx, cx                                ; 31 c9
@@ -12881,5 +13112,5 @@
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 08a8ch                          ; 75 de
+    jne short 08cb2h                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
@@ -12899,33 +13130,33 @@
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 07d68h                               ; e8 96 f2
+    call 07f8eh                               ; e8 96 f2
     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 08ae6h                          ; eb 09
+    jmp short 08d0ch                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
-    jnc short 08b17h                          ; 73 31
+    jnc short 08d3dh                          ; 73 31
     movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
     mov ax, strict word 00001h                ; b8 01 00
     xor dx, dx                                ; 31 d2
-    jcxz 08af7h                               ; e3 06
+    jcxz 08d1dh                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08af1h                               ; e2 fa
+    loop 08d17h                               ; 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 07d2fh                               ; e8 2c f2
+    call 07f55h                               ; e8 2c f2
     test al, al                               ; 84 c0
-    je short 08addh                           ; 74 d6
+    je short 08d03h                           ; 74 d6
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     xor ax, ax                                ; 31 c0
     mov dx, di                                ; 89 fa
-    call 08601h                               ; e8 ef fa
+    call 08827h                               ; e8 ef fa
     dec byte [bp-00eh]                        ; fe 4e f2
-    jne short 08addh                          ; 75 c6
+    jne short 08d03h                          ; 75 c6
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -12937,7 +13168,7 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 009h, 08ch, 0e7h, 08bh, 0edh, 08bh, 0f3h, 08bh, 0f9h
-    db  08bh, 0ffh, 08bh, 005h, 08ch, 009h, 08ch
-_ahci_init:                                  ; 0xf8b3a LB 0xfe
+    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 02fh, 08eh, 00dh, 08eh, 013h, 08eh, 019h, 08eh, 01fh
+    db  08eh, 025h, 08eh, 02bh, 08eh, 02fh, 08eh
+_ahci_init:                                  ; 0xf8d60 LB 0xfe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12947,8 +13178,8 @@
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 09058h                               ; e8 0d 05
+    call 0927eh                               ; e8 0d 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je near 08c31h                            ; 0f 84 dd 00
+    je near 08e57h                            ; 0f 84 dd 00
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
@@ -12958,8 +13189,8 @@
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 09083h                               ; e8 1a 05
+    call 092a9h                               ; e8 1a 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 08b92h                           ; 74 23
+    je short 08db8h                           ; 74 23
     movzx bx, cl                              ; 0f b6 d9
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
@@ -12967,7 +13198,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 09083h                               ; e8 02 05
+    call 092a9h                               ; e8 02 05
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 08b92h                           ; 74 0d
+    je short 08db8h                           ; 74 0d
     mov al, cl                                ; 88 c8
     db  0feh, 0c0h
@@ -12976,7 +13207,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    jmp short 08b66h                          ; eb d4
+    jmp short 08d8ch                          ; eb d4
     test cl, cl                               ; 84 c9
-    je near 08c31h                            ; 0f 84 99 00
+    je near 08e57h                            ; 0f 84 99 00
     add cl, 002h                              ; 80 c1 02
     movzx bx, cl                              ; 0f b6 d9
@@ -12985,7 +13216,7 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 09083h                               ; e8 d6 04
+    call 092a9h                               ; e8 d6 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne near 08c31h                           ; 0f 85 7e 00
+    jne near 08e57h                           ; 0f 85 7e 00
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov al, cl                                ; 88 c8
@@ -12994,29 +13225,29 @@
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 090a7h                               ; e8 e2 04
+    call 092cdh                               ; 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 08c09h                         ; 77 37
+    jnbe short 08e2fh                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 08b23h                            ; bf 23 8b
+    mov di, 08d49h                            ; bf 49 8d
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-074d6h]               ; 2e 8b 85 2a 8b
+    mov ax, word [cs:di-072b0h]               ; 2e 8b 85 50 8d
     jmp ax                                    ; ff e0
     mov byte [bp-006h], 010h                  ; c6 46 fa 10
-    jmp short 08c09h                          ; eb 1c
+    jmp short 08e2fh                          ; eb 1c
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 08c09h                          ; eb 16
+    jmp short 08e2fh                          ; eb 16
     mov byte [bp-006h], 018h                  ; c6 46 fa 18
-    jmp short 08c09h                          ; eb 10
+    jmp short 08e2fh                          ; eb 10
     mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
-    jmp short 08c09h                          ; eb 0a
+    jmp short 08e2fh                          ; eb 0a
     mov byte [bp-006h], 020h                  ; c6 46 fa 20
-    jmp short 08c09h                          ; eb 04
+    jmp short 08e2fh                          ; eb 04
     mov byte [bp-006h], 024h                  ; c6 46 fa 24
     mov si, dx                                ; 89 d6
@@ -13025,14 +13256,14 @@
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test al, al                               ; 84 c0
-    je short 08c31h                           ; 74 19
+    je short 08e57h                           ; 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 090c9h                               ; e8 a3 04
+    call 092efh                               ; e8 a3 04
     test AL, strict byte 001h                 ; a8 01
-    je short 08c31h                           ; 74 07
+    je short 08e57h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, si                                ; 01 f0
-    call 08a15h                               ; e8 e4 fd
+    call 08c3bh                               ; e8 e4 fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -13040,5 +13271,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf8c38 LB 0x39
+apm_out_str_:                                ; 0xf8e5e LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13046,5 +13277,5 @@
     mov bx, ax                                ; 89 c3
     cmp byte [bx], 000h                       ; 80 3f 00
-    je short 08c4dh                           ; 74 0a
+    je short 08e73h                           ; 74 0a
     mov al, byte [bx]                         ; 8a 07
     out DX, AL                                ; ee
@@ -13053,26 +13284,27 @@
     db  00ah, 0c0h
     ; or al, al                                 ; 0a c0
-    jne short 08c45h                          ; 75 f8
+    jne short 08e6bh                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    xchg sp, ax                               ; 94
-    mov [bx+si-073h], fs                      ; 8c 60 8d
-    cmpsb                                     ; a6
-    mov cx, es                                ; 8c c1
-    mov [bx+si-073h], fs                      ; 8c 60 8d
-    in AL, DX                                 ; ec
-    mov [bx+si-073h], fs                      ; 8c 60 8d
-    db  0f1h
-    db  08ch
-    xor ax, 0358dh                            ; 35 8d 35
-    lea si, [di]                              ; 8d 35
-    lea si, [bx+si]                           ; 8d 30
-    lea si, [di]                              ; 8d 35
-    lea si, [di]                              ; 8d 35
-    lea bp, [bx+di]                           ; 8d 29
-    db  08dh
-_apm_function:                               ; 0xf8c71 LB 0xf5
+    mov dx, 0868eh                            ; ba 8e 86
+    db  08fh, 0cch
+    ; pop sp                                    ; 8f cc
+    mov fs, di                                ; 8e e7
+    mov es, [bp+0128fh]                       ; 8e 86 8f 12
+    pop word [bp+0178fh]                      ; 8f 86 8f 17
+    db  08fh, 05bh, 08fh
+    ; pop word [bp+di-071h]                     ; 8f 5b 8f
+    pop bx                                    ; 5b
+    db  08fh, 05bh, 08fh
+    ; pop word [bp+di-071h]                     ; 8f 5b 8f
+    push si                                   ; 56
+    db  08fh, 05bh, 08fh
+    ; pop word [bp+di-071h]                     ; 8f 5b 8f
+    pop bx                                    ; 5b
+    db  08fh, 04fh, 08fh
+    ; pop word [bx-071h]                        ; 8f 4f 8f
+_apm_function:                               ; 0xf8e97 LB 0xf5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13082,21 +13314,21 @@
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    jnbe near 08d35h                          ; 0f 87 b0 00
+    jnbe near 08f5bh                          ; 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-073adh]                   ; 2e ff a7 53 8c
+    jmp word [cs:bx-07187h]                   ; 2e ff a7 79 8e
     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 08d60h                           ; e9 ba 00
+    jmp near 08f86h                           ; e9 ba 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
-    mov word [bp+00ch], 092c4h                ; c7 46 0c c4 92
+    mov word [bp+00ch], 094e4h                ; c7 46 0c e4 94
     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 08d60h                           ; e9 9f 00
+    jmp near 08f86h                           ; e9 9f 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
@@ -13111,41 +13343,41 @@
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 08d60h                           ; e9 74 00
+    jmp near 08f86h                           ; e9 74 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 08d60h                           ; e9 6f 00
+    jmp near 08f86h                           ; e9 6f 00
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 08d16h                           ; 74 1f
+    je short 08f3ch                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 08d0eh                           ; 74 11
+    je short 08f34h                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 08d1eh                          ; 75 1b
+    jne short 08f44h                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d12h                            ; b8 12 0d
-    call 08c38h                               ; e8 2c ff
-    jmp short 08d60h                          ; eb 52
+    call 08e5eh                               ; e8 2c ff
+    jmp short 08f86h                          ; eb 52
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d1ah                            ; b8 1a 0d
-    jmp short 08d09h                          ; eb f3
+    jmp short 08f2fh                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d22h                            ; b8 22 0d
-    jmp short 08d09h                          ; eb eb
+    jmp short 08f2fh                          ; 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 08d60h                          ; eb 37
+    jmp short 08f86h                          ; eb 37
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 08d60h                          ; eb 30
+    jmp short 08f86h                          ; eb 30
     or ah, 080h                               ; 80 cc 80
-    jmp short 08d21h                          ; eb ec
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp short 08f47h                          ; eb ec
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 8c 8b
+    call 018e1h                               ; e8 7b 89
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     push 00d2bh                               ; 68 2b 0d
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 bf 8b
+    call 01922h                               ; e8 ae 89
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -13158,5 +13390,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_select_reg_:                           ; 0xf8d66 LB 0x24
+pci16_select_reg_:                           ; 0xf8f8c LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13175,5 +13407,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf8d8a LB 0xf7
+pci16_find_device_:                          ; 0xf8fb0 LB 0xf7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13189,8 +13421,8 @@
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     test bl, 007h                             ; f6 c3 07
-    jne short 08dd2h                          ; 75 2d
+    jne short 08ff8h                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 08d66h                               ; e8 b9 ff
+    call 08f8ch                               ; e8 b9 ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -13199,23 +13431,23 @@
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 08dc0h                          ; 75 06
+    jne short 08fe6h                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 08e53h                           ; e9 93 00
+    jmp near 09079h                           ; e9 93 00
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 08dcdh                           ; 74 07
+    je short 08ff3h                           ; 74 07
     mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
-    jmp short 08dd2h                          ; eb 05
+    jmp short 08ff8h                          ; 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 08dfah                          ; 75 1f
+    jne short 09020h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 08dfah                          ; 75 16
+    jne short 09020h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 08d66h                               ; e8 7a ff
+    call 08f8ch                               ; e8 7a ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
@@ -13223,13 +13455,13 @@
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-008h]                    ; 3a 46 f8
-    jbe short 08dfah                          ; 76 03
+    jbe short 09020h                          ; 76 03
     mov byte [bp-008h], al                    ; 88 46 f8
     test di, di                               ; 85 ff
-    je short 08e03h                           ; 74 05
+    je short 09029h                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 08e05h                          ; eb 02
+    jmp short 0902bh                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 08d66h                               ; e8 5c ff
+    call 08f8ch                               ; e8 5c ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -13242,22 +13474,22 @@
     mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
     test di, di                               ; 85 ff
-    je short 08e34h                           ; 74 0f
+    je short 0905ah                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 08e28h                               ; e2 fa
+    loop 0904eh                               ; 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 08e44h                          ; 75 08
+    jne short 0906ah                          ; 75 08
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 08e4ah                           ; 74 06
+    je short 09070h                           ; 74 06
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    je short 08e50h                           ; 74 06
+    je short 09076h                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 08e62h                           ; 74 12
+    je short 09088h                           ; 74 12
     add bx, word [bp-00ah]                    ; 03 5e f6
     mov dx, bx                                ; 89 da
@@ -13265,9 +13497,9 @@
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cmp dx, ax                                ; 39 c2
-    jbe near 08da0h                           ; 0f 86 3e ff
+    jbe near 08fc6h                           ; 0f 86 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 08e6bh                          ; 75 04
+    jne short 09091h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 08e6eh                          ; eb 03
+    jmp short 09094h                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -13276,12 +13508,10 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    arpl word [bx-07083h], cx                 ; 63 8f 7d 8f
-    nop                                       ; 90
-    db  08fh, 0a5h, 08fh, 0b8h
-    ; pop word [di-04771h]                      ; 8f a5 8f b8
-    db  08fh, 0cbh
-    ; pop bx                                    ; 8f cb
-    db  08fh
-_pci16_function:                             ; 0xf8e81 LB 0x1d7
+    mov word [bx+di-06e5dh], dx               ; 89 91 a3 91
+    mov DH, strict byte 091h                  ; b6 91
+    retf                                      ; cb
+    xchg cx, ax                               ; 91
+    ficom word [bx+di-06e0fh]                 ; de 91 f1 91
+_pci16_function:                             ; 0xf90a7 LB 0x1d7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13297,17 +13527,17 @@
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 08ebah                           ; 72 1a
-    jbe short 08f12h                          ; 76 70
+    jc short 090e0h                           ; 72 1a
+    jbe short 09138h                          ; 76 70
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je near 08fdfh                            ; 0f 84 36 01
+    je near 09205h                            ; 0f 84 36 01
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc near 09024h                            ; 0f 82 74 01
+    jc near 0924ah                            ; 0f 82 74 01
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe near 08f37h                           ; 0f 86 80 00
-    jmp near 09024h                           ; e9 6a 01
+    jbe near 0915dh                           ; 0f 86 80 00
+    jmp near 0924ah                           ; e9 6a 01
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 08ee2h                           ; 74 23
+    je short 09108h                           ; 74 23
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jne near 09024h                           ; 0f 85 5e 01
+    jne near 0924ah                           ; 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
@@ -13315,49 +13545,49 @@
     mov word [bp+018h], 04350h                ; c7 46 18 50 43
     mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
-    jmp near 09051h                           ; e9 6f 01
+    jmp near 09277h                           ; e9 6f 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 08eeeh                          ; 75 06
+    jne short 09114h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 0904ah                           ; e9 5c 01
+    jmp near 09270h                           ; 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 08d8ah                               ; e8 8e fe
+    call 08fb0h                               ; e8 8e fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 08f0ch                          ; 75 0b
+    jne short 09132h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 0904ah                           ; e9 3e 01
+    jmp near 09270h                           ; e9 3e 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09051h                           ; e9 3f 01
+    jmp near 09277h                           ; 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 08d8ah                               ; e8 69 fe
+    call 08fb0h                               ; e8 69 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 08f31h                          ; 75 0b
+    jne short 09157h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 0904ah                           ; e9 19 01
+    jmp near 09270h                           ; e9 19 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09051h                           ; e9 1a 01
+    jmp near 09277h                           ; e9 1a 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 08f44h                           ; 72 06
+    jc short 0916ah                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 0904ah                           ; e9 06 01
+    jmp near 09270h                           ; e9 06 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 08d66h                               ; e8 19 fe
+    call 08f8ch                               ; 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 09051h                          ; 0f 87 f5 00
+    jnbe near 09277h                          ; 0f 87 f5 00
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-0718bh]                   ; 2e ff a7 75 8e
+    jmp word [cs:bx-06f65h]                   ; 2e ff a7 9b 90
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
@@ -13370,5 +13600,5 @@
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp near 09051h                           ; e9 d4 00
+    jmp near 09277h                           ; e9 d4 00
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
@@ -13377,5 +13607,5 @@
     in ax, DX                                 ; ed
     mov word [bp+01ch], ax                    ; 89 46 1c
-    jmp near 09051h                           ; e9 c1 00
+    jmp near 09277h                           ; e9 c1 00
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
@@ -13386,5 +13616,5 @@
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp near 09051h                           ; e9 ac 00
+    jmp near 09277h                           ; e9 ac 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -13393,5 +13623,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp near 09051h                           ; e9 99 00
+    jmp near 09277h                           ; e9 99 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -13400,5 +13630,5 @@
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp near 09051h                           ; e9 86 00
+    jmp near 09277h                           ; e9 86 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov cx, word [bp+01eh]                    ; 8b 4e 1e
@@ -13409,12 +13639,12 @@
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09051h                          ; eb 72
+    jmp short 09277h                          ; eb 72
     mov bx, word [bp+004h]                    ; 8b 5e 04
     mov es, [bp+026h]                         ; 8e 46 26
     mov word [bp-008h], bx                    ; 89 5e f8
     mov [bp-006h], es                         ; 8c 46 fa
-    mov cx, word [word 00000h]                ; 8b 0e 00 00
+    mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 09005h                          ; 76 11
+    jbe short 0922bh                          ; 76 11
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -13422,5 +13652,5 @@
     mov word [bp+020h], ax                    ; 89 46 20
     or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
-    jmp short 09019h                          ; eb 14
+    jmp short 0923fh                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
@@ -13431,12 +13661,12 @@
     pop DS                                    ; 1f
     mov word [bp+014h], 00a00h                ; c7 46 14 00 0a
-    mov ax, word [00000h]                     ; a1 00 00
+    mov ax, word [0f4a0h]                     ; a1 a0 f4
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 09051h                          ; eb 2d
-    mov bx, 00da6h                            ; bb a6 0d
+    jmp short 09277h                          ; eb 2d
+    mov bx, 00da2h                            ; bb a2 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 018cch                               ; e8 9d 88
+    call 018e1h                               ; e8 8c 86
     mov ax, word [bp+014h]                    ; 8b 46 14
     push ax                                   ; 50
@@ -13445,5 +13675,5 @@
     push 00d5eh                               ; 68 5e 0d
     push strict byte 00004h                   ; 6a 04
-    call 0190dh                               ; e8 ce 88
+    call 01922h                               ; e8 bd 86
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -13457,5 +13687,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf9058 LB 0x2b
+pci_find_classcode_:                         ; 0xf927e LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13472,5 +13702,5 @@
     int 01ah                                  ; cd 1a
     cmp ah, 000h                              ; 80 fc 00
-    je near 09079h                            ; 0f 84 03 00
+    je near 0929fh                            ; 0f 84 03 00
     mov bx, strict word 0ffffh                ; bb ff ff
     mov ax, bx                                ; 89 d8
@@ -13481,5 +13711,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf9083 LB 0x24
+pci_read_config_byte_:                       ; 0xf92a9 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13500,5 +13730,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf90a7 LB 0x22
+pci_read_config_word_:                       ; 0xf92cd LB 0x22
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13519,5 +13749,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf90c9 LB 0x27
+pci_read_config_dword_:                      ; 0xf92ef LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13540,5 +13770,5 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf90f0 LB 0x1d
+vds_is_present_:                             ; 0xf9316 LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
@@ -13548,5 +13778,5 @@
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 09108h                           ; 74 06
+    je short 0932eh                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
@@ -13557,5 +13787,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf910d LB 0x1e
+vds_real_to_lin_:                            ; 0xf9333 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
@@ -13568,5 +13798,5 @@
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0911bh                               ; e2 fa
+    loop 09341h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
@@ -13576,5 +13806,5 @@
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf912b LB 0x79
+vds_build_sg_list_:                          ; 0xf9351 LB 0x79
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13590,21 +13820,21 @@
     mov bx, word [bp+006h]                    ; 8b 5e 06
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 0910dh                               ; e8 c3 ff
+    call 09333h                               ; 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 090f0h                               ; e8 93 ff
+    call 09316h                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 09174h                           ; 74 13
+    je short 0939ah                           ; 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 09171h                            ; 0f 82 02 00
+    jc near 09397h                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 0919bh                          ; eb 27
+    jmp short 093c1h                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
@@ -13623,5 +13853,5 @@
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf91a4 LB 0x3c
+vds_free_sg_list_:                           ; 0xf93ca LB 0x36
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13629,7 +13859,7 @@
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 090f0h                               ; e8 42 ff
+    call 09316h                               ; e8 42 ff
     test ax, ax                               ; 85 c0
-    je short 091c5h                           ; 74 13
+    je short 093ebh                           ; 74 13
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
@@ -13637,5 +13867,5 @@
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 091c4h                            ; 0f 82 02 00
+    jc near 093eah                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
@@ -13648,6 +13878,6 @@
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0xc db 0
-__U4D:                                       ; 0xf91e0 LB 0x39
+    times 0x6 db 0
+__U4D:                                       ; 0xf9400 LB 0x39
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -13679,5 +13909,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-__U4M:                                       ; 0xf9219 LB 0x31
+__U4M:                                       ; 0xf9439 LB 0x31
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -13704,5 +13934,5 @@
     popfw                                     ; 9d
     retn                                      ; c3
-_fmemset_:                                   ; 0xf924a LB 0xd
+_fmemset_:                                   ; 0xf946a LB 0xd
     push di                                   ; 57
     mov es, dx                                ; 8e c2
@@ -13714,5 +13944,5 @@
     pop di                                    ; 5f
     retn                                      ; c3
-_fmemcpy_:                                   ; 0xf9257 LB 0x33
+_fmemcpy_:                                   ; 0xf9477 LB 0x33
     push bp                                   ; 55
     db  08bh, 0ech
@@ -13734,24 +13964,20 @@
     leave                                     ; c9
     retn                                      ; c3
-    add byte [bx+si-05d6eh], ah               ; 00 a0 92 a2
-    xchg dx, ax                               ; 92
-    cmpsb                                     ; a6
-    xchg dx, ax                               ; 92
-    cmpsb                                     ; a6
-    xchg dx, ax                               ; 92
-    cmpsb                                     ; a6
-    xchg dx, ax                               ; 92
-    test AL, strict byte 092h                 ; a8 92
-    test AL, strict byte 092h                 ; a8 92
-    stosb                                     ; aa
-    xchg dx, ax                               ; 92
-    scasb                                     ; ae
-    xchg dx, ax                               ; 92
-    scasb                                     ; ae
-    xchg dx, ax                               ; 92
-    mov AL, strict byte 092h                  ; b0 92
-    mov CH, strict byte 092h                  ; b5 92
-    mov BH, strict byte 092h                  ; b7 92
-apm_worker:                                  ; 0xf928a LB 0x3a
+    add al, al                                ; 00 c0
+    xchg sp, ax                               ; 94
+    retn 0c694h                               ; c2 94 c6
+    xchg sp, ax                               ; 94
+    db  0c6h, 094h, 0c6h, 094h, 0c8h
+    ; mov byte [si-06b3ah], 0c8h                ; c6 94 c6 94 c8
+    xchg sp, ax                               ; 94
+    enter 0ca94h, 094h                        ; c8 94 ca 94
+    into                                      ; ce
+    xchg sp, ax                               ; 94
+    into                                      ; ce
+    xchg sp, ax                               ; 94
+    rcl byte [si-06b2bh], 1                   ; d0 94 d5 94
+    xlatb                                     ; d7
+    xchg sp, ax                               ; 94
+apm_worker:                                  ; 0xf94aa LB 0x3a
     sti                                       ; fb
     push ax                                   ; 50
@@ -13765,21 +13991,21 @@
     pop ax                                    ; 58
     mov AH, strict byte 053h                  ; b4 53
-    jnc short 092c0h                          ; 73 25
-    jmp word [cs:bp-06d90h]                   ; 2e ff a6 70 92
-    jmp short 092beh                          ; eb 1c
+    jnc short 094e0h                          ; 73 25
+    jmp word [cs:bp-06b70h]                   ; 2e ff a6 90 94
+    jmp short 094deh                          ; eb 1c
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 092beh                          ; eb 18
-    jmp short 092beh                          ; eb 16
-    jmp short 092c0h                          ; eb 16
+    jmp short 094deh                          ; eb 18
+    jmp short 094deh                          ; eb 16
+    jmp short 094e0h                          ; eb 16
     mov AH, strict byte 080h                  ; b4 80
-    jmp short 092c2h                          ; eb 14
-    jmp short 092c0h                          ; eb 10
+    jmp short 094e2h                          ; eb 14
+    jmp short 094e0h                          ; eb 10
     mov ax, 00102h                            ; b8 02 01
-    jmp short 092beh                          ; eb 09
-    jmp short 092beh                          ; eb 07
+    jmp short 094deh                          ; eb 09
+    jmp short 094deh                          ; eb 07
     mov BL, strict byte 000h                  ; b3 00
     mov cx, strict word 00000h                ; b9 00 00
-    jmp short 092beh                          ; eb 00
+    jmp short 094deh                          ; eb 00
     clc                                       ; f8
     retn                                      ; c3
@@ -13787,5 +14013,5 @@
     stc                                       ; f9
     retn                                      ; c3
-apm_pm16_entry:                              ; 0xf92c4 LB 0x11
+apm_pm16_entry:                              ; 0xf94e4 LB 0x11
     mov AH, strict byte 002h                  ; b4 02
     push DS                                   ; 1e
@@ -13795,11 +14021,11 @@
     add bp, strict byte 00008h                ; 83 c5 08
     mov ds, bp                                ; 8e dd
-    call 0928ah                               ; e8 b8 ff
+    call 094aah                               ; e8 b8 ff
     pop bp                                    ; 5d
     pop DS                                    ; 1f
     retf                                      ; cb
 
-  ; Padding 0x472b bytes at 0xf92d5
-  times 18219 db 0
+  ; Padding 0x450b bytes at 0xf94f5
+  times 17675 db 0
 
 section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
@@ -13848,5 +14074,5 @@
     add bp, strict byte 00008h                ; 83 c5 08
     push ebp                                  ; 66 55
-    mov bp, 092c6h                            ; bd c6 92
+    mov bp, 094e6h                            ; bd e6 94
     add byte [bx+si], al                      ; 00 00
     push ebp                                  ; 66 55
@@ -14180,8 +14406,7 @@
     mov bx, ax                                ; 89 c3
     mov edx, dword [di]                       ; 66 8b 15
-    add byte [bx+si], al                      ; 00 00
-    add byte [bx+si], al                      ; 00 00
-    db  066h, 026h, 03bh, 010h
-    ; cmp edx, dword [es:bx+si]                 ; 66 26 3b 10
+    mov AL, byte [000f4h]                     ; a0 f4 00
+    add byte [bp+026h], ah                    ; 00 66 26
+    cmp dx, word [bx+si]                      ; 3b 10
     jbe short 0dd7eh                          ; 76 12
     mov ax, word [di+024h]                    ; 8b 45 24
@@ -14207,7 +14432,6 @@
     pop DS                                    ; 1f
     mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1
-    add byte [bx+si], al                      ; 00 00
-    add byte [bx+si], al                      ; 00 00
-    mov es, [di-010h]                         ; 8e 45 f0
+    mov AL, byte [000f4h]                     ; a0 f4 00
+    add byte [bp-00fbbh], cl                  ; 00 8e 45 f0
     db  066h, 026h, 089h, 003h
     ; mov dword [es:bp+di], eax                 ; 66 26 89 03
@@ -14342,5 +14566,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 01712h                               ; e8 27 36
+    call 01727h                               ; e8 3c 36
     call 0e8e0h                               ; e8 f2 07
     db  033h, 0dbh
@@ -14356,4 +14580,8 @@
     mov ax, 0027fh                            ; b8 7f 02
     mov word [00413h], ax                     ; a3 13 04
+    mov ax, 0e9dch                            ; b8 dc e9
+    mov word [00018h], ax                     ; a3 18 00
+    mov ax, 0f000h                            ; b8 00 f0
+    mov word [0001ah], ax                     ; a3 1a 00
     mov ax, 0f84dh                            ; b8 4d f8
     mov word [00044h], ax                     ; a3 44 00
@@ -14384,5 +14612,5 @@
     mov ax, 0f000h                            ; b8 00 f0
     mov word [00072h], ax                     ; a3 72 00
-    call 0e7c0h                               ; e8 5c 06
+    call 0e7c0h                               ; e8 50 06
     mov ax, 0fea5h                            ; b8 a5 fe
     mov word [00020h], ax                     ; a3 20 00
@@ -14422,5 +14650,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 04945h                               ; e8 7e 67
+    call 04964h                               ; e8 91 67
     pop DS                                    ; 1f
     mov AL, strict byte 014h                  ; b0 14
@@ -14439,7 +14667,7 @@
     mov CL, strict byte 014h                  ; b1 14
     mov dx, 00378h                            ; ba 78 03
-    call 0ecedh                               ; e8 02 0b
+    call 0ecedh                               ; e8 f6 0a
     mov dx, 00278h                            ; ba 78 02
-    call 0ecedh                               ; e8 fc 0a
+    call 0ecedh                               ; e8 f0 0a
     sal bx, 00eh                              ; c1 e3 0e
     mov ax, word [00410h]                     ; a1 10 04
@@ -14464,11 +14692,11 @@
     mov CL, strict byte 00ah                  ; b1 0a
     mov dx, 003f8h                            ; ba f8 03
-    call 0ed0bh                               ; e8 de 0a
+    call 0ed0bh                               ; e8 d2 0a
     mov dx, 002f8h                            ; ba f8 02
-    call 0ed0bh                               ; e8 d8 0a
+    call 0ed0bh                               ; e8 cc 0a
     mov dx, 003e8h                            ; ba e8 03
-    call 0ed0bh                               ; e8 d2 0a
+    call 0ed0bh                               ; e8 c6 0a
     mov dx, 002e8h                            ; ba e8 02
-    call 0ed0bh                               ; e8 cc 0a
+    call 0ed0bh                               ; e8 c0 0a
     sal bx, 009h                              ; c1 e3 09
     mov ax, word [00410h]                     ; a1 10 04
@@ -14489,5 +14717,5 @@
     mov ax, 0f000h                            ; b8 00 f0
     mov word [001c2h], ax                     ; a3 c2 01
-    call 0edbfh                               ; e8 4b 0b
+    call 0edbfh                               ; e8 3f 0b
     mov ax, 0f8a9h                            ; b8 a9 f8
     mov word [001d0h], ax                     ; a3 d0 01
@@ -14502,10 +14730,10 @@
     mov ax, 0f000h                            ; b8 00 f0
     mov word [00042h], ax                     ; a3 42 00
-    call 0e79bh                               ; e8 00 05
-    call 0f13ch                               ; e8 9e 0e
-    call 0f1c1h                               ; e8 20 0f
-    call 0e758h                               ; e8 b4 04
-    jmp short 0e31bh                          ; eb 75
-    times 0x1b db 0
+    call 0e79bh                               ; e8 f4 04
+    call 0f13ch                               ; e8 92 0e
+    call 0f1c1h                               ; e8 14 0f
+    call 0e758h                               ; e8 a8 04
+    jmp short 0e31bh                          ; eb 69
+    times 0xf db 0
     db  'XM'
 nmi:                                         ; 0xfe2c3 LB 0x7
@@ -14513,5 +14741,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 016eeh                               ; e8 25 34
+    call 01703h                               ; e8 3a 34
     iret                                      ; cf
 int75_handler:                               ; 0xfe2ca LB 0x8
@@ -14551,8 +14779,8 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 01b48h                               ; e8 27 38
-    call 01f42h                               ; e8 1e 3c
-    call 08b3ah                               ; e8 13 a8
-    call 07c11h                               ; e8 e7 98
+    call 01b5dh                               ; e8 3c 38
+    call 01f57h                               ; e8 33 3c
+    call 08d60h                               ; e8 39 aa
+    call 07e37h                               ; e8 0d 9b
     call 0ed2fh                               ; e8 02 0a
     call 0e2d2h                               ; e8 a2 ff
@@ -14560,6 +14788,6 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 01732h                               ; e8 fc 33
-    call 03629h                               ; e8 f0 52
+    call 01747h                               ; e8 11 34
+    call 03648h                               ; e8 0f 53
     sti                                       ; fb
     int 019h                                  ; cd 19
@@ -14659,5 +14887,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05cd7h                               ; e8 95 75
+    call 05cf6h                               ; e8 b4 75
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -14670,5 +14898,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 01683h                               ; e8 34 2f
+    call 01698h                               ; e8 49 2f
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -14775,5 +15003,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05045h                               ; e8 03 68
+    call 05064h                               ; e8 22 68
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -14792,5 +15020,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05045h                               ; e8 e5 67
+    call 05064h                               ; e8 04 68
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -14891,5 +15119,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 04c54h                               ; e8 85 62
+    call 04c73h                               ; e8 a4 62
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -14901,5 +15129,16 @@
     pop ax                                    ; 58
     iret                                      ; cf
-    times 0x27b db 0
+    pushaw                                    ; 60
+    push ES                                   ; 06
+    push DS                                   ; 1e
+    push CS                                   ; 0e
+    pop DS                                    ; 1f
+    cld                                       ; fc
+    call 0674eh                               ; e8 69 7d
+    pop DS                                    ; 1f
+    pop ES                                    ; 07
+    popaw                                     ; 61
+    iret                                      ; cf
+    times 0x26e db 0
     pop ax                                    ; 58
     dec bp                                    ; 4d
@@ -14917,5 +15156,5 @@
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 0366dh                           ; e9 fc 49
+    jmp near 0368ch                           ; e9 1b 4a
     push ES                                   ; 06
     push ax                                   ; 50
@@ -14923,8 +15162,8 @@
     push cx                                   ; 51
     push dx                                   ; 52
-    call 03641h                               ; e8 c8 49
+    call 03660h                               ; e8 e7 49
     cmp AL, strict byte 000h                  ; 3c 00
     je short 0ecabh                           ; 74 2e
-    call 03657h                               ; e8 d7 49
+    call 03676h                               ; e8 f6 49
     pop dx                                    ; 5a
     push dx                                   ; 52
@@ -14944,5 +15183,5 @@
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 03c41h                           ; e9 aa 4f
+    jmp near 03c60h                           ; e9 c9 4f
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
@@ -14984,5 +15223,5 @@
     jne short 0ecc8h                          ; 75 06
     push 0ece9h                               ; 68 e9 ec
-    jmp near 02ec9h                           ; e9 01 42
+    jmp near 02edeh                           ; e9 16 42
 int13_notfloppy:                             ; 0xfecc8 LB 0x14
     cmp dl, 0e0h                              ; 80 fa e0
@@ -14990,5 +15229,5 @@
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 04075h                               ; e8 a0 53
+    call 04094h                               ; e8 bf 53
     pop bx                                    ; 5b
     sal ebx, 010h                             ; 66 c1 e3 10
@@ -14997,7 +15236,7 @@
     cmp ah, 040h                              ; 80 fc 40
     jnbe short 0ece6h                         ; 77 05
-    call 053cah                               ; e8 e6 66
+    call 053e9h                               ; e8 05 67
     jmp short 0ece9h                          ; eb 03
-    call 0580bh                               ; e8 22 6b
+    call 0582ah                               ; e8 41 6b
 int13_out:                                   ; 0xfece9 LB 0x4
     pop DS                                    ; 1f
@@ -15212,5 +15451,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06ef4h                               ; e8 17 7f
+    call 070a8h                               ; e8 cb 80
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -15237,5 +15476,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 01700h                               ; e8 56 26
+    call 01715h                               ; e8 6b 26
     hlt                                       ; f4
     iret                                      ; cf
@@ -15260,5 +15499,5 @@
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 046dch                               ; e8 0c 56
+    call 046fbh                               ; e8 2b 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -15267,5 +15506,5 @@
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 046dch                               ; e8 ff 55
+    call 046fbh                               ; e8 1e 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -15274,5 +15513,5 @@
     mov ax, strict word 00003h                ; b8 03 00
     push strict byte 00003h                   ; 6a 03
-    call 046dch                               ; e8 f1 55
+    call 046fbh                               ; e8 10 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -15281,5 +15520,5 @@
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 046dch                               ; e8 e4 55
+    call 046fbh                               ; e8 03 56
     inc sp                                    ; 44
     inc sp                                    ; 44
@@ -15503,5 +15742,5 @@
     db  000h, 001h, 000h, 002h, 000h, 008h, 000h, 000h, 086h, 080h, 000h, 070h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 031h
-_pci_routing_table:                          ; 0xff2c0 LB 0x581
+_pci_routing_table:                          ; 0xff2c0 LB 0x1e0
     db  000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
     db  000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
@@ -15534,63 +15773,8 @@
     db  000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
     db  000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
-    db  0e0h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h
-    db  04dh
+_pci_routing_table_size:                     ; 0xff4a0 LB 0x3a1
+    loopne 0f4a3h                             ; e0 01
+    times 0x39d db 0
+    db  'XM'
 int12_handler:                               ; 0xff841 LB 0xc
     sti                                       ; fb
@@ -15627,5 +15811,5 @@
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f887h                           ; 74 0e
-    call 05ee4h                               ; e8 68 66
+    call 05f03h                               ; e8 87 66
     popaw                                     ; 61
     pop ES                                    ; 07
@@ -15633,12 +15817,12 @@
     popfw                                     ; 9d
     jmp short 0f895h                          ; eb 13
-    call 08c71h                               ; e8 ec 93
+    call 08e97h                               ; e8 12 96
     jmp short 0f87ch                          ; eb f5
 int15_handler_mouse:                         ; 0xff887 LB 0x5
-    call 06b69h                               ; e8 df 72
+    call 06d1dh                               ; e8 93 74
     jmp short 0f87ch                          ; eb f0
 int15_handler32:                             ; 0xff88c LB 0x9
     pushad                                    ; 66 60
-    call 063b1h                               ; e8 20 6b
+    call 063d0h                               ; e8 3f 6b
     popad                                     ; 66 61
     jmp short 0f87dh                          ; eb e8
@@ -15670,5 +15854,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06a9fh                               ; e8 e2 71
+    call 06c53h                               ; e8 96 73
     pop cx                                    ; 59
     jcxz 0f8cch                               ; e3 0c
@@ -15762,6 +15946,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, 004h, 090h, 066h
-    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 0abh, 069h, 061h, 01fh, 007h
+    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 02ah, 092h, 066h
+    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 05fh, 06bh, 061h, 01fh, 007h
     db  0cfh
 int70_handler:                               ; 0xffe8f LB 0x16
@@ -15772,5 +15956,5 @@
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06778h                               ; e8 e0 68
+    call 0692ch                               ; e8 94 6a
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -15871,3 +16055,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, 077h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0c8h
Index: /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 50158)
+++ /trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum	(revision 50159)
@@ -1,1 +1,1 @@
-84ca77ba1d13a8d01db0c10b7dccabae *VBoxPcBios.rom
+53f0c512b84912d343d92609bc95421d *VBoxPcBios.rom
