VirtualBox

Changeset 43630 in vbox


Ignore:
Timestamp:
Oct 12, 2012 11:12:27 AM (12 years ago)
Author:
vboxsync
Message:

update alternative BIOS sources

Location:
trunk/src/VBox/Devices
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/BiosCommonCode/MakeAlternativeSource.cpp

    r43077 r43630  
    950950        }
    951951        /* Work arounds for switch tables and such (disas assertions). */
    952         else if (   (   pb[0] == 0x11   /* int13_cdemu switch */
     952        else if (    0
     953#if 0
     954                 || (   pb[0] == 0x11   /* int13_cdemu switch */
    953955                     && pb[1] == 0xda
    954956                     && pb[2] == 0x05
    955957                     && pb[3] == 0xff
    956958                     && pb[4] == 0xff
     959                    )
     960#endif
     961                 || (   pb[0] == 0xb0
     962                     && pb[1] == 0x58
     963                     && pb[2] == 0xc8
     964                     && pb[3] == 0x58
     965                     && pb[4] == 0xc8
     966                     && pb[5] == 0x58
     967                    )
     968                 || (   pb[0] == 0x72   /* _pci16_function switch */
     969                     && pb[1] == 0x8d
     970                     && pb[2] == 0x8c
     971                     && pb[3] == 0x8d
     972                     && pb[4] == 0x9f
     973                     && pb[5] == 0x8d
     974                     )
     975                 || (   pb[0] == 0xd0   /* _int1a_function switch */
     976                     && pb[1] == 0x67
     977                     && pb[2] == 0xf7
     978                     && pb[3] == 0x67
     979                     && pb[4] == 0x1c
     980                     && pb[5] == 0x68
     981                    )
     982                 || (   pb[0] == 0x0b   /* _ahci_init byte table */
     983                     && pb[1] == 0x05
     984                     && pb[2] == 0x04
     985                     && pb[3] == 0x03
     986                     && pb[4] == 0x02
     987                     && pb[5] == 0x01
    957988                    )
    958989                 || 0
  • trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.asm

    r43316 r43630  
    155155
    156156
    157 section VGAROM progbits vstart=0x0 align=1 ; size=0x92e class=CODE group=AUTO
     157section VGAROM progbits vstart=0x0 align=1 ; size=0x93e class=CODE group=AUTO
    158158    db  055h, 0aah, 040h, 0e9h, 05fh, 00ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    159159    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 049h, 042h
    160160    db  04dh, 000h
    161 vgabios_int10_handler:                       ; 0xc0022 LB 0x575
     161vgabios_int10_handler:                       ; 0xc0022 LB 0x585
    162162    pushfw                                    ; 9c
    163163    cmp ah, 00fh                              ; 80 fc 0f
    164164    jne short 0002eh                          ; 75 06
    165     call 00175h                               ; e8 4a 01
     165    call 00183h                               ; e8 58 01
    166166    jmp near 000f3h                           ; e9 c5 00
    167167    cmp ah, 01ah                              ; 80 fc 1a
    168168    jne short 00039h                          ; 75 06
    169     call 0052ah                               ; e8 f4 04
     169    call 00538h                               ; e8 02 05
    170170    jmp near 000f3h                           ; e9 ba 00
    171171    cmp ah, 00bh                              ; 80 fc 0b
     
    175175    cmp ax, 01103h                            ; 3d 03 11
    176176    jne short 0004fh                          ; 75 06
    177     call 00421h                               ; e8 d5 03
     177    call 0042fh                               ; e8 e3 03
    178178    jmp near 000f3h                           ; e9 a4 00
    179179    cmp ah, 012h                              ; 80 fc 12
     
    181181    cmp bl, 010h                              ; 80 fb 10
    182182    jne short 0005fh                          ; 75 06
    183     call 0042eh                               ; e8 d2 03
     183    call 0043ch                               ; e8 e0 03
    184184    jmp near 000f3h                           ; e9 94 00
    185185    cmp bl, 030h                              ; 80 fb 30
    186186    jne short 0006ah                          ; 75 06
    187     call 00451h                               ; e8 ea 03
     187    call 0045fh                               ; e8 f8 03
    188188    jmp near 000f3h                           ; e9 89 00
    189189    cmp bl, 031h                              ; 80 fb 31
    190190    jne short 00074h                          ; 75 05
    191     call 004a4h                               ; e8 32 04
     191    call 004b2h                               ; e8 40 04
    192192    jmp short 000f3h                          ; eb 7f
    193193    cmp bl, 032h                              ; 80 fb 32
    194194    jne short 0007eh                          ; 75 05
    195     call 004c6h                               ; e8 4a 04
     195    call 004d4h                               ; e8 58 04
    196196    jmp short 000f3h                          ; eb 75
    197197    cmp bl, 033h                              ; 80 fb 33
    198198    jne short 00088h                          ; 75 05
    199     call 004e4h                               ; e8 5e 04
     199    call 004f2h                               ; e8 6c 04
    200200    jmp short 000f3h                          ; eb 6b
    201201    cmp bl, 034h                              ; 80 fb 34
    202202    jne short 000e5h                          ; 75 58
    203     call 00508h                               ; e8 78 04
     203    call 00516h                               ; e8 86 04
    204204    jmp short 000f3h                          ; eb 61
    205205    cmp ax, 0101bh                            ; 3d 1b 10
     
    207207    cmp ah, 010h                              ; 80 fc 10
    208208    jne short 000a1h                          ; 75 05
    209     call 0019ch                               ; e8 fd 00
     209    call 001aah                               ; e8 0b 01
    210210    jmp short 000f3h                          ; eb 52
    211211    cmp ah, 04fh                              ; 80 fc 4f
     
    213213    cmp AL, strict byte 003h                  ; 3c 03
    214214    jne short 000afh                          ; 75 05
    215     call 007a7h                               ; e8 fa 06
     215    call 007b7h                               ; e8 0a 07
    216216    jmp short 000f3h                          ; eb 44
    217217    cmp AL, strict byte 005h                  ; 3c 05
    218218    jne short 000b8h                          ; 75 05
    219     call 007cch                               ; e8 16 07
     219    call 007dch                               ; e8 26 07
    220220    jmp short 000f3h                          ; eb 3b
    221221    cmp AL, strict byte 006h                  ; 3c 06
    222222    jne short 000c1h                          ; 75 05
    223     call 007f9h                               ; e8 3a 07
     223    call 00809h                               ; e8 4a 07
    224224    jmp short 000f3h                          ; eb 32
    225225    cmp AL, strict byte 007h                  ; 3c 07
    226226    jne short 000cah                          ; 75 05
    227     call 00846h                               ; e8 7e 07
     227    call 00856h                               ; e8 8e 07
    228228    jmp short 000f3h                          ; eb 29
    229229    cmp AL, strict byte 008h                  ; 3c 08
    230230    jne short 000d3h                          ; 75 05
    231     call 0087ah                               ; e8 a9 07
     231    call 0088ah                               ; e8 b9 07
    232232    jmp short 000f3h                          ; eb 20
    233233    cmp AL, strict byte 009h                  ; 3c 09
    234234    jne short 000dch                          ; 75 05
    235     call 008b1h                               ; e8 d7 07
     235    call 008c1h                               ; e8 e7 07
    236236    jmp short 000f3h                          ; eb 17
    237237    cmp AL, strict byte 00ah                  ; 3c 0a
    238238    jne short 000e5h                          ; 75 05
    239     call 00915h                               ; e8 32 08
     239    call 00925h                               ; e8 42 08
    240240    jmp short 000f3h                          ; eb 0e
    241241    push ES                                   ; 06
     
    253253    je short 00100h                           ; 74 06
    254254    cmp bh, 001h                              ; 80 ff 01
    255     je short 00143h                           ; 74 44
     255    je short 00151h                           ; 74 52
    256256    retn                                      ; c3
    257257    push ax                                   ; 50
     
    259259    push cx                                   ; 51
    260260    push dx                                   ; 52
     261    push DS                                   ; 1e
     262    mov dx, strict word 00040h                ; ba 40 00
     263    mov ds, dx                                ; 8e da
    261264    mov dx, 003dah                            ; ba da 03
    262265    in AL, DX                                 ; ec
     266    cmp byte [word 00049h], 003h              ; 80 3e 49 00 03
     267    jbe short 00144h                          ; 76 2f
    263268    mov dx, 003c0h                            ; ba c0 03
    264269    mov AL, strict byte 000h                  ; b0 00
     
    268273    and AL, strict byte 00fh                  ; 24 0f
    269274    test AL, strict byte 008h                 ; a8 08
    270     je short 00118h                           ; 74 02
     275    je short 00125h                           ; 74 02
    271276    add AL, strict byte 008h                  ; 04 08
    272277    out DX, AL                                ; ee
     
    287292    ; inc cl                                    ; fe c1
    288293    cmp cl, 004h                              ; 80 f9 04
    289     jne short 0011eh                          ; 75 e7
     294    jne short 0012bh                          ; 75 e7
    290295    mov AL, strict byte 020h                  ; b0 20
    291296    out DX, AL                                ; ee
    292297    mov dx, 003dah                            ; ba da 03
    293298    in AL, DX                                 ; ec
     299    pop DS                                    ; 1f
    294300    pop dx                                    ; 5a
    295301    pop cx                                    ; 59
     
    319325    ; inc cl                                    ; fe c1
    320326    cmp cl, 004h                              ; 80 f9 04
    321     jne short 00150h                          ; 75 e7
     327    jne short 0015eh                          ; 75 e7
    322328    mov AL, strict byte 020h                  ; b0 20
    323329    out DX, AL                                ; ee
     
    352358    retn                                      ; c3
    353359    cmp AL, strict byte 000h                  ; 3c 00
    354     jne short 001a2h                          ; 75 02
    355     jmp short 00203h                          ; eb 61
     360    jne short 001b0h                          ; 75 02
     361    jmp short 00211h                          ; eb 61
    356362    cmp AL, strict byte 001h                  ; 3c 01
    357     jne short 001a8h                          ; 75 02
    358     jmp short 00221h                          ; eb 79
     363    jne short 001b6h                          ; 75 02
     364    jmp short 0022fh                          ; eb 79
    359365    cmp AL, strict byte 002h                  ; 3c 02
    360     jne short 001aeh                          ; 75 02
    361     jmp short 00229h                          ; eb 7b
     366    jne short 001bch                          ; 75 02
     367    jmp short 00237h                          ; eb 7b
    362368    cmp AL, strict byte 003h                  ; 3c 03
    363     jne short 001b5h                          ; 75 03
    364     jmp near 0025ah                           ; e9 a5 00
     369    jne short 001c3h                          ; 75 03
     370    jmp near 00268h                           ; e9 a5 00
    365371    cmp AL, strict byte 007h                  ; 3c 07
    366     jne short 001bch                          ; 75 03
    367     jmp near 00284h                           ; e9 c8 00
     372    jne short 001cah                          ; 75 03
     373    jmp near 00292h                           ; e9 c8 00
    368374    cmp AL, strict byte 008h                  ; 3c 08
    369     jne short 001c3h                          ; 75 03
    370     jmp near 002ach                           ; e9 e9 00
     375    jne short 001d1h                          ; 75 03
     376    jmp near 002bah                           ; e9 e9 00
    371377    cmp AL, strict byte 009h                  ; 3c 09
    372     jne short 001cah                          ; 75 03
    373     jmp near 002bah                           ; e9 f0 00
     378    jne short 001d8h                          ; 75 03
     379    jmp near 002c8h                           ; e9 f0 00
    374380    cmp AL, strict byte 010h                  ; 3c 10
    375     jne short 001d1h                          ; 75 03
    376     jmp near 002ffh                           ; e9 2e 01
     381    jne short 001dfh                          ; 75 03
     382    jmp near 0030dh                           ; e9 2e 01
    377383    cmp AL, strict byte 012h                  ; 3c 12
    378     jne short 001d8h                          ; 75 03
    379     jmp near 00318h                           ; e9 40 01
     384    jne short 001e6h                          ; 75 03
     385    jmp near 00326h                           ; e9 40 01
    380386    cmp AL, strict byte 013h                  ; 3c 13
    381     jne short 001dfh                          ; 75 03
    382     jmp near 00340h                           ; e9 61 01
     387    jne short 001edh                          ; 75 03
     388    jmp near 0034eh                           ; e9 61 01
    383389    cmp AL, strict byte 015h                  ; 3c 15
    384     jne short 001e6h                          ; 75 03
    385     jmp near 00387h                           ; e9 a1 01
     390    jne short 001f4h                          ; 75 03
     391    jmp near 00395h                           ; e9 a1 01
    386392    cmp AL, strict byte 017h                  ; 3c 17
    387     jne short 001edh                          ; 75 03
    388     jmp near 003a2h                           ; e9 b5 01
     393    jne short 001fbh                          ; 75 03
     394    jmp near 003b0h                           ; e9 b5 01
    389395    cmp AL, strict byte 018h                  ; 3c 18
    390     jne short 001f4h                          ; 75 03
    391     jmp near 003cah                           ; e9 d6 01
     396    jne short 00202h                          ; 75 03
     397    jmp near 003d8h                           ; e9 d6 01
    392398    cmp AL, strict byte 019h                  ; 3c 19
    393     jne short 001fbh                          ; 75 03
    394     jmp near 003d5h                           ; e9 da 01
     399    jne short 00209h                          ; 75 03
     400    jmp near 003e3h                           ; e9 da 01
    395401    cmp AL, strict byte 01ah                  ; 3c 1a
    396     jne short 00202h                          ; 75 03
    397     jmp near 003e0h                           ; e9 de 01
     402    jne short 00210h                          ; 75 03
     403    jmp near 003eeh                           ; e9 de 01
    398404    retn                                      ; c3
    399405    cmp bl, 014h                              ; 80 fb 14
    400     jnbe short 00220h                         ; 77 18
     406    jnbe short 0022eh                         ; 77 18
    401407    push ax                                   ; 50
    402408    push dx                                   ; 52
     
    419425    push bx                                   ; 53
    420426    mov BL, strict byte 011h                  ; b3 11
    421     call 00203h                               ; e8 dc ff
     427    call 00211h                               ; e8 dc ff
    422428    pop bx                                    ; 5b
    423429    retn                                      ; c3
     
    441447    ; inc cl                                    ; fe c1
    442448    cmp cl, 010h                              ; 80 f9 10
    443     jne short 00238h                          ; 75 f1
     449    jne short 00246h                          ; 75 f1
    444450    mov AL, strict byte 011h                  ; b0 11
    445451    out DX, AL                                ; ee
     
    481487    retn                                      ; c3
    482488    cmp bl, 014h                              ; 80 fb 14
    483     jnbe short 002abh                         ; 77 22
     489    jnbe short 002b9h                         ; 77 22
    484490    push ax                                   ; 50
    485491    push dx                                   ; 52
     
    507513    push bx                                   ; 53
    508514    mov BL, strict byte 011h                  ; b3 11
    509     call 00284h                               ; e8 d1 ff
     515    call 00292h                               ; e8 d1 ff
    510516    db  08ah, 0c7h
    511517    ; mov al, bh                                ; 8a c7
     
    535541    ; inc cl                                    ; fe c1
    536542    cmp cl, 010h                              ; 80 f9 10
    537     jne short 002c2h                          ; 75 e7
     543    jne short 002d0h                          ; 75 e7
    538544    mov dx, 003dah                            ; ba da 03
    539545    in AL, DX                                 ; ec
     
    600606    inc bx                                    ; 43
    601607    dec cx                                    ; 49
    602     jne short 00329h                          ; 75 ee
     608    jne short 00337h                          ; 75 ee
    603609    pop dx                                    ; 5a
    604610    pop cx                                    ; 59
     
    617623    in AL, DX                                 ; ec
    618624    and bl, 001h                              ; 80 e3 01
    619     jne short 00363h                          ; 75 0d
     625    jne short 00371h                          ; 75 0d
    620626    and AL, strict byte 07fh                  ; 24 7f
    621627    sal bh, 007h                              ; c0 e7 07
     
    624630    mov dx, 003c0h                            ; ba c0 03
    625631    out DX, AL                                ; ee
    626     jmp short 0037ch                          ; eb 19
     632    jmp short 0038ah                          ; eb 19
    627633    push ax                                   ; 50
    628634    mov dx, 003dah                            ; ba da 03
     
    633639    pop ax                                    ; 58
    634640    and AL, strict byte 080h                  ; 24 80
    635     jne short 00376h                          ; 75 03
     641    jne short 00384h                          ; 75 03
    636642    sal bh, 002h                              ; c0 e7 02
    637643    and bh, 00fh                              ; 80 e7 0f
     
    692698    inc bx                                    ; 43
    693699    dec cx                                    ; 49
    694     jne short 003b3h                          ; 75 ee
     700    jne short 003c1h                          ; 75 ee
    695701    pop dx                                    ; 5a
    696702    pop cx                                    ; 59
     
    739745    and bh, 00fh                              ; 80 e7 0f
    740746    test bl, 001h                             ; f6 c3 01
    741     jne short 00410h                          ; 75 03
     747    jne short 0041eh                          ; 75 03
    742748    shr bh, 002h                              ; c0 ef 02
    743749    mov dx, 003dah                            ; ba da 03
     
    774780    mov bx, strict word 00003h                ; bb 03 00
    775781    cmp ax, 003b4h                            ; 3d b4 03
    776     jne short 0044eh                          ; 75 02
     782    jne short 0045ch                          ; 75 02
    777783    mov BH, strict byte 001h                  ; b7 01
    778784    pop ax                                    ; 58
     
    791797    mov ah, byte [bx]                         ; 8a 27
    792798    cmp dl, 001h                              ; 80 fa 01
    793     je short 0047fh                           ; 74 15
    794     jc short 00489h                           ; 72 1d
     799    je short 0048dh                           ; 74 15
     800    jc short 00497h                           ; 72 1d
    795801    cmp dl, 002h                              ; 80 fa 02
    796     je short 00473h                           ; 74 02
    797     jmp short 0049dh                          ; eb 2a
     802    je short 00481h                           ; 74 02
     803    jmp short 004abh                          ; eb 2a
    798804    and AL, strict byte 07fh                  ; 24 7f
    799805    or AL, strict byte 010h                   ; 0c 10
    800806    and ah, 0f0h                              ; 80 e4 f0
    801807    or ah, 009h                               ; 80 cc 09
    802     jne short 00493h                          ; 75 14
     808    jne short 004a1h                          ; 75 14
    803809    and AL, strict byte 06fh                  ; 24 6f
    804810    and ah, 0f0h                              ; 80 e4 f0
    805811    or ah, 009h                               ; 80 cc 09
    806     jne short 00493h                          ; 75 0a
     812    jne short 004a1h                          ; 75 0a
    807813    and AL, strict byte 0efh                  ; 24 ef
    808814    or AL, strict byte 080h                   ; 0c 80
     
    898904    retn                                      ; c3
    899905    cmp AL, strict byte 000h                  ; 3c 00
    900     je short 00533h                           ; 74 05
     906    je short 00541h                           ; 74 05
    901907    cmp AL, strict byte 001h                  ; 3c 01
    902     je short 00548h                           ; 74 16
     908    je short 00556h                           ; 74 16
    903909    retn                                      ; c3
    904910    push DS                                   ; 1e
     
    933939    retn                                      ; c3
    934940    add byte [bx+si], al                      ; 00 00
     941    add byte [bx+si], al                      ; 00 00
    935942    add byte [bx+si+052h], dl                 ; 00 50 52
    936943    mov dx, 003dah                            ; ba da 03
    937944    in AL, DX                                 ; ec
    938945    test AL, strict byte 008h                 ; a8 08
    939     je short 00565h                           ; 74 fb
     946    je short 00575h                           ; 74 fb
    940947    pop dx                                    ; 5a
    941948    pop ax                                    ; 58
     
    946953    in AL, DX                                 ; ec
    947954    test AL, strict byte 008h                 ; a8 08
    948     jne short 00572h                          ; 75 fb
     955    jne short 00582h                          ; 75 fb
    949956    pop dx                                    ; 5a
    950957    pop ax                                    ; 58
     
    957964    in ax, DX                                 ; ed
    958965    cmp AL, strict byte 004h                  ; 3c 04
    959     jbe short 00595h                          ; 76 0b
     966    jbe short 005a5h                          ; 76 0b
    960967    db  08ah, 0e0h
    961968    ; mov ah, al                                ; 8a e0
    962969    shr ah, 003h                              ; c0 ec 03
    963970    test AL, strict byte 007h                 ; a8 07
    964     je short 00595h                           ; 74 02
     971    je short 005a5h                           ; 74 02
    965972    db  0feh, 0c4h
    966973    ; inc ah                                    ; fe c4
    967974    pop dx                                    ; 5a
    968975    retn                                      ; c3
    969 _dispi_get_max_bpp:                          ; 0xc0597 LB 0x22
     976_dispi_get_max_bpp:                          ; 0xc05a7 LB 0x22
    970977    push dx                                   ; 52
    971978    push bx                                   ; 53
    972     call 005c9h                               ; e8 2d 00
     979    call 005d9h                               ; e8 2d 00
    973980    db  08bh, 0d8h
    974981    ; mov bx, ax                                ; 8b d8
    975982    or ax, strict byte 00002h                 ; 83 c8 02
    976     call 005b9h                               ; e8 15 00
     983    call 005c9h                               ; e8 15 00
    977984    mov dx, 001ceh                            ; ba ce 01
    978985    mov ax, strict word 00003h                ; b8 03 00
     
    983990    db  08bh, 0c3h
    984991    ; mov ax, bx                                ; 8b c3
    985     call 005b9h                               ; e8 04 00
     992    call 005c9h                               ; e8 04 00
    986993    pop ax                                    ; 58
    987994    pop bx                                    ; 5b
    988995    pop dx                                    ; 5a
    989996    retn                                      ; c3
    990 dispi_set_enable_:                           ; 0xc05b9 LB 0x1e
     997dispi_set_enable_:                           ; 0xc05c9 LB 0x1e
    991998    push dx                                   ; 52
    992999    push ax                                   ; 50
     
    10071014    pop dx                                    ; 5a
    10081015    retn                                      ; c3
    1009 dispi_set_bank_:                             ; 0xc05d7 LB 0x1e
     1016dispi_set_bank_:                             ; 0xc05e7 LB 0x1e
    10101017    push dx                                   ; 52
    10111018    push ax                                   ; 50
     
    10261033    pop dx                                    ; 5a
    10271034    retn                                      ; c3
    1028 _dispi_set_bank_farcall:                     ; 0xc05f5 LB 0xbe
     1035_dispi_set_bank_farcall:                     ; 0xc0605 LB 0xbe
    10291036    cmp bx, 00100h                            ; 81 fb 00 01
    1030     je short 00619h                           ; 74 1e
     1037    je short 00629h                           ; 74 1e
    10311038    db  00bh, 0dbh
    10321039    ; or bx, bx                                 ; 0b db
    1033     jne short 00627h                          ; 75 28
     1040    jne short 00637h                          ; 75 28
    10341041    db  08bh, 0c2h
    10351042    ; mov ax, dx                                ; 8b c2
     
    10461053    db  03bh, 0d0h
    10471054    ; cmp dx, ax                                ; 3b d0
    1048     jne short 00627h                          ; 75 12
     1055    jne short 00637h                          ; 75 12
    10491056    mov ax, strict word 0004fh                ; b8 4f 00
    10501057    retf                                      ; cb
     
    11001107    db  08bh, 0d8h
    11011108    ; mov bx, ax                                ; 8b d8
    1102     call 0057ah                               ; e8 0b ff
     1109    call 0058ah                               ; e8 0b ff
    11031110    cmp AL, strict byte 004h                  ; 3c 04
    1104     jnbe short 00675h                         ; 77 02
     1111    jnbe short 00685h                         ; 77 02
    11051112    shr bx, 1                                 ; d1 eb
    11061113    shr bx, 003h                              ; c1 eb 03
     
    11141121    pop ax                                    ; 58
    11151122    retn                                      ; c3
    1116     call 00667h                               ; e8 e0 ff
     1123    call 00677h                               ; e8 e0 ff
    11171124    push dx                                   ; 52
    11181125    push ax                                   ; 50
     
    11411148    pop dx                                    ; 5a
    11421149    retn                                      ; c3
    1143 _vga_compat_setup:                           ; 0xc06b3 LB 0xe1
     1150_vga_compat_setup:                           ; 0xc06c3 LB 0xe1
    11441151    push ax                                   ; 50
    11451152    push dx                                   ; 52
     
    11621169    out DX, ax                                ; ef
    11631170    pop ax                                    ; 58
    1164     call 00667h                               ; e8 90 ff
     1171    call 00677h                               ; e8 90 ff
    11651172    mov dx, 001ceh                            ; ba ce 01
    11661173    mov ax, strict word 00002h                ; b8 02 00
     
    11821189    and AL, strict byte 0bdh                  ; 24 bd
    11831190    test ah, 001h                             ; f6 c4 01
    1184     je short 006fbh                           ; 74 02
     1191    je short 0070bh                           ; 74 02
    11851192    or AL, strict byte 002h                   ; 0c 02
    11861193    test ah, 002h                             ; f6 c4 02
    1187     je short 00702h                           ; 74 02
     1194    je short 00712h                           ; 74 02
    11881195    or AL, strict byte 040h                   ; 0c 40
    11891196    out DX, AL                                ; ee
     
    12261233    in ax, DX                                 ; ed
    12271234    cmp AL, strict byte 008h                  ; 3c 08
    1228     jc short 00792h                           ; 72 40
     1235    jc short 007a2h                           ; 72 40
    12291236    mov dx, 003d4h                            ; ba d4 03
    12301237    mov AL, strict byte 014h                  ; b0 14
     
    12631270    pop dx                                    ; 5a
    12641271    pop ax                                    ; 58
    1265 _vbe_has_vbe_display:                        ; 0xc0794 LB 0x13
     1272_vbe_has_vbe_display:                        ; 0xc07a4 LB 0x13
    12661273    push DS                                   ; 1e
    12671274    push bx                                   ; 53
     
    12761283    pop DS                                    ; 1f
    12771284    retn                                      ; c3
    1278 vbe_biosfn_return_current_mode:              ; 0xc07a7 LB 0x25
     1285vbe_biosfn_return_current_mode:              ; 0xc07b7 LB 0x25
    12791286    push DS                                   ; 1e
    12801287    mov ax, strict word 00040h                ; b8 40 00
    12811288    mov ds, ax                                ; 8e d8
    1282     call 005c9h                               ; e8 19 fe
     1289    call 005d9h                               ; e8 19 fe
    12831290    and ax, strict byte 00001h                ; 83 e0 01
    1284     je short 007beh                           ; 74 09
     1291    je short 007ceh                           ; 74 09
    12851292    mov bx, 000bah                            ; bb ba 00
    12861293    mov ax, word [bx]                         ; 8b 07
    12871294    db  08bh, 0d8h
    12881295    ; mov bx, ax                                ; 8b d8
    1289     jne short 007c7h                          ; 75 09
     1296    jne short 007d7h                          ; 75 09
    12901297    mov bx, strict word 00049h                ; bb 49 00
    12911298    mov al, byte [bx]                         ; 8a 07
     
    12971304    pop DS                                    ; 1f
    12981305    retn                                      ; c3
    1299 vbe_biosfn_display_window_control:           ; 0xc07cc LB 0x2d
     1306vbe_biosfn_display_window_control:           ; 0xc07dc LB 0x2d
    13001307    cmp bl, 000h                              ; 80 fb 00
    1301     jne short 007f5h                          ; 75 24
     1308    jne short 00805h                          ; 75 24
    13021309    cmp bh, 001h                              ; 80 ff 01
    1303     je short 007ech                           ; 74 16
    1304     jc short 007dch                           ; 72 04
     1310    je short 007fch                           ; 74 16
     1311    jc short 007ech                           ; 72 04
    13051312    mov ax, 00100h                            ; b8 00 01
    13061313    retn                                      ; c3
    13071314    db  08bh, 0c2h
    13081315    ; mov ax, dx                                ; 8b c2
    1309     call 005d7h                               ; e8 f6 fd
    1310     call 005e7h                               ; e8 03 fe
     1316    call 005e7h                               ; e8 f6 fd
     1317    call 005f7h                               ; e8 03 fe
    13111318    db  03bh, 0c2h
    13121319    ; cmp ax, dx                                ; 3b c2
    1313     jne short 007f5h                          ; 75 0d
     1320    jne short 00805h                          ; 75 0d
    13141321    mov ax, strict word 0004fh                ; b8 4f 00
    13151322    retn                                      ; c3
    1316     call 005e7h                               ; e8 f8 fd
     1323    call 005f7h                               ; e8 f8 fd
    13171324    db  08bh, 0d0h
    13181325    ; mov dx, ax                                ; 8b d0
     
    13211328    mov ax, 0014fh                            ; b8 4f 01
    13221329    retn                                      ; c3
    1323 vbe_biosfn_set_get_logical_scan_line_length: ; 0xc07f9 LB 0x4d
     1330vbe_biosfn_set_get_logical_scan_line_length: ; 0xc0809 LB 0x4d
    13241331    db  08bh, 0c1h
    13251332    ; mov ax, cx                                ; 8b c1
    13261333    cmp bl, 001h                              ; 80 fb 01
    1327     je short 00824h                           ; 74 24
     1334    je short 00834h                           ; 74 24
    13281335    cmp bl, 002h                              ; 80 fb 02
    1329     je short 0080bh                           ; 74 06
    1330     jc short 00821h                           ; 72 1a
     1336    je short 0081bh                           ; 74 06
     1337    jc short 00831h                           ; 72 1a
    13311338    mov ax, 00100h                            ; b8 00 01
    13321339    retn                                      ; c3
    13331340    push ax                                   ; 50
    1334     call 0057ah                               ; e8 6b fd
     1341    call 0058ah                               ; e8 6b fd
    13351342    db  032h, 0ffh
    13361343    ; xor bh, bh                                ; 32 ff
     
    13391346    db  00ah, 0dbh
    13401347    ; or bl, bl                                 ; 0a db
    1341     jne short 0081ch                          ; 75 05
     1348    jne short 0082ch                          ; 75 05
    13421349    sal ax, 003h                              ; c1 e0 03
    13431350    mov BL, strict byte 001h                  ; b3 01
     
    13461353    pop ax                                    ; 58
    13471354    div bx                                    ; f7 f3
    1348     call 00684h                               ; e8 60 fe
    1349     call 0057ah                               ; e8 53 fd
     1355    call 00694h                               ; e8 60 fe
     1356    call 0058ah                               ; e8 53 fd
    13501357    db  032h, 0ffh
    13511358    ; xor bh, bh                                ; 32 ff
    13521359    db  08ah, 0dch
    13531360    ; mov bl, ah                                ; 8a dc
    1354     call 00697h                               ; e8 69 fe
     1361    call 006a7h                               ; e8 69 fe
    13551362    db  08bh, 0c8h
    13561363    ; mov cx, ax                                ; 8b c8
    13571364    db  00ah, 0dbh
    13581365    ; or bl, bl                                 ; 0a db
    1359     jne short 00839h                          ; 75 05
     1366    jne short 00849h                          ; 75 05
    13601367    shr ax, 003h                              ; c1 e8 03
    13611368    mov BL, strict byte 001h                  ; b3 01
     
    13631370    db  08bh, 0d8h
    13641371    ; mov bx, ax                                ; 8b d8
    1365     call 006a5h                               ; e8 65 fe
     1372    call 006b5h                               ; e8 65 fe
    13661373    db  08bh, 0d0h
    13671374    ; mov dx, ax                                ; 8b d0
    13681375    mov ax, strict word 0004fh                ; b8 4f 00
    13691376    retn                                      ; c3
    1370 vbe_biosfn_set_get_display_start:            ; 0xc0846 LB 0x34
     1377vbe_biosfn_set_get_display_start:            ; 0xc0856 LB 0x34
    13711378    cmp bl, 080h                              ; 80 fb 80
    1372     je short 00856h                           ; 74 0b
     1379    je short 00866h                           ; 74 0b
    13731380    cmp bl, 001h                              ; 80 fb 01
    1374     je short 0086ah                           ; 74 1a
    1375     jc short 0085ch                           ; 72 0a
     1381    je short 0087ah                           ; 74 1a
     1382    jc short 0086ch                           ; 72 0a
    13761383    mov ax, 00100h                            ; b8 00 01
    13771384    retn                                      ; c3
    1378     call 0056dh                               ; e8 14 fd
    1379     call 00560h                               ; e8 04 fd
     1385    call 0057dh                               ; e8 14 fd
     1386    call 00570h                               ; e8 04 fd
    13801387    db  08bh, 0c1h
    13811388    ; mov ax, cx                                ; 8b c1
    1382     call 0062bh                               ; e8 ca fd
     1389    call 0063bh                               ; e8 ca fd
    13831390    db  08bh, 0c2h
    13841391    ; mov ax, dx                                ; 8b c2
    1385     call 00649h                               ; e8 e3 fd
     1392    call 00659h                               ; e8 e3 fd
    13861393    mov ax, strict word 0004fh                ; b8 4f 00
    13871394    retn                                      ; c3
    1388     call 0063bh                               ; e8 ce fd
     1395    call 0064bh                               ; e8 ce fd
    13891396    db  08bh, 0c8h
    13901397    ; mov cx, ax                                ; 8b c8
    1391     call 00659h                               ; e8 e7 fd
     1398    call 00669h                               ; e8 e7 fd
    13921399    db  08bh, 0d0h
    13931400    ; mov dx, ax                                ; 8b d0
     
    13961403    mov ax, strict word 0004fh                ; b8 4f 00
    13971404    retn                                      ; c3
    1398 vbe_biosfn_set_get_dac_palette_format:       ; 0xc087a LB 0x37
     1405vbe_biosfn_set_get_dac_palette_format:       ; 0xc088a LB 0x37
    13991406    cmp bl, 001h                              ; 80 fb 01
    1400     je short 0089dh                           ; 74 1e
    1401     jc short 00885h                           ; 72 04
     1407    je short 008adh                           ; 74 1e
     1408    jc short 00895h                           ; 72 04
    14021409    mov ax, 00100h                            ; b8 00 01
    14031410    retn                                      ; c3
    1404     call 005c9h                               ; e8 41 fd
     1411    call 005d9h                               ; e8 41 fd
    14051412    cmp bh, 006h                              ; 80 ff 06
    1406     je short 00897h                           ; 74 0a
     1413    je short 008a7h                           ; 74 0a
    14071414    cmp bh, 008h                              ; 80 ff 08
    1408     jne short 008adh                          ; 75 1b
     1415    jne short 008bdh                          ; 75 1b
    14091416    or ax, strict byte 00020h                 ; 83 c8 20
    1410     jne short 0089ah                          ; 75 03
     1417    jne short 008aah                          ; 75 03
    14111418    and ax, strict byte 0ffdfh                ; 83 e0 df
    1412     call 005b9h                               ; e8 1c fd
     1419    call 005c9h                               ; e8 1c fd
    14131420    mov BH, strict byte 006h                  ; b7 06
    1414     call 005c9h                               ; e8 27 fd
     1421    call 005d9h                               ; e8 27 fd
    14151422    and ax, strict byte 00020h                ; 83 e0 20
    1416     je short 008a9h                           ; 74 02
     1423    je short 008b9h                           ; 74 02
    14171424    mov BH, strict byte 008h                  ; b7 08
    14181425    mov ax, strict word 0004fh                ; b8 4f 00
     
    14201427    mov ax, 0014fh                            ; b8 4f 01
    14211428    retn                                      ; c3
    1422 vbe_biosfn_set_get_palette_data:             ; 0xc08b1 LB 0x64
     1429vbe_biosfn_set_get_palette_data:             ; 0xc08c1 LB 0x64
    14231430    test bl, bl                               ; 84 db
    1424     je short 008c4h                           ; 74 0f
     1431    je short 008d4h                           ; 74 0f
    14251432    cmp bl, 001h                              ; 80 fb 01
    1426     je short 008ech                           ; 74 32
     1433    je short 008fch                           ; 74 32
    14271434    cmp bl, 003h                              ; 80 fb 03
    1428     jbe short 00911h                          ; 76 52
     1435    jbe short 00921h                          ; 76 52
    14291436    cmp bl, 080h                              ; 80 fb 80
    1430     jne short 0090dh                          ; 75 49
     1437    jne short 0091dh                          ; 75 49
    14311438    pushad                                    ; 66 60
    14321439    push DS                                   ; 1e
     
    14471454    rol eax, 008h                             ; 66 c1 c0 08
    14481455    out DX, AL                                ; ee
    1449     loop 008d2h                               ; e2 ed
     1456    loop 008e2h                               ; e2 ed
    14501457    pop DS                                    ; 1f
    14511458    popad                                     ; 66 61
     
    14661473    in AL, DX                                 ; ec
    14671474    stosd                                     ; 66 ab
    1468     loop 008f7h                               ; e2 ee
     1475    loop 00907h                               ; e2 ee
    14691476    popad                                     ; 66 61
    1470     jmp short 008e8h                          ; eb db
     1477    jmp short 008f8h                          ; eb db
    14711478    mov ax, 0014fh                            ; b8 4f 01
    14721479    retn                                      ; c3
    14731480    mov ax, 0024fh                            ; b8 4f 02
    14741481    retn                                      ; c3
    1475 vbe_biosfn_return_protected_mode_interface: ; 0xc0915 LB 0x19
     1482vbe_biosfn_return_protected_mode_interface: ; 0xc0925 LB 0x19
    14761483    test bl, bl                               ; 84 db
    1477     jne short 0092ah                          ; 75 11
     1484    jne short 0093ah                          ; 75 11
    14781485    mov di, 0c000h                            ; bf 00 c0
    14791486    mov es, di                                ; 8e c7
     
    14871494    retn                                      ; c3
    14881495
    1489   ; Padding 0xd2 bytes at 0xc092e
    1490   times 210 db 0
     1496  ; Padding 0xc2 bytes at 0xc093e
     1497  times 194 db 0
    14911498
    14921499section _TEXT progbits vstart=0xa00 align=1 ; size=0x2ebf class=CODE group=AUTO
     
    16211628    movzx bx, ch                              ; 0f b6 dd
    16221629    sal bx, 003h                              ; c1 e3 03
    1623     cmp byte [bx+0482fh], 000h                ; 80 bf 2f 48 00
     1630    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    16241631    jne short 00b50h                          ; 75 2d
    16251632    mov dx, ax                                ; 89 c2
     
    16371644    mov dx, cx                                ; 89 ca
    16381645    add dx, ax                                ; 01 c2
    1639     mov ax, word [bx+04832h]                  ; 8b 87 32 48
     1646    mov ax, word [bx+04833h]                  ; 8b 87 33 48
    16401647    call 02f07h                               ; e8 ba 23
    16411648    mov word [ss:si], ax                      ; 36 89 04
     
    16981705    mov dx, 0010ch                            ; ba 0c 01
    16991706    jmp short 00b84h                          ; eb c2
    1700     mov ax, 05daeh                            ; b8 ae 5d
     1707    mov ax, 05dafh                            ; b8 af 5d
    17011708    mov dx, 0c000h                            ; ba 00 c0
    17021709    jmp short 00b89h                          ; eb bf
    1703     mov ax, 055aeh                            ; b8 ae 55
     1710    mov ax, 055afh                            ; b8 af 55
    17041711    jmp short 00bc5h                          ; eb f6
    1705     mov ax, 059aeh                            ; b8 ae 59
     1712    mov ax, 059afh                            ; b8 af 59
    17061713    jmp short 00bc5h                          ; eb f1
    1707     mov ax, 07baeh                            ; b8 ae 7b
     1714    mov ax, 07bafh                            ; b8 af 7b
    17081715    jmp short 00bc5h                          ; eb ec
    1709     mov ax, 06baeh                            ; b8 ae 6b
     1716    mov ax, 06bafh                            ; b8 af 6b
    17101717    jmp short 00bc5h                          ; eb e7
    1711     mov ax, 07cdbh                            ; b8 db 7c
     1718    mov ax, 07cdch                            ; b8 dc 7c
    17121719    jmp short 00bc5h                          ; eb e2
    17131720    jmp short 00bb7h                          ; eb d2
     
    17291736    movzx bx, al                              ; 0f b6 d8
    17301737    sal bx, 003h                              ; c1 e3 03
    1731     cmp byte [bx+0482fh], 000h                ; 80 bf 2f 48 00
     1738    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    17321739    je near 00d15h                            ; 0f 84 fe 00
    1733     mov bl, byte [bx+04830h]                  ; 8a 9f 30 48
     1740    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
    17341741    cmp bl, 003h                              ; 80 fb 03
    17351742    jc short 00c31h                           ; 72 11
     
    17901797    movzx bx, cl                              ; 0f b6 d9
    17911798    sal bx, 003h                              ; c1 e3 03
    1792     cmp byte [bx+04831h], 002h                ; 80 bf 31 48 02
     1799    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
    17931800    jne short 00cd9h                          ; 75 1b
    17941801    mov cx, si                                ; 89 f1
     
    20782085    mov si, bx                                ; 89 de
    20792086    sal si, 003h                              ; c1 e6 03
    2080     cmp byte [si+0482fh], 000h                ; 80 bc 2f 48 00
     2087    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    20812088    jne short 00f62h                          ; 75 40
    20822089    mov dx, strict word 0004ah                ; ba 4a 00
     
    21052112    imul bx, di                               ; 0f af df
    21062113    jmp short 00f74h                          ; eb 12
    2107     movzx bx, byte [bx+048aeh]                ; 0f b6 9f ae 48
     2114    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
    21082115    sal bx, 006h                              ; c1 e3 06
    21092116    movzx ax, cl                              ; 0f b6 c1
    2110     mov bx, word [bx+048c5h]                  ; 8b 9f c5 48
     2117    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
    21112118    imul bx, ax                               ; 0f af d8
    21122119    mov dx, strict word 00063h                ; ba 63 00
     
    21542161    and AL, strict byte 080h                  ; 24 80
    21552162    mov byte [bp-006h], al                    ; 88 46 fa
    2156     call 00794h                               ; e8 c8 f7
     2163    call 007a4h                               ; e8 d8 f7
    21572164    test ax, ax                               ; 85 c0
    21582165    je short 00fdch                           ; 74 0c
     
    21702177    je near 01333h                            ; 0f 84 43 03
    21712178    movzx si, al                              ; 0f b6 f0
    2172     mov al, byte [si+048aeh]                  ; 8a 84 ae 48
     2179    mov al, byte [si+048afh]                  ; 8a 84 af 48
    21732180    mov byte [bp-002h], al                    ; 88 46 fe
    21742181    movzx bx, al                              ; 0f b6 d8
    21752182    sal bx, 006h                              ; c1 e3 06
    2176     movzx ax, byte [bx+048c2h]                ; 0f b6 87 c2 48
     2183    movzx ax, byte [bx+048c3h]                ; 0f b6 87 c3 48
    21772184    mov word [bp-00eh], ax                    ; 89 46 f2
    2178     movzx ax, byte [bx+048c3h]                ; 0f b6 87 c3 48
     2185    movzx ax, byte [bx+048c4h]                ; 0f b6 87 c4 48
    21792186    mov word [bp-00ch], ax                    ; 89 46 f4
    2180     movzx ax, byte [bx+048c4h]                ; 0f b6 87 c4 48
     2187    movzx ax, byte [bx+048c5h]                ; 0f b6 87 c5 48
    21812188    mov word [bp-00ah], ax                    ; 89 46 f6
    21822189    mov dx, 00087h                            ; ba 87 00
     
    21942201    mov bx, si                                ; 89 f3
    21952202    sal bx, 003h                              ; c1 e3 03
    2196     mov al, byte [bx+04834h]                  ; 8a 87 34 48
     2203    mov al, byte [bx+04835h]                  ; 8a 87 35 48
    21972204    mov dx, 003c6h                            ; ba c6 03
    21982205    out DX, AL                                ; ee
     
    22002207    mov dx, 003c8h                            ; ba c8 03
    22012208    out DX, AL                                ; ee
    2202     mov bl, byte [bx+04835h]                  ; 8a 9f 35 48
     2209    mov bl, byte [bx+04836h]                  ; 8a 9f 36 48
    22032210    cmp bl, 001h                              ; 80 fb 01
    22042211    jc short 01065h                           ; 72 0e
     
    22112218    test bl, bl                               ; 84 db
    22122219    jne short 0107bh                          ; 75 12
    2213     mov di, 05042h                            ; bf 42 50
     2220    mov di, 05043h                            ; bf 43 50
    22142221    jmp short 0107bh                          ; eb 0d
    2215     mov di, 05102h                            ; bf 02 51
     2222    mov di, 05103h                            ; bf 03 51
    22162223    jmp short 0107bh                          ; eb 08
    2217     mov di, 051c2h                            ; bf c2 51
     2224    mov di, 051c3h                            ; bf c3 51
    22182225    jmp short 0107bh                          ; eb 03
    2219     mov di, 05282h                            ; bf 82 52
     2226    mov di, 05283h                            ; bf 83 52
    22202227    xor bx, bx                                ; 31 db
    22212228    jmp short 0108eh                          ; eb 0f
     
    22302237    movzx si, byte [bp-008h]                  ; 0f b6 76 f8
    22312238    sal si, 003h                              ; c1 e6 03
    2232     movzx si, byte [si+04835h]                ; 0f b6 b4 35 48
    2233     movzx dx, byte [si+048beh]                ; 0f b6 94 be 48
     2239    movzx si, byte [si+04836h]                ; 0f b6 b4 36 48
     2240    movzx dx, byte [si+048bfh]                ; 0f b6 94 bf 48
    22342241    cmp bx, dx                                ; 39 d3
    22352242    jnbe short 0107fh                         ; 77 dc
     
    22632270    sal si, 006h                              ; c1 e6 06
    22642271    add si, bx                                ; 01 de
    2265     mov al, byte [si+048e5h]                  ; 8a 84 e5 48
     2272    mov al, byte [si+048e6h]                  ; 8a 84 e6 48
    22662273    out DX, AL                                ; ee
    22672274    inc bx                                    ; 43
     
    22872294    sal si, 006h                              ; c1 e6 06
    22882295    add si, bx                                ; 01 de
    2289     mov al, byte [si+048c6h]                  ; 8a 84 c6 48
     2296    mov al, byte [si+048c7h]                  ; 8a 84 c7 48
    22902297    mov dx, 003c5h                            ; ba c5 03
    22912298    out DX, AL                                ; ee
     
    23022309    sal si, 006h                              ; c1 e6 06
    23032310    add si, bx                                ; 01 de
    2304     mov al, byte [si+048f9h]                  ; 8a 84 f9 48
     2311    mov al, byte [si+048fah]                  ; 8a 84 fa 48
    23052312    mov dx, 003cfh                            ; ba cf 03
    23062313    out DX, AL                                ; ee
     
    23092316    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    23102317    sal bx, 003h                              ; c1 e3 03
    2311     cmp byte [bx+04830h], 001h                ; 80 bf 30 48 01
     2318    cmp byte [bx+04831h], 001h                ; 80 bf 31 48 01
    23122319    jne short 01158h                          ; 75 05
    23132320    mov dx, 003b4h                            ; ba b4 03
     
    23292336    add di, bx                                ; 01 df
    23302337    lea dx, [si+001h]                         ; 8d 54 01
    2331     mov al, byte [di+048cch]                  ; 8a 85 cc 48
     2338    mov al, byte [di+048cdh]                  ; 8a 85 cd 48
    23322339    out DX, AL                                ; ee
    23332340    inc bx                                    ; 43
    23342341    jmp short 01165h                          ; eb e0
    23352342    mov bx, cx                                ; 89 cb
    2336     mov al, byte [bx+048cbh]                  ; 8a 87 cb 48
     2343    mov al, byte [bx+048cch]                  ; 8a 87 cc 48
    23372344    mov dx, 003c2h                            ; ba c2 03
    23382345    out DX, AL                                ; ee
     
    23482355    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    23492356    sal bx, 003h                              ; c1 e3 03
    2350     cmp byte [bx+0482fh], 000h                ; 80 bf 2f 48 00
     2357    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    23512358    jne short 011c2h                          ; 75 13
    2352     mov es, [bx+04832h]                       ; 8e 87 32 48
     2359    mov es, [bx+04833h]                       ; 8e 87 33 48
    23532360    mov cx, 04000h                            ; b9 00 40
    23542361    mov ax, 00720h                            ; b8 20 07
     
    23602367    cmp byte [bp-004h], 00dh                  ; 80 7e fc 0d
    23612368    jnc short 011dah                          ; 73 12
    2362     mov es, [bx+04832h]                       ; 8e 87 32 48
     2369    mov es, [bx+04833h]                       ; 8e 87 33 48
    23632370    mov cx, 04000h                            ; b9 00 40
    23642371    xor ax, ax                                ; 31 c0
     
    23782385    mov AL, strict byte 00fh                  ; b0 0f
    23792386    out DX, AL                                ; ee
    2380     mov es, [bx+04832h]                       ; 8e 87 32 48
     2387    mov es, [bx+04833h]                       ; 8e 87 33 48
    23812388    mov cx, 08000h                            ; b9 00 80
    23822389    xor ax, ax                                ; 31 c0
     
    23972404    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    23982405    sal bx, 006h                              ; c1 e3 06
    2399     mov bx, word [bx+048c5h]                  ; 8b 9f c5 48
     2406    mov bx, word [bx+048c6h]                  ; 8b 9f c6 48
    24002407    mov dx, strict word 0004ch                ; ba 4c 00
    24012408    mov ax, strict word 00040h                ; b8 40 00
     
    24362443    call 02ef9h                               ; e8 68 1c
    24372444    mov cx, ds                                ; 8c d9
    2438     mov bx, 05592h                            ; bb 92 55
     2445    mov bx, 05593h                            ; bb 93 55
    24392446    mov dx, 000a8h                            ; ba a8 00
    24402447    mov ax, strict word 00040h                ; b8 40 00
     
    24502457    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    24512458    sal bx, 003h                              ; c1 e3 03
    2452     cmp byte [bx+0482fh], 000h                ; 80 bf 2f 48 00
     2459    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    24532460    jne short 012cch                          ; 75 09
    24542461    mov dx, strict word 00007h                ; ba 07 00
     
    24682475    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    24692476    sal bx, 003h                              ; c1 e3 03
    2470     cmp byte [bx+0482fh], 000h                ; 80 bf 2f 48 00
     2477    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    24712478    jne short 01303h                          ; 75 10
    24722479    xor bl, bl                                ; 30 db
     
    24782485    mov AH, strict byte 011h                  ; b4 11
    24792486    int 010h                                  ; cd 10
    2480     mov dx, 059aeh                            ; ba ae 59
     2487    mov dx, 059afh                            ; ba af 59
    24812488    mov ax, strict word 0001fh                ; b8 1f 00
    24822489    call 00a00h                               ; e8 f4 f6
     
    24882495    cmp ax, strict word 00008h                ; 3d 08 00
    24892496    jne short 01333h                          ; 75 15
    2490     mov dx, 055aeh                            ; ba ae 55
     2497    mov dx, 055afh                            ; ba af 55
    24912498    mov ax, strict word 00043h                ; b8 43 00
    24922499    call 00a00h                               ; e8 d9 f6
    24932500    jmp short 01333h                          ; eb 0a
    2494     mov dx, 05daeh                            ; ba ae 5d
     2501    mov dx, 05dafh                            ; ba af 5d
    24952502    jmp short 01321h                          ; eb f3
    2496     mov dx, 06baeh                            ; ba ae 6b
     2503    mov dx, 06bafh                            ; ba af 6b
    24972504    jmp short 01321h                          ; eb ee
    24982505    leave                                     ; c9
     
    27852792    mov ax, word [bp-012h]                    ; 8b 46 ee
    27862793    imul ax, cx                               ; 0f af c1
    2787     cmp byte [di+0482fh], 000h                ; 80 bd 2f 48 00
     2794    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
    27882795    jne near 0178ch                           ; 0f 85 9f 01
    27892796    mov dx, ax                                ; 89 c2
     
    28082815    sal dx, 008h                              ; c1 e2 08
    28092816    add dx, strict byte 00020h                ; 83 c2 20
    2810     mov es, [di+04832h]                       ; 8e 85 32 48
     2817    mov es, [di+04833h]                       ; 8e 85 33 48
    28112818    mov cx, ax                                ; 89 c1
    28122819    mov ax, dx                                ; 89 d0
     
    28422849    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    28432850    sal si, 003h                              ; c1 e6 03
    2844     mov es, [si+04832h]                       ; 8e 84 32 48
     2851    mov es, [si+04833h]                       ; 8e 84 33 48
    28452852    cld                                       ; fc
    28462853    jcxz 01698h                               ; e3 02
     
    28562863    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    28572864    sal si, 003h                              ; c1 e6 03
    2858     mov ax, word [si+04832h]                  ; 8b 84 32 48
     2865    mov ax, word [si+04833h]                  ; 8b 84 33 48
    28592866    mov si, word [bp-010h]                    ; 8b 76 f0
    28602867    imul si, word [bp-012h]                   ; 0f af 76 ee
     
    29002907    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    29012908    sal si, 003h                              ; c1 e6 03
    2902     mov es, [si+04832h]                       ; 8e 84 32 48
     2909    mov es, [si+04833h]                       ; 8e 84 33 48
    29032910    cld                                       ; fc
    29042911    jcxz 01739h                               ; e3 02
     
    29152922    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    29162923    sal si, 003h                              ; c1 e6 03
    2917     mov ax, word [si+04832h]                  ; 8b 84 32 48
     2924    mov ax, word [si+04833h]                  ; 8b 84 33 48
    29182925    mov si, word [bp-010h]                    ; 8b 76 f0
    29192926    imul si, word [bp-012h]                   ; 0f af 76 ee
     
    29352942    dec word [bp-010h]                        ; ff 4e f0
    29362943    jmp near 016e8h                           ; e9 5c ff
    2937     movzx bx, byte [si+048aeh]                ; 0f b6 9c ae 48
     2944    movzx bx, byte [si+048afh]                ; 0f b6 9c af 48
    29382945    sal bx, 006h                              ; c1 e3 06
    2939     mov dl, byte [bx+048c4h]                  ; 8a 97 c4 48
     2946    mov dl, byte [bx+048c5h]                  ; 8a 97 c5 48
    29402947    mov byte [bp-006h], dl                    ; 88 56 fa
    2941     mov bl, byte [di+04830h]                  ; 8a 9d 30 48
     2948    mov bl, byte [di+04831h]                  ; 8a 9d 31 48
    29422949    cmp bl, 004h                              ; 80 fb 04
    29432950    je short 017b3h                           ; 74 0f
     
    29722979    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    29732980    sal bx, 003h                              ; c1 e3 03
    2974     mov es, [bx+04832h]                       ; 8e 87 32 48
     2981    mov es, [bx+04833h]                       ; 8e 87 33 48
    29752982    xor di, di                                ; 31 ff
    29762983    cld                                       ; fc
     
    30543061    dec word [bp-010h]                        ; ff 4e f0
    30553062    jmp short 01881h                          ; eb 8f
    3056     mov dl, byte [di+04831h]                  ; 8a 95 31 48
     3063    mov dl, byte [di+04832h]                  ; 8a 95 32 48
    30573064    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    30583065    jne short 01939h                          ; 75 3d
     
    30723079    imul cx, ax                               ; 0f af c8
    30733080    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    3074     mov es, [di+04832h]                       ; 8e 85 32 48
     3081    mov es, [di+04833h]                       ; 8e 85 33 48
    30753082    xor di, di                                ; 31 ff
    30763083    cld                                       ; fc
     
    31713178    cmp byte [bp+00ah], 00eh                  ; 80 7e 0a 0e
    31723179    jne short 01a51h                          ; 75 0a
    3173     mov di, 05daeh                            ; bf ae 5d
     3180    mov di, 05dafh                            ; bf af 5d
    31743181    jmp short 01a54h                          ; eb 08
    3175     mov di, 06baeh                            ; bf ae 6b
     3182    mov di, 06bafh                            ; bf af 6b
    31763183    jmp short 01a54h                          ; eb 03
    3177     mov di, 055aeh                            ; bf ae 55
     3184    mov di, 055afh                            ; bf af 55
    31783185    movzx si, cl                              ; 0f b6 f1
    31793186    movzx bx, byte [bp+00ah]                  ; 0f b6 5e 0a
     
    32593266    enter 00008h, 000h                        ; c8 08 00 00
    32603267    mov byte [bp-004h], dl                    ; 88 56 fc
    3261     mov si, 055aeh                            ; be ae 55
     3268    mov si, 055afh                            ; be af 55
    32623269    xor bh, bh                                ; 30 ff
    32633270    movzx di, byte [bp+00ah]                  ; 0f b6 7e 0a
     
    33703377    enter 00008h, 000h                        ; c8 08 00 00
    33713378    mov byte [bp-002h], dl                    ; 88 56 fe
    3372     mov di, 055aeh                            ; bf ae 55
     3379    mov di, 055afh                            ; bf af 55
    33733380    movzx dx, cl                              ; 0f b6 d1
    33743381    movzx cx, byte [bp+008h]                  ; 0f b6 4e 08
     
    34623469    mov di, bx                                ; 89 df
    34633470    sal di, 003h                              ; c1 e7 03
    3464     cmp byte [di+0482fh], 000h                ; 80 bd 2f 48 00
     3471    cmp byte [di+04830h], 000h                ; 80 bd 30 48 00
    34653472    jne short 01d74h                          ; 75 47
    34663473    mov bx, word [bp-014h]                    ; 8b 5e ec
     
    34833490    mov word [bp-016h], ax                    ; 89 46 ea
    34843491    mov ax, word [bp-016h]                    ; 8b 46 ea
    3485     mov es, [di+04832h]                       ; 8e 85 32 48
     3492    mov es, [di+04833h]                       ; 8e 85 33 48
    34863493    mov cx, si                                ; 89 f1
    34873494    mov di, dx                                ; 89 d7
     
    34903497    rep stosw                                 ; f3 ab
    34913498    jmp near 01e1ah                           ; e9 a6 00
    3492     movzx bx, byte [bx+048aeh]                ; 0f b6 9f ae 48
     3499    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
    34933500    sal bx, 006h                              ; c1 e3 06
    3494     mov al, byte [bx+048c4h]                  ; 8a 87 c4 48
     3501    mov al, byte [bx+048c5h]                  ; 8a 87 c5 48
    34953502    mov byte [bp-004h], al                    ; 88 46 fc
    3496     mov al, byte [di+04831h]                  ; 8a 85 31 48
     3503    mov al, byte [di+04832h]                  ; 8a 85 32 48
    34973504    mov byte [bp-010h], al                    ; 88 46 f0
    34983505    dec si                                    ; 4e
     
    35043511    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    35053512    sal bx, 003h                              ; c1 e3 03
    3506     mov al, byte [bx+04830h]                  ; 8a 87 30 48
     3513    mov al, byte [bx+04831h]                  ; 8a 87 31 48
    35073514    cmp AL, strict byte 003h                  ; 3c 03
    35083515    jc short 01db8h                           ; 72 0c
     
    35893596    mov bx, di                                ; 89 fb
    35903597    sal bx, 003h                              ; c1 e3 03
    3591     cmp byte [bx+0482fh], 000h                ; 80 bf 2f 48 00
     3598    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    35923599    jne short 01edah                          ; 75 4a
    35933600    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    36113618    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    36123619    sal bx, 003h                              ; c1 e3 03
    3613     mov di, word [bx+04832h]                  ; 8b bf 32 48
     3620    mov di, word [bx+04833h]                  ; 8b bf 33 48
    36143621    mov bx, ax                                ; 89 c3
    36153622    mov dx, cx                                ; 89 ca
     
    36193626    inc cx                                    ; 41
    36203627    jmp short 01eb6h                          ; eb dc
    3621     movzx di, byte [di+048aeh]                ; 0f b6 bd ae 48
     3628    movzx di, byte [di+048afh]                ; 0f b6 bd af 48
    36223629    sal di, 006h                              ; c1 e7 06
    3623     mov al, byte [di+048c4h]                  ; 8a 85 c4 48
     3630    mov al, byte [di+048c5h]                  ; 8a 85 c5 48
    36243631    mov byte [bp-006h], al                    ; 88 46 fa
    3625     mov al, byte [bx+04831h]                  ; 8a 87 31 48
     3632    mov al, byte [bx+04832h]                  ; 8a 87 32 48
    36263633    mov byte [bp-004h], al                    ; 88 46 fc
    36273634    dec si                                    ; 4e
     
    36333640    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    36343641    sal bx, 003h                              ; c1 e3 03
    3635     mov bl, byte [bx+04830h]                  ; 8a 9f 30 48
     3642    mov bl, byte [bx+04831h]                  ; 8a 9f 31 48
    36363643    cmp bl, 003h                              ; 80 fb 03
    36373644    jc short 01f21h                           ; 72 0e
     
    36933700    movzx bx, al                              ; 0f b6 d8
    36943701    sal bx, 003h                              ; c1 e3 03
    3695     cmp byte [bx+0482fh], 000h                ; 80 bf 2f 48 00
     3702    cmp byte [bx+04830h], 000h                ; 80 bf 30 48 00
    36963703    je near 020edh                            ; 0f 84 34 01
    3697     mov al, byte [bx+04830h]                  ; 8a 87 30 48
     3704    mov al, byte [bx+04831h]                  ; 8a 87 31 48
    36983705    cmp AL, strict byte 003h                  ; 3c 03
    36993706    jc short 01fd0h                           ; 72 0f
     
    37553762    shr ax, 1                                 ; d1 e8
    37563763    imul ax, ax, strict byte 00050h           ; 6b c0 50
    3757     cmp byte [bx+04831h], 002h                ; 80 bf 31 48 02
     3764    cmp byte [bx+04832h], 002h                ; 80 bf 32 48 02
    37583765    jne short 02052h                          ; 75 08
    37593766    mov bx, word [bp-008h]                    ; 8b 5e f8
     
    37733780    movzx si, byte [bp-002h]                  ; 0f b6 76 fe
    37743781    sal si, 003h                              ; c1 e6 03
    3775     cmp byte [si+04831h], 002h                ; 80 bc 31 48 02
     3782    cmp byte [si+04832h], 002h                ; 80 bc 32 48 02
    37763783    jne short 02098h                          ; 75 19
    37773784    mov al, byte [bp-008h]                    ; 8a 46 f8
     
    39133920    mov si, bx                                ; 89 de
    39143921    sal si, 003h                              ; c1 e6 03
    3915     cmp byte [si+0482fh], 000h                ; 80 bc 2f 48 00
     3922    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    39163923    jne short 02238h                          ; 75 4b
    39173924    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    39293936    add cx, dx                                ; 01 d1
    39303937    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    3931     mov ax, word [si+04832h]                  ; 8b 84 32 48
     3938    mov ax, word [si+04833h]                  ; 8b 84 33 48
    39323939    mov dx, cx                                ; 89 ca
    39333940    call 02ef9h                               ; e8 da 0c
     
    39373944    mov dx, cx                                ; 89 ca
    39383945    inc dx                                    ; 42
    3939     mov ax, word [si+04832h]                  ; 8b 84 32 48
     3946    mov ax, word [si+04833h]                  ; 8b 84 33 48
    39403947    call 02ef9h                               ; e8 c4 0c
    39413948    jmp near 022b6h                           ; e9 7e 00
    3942     movzx bx, byte [bx+048aeh]                ; 0f b6 9f ae 48
     3949    movzx bx, byte [bx+048afh]                ; 0f b6 9f af 48
    39433950    sal bx, 006h                              ; c1 e3 06
    3944     mov ah, byte [bx+048c4h]                  ; 8a a7 c4 48
    3945     mov dl, byte [si+04831h]                  ; 8a 94 31 48
    3946     mov al, byte [si+04830h]                  ; 8a 84 30 48
     3951    mov ah, byte [bx+048c5h]                  ; 8a a7 c5 48
     3952    mov dl, byte [si+04832h]                  ; 8a 94 32 48
     3953    mov al, byte [si+04831h]                  ; 8a 84 31 48
    39473954    cmp AL, strict byte 003h                  ; 3c 03
    39483955    jc short 0225ch                           ; 72 0c
     
    40004007    db  0feh, 0cfh
    40014008    ; dec bh                                    ; fe cf
    4002     cmp byte [si+0482fh], 000h                ; 80 bc 2f 48 00
     4009    cmp byte [si+04830h], 000h                ; 80 bc 30 48 00
    40034010    jne short 02332h                          ; 75 46
    40044011    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    40174024    add dx, cx                                ; 01 ca
    40184025    inc dx                                    ; 42
    4019     mov ax, word [si+04832h]                  ; 8b 84 32 48
     4026    mov ax, word [si+04833h]                  ; 8b 84 33 48
    40204027    call 02eebh                               ; e8 d1 0b
    40214028    push strict byte 00001h                   ; 6a 01
     
    42824289    sal di, 005h                              ; c1 e7 05
    42834290    add di, word [bp-004h]                    ; 03 7e fc
    4284     add si, 05daeh                            ; 81 c6 ae 5d
     4291    add si, 05dafh                            ; 81 c6 af 5d
    42854292    mov cx, strict word 0000eh                ; b9 0e 00
    42864293    mov dx, 0c000h                            ; ba 00 c0
     
    43344341    sal di, 005h                              ; c1 e7 05
    43354342    add di, word [bp-004h]                    ; 03 7e fc
    4336     add si, 055aeh                            ; 81 c6 ae 55
     4343    add si, 055afh                            ; 81 c6 af 55
    43374344    mov cx, strict word 00008h                ; b9 08 00
    43384345    mov dx, 0c000h                            ; ba 00 c0
     
    43864393    sal di, 005h                              ; c1 e7 05
    43874394    add di, word [bp-004h]                    ; 03 7e fc
    4388     add si, 06baeh                            ; 81 c6 ae 6b
     4395    add si, 06bafh                            ; 81 c6 af 6b
    43894396    mov cx, strict word 00010h                ; b9 10 00
    43904397    mov dx, 0c000h                            ; ba 00 c0
     
    45164523    push bx                                   ; 53
    45174524    mov cx, ds                                ; 8c d9
    4518     mov bx, 05582h                            ; bb 82 55
     4525    mov bx, 05583h                            ; bb 83 55
    45194526    mov dx, word [bp-004h]                    ; 8b 56 fc
    45204527    mov ax, word [bp-002h]                    ; 8b 46 fe
     
    54075414    movzx bx, al                              ; 0f b6 d8
    54085415    sal bx, 003h                              ; c1 e3 03
    5409     cmp dl, byte [bx+0482eh]                  ; 3a 97 2e 48
     5416    cmp dl, byte [bx+0482fh]                  ; 3a 97 2f 48
    54105417    jne short 02ed1h                          ; 75 ee
    54115418    mov ah, al                                ; 88 c4
     
    58425849    or AL, strict byte 01ch                   ; 0c 1c
    58435850    jmp near 0301ah                           ; e9 20 fd
    5844     call 00794h                               ; e8 97 d4
     5851    call 007a4h                               ; e8 a7 d4
    58455852    test ax, ax                               ; 85 c0
    58465853    je near 03372h                            ; 0f 84 6f 00
     
    60666073    mov word [bp-004h], bx                    ; 89 5e fc
    60676074    mov word [bp-006h], strict word 00022h    ; c7 46 fa 22 00
    6068     call 00597h                               ; e8 fb d0
     6075    call 005a7h                               ; e8 0b d1
    60696076    mov word [bp-00ah], ax                    ; 89 46 f6
    60706077    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    62026209    mov dx, word [bp-002h]                    ; 8b 56 fe
    62036210    add dx, strict byte 0000ch                ; 83 c2 0c
    6204     mov bx, 005f5h                            ; bb f5 05
     6211    mov bx, 00605h                            ; bb 05 06
    62056212    mov ax, si                                ; 89 f0
    62066213    call 02f15h                               ; e8 f5 f8
     
    62566263    jnc short 036a8h                          ; 73 12
    62576264    xor ax, ax                                ; 31 c0
    6258     call 005b9h                               ; e8 1e cf
     6265    call 005c9h                               ; e8 2e cf
    62596266    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    62606267    call 00fb8h                               ; e8 16 d9
     
    62816288    mov dl, al                                ; 88 c2
    62826289    xor ax, ax                                ; 31 c0
    6283     call 005b9h                               ; e8 d9 ce
     6290    call 005c9h                               ; e8 e9 ce
    62846291    cmp bl, 004h                              ; 80 fb 04
    62856292    jne short 036ebh                          ; 75 06
     
    62936300    call 03393h                               ; e8 98 fc
    62946301    xor ax, ax                                ; 31 c0
    6295     call 005d7h                               ; e8 d7 ce
     6302    call 005e7h                               ; e8 e7 ce
    62966303    mov al, byte [bp-004h]                    ; 8a 46 fc
    62976304    or AL, strict byte 001h                   ; 0c 01
     
    62996306    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    63006307    or ax, dx                                 ; 09 d0
    6301     call 005b9h                               ; e8 a8 ce
    6302     call 006b3h                               ; e8 9f cf
     6308    call 005c9h                               ; e8 b8 ce
     6309    call 006c3h                               ; e8 af cf
    63036310    mov bx, word [bp-006h]                    ; 8b 5e fa
    63046311    mov dx, 000bah                            ; ba ba 00
     
    66436650  times 235 db 0
    66446651
    6645 section _DATA progbits vstart=0x4800 align=1 ; size=0x36e0 class=DATA group=DGROUP
    6646 _msg_vga_init:                               ; 0xc4800 LB 0x2e
    6647     db  'Oracle VM VirtualBox Version 4.2.0 VGA BIOS', 00dh, 00ah, 000h
    6648 _vga_modes:                                  ; 0xc482e LB 0x80
     6652section _DATA progbits vstart=0x4800 align=1 ; size=0x36e1 class=DATA group=DGROUP
     6653_msg_vga_init:                               ; 0xc4800 LB 0x2f
     6654    db  'Oracle VM VirtualBox Version 4.2.51 VGA BIOS', 00dh, 00ah, 000h
     6655_vga_modes:                                  ; 0xc482f LB 0x80
    66496656    db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
    66506657    db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     
    66556662    db  011h, 001h, 003h, 001h, 000h, 0a0h, 0ffh, 002h, 012h, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
    66566663    db  013h, 001h, 005h, 008h, 000h, 0a0h, 0ffh, 003h, 06ah, 001h, 004h, 004h, 000h, 0a0h, 0ffh, 002h
    6657 _line_to_vpti:                               ; 0xc48ae LB 0x10
     6664_line_to_vpti:                               ; 0xc48af LB 0x10
    66586665    db  017h, 017h, 018h, 018h, 004h, 005h, 006h, 007h, 00dh, 00eh, 011h, 012h, 01ah, 01bh, 01ch, 01dh
    6659 _dac_regs:                                   ; 0xc48be LB 0x4
     6666_dac_regs:                                   ; 0xc48bf LB 0x4
    66606667    dd  0ff3f3f3fh
    6661 _video_param_table:                          ; 0xc48c2 LB 0x780
     6668_video_param_table:                          ; 0xc48c3 LB 0x780
    66626669    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    66636670    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     
    67806787    db  073h, 0e3h, 0ffh, 000h, 001h, 002h, 003h, 004h, 005h, 014h, 007h, 038h, 039h, 03ah, 03bh, 03ch
    67816788    db  03dh, 03eh, 03fh, 001h, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 005h, 00fh, 0ffh
    6782 _palette0:                                   ; 0xc5042 LB 0xc0
     6789_palette0:                                   ; 0xc5043 LB 0xc0
    67836790    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    67846791    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah
     
    67936800    db  02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 02ah, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
    67946801    db  03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh, 03fh
    6795 _palette1:                                   ; 0xc5102 LB 0xc0
     6802_palette1:                                   ; 0xc5103 LB 0xc0
    67966803    db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
    67976804    db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah
     
    68066813    db  015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
    68076814    db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
    6808 _palette2:                                   ; 0xc51c2 LB 0xc0
     6815_palette2:                                   ; 0xc51c3 LB 0xc0
    68096816    db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
    68106817    db  000h, 02ah, 02ah, 02ah, 000h, 02ah, 02ah, 02ah, 000h, 000h, 015h, 000h, 000h, 03fh, 000h, 02ah
     
    68196826    db  015h, 02ah, 03fh, 03fh, 000h, 03fh, 03fh, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
    68206827    db  015h, 015h, 03fh, 03fh, 03fh, 015h, 015h, 03fh, 015h, 03fh, 03fh, 03fh, 015h, 03fh, 03fh, 03fh
    6821 _palette3:                                   ; 0xc5282 LB 0x300
     6828_palette3:                                   ; 0xc5283 LB 0x300
    68226829    db  000h, 000h, 000h, 000h, 000h, 02ah, 000h, 02ah, 000h, 000h, 02ah, 02ah, 02ah, 000h, 000h, 02ah
    68236830    db  000h, 02ah, 02ah, 015h, 000h, 02ah, 02ah, 02ah, 015h, 015h, 015h, 015h, 015h, 03fh, 015h, 03fh
     
    68686875    db  00fh, 010h, 00bh, 00dh, 010h, 00bh, 00ch, 010h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    68696876    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    6870 _static_functionality:                       ; 0xc5582 LB 0x10
     6877_static_functionality:                       ; 0xc5583 LB 0x10
    68716878    db  0ffh, 0e0h, 00fh, 000h, 000h, 000h, 000h, 007h, 002h, 008h, 0e7h, 00ch, 000h, 000h, 000h, 000h
    6872 _video_save_pointer_table:                   ; 0xc5592 LB 0x1c
    6873     db  0c2h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     6879_video_save_pointer_table:                   ; 0xc5593 LB 0x1c
     6880    db  0c3h, 048h, 000h, 0c0h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    68746881    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    6875 _vgafont8:                                   ; 0xc55ae LB 0x800
     6882_vgafont8:                                   ; 0xc55af LB 0x800
    68766883    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
    68776884    db  07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
     
    70027009    db  078h, 06ch, 06ch, 06ch, 06ch, 000h, 000h, 000h, 070h, 018h, 030h, 060h, 078h, 000h, 000h, 000h
    70037010    db  000h, 000h, 03ch, 03ch, 03ch, 03ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7004 _vgafont14:                                  ; 0xc5dae LB 0xe00
     7011_vgafont14:                                  ; 0xc5daf LB 0xe00
    70057012    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    70067013    db  07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 07eh, 000h, 000h, 000h, 000h, 000h, 07eh, 0ffh
     
    72277234    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h
    72287235    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7229 _vgafont16:                                  ; 0xc6bae LB 0x1000
     7236_vgafont16:                                  ; 0xc6baf LB 0x1000
    72307237    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    72317238    db  000h, 000h, 07eh, 081h, 0a5h, 081h, 081h, 0bdh, 099h, 081h, 081h, 07eh, 000h, 000h, 000h, 000h
     
    74847491    db  000h, 000h, 000h, 000h, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 07ch, 000h, 000h, 000h, 000h, 000h
    74857492    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7486 _vgafont14alt:                               ; 0xc7bae LB 0x12d
     7493_vgafont14alt:                               ; 0xc7baf LB 0x12d
    74877494    db  01dh, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 022h
    74887495    db  000h, 063h, 063h, 063h, 022h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 000h
     
    75047511    db  000h, 018h, 018h, 018h, 0ffh, 018h, 018h, 018h, 000h, 0ffh, 000h, 000h, 000h, 0f6h, 000h, 000h
    75057512    db  018h, 018h, 000h, 000h, 0ffh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h
    7506 _vgafont16alt:                               ; 0xc7cdb LB 0x145
     7513_vgafont16alt:                               ; 0xc7cdc LB 0x144
    75077514    db  01dh, 000h, 000h, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h, 000h, 000h, 000h
    75087515    db  000h, 030h, 000h, 000h, 03ch, 066h, 0c3h, 0c3h, 0dbh, 0dbh, 0c3h, 0c3h, 066h, 03ch, 000h, 000h
     
    75257532    db  000h, 0abh, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 060h, 0ceh, 09bh, 006h, 00ch, 01fh
    75267533    db  000h, 000h, 0ach, 000h, 0c0h, 0c0h, 0c2h, 0c6h, 0cch, 018h, 030h, 066h, 0ceh, 096h, 03eh, 006h
    7527     db  006h, 000h, 000h, 000h, 000h
     7534    db  006h, 000h, 000h, 000h
    75287535_vbebios_copyright:                          ; 0xc7e20 LB 0x15
    75297536    db  'VirtualBox VESA BIOS', 000h
     
    75327539_vbebios_product_name:                       ; 0xc7e48 LB 0x21
    75337540    db  'Oracle VM VirtualBox VBE Adapter', 000h
    7534 _vbebios_product_revision:                   ; 0xc7e69 LB 0x23
    7535     db  'Oracle VM VirtualBox Version 4.2.0', 000h
    7536 _vbebios_info_string:                        ; 0xc7e8c LB 0x2b
     7541_vbebios_product_revision:                   ; 0xc7e69 LB 0x24
     7542    db  'Oracle VM VirtualBox Version 4.2.51', 000h
     7543_vbebios_info_string:                        ; 0xc7e8d LB 0x2b
    75377544    db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
    7538 _no_vbebios_info_string:                     ; 0xc7eb7 LB 0x29
     7545_no_vbebios_info_string:                     ; 0xc7eb8 LB 0x29
    75397546    db  'No VirtualBox VBE support available!', 00dh, 00ah, 00dh, 00ah, 000h
    75407547
    7541 section CONST progbits vstart=0x7ee0 align=1 ; size=0x0 class=DATA group=DGROUP
     7548  ; Padding 0x1 bytes at 0xc7ee1
     7549  times 1 db 0
    75427550
    7543 section CONST2 progbits vstart=0x7ee0 align=1 ; size=0x0 class=DATA group=DGROUP
     7551section CONST progbits vstart=0x7ee2 align=1 ; size=0x0 class=DATA group=DGROUP
    75447552
    7545   ; Padding 0x120 bytes at 0xc7ee0
    7546     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7547     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7548     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7549     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7550     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7551     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7552     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7553     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7554     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7555     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7556     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7557     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7558     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7559     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7560     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7561     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7562     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    7563     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0c1h
     7553section CONST2 progbits vstart=0x7ee2 align=1 ; size=0x0 class=DATA group=DGROUP
     7554
     7555  ; Padding 0x11e bytes at 0xc7ee2
     7556    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7557    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7558    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7559    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7560    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7561    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7562    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7563    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7564    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7565    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7566    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7567    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7568    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7569    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7570    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7571    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7572    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     7573    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 00ch
  • trunk/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative.md5sum

    r43316 r43630  
    1 f5caf186e9b0a0621584ca2e590e789f *VBoxVgaBios.rom
     148c82a5cfcc09e4b2e77c98d35aa6683 *VBoxVgaBios.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm

    r43316 r43630  
    794794section _DATA progbits vstart=0x0 align=1 ; size=0x30 class=DATA group=DGROUP
    795795_dskacc:                                     ; 0xf0000 LB 0x30
    796     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 059h, 027h, 0d0h, 027h, 000h, 000h, 000h, 000h
    797     db  038h, 073h, 0dah, 073h, 055h, 07eh, 0e6h, 07eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     796    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 039h, 027h, 0b0h, 027h, 000h, 000h, 000h, 000h
     797    db  0c4h, 074h, 075h, 075h, 0c4h, 081h, 055h, 082h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    798798    db  05fh, 033h, 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
    799799
    800 section CONST progbits vstart=0x30 align=1 ; size=0xc94 class=DATA group=DGROUP
     800section CONST progbits vstart=0x30 align=1 ; size=0xcaa class=DATA group=DGROUP
    801801    db   'NMI Handler called', 00ah, 000h
    802802    db   'INT18: BOOT FAILURE', 00ah, 000h
     
    895895    db   'scsi_read_sectors: device_id out of range %d', 00ah, 000h
    896896    db   'scsi_write_sectors: device_id out of range %d', 00ah, 000h
    897     db   'scsi_enumerate_attached_devices: SCSI_INQUIRY failed', 00ah, 000h
    898     db   'scsi_enumerate_attached_devices: SCSI_READ_CAPACITY failed', 00ah, 000h
     897    db   'scsi_cmd_packet', 000h
     898    db   '%s: DATA_OUT not supported yet', 00ah, 000h
     899    db   'scsi_enumerate_attached_devices', 000h
     900    db   '%s: SCSI_INQUIRY failed', 00ah, 000h
     901    db   '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
    899902    db   'Disk %d has an unsupported sector size of %u', 00ah, 000h, 000h
    900903    db   'ahci_read_sectors', 000h
     
    910913    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    911914
    912 section CONST2 progbits vstart=0xcc4 align=1 ; size=0x3fa class=DATA group=DGROUP
    913 _bios_cvs_version_string:                    ; 0xf0cc4 LB 0x12
    914     db  'VirtualBox 4.2.0', 000h, 000h
    915 _bios_prefix_string:                         ; 0xf0cd6 LB 0x8
     915section CONST2 progbits vstart=0xcda align=1 ; size=0x3fa class=DATA group=DGROUP
     916_bios_cvs_version_string:                    ; 0xf0cda LB 0x12
     917    db  'VirtualBox 4.2.51', 000h
     918_bios_prefix_string:                         ; 0xf0cec LB 0x8
    916919    db  'BIOS: ', 000h, 000h
    917 _isotag:                                     ; 0xf0cde LB 0x6
     920_isotag:                                     ; 0xf0cf4 LB 0x6
    918921    db  'CD001', 000h
    919 _eltorito:                                   ; 0xf0ce4 LB 0x18
     922_eltorito:                                   ; 0xf0cfa LB 0x18
    920923    db  'EL TORITO SPECIFICATION', 000h
    921 _drivetypes:                                 ; 0xf0cfc LB 0x28
     924_drivetypes:                                 ; 0xf0d12 LB 0x28
    922925    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    923926    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    924927    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    925 _scan_to_scanascii:                          ; 0xf0d24 LB 0x37a
     928_scan_to_scanascii:                          ; 0xf0d3a LB 0x37a
    926929    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    927930    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    980983    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    981984    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    982 _panic_msg_keyb_buffer_full:                 ; 0xf109e LB 0x20
     985_panic_msg_keyb_buffer_full:                 ; 0xf10b4 LB 0x20
    983986    db  '%s: keyboard input buffer full', 00ah, 000h
    984987
    985   ; Padding 0x542 bytes at 0xf10be
    986   times 1346 db 0
     988  ; Padding 0x52c bytes at 0xf10d4
     989  times 1324 db 0
    987990
    988 section _TEXT progbits vstart=0x1600 align=1 ; size=0x7735 class=CODE group=AUTO
     991section _TEXT progbits vstart=0x1600 align=1 ; size=0x7ab5 class=CODE group=AUTO
    989992read_byte_:                                  ; 0xf1600 LB 0xe
    990993    push bx                                   ; 53
     
    11481151    push bp                                   ; 55
    11491152    mov bp, sp                                ; 89 e5
    1150     mov bx, 00cd6h                            ; bb d6 0c
     1153    mov bx, 00cech                            ; bb ec 0c
    11511154    mov cx, ds                                ; 8c d9
    11521155    mov ax, strict word 00004h                ; b8 04 00
    11531156    call 018aeh                               ; e8 99 01
    1154     push 00cc4h                               ; 68 c4 0c
     1157    push 00cdah                               ; 68 da 0c
    11551158    push strict word 00059h                   ; 68 59 00
    11561159    push strict byte 00004h                   ; 6a 04
     
    11771180    pop bp                                    ; 5d
    11781181    retn                                      ; c3
    1179     call 06feeh                               ; e8 9f 58
     1182    call 07130h                               ; e8 e1 59
    11801183    pop bp                                    ; 5d
    11811184    retn                                      ; c3
     
    13101313    mov bx, strict word 0000ah                ; bb 0a 00
    13111314    xor cx, cx                                ; 31 c9
    1312     call 08c40h                               ; e8 e7 73
     1315    call 08fc0h                               ; e8 67 77
    13131316    mov word [bp-004h], ax                    ; 89 46 fc
    13141317    mov cx, dx                                ; 89 d1
     
    17871790    pop bx                                    ; 5b
    17881791    retn                                      ; c3
    1789 ata_cmd_data_in_:                            ; 0xf1cc0 LB 0x263
     1792ata_cmd_data_in_:                            ; 0xf1cc0 LB 0x253
    17901793    push si                                   ; 56
    17911794    push di                                   ; 57
     
    20212024    pop si                                    ; 5e
    20222025    retn                                      ; c3
    2023     dec bp                                    ; 4d
    2024     and word [di-076dfh], ax                  ; 21 85 21 89
    2025     and word [di-06edfh], cx                  ; 21 8d 21 91
    2026     and word [di-066dfh], dx                  ; 21 95 21 99
    2027     db  021h
    2028     popfw                                     ; 9d
    2029     db  021h
    2030 _ata_detect:                                 ; 0xf1f23 LB 0x621
     2026_ata_detect:                                 ; 0xf1f13 LB 0x611
    20312027    push si                                   ; 56
    20322028    push di                                   ; 57
    2033     enter 0025ah, 000h                        ; c8 5a 02 00
     2029    enter 0025ch, 000h                        ; c8 5c 02 00
    20342030    mov dx, strict word 0000eh                ; ba 0e 00
    20352031    mov ax, strict word 00040h                ; b8 40 00
    2036     call 0161ch                               ; e8 ea f6
     2032    call 0161ch                               ; e8 fa f6
     2033    mov word [bp-020h], ax                    ; 89 46 e0
     2034    mov di, 00122h                            ; bf 22 01
     2035    mov es, ax                                ; 8e c0
     2036    mov word [bp-024h], di                    ; 89 7e dc
    20372037    mov word [bp-022h], ax                    ; 89 46 de
    2038     mov bx, 00122h                            ; bb 22 01
    2039     mov es, ax                                ; 8e c0
    2040     mov si, bx                                ; 89 de
    2041     mov word [bp-026h], ax                    ; 89 46 da
    2042     mov byte [es:bx+001c0h], 000h             ; 26 c6 87 c0 01 00
    2043     db  066h, 026h, 0c7h, 087h, 0c2h, 001h, 0f0h, 001h, 0f0h, 003h
    2044     ; mov dword [es:bx+001c2h], strict dword 003f001f0h ; 66 26 c7 87 c2 01 f0 01 f0 03
    2045     mov byte [es:bx+001c1h], 00eh             ; 26 c6 87 c1 01 0e
    2046     mov byte [es:bx+001c6h], 000h             ; 26 c6 87 c6 01 00
    2047     db  066h, 026h, 0c7h, 087h, 0c8h, 001h, 070h, 001h, 070h, 003h
    2048     ; mov dword [es:bx+001c8h], strict dword 003700170h ; 66 26 c7 87 c8 01 70 01 70 03
    2049     mov byte [es:bx+001c7h], 00fh             ; 26 c6 87 c7 01 0f
     2038    mov byte [es:di+001c0h], 000h             ; 26 c6 85 c0 01 00
     2039    db  066h, 026h, 0c7h, 085h, 0c2h, 001h, 0f0h, 001h, 0f0h, 003h
     2040    ; mov dword [es:di+001c2h], strict dword 003f001f0h ; 66 26 c7 85 c2 01 f0 01 f0 03
     2041    mov byte [es:di+001c1h], 00eh             ; 26 c6 85 c1 01 0e
     2042    mov byte [es:di+001c6h], 000h             ; 26 c6 85 c6 01 00
     2043    db  066h, 026h, 0c7h, 085h, 0c8h, 001h, 070h, 001h, 070h, 003h
     2044    ; mov dword [es:di+001c8h], strict dword 003700170h ; 66 26 c7 85 c8 01 70 01 70 03
     2045    mov byte [es:di+001c7h], 00fh             ; 26 c6 85 c7 01 0f
    20502046    xor al, al                                ; 30 c0
    20512047    mov byte [bp-006h], al                    ; 88 46 fa
    2052     mov byte [bp-014h], al                    ; 88 46 ec
    2053     mov byte [bp-016h], al                    ; 88 46 ea
    2054     jmp near 024cfh                           ; e9 56 05
     2048    mov byte [bp-002h], al                    ; 88 46 fe
     2049    mov byte [bp-00ah], al                    ; 88 46 f6
     2050    jmp near 024b2h                           ; e9 48 05
    20552051    mov ax, 000a0h                            ; b8 a0 00
    2056     lea dx, [bx+006h]                         ; 8d 57 06
    2057     out DX, AL                                ; ee
    2058     lea di, [bx+002h]                         ; 8d 7f 02
     2052    lea dx, [si+006h]                         ; 8d 54 06
     2053    out DX, AL                                ; ee
     2054    lea di, [si+002h]                         ; 8d 7c 02
    20592055    mov AL, strict byte 055h                  ; b0 55
    20602056    mov dx, di                                ; 89 fa
    20612057    out DX, AL                                ; ee
    2062     lea cx, [bx+003h]                         ; 8d 4f 03
     2058    lea bx, [si+003h]                         ; 8d 5c 03
    20632059    mov AL, strict byte 0aah                  ; b0 aa
    2064     mov dx, cx                                ; 89 ca
     2060    mov dx, bx                                ; 89 da
    20652061    out DX, AL                                ; ee
    20662062    mov dx, di                                ; 89 fa
    20672063    out DX, AL                                ; ee
    20682064    mov AL, strict byte 055h                  ; b0 55
    2069     mov dx, cx                                ; 89 ca
     2065    mov dx, bx                                ; 89 da
    20702066    out DX, AL                                ; ee
    20712067    mov dx, di                                ; 89 fa
    20722068    out DX, AL                                ; ee
    20732069    mov AL, strict byte 0aah                  ; b0 aa
    2074     mov dx, cx                                ; 89 ca
     2070    mov dx, bx                                ; 89 da
    20752071    out DX, AL                                ; ee
    20762072    mov dx, di                                ; 89 fa
     
    20782074    db  02ah, 0e4h
    20792075    ; sub ah, ah                                ; 2a e4
    2080     mov word [bp-028h], ax                    ; 89 46 d8
    2081     mov dx, cx                                ; 89 ca
     2076    mov cx, ax                                ; 89 c1
     2077    mov dx, bx                                ; 89 da
    20822078    in AL, DX                                 ; ec
    20832079    db  02ah, 0e4h
    20842080    ; sub ah, ah                                ; 2a e4
    2085     cmp byte [bp-028h], 055h                  ; 80 7e d8 55
    2086     jne near 02084h                           ; 0f 85 cf 00
     2081    cmp cl, 055h                              ; 80 f9 55
     2082    jne near 02064h                           ; 0f 85 c0 00
    20872083    cmp AL, strict byte 0aah                  ; 3c aa
    2088     jne near 02084h                           ; 0f 85 c9 00
    2089     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
     2084    jne near 02064h                           ; 0f 85 ba 00
     2085    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    20902086    imul ax, ax, strict byte 00018h           ; 6b c0 18
    2091     mov es, [bp-026h]                         ; 8e 46 da
    2092     mov di, si                                ; 89 f7
    2093     add di, ax                                ; 01 c7
    2094     mov byte [es:di+01eh], 001h               ; 26 c6 45 1e 01
    2095     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
    2096     call 01be6h                               ; e8 11 fc
     2087    les bx, [bp-024h]                         ; c4 5e dc
     2088    add bx, ax                                ; 01 c3
     2089    mov byte [es:bx+01eh], 001h               ; 26 c6 47 1e 01
     2090    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     2091    call 01be6h                               ; e8 24 fc
    20972092    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2098     je short 01fe0h                           ; 74 05
     2093    je short 01fcdh                           ; 74 05
    20992094    mov ax, 000b0h                            ; b8 b0 00
    2100     jmp short 01fe3h                          ; eb 03
     2095    jmp short 01fd0h                          ; eb 03
    21012096    mov ax, 000a0h                            ; b8 a0 00
    2102     lea dx, [bx+006h]                         ; 8d 57 06
    2103     out DX, AL                                ; ee
    2104     lea dx, [bx+002h]                         ; 8d 57 02
     2097    lea dx, [si+006h]                         ; 8d 54 06
     2098    out DX, AL                                ; ee
     2099    lea dx, [si+002h]                         ; 8d 54 02
     2100    in AL, DX                                 ; ec
     2101    db  02ah, 0e4h
     2102    ; sub ah, ah                                ; 2a e4
     2103    mov bx, ax                                ; 89 c3
     2104    lea dx, [si+003h]                         ; 8d 54 03
     2105    in AL, DX                                 ; ec
     2106    db  02ah, 0e4h
     2107    ; sub ah, ah                                ; 2a e4
     2108    cmp bl, 001h                              ; 80 fb 01
     2109    jne near 02064h                           ; 0f 85 7b 00
     2110    cmp al, bl                                ; 38 d8
     2111    jne near 02064h                           ; 0f 85 75 00
     2112    lea dx, [si+004h]                         ; 8d 54 04
     2113    in AL, DX                                 ; ec
     2114    db  02ah, 0e4h
     2115    ; sub ah, ah                                ; 2a e4
     2116    mov bx, ax                                ; 89 c3
     2117    mov bh, al                                ; 88 c7
     2118    lea dx, [si+005h]                         ; 8d 54 05
    21052119    in AL, DX                                 ; ec
    21062120    db  02ah, 0e4h
    21072121    ; sub ah, ah                                ; 2a e4
    21082122    mov cx, ax                                ; 89 c1
    2109     lea dx, [bx+003h]                         ; 8d 57 03
     2123    mov byte [bp-008h], al                    ; 88 46 f8
     2124    lea dx, [si+007h]                         ; 8d 54 07
    21102125    in AL, DX                                 ; ec
    21112126    db  02ah, 0e4h
    21122127    ; sub ah, ah                                ; 2a e4
    2113     cmp cl, 001h                              ; 80 f9 01
    2114     jne near 02084h                           ; 0f 85 88 00
    2115     cmp al, cl                                ; 38 c8
    2116     jne near 02084h                           ; 0f 85 82 00
    2117     lea dx, [bx+004h]                         ; 8d 57 04
    2118     in AL, DX                                 ; ec
    2119     db  02ah, 0e4h
    2120     ; sub ah, ah                                ; 2a e4
    2121     mov word [bp-028h], ax                    ; 89 46 d8
    2122     mov al, byte [bp-028h]                    ; 8a 46 d8
    2123     mov byte [bp-00ch], al                    ; 88 46 f4
    2124     lea dx, [bx+005h]                         ; 8d 57 05
    2125     in AL, DX                                 ; ec
    2126     db  02ah, 0e4h
    2127     ; sub ah, ah                                ; 2a e4
    2128     mov cx, ax                                ; 89 c1
    2129     mov byte [bp-00ah], al                    ; 88 46 f6
    2130     lea dx, [bx+007h]                         ; 8d 57 07
    2131     in AL, DX                                 ; ec
    2132     db  02ah, 0e4h
    2133     ; sub ah, ah                                ; 2a e4
    2134     cmp byte [bp-028h], 014h                  ; 80 7e d8 14
    2135     jne short 02040h                          ; 75 18
     2128    cmp bl, 014h                              ; 80 fb 14
     2129    jne short 02027h                          ; 75 18
    21362130    cmp cl, 0ebh                              ; 80 f9 eb
    2137     jne short 02040h                          ; 75 13
    2138     movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
     2131    jne short 02027h                          ; 75 13
     2132    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     2133    imul ax, ax, strict byte 00018h           ; 6b c0 18
     2134    les bx, [bp-024h]                         ; c4 5e dc
     2135    add bx, ax                                ; 01 c3
     2136    mov byte [es:bx+01eh], 003h               ; 26 c6 47 1e 03
     2137    jmp short 02064h                          ; eb 3d
     2138    test bh, bh                               ; 84 ff
     2139    jne short 02049h                          ; 75 1e
     2140    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
     2141    jne short 02049h                          ; 75 18
     2142    test al, al                               ; 84 c0
     2143    je short 02049h                           ; 74 14
     2144    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    21392145    imul bx, bx, strict byte 00018h           ; 6b db 18
    2140     mov es, [bp-026h]                         ; 8e 46 da
    2141     add bx, si                                ; 01 f3
    2142     mov byte [es:bx+01eh], 003h               ; 26 c6 47 1e 03
    2143     jmp short 02084h                          ; eb 44
    2144     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
    2145     jne short 02065h                          ; 75 1f
    2146     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
    2147     jne short 02065h                          ; 75 19
    2148     test al, al                               ; 84 c0
    2149     je short 02065h                           ; 74 15
    2150     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
     2146    mov es, [bp-022h]                         ; 8e 46 de
     2147    add bx, word [bp-024h]                    ; 03 5e dc
     2148    mov byte [es:bx+01eh], 002h               ; 26 c6 47 1e 02
     2149    jmp short 02064h                          ; eb 1b
     2150    cmp bh, 0ffh                              ; 80 ff ff
     2151    jne short 02064h                          ; 75 16
     2152    cmp bh, byte [bp-008h]                    ; 3a 7e f8
     2153    jne short 02064h                          ; 75 11
     2154    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    21512155    imul ax, ax, strict byte 00018h           ; 6b c0 18
    2152     mov es, [bp-026h]                         ; 8e 46 da
    2153     mov bx, si                                ; 89 f3
    2154     add bx, ax                                ; 01 c3
    2155     mov byte [es:bx+01eh], 002h               ; 26 c6 47 1e 02
    2156     jmp short 02084h                          ; eb 1f
    2157     cmp byte [bp-00ch], 0ffh                  ; 80 7e f4 ff
    2158     jne short 02084h                          ; 75 19
    2159     cmp byte [bp-00ah], 0ffh                  ; 80 7e f6 ff
    2160     jne short 02084h                          ; 75 13
    2161     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
    2162     imul ax, ax, strict byte 00018h           ; 6b c0 18
    2163     mov es, [bp-026h]                         ; 8e 46 da
    2164     mov bx, si                                ; 89 f3
     2156    les bx, [bp-024h]                         ; c4 5e dc
    21652157    add bx, ax                                ; 01 c3
    21662158    mov byte [es:bx+01eh], 000h               ; 26 c6 47 1e 00
    2167     mov dx, word [bp-02ch]                    ; 8b 56 d4
     2159    mov dx, word [bp-028h]                    ; 8b 56 d8
    21682160    add dx, strict byte 00006h                ; 83 c2 06
    21692161    mov AL, strict byte 008h                  ; b0 08
    21702162    out DX, AL                                ; ee
    2171     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
    2172     imul ax, ax, strict byte 00018h           ; 6b c0 18
    2173     mov es, [bp-026h]                         ; 8e 46 da
    2174     mov bx, si                                ; 89 f3
    2175     add bx, ax                                ; 01 c3
    2176     mov al, byte [es:bx+01eh]                 ; 26 8a 47 1e
    2177     mov byte [bp-002h], al                    ; 88 46 fe
     2163    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     2164    imul si, si, strict byte 00018h           ; 6b f6 18
     2165    mov es, [bp-022h]                         ; 8e 46 de
     2166    add si, word [bp-024h]                    ; 03 76 dc
     2167    mov al, byte [es:si+01eh]                 ; 26 8a 44 1e
     2168    mov byte [bp-00ch], al                    ; 88 46 f4
    21782169    cmp AL, strict byte 002h                  ; 3c 02
    2179     jne near 022a3h                           ; 0f 85 fb 01
    2180     mov byte [es:bx+01fh], 0ffh               ; 26 c6 47 1f ff
    2181     mov byte [es:bx+022h], 000h               ; 26 c6 47 22 00
    2182     lea dx, [bp-0025ah]                       ; 8d 96 a6 fd
    2183     mov word [es:si+004h], dx                 ; 26 89 54 04
    2184     mov [es:si+006h], ss                      ; 26 8c 54 06
    2185     mov al, byte [bp-016h]                    ; 8a 46 ea
    2186     mov byte [es:si+008h], al                 ; 26 88 44 08
     2170    jne near 0228ah                           ; 0f 85 03 02
     2171    mov byte [es:si+01fh], 0ffh               ; 26 c6 44 1f ff
     2172    mov byte [es:si+022h], 000h               ; 26 c6 44 22 00
     2173    lea dx, [bp-0025ch]                       ; 8d 96 a4 fd
     2174    mov bx, word [bp-024h]                    ; 8b 5e dc
     2175    mov word [es:bx+004h], dx                 ; 26 89 57 04
     2176    mov [es:bx+006h], ss                      ; 26 8c 57 06
     2177    mov al, byte [bp-00ah]                    ; 8a 46 f6
     2178    mov byte [es:bx+008h], al                 ; 26 88 47 08
    21872179    mov cx, strict word 00001h                ; b9 01 00
    21882180    mov bx, 000ech                            ; bb ec 00
    2189     mov ax, si                                ; 89 f0
     2181    mov ax, word [bp-024h]                    ; 8b 46 dc
    21902182    mov dx, es                                ; 8c c2
    2191     call 01cc0h                               ; e8 ee fb
     2183    call 01cc0h                               ; e8 0b fc
    21922184    test ax, ax                               ; 85 c0
    2193     je short 020e1h                           ; 74 0b
     2185    je short 020c4h                           ; 74 0b
    21942186    push 00084h                               ; 68 84 00
    21952187    push strict byte 00007h                   ; 6a 07
    2196     call 018e9h                               ; e8 0b f8
     2188    call 018e9h                               ; e8 28 f8
    21972189    add sp, strict byte 00004h                ; 83 c4 04
    2198     test byte [bp-0025ah], 080h               ; f6 86 a6 fd 80
     2190    test byte [bp-0025ch], 080h               ; f6 86 a4 fd 80
    21992191    db  00fh, 095h, 0c0h
    22002192    ; setne al                                  ; 0f 95 c0
    22012193    xor ah, ah                                ; 30 e4
    2202     mov byte [bp-008h], al                    ; 88 46 f8
    2203     cmp byte [bp-001fah], 000h                ; 80 be 06 fe 00
     2194    mov byte [bp-010h], al                    ; 88 46 f0
     2195    cmp byte [bp-001fch], 000h                ; 80 be 04 fe 00
    22042196    db  00fh, 095h, 0c0h
    22052197    ; setne al                                  ; 0f 95 c0
    22062198    xor ah, ah                                ; 30 e4
    2207     mov byte [bp-00eh], al                    ; 88 46 f2
    2208     mov word [bp-024h], 00200h                ; c7 46 dc 00 02
    2209     mov ax, word [bp-00258h]                  ; 8b 86 a8 fd
    2210     mov word [bp-01eh], ax                    ; 89 46 e2
    2211     mov ax, word [bp-00254h]                  ; 8b 86 ac fd
     2199    mov byte [bp-012h], al                    ; 88 46 ee
     2200    mov word [bp-01eh], 00200h                ; c7 46 e2 00 02
     2201    mov ax, word [bp-0025ah]                  ; 8b 86 a6 fd
     2202    mov word [bp-016h], ax                    ; 89 46 ea
     2203    mov ax, word [bp-00256h]                  ; 8b 86 aa fd
     2204    mov word [bp-018h], ax                    ; 89 46 e8
     2205    mov ax, word [bp-00250h]                  ; 8b 86 b0 fd
     2206    mov word [bp-01ah], ax                    ; 89 46 e6
     2207    mov ax, word [bp-001e4h]                  ; 8b 86 1c fe
    22122208    mov word [bp-01ch], ax                    ; 89 46 e4
    2213     mov ax, word [bp-0024eh]                  ; 8b 86 b2 fd
    2214     mov word [bp-018h], ax                    ; 89 46 e8
    2215     mov ax, word [bp-001e2h]                  ; 8b 86 1e fe
    2216     mov word [bp-020h], ax                    ; 89 46 e0
    2217     mov ax, word [bp-001e0h]                  ; 8b 86 20 fe
    2218     mov word [bp-02ah], ax                    ; 89 46 d6
    2219     cmp ax, 00fffh                            ; 3d ff 0f
    2220     jne short 0213ch                          ; 75 14
    2221     cmp word [bp-020h], strict byte 0ffffh    ; 83 7e e0 ff
    2222     jne short 0213ch                          ; 75 0e
    2223     mov ax, word [bp-00192h]                  ; 8b 86 6e fe
    2224     mov word [bp-020h], ax                    ; 89 46 e0
    2225     mov ax, word [bp-00190h]                  ; 8b 86 70 fe
    2226     mov word [bp-02ah], ax                    ; 89 46 d6
    2227     mov al, byte [bp-016h]                    ; 8a 46 ea
    2228     cmp AL, strict byte 007h                  ; 3c 07
    2229     jnbe short 021a1h                         ; 77 5e
    2230     movzx bx, al                              ; 0f b6 d8
    2231     add bx, bx                                ; 01 db
    2232     jmp word [cs:bx+01f13h]                   ; 2e ff a7 13 1f
     2209    mov si, word [bp-001e2h]                  ; 8b b6 1e fe
     2210    cmp si, 00fffh                            ; 81 fe ff 0f
     2211    jne short 02119h                          ; 75 10
     2212    cmp ax, strict word 0ffffh                ; 3d ff ff
     2213    jne short 02119h                          ; 75 0b
     2214    mov ax, word [bp-00194h]                  ; 8b 86 6c fe
     2215    mov word [bp-01ch], ax                    ; 89 46 e4
     2216    mov si, word [bp-00192h]                  ; 8b b6 6e fe
     2217    mov al, byte [bp-00ah]                    ; 8a 46 f6
     2218    cmp AL, strict byte 001h                  ; 3c 01
     2219    jc short 0212ch                           ; 72 0c
     2220    jbe short 02134h                          ; 76 12
     2221    cmp AL, strict byte 003h                  ; 3c 03
     2222    je short 0213ch                           ; 74 16
     2223    cmp AL, strict byte 002h                  ; 3c 02
     2224    je short 02138h                           ; 74 0e
     2225    jmp short 02179h                          ; eb 4d
     2226    test al, al                               ; 84 c0
     2227    jne short 02179h                          ; 75 49
    22332228    mov BL, strict byte 01eh                  ; b3 1e
     2229    jmp short 0213eh                          ; eb 0a
     2230    mov BL, strict byte 026h                  ; b3 26
     2231    jmp short 0213eh                          ; eb 06
     2232    mov BL, strict byte 067h                  ; b3 67
     2233    jmp short 0213eh                          ; eb 02
     2234    mov BL, strict byte 070h                  ; b3 70
    22342235    mov al, bl                                ; 88 d8
    22352236    db  0feh, 0c0h
    22362237    ; inc al                                    ; fe c0
    22372238    xor ah, ah                                ; 30 e4
    2238     call 0165ch                               ; e8 04 f5
     2239    call 0165ch                               ; e8 15 f5
    22392240    xor ah, ah                                ; 30 e4
    2240     mov di, ax                                ; 89 c7
    2241     sal di, 008h                              ; c1 e7 08
     2241    mov dx, ax                                ; 89 c2
     2242    sal dx, 008h                              ; c1 e2 08
    22422243    movzx ax, bl                              ; 0f b6 c3
    2243     call 0165ch                               ; e8 f7 f4
     2244    call 0165ch                               ; e8 08 f5
    22442245    xor ah, ah                                ; 30 e4
    2245     add di, ax                                ; 01 c7
     2246    add ax, dx                                ; 01 d0
     2247    mov word [bp-030h], ax                    ; 89 46 d0
    22462248    mov al, bl                                ; 88 d8
    22472249    add AL, strict byte 002h                  ; 04 02
    22482250    xor ah, ah                                ; 30 e4
    2249     call 0165ch                               ; e8 ea f4
    2250     movzx dx, al                              ; 0f b6 d0
     2251    call 0165ch                               ; e8 f8 f4
     2252    xor ah, ah                                ; 30 e4
     2253    mov word [bp-032h], ax                    ; 89 46 ce
    22512254    mov al, bl                                ; 88 d8
    22522255    add AL, strict byte 007h                  ; 04 07
    22532256    xor ah, ah                                ; 30 e4
    2254     call 0165ch                               ; e8 de f4
     2257    call 0165ch                               ; e8 ea f4
    22552258    xor ah, ah                                ; 30 e4
    2256     mov word [bp-01ah], ax                    ; 89 46 e6
    2257     jmp short 021a8h                          ; eb 23
    2258     mov BL, strict byte 026h                  ; b3 26
    2259     jmp short 0214fh                          ; eb c6
    2260     mov BL, strict byte 067h                  ; b3 67
    2261     jmp short 0214fh                          ; eb c2
    2262     mov BL, strict byte 070h                  ; b3 70
    2263     jmp short 0214fh                          ; eb be
    2264     mov BL, strict byte 040h                  ; b3 40
    2265     jmp short 0214fh                          ; eb ba
    2266     mov BL, strict byte 048h                  ; b3 48
    2267     jmp short 0214fh                          ; eb b6
    2268     mov BL, strict byte 050h                  ; b3 50
    2269     jmp short 0214fh                          ; eb b2
    2270     mov BL, strict byte 058h                  ; b3 58
    2271     jmp short 0214fh                          ; eb ae
    2272     xor di, di                                ; 31 ff
    2273     xor dx, dx                                ; 31 d2
    2274     mov word [bp-01ah], di                    ; 89 7e e6
    2275     mov bx, 00cd6h                            ; bb d6 0c
     2259    mov word [bp-02eh], ax                    ; 89 46 d2
     2260    jmp short 02186h                          ; eb 0d
     2261    mov bx, word [bp-01ch]                    ; 8b 5e e4
     2262    mov cx, si                                ; 89 f1
     2263    mov dx, ss                                ; 8c d2
     2264    lea ax, [bp-032h]                         ; 8d 46 ce
     2265    call 0533dh                               ; e8 b7 31
     2266    mov bx, 00cech                            ; bb ec 0c
    22762267    mov cx, ds                                ; 8c d9
    22772268    mov ax, strict word 00004h                ; b8 04 00
    2278     call 018aeh                               ; e8 fb f6
     2269    call 018aeh                               ; e8 1d f7
     2270    mov ax, word [bp-02eh]                    ; 8b 46 d2
     2271    push ax                                   ; 50
     2272    mov ax, word [bp-032h]                    ; 8b 46 ce
     2273    push ax                                   ; 50
     2274    mov ax, word [bp-030h]                    ; 8b 46 d0
     2275    push ax                                   ; 50
    22792276    push word [bp-01ah]                       ; ff 76 e6
    2280     push dx                                   ; 52
    2281     push di                                   ; 57
    22822277    push word [bp-018h]                       ; ff 76 e8
    2283     push dword [bp-01eh]                      ; 66 ff 76 e2
     2278    push word [bp-016h]                       ; ff 76 ea
    22842279    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    22852280    push ax                                   ; 50
    2286     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     2281    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    22872282    push ax                                   ; 50
    22882283    push 000adh                               ; 68 ad 00
    22892284    push strict byte 00004h                   ; 6a 04
    2290     call 018e9h                               ; e8 18 f7
     2285    call 018e9h                               ; e8 31 f7
    22912286    add sp, strict byte 00014h                ; 83 c4 14
    2292     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
     2287    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    22932288    imul ax, ax, strict byte 00018h           ; 6b c0 18
    2294     mov es, [bp-026h]                         ; 8e 46 da
    2295     mov bx, si                                ; 89 f3
    2296     add bx, ax                                ; 01 c3
    2297     mov byte [es:bx+01fh], 0ffh               ; 26 c6 47 1f ff
    2298     mov al, byte [bp-008h]                    ; 8a 46 f8
    2299     mov byte [es:bx+020h], al                 ; 26 88 47 20
    2300     mov al, byte [bp-00eh]                    ; 8a 46 f2
    2301     mov byte [es:bx+022h], al                 ; 26 88 47 22
    2302     mov ax, word [bp-024h]                    ; 8b 46 dc
    2303     mov word [es:bx+024h], ax                 ; 26 89 47 24
     2289    les di, [bp-024h]                         ; c4 7e dc
     2290    add di, ax                                ; 01 c7
     2291    mov byte [es:di+01fh], 0ffh               ; 26 c6 45 1f ff
     2292    mov al, byte [bp-010h]                    ; 8a 46 f0
     2293    mov byte [es:di+020h], al                 ; 26 88 45 20
     2294    mov al, byte [bp-012h]                    ; 8a 46 ee
     2295    mov byte [es:di+022h], al                 ; 26 88 45 22
     2296    mov ax, word [bp-01eh]                    ; 8b 46 e2
     2297    mov word [es:di+024h], ax                 ; 26 89 45 24
     2298    mov ax, word [bp-018h]                    ; 8b 46 e8
     2299    mov word [es:di+02ch], ax                 ; 26 89 45 2c
     2300    mov ax, word [bp-016h]                    ; 8b 46 ea
     2301    mov word [es:di+02eh], ax                 ; 26 89 45 2e
     2302    mov ax, word [bp-01ah]                    ; 8b 46 e6
     2303    mov word [es:di+030h], ax                 ; 26 89 45 30
    23042304    mov ax, word [bp-01ch]                    ; 8b 46 e4
    2305     mov word [es:bx+02ch], ax                 ; 26 89 47 2c
    2306     mov ax, word [bp-01eh]                    ; 8b 46 e2
    2307     mov word [es:bx+02eh], ax                 ; 26 89 47 2e
    2308     mov ax, word [bp-018h]                    ; 8b 46 e8
    2309     mov word [es:bx+030h], ax                 ; 26 89 47 30
    2310     mov ax, word [bp-020h]                    ; 8b 46 e0
    2311     mov word [es:bx+032h], ax                 ; 26 89 47 32
    2312     mov ax, word [bp-02ah]                    ; 8b 46 d6
    2313     mov word [es:bx+034h], ax                 ; 26 89 47 34
    2314     mov word [es:bx+026h], dx                 ; 26 89 57 26
    2315     mov word [es:bx+028h], di                 ; 26 89 7f 28
    2316     mov ax, word [bp-01ah]                    ; 8b 46 e6
    2317     mov word [es:bx+02ah], ax                 ; 26 89 47 2a
    2318     mov al, byte [bp-016h]                    ; 8a 46 ea
     2305    mov word [es:di+032h], ax                 ; 26 89 45 32
     2306    mov word [es:di+034h], si                 ; 26 89 75 34
     2307    lea di, [di+026h]                         ; 8d 7d 26
     2308    push DS                                   ; 1e
     2309    push SS                                   ; 16
     2310    pop DS                                    ; 1f
     2311    lea si, [bp-032h]                         ; 8d 76 ce
     2312    movsw                                     ; a5
     2313    movsw                                     ; a5
     2314    movsw                                     ; a5
     2315    pop DS                                    ; 1f
     2316    mov al, byte [bp-00ah]                    ; 8a 46 f6
    23192317    cmp AL, strict byte 002h                  ; 3c 02
    2320     jnc short 0228fh                          ; 73 5a
     2318    jnc short 02275h                          ; 73 60
    23212319    test al, al                               ; 84 c0
    2322     jne short 0223eh                          ; 75 05
    2323     mov bx, strict word 0003dh                ; bb 3d 00
    2324     jmp short 02241h                          ; eb 03
    2325     mov bx, strict word 0004dh                ; bb 4d 00
    2326     mov cx, word [bp-022h]                    ; 8b 4e de
    2327     mov es, cx                                ; 8e c1
    2328     mov word [es:bx], di                      ; 26 89 3f
    2329     mov byte [es:bx+002h], dl                 ; 26 88 57 02
    2330     mov byte [es:bx+003h], 0a0h               ; 26 c6 47 03 a0
     2320    jne short 0221eh                          ; 75 05
     2321    mov di, strict word 0003dh                ; bf 3d 00
     2322    jmp short 02221h                          ; eb 03
     2323    mov di, strict word 0004dh                ; bf 4d 00
     2324    mov dx, word [bp-020h]                    ; 8b 56 e0
     2325    mov ax, word [bp-030h]                    ; 8b 46 d0
     2326    mov es, dx                                ; 8e c2
     2327    mov word [es:di], ax                      ; 26 89 05
     2328    mov al, byte [bp-032h]                    ; 8a 46 ce
     2329    mov byte [es:di+002h], al                 ; 26 88 45 02
     2330    mov byte [es:di+003h], 0a0h               ; 26 c6 45 03 a0
     2331    mov al, byte [bp-01ah]                    ; 8a 46 e6
     2332    mov byte [es:di+004h], al                 ; 26 88 45 04
     2333    mov ax, word [bp-016h]                    ; 8b 46 ea
     2334    mov word [es:di+009h], ax                 ; 26 89 45 09
    23312335    mov al, byte [bp-018h]                    ; 8a 46 e8
    2332     mov byte [es:bx+004h], al                 ; 26 88 47 04
    2333     mov ax, word [bp-01eh]                    ; 8b 46 e2
    2334     mov word [es:bx+009h], ax                 ; 26 89 47 09
    2335     mov al, byte [bp-01ch]                    ; 8a 46 e4
    2336     mov byte [es:bx+00bh], al                 ; 26 88 47 0b
    2337     mov al, byte [bp-018h]                    ; 8a 46 e8
    2338     mov byte [es:bx+00eh], al                 ; 26 88 47 0e
     2336    mov byte [es:di+00bh], al                 ; 26 88 45 0b
     2337    mov al, byte [bp-01ah]                    ; 8a 46 e6
     2338    mov byte [es:di+00eh], al                 ; 26 88 45 0e
    23392339    xor al, al                                ; 30 c0
    23402340    xor ah, ah                                ; 30 e4
    2341     jmp short 02279h                          ; eb 05
     2341    jmp short 0225fh                          ; eb 05
    23422342    cmp ah, 00fh                              ; 80 fc 0f
    2343     jnc short 02287h                          ; 73 0e
    2344     movzx di, ah                              ; 0f b6 fc
    2345     mov es, cx                                ; 8e c1
    2346     add di, bx                                ; 01 df
    2347     add al, byte [es:di]                      ; 26 02 05
     2343    jnc short 0226dh                          ; 73 0e
     2344    movzx bx, ah                              ; 0f b6 dc
     2345    mov es, dx                                ; 8e c2
     2346    add bx, di                                ; 01 fb
     2347    add al, byte [es:bx]                      ; 26 02 07
    23482348    db  0feh, 0c4h
    23492349    ; inc ah                                    ; fe c4
    2350     jmp short 02274h                          ; eb ed
     2350    jmp short 0225ah                          ; eb ed
    23512351    neg al                                    ; f6 d8
    2352     mov es, cx                                ; 8e c1
    2353     mov byte [es:bx+00fh], al                 ; 26 88 47 0f
    2354     movzx bx, byte [bp-014h]                  ; 0f b6 5e ec
    2355     mov es, [bp-026h]                         ; 8e 46 da
    2356     add bx, si                                ; 01 f3
    2357     mov al, byte [bp-016h]                    ; 8a 46 ea
     2352    mov es, dx                                ; 8e c2
     2353    mov byte [es:di+00fh], al                 ; 26 88 45 0f
     2354    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     2355    mov es, [bp-022h]                         ; 8e 46 de
     2356    add bx, word [bp-024h]                    ; 03 5e dc
     2357    mov al, byte [bp-00ah]                    ; 8a 46 f6
    23582358    mov byte [es:bx+0019fh], al               ; 26 88 87 9f 01
    2359     inc byte [bp-014h]                        ; fe 46 ec
    2360     cmp byte [bp-002h], 003h                  ; 80 7e fe 03
    2361     jne near 0233eh                           ; 0f 85 93 00
    2362     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
     2359    inc byte [bp-002h]                        ; fe 46 fe
     2360    cmp byte [bp-00ch], 003h                  ; 80 7e f4 03
     2361    jne near 0232ah                           ; 0f 85 98 00
     2362    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    23632363    imul ax, ax, strict byte 00018h           ; 6b c0 18
    2364     mov es, [bp-026h]                         ; 8e 46 da
    2365     mov bx, si                                ; 89 f3
     2364    les bx, [bp-024h]                         ; c4 5e dc
    23662365    add bx, ax                                ; 01 c3
    23672366    mov byte [es:bx+01fh], 005h               ; 26 c6 47 1f 05
    23682367    mov byte [es:bx+022h], 000h               ; 26 c6 47 22 00
    2369     lea dx, [bp-0025ah]                       ; 8d 96 a6 fd
    2370     mov word [es:si+004h], dx                 ; 26 89 54 04
    2371     mov [es:si+006h], ss                      ; 26 8c 54 06
    2372     mov al, byte [bp-016h]                    ; 8a 46 ea
    2373     mov byte [es:si+008h], al                 ; 26 88 44 08
     2368    lea dx, [bp-0025ch]                       ; 8d 96 a4 fd
     2369    mov bx, word [bp-024h]                    ; 8b 5e dc
     2370    mov word [es:bx+004h], dx                 ; 26 89 57 04
     2371    mov [es:bx+006h], ss                      ; 26 8c 57 06
     2372    mov al, byte [bp-00ah]                    ; 8a 46 f6
     2373    mov byte [es:bx+008h], al                 ; 26 88 47 08
    23742374    mov cx, strict word 00001h                ; b9 01 00
    23752375    mov bx, 000a1h                            ; bb a1 00
    2376     mov ax, si                                ; 89 f0
     2376    mov ax, word [bp-024h]                    ; 8b 46 dc
    23772377    mov dx, es                                ; 8c c2
    2378     call 01cc0h                               ; e8 dd f9
     2378    call 01cc0h                               ; e8 f4 f9
    23792379    test ax, ax                               ; 85 c0
    2380     je short 022f2h                           ; 74 0b
     2380    je short 022dbh                           ; 74 0b
    23812381    push 000d4h                               ; 68 d4 00
    23822382    push strict byte 00007h                   ; 6a 07
    2383     call 018e9h                               ; e8 fa f5
     2383    call 018e9h                               ; e8 11 f6
    23842384    add sp, strict byte 00004h                ; 83 c4 04
    2385     mov dl, byte [bp-00259h]                  ; 8a 96 a7 fd
    2386     and dl, 01fh                              ; 80 e2 1f
    2387     test byte [bp-0025ah], 080h               ; f6 86 a6 fd 80
     2385    mov cl, byte [bp-0025bh]                  ; 8a 8e a5 fd
     2386    and cl, 01fh                              ; 80 e1 1f
     2387    test byte [bp-0025ch], 080h               ; f6 86 a4 fd 80
    23882388    db  00fh, 095h, 0c0h
    23892389    ; setne al                                  ; 0f 95 c0
    23902390    xor ah, ah                                ; 30 e4
    2391     mov cx, ax                                ; 89 c1
    2392     cmp byte [bp-001fah], 000h                ; 80 be 06 fe 00
     2391    mov dx, ax                                ; 89 c2
     2392    cmp byte [bp-001fch], 000h                ; 80 be 04 fe 00
    23932393    db  00fh, 095h, 0c0h
    23942394    ; setne al                                  ; 0f 95 c0
    23952395    xor ah, ah                                ; 30 e4
    2396     movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
    2397     imul bx, bx, strict byte 00018h           ; 6b db 18
    2398     mov es, [bp-026h]                         ; 8e 46 da
    2399     add bx, si                                ; 01 f3
    2400     mov byte [es:bx+01fh], dl                 ; 26 88 57 1f
    2401     mov byte [es:bx+020h], cl                 ; 26 88 4f 20
    2402     mov byte [es:bx+022h], al                 ; 26 88 47 22
    2403     mov word [es:bx+024h], 00800h             ; 26 c7 47 24 00 08
     2396    mov bx, ax                                ; 89 c3
     2397    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     2398    imul ax, ax, strict byte 00018h           ; 6b c0 18
     2399    les si, [bp-024h]                         ; c4 76 dc
     2400    add si, ax                                ; 01 c6
     2401    mov byte [es:si+01fh], cl                 ; 26 88 4c 1f
     2402    mov byte [es:si+020h], dl                 ; 26 88 54 20
     2403    mov byte [es:si+022h], bl                 ; 26 88 5c 22
     2404    mov word [es:si+024h], 00800h             ; 26 c7 44 24 00 08
    24042405    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    2405     add bx, si                                ; 01 f3
    2406     mov al, byte [bp-016h]                    ; 8a 46 ea
     2406    add bx, word [bp-024h]                    ; 03 5e dc
     2407    mov al, byte [bp-00ah]                    ; 8a 46 f6
    24072408    mov byte [es:bx+001b0h], al               ; 26 88 87 b0 01
    24082409    inc byte [bp-006h]                        ; fe 46 fa
    2409     mov al, byte [bp-002h]                    ; 8a 46 fe
     2410    mov al, byte [bp-00ch]                    ; 8a 46 f4
    24102411    cmp AL, strict byte 003h                  ; 3c 03
    2411     je short 02372h                           ; 74 2d
     2412    je short 0235dh                           ; 74 2c
    24122413    cmp AL, strict byte 002h                  ; 3c 02
    2413     jne near 023d7h                           ; 0f 85 8c 00
    2414     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
    2415     imul ax, ax, strict byte 00018h           ; 6b c0 18
    2416     mov es, [bp-026h]                         ; 8e 46 da
    2417     mov bx, si                                ; 89 f3
    2418     add bx, ax                                ; 01 c3
     2414    jne near 023c0h                           ; 0f 85 89 00
     2415    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     2416    imul bx, bx, strict byte 00018h           ; 6b db 18
     2417    mov es, [bp-022h]                         ; 8e 46 de
     2418    add bx, word [bp-024h]                    ; 03 5e dc
    24192419    mov ax, word [es:bx+032h]                 ; 26 8b 47 32
    2420     mov word [bp-030h], ax                    ; 89 46 d0
     2420    mov word [bp-02ch], ax                    ; 89 46 d4
    24212421    mov ax, word [es:bx+034h]                 ; 26 8b 47 34
    2422     mov word [bp-02eh], ax                    ; 89 46 d2
     2422    mov word [bp-02ah], ax                    ; 89 46 d6
    24232423    mov cx, strict word 0000bh                ; b9 0b 00
    2424     shr word [bp-02eh], 1                     ; d1 6e d2
    2425     rcr word [bp-030h], 1                     ; d1 5e d0
    2426     loop 0236ah                               ; e2 f8
    2427     movzx dx, byte [bp-001b9h]                ; 0f b6 96 47 fe
     2424    shr word [bp-02ah], 1                     ; d1 6e d6
     2425    rcr word [bp-02ch], 1                     ; d1 5e d4
     2426    loop 02355h                               ; e2 f8
     2427    movzx dx, byte [bp-001bbh]                ; 0f b6 96 45 fe
    24282428    sal dx, 008h                              ; c1 e2 08
    2429     movzx ax, byte [bp-001bah]                ; 0f b6 86 46 fe
     2429    movzx ax, byte [bp-001bch]                ; 0f b6 86 44 fe
    24302430    or dx, ax                                 ; 09 c2
    2431     mov byte [bp-010h], 00fh                  ; c6 46 f0 0f
    2432     jmp short 02390h                          ; eb 09
    2433     dec byte [bp-010h]                        ; fe 4e f0
    2434     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
    2435     jbe short 0239dh                          ; 76 0d
    2436     movzx cx, byte [bp-010h]                  ; 0f b6 4e f0
     2431    mov byte [bp-00eh], 00fh                  ; c6 46 f2 0f
     2432    jmp short 0237bh                          ; eb 09
     2433    dec byte [bp-00eh]                        ; fe 4e f2
     2434    cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
     2435    jbe short 02388h                          ; 76 0d
     2436    movzx cx, byte [bp-00eh]                  ; 0f b6 4e f2
    24372437    mov ax, strict word 00001h                ; b8 01 00
    24382438    sal ax, CL                                ; d3 e0
    24392439    test dx, ax                               ; 85 c2
    2440     je short 02387h                           ; 74 ea
    2441     xor bx, bx                                ; 31 db
    2442     jmp short 023a6h                          ; eb 05
    2443     cmp bx, strict byte 00014h                ; 83 fb 14
    2444     jnl short 023bbh                          ; 7d 15
    2445     mov di, bx                                ; 89 df
    2446     add di, bx                                ; 01 df
    2447     mov al, byte [bp+di-00223h]               ; 8a 83 dd fd
    2448     mov byte [bp+di-05ah], al                 ; 88 43 a6
    2449     mov al, byte [bp+di-00224h]               ; 8a 83 dc fd
    2450     mov byte [bp+di-059h], al                 ; 88 43 a7
    2451     inc bx                                    ; 43
    2452     jmp short 023a1h                          ; eb e6
    2453     mov byte [bp-032h], 000h                  ; c6 46 ce 00
    2454     mov bx, strict word 00027h                ; bb 27 00
    2455     jmp short 023c9h                          ; eb 05
    2456     dec bx                                    ; 4b
    2457     test bx, bx                               ; 85 db
    2458     jle short 023d7h                          ; 7e 0e
    2459     mov di, bx                                ; 89 df
    2460     cmp byte [bp+di-05ah], 020h               ; 80 7b a6 20
    2461     jne short 023d7h                          ; 75 06
    2462     mov byte [bp+di-05ah], 000h               ; c6 43 a6 00
    2463     jmp short 023c4h                          ; eb ed
    2464     mov al, byte [bp-002h]                    ; 8a 46 fe
     2440    je short 02372h                           ; 74 ea
     2441    xor di, di                                ; 31 ff
     2442    jmp short 02391h                          ; eb 05
     2443    cmp di, strict byte 00014h                ; 83 ff 14
     2444    jnl short 023a6h                          ; 7d 15
     2445    mov si, di                                ; 89 fe
     2446    add si, di                                ; 01 fe
     2447    mov al, byte [bp+si-00225h]               ; 8a 82 db fd
     2448    mov byte [bp+si-05ch], al                 ; 88 42 a4
     2449    mov al, byte [bp+si-00226h]               ; 8a 82 da fd
     2450    mov byte [bp+si-05bh], al                 ; 88 42 a5
     2451    inc di                                    ; 47
     2452    jmp short 0238ch                          ; eb e6
     2453    mov byte [bp-034h], 000h                  ; c6 46 cc 00
     2454    mov di, strict word 00027h                ; bf 27 00
     2455    jmp short 023b4h                          ; eb 05
     2456    dec di                                    ; 4f
     2457    test di, di                               ; 85 ff
     2458    jle short 023c0h                          ; 7e 0c
     2459    cmp byte [bp+di-05ch], 020h               ; 80 7b a4 20
     2460    jne short 023c0h                          ; 75 06
     2461    mov byte [bp+di-05ch], 000h               ; c6 43 a4 00
     2462    jmp short 023afh                          ; eb ef
     2463    mov al, byte [bp-00ch]                    ; 8a 46 f4
    24652464    cmp AL, strict byte 003h                  ; 3c 03
    2466     je short 0243ch                           ; 74 5e
     2465    je short 02423h                           ; 74 5c
    24672466    cmp AL, strict byte 002h                  ; 3c 02
    2468     je short 023ebh                           ; 74 09
     2467    je short 023d4h                           ; 74 09
    24692468    cmp AL, strict byte 001h                  ; 3c 01
    2470     je near 024a7h                            ; 0f 84 bf 00
    2471     jmp near 024c6h                           ; e9 db 00
     2469    je near 0248ah                            ; 0f 84 b9 00
     2470    jmp near 024a9h                           ; e9 d5 00
    24722471    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2473     je short 023f6h                           ; 74 05
     2472    je short 023dfh                           ; 74 05
    24742473    mov ax, 000ffh                            ; b8 ff 00
    2475     jmp short 023f9h                          ; eb 03
     2474    jmp short 023e2h                          ; eb 03
    24762475    mov ax, 00106h                            ; b8 06 01
    24772476    push ax                                   ; 50
    2478     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     2477    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    24792478    push ax                                   ; 50
    24802479    push 0010dh                               ; 68 0d 01
    24812480    push strict byte 00002h                   ; 6a 02
    2482     call 018e9h                               ; e8 e2 f4
     2481    call 018e9h                               ; e8 f9 f4
    24832482    add sp, strict byte 00008h                ; 83 c4 08
    2484     xor bx, bx                                ; 31 db
    2485     mov di, bx                                ; 89 df
    2486     movzx ax, byte [bp+di-05ah]               ; 0f b6 43 a6
    2487     inc bx                                    ; 43
     2483    xor di, di                                ; 31 ff
     2484    movzx ax, byte [bp+di-05ch]               ; 0f b6 43 a4
     2485    inc di                                    ; 47
    24882486    test ax, ax                               ; 85 c0
    2489     je short 02425h                           ; 74 0e
     2487    je short 0240ch                           ; 74 0e
    24902488    push ax                                   ; 50
    24912489    push 00118h                               ; 68 18 01
    24922490    push strict byte 00002h                   ; 6a 02
    2493     call 018e9h                               ; e8 c9 f4
     2491    call 018e9h                               ; e8 e2 f4
    24942492    add sp, strict byte 00006h                ; 83 c4 06
    2495     jmp short 0240ch                          ; eb e7
    2496     push dword [bp-030h]                      ; 66 ff 76 d0
    2497     movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     2493    jmp short 023f5h                          ; eb e9
     2494    push dword [bp-02ch]                      ; 66 ff 76 d4
     2495    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    24982496    push ax                                   ; 50
    24992497    push 0011bh                               ; 68 1b 01
    25002498    push strict byte 00002h                   ; 6a 02
    2501     call 018e9h                               ; e8 b3 f4
     2499    call 018e9h                               ; e8 cc f4
    25022500    add sp, strict byte 0000ah                ; 83 c4 0a
    2503     jmp near 024c6h                           ; e9 8a 00
     2501    jmp near 024a9h                           ; e9 86 00
    25042502    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2505     je short 02447h                           ; 74 05
     2503    je short 0242eh                           ; 74 05
    25062504    mov ax, 000ffh                            ; b8 ff 00
    2507     jmp short 0244ah                          ; eb 03
     2505    jmp short 02431h                          ; eb 03
    25082506    mov ax, 00106h                            ; b8 06 01
    25092507    push ax                                   ; 50
    2510     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     2508    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    25112509    push ax                                   ; 50
    25122510    push 0010dh                               ; 68 0d 01
    25132511    push strict byte 00002h                   ; 6a 02
    2514     call 018e9h                               ; e8 91 f4
     2512    call 018e9h                               ; e8 aa f4
    25152513    add sp, strict byte 00008h                ; 83 c4 08
    2516     xor bx, bx                                ; 31 db
    2517     mov di, bx                                ; 89 df
    2518     movzx ax, byte [bp+di-05ah]               ; 0f b6 43 a6
    2519     inc bx                                    ; 43
     2514    xor di, di                                ; 31 ff
     2515    movzx ax, byte [bp+di-05ch]               ; 0f b6 43 a4
     2516    inc di                                    ; 47
    25202517    test ax, ax                               ; 85 c0
    2521     je short 02476h                           ; 74 0e
     2518    je short 0245bh                           ; 74 0e
    25222519    push ax                                   ; 50
    25232520    push 00118h                               ; 68 18 01
    25242521    push strict byte 00002h                   ; 6a 02
    2525     call 018e9h                               ; e8 78 f4
     2522    call 018e9h                               ; e8 93 f4
    25262523    add sp, strict byte 00006h                ; 83 c4 06
    2527     jmp short 0245dh                          ; eb e7
    2528     movzx ax, byte [bp-016h]                  ; 0f b6 46 ea
     2524    jmp short 02444h                          ; eb e9
     2525    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    25292526    imul ax, ax, strict byte 00018h           ; 6b c0 18
    2530     mov es, [bp-026h]                         ; 8e 46 da
    2531     mov bx, si                                ; 89 f3
     2527    les bx, [bp-024h]                         ; c4 5e dc
    25322528    add bx, ax                                ; 01 c3
    25332529    cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
    2534     jne short 02495h                          ; 75 0a
    2535     movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     2530    jne short 02478h                          ; 75 0a
     2531    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    25362532    push ax                                   ; 50
    25372533    push 0013bh                               ; 68 3b 01
    2538     jmp short 0249dh                          ; eb 08
    2539     movzx ax, byte [bp-010h]                  ; 0f b6 46 f0
     2534    jmp short 02480h                          ; eb 08
     2535    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
    25402536    push ax                                   ; 50
    25412537    push 00155h                               ; 68 55 01
    25422538    push strict byte 00002h                   ; 6a 02
    2543     call 018e9h                               ; e8 47 f4
     2539    call 018e9h                               ; e8 64 f4
    25442540    add sp, strict byte 00006h                ; 83 c4 06
    2545     jmp short 024c6h                          ; eb 1f
     2541    jmp short 024a9h                          ; eb 1f
    25462542    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    2547     je short 024b2h                           ; 74 05
     2543    je short 02495h                           ; 74 05
    25482544    mov ax, 000ffh                            ; b8 ff 00
    2549     jmp short 024b5h                          ; eb 03
     2545    jmp short 02498h                          ; eb 03
    25502546    mov ax, 00106h                            ; b8 06 01
    25512547    push ax                                   ; 50
    2552     movzx ax, byte [bp-012h]                  ; 0f b6 46 ee
     2548    movzx ax, byte [bp-014h]                  ; 0f b6 46 ec
    25532549    push ax                                   ; 50
    25542550    push 00167h                               ; 68 67 01
    25552551    push strict byte 00002h                   ; 6a 02
    2556     call 018e9h                               ; e8 26 f4
     2552    call 018e9h                               ; e8 43 f4
    25572553    add sp, strict byte 00008h                ; 83 c4 08
    2558     inc byte [bp-016h]                        ; fe 46 ea
    2559     cmp byte [bp-016h], 008h                  ; 80 7e ea 08
    2560     jnc short 02520h                          ; 73 51
    2561     movzx bx, byte [bp-016h]                  ; 0f b6 5e ea
     2554    inc byte [bp-00ah]                        ; fe 46 f6
     2555    cmp byte [bp-00ah], 008h                  ; 80 7e f6 08
     2556    jnc short 02500h                          ; 73 4e
     2557    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    25622558    mov ax, bx                                ; 89 d8
    25632559    cwd                                       ; 99
     
    25652561    ; sub ax, dx                                ; 2b c2
    25662562    sar ax, 1                                 ; d1 f8
    2567     mov cx, ax                                ; 89 c1
    2568     mov byte [bp-012h], al                    ; 88 46 ee
     2563    mov word [bp-026h], ax                    ; 89 46 da
     2564    mov al, byte [bp-026h]                    ; 8a 46 da
     2565    mov byte [bp-014h], al                    ; 88 46 ec
    25692566    mov ax, bx                                ; 89 d8
    25702567    cwd                                       ; 99
    25712568    mov bx, strict word 00002h                ; bb 02 00
    25722569    idiv bx                                   ; f7 fb
    2573     mov word [bp-028h], dx                    ; 89 56 d8
    2574     mov al, byte [bp-028h]                    ; 8a 46 d8
    2575     mov byte [bp-004h], al                    ; 88 46 fc
    2576     movzx ax, cl                              ; 0f b6 c1
     2570    mov cx, dx                                ; 89 d1
     2571    mov byte [bp-004h], dl                    ; 88 56 fc
     2572    movzx ax, byte [bp-026h]                  ; 0f b6 46 da
    25772573    imul ax, ax, strict byte 00006h           ; 6b c0 06
    2578     mov es, [bp-026h]                         ; 8e 46 da
    2579     mov di, si                                ; 89 f7
    2580     add di, ax                                ; 01 c7
    2581     mov bx, word [es:di+001c2h]               ; 26 8b 9d c2 01
    2582     mov ax, word [es:di+001c4h]               ; 26 8b 85 c4 01
    2583     mov word [bp-02ch], ax                    ; 89 46 d4
     2574    les bx, [bp-024h]                         ; c4 5e dc
     2575    add bx, ax                                ; 01 c3
     2576    mov si, word [es:bx+001c2h]               ; 26 8b b7 c2 01
     2577    mov ax, word [es:bx+001c4h]               ; 26 8b 87 c4 01
     2578    mov word [bp-028h], ax                    ; 89 46 d8
    25842579    mov dx, ax                                ; 89 c2
    25852580    add dx, strict byte 00006h                ; 83 c2 06
    25862581    mov AL, strict byte 00ah                  ; b0 0a
    25872582    out DX, AL                                ; ee
    2588     cmp byte [bp-028h], 000h                  ; 80 7e d8 00
    2589     je near 01f79h                            ; 0f 84 5f fa
     2583    test cl, cl                               ; 84 c9
     2584    je near 01f6ah                            ; 0f 84 70 fa
    25902585    mov ax, 000b0h                            ; b8 b0 00
    2591     jmp near 01f7ch                           ; e9 5c fa
    2592     mov al, byte [bp-014h]                    ; 8a 46 ec
    2593     mov es, [bp-026h]                         ; 8e 46 da
    2594     mov byte [es:si+0019eh], al               ; 26 88 84 9e 01
     2586    jmp near 01f6dh                           ; e9 6d fa
     2587    mov al, byte [bp-002h]                    ; 8a 46 fe
     2588    les bx, [bp-024h]                         ; c4 5e dc
     2589    mov byte [es:bx+0019eh], al               ; 26 88 87 9e 01
    25952590    mov al, byte [bp-006h]                    ; 8a 46 fa
    2596     mov byte [es:si+001afh], al               ; 26 88 84 af 01
    2597     movzx bx, byte [bp-014h]                  ; 0f b6 5e ec
     2591    mov byte [es:bx+001afh], al               ; 26 88 87 af 01
     2592    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    25982593    mov dx, strict word 00075h                ; ba 75 00
    25992594    mov ax, strict word 00040h                ; b8 40 00
    2600     call 0160eh                               ; e8 ce f0
     2595    call 0160eh                               ; e8 ee f0
    26012596    leave                                     ; c9
    26022597    pop di                                    ; 5f
    26032598    pop si                                    ; 5e
    26042599    retn                                      ; c3
    2605 ata_cmd_data_out_:                           ; 0xf2544 LB 0x215
     2600ata_cmd_data_out_:                           ; 0xf2524 LB 0x215
    26062601    push si                                   ; 56
    26072602    push di                                   ; 57
     
    26302625    mov byte [bp-004h], al                    ; 88 46 fc
    26312626    cmp AL, strict byte 001h                  ; 3c 01
    2632     jne short 02596h                          ; 75 07
     2627    jne short 02576h                          ; 75 07
    26332628    mov word [bp-00eh], 00080h                ; c7 46 f2 80 00
    2634     jmp short 0259bh                          ; eb 05
     2629    jmp short 0257bh                          ; eb 05
    26352630    mov word [bp-00eh], 00100h                ; c7 46 f2 00 01
    26362631    lea dx, [bx+007h]                         ; 8d 57 07
     
    26392634    ; sub ah, ah                                ; 2a e4
    26402635    test AL, strict byte 080h                 ; a8 80
    2641     je short 025b4h                           ; 74 0f
     2636    je short 02594h                           ; 74 0f
    26422637    mov dx, word [bp-008h]                    ; 8b 56 f8
    26432638    add dx, strict byte 00006h                ; 83 c2 06
     
    26452640    out DX, AL                                ; ee
    26462641    mov dx, strict word 00001h                ; ba 01 00
    2647     jmp near 02753h                           ; e9 9f 01
     2642    jmp near 02733h                           ; e9 9f 01
    26482643    mov es, [bp-006h]                         ; 8e 46 fa
    26492644    mov ax, word [es:di]                      ; 26 8b 05
     
    26622657    mov ax, word [bp-00ch]                    ; 8b 46 f4
    26632658    test ax, ax                               ; 85 c0
    2664     jne short 02652h                          ; 75 67
     2659    jne short 02632h                          ; 75 67
    26652660    mov dx, word [bp-01ah]                    ; 8b 56 e6
    26662661    add dx, word [bp-00ah]                    ; 03 56 f6
    26672662    adc ax, word [bp-018h]                    ; 13 46 e8
    26682663    cmp ax, 01000h                            ; 3d 00 10
    2669     jnbe short 025fbh                         ; 77 02
    2670     jne short 02626h                          ; 75 2b
     2664    jnbe short 025dbh                         ; 77 02
     2665    jne short 02606h                          ; 75 2b
    26712666    mov ax, word [bp-018h]                    ; 8b 46 e8
    26722667    xor al, al                                ; 30 c0
     
    26932688    shr word [bp-018h], 1                     ; d1 6e e8
    26942689    rcr word [bp-01ah], 1                     ; d1 5e e6
    2695     loop 02631h                               ; e2 f8
     2690    loop 02611h                               ; e2 f8
    26962691    mov ax, word [bp-01ah]                    ; 8b 46 e6
    26972692    mov word [bp-012h], ax                    ; 89 46 ee
     
    27222717    out DX, AL                                ; ee
    27232718    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    2724     je short 02688h                           ; 74 05
     2719    je short 02668h                           ; 74 05
    27252720    mov ax, 000b0h                            ; b8 b0 00
    2726     jmp short 0268bh                          ; eb 03
     2721    jmp short 0266bh                          ; eb 03
    27272722    mov ax, 000a0h                            ; b8 a0 00
    27282723    movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     
    27392734    mov dl, al                                ; 88 c2
    27402735    test AL, strict byte 080h                 ; a8 80
    2741     jne short 0269ch                          ; 75 f4
     2736    jne short 0267ch                          ; 75 f4
    27422737    test AL, strict byte 001h                 ; a8 01
    2743     je short 026bbh                           ; 74 0f
     2738    je short 0269bh                           ; 74 0f
    27442739    mov dx, word [bp-008h]                    ; 8b 56 f8
    27452740    add dx, strict byte 00006h                ; 83 c2 06
     
    27472742    out DX, AL                                ; ee
    27482743    mov dx, strict word 00002h                ; ba 02 00
    2749     jmp near 02753h                           ; e9 98 00
     2744    jmp near 02733h                           ; e9 98 00
    27502745    test dl, 008h                             ; f6 c2 08
    2751     jne short 026cfh                          ; 75 0f
     2746    jne short 026afh                          ; 75 0f
    27522747    mov dx, word [bp-008h]                    ; 8b 56 f8
    27532748    add dx, strict byte 00006h                ; 83 c2 06
     
    27552750    out DX, AL                                ; ee
    27562751    mov dx, strict word 00003h                ; ba 03 00
    2757     jmp near 02753h                           ; e9 84 00
     2752    jmp near 02733h                           ; e9 84 00
    27582753    sti                                       ; fb
    27592754    cmp si, 0f800h                            ; 81 fe 00 f8
    2760     jc short 026e3h                           ; 72 0d
     2755    jc short 026c3h                           ; 72 0d
    27612756    sub si, 00800h                            ; 81 ee 00 08
    27622757    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    27642759    mov word [bp-014h], ax                    ; 89 46 ec
    27652760    cmp byte [bp-004h], 001h                  ; 80 7e fc 01
    2766     jne short 026f7h                          ; 75 0e
     2761    jne short 026d7h                          ; 75 0e
    27672762    mov dx, bx                                ; 89 da
    27682763    mov cx, word [bp-00eh]                    ; 8b 4e f2
     
    27702765    db  0f3h, 066h, 026h, 06fh
    27712766    ; rep es outsd                              ; f3 66 26 6f
    2772     jmp short 02702h                          ; eb 0b
     2767    jmp short 026e2h                          ; eb 0b
    27732768    mov dx, bx                                ; 89 da
    27742769    mov cx, word [bp-00eh]                    ; 8b 4e f2
     
    27852780    mov dl, al                                ; 88 c2
    27862781    test AL, strict byte 080h                 ; a8 80
    2787     jne short 0270ch                          ; 75 f4
     2782    jne short 026ech                          ; 75 f4
    27882783    cmp word [bp-00ah], strict byte 00000h    ; 83 7e f6 00
    2789     jne short 02732h                          ; 75 14
     2784    jne short 02712h                          ; 75 14
    27902785    and AL, strict byte 0e9h                  ; 24 e9
    27912786    cmp AL, strict byte 040h                  ; 3c 40
    2792     je short 02748h                           ; 74 24
     2787    je short 02728h                           ; 74 24
    27932788    mov dx, word [bp-008h]                    ; 8b 56 f8
    27942789    add dx, strict byte 00006h                ; 83 c2 06
     
    27962791    out DX, AL                                ; ee
    27972792    mov dx, strict word 00006h                ; ba 06 00
    2798     jmp short 02753h                          ; eb 21
     2793    jmp short 02733h                          ; eb 21
    27992794    mov al, dl                                ; 88 d0
    28002795    and AL, strict byte 0c9h                  ; 24 c9
    28012796    cmp AL, strict byte 048h                  ; 3c 48
    2802     je short 026d0h                           ; 74 96
     2797    je short 026b0h                           ; 74 96
    28032798    mov dx, word [bp-008h]                    ; 8b 56 f8
    28042799    add dx, strict byte 00006h                ; 83 c2 06
     
    28062801    out DX, AL                                ; ee
    28072802    mov dx, strict word 00007h                ; ba 07 00
    2808     jmp short 02753h                          ; eb 0b
     2803    jmp short 02733h                          ; eb 0b
    28092804    mov dx, word [bp-008h]                    ; 8b 56 f8
    28102805    add dx, strict byte 00006h                ; 83 c2 06
     
    28172812    pop si                                    ; 5e
    28182813    retn                                      ; c3
    2819 @ata_read_sectors:                           ; 0xf2759 LB 0x77
     2814@ata_read_sectors:                           ; 0xf2739 LB 0x77
    28202815    push si                                   ; 56
    28212816    push di                                   ; 57
     
    28292824    mov ax, word [es:si+012h]                 ; 26 8b 44 12
    28302825    test ax, ax                               ; 85 c0
    2831     je short 02787h                           ; 74 0d
     2826    je short 02767h                           ; 74 0d
    28322827    movzx di, bl                              ; 0f b6 fb
    28332828    imul di, di, strict byte 00018h           ; 6b ff 18
    28342829    mov [bp-002h], es                         ; 8c 46 fe
    28352830    add di, si                                ; 01 f7
    2836     jmp short 027b3h                          ; eb 2c
     2831    jmp short 02793h                          ; eb 2c
    28372832    mov di, word [es:si]                      ; 26 8b 3c
    28382833    add di, cx                                ; 01 cf
     
    28402835    adc ax, word [es:si+002h]                 ; 26 13 44 02
    28412836    cmp ax, 01000h                            ; 3d 00 10
    2842     jnbe short 0279ah                         ; 77 02
    2843     jne short 027a6h                          ; 75 0c
     2837    jnbe short 0277ah                         ; 77 02
     2838    jne short 02786h                          ; 75 0c
    28442839    mov bx, strict word 00024h                ; bb 24 00
    28452840    mov ax, si                                ; 89 f0
    28462841    mov dx, es                                ; 8c c2
    2847     call 01cc0h                               ; e8 1c f5
    2848     jmp short 027cah                          ; eb 24
     2842    call 01cc0h                               ; e8 3c f5
     2843    jmp short 027aah                          ; eb 24
    28492844    movzx ax, bl                              ; 0f b6 c3
    28502845    imul ax, ax, strict byte 00018h           ; 6b c0 18
     
    28562851    mov ax, si                                ; 89 f0
    28572852    mov dx, es                                ; 8c c2
    2858     call 01cc0h                               ; e8 ff f4
     2853    call 01cc0h                               ; e8 1f f5
    28592854    mov es, [bp-002h]                         ; 8e 46 fe
    28602855    mov word [es:di+024h], 00200h             ; 26 c7 45 24 00 02
     
    28632858    pop si                                    ; 5e
    28642859    retn 00004h                               ; c2 04 00
    2865 @ata_write_sectors:                          ; 0xf27d0 LB 0x3a
     2860@ata_write_sectors:                          ; 0xf27b0 LB 0x3a
    28662861    push si                                   ; 56
    28672862    push bp                                   ; 55
     
    28702865    mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
    28712866    cmp word [es:si+012h], strict byte 00000h ; 26 83 7c 12 00
    2872     je short 027eeh                           ; 74 0c
     2867    je short 027ceh                           ; 74 0c
    28732868    mov bx, strict word 00030h                ; bb 30 00
    28742869    mov ax, si                                ; 89 f0
    28752870    mov dx, es                                ; 8c c2
    2876     call 02544h                               ; e8 58 fd
    2877     jmp short 02805h                          ; eb 17
     2871    call 02524h                               ; e8 58 fd
     2872    jmp short 027e5h                          ; eb 17
    28782873    xor ax, ax                                ; 31 c0
    28792874    mov dx, word [es:si]                      ; 26 8b 14
     
    28812876    adc ax, word [es:si+002h]                 ; 26 13 44 02
    28822877    cmp ax, 01000h                            ; 3d 00 10
    2883     jnbe short 02800h                         ; 77 02
    2884     jne short 027e2h                          ; 75 e2
     2878    jnbe short 027e0h                         ; 77 02
     2879    jne short 027c2h                          ; 75 e2
    28852880    mov bx, strict word 00034h                ; bb 34 00
    2886     jmp short 027e5h                          ; eb e0
     2881    jmp short 027c5h                          ; eb e0
    28872882    pop bp                                    ; 5d
    28882883    pop si                                    ; 5e
    28892884    retn 00004h                               ; c2 04 00
    2890 ata_cmd_packet_:                             ; 0xf280a LB 0x2e3
     2885ata_cmd_packet_:                             ; 0xf27ea LB 0x2e3
    28912886    push si                                   ; 56
    28922887    push di                                   ; 57
     
    28972892    mov dx, strict word 0000eh                ; ba 0e 00
    28982893    mov ax, strict word 00040h                ; b8 40 00
    2899     call 0161ch                               ; e8 fd ed
     2894    call 0161ch                               ; e8 1d ee
    29002895    mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
    29012896    mov word [bp-00ah], ax                    ; 89 46 f6
     
    29062901    mov byte [bp-002h], ah                    ; 88 66 fe
    29072902    cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
    2908     jne short 0285ah                          ; 75 1f
    2909     mov bx, 00cd6h                            ; bb d6 0c
     2903    jne short 0283ah                          ; 75 1f
     2904    mov bx, 00cech                            ; bb ec 0c
    29102905    mov cx, ds                                ; 8c d9
    29112906    mov ax, strict word 00004h                ; b8 04 00
    2912     call 018aeh                               ; e8 68 f0
     2907    call 018aeh                               ; e8 88 f0
    29132908    push 00181h                               ; 68 81 01
    29142909    push 00190h                               ; 68 90 01
    29152910    push strict byte 00004h                   ; 6a 04
    2916     call 018e9h                               ; e8 98 f0
     2911    call 018e9h                               ; e8 b8 f0
    29172912    add sp, strict byte 00006h                ; 83 c4 06
    29182913    mov dx, strict word 00001h                ; ba 01 00
    2919     jmp near 02ae5h                           ; e9 8b 02
     2914    jmp near 02ac5h                           ; e9 8b 02
    29202915    test byte [bp+008h], 001h                 ; f6 46 08 01
    2921     jne short 02854h                          ; 75 f4
     2916    jne short 02834h                          ; 75 f4
    29222917    xor ah, ah                                ; 30 e4
    29232918    imul ax, ax, strict byte 00006h           ; 6b c0 06
     
    29372932    mov al, byte [bp-004h]                    ; 8a 46 fc
    29382933    cmp AL, strict byte 00ch                  ; 3c 0c
    2939     jnc short 0289dh                          ; 73 06
     2934    jnc short 0287dh                          ; 73 06
    29402935    mov byte [bp-004h], 00ch                  ; c6 46 fc 0c
    2941     jmp short 028a3h                          ; eb 06
    2942     jbe short 028a3h                          ; 76 04
     2936    jmp short 02883h                          ; eb 06
     2937    jbe short 02883h                          ; 76 04
    29432938    mov byte [bp-004h], 010h                  ; c6 46 fc 10
    29442939    shr byte [bp-004h], 1                     ; d0 6e fc
     
    29532948    ; sub ah, ah                                ; 2a e4
    29542949    test AL, strict byte 080h                 ; a8 80
    2955     je short 028cbh                           ; 74 06
     2950    je short 028abh                           ; 74 06
    29562951    mov dx, strict word 00002h                ; ba 02 00
    2957     jmp near 02ae5h                           ; e9 1a 02
     2952    jmp near 02ac5h                           ; e9 1a 02
    29582953    mov dx, word [bp-00ch]                    ; 8b 56 f4
    29592954    add dx, strict byte 00006h                ; 83 c2 06
     
    29672962    out DX, AL                                ; ee
    29682963    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    2969     je short 028ebh                           ; 74 05
     2964    je short 028cbh                           ; 74 05
    29702965    mov ax, 000b0h                            ; b8 b0 00
    2971     jmp short 028eeh                          ; eb 03
     2966    jmp short 028ceh                          ; eb 03
    29722967    mov ax, 000a0h                            ; b8 a0 00
    29732968    lea dx, [bx+006h]                         ; 8d 57 06
     
    29822977    mov dl, al                                ; 88 c2
    29832978    test AL, strict byte 080h                 ; a8 80
    2984     jne short 028f8h                          ; 75 f4
     2979    jne short 028d8h                          ; 75 f4
    29852980    test AL, strict byte 001h                 ; a8 01
    2986     je short 02917h                           ; 74 0f
     2981    je short 028f7h                           ; 74 0f
    29872982    mov dx, word [bp-00ch]                    ; 8b 56 f4
    29882983    add dx, strict byte 00006h                ; 83 c2 06
     
    29902985    out DX, AL                                ; ee
    29912986    mov dx, strict word 00003h                ; ba 03 00
    2992     jmp near 02ae5h                           ; e9 ce 01
     2987    jmp near 02ac5h                           ; e9 ce 01
    29932988    test dl, 008h                             ; f6 c2 08
    2994     jne short 0292bh                          ; 75 0f
     2989    jne short 0290bh                          ; 75 0f
    29952990    mov dx, word [bp-00ch]                    ; 8b 56 f4
    29962991    add dx, strict byte 00006h                ; 83 c2 06
     
    29982993    out DX, AL                                ; ee
    29992994    mov dx, strict word 00004h                ; ba 04 00
    3000     jmp near 02ae5h                           ; e9 ba 01
     2995    jmp near 02ac5h                           ; e9 ba 01
    30012996    sti                                       ; fb
    30022997    mov ax, di                                ; 89 f8
     
    30113006    ; rep es outsw                              ; f3 26 6f
    30123007    cmp byte [bp+00eh], 000h                  ; 80 7e 0e 00
    3013     jne short 02954h                          ; 75 0b
     3008    jne short 02934h                          ; 75 0b
    30143009    lea dx, [bx+007h]                         ; 8d 57 07
    30153010    in AL, DX                                 ; ec
     
    30173012    ; sub ah, ah                                ; 2a e4
    30183013    mov dl, al                                ; 88 c2
    3019     jmp near 02ac6h                           ; e9 72 01
     3014    jmp near 02aa6h                           ; e9 72 01
    30203015    lea dx, [bx+007h]                         ; 8d 57 07
    30213016    in AL, DX                                 ; ec
     
    30243019    mov dl, al                                ; 88 c2
    30253020    test AL, strict byte 080h                 ; a8 80
    3026     jne short 02954h                          ; 75 f4
     3021    jne short 02934h                          ; 75 f4
    30273022    test AL, strict byte 088h                 ; a8 88
    3028     je near 02ac6h                            ; 0f 84 60 01
     3023    je near 02aa6h                            ; 0f 84 60 01
    30293024    test AL, strict byte 001h                 ; a8 01
    3030     je short 02975h                           ; 74 0b
     3025    je short 02955h                           ; 74 0b
    30313026    mov dx, word [bp-00ch]                    ; 8b 56 f4
    30323027    add dx, strict byte 00006h                ; 83 c2 06
    30333028    mov AL, strict byte 008h                  ; b0 08
    30343029    out DX, AL                                ; ee
    3035     jmp short 02911h                          ; eb 9c
     3030    jmp short 028f1h                          ; eb 9c
    30363031    mov al, dl                                ; 88 d0
    30373032    and AL, strict byte 0c9h                  ; 24 c9
    30383033    cmp AL, strict byte 048h                  ; 3c 48
    3039     je short 02988h                           ; 74 0b
     3034    je short 02968h                           ; 74 0b
    30403035    mov dx, word [bp-00ch]                    ; 8b 56 f4
    30413036    add dx, strict byte 00006h                ; 83 c2 06
    30423037    mov AL, strict byte 008h                  ; b0 08
    30433038    out DX, AL                                ; ee
    3044     jmp short 02925h                          ; eb 9d
     3039    jmp short 02905h                          ; eb 9d
    30453040    mov ax, word [bp+010h]                    ; 8b 46 10
    30463041    shr ax, 004h                              ; c1 e8 04
     
    30653060    mov ax, word [bp+008h]                    ; 8b 46 08
    30663061    cmp ax, cx                                ; 39 c8
    3067     jbe short 029c8h                          ; 76 0c
     3062    jbe short 029a8h                          ; 76 0c
    30683063    mov ax, cx                                ; 89 c8
    30693064    sub word [bp+008h], cx                    ; 29 4e 08
    30703065    xor ax, cx                                ; 31 c8
    30713066    mov word [bp-010h], ax                    ; 89 46 f0
    3072     jmp short 029d2h                          ; eb 0a
     3067    jmp short 029b2h                          ; eb 0a
    30733068    mov cx, ax                                ; 89 c1
    30743069    mov word [bp+008h], strict word 00000h    ; c7 46 08 00 00
     
    30763071    xor ax, ax                                ; 31 c0
    30773072    cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
    3078     jne short 029fbh                          ; 75 21
     3073    jne short 029dbh                          ; 75 21
    30793074    mov dx, word [bp-010h]                    ; 8b 56 f0
    30803075    cmp dx, word [bp+00ah]                    ; 3b 56 0a
    3081     jbe short 029fbh                          ; 76 19
     3076    jbe short 029dbh                          ; 76 19
    30823077    mov ax, word [bp-010h]                    ; 8b 46 f0
    30833078    sub ax, word [bp+00ah]                    ; 2b 46 0a
     
    30883083    mov word [bp+00ah], ax                    ; 89 46 0a
    30893084    mov word [bp+00ch], ax                    ; 89 46 0c
    3090     jmp short 02a07h                          ; eb 0c
     3085    jmp short 029e7h                          ; eb 0c
    30913086    mov word [bp-008h], ax                    ; 89 46 f8
    30923087    mov dx, word [bp-010h]                    ; 8b 56 f0
     
    30963091    mov al, byte [bp-006h]                    ; 8a 46 fa
    30973092    test cl, 003h                             ; f6 c1 03
    3098     je short 02a14h                           ; 74 02
     3093    je short 029f4h                           ; 74 02
    30993094    xor al, al                                ; 30 c0
    31003095    test byte [bp-010h], 003h                 ; f6 46 f0 03
    3101     je short 02a1ch                           ; 74 02
     3096    je short 029fch                           ; 74 02
    31023097    xor al, al                                ; 30 c0
    31033098    test byte [bp-008h], 003h                 ; f6 46 f8 03
    3104     je short 02a24h                           ; 74 02
     3099    je short 02a04h                           ; 74 02
    31053100    xor al, al                                ; 30 c0
    31063101    test byte [bp-010h], 001h                 ; f6 46 f0 01
    3107     je short 02a3ch                           ; 74 12
     3102    je short 02a1ch                           ; 74 12
    31083103    inc word [bp-010h]                        ; ff 46 f0
    31093104    cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
    3110     jbe short 02a3ch                          ; 76 09
     3105    jbe short 02a1ch                          ; 76 09
    31113106    test byte [bp-008h], 001h                 ; f6 46 f8 01
    3112     je short 02a3ch                           ; 74 03
     3107    je short 02a1ch                           ; 74 03
    31133108    dec word [bp-008h]                        ; ff 4e f8
    31143109    cmp AL, strict byte 001h                  ; 3c 01
    3115     jne short 02a4dh                          ; 75 0d
     3110    jne short 02a2dh                          ; 75 0d
    31163111    shr word [bp-010h], 002h                  ; c1 6e f0 02
    31173112    shr cx, 002h                              ; c1 e9 02
    31183113    shr word [bp-008h], 002h                  ; c1 6e f8 02
    3119     jmp short 02a55h                          ; eb 08
     3114    jmp short 02a35h                          ; eb 08
    31203115    shr word [bp-010h], 1                     ; d1 6e f0
    31213116    shr cx, 1                                 ; d1 e9
    31223117    shr word [bp-008h], 1                     ; d1 6e f8
    31233118    cmp AL, strict byte 001h                  ; 3c 01
    3124     jne short 02a85h                          ; 75 2c
     3119    jne short 02a65h                          ; 75 2c
    31253120    test cx, cx                               ; 85 c9
    3126     je short 02a67h                           ; 74 0a
     3121    je short 02a47h                           ; 74 0a
    31273122    mov dx, bx                                ; 89 da
    31283123    push eax                                  ; 66 50
    31293124    in eax, DX                                ; 66 ed
    3130     loop 02a61h                               ; e2 fc
     3125    loop 02a41h                               ; e2 fc
    31313126    pop eax                                   ; 66 58
    31323127    mov dx, bx                                ; 89 da
     
    31373132    mov ax, word [bp-008h]                    ; 8b 46 f8
    31383133    test ax, ax                               ; 85 c0
    3139     je short 02aa4h                           ; 74 2b
     3134    je short 02a84h                           ; 74 2b
    31403135    mov cx, ax                                ; 89 c1
    31413136    push eax                                  ; 66 50
    31423137    in eax, DX                                ; 66 ed
    3143     loop 02a7dh                               ; e2 fc
     3138    loop 02a5dh                               ; e2 fc
    31443139    pop eax                                   ; 66 58
    3145     jmp short 02aa4h                          ; eb 1f
     3140    jmp short 02a84h                          ; eb 1f
    31463141    test cx, cx                               ; 85 c9
    3147     je short 02a8eh                           ; 74 05
     3142    je short 02a6eh                           ; 74 05
    31483143    mov dx, bx                                ; 89 da
    31493144    in ax, DX                                 ; ed
    3150     loop 02a8bh                               ; e2 fd
     3145    loop 02a6bh                               ; e2 fd
    31513146    mov dx, bx                                ; 89 da
    31523147    mov cx, word [bp-010h]                    ; 8b 4e f0
     
    31553150    mov ax, word [bp-008h]                    ; 8b 46 f8
    31563151    test ax, ax                               ; 85 c0
    3157     je short 02aa4h                           ; 74 05
     3152    je short 02a84h                           ; 74 05
    31583153    mov cx, ax                                ; 89 c1
    31593154    in ax, DX                                 ; ed
    3160     loop 02aa1h                               ; e2 fd
     3155    loop 02a81h                               ; e2 fd
    31613156    add word [bp+010h], si                    ; 01 76 10
    31623157    xor ax, ax                                ; 31 c0
     
    31693164    mov ax, word [bp-012h]                    ; 8b 46 ee
    31703165    mov word [es:si+018h], ax                 ; 26 89 44 18
    3171     jmp near 02954h                           ; e9 8e fe
     3166    jmp near 02934h                           ; e9 8e fe
    31723167    mov al, dl                                ; 88 d0
    31733168    and AL, strict byte 0e9h                  ; 24 e9
    31743169    cmp AL, strict byte 040h                  ; 3c 40
    3175     je short 02adah                           ; 74 0c
     3170    je short 02abah                           ; 74 0c
    31763171    mov dx, word [bp-00ch]                    ; 8b 56 f4
    31773172    add dx, strict byte 00006h                ; 83 c2 06
    31783173    mov AL, strict byte 008h                  ; b0 08
    31793174    out DX, AL                                ; ee
    3180     jmp near 02925h                           ; e9 4b fe
     3175    jmp near 02905h                           ; e9 4b fe
    31813176    mov dx, word [bp-00ch]                    ; 8b 56 f4
    31823177    add dx, strict byte 00006h                ; 83 c2 06
     
    31893184    pop si                                    ; 5e
    31903185    retn 0000ch                               ; c2 0c 00
    3191 set_diskette_ret_status_:                    ; 0xf2aed LB 0x15
     3186set_diskette_ret_status_:                    ; 0xf2acd LB 0x15
    31923187    push bx                                   ; 53
    31933188    push dx                                   ; 52
     
    31973192    mov dx, strict word 00041h                ; ba 41 00
    31983193    mov ax, strict word 00040h                ; b8 40 00
    3199     call 0160eh                               ; e8 10 eb
     3194    call 0160eh                               ; e8 30 eb
    32003195    pop bp                                    ; 5d
    32013196    pop dx                                    ; 5a
    32023197    pop bx                                    ; 5b
    32033198    retn                                      ; c3
    3204 set_diskette_current_cyl_:                   ; 0xf2b02 LB 0x2a
     3199set_diskette_current_cyl_:                   ; 0xf2ae2 LB 0x2a
    32053200    push bx                                   ; 53
    32063201    push bp                                   ; 55
     
    32083203    mov bl, al                                ; 88 c3
    32093204    cmp AL, strict byte 001h                  ; 3c 01
    3210     jbe short 02b17h                          ; 76 0b
     3205    jbe short 02af7h                          ; 76 0b
    32113206    push 001b0h                               ; 68 b0 01
    32123207    push strict byte 00007h                   ; 6a 07
    3213     call 018e9h                               ; e8 d5 ed
     3208    call 018e9h                               ; e8 f5 ed
    32143209    add sp, strict byte 00004h                ; 83 c4 04
    32153210    movzx ax, dl                              ; 0f b6 c2
     
    32183213    mov bx, ax                                ; 89 c3
    32193214    mov ax, strict word 00040h                ; b8 40 00
    3220     call 0160eh                               ; e8 e5 ea
     3215    call 0160eh                               ; e8 05 eb
    32213216    pop bp                                    ; 5d
    32223217    pop bx                                    ; 5b
    32233218    retn                                      ; c3
    3224 floppy_reset_controller_:                    ; 0xf2b2c LB 0x28
     3219floppy_reset_controller_:                    ; 0xf2b0c LB 0x28
    32253220    push bx                                   ; 53
    32263221    push dx                                   ; 52
     
    32443239    and AL, strict byte 0c0h                  ; 24 c0
    32453240    cmp AL, strict byte 080h                  ; 3c 80
    3246     jne short 02b44h                          ; 75 f4
     3241    jne short 02b24h                          ; 75 f4
    32473242    pop bp                                    ; 5d
    32483243    pop dx                                    ; 5a
    32493244    pop bx                                    ; 5b
    32503245    retn                                      ; c3
    3251 floppy_prepare_controller_:                  ; 0xf2b54 LB 0x8c
     3246floppy_prepare_controller_:                  ; 0xf2b34 LB 0x8c
    32523247    push bx                                   ; 53
    32533248    push cx                                   ; 51
     
    32573252    mov dx, strict word 0003eh                ; ba 3e 00
    32583253    mov ax, strict word 00040h                ; b8 40 00
    3259     call 01600h                               ; e8 9a ea
     3254    call 01600h                               ; e8 ba ea
    32603255    and AL, strict byte 07fh                  ; 24 7f
    32613256    movzx bx, al                              ; 0f b6 d8
    32623257    mov dx, strict word 0003eh                ; ba 3e 00
    32633258    mov ax, strict word 00040h                ; b8 40 00
    3264     call 0160eh                               ; e8 9a ea
     3259    call 0160eh                               ; e8 ba ea
    32653260    mov dx, 003f2h                            ; ba f2 03
    32663261    in AL, DX                                 ; ec
     
    32703265    mov byte [bp-002h], al                    ; 88 46 fe
    32713266    test cx, cx                               ; 85 c9
    3272     je short 02b87h                           ; 74 04
     3267    je short 02b67h                           ; 74 04
    32733268    mov AL, strict byte 020h                  ; b0 20
    3274     jmp short 02b89h                          ; eb 02
     3269    jmp short 02b69h                          ; eb 02
    32753270    mov AL, strict byte 010h                  ; b0 10
    32763271    or AL, strict byte 00ch                   ; 0c 0c
     
    32813276    mov dx, strict word 00040h                ; ba 40 00
    32823277    mov ax, dx                                ; 89 d0
    3283     call 0160eh                               ; e8 72 ea
     3278    call 0160eh                               ; e8 92 ea
    32843279    mov dx, 0008bh                            ; ba 8b 00
    32853280    mov ax, strict word 00040h                ; b8 40 00
    3286     call 01600h                               ; e8 5b ea
     3281    call 01600h                               ; e8 7b ea
    32873282    shr al, 006h                              ; c0 e8 06
    32883283    mov dx, 003f7h                            ; ba f7 03
     
    32943289    and AL, strict byte 0c0h                  ; 24 c0
    32953290    cmp AL, strict byte 080h                  ; 3c 80
    3296     jne short 02bach                          ; 75 f4
     3291    jne short 02b8ch                          ; 75 f4
    32973292    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    3298     jne short 02bdbh                          ; 75 1d
     3293    jne short 02bbbh                          ; 75 1d
    32993294    sti                                       ; fb
    33003295    mov dx, strict word 0003eh                ; ba 3e 00
    33013296    mov ax, strict word 00040h                ; b8 40 00
    3302     call 01600h                               ; e8 38 ea
     3297    call 01600h                               ; e8 58 ea
    33033298    test AL, strict byte 080h                 ; a8 80
    3304     je short 02bbfh                           ; 74 f3
     3299    je short 02b9fh                           ; 74 f3
    33053300    and AL, strict byte 07fh                  ; 24 7f
    33063301    cli                                       ; fa
     
    33083303    mov dx, strict word 0003eh                ; ba 3e 00
    33093304    mov ax, strict word 00040h                ; b8 40 00
    3310     call 0160eh                               ; e8 33 ea
     3305    call 0160eh                               ; e8 53 ea
    33113306    leave                                     ; c9
    33123307    pop dx                                    ; 5a
     
    33143309    pop bx                                    ; 5b
    33153310    retn                                      ; c3
    3316 floppy_media_known_:                         ; 0xf2be0 LB 0x40
     3311floppy_media_known_:                         ; 0xf2bc0 LB 0x40
    33173312    push bx                                   ; 53
    33183313    push dx                                   ; 52
     
    33223317    mov dx, strict word 0003eh                ; ba 3e 00
    33233318    mov ax, strict word 00040h                ; b8 40 00
    3324     call 01600h                               ; e8 10 ea
     3319    call 01600h                               ; e8 30 ea
    33253320    mov ah, al                                ; 88 c4
    33263321    test bx, bx                               ; 85 db
    3327     je short 02bf8h                           ; 74 02
     3322    je short 02bd8h                           ; 74 02
    33283323    shr al, 1                                 ; d0 e8
    33293324    and AL, strict byte 001h                  ; 24 01
    3330     jne short 02c00h                          ; 75 04
     3325    jne short 02be0h                          ; 75 04
    33313326    xor ah, ah                                ; 30 e4
    3332     jmp short 02c1ch                          ; eb 1c
     3327    jmp short 02bfch                          ; eb 1c
    33333328    mov dx, 00090h                            ; ba 90 00
    33343329    test bx, bx                               ; 85 db
    3335     je short 02c0ah                           ; 74 03
     3330    je short 02beah                           ; 74 03
    33363331    mov dx, 00091h                            ; ba 91 00
    33373332    mov ax, strict word 00040h                ; b8 40 00
    3338     call 01600h                               ; e8 f0 e9
     3333    call 01600h                               ; e8 10 ea
    33393334    xor ah, ah                                ; 30 e4
    33403335    sar ax, 004h                              ; c1 f8 04
    33413336    and AL, strict byte 001h                  ; 24 01
    3342     je short 02bfch                           ; 74 e3
     3337    je short 02bdch                           ; 74 e3
    33433338    mov ax, strict word 00001h                ; b8 01 00
    33443339    pop bp                                    ; 5d
     
    33463341    pop bx                                    ; 5b
    33473342    retn                                      ; c3
    3348 floppy_read_id_:                             ; 0xf2c20 LB 0x49
     3343floppy_read_id_:                             ; 0xf2c00 LB 0x49
    33493344    push bx                                   ; 53
    33503345    push dx                                   ; 52
     
    33523347    enter 00008h, 000h                        ; c8 08 00 00
    33533348    mov bx, ax                                ; 89 c3
    3354     call 02b54h                               ; e8 28 ff
     3349    call 02b34h                               ; e8 28 ff
    33553350    mov AL, strict byte 04ah                  ; b0 4a
    33563351    mov dx, 003f5h                            ; ba f5 03
     
    33613356    mov dx, strict word 0003eh                ; ba 3e 00
    33623357    mov ax, strict word 00040h                ; b8 40 00
    3363     call 01600h                               ; e8 c1 e9
     3358    call 01600h                               ; e8 e1 e9
    33643359    and AL, strict byte 080h                  ; 24 80
    33653360    test al, al                               ; 84 c0
    3366     je short 02c36h                           ; 74 f1
     3361    je short 02c16h                           ; 74 f1
    33673362    cli                                       ; fa
    33683363    xor si, si                                ; 31 f6
    3369     jmp short 02c4fh                          ; eb 05
     3364    jmp short 02c2fh                          ; eb 05
    33703365    cmp si, strict byte 00007h                ; 83 fe 07
    3371     jnl short 02c5bh                          ; 7d 0c
     3366    jnl short 02c3bh                          ; 7d 0c
    33723367    mov dx, 003f5h                            ; ba f5 03
    33733368    in AL, DX                                 ; ec
     
    33763371    mov byte [bp+si-008h], al                 ; 88 42 f8
    33773372    inc si                                    ; 46
    3378     jmp short 02c4ah                          ; eb ef
     3373    jmp short 02c2ah                          ; eb ef
    33793374    test byte [bp-008h], 0c0h                 ; f6 46 f8 c0
    33803375    db  00fh, 094h, 0c0h
     
    33863381    pop bx                                    ; 5b
    33873382    retn                                      ; c3
    3388 floppy_drive_recal_:                         ; 0xf2c69 LB 0x5e
     3383floppy_drive_recal_:                         ; 0xf2c49 LB 0x5e
    33893384    push bx                                   ; 53
    33903385    push cx                                   ; 51
     
    33933388    mov bp, sp                                ; 89 e5
    33943389    mov bx, ax                                ; 89 c3
    3395     call 02b54h                               ; e8 e0 fe
     3390    call 02b34h                               ; e8 e0 fe
    33963391    mov AL, strict byte 007h                  ; b0 07
    33973392    mov dx, 003f5h                            ; ba f5 03
     
    34023397    mov dx, strict word 0003eh                ; ba 3e 00
    34033398    mov ax, strict word 00040h                ; b8 40 00
    3404     call 01600h                               ; e8 79 e9
     3399    call 01600h                               ; e8 99 e9
    34053400    and AL, strict byte 080h                  ; 24 80
    34063401    test al, al                               ; 84 c0
    3407     je short 02c7eh                           ; 74 f1
     3402    je short 02c5eh                           ; 74 f1
    34083403    cli                                       ; fa
    34093404    mov dx, strict word 0003eh                ; ba 3e 00
    34103405    mov ax, strict word 00040h                ; b8 40 00
    3411     call 01600h                               ; e8 69 e9
     3406    call 01600h                               ; e8 89 e9
    34123407    and AL, strict byte 07fh                  ; 24 7f
    34133408    test bx, bx                               ; 85 db
    3414     je short 02ca4h                           ; 74 07
     3409    je short 02c84h                           ; 74 07
    34153410    or AL, strict byte 002h                   ; 0c 02
    34163411    mov cx, 00095h                            ; b9 95 00
    3417     jmp short 02ca9h                          ; eb 05
     3412    jmp short 02c89h                          ; eb 05
    34183413    or AL, strict byte 001h                   ; 0c 01
    34193414    mov cx, 00094h                            ; b9 94 00
     
    34213416    mov dx, strict word 0003eh                ; ba 3e 00
    34223417    mov ax, strict word 00040h                ; b8 40 00
    3423     call 0160eh                               ; e8 59 e9
     3418    call 0160eh                               ; e8 79 e9
    34243419    xor bx, bx                                ; 31 db
    34253420    mov dx, cx                                ; 89 ca
    34263421    mov ax, strict word 00040h                ; b8 40 00
    3427     call 0160eh                               ; e8 4f e9
     3422    call 0160eh                               ; e8 6f e9
    34283423    mov ax, strict word 00001h                ; b8 01 00
    34293424    pop bp                                    ; 5d
     
    34323427    pop bx                                    ; 5b
    34333428    retn                                      ; c3
    3434 floppy_media_sense_:                         ; 0xf2cc7 LB 0xfa
     3429floppy_media_sense_:                         ; 0xf2ca7 LB 0xfa
    34353430    push bx                                   ; 53
    34363431    push cx                                   ; 51
     
    34413436    mov bp, sp                                ; 89 e5
    34423437    mov di, ax                                ; 89 c7
    3443     call 02c69h                               ; e8 95 ff
     3438    call 02c49h                               ; e8 95 ff
    34443439    test ax, ax                               ; 85 c0
    3445     jne short 02cddh                          ; 75 05
     3440    jne short 02cbdh                          ; 75 05
    34463441    xor cx, cx                                ; 31 c9
    3447     jmp near 02db8h                           ; e9 db 00
     3442    jmp near 02d98h                           ; e9 db 00
    34483443    mov ax, strict word 00010h                ; b8 10 00
    3449     call 0165ch                               ; e8 79 e9
     3444    call 0165ch                               ; e8 99 e9
    34503445    test di, di                               ; 85 ff
    3451     jne short 02ceeh                          ; 75 07
     3446    jne short 02cceh                          ; 75 07
    34523447    mov cl, al                                ; 88 c1
    34533448    shr cl, 004h                              ; c0 e9 04
    3454     jmp short 02cf3h                          ; eb 05
     3449    jmp short 02cd3h                          ; eb 05
    34553450    mov cl, al                                ; 88 c1
    34563451    and cl, 00fh                              ; 80 e1 0f
    34573452    cmp cl, 001h                              ; 80 f9 01
    3458     jne short 02d01h                          ; 75 09
     3453    jne short 02ce1h                          ; 75 09
    34593454    xor cl, cl                                ; 30 c9
    34603455    mov CH, strict byte 015h                  ; b5 15
    34613456    mov si, strict word 00001h                ; be 01 00
    3462     jmp short 02d4ch                          ; eb 4b
     3457    jmp short 02d2ch                          ; eb 4b
    34633458    cmp cl, 002h                              ; 80 f9 02
    3464     jne short 02d0ch                          ; 75 06
     3459    jne short 02cech                          ; 75 06
    34653460    xor cl, cl                                ; 30 c9
    34663461    mov CH, strict byte 035h                  ; b5 35
    3467     jmp short 02cfch                          ; eb f0
     3462    jmp short 02cdch                          ; eb f0
    34683463    cmp cl, 003h                              ; 80 f9 03
    3469     jne short 02d17h                          ; 75 06
     3464    jne short 02cf7h                          ; 75 06
    34703465    xor cl, cl                                ; 30 c9
    34713466    mov CH, strict byte 017h                  ; b5 17
    3472     jmp short 02cfch                          ; eb e5
     3467    jmp short 02cdch                          ; eb e5
    34733468    cmp cl, 004h                              ; 80 f9 04
    3474     jne short 02d22h                          ; 75 06
     3469    jne short 02d02h                          ; 75 06
    34753470    xor cl, cl                                ; 30 c9
    34763471    mov CH, strict byte 017h                  ; b5 17
    3477     jmp short 02cfch                          ; eb da
     3472    jmp short 02cdch                          ; eb da
    34783473    cmp cl, 005h                              ; 80 f9 05
    3479     jne short 02d2dh                          ; 75 06
     3474    jne short 02d0dh                          ; 75 06
    34803475    mov CL, strict byte 0cch                  ; b1 cc
    34813476    mov CH, strict byte 0d7h                  ; b5 d7
    3482     jmp short 02cfch                          ; eb cf
     3477    jmp short 02cdch                          ; eb cf
    34833478    cmp cl, 006h                              ; 80 f9 06
    3484     jne short 02d38h                          ; 75 06
     3479    jne short 02d18h                          ; 75 06
    34853480    xor cl, cl                                ; 30 c9
    34863481    mov CH, strict byte 027h                  ; b5 27
    3487     jmp short 02cfch                          ; eb c4
     3482    jmp short 02cdch                          ; eb c4
    34883483    cmp cl, 007h                              ; 80 f9 07
    3489     jne short 02d3fh                          ; 75 02
    3490     jmp short 02d32h                          ; eb f3
     3484    jne short 02d1fh                          ; 75 02
     3485    jmp short 02d12h                          ; eb f3
    34913486    cmp cl, 008h                              ; 80 f9 08
    3492     jne short 02d46h                          ; 75 02
    3493     jmp short 02d32h                          ; eb ec
     3487    jne short 02d26h                          ; 75 02
     3488    jmp short 02d12h                          ; eb ec
    34943489    xor cl, cl                                ; 30 c9
    34953490    xor ch, ch                                ; 30 ed
     
    34983493    mov dx, 0008bh                            ; ba 8b 00
    34993494    mov ax, strict word 00040h                ; b8 40 00
    3500     call 0160eh                               ; e8 b6 e8
     3495    call 0160eh                               ; e8 d6 e8
    35013496    mov ax, di                                ; 89 f8
    3502     call 02c20h                               ; e8 c3 fe
     3497    call 02c00h                               ; e8 c3 fe
    35033498    test ax, ax                               ; 85 c0
    3504     jne short 02d93h                          ; 75 32
     3499    jne short 02d73h                          ; 75 32
    35053500    mov al, cl                                ; 88 c8
    35063501    and AL, strict byte 0c0h                  ; 24 c0
    35073502    cmp AL, strict byte 080h                  ; 3c 80
    3508     je short 02d93h                           ; 74 2a
     3503    je short 02d73h                           ; 74 2a
    35093504    mov al, cl                                ; 88 c8
    35103505    and AL, strict byte 0c0h                  ; 24 c0
    35113506    cmp AL, strict byte 0c0h                  ; 3c c0
    3512     je short 02d80h                           ; 74 0f
     3507    je short 02d60h                           ; 74 0f
    35133508    mov ah, cl                                ; 88 cc
    35143509    and ah, 03fh                              ; 80 e4 3f
    35153510    cmp AL, strict byte 040h                  ; 3c 40
    3516     je short 02d8ch                           ; 74 12
     3511    je short 02d6ch                           ; 74 12
    35173512    test al, al                               ; 84 c0
    3518     je short 02d85h                           ; 74 07
    3519     jmp short 02d4ch                          ; eb cc
     3513    je short 02d65h                           ; 74 07
     3514    jmp short 02d2ch                          ; eb cc
    35203515    and cl, 03fh                              ; 80 e1 3f
    3521     jmp short 02d4ch                          ; eb c7
     3516    jmp short 02d2ch                          ; eb c7
    35223517    mov cl, ah                                ; 88 e1
    35233518    or cl, 040h                               ; 80 c9 40
    3524     jmp short 02d4ch                          ; eb c0
     3519    jmp short 02d2ch                          ; eb c0
    35253520    mov cl, ah                                ; 88 e1
    35263521    or cl, 080h                               ; 80 c9 80
    3527     jmp short 02d4ch                          ; eb b9
     3522    jmp short 02d2ch                          ; eb b9
    35283523    test di, di                               ; 85 ff
    35293524    db  00fh, 095h, 0c0h
     
    35343529    mov dx, 0008bh                            ; ba 8b 00
    35353530    mov ax, strict word 00040h                ; b8 40 00
    3536     call 0160eh                               ; e8 63 e8
     3531    call 0160eh                               ; e8 83 e8
    35373532    movzx bx, ch                              ; 0f b6 dd
    35383533    mov dx, di                                ; 89 fa
    35393534    mov ax, strict word 00040h                ; b8 40 00
    3540     call 0160eh                               ; e8 58 e8
     3535    call 0160eh                               ; e8 78 e8
    35413536    mov cx, si                                ; 89 f1
    35423537    mov ax, cx                                ; 89 c8
     
    35483543    pop bx                                    ; 5b
    35493544    retn                                      ; c3
    3550 floppy_drive_exists_:                        ; 0xf2dc1 LB 0x33
     3545floppy_drive_exists_:                        ; 0xf2da1 LB 0x33
    35513546    push dx                                   ; 52
    35523547    push bp                                   ; 55
     
    35543549    mov dx, ax                                ; 89 c2
    35553550    mov ax, strict word 00010h                ; b8 10 00
    3556     call 0165ch                               ; e8 8f e8
     3551    call 0165ch                               ; e8 af e8
    35573552    test dx, dx                               ; 85 d2
    3558     jne short 02dd6h                          ; 75 05
     3553    jne short 02db6h                          ; 75 05
    35593554    shr al, 004h                              ; c0 e8 04
    3560     jmp short 02dd8h                          ; eb 02
     3555    jmp short 02db8h                          ; eb 02
    35613556    and AL, strict byte 00fh                  ; 24 0f
    35623557    test al, al                               ; 84 c0
     
    35673562    pop dx                                    ; 5a
    35683563    retn                                      ; c3
    3569     test AL, strict byte 034h                 ; a8 34
    3570     mov BL, strict byte 034h                  ; b3 34
    3571     mov bp, 0c434h                            ; bd 34 c4
    3572     xor AL, strict byte 0cbh                  ; 34 cb
    3573     xor AL, strict byte 0d2h                  ; 34 d2
    3574     xor AL, strict byte 0d9h                  ; 34 d9
    3575     xor AL, strict byte 0e3h                  ; 34 e3
    3576     xor AL, strict byte 0eah                  ; 34 ea
     3564    mov byte [si], dh                         ; 88 34
     3565    xchg bx, ax                               ; 93
     3566    xor AL, strict byte 09dh                  ; 34 9d
     3567    xor AL, strict byte 0a4h                  ; 34 a4
     3568    xor AL, strict byte 0abh                  ; 34 ab
     3569    xor AL, strict byte 0b2h                  ; 34 b2
     3570    xor AL, strict byte 0b9h                  ; 34 b9
     3571    xor AL, strict byte 0c3h                  ; 34 c3
     3572    xor AL, strict byte 0cah                  ; 34 ca
    35773573    db  034h
    3578 _int13_diskette_function:                    ; 0xf2df4 LB 0x799
     3574_int13_diskette_function:                    ; 0xf2dd4 LB 0x799
    35793575    push si                                   ; 56
    35803576    push di                                   ; 57
     
    35873583    mov ah, byte [bp+012h]                    ; 8a 66 12
    35883584    cmp bl, 008h                              ; 80 fb 08
    3589     jc short 02e4bh                           ; 72 3a
     3585    jc short 02e2bh                           ; 72 3a
    35903586    mov dx, word [bp+020h]                    ; 8b 56 20
    35913587    or dl, 001h                               ; 80 ca 01
    35923588    cmp bl, 008h                              ; 80 fb 08
    3593     jbe near 03429h                           ; 0f 86 0b 06
     3589    jbe near 03409h                           ; 0f 86 0b 06
    35943590    cmp bl, 016h                              ; 80 fb 16
    3595     jc short 02e41h                           ; 72 1e
     3591    jc short 02e21h                           ; 72 1e
    35963592    or si, 00100h                             ; 81 ce 00 01
    35973593    mov cx, si                                ; 89 f1
    35983594    cmp bl, 016h                              ; 80 fb 16
    3599     jbe near 03548h                           ; 0f 86 18 07
     3595    jbe near 03528h                           ; 0f 86 18 07
    36003596    cmp bl, 018h                              ; 80 fb 18
    3601     je near 0354dh                            ; 0f 84 16 07
     3597    je near 0352dh                            ; 0f 84 16 07
    36023598    cmp bl, 017h                              ; 80 fb 17
    3603     je near 0354dh                            ; 0f 84 0f 07
    3604     jmp near 0356ah                           ; e9 29 07
     3599    je near 0352dh                            ; 0f 84 0f 07
     3600    jmp near 0354ah                           ; e9 29 07
    36053601    cmp bl, 015h                              ; 80 fb 15
    3606     je near 0350ch                            ; 0f 84 c4 06
    3607     jmp near 0356ah                           ; e9 1f 07
     3602    je near 034ech                            ; 0f 84 c4 06
     3603    jmp near 0354ah                           ; e9 1f 07
    36083604    cmp bl, 001h                              ; 80 fb 01
    3609     jc short 02e65h                           ; 72 15
    3610     jbe near 02edbh                           ; 0f 86 87 00
     3605    jc short 02e45h                           ; 72 15
     3606    jbe near 02ebbh                           ; 0f 86 87 00
    36113607    cmp bl, 005h                              ; 80 fb 05
    3612     je near 03282h                            ; 0f 84 27 04
     3608    je near 03262h                            ; 0f 84 27 04
    36133609    cmp bl, 004h                              ; 80 fb 04
    3614     jbe near 02ef9h                           ; 0f 86 97 00
    3615     jmp near 0356ah                           ; e9 05 07
     3610    jbe near 02ed9h                           ; 0f 86 97 00
     3611    jmp near 0354ah                           ; e9 05 07
    36163612    test bl, bl                               ; 84 db
    3617     jne near 0356ah                           ; 0f 85 ff 06
     3613    jne near 0354ah                           ; 0f 85 ff 06
    36183614    mov al, byte [bp+012h]                    ; 8a 46 12
    36193615    mov byte [bp-00ah], al                    ; 88 46 f6
    36203616    cmp AL, strict byte 001h                  ; 3c 01
    3621     jbe short 02e89h                          ; 76 14
     3617    jbe short 02e69h                          ; 76 14
    36223618    mov ax, word [bp+01ah]                    ; 8b 46 1a
    36233619    xor ah, ah                                ; 30 e4
     
    36253621    mov word [bp+01ah], ax                    ; 89 46 1a
    36263622    mov ax, strict word 00001h                ; b8 01 00
    3627     call 02aedh                               ; e8 67 fc
    3628     jmp near 03254h                           ; e9 cb 03
     3623    call 02acdh                               ; e8 67 fc
     3624    jmp near 03234h                           ; e9 cb 03
    36293625    mov ax, strict word 00010h                ; b8 10 00
    3630     call 0165ch                               ; e8 cd e7
     3626    call 0165ch                               ; e8 ed e7
    36313627    cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
    3632     jne short 02e9ch                          ; 75 07
     3628    jne short 02e7ch                          ; 75 07
    36333629    mov bl, al                                ; 88 c3
    36343630    shr bl, 004h                              ; c0 eb 04
    3635     jmp short 02ea1h                          ; eb 05
     3631    jmp short 02e81h                          ; eb 05
    36363632    mov bl, al                                ; 88 c3
    36373633    and bl, 00fh                              ; 80 e3 0f
    36383634    test bl, bl                               ; 84 db
    3639     jne short 02eb5h                          ; 75 10
     3635    jne short 02e95h                          ; 75 10
    36403636    mov ax, word [bp+01ah]                    ; 8b 46 1a
    36413637    xor ah, ah                                ; 30 e4
     
    36433639    mov word [bp+01ah], ax                    ; 89 46 1a
    36443640    mov ax, 00080h                            ; b8 80 00
    3645     jmp short 02e83h                          ; eb ce
     3641    jmp short 02e63h                          ; eb ce
    36463642    xor bx, bx                                ; 31 db
    36473643    mov dx, strict word 0003eh                ; ba 3e 00
    36483644    mov ax, strict word 00040h                ; b8 40 00
    3649     call 0160eh                               ; e8 4e e7
     3645    call 0160eh                               ; e8 6e e7
    36503646    xor al, al                                ; 30 c0
    36513647    mov byte [bp+01bh], al                    ; 88 46 1b
    36523648    xor ah, ah                                ; 30 e4
    3653     call 02aedh                               ; e8 23 fc
     3649    call 02acdh                               ; e8 23 fc
    36543650    and byte [bp+020h], 0feh                  ; 80 66 20 fe
    36553651    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    36563652    xor dx, dx                                ; 31 d2
    3657     call 02b02h                               ; e8 2b fc
     3653    call 02ae2h                               ; e8 2b fc
    36583654    leave                                     ; c9
    36593655    pop di                                    ; 5f
     
    36633659    mov dx, 00441h                            ; ba 41 04
    36643660    xor ax, ax                                ; 31 c0
    3665     call 01600h                               ; e8 19 e7
     3661    call 01600h                               ; e8 39 e7
    36663662    movzx dx, al                              ; 0f b6 d0
    36673663    sal dx, 008h                              ; c1 e2 08
     
    36693665    mov word [bp+01ah], si                    ; 89 76 1a
    36703666    test al, al                               ; 84 c0
    3671     je short 02ed7h                           ; 74 e1
    3672     jmp near 03254h                           ; e9 5b 03
     3667    je short 02eb7h                           ; 74 e1
     3668    jmp near 03234h                           ; e9 5b 03
    36733669    mov al, byte [bp+01ah]                    ; 8a 46 1a
    36743670    mov byte [bp-008h], al                    ; 88 46 f8
     
    36833679    mov byte [bp-00ah], ah                    ; 88 66 f6
    36843680    cmp ah, 001h                              ; 80 fc 01
    3685     jnbe short 02f2fh                         ; 77 10
     3681    jnbe short 02f0fh                         ; 77 10
    36863682    cmp dl, 001h                              ; 80 fa 01
    3687     jnbe short 02f2fh                         ; 77 0b
     3683    jnbe short 02f0fh                         ; 77 0b
    36883684    mov al, byte [bp-008h]                    ; 8a 46 f8
    36893685    test al, al                               ; 84 c0
    3690     je short 02f2fh                           ; 74 04
     3686    je short 02f0fh                           ; 74 04
    36913687    cmp AL, strict byte 048h                  ; 3c 48
    3692     jbe short 02f58h                          ; 76 29
    3693     mov bx, 00cd6h                            ; bb d6 0c
     3688    jbe short 02f38h                          ; 76 29
     3689    mov bx, 00cech                            ; bb ec 0c
    36943690    mov cx, ds                                ; 8c d9
    36953691    mov ax, strict word 00004h                ; b8 04 00
    3696     call 018aeh                               ; e8 74 e9
     3692    call 018aeh                               ; e8 94 e9
    36973693    push 001d5h                               ; 68 d5 01
    36983694    push 001edh                               ; 68 ed 01
    36993695    push strict byte 00004h                   ; 6a 04
    3700     call 018e9h                               ; e8 a4 e9
     3696    call 018e9h                               ; e8 c4 e9
    37013697    add sp, strict byte 00006h                ; 83 c4 06
    37023698    mov ax, word [bp+01ah]                    ; 8b 46 1a
     
    37053701    mov word [bp+01ah], ax                    ; 89 46 1a
    37063702    mov ax, strict word 00001h                ; b8 01 00
    3707     jmp short 02fc9h                          ; eb 71
     3703    jmp short 02fa9h                          ; eb 71
    37083704    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3709     call 02dc1h                               ; e8 62 fe
     3705    call 02da1h                               ; e8 62 fe
    37103706    test ax, ax                               ; 85 c0
    3711     je near 03062h                            ; 0f 84 fd 00
     3707    je near 03042h                            ; 0f 84 fd 00
    37123708    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
    37133709    mov ax, dx                                ; 89 d0
    3714     call 02be0h                               ; e8 72 fc
     3710    call 02bc0h                               ; e8 72 fc
    37153711    test ax, ax                               ; 85 c0
    3716     jne short 02f8bh                          ; 75 19
     3712    jne short 02f6bh                          ; 75 19
    37173713    mov ax, dx                                ; 89 d0
    3718     call 02cc7h                               ; e8 50 fd
     3714    call 02ca7h                               ; e8 50 fd
    37193715    test ax, ax                               ; 85 c0
    3720     jne short 02f8bh                          ; 75 10
     3716    jne short 02f6bh                          ; 75 10
    37213717    mov ax, word [bp+01ah]                    ; 8b 46 1a
    37223718    xor ah, ah                                ; 30 e4
     
    37243720    mov word [bp+01ah], ax                    ; 89 46 1a
    37253721    mov ax, strict word 0000ch                ; b8 0c 00
    3726     jmp short 02fc9h                          ; eb 3e
     3722    jmp short 02fa9h                          ; eb 3e
    37273723    cmp ch, 002h                              ; 80 fd 02
    3728     jne near 03120h                           ; 0f 85 8e 01
     3724    jne near 03100h                           ; 0f 85 8e 01
    37293725    mov dx, word [bp+00ah]                    ; 8b 56 0a
    37303726    shr dx, 00ch                              ; c1 ea 0c
     
    37353731    add bx, cx                                ; 01 cb
    37363732    cmp bx, cx                                ; 39 cb
    3737     jnc short 02fabh                          ; 73 02
     3733    jnc short 02f8bh                          ; 73 02
    37383734    db  0feh, 0c4h
    37393735    ; inc ah                                    ; fe c4
     
    37443740    add dx, cx                                ; 01 ca
    37453741    cmp dx, bx                                ; 39 da
    3746     jnc short 02fd3h                          ; 73 18
     3742    jnc short 02fb3h                          ; 73 18
    37473743    mov ax, word [bp+01ah]                    ; 8b 46 1a
    37483744    xor ah, ah                                ; 30 e4
     
    37503746    mov word [bp+01ah], ax                    ; 89 46 1a
    37513747    mov ax, strict word 00009h                ; b8 09 00
    3752     call 02aedh                               ; e8 21 fb
     3748    call 02acdh                               ; e8 21 fb
    37533749    mov byte [bp+01ah], 000h                  ; c6 46 1a 00
    3754     jmp near 03254h                           ; e9 81 02
     3750    jmp near 03234h                           ; e9 81 02
    37553751    mov AL, strict byte 006h                  ; b0 06
    37563752    mov dx, strict word 0000ah                ; ba 0a 00
     
    37853781    out DX, AL                                ; ee
    37863782    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3787     call 02b54h                               ; e8 3d fb
     3783    call 02b34h                               ; e8 3d fb
    37883784    mov AL, strict byte 0e6h                  ; b0 e6
    37893785    mov dx, 003f5h                            ; ba f5 03
     
    38163812    mov dx, strict word 00040h                ; ba 40 00
    38173813    mov ax, dx                                ; 89 d0
    3818     call 01600h                               ; e8 a5 e5
     3814    call 01600h                               ; e8 c5 e5
    38193815    test al, al                               ; 84 c0
    3820     jne short 03073h                          ; 75 14
    3821     call 02b2ch                               ; e8 ca fa
     3816    jne short 03053h                          ; 75 14
     3817    call 02b0ch                               ; e8 ca fa
    38223818    mov ax, word [bp+01ah]                    ; 8b 46 1a
    38233819    xor ah, ah                                ; 30 e4
     
    38253821    mov word [bp+01ah], ax                    ; 89 46 1a
    38263822    mov ax, 00080h                            ; b8 80 00
    3827     jmp near 02fc9h                           ; e9 56 ff
     3823    jmp near 02fa9h                           ; e9 56 ff
    38283824    mov dx, strict word 0003eh                ; ba 3e 00
    38293825    mov ax, strict word 00040h                ; b8 40 00
    3830     call 01600h                               ; e8 84 e5
     3826    call 01600h                               ; e8 a4 e5
    38313827    and AL, strict byte 080h                  ; 24 80
    38323828    test al, al                               ; 84 c0
    3833     je short 03053h                           ; 74 d1
     3829    je short 03033h                           ; 74 d1
    38343830    cli                                       ; fa
    38353831    mov dx, strict word 0003eh                ; ba 3e 00
    38363832    mov ax, strict word 00040h                ; b8 40 00
    3837     call 01600h                               ; e8 74 e5
     3833    call 01600h                               ; e8 94 e5
    38383834    and AL, strict byte 07fh                  ; 24 7f
    38393835    movzx bx, al                              ; 0f b6 d8
    38403836    mov dx, strict word 0003eh                ; ba 3e 00
    38413837    mov ax, strict word 00040h                ; b8 40 00
    3842     call 0160eh                               ; e8 74 e5
     3838    call 0160eh                               ; e8 94 e5
    38433839    mov dx, 003f4h                            ; ba f4 03
    38443840    in AL, DX                                 ; ec
     
    38473843    and AL, strict byte 0c0h                  ; 24 c0
    38483844    cmp AL, strict byte 0c0h                  ; 3c c0
    3849     je short 030b4h                           ; 74 0e
     3845    je short 03094h                           ; 74 0e
    38503846    push 001d5h                               ; 68 d5 01
    38513847    push 00208h                               ; 68 08 02
    38523848    push strict byte 00007h                   ; 6a 07
    3853     call 018e9h                               ; e8 38 e8
     3849    call 018e9h                               ; e8 58 e8
    38543850    add sp, strict byte 00006h                ; 83 c4 06
    38553851    xor si, si                                ; 31 f6
    3856     jmp short 030bdh                          ; eb 05
     3852    jmp short 0309dh                          ; eb 05
    38573853    cmp si, strict byte 00007h                ; 83 fe 07
    3858     jnl short 030d5h                          ; 7d 18
     3854    jnl short 030b5h                          ; 7d 18
    38593855    mov dx, 003f5h                            ; ba f5 03
    38603856    in AL, DX                                 ; ec
     
    38653861    lea dx, [si+042h]                         ; 8d 54 42
    38663862    mov ax, strict word 00040h                ; b8 40 00
    3867     call 0160eh                               ; e8 3c e5
     3863    call 0160eh                               ; e8 5c e5
    38683864    inc si                                    ; 46
    3869     jmp short 030b8h                          ; eb e3
     3865    jmp short 03098h                          ; eb e3
    38703866    test byte [bp-012h], 0c0h                 ; f6 46 ee c0
    3871     je short 030ech                           ; 74 11
     3867    je short 030cch                           ; 74 11
    38723868    mov ax, word [bp+01ah]                    ; 8b 46 1a
    38733869    xor ah, ah                                ; 30 e4
     
    38753871    mov word [bp+01ah], ax                    ; 89 46 1a
    38763872    mov ax, strict word 00020h                ; b8 20 00
    3877     jmp near 02fc9h                           ; e9 dd fe
     3873    jmp near 02fa9h                           ; e9 dd fe
    38783874    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    38793875    sal ax, 009h                              ; c1 e0 09
     
    38933889    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    38943890    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3895     call 02b02h                               ; e8 ed f9
     3891    call 02ae2h                               ; e8 ed f9
    38963892    mov byte [bp+01bh], 000h                  ; c6 46 1b 00
    38973893    and byte [bp+020h], 0feh                  ; 80 66 20 fe
    3898     jmp near 02ed7h                           ; e9 b7 fd
     3894    jmp near 02eb7h                           ; e9 b7 fd
    38993895    cmp ch, 003h                              ; 80 fd 03
    3900     jne near 0326ch                           ; 0f 85 45 01
     3896    jne near 0324ch                           ; 0f 85 45 01
    39013897    mov dx, word [bp+00ah]                    ; 8b 56 0a
    39023898    shr dx, 00ch                              ; c1 ea 0c
     
    39073903    add bx, cx                                ; 01 cb
    39083904    cmp bx, cx                                ; 39 cb
    3909     jnc short 03140h                          ; 73 02
     3905    jnc short 03120h                          ; 73 02
    39103906    db  0feh, 0c4h
    39113907    ; inc ah                                    ; fe c4
     
    39163912    add dx, cx                                ; 01 ca
    39173913    cmp dx, bx                                ; 39 da
    3918     jc near 02fbbh                            ; 0f 82 69 fe
     3914    jc near 02f9bh                            ; 0f 82 69 fe
    39193915    mov AL, strict byte 006h                  ; b0 06
    39203916    mov dx, strict word 0000ah                ; ba 0a 00
     
    39483944    out DX, AL                                ; ee
    39493945    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    3950     call 02b54h                               ; e8 bf f9
     3946    call 02b34h                               ; e8 bf f9
    39513947    mov AL, strict byte 0c5h                  ; b0 c5
    39523948    mov dx, 003f5h                            ; ba f5 03
     
    39793975    mov dx, strict word 00040h                ; ba 40 00
    39803976    mov ax, dx                                ; 89 d0
    3981     call 01600h                               ; e8 27 e4
     3977    call 01600h                               ; e8 47 e4
    39823978    test al, al                               ; 84 c0
    3983     je near 0305fh                            ; 0f 84 80 fe
     3979    je near 0303fh                            ; 0f 84 80 fe
    39843980    mov dx, strict word 0003eh                ; ba 3e 00
    39853981    mov ax, strict word 00040h                ; b8 40 00
    3986     call 01600h                               ; e8 18 e4
     3982    call 01600h                               ; e8 38 e4
    39873983    and AL, strict byte 080h                  ; 24 80
    39883984    test al, al                               ; 84 c0
    3989     je short 031d1h                           ; 74 e3
     3985    je short 031b1h                           ; 74 e3
    39903986    cli                                       ; fa
    39913987    mov dx, strict word 0003eh                ; ba 3e 00
    39923988    mov ax, strict word 00040h                ; b8 40 00
    3993     call 01600h                               ; e8 08 e4
     3989    call 01600h                               ; e8 28 e4
    39943990    and AL, strict byte 07fh                  ; 24 7f
    39953991    movzx bx, al                              ; 0f b6 d8
    39963992    mov dx, strict word 0003eh                ; ba 3e 00
    39973993    mov ax, strict word 00040h                ; b8 40 00
    3998     call 0160eh                               ; e8 08 e4
     3994    call 0160eh                               ; e8 28 e4
    39993995    mov dx, 003f4h                            ; ba f4 03
    40003996    in AL, DX                                 ; ec
     
    40033999    and AL, strict byte 0c0h                  ; 24 c0
    40044000    cmp AL, strict byte 0c0h                  ; 3c c0
    4005     je short 03220h                           ; 74 0e
     4001    je short 03200h                           ; 74 0e
    40064002    push 001d5h                               ; 68 d5 01
    40074003    push 00208h                               ; 68 08 02
    40084004    push strict byte 00007h                   ; 6a 07
    4009     call 018e9h                               ; e8 cc e6
     4005    call 018e9h                               ; e8 ec e6
    40104006    add sp, strict byte 00006h                ; 83 c4 06
    40114007    xor si, si                                ; 31 f6
    4012     jmp short 03229h                          ; eb 05
     4008    jmp short 03209h                          ; eb 05
    40134009    cmp si, strict byte 00007h                ; 83 fe 07
    4014     jnl short 03241h                          ; 7d 18
     4010    jnl short 03221h                          ; 7d 18
    40154011    mov dx, 003f5h                            ; ba f5 03
    40164012    in AL, DX                                 ; ec
     
    40214017    lea dx, [si+042h]                         ; 8d 54 42
    40224018    mov ax, strict word 00040h                ; b8 40 00
    4023     call 0160eh                               ; e8 d0 e3
     4019    call 0160eh                               ; e8 f0 e3
    40244020    inc si                                    ; 46
    4025     jmp short 03224h                          ; eb e3
     4021    jmp short 03204h                          ; eb e3
    40264022    test byte [bp-012h], 0c0h                 ; f6 46 ee c0
    4027     je near 0310ah                            ; 0f 84 c1 fe
     4023    je near 030eah                            ; 0f 84 c1 fe
    40284024    test byte [bp-011h], 002h                 ; f6 46 ef 02
    4029     je short 0325bh                           ; 74 0c
     4025    je short 0323bh                           ; 74 0c
    40304026    mov word [bp+01ah], 00300h                ; c7 46 1a 00 03
    40314027    or byte [bp+020h], 001h                   ; 80 4e 20 01
    4032     jmp near 02ed7h                           ; e9 7c fc
     4028    jmp near 02eb7h                           ; e9 7c fc
    40334029    push 001d5h                               ; 68 d5 01
    40344030    push 0021ch                               ; 68 1c 02
    40354031    push strict byte 00007h                   ; 6a 07
    4036     call 018e9h                               ; e8 83 e6
     4032    call 018e9h                               ; e8 a3 e6
    40374033    add sp, strict byte 00006h                ; 83 c4 06
    4038     jmp near 0310ah                           ; e9 9e fe
     4034    jmp near 030eah                           ; e9 9e fe
    40394035    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    40404036    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    4041     call 02b02h                               ; e8 8b f8
     4037    call 02ae2h                               ; e8 8b f8
    40424038    and byte [bp+020h], 0feh                  ; 80 66 20 fe
    40434039    mov byte [bp+01bh], 000h                  ; c6 46 1b 00
    4044     jmp near 02ed7h                           ; e9 55 fc
     4040    jmp near 02eb7h                           ; e9 55 fc
    40454041    mov al, byte [bp+01ah]                    ; 8a 46 1a
    40464042    mov byte [bp-008h], al                    ; 88 46 f8
     
    40534049    mov byte [bp-00ah], bl                    ; 88 5e f6
    40544050    cmp bl, 001h                              ; 80 fb 01
    4055     jnbe short 032b6h                         ; 77 14
     4051    jnbe short 03296h                         ; 77 14
    40564052    cmp AL, strict byte 001h                  ; 3c 01
    4057     jnbe short 032b6h                         ; 77 10
     4053    jnbe short 03296h                         ; 77 10
    40584054    cmp dl, 04fh                              ; 80 fa 4f
    4059     jnbe short 032b6h                         ; 77 0b
     4055    jnbe short 03296h                         ; 77 0b
    40604056    mov al, byte [bp-008h]                    ; 8a 46 f8
    40614057    test al, al                               ; 84 c0
    4062     je short 032b6h                           ; 74 04
     4058    je short 03296h                           ; 74 04
    40634059    cmp AL, strict byte 012h                  ; 3c 12
    4064     jbe short 032cbh                          ; 76 15
     4060    jbe short 032abh                          ; 76 15
    40654061    mov ax, word [bp+01ah]                    ; 8b 46 1a
    40664062    xor ah, ah                                ; 30 e4
     
    40684064    mov word [bp+01ah], ax                    ; 89 46 1a
    40694065    mov ax, strict word 00001h                ; b8 01 00
    4070     call 02aedh                               ; e8 26 f8
     4066    call 02acdh                               ; e8 26 f8
    40714067    or byte [bp+020h], 001h                   ; 80 4e 20 01
    40724068    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    4073     call 02dc1h                               ; e8 ef fa
     4069    call 02da1h                               ; e8 ef fa
    40744070    test ax, ax                               ; 85 c0
    4075     je near 02ea5h                            ; 0f 84 cd fb
     4071    je near 02e85h                            ; 0f 84 cd fb
    40764072    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
    40774073    mov ax, dx                                ; 89 d0
    4078     call 02be0h                               ; e8 ff f8
     4074    call 02bc0h                               ; e8 ff f8
    40794075    test ax, ax                               ; 85 c0
    4080     jne short 032f0h                          ; 75 0b
     4076    jne short 032d0h                          ; 75 0b
    40814077    mov ax, dx                                ; 89 d0
    4082     call 02cc7h                               ; e8 dd f9
     4078    call 02ca7h                               ; e8 dd f9
    40834079    test ax, ax                               ; 85 c0
    4084     je near 02f7bh                            ; 0f 84 8b fc
     4080    je near 02f5bh                            ; 0f 84 8b fc
    40854081    mov dx, word [bp+00ah]                    ; 8b 56 0a
    40864082    shr dx, 00ch                              ; c1 ea 0c
     
    40914087    add bx, cx                                ; 01 cb
    40924088    cmp bx, cx                                ; 39 cb
    4093     jnc short 03309h                          ; 73 02
     4089    jnc short 032e9h                          ; 73 02
    40944090    db  0feh, 0c4h
    40954091    ; inc ah                                    ; fe c4
     
    41004096    add dx, cx                                ; 01 ca
    41014097    cmp dx, bx                                ; 39 da
    4102     jc near 02fbbh                            ; 0f 82 a0 fc
     4098    jc near 02f9bh                            ; 0f 82 a0 fc
    41034099    mov AL, strict byte 006h                  ; b0 06
    41044100    mov dx, strict word 0000ah                ; ba 0a 00
     
    41324128    out DX, AL                                ; ee
    41334129    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    4134     call 02b54h                               ; e8 f6 f7
     4130    call 02b34h                               ; e8 f6 f7
    41354131    mov AL, strict byte 04dh                  ; b0 4d
    41364132    mov dx, 003f5h                            ; ba f5 03
     
    41534149    mov dx, strict word 00040h                ; ba 40 00
    41544150    mov ax, dx                                ; 89 d0
    4155     call 01600h                               ; e8 75 e2
     4151    call 01600h                               ; e8 95 e2
    41564152    test al, al                               ; 84 c0
    4157     jne short 03395h                          ; 75 06
    4158     call 02b2ch                               ; e8 9a f7
    4159     jmp near 02ea5h                           ; e9 10 fb
     4153    jne short 03375h                          ; 75 06
     4154    call 02b0ch                               ; e8 9a f7
     4155    jmp near 02e85h                           ; e9 10 fb
    41604156    mov dx, strict word 0003eh                ; ba 3e 00
    41614157    mov ax, strict word 00040h                ; b8 40 00
    4162     call 01600h                               ; e8 62 e2
     4158    call 01600h                               ; e8 82 e2
    41634159    and AL, strict byte 080h                  ; 24 80
    41644160    test al, al                               ; 84 c0
    4165     je short 03383h                           ; 74 df
     4161    je short 03363h                           ; 74 df
    41664162    cli                                       ; fa
    41674163    mov dx, strict word 0003eh                ; ba 3e 00
    41684164    mov ax, strict word 00040h                ; b8 40 00
    4169     call 01600h                               ; e8 52 e2
     4165    call 01600h                               ; e8 72 e2
    41704166    and AL, strict byte 07fh                  ; 24 7f
    41714167    movzx bx, al                              ; 0f b6 d8
    41724168    mov dx, strict word 0003eh                ; ba 3e 00
    41734169    mov ax, strict word 00040h                ; b8 40 00
    4174     call 0160eh                               ; e8 52 e2
     4170    call 0160eh                               ; e8 72 e2
    41754171    mov dx, 003f4h                            ; ba f4 03
    41764172    in AL, DX                                 ; ec
     
    41794175    and AL, strict byte 0c0h                  ; 24 c0
    41804176    cmp AL, strict byte 0c0h                  ; 3c c0
    4181     je short 033d6h                           ; 74 0e
     4177    je short 033b6h                           ; 74 0e
    41824178    push 001d5h                               ; 68 d5 01
    41834179    push 00208h                               ; 68 08 02
    41844180    push strict byte 00007h                   ; 6a 07
    4185     call 018e9h                               ; e8 16 e5
     4181    call 018e9h                               ; e8 36 e5
    41864182    add sp, strict byte 00006h                ; 83 c4 06
    41874183    xor si, si                                ; 31 f6
    4188     jmp short 033dfh                          ; eb 05
     4184    jmp short 033bfh                          ; eb 05
    41894185    cmp si, strict byte 00007h                ; 83 fe 07
    4190     jnl short 033f7h                          ; 7d 18
     4186    jnl short 033d7h                          ; 7d 18
    41914187    mov dx, 003f5h                            ; ba f5 03
    41924188    in AL, DX                                 ; ec
     
    41974193    lea dx, [si+042h]                         ; 8d 54 42
    41984194    mov ax, strict word 00040h                ; b8 40 00
    4199     call 0160eh                               ; e8 1a e2
     4195    call 0160eh                               ; e8 3a e2
    42004196    inc si                                    ; 46
    4201     jmp short 033dah                          ; eb e3
     4197    jmp short 033bah                          ; eb e3
    42024198    test byte [bp-012h], 0c0h                 ; f6 46 ee c0
    4203     je short 03413h                           ; 74 16
     4199    je short 033f3h                           ; 74 16
    42044200    test byte [bp-011h], 002h                 ; f6 46 ef 02
    4205     jne near 0324fh                           ; 0f 85 4a fe
     4201    jne near 0322fh                           ; 0f 85 4a fe
    42064202    push 001d5h                               ; 68 d5 01
    42074203    push 0022ch                               ; 68 2c 02
    42084204    push strict byte 00007h                   ; 6a 07
    4209     call 018e9h                               ; e8 d9 e4
     4205    call 018e9h                               ; e8 f9 e4
    42104206    add sp, strict byte 00006h                ; 83 c4 06
    42114207    xor al, al                                ; 30 c0
    42124208    mov byte [bp+01bh], al                    ; 88 46 1b
    42134209    xor ah, ah                                ; 30 e4
    4214     call 02aedh                               ; e8 d0 f6
     4210    call 02acdh                               ; e8 d0 f6
    42154211    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    42164212    xor dx, dx                                ; 31 d2
    4217     call 02b02h                               ; e8 dc f6
    4218     jmp near 03119h                           ; e9 f0 fc
     4213    call 02ae2h                               ; e8 dc f6
     4214    jmp near 030f9h                           ; e9 f0 fc
    42194215    mov byte [bp-00ah], ah                    ; 88 66 f6
    42204216    cmp ah, 001h                              ; 80 fc 01
    4221     jbe short 03451h                          ; 76 20
     4217    jbe short 03431h                          ; 76 20
    42224218    xor ax, ax                                ; 31 c0
    42234219    mov word [bp+01ah], ax                    ; 89 46 1a
     
    42304226    mov word [bp+016h], ax                    ; 89 46 16
    42314227    mov word [bp+020h], dx                    ; 89 56 20
    4232     jmp near 02ed7h                           ; e9 86 fa
     4228    jmp near 02eb7h                           ; e9 86 fa
    42334229    mov ax, strict word 00010h                ; b8 10 00
    4234     call 0165ch                               ; e8 05 e2
     4230    call 0165ch                               ; e8 25 e2
    42354231    mov bl, al                                ; 88 c3
    42364232    xor cl, cl                                ; 30 c9
    42374233    test AL, strict byte 0f0h                 ; a8 f0
    4238     je short 03461h                           ; 74 02
     4234    je short 03441h                           ; 74 02
    42394235    mov CL, strict byte 001h                  ; b1 01
    42404236    test bl, 00fh                             ; f6 c3 0f
    4241     je short 03468h                           ; 74 02
     4237    je short 03448h                           ; 74 02
    42424238    db  0feh, 0c1h
    42434239    ; inc cl                                    ; fe c1
    42444240    cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
    4245     jne short 03473h                          ; 75 05
     4241    jne short 03453h                          ; 75 05
    42464242    shr bl, 004h                              ; c0 eb 04
    4247     jmp short 03476h                          ; eb 03
     4243    jmp short 03456h                          ; eb 03
    42484244    and bl, 00fh                              ; 80 e3 0f
    42494245    xor al, al                                ; 30 c0
     
    42594255    mov word [bp+016h], dx                    ; 89 56 16
    42604256    cmp bl, 008h                              ; 80 fb 08
    4261     jnbe short 034f1h                         ; 77 59
     4257    jnbe short 034d1h                         ; 77 59
    42624258    add si, si                                ; 01 f6
    42634259    mov ax, dx                                ; 89 d0
     
    42654261    mov bx, ax                                ; 89 c3
    42664262    or bh, 001h                               ; 80 cf 01
    4267     jmp word [cs:si+02de2h]                   ; 2e ff a4 e2 2d
     4263    jmp word [cs:si+02dc2h]                   ; 2e ff a4 c2 2d
    42684264    mov word [bp+018h], strict word 00000h    ; c7 46 18 00 00
    42694265    mov byte [bp+017h], 000h                  ; c6 46 17 00
    4270     jmp short 034ffh                          ; eb 4c
     4266    jmp short 034dfh                          ; eb 4c
    42714267    mov word [bp+018h], 02709h                ; c7 46 18 09 27
    42724268    mov word [bp+016h], bx                    ; 89 5e 16
    4273     jmp short 034ffh                          ; eb 42
     4269    jmp short 034dfh                          ; eb 42
    42744270    mov word [bp+018h], 04f0fh                ; c7 46 18 0f 4f
    4275     jmp short 034b8h                          ; eb f4
     4271    jmp short 03498h                          ; eb f4
    42764272    mov word [bp+018h], 04f09h                ; c7 46 18 09 4f
    4277     jmp short 034b8h                          ; eb ed
     4273    jmp short 03498h                          ; eb ed
    42784274    mov word [bp+018h], 04f12h                ; c7 46 18 12 4f
    4279     jmp short 034b8h                          ; eb e6
     4275    jmp short 03498h                          ; eb e6
    42804276    mov word [bp+018h], 04f24h                ; c7 46 18 24 4f
    4281     jmp short 034b8h                          ; eb df
     4277    jmp short 03498h                          ; eb df
    42824278    mov word [bp+018h], 02708h                ; c7 46 18 08 27
    42834279    mov word [bp+016h], ax                    ; 89 46 16
    4284     jmp short 034ffh                          ; eb 1c
     4280    jmp short 034dfh                          ; eb 1c
    42854281    mov word [bp+018h], 02709h                ; c7 46 18 09 27
    4286     jmp short 034deh                          ; eb f4
     4282    jmp short 034beh                          ; eb f4
    42874283    mov word [bp+018h], 02708h                ; c7 46 18 08 27
    4288     jmp short 034b8h                          ; eb c7
     4284    jmp short 03498h                          ; eb c7
    42894285    push 001d5h                               ; 68 d5 01
    42904286    push 0023dh                               ; 68 3d 02
    42914287    push strict byte 00007h                   ; 6a 07
    4292     call 018e9h                               ; e8 ed e3
     4288    call 018e9h                               ; e8 0d e4
    42934289    add sp, strict byte 00006h                ; 83 c4 06
    42944290    mov word [bp+00ah], 0f000h                ; c7 46 0a 00 f0
    42954291    mov word [bp+00ch], 0efc7h                ; c7 46 0c c7 ef
    4296     jmp near 03119h                           ; e9 0d fc
     4292    jmp near 030f9h                           ; e9 0d fc
    42974293    mov byte [bp-00ah], ah                    ; 88 66 f6
    42984294    cmp ah, 001h                              ; 80 fc 01
    4299     jbe short 0351ah                          ; 76 06
     4295    jbe short 034fah                          ; 76 06
    43004296    mov word [bp+01ah], si                    ; 89 76 1a
    4301     jmp near 0344bh                           ; e9 31 ff
     4297    jmp near 0342bh                           ; e9 31 ff
    43024298    mov ax, strict word 00010h                ; b8 10 00
    4303     call 0165ch                               ; e8 3c e1
     4299    call 0165ch                               ; e8 5c e1
    43044300    cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
    4305     jne short 0352dh                          ; 75 07
     4301    jne short 0350dh                          ; 75 07
    43064302    mov bl, al                                ; 88 c3
    43074303    shr bl, 004h                              ; c0 eb 04
    4308     jmp short 03532h                          ; eb 05
     4304    jmp short 03512h                          ; eb 05
    43094305    mov bl, al                                ; 88 c3
    43104306    and bl, 00fh                              ; 80 e3 0f
     
    43134309    xor ah, ah                                ; 30 e4
    43144310    test bl, bl                               ; 84 db
    4315     je short 03542h                           ; 74 03
     4311    je short 03522h                           ; 74 03
    43164312    or ah, 001h                               ; 80 cc 01
    43174313    mov word [bp+01ah], ax                    ; 89 46 1a
    4318     jmp near 02ed7h                           ; e9 8f f9
     4314    jmp near 02eb7h                           ; e9 8f f9
    43194315    cmp ah, 001h                              ; 80 fc 01
    4320     jbe short 03559h                          ; 76 0c
     4316    jbe short 03539h                          ; 76 0c
    43214317    mov word [bp+01ah], si                    ; 89 76 1a
    43224318    mov ax, strict word 00001h                ; b8 01 00
    4323     call 02aedh                               ; e8 97 f5
    4324     jmp near 0344bh                           ; e9 f2 fe
     4319    call 02acdh                               ; e8 97 f5
     4320    jmp near 0342bh                           ; e9 f2 fe
    43254321    mov ax, word [bp+01ah]                    ; 8b 46 1a
    43264322    xor ah, ah                                ; 30 e4
     
    43284324    mov word [bp+01ah], ax                    ; 89 46 1a
    43294325    mov ax, strict word 00006h                ; b8 06 00
    4330     jmp near 02e83h                           ; e9 19 f9
    4331     mov bx, 00cd6h                            ; bb d6 0c
     4326    jmp near 02e63h                           ; e9 19 f9
     4327    mov bx, 00cech                            ; bb ec 0c
    43324328    mov cx, ds                                ; 8c d9
    43334329    mov ax, strict word 00004h                ; b8 04 00
    4334     call 018aeh                               ; e8 39 e3
     4330    call 018aeh                               ; e8 59 e3
    43354331    mov ax, word [bp+01ah]                    ; 8b 46 1a
    43364332    shr ax, 008h                              ; c1 e8 08
     
    43394335    push 00252h                               ; 68 52 02
    43404336    push strict byte 00004h                   ; 6a 04
    4341     call 018e9h                               ; e8 62 e3
     4337    call 018e9h                               ; e8 82 e3
    43424338    add sp, strict byte 00008h                ; 83 c4 08
    4343     jmp near 02e75h                           ; e9 e8 f8
    4344 _cdemu_init:                                 ; 0xf358d LB 0x16
     4339    jmp near 02e55h                           ; e9 e8 f8
     4340_cdemu_init:                                 ; 0xf356d LB 0x16
    43454341    push bp                                   ; 55
    43464342    mov bp, sp                                ; 89 e5
    43474343    mov dx, strict word 0000eh                ; ba 0e 00
    43484344    mov ax, strict word 00040h                ; b8 40 00
    4349     call 0161ch                               ; e8 83 e0
     4345    call 0161ch                               ; e8 a3 e0
    43504346    xor bx, bx                                ; 31 db
    43514347    mov dx, 00322h                            ; ba 22 03
    4352     call 0160eh                               ; e8 6d e0
     4348    call 0160eh                               ; e8 8d e0
    43534349    pop bp                                    ; 5d
    43544350    retn                                      ; c3
    4355 _cdemu_isactive:                             ; 0xf35a3 LB 0x14
     4351_cdemu_isactive:                             ; 0xf3583 LB 0x14
    43564352    push bp                                   ; 55
    43574353    mov bp, sp                                ; 89 e5
    43584354    mov dx, strict word 0000eh                ; ba 0e 00
    43594355    mov ax, strict word 00040h                ; b8 40 00
    4360     call 0161ch                               ; e8 6d e0
     4356    call 0161ch                               ; e8 8d e0
    43614357    mov dx, 00322h                            ; ba 22 03
    4362     call 01600h                               ; e8 4b e0
     4358    call 01600h                               ; e8 6b e0
    43634359    pop bp                                    ; 5d
    43644360    retn                                      ; c3
    4365 _cdemu_emulated_drive:                       ; 0xf35b7 LB 0x14
     4361_cdemu_emulated_drive:                       ; 0xf3597 LB 0x14
    43664362    push bp                                   ; 55
    43674363    mov bp, sp                                ; 89 e5
    43684364    mov dx, strict word 0000eh                ; ba 0e 00
    43694365    mov ax, strict word 00040h                ; b8 40 00
    4370     call 0161ch                               ; e8 59 e0
     4366    call 0161ch                               ; e8 79 e0
    43714367    mov dx, 00324h                            ; ba 24 03
    4372     call 01600h                               ; e8 37 e0
     4368    call 01600h                               ; e8 57 e0
    43734369    pop bp                                    ; 5d
    43744370    retn                                      ; c3
    4375 _int13_eltorito:                             ; 0xf35cb LB 0x17d
     4371_int13_eltorito:                             ; 0xf35ab LB 0x17d
    43764372    push si                                   ; 56
    43774373    push di                                   ; 57
     
    43804376    mov dx, strict word 0000eh                ; ba 0e 00
    43814377    mov ax, strict word 00040h                ; b8 40 00
    4382     call 0161ch                               ; e8 43 e0
     4378    call 0161ch                               ; e8 63 e0
    43834379    mov si, 00322h                            ; be 22 03
    43844380    mov di, ax                                ; 89 c7
     
    43864382    shr ax, 008h                              ; c1 e8 08
    43874383    cmp ax, strict word 0004bh                ; 3d 4b 00
    4388     jc short 035f3h                           ; 72 0a
    4389     jbe short 0360eh                          ; 76 23
     4384    jc short 035d3h                           ; 72 0a
     4385    jbe short 035eeh                          ; 76 23
    43904386    cmp ax, strict word 0004dh                ; 3d 4d 00
    4391     jbe short 035fah                          ; 76 0a
    4392     jmp near 0370ah                           ; e9 17 01
     4387    jbe short 035dah                          ; 76 0a
     4388    jmp near 036eah                           ; e9 17 01
    43934389    cmp ax, strict word 0004ah                ; 3d 4a 00
    4394     jne near 0370ah                           ; 0f 85 10 01
     4390    jne near 036eah                           ; 0f 85 10 01
    43954391    push word [bp+01ah]                       ; ff 76 1a
    43964392    push 0026ch                               ; 68 6c 02
    43974393    push 0027bh                               ; 68 7b 02
    43984394    push strict byte 00007h                   ; 6a 07
    4399     call 018e9h                               ; e8 e1 e2
     4395    call 018e9h                               ; e8 01 e3
    44004396    add sp, strict byte 00008h                ; 83 c4 08
    4401     jmp near 03727h                           ; e9 19 01
     4397    jmp near 03707h                           ; e9 19 01
    44024398    mov dx, word [bp+00eh]                    ; 8b 56 0e
    44034399    mov ax, word [bp+008h]                    ; 8b 46 08
    44044400    mov bx, strict word 00013h                ; bb 13 00
    4405     call 0160eh                               ; e8 f4 df
     4401    call 0160eh                               ; e8 14 e0
    44064402    mov es, di                                ; 8e c7
    44074403    movzx bx, byte [es:si+001h]               ; 26 0f b6 5c 01
     
    44094405    inc dx                                    ; 42
    44104406    mov ax, word [bp+008h]                    ; 8b 46 08
    4411     call 0160eh                               ; e8 e3 df
     4407    call 0160eh                               ; e8 03 e0
    44124408    mov es, di                                ; 8e c7
    44134409    movzx bx, byte [es:si+002h]               ; 26 0f b6 5c 02
     
    44164412    inc dx                                    ; 42
    44174413    mov ax, word [bp+008h]                    ; 8b 46 08
    4418     call 0160eh                               ; e8 d1 df
     4414    call 0160eh                               ; e8 f1 df
    44194415    mov es, di                                ; 8e c7
    44204416    movzx bx, byte [es:si+003h]               ; 26 0f b6 5c 03
     
    44224418    add dx, strict byte 00003h                ; 83 c2 03
    44234419    mov ax, word [bp+008h]                    ; 8b 46 08
    4424     call 0160eh                               ; e8 be df
     4420    call 0160eh                               ; e8 de df
    44254421    mov es, di                                ; 8e c7
    44264422    mov bx, word [es:si+008h]                 ; 26 8b 5c 08
     
    44294425    add dx, strict byte 00004h                ; 83 c2 04
    44304426    mov ax, word [bp+008h]                    ; 8b 46 08
    4431     call 0164ah                               ; e8 e4 df
     4427    call 0164ah                               ; e8 04 e0
    44324428    mov es, di                                ; 8e c7
    44334429    mov bx, word [es:si+004h]                 ; 26 8b 5c 04
     
    44354431    add dx, strict byte 00008h                ; 83 c2 08
    44364432    mov ax, word [bp+008h]                    ; 8b 46 08
    4437     call 0162ah                               ; e8 b2 df
     4433    call 0162ah                               ; e8 d2 df
    44384434    mov es, di                                ; 8e c7
    44394435    mov bx, word [es:si+006h]                 ; 26 8b 5c 06
     
    44414437    add dx, strict byte 0000ah                ; 83 c2 0a
    44424438    mov ax, word [bp+008h]                    ; 8b 46 08
    4443     call 0162ah                               ; e8 a0 df
     4439    call 0162ah                               ; e8 c0 df
    44444440    mov es, di                                ; 8e c7
    44454441    mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
     
    44474443    add dx, strict byte 0000ch                ; 83 c2 0c
    44484444    mov ax, word [bp+008h]                    ; 8b 46 08
    4449     call 0162ah                               ; e8 8e df
     4445    call 0162ah                               ; e8 ae df
    44504446    mov es, di                                ; 8e c7
    44514447    mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
     
    44534449    add dx, strict byte 0000eh                ; 83 c2 0e
    44544450    mov ax, word [bp+008h]                    ; 8b 46 08
    4455     call 0162ah                               ; e8 7c df
     4451    call 0162ah                               ; e8 9c df
    44564452    mov es, di                                ; 8e c7
    44574453    movzx bx, byte [es:si+012h]               ; 26 0f b6 5c 12
     
    44594455    add dx, strict byte 00010h                ; 83 c2 10
    44604456    mov ax, word [bp+008h]                    ; 8b 46 08
    4461     call 0160eh                               ; e8 4d df
     4457    call 0160eh                               ; e8 6d df
    44624458    mov es, di                                ; 8e c7
    44634459    movzx bx, byte [es:si+014h]               ; 26 0f b6 5c 14
     
    44654461    add dx, strict byte 00011h                ; 83 c2 11
    44664462    mov ax, word [bp+008h]                    ; 8b 46 08
    4467     call 0160eh                               ; e8 3a df
     4463    call 0160eh                               ; e8 5a df
    44684464    mov es, di                                ; 8e c7
    44694465    movzx bx, byte [es:si+010h]               ; 26 0f b6 5c 10
     
    44714467    add dx, strict byte 00012h                ; 83 c2 12
    44724468    mov ax, word [bp+008h]                    ; 8b 46 08
    4473     call 0160eh                               ; e8 27 df
     4469    call 0160eh                               ; e8 47 df
    44744470    test byte [bp+01ah], 0ffh                 ; f6 46 1a ff
    4475     jne short 036f3h                          ; 75 06
     4471    jne short 036d3h                          ; 75 06
    44764472    mov es, di                                ; 8e c7
    44774473    mov byte [es:si], 000h                    ; 26 c6 04 00
     
    44804476    mov dx, strict word 00074h                ; ba 74 00
    44814477    mov ax, strict word 00040h                ; b8 40 00
    4482     call 0160eh                               ; e8 0c df
     4478    call 0160eh                               ; e8 2c df
    44834479    and byte [bp+020h], 0feh                  ; 80 66 20 fe
    44844480    pop bp                                    ; 5d
     
    44864482    pop si                                    ; 5e
    44874483    retn                                      ; c3
    4488     mov bx, 00cd6h                            ; bb d6 0c
     4484    mov bx, 00cech                            ; bb ec 0c
    44894485    mov cx, ds                                ; 8c d9
    44904486    mov ax, strict word 00004h                ; b8 04 00
    4491     call 018aeh                               ; e8 99 e1
     4487    call 018aeh                               ; e8 b9 e1
    44924488    mov ax, word [bp+01ah]                    ; 8b 46 1a
    44934489    shr ax, 008h                              ; c1 e8 08
     
    44964492    push 002a1h                               ; 68 a1 02
    44974493    push strict byte 00004h                   ; 6a 04
    4498     jmp near 03605h                           ; e9 de fe
     4494    jmp near 035e5h                           ; e9 de fe
    44994495    mov ax, word [bp+01ah]                    ; 8b 46 1a
    45004496    xor ah, ah                                ; 30 e4
     
    45064502    mov dx, strict word 00074h                ; ba 74 00
    45074503    mov ax, strict word 00040h                ; b8 40 00
    4508     call 0160eh                               ; e8 cc de
     4504    call 0160eh                               ; e8 ec de
    45094505    or byte [bp+020h], 001h                   ; 80 4e 20 01
    4510     jmp short 03706h                          ; eb be
    4511 device_is_cdrom_:                            ; 0xf3748 LB 0x32
     4506    jmp short 036e6h                          ; eb be
     4507device_is_cdrom_:                            ; 0xf3728 LB 0x32
    45124508    push bx                                   ; 53
    45134509    push dx                                   ; 52
     
    45174513    mov dx, strict word 0000eh                ; ba 0e 00
    45184514    mov ax, strict word 00040h                ; b8 40 00
    4519     call 0161ch                               ; e8 c4 de
     4515    call 0161ch                               ; e8 e4 de
    45204516    cmp bl, 010h                              ; 80 fb 10
    4521     jc short 03761h                           ; 72 04
     4517    jc short 03741h                           ; 72 04
    45224518    xor ax, ax                                ; 31 c0
    4523     jmp short 03776h                          ; eb 15
     4519    jmp short 03756h                          ; eb 15
    45244520    xor bh, bh                                ; 30 ff
    45254521    imul bx, bx, strict byte 00018h           ; 6b db 18
     
    45274523    add bx, 00122h                            ; 81 c3 22 01
    45284524    cmp byte [es:bx+01fh], 005h               ; 26 80 7f 1f 05
    4529     jne short 0375dh                          ; 75 ea
     4525    jne short 0373dh                          ; 75 ea
    45304526    mov ax, strict word 00001h                ; b8 01 00
    45314527    pop bp                                    ; 5d
     
    45334529    pop bx                                    ; 5b
    45344530    retn                                      ; c3
    4535 cdrom_boot_:                                 ; 0xf377a LB 0x42f
     4531cdrom_boot_:                                 ; 0xf375a LB 0x4ac
    45364532    push bx                                   ; 53
    45374533    push cx                                   ; 51
     
    45424538    mov dx, strict word 0000eh                ; ba 0e 00
    45434539    mov ax, strict word 00040h                ; b8 40 00
    4544     call 0161ch                               ; e8 90 de
    4545     mov word [bp-00ch], ax                    ; 89 46 f4
     4540    call 0161ch                               ; e8 b0 de
     4541    mov word [bp-00eh], ax                    ; 89 46 f2
    45464542    mov si, 00322h                            ; be 22 03
    4547     mov word [bp-00eh], ax                    ; 89 46 f2
    4548     mov word [bp-008h], 00122h                ; c7 46 f8 22 01
    45494543    mov word [bp-006h], ax                    ; 89 46 fa
     4544    mov word [bp-00ch], 00122h                ; c7 46 f4 22 01
     4545    mov word [bp-008h], ax                    ; 89 46 f8
    45504546    mov byte [bp-004h], 000h                  ; c6 46 fc 00
    4551     jmp short 037ach                          ; eb 09
     4547    jmp short 0378ch                          ; eb 09
    45524548    inc byte [bp-004h]                        ; fe 46 fc
    45534549    cmp byte [bp-004h], 010h                  ; 80 7e fc 10
    4554     jnc short 037b7h                          ; 73 0b
     4550    jnc short 03797h                          ; 73 0b
    45554551    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    4556     call 03748h                               ; e8 95 ff
     4552    call 03728h                               ; e8 95 ff
    45574553    test ax, ax                               ; 85 c0
    4558     je short 037a3h                           ; 74 ec
     4554    je short 03783h                           ; 74 ec
    45594555    cmp byte [bp-004h], 010h                  ; 80 7e fc 10
    4560     jc short 037c3h                           ; 72 06
     4556    jc short 037a3h                           ; 72 06
    45614557    mov ax, strict word 00002h                ; b8 02 00
    4562     jmp near 03b49h                           ; e9 86 03
     4558    jmp near 03ba6h                           ; e9 03 04
    45634559    mov cx, strict word 0000ch                ; b9 0c 00
    45644560    xor bx, bx                                ; 31 db
    45654561    mov dx, ss                                ; 8c d2
    45664562    lea ax, [bp-01ah]                         ; 8d 46 e6
    4567     call 08caah                               ; e8 da 54
     4563    call 0902ah                               ; e8 7a 58
    45684564    mov word [bp-01ah], strict word 00028h    ; c7 46 e6 28 00
    45694565    mov ax, strict word 00011h                ; b8 11 00
     
    45774573    xchg ah, al                               ; 86 c4
    45784574    mov word [bp-013h], ax                    ; 89 46 ed
    4579     les bx, [bp-008h]                         ; c4 5e f8
     4575    mov es, [bp-008h]                         ; 8e 46 f8
     4576    mov bx, word [bp-00ch]                    ; 8b 5e f4
    45804577    db  066h, 026h, 0c7h, 047h, 00ah, 001h, 000h, 000h, 008h
    45814578    ; mov dword [es:bx+00ah], strict dword 008000001h ; 66 26 c7 47 0a 01 00 00 08
    45824579    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    4583     jmp short 0382ah                          ; eb 2b
     4580    jmp short 03831h                          ; eb 4f
     4581    cmp AL, strict byte 008h                  ; 3c 08
     4582    jc short 03806h                           ; 72 20
    45844583    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
    45854584    push SS                                   ; 16
     
    45934592    lea bx, [bp-01ah]                         ; 8d 5e e6
    45944593    mov dx, strict word 0000ch                ; ba 0c 00
    4595     call 0280ah                               ; e8 ed ef
    4596     test ax, ax                               ; 85 c0
    4597     je short 03850h                           ; 74 2f
    4598     inc byte [bp-002h]                        ; fe 46 fe
    4599     cmp byte [bp-002h], 004h                  ; 80 7e fe 04
    4600     jnbe short 03850h                         ; 77 26
    4601     cmp byte [bp-004h], 008h                  ; 80 7e fc 08
    4602     jbe short 037ffh                          ; 76 cf
     4594    call 07626h                               ; e8 22 3e
     4595    jmp short 03824h                          ; eb 1e
    46034596    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
    46044597    push SS                                   ; 16
     
    46124605    lea bx, [bp-01ah]                         ; 8d 5e e6
    46134606    mov dx, strict word 0000ch                ; ba 0c 00
    4614     call 07f53h                               ; e8 05 47
    4615     jmp short 0381dh                          ; eb cd
     4607    call 027eah                               ; e8 c6 ef
    46164608    test ax, ax                               ; 85 c0
    4617     je short 0385ah                           ; 74 06
     4609    je short 03858h                           ; 74 30
     4610    inc byte [bp-002h]                        ; fe 46 fe
     4611    cmp byte [bp-002h], 004h                  ; 80 7e fe 04
     4612    jnbe short 03858h                         ; 77 27
     4613    mov al, byte [bp-004h]                    ; 8a 46 fc
     4614    cmp AL, strict byte 00ch                  ; 3c 0c
     4615    jc short 037e2h                           ; 72 aa
     4616    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
     4617    push SS                                   ; 16
     4618    push dx                                   ; 52
     4619    push strict byte 00001h                   ; 6a 01
     4620    push strict byte 00000h                   ; 6a 00
     4621    push 00800h                               ; 68 00 08
     4622    push strict byte 00000h                   ; 6a 00
     4623    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     4624    mov cx, ss                                ; 8c d1
     4625    lea bx, [bp-01ah]                         ; 8d 5e e6
     4626    mov dx, strict word 0000ch                ; ba 0c 00
     4627    call 082c2h                               ; e8 6c 4a
     4628    jmp short 03824h                          ; eb cc
     4629    test ax, ax                               ; 85 c0
     4630    je short 03862h                           ; 74 06
    46184631    mov ax, strict word 00003h                ; b8 03 00
    4619     jmp near 03b49h                           ; e9 ef 02
     4632    jmp near 03ba6h                           ; e9 44 03
    46204633    cmp byte [bp-0081ah], 000h                ; 80 be e6 f7 00
    4621     je short 03867h                           ; 74 06
     4634    je short 0386fh                           ; 74 06
    46224635    mov ax, strict word 00004h                ; b8 04 00
    4623     jmp near 03b49h                           ; e9 e2 02
     4636    jmp near 03ba6h                           ; e9 37 03
    46244637    xor di, di                                ; 31 ff
    4625     jmp short 03871h                          ; eb 06
     4638    jmp short 03879h                          ; eb 06
    46264639    inc di                                    ; 47
    46274640    cmp di, strict byte 00005h                ; 83 ff 05
    4628     jnc short 03881h                          ; 73 10
     4641    jnc short 03889h                          ; 73 10
    46294642    mov al, byte [bp+di-00819h]               ; 8a 83 e7 f7
    4630     cmp al, byte [di+00cdeh]                  ; 3a 85 de 0c
    4631     je short 0386bh                           ; 74 f0
     4643    cmp al, byte [di+00cf4h]                  ; 3a 85 f4 0c
     4644    je short 03873h                           ; 74 f0
    46324645    mov ax, strict word 00005h                ; b8 05 00
    4633     jmp near 03b49h                           ; e9 c8 02
     4646    jmp near 03ba6h                           ; e9 1d 03
    46344647    xor di, di                                ; 31 ff
    4635     jmp short 0388bh                          ; eb 06
     4648    jmp short 03893h                          ; eb 06
    46364649    inc di                                    ; 47
    46374650    cmp di, strict byte 00017h                ; 83 ff 17
    4638     jnc short 0389bh                          ; 73 10
     4651    jnc short 038a3h                          ; 73 10
    46394652    mov al, byte [bp+di-00813h]               ; 8a 83 ed f7
    4640     cmp al, byte [di+00ce4h]                  ; 3a 85 e4 0c
    4641     je short 03885h                           ; 74 f0
     4653    cmp al, byte [di+00cfah]                  ; 3a 85 fa 0c
     4654    je short 0388dh                           ; 74 f0
    46424655    mov ax, strict word 00006h                ; b8 06 00
    4643     jmp near 03b49h                           ; e9 ae 02
     4656    jmp near 03ba6h                           ; e9 03 03
    46444657    mov ax, word [bp-007d3h]                  ; 8b 86 2d f8
    46454658    mov dx, word [bp-007d1h]                  ; 8b 96 2f f8
     
    46534666    xchg ah, al                               ; 86 c4
    46544667    mov word [bp-013h], ax                    ; 89 46 ed
    4655     cmp byte [bp-004h], 008h                  ; 80 7e fc 08
    4656     jbe short 038e1h                          ; 76 20
     4668    mov al, byte [bp-004h]                    ; 8a 46 fc
     4669    cmp AL, strict byte 00ch                  ; 3c 0c
     4670    jc short 038eah                           ; 72 20
    46574671    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
    46584672    push SS                                   ; 16
     
    46664680    lea bx, [bp-01ah]                         ; 8d 5e e6
    46674681    mov dx, strict word 0000ch                ; ba 0c 00
    4668     call 07f53h                               ; e8 74 46
    4669     jmp short 038ffh                          ; eb 1e
     4682    call 082c2h                               ; e8 da 49
     4683    jmp short 0392ch                          ; eb 42
     4684    cmp AL, strict byte 008h                  ; 3c 08
     4685    jc short 0390eh                           ; 72 20
    46704686    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
    46714687    push SS                                   ; 16
     
    46794695    lea bx, [bp-01ah]                         ; 8d 5e e6
    46804696    mov dx, strict word 0000ch                ; ba 0c 00
    4681     call 0280ah                               ; e8 0b ef
     4697    call 07626h                               ; e8 1a 3d
     4698    jmp short 0392ch                          ; eb 1e
     4699    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
     4700    push SS                                   ; 16
     4701    push dx                                   ; 52
     4702    push strict byte 00001h                   ; 6a 01
     4703    push strict byte 00000h                   ; 6a 00
     4704    push 00800h                               ; 68 00 08
     4705    push strict byte 00000h                   ; 6a 00
     4706    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     4707    mov cx, ss                                ; 8c d1
     4708    lea bx, [bp-01ah]                         ; 8d 5e e6
     4709    mov dx, strict word 0000ch                ; ba 0c 00
     4710    call 027eah                               ; e8 be ee
    46824711    test ax, ax                               ; 85 c0
    4683     je short 03909h                           ; 74 06
     4712    je short 03936h                           ; 74 06
    46844713    mov ax, strict word 00007h                ; b8 07 00
    4685     jmp near 03b49h                           ; e9 40 02
     4714    jmp near 03ba6h                           ; e9 70 02
    46864715    cmp byte [bp-0081ah], 001h                ; 80 be e6 f7 01
    4687     je short 03916h                           ; 74 06
     4716    je short 03943h                           ; 74 06
    46884717    mov ax, strict word 00008h                ; b8 08 00
    4689     jmp near 03b49h                           ; e9 33 02
     4718    jmp near 03ba6h                           ; e9 63 02
    46904719    cmp byte [bp-00819h], 000h                ; 80 be e7 f7 00
    4691     je short 03923h                           ; 74 06
     4720    je short 03950h                           ; 74 06
    46924721    mov ax, strict word 00009h                ; b8 09 00
    4693     jmp near 03b49h                           ; e9 26 02
     4722    jmp near 03ba6h                           ; e9 56 02
    46944723    cmp byte [bp-007fch], 055h                ; 80 be 04 f8 55
    4695     je short 03930h                           ; 74 06
     4724    je short 0395dh                           ; 74 06
    46964725    mov ax, strict word 0000ah                ; b8 0a 00
    4697     jmp near 03b49h                           ; e9 19 02
     4726    jmp near 03ba6h                           ; e9 49 02
    46984727    cmp byte [bp-007fbh], 0aah                ; 80 be 05 f8 aa
    4699     jne short 0392ah                          ; 75 f3
     4728    jne short 03957h                          ; 75 f3
    47004729    cmp byte [bp-007fah], 088h                ; 80 be 06 f8 88
    4701     je short 03944h                           ; 74 06
     4730    je short 03971h                           ; 74 06
    47024731    mov ax, strict word 0000bh                ; b8 0b 00
    4703     jmp near 03b49h                           ; e9 05 02
     4732    jmp near 03ba6h                           ; e9 35 02
    47044733    mov al, byte [bp-007f9h]                  ; 8a 86 07 f8
    4705     mov es, [bp-00eh]                         ; 8e 46 f2
     4734    mov es, [bp-006h]                         ; 8e 46 fa
    47064735    mov byte [es:si+001h], al                 ; 26 88 44 01
    47074736    cmp byte [bp-007f9h], 000h                ; 80 be 07 f8 00
    4708     jne short 0395dh                          ; 75 07
     4737    jne short 0398ah                          ; 75 07
    47094738    mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
    4710     jmp short 03970h                          ; eb 13
     4739    jmp short 0399dh                          ; eb 13
    47114740    cmp byte [bp-007f9h], 004h                ; 80 be 07 f8 04
    4712     jnc short 0396bh                          ; 73 07
     4741    jnc short 03998h                          ; 73 07
    47134742    mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
    4714     jmp short 03970h                          ; eb 05
     4743    jmp short 0399dh                          ; eb 05
    47154744    mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
    47164745    movzx di, byte [bp-004h]                  ; 0f b6 7e fc
     
    47204749    ; sub ax, dx                                ; 2b c2
    47214750    sar ax, 1                                 ; d1 f8
    4722     mov es, [bp-00eh]                         ; 8e 46 f2
     4751    mov es, [bp-006h]                         ; 8e 46 fa
    47234752    mov byte [es:si+003h], al                 ; 26 88 44 03
    47244753    mov ax, di                                ; 89 f8
     
    47294758    mov di, word [bp-007f8h]                  ; 8b be 08 f8
    47304759    test di, di                               ; 85 ff
    4731     jne short 03999h                          ; 75 03
     4760    jne short 039c6h                          ; 75 03
    47324761    mov di, 007c0h                            ; bf c0 07
    4733     mov es, [bp-00eh]                         ; 8e 46 f2
     4762    mov es, [bp-006h]                         ; 8e 46 fa
    47344763    mov word [es:si+00ch], di                 ; 26 89 7c 0c
    47354764    mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00
     
    47544783    xchg ah, al                               ; 86 c4
    47554784    mov word [bp-013h], ax                    ; 89 46 ed
    4756     les bx, [bp-008h]                         ; c4 5e f8
     4785    mov es, [bp-008h]                         ; 8e 46 f8
     4786    mov bx, word [bp-00ch]                    ; 8b 5e f4
    47574787    mov word [es:bx+00ah], dx                 ; 26 89 57 0a
    47584788    mov word [es:bx+00ch], 00200h             ; 26 c7 47 0c 00 02
     
    47634793    sub dx, ax                                ; 29 c2
    47644794    mov word [es:bx+01ch], dx                 ; 26 89 57 1c
    4765     cmp byte [bp-004h], 008h                  ; 80 7e fc 08
    4766     jbe short 03a2ch                          ; 76 27
     4795    mov al, byte [bp-004h]                    ; 8a 46 fc
     4796    cmp AL, strict byte 00ch                  ; 3c 0c
     4797    jc short 03a5dh                           ; 72 27
    47674798    push di                                   ; 57
    47684799    push dword 000000001h                     ; 66 6a 01
     
    47724803    sal ax, 1                                 ; d1 e0
    47734804    rcl dx, 1                                 ; d1 d2
    4774     loop 03a11h                               ; e2 fa
     4805    loop 03a42h                               ; e2 fa
    47754806    push dx                                   ; 52
    47764807    push ax                                   ; 50
     
    47804811    lea bx, [bp-01ah]                         ; 8d 5e e6
    47814812    mov dx, strict word 0000ch                ; ba 0c 00
    4782     call 07f53h                               ; e8 29 45
    4783     jmp short 03a51h                          ; eb 25
     4813    call 082c2h                               ; e8 67 48
     4814    jmp short 03aadh                          ; eb 50
     4815    cmp AL, strict byte 008h                  ; 3c 08
     4816    jc short 03a88h                           ; 72 27
    47844817    push di                                   ; 57
    47854818    push dword 000000001h                     ; 66 6a 01
     
    47894822    sal ax, 1                                 ; d1 e0
    47904823    rcl dx, 1                                 ; d1 d2
    4791     loop 03a38h                               ; e2 fa
     4824    loop 03a6dh                               ; e2 fa
    47924825    push dx                                   ; 52
    47934826    push ax                                   ; 50
     
    47974830    lea bx, [bp-01ah]                         ; 8d 5e e6
    47984831    mov dx, strict word 0000ch                ; ba 0c 00
    4799     call 0280ah                               ; e8 b9 ed
    4800     les bx, [bp-008h]                         ; c4 5e f8
     4832    call 07626h                               ; e8 a0 3b
     4833    jmp short 03aadh                          ; eb 25
     4834    push di                                   ; 57
     4835    push dword 000000001h                     ; 66 6a 01
     4836    mov ax, word [bp-00ah]                    ; 8b 46 f6
     4837    xor dx, dx                                ; 31 d2
     4838    mov cx, strict word 00009h                ; b9 09 00
     4839    sal ax, 1                                 ; d1 e0
     4840    rcl dx, 1                                 ; d1 d2
     4841    loop 03a94h                               ; e2 fa
     4842    push dx                                   ; 52
     4843    push ax                                   ; 50
     4844    push strict byte 00000h                   ; 6a 00
     4845    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     4846    mov cx, ss                                ; 8c d1
     4847    lea bx, [bp-01ah]                         ; 8d 5e e6
     4848    mov dx, strict word 0000ch                ; ba 0c 00
     4849    call 027eah                               ; e8 3d ed
     4850    mov es, [bp-008h]                         ; 8e 46 f8
     4851    mov bx, word [bp-00ch]                    ; 8b 5e f4
    48014852    mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00
    48024853    test ax, ax                               ; 85 c0
    4803     je short 03a64h                           ; 74 06
     4854    je short 03ac3h                           ; 74 06
    48044855    mov ax, strict word 0000ch                ; b8 0c 00
    4805     jmp near 03b49h                           ; e9 e5 00
    4806     mov es, [bp-00eh]                         ; 8e 46 f2
     4856    jmp near 03ba6h                           ; e9 e3 00
     4857    mov es, [bp-006h]                         ; 8e 46 fa
    48074858    mov al, byte [es:si+001h]                 ; 26 8a 44 01
    48084859    cmp AL, strict byte 002h                  ; 3c 02
    4809     jc short 03a7ch                           ; 72 0d
    4810     jbe short 03a94h                          ; 76 23
     4860    jc short 03adah                           ; 72 0c
     4861    jbe short 03af2h                          ; 76 22
    48114862    cmp AL, strict byte 004h                  ; 3c 04
    4812     je short 03aaah                           ; 74 35
     4863    je short 03b08h                           ; 74 34
    48134864    cmp AL, strict byte 003h                  ; 3c 03
    4814     je short 03a9fh                           ; 74 26
    4815     jmp near 03af2h                           ; e9 76 00
     4865    je short 03afdh                           ; 74 25
     4866    jmp short 03b4fh                          ; eb 75
    48164867    cmp AL, strict byte 001h                  ; 3c 01
    4817     jne short 03af2h                          ; 75 72
    4818     mov es, [bp-00eh]                         ; 8e 46 f2
     4868    jne short 03b4fh                          ; 75 71
     4869    mov es, [bp-006h]                         ; 8e 46 fa
    48194870    db  066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 00fh, 000h
    48204871    ; mov dword [es:si+012h], strict dword 0000f0050h ; 66 26 c7 44 12 50 00 0f 00
    48214872    mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00
    4822     jmp short 03af2h                          ; eb 5e
     4873    jmp short 03b4fh                          ; eb 5d
    48234874    db  066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 012h, 000h
    48244875    ; mov dword [es:si+012h], strict dword 000120050h ; 66 26 c7 44 12 50 00 12 00
    4825     jmp short 03a8ch                          ; eb ed
     4876    jmp short 03aeah                          ; eb ed
    48264877    db  066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 024h, 000h
    48274878    ; mov dword [es:si+012h], strict dword 000240050h ; 66 26 c7 44 12 50 00 24 00
    4828     jmp short 03a8ch                          ; eb e2
     4879    jmp short 03aeah                          ; eb e2
    48294880    mov dx, 001c4h                            ; ba c4 01
    48304881    mov ax, di                                ; 89 f8
    4831     call 01600h                               ; e8 4e db
     4882    call 01600h                               ; e8 f0 da
    48324883    and AL, strict byte 03fh                  ; 24 3f
    48334884    xor ah, ah                                ; 30 e4
    4834     mov es, [bp-00eh]                         ; 8e 46 f2
     4885    mov es, [bp-006h]                         ; 8e 46 fa
    48354886    mov word [es:si+014h], ax                 ; 26 89 44 14
    48364887    mov dx, 001c4h                            ; ba c4 01
    48374888    mov ax, di                                ; 89 f8
    4838     call 01600h                               ; e8 3b db
    4839     xor ah, ah                                ; 30 e4
    4840     mov bx, ax                                ; 89 c3
     4889    call 01600h                               ; e8 dd da
     4890    movzx bx, al                              ; 0f b6 d8
    48414891    sal bx, 002h                              ; c1 e3 02
    48424892    mov dx, 001c5h                            ; ba c5 01
    48434893    mov ax, di                                ; 89 f8
    4844     call 01600h                               ; e8 2c db
     4894    call 01600h                               ; e8 cf da
    48454895    xor ah, ah                                ; 30 e4
    48464896    add ax, bx                                ; 01 d8
    48474897    inc ax                                    ; 40
    4848     mov es, [bp-00eh]                         ; 8e 46 f2
     4898    mov es, [bp-006h]                         ; 8e 46 fa
    48494899    mov word [es:si+012h], ax                 ; 26 89 44 12
    48504900    mov dx, 001c3h                            ; ba c3 01
    48514901    mov ax, di                                ; 89 f8
    4852     call 01600h                               ; e8 18 db
     4902    call 01600h                               ; e8 bb da
    48534903    xor ah, ah                                ; 30 e4
    48544904    inc ax                                    ; 40
    4855     mov es, [bp-00eh]                         ; 8e 46 f2
     4905    mov es, [bp-006h]                         ; 8e 46 fa
    48564906    mov word [es:si+010h], ax                 ; 26 89 44 10
    4857     mov es, [bp-00eh]                         ; 8e 46 f2
     4907    mov es, [bp-006h]                         ; 8e 46 fa
    48584908    cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
    4859     je short 03b30h                           ; 74 34
     4909    je short 03b8dh                           ; 74 34
    48604910    cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
    4861     jne short 03b19h                          ; 75 16
     4911    jne short 03b76h                          ; 75 16
    48624912    mov dx, strict word 00010h                ; ba 10 00
    48634913    mov ax, strict word 00040h                ; b8 40 00
    4864     call 01600h                               ; e8 f4 da
     4914    call 01600h                               ; e8 97 da
    48654915    or AL, strict byte 041h                   ; 0c 41
    48664916    movzx bx, al                              ; 0f b6 d8
    48674917    mov dx, strict word 00010h                ; ba 10 00
    48684918    mov ax, strict word 00040h                ; b8 40 00
    4869     jmp short 03b2dh                          ; eb 14
     4919    jmp short 03b8ah                          ; eb 14
    48704920    mov dx, 002c0h                            ; ba c0 02
    4871     mov ax, word [bp-00ch]                    ; 8b 46 f4
    4872     call 01600h                               ; e8 de da
     4921    mov ax, word [bp-00eh]                    ; 8b 46 f2
     4922    call 01600h                               ; e8 81 da
    48734923    db  0feh, 0c0h
    48744924    ; inc al                                    ; fe c0
    48754925    movzx bx, al                              ; 0f b6 d8
    48764926    mov dx, 002c0h                            ; ba c0 02
    4877     mov ax, word [bp-00ch]                    ; 8b 46 f4
    4878     call 0160eh                               ; e8 de da
    4879     mov es, [bp-00eh]                         ; 8e 46 f2
     4927    mov ax, word [bp-00eh]                    ; 8b 46 f2
     4928    call 0160eh                               ; e8 81 da
     4929    mov es, [bp-006h]                         ; 8e 46 fa
    48804930    cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
    4881     je short 03b3eh                           ; 74 04
     4931    je short 03b9bh                           ; 74 04
    48824932    mov byte [es:si], 001h                    ; 26 c6 04 01
    4883     mov es, [bp-00eh]                         ; 8e 46 f2
     4933    mov es, [bp-006h]                         ; 8e 46 fa
    48844934    movzx ax, byte [es:si+002h]               ; 26 0f b6 44 02
    48854935    sal ax, 008h                              ; c1 e0 08
     
    49094959    add AL, strict byte 003h                  ; 04 03
    49104960    add al, byte [bx+di]                      ; 02 01
    4911     add byte [di], ch                         ; 00 2d
     4961    add byte [bx+si-067c1h], bh               ; 00 b8 3f 98
    49124962    aas                                       ; 3f
    4913     push CS                                   ; 0e
     4963    mov BH, strict byte 03ch                  ; b7 3c
     4964    loope 03c0eh                              ; e1 3c
     4965    lodsb                                     ; ac
     4966    cmp AL, strict byte 0e1h                  ; 3c e1
     4967    cmp AL, strict byte 0ach                  ; 3c ac
     4968    cmp AL, strict byte 002h                  ; 3c 02
    49144969    aas                                       ; 3f
    4915     pop ax                                    ; 58
    4916     cmp AL, strict byte 082h                  ; 3c 82
    4917     cmp AL, strict byte 04dh                  ; 3c 4d
    4918     cmp AL, strict byte 082h                  ; 3c 82
    4919     cmp AL, strict byte 04dh                  ; 3c 4d
    4920     cmp AL, strict byte 074h                  ; 3c 74
    4921     db  03eh, 00eh
    4922     ; ds push CS                                ; 3e 0e
     4970    cbw                                       ; 98
    49234971    aas                                       ; 3f
    4924     sub ax, 02d3fh                            ; 2d 3f 2d
     4972    mov ax, 0b83fh                            ; b8 3f b8
    49254973    aas                                       ; 3f
    4926     push CS                                   ; 0e
     4974    cbw                                       ; 98
    49274975    aas                                       ; 3f
    4928     push CS                                   ; 0e
     4976    cbw                                       ; 98
    49294977    aas                                       ; 3f
    4930     push CS                                   ; 0e
     4978    cbw                                       ; 98
    49314979    aas                                       ; 3f
    4932     push CS                                   ; 0e
     4980    cbw                                       ; 98
    49334981    aas                                       ; 3f
    4934     push CS                                   ; 0e
     4982    cbw                                       ; 98
    49354983    aas                                       ; 3f
    4936     and ax, 00e3fh                            ; 25 3f 0e
     4984    scasw                                     ; af
    49374985    aas                                       ; 3f
    4938     sub ax, 02d3fh                            ; 2d 3f 2d
     4986    cbw                                       ; 98
    49394987    aas                                       ; 3f
    4940     sub ax, 02d3fh                            ; 2d 3f 2d
     4988    mov ax, 0b83fh                            ; b8 3f b8
    49414989    aas                                       ; 3f
    4942     sub ax, 02d3fh                            ; 2d 3f 2d
     4990    mov ax, 0b83fh                            ; b8 3f b8
    49434991    aas                                       ; 3f
    4944     sub ax, 02d3fh                            ; 2d 3f 2d
     4992    mov ax, 0b83fh                            ; b8 3f b8
    49454993    aas                                       ; 3f
    4946     sub ax, 02d3fh                            ; 2d 3f 2d
     4994    mov ax, 0b83fh                            ; b8 3f b8
    49474995    aas                                       ; 3f
    4948     sub ax, 02d3fh                            ; 2d 3f 2d
     4996    mov ax, 0b83fh                            ; b8 3f b8
    49494997    aas                                       ; 3f
    4950 _int13_cdemu:                                ; 0xf3ba9 LB 0x41f
     4998    mov ax, 0b83fh                            ; b8 3f b8
     4999    aas                                       ; 3f
     5000_int13_cdemu:                                ; 0xf3c06 LB 0x44d
    49515001    push si                                   ; 56
    49525002    push di                                   ; 57
     
    49545004    mov dx, strict word 0000eh                ; ba 0e 00
    49555005    mov ax, strict word 00040h                ; b8 40 00
    4956     call 0161ch                               ; e8 64 da
     5006    call 0161ch                               ; e8 07 da
    49575007    mov di, 00322h                            ; bf 22 03
    49585008    mov cx, ax                                ; 89 c1
    49595009    mov si, di                                ; 89 fe
    49605010    mov word [bp-004h], ax                    ; 89 46 fc
    4961     mov word [bp-008h], 00122h                ; c7 46 f8 22 01
    4962     mov word [bp-006h], ax                    ; 89 46 fa
     5011    mov word [bp-00ah], 00122h                ; c7 46 f6 22 01
     5012    mov word [bp-008h], ax                    ; 89 46 f8
    49635013    mov es, ax                                ; 8e c0
    49645014    mov al, byte [es:di+003h]                 ; 26 8a 45 03
     
    49705020    mov dx, strict word 00074h                ; ba 74 00
    49715021    mov ax, strict word 00040h                ; b8 40 00
    4972     call 0160eh                               ; e8 27 da
     5022    call 0160eh                               ; e8 ca d9
    49735023    mov es, cx                                ; 8e c1
    49745024    cmp byte [es:di], 000h                    ; 26 80 3d 00
    4975     je short 03bfdh                           ; 74 0e
    4976     movzx ax, byte [es:di+002h]               ; 26 0f b6 45 02
    4977     mov dx, word [bp+016h]                    ; 8b 56 16
    4978     xor dh, dh                                ; 30 f6
    4979     cmp ax, dx                                ; 39 d0
    4980     je short 03c26h                           ; 74 29
    4981     mov bx, 00cd6h                            ; bb d6 0c
     5025    je short 03c5ah                           ; 74 0e
     5026    movzx dx, byte [es:di+002h]               ; 26 0f b6 55 02
     5027    mov ax, word [bp+016h]                    ; 8b 46 16
     5028    xor ah, ah                                ; 30 e4
     5029    cmp dx, ax                                ; 39 c2
     5030    je short 03c83h                           ; 74 29
     5031    mov bx, 00cech                            ; bb ec 0c
    49825032    mov cx, ds                                ; 8c d9
    49835033    mov ax, strict word 00004h                ; b8 04 00
    4984     call 018aeh                               ; e8 a6 dc
     5034    call 018aeh                               ; e8 49 dc
    49855035    mov ax, word [bp+016h]                    ; 8b 46 16
    49865036    xor ah, ah                                ; 30 e4
     
    49925042    push 002c6h                               ; 68 c6 02
    49935043    push strict byte 00004h                   ; 6a 04
    4994     call 018e9h                               ; e8 c9 dc
     5044    call 018e9h                               ; e8 6c dc
    49955045    add sp, strict byte 0000ah                ; 83 c4 0a
    4996     jmp near 03f4dh                           ; e9 27 03
     5046    jmp near 03fd8h                           ; e9 55 03
    49975047    mov ax, word [bp+01ah]                    ; 8b 46 1a
    49985048    shr ax, 008h                              ; c1 e8 08
    49995049    cmp ax, strict word 00050h                ; 3d 50 00
    5000     jnbe near 03f2dh                          ; 0f 87 fa 02
     5050    jnbe near 03fb8h                          ; 0f 87 28 03
    50015051    push CS                                   ; 0e
    50025052    pop ES                                    ; 07
    50035053    mov cx, strict word 0001eh                ; b9 1e 00
    5004     mov di, 03b50h                            ; bf 50 3b
     5054    mov di, 03badh                            ; bf ad 3b
    50055055    repne scasb                               ; f2 ae
    50065056    sal cx, 1                                 ; d1 e1
    50075057    mov di, cx                                ; 89 cf
    5008     mov ax, word [cs:di+03b6dh]               ; 2e 8b 85 6d 3b
    5009     mov bx, word [bp+01ah]                    ; 8b 5e 1a
    5010     xor bh, bh                                ; 30 ff
     5058    mov ax, word [cs:di+03bcah]               ; 2e 8b 85 ca 3b
     5059    mov di, word [bp+01ah]                    ; 8b 7e 1a
     5060    and di, 000ffh                            ; 81 e7 ff 00
    50115061    jmp ax                                    ; ff e0
    50125062    mov ax, word [bp+01ah]                    ; 8b 46 1a
    50135063    xor ah, ah                                ; 30 e4
    50145064    or ah, 003h                               ; 80 cc 03
    5015     jmp near 03f55h                           ; e9 fd 02
     5065    jmp near 03fe0h                           ; e9 29 03
    50165066    mov dx, strict word 00074h                ; ba 74 00
    50175067    mov ax, strict word 00040h                ; b8 40 00
    5018     call 01600h                               ; e8 9f d9
     5068    call 01600h                               ; e8 40 d9
    50195069    mov cl, al                                ; 88 c1
    50205070    movzx ax, cl                              ; 0f b6 c1
    50215071    sal ax, 008h                              ; c1 e0 08
    5022     or bx, ax                                 ; 09 c3
    5023     mov word [bp+01ah], bx                    ; 89 5e 1a
     5072    or di, ax                                 ; 09 c7
     5073    mov word [bp+01ah], di                    ; 89 7e 1a
    50245074    xor bx, bx                                ; 31 db
    50255075    mov dx, strict word 00074h                ; ba 74 00
    50265076    mov ax, strict word 00040h                ; b8 40 00
    5027     call 0160eh                               ; e8 95 d9
     5077    call 0160eh                               ; e8 36 d9
    50285078    test cl, cl                               ; 84 c9
    5029     je near 03f12h                            ; 0f 84 93 02
    5030     jmp near 03f69h                           ; e9 e7 02
     5079    je near 03f9ch                            ; 0f 84 be 02
     5080    jmp near 03ff4h                           ; e9 13 03
    50315081    mov es, [bp-004h]                         ; 8e 46 fc
    5032     mov di, word [es:si+014h]                 ; 26 8b 7c 14
     5082    mov ax, word [es:si+014h]                 ; 26 8b 44 14
     5083    mov word [bp-00ch], ax                    ; 89 46 f4
    50335084    mov dx, word [es:si+012h]                 ; 26 8b 54 12
    5034     mov bx, word [es:si+010h]                 ; 26 8b 5c 10
     5085    mov di, word [es:si+010h]                 ; 26 8b 7c 10
    50355086    mov ax, word [es:si+008h]                 ; 26 8b 44 08
    5036     mov word [bp-014h], ax                    ; 89 46 ec
     5087    mov word [bp-018h], ax                    ; 89 46 e8
    50375088    mov ax, word [es:si+00ah]                 ; 26 8b 44 0a
    5038     mov word [bp-012h], ax                    ; 89 46 ee
     5089    mov word [bp-016h], ax                    ; 89 46 ea
    50395090    mov ax, word [bp+018h]                    ; 8b 46 18
    50405091    and ax, strict word 0003fh                ; 25 3f 00
    5041     mov word [bp-010h], ax                    ; 89 46 f0
     5092    mov word [bp-012h], ax                    ; 89 46 ee
    50425093    mov ax, word [bp+018h]                    ; 8b 46 18
    50435094    xor ah, ah                                ; 30 e4
    50445095    and AL, strict byte 0c0h                  ; 24 c0
    50455096    sal ax, 002h                              ; c1 e0 02
    5046     mov cx, word [bp+018h]                    ; 8b 4e 18
    5047     shr cx, 008h                              ; c1 e9 08
    5048     or ax, cx                                 ; 09 c8
     5097    mov bx, word [bp+018h]                    ; 8b 5e 18
     5098    shr bx, 008h                              ; c1 eb 08
     5099    or ax, bx                                 ; 09 d8
    50495100    mov si, word [bp+016h]                    ; 8b 76 16
    50505101    shr si, 008h                              ; c1 ee 08
    5051     mov cx, word [bp+01ah]                    ; 8b 4e 1a
    5052     xor ch, ch                                ; 30 ed
    5053     mov word [bp-00ah], cx                    ; 89 4e f6
    5054     test cx, cx                               ; 85 c9
    5055     je near 03f0eh                            ; 0f 84 40 02
    5056     cmp di, word [bp-010h]                    ; 3b 7e f0
    5057     jc near 03f4dh                            ; 0f 82 78 02
     5102    mov bx, word [bp+01ah]                    ; 8b 5e 1a
     5103    xor bh, bh                                ; 30 ff
     5104    mov word [bp-006h], bx                    ; 89 5e fa
     5105    test bx, bx                               ; 85 db
     5106    je near 03f98h                            ; 0f 84 68 02
     5107    mov bx, word [bp-012h]                    ; 8b 5e ee
     5108    cmp bx, word [bp-00ch]                    ; 3b 5e f4
     5109    jnbe near 03fd8h                          ; 0f 87 9e 02
    50585110    cmp ax, dx                                ; 39 d0
    5059     jnc near 03f4dh                           ; 0f 83 72 02
    5060     cmp si, bx                                ; 39 de
    5061     jnc near 03f4dh                           ; 0f 83 6c 02
     5111    jnc near 03fd8h                           ; 0f 83 98 02
     5112    cmp si, di                                ; 39 fe
     5113    jnc near 03fd8h                           ; 0f 83 92 02
    50625114    mov dx, word [bp+01ah]                    ; 8b 56 1a
    50635115    shr dx, 008h                              ; c1 ea 08
    50645116    cmp dx, strict byte 00004h                ; 83 fa 04
    5065     je near 03f0eh                            ; 0f 84 20 02
     5117    je near 03f98h                            ; 0f 84 45 02
    50665118    mov dx, word [bp+014h]                    ; 8b 56 14
    50675119    shr dx, 004h                              ; c1 ea 04
    5068     mov cx, word [bp+00ah]                    ; 8b 4e 0a
    5069     add cx, dx                                ; 01 d1
    5070     mov word [bp-00eh], cx                    ; 89 4e f2
     5120    mov bx, word [bp+00ah]                    ; 8b 5e 0a
     5121    add bx, dx                                ; 01 d3
     5122    mov word [bp-00eh], bx                    ; 89 5e f2
    50715123    mov dx, word [bp+014h]                    ; 8b 56 14
    50725124    and dx, strict byte 0000fh                ; 83 e2 0f
    5073     mov word [bp-00ch], dx                    ; 89 56 f4
     5125    mov word [bp-010h], dx                    ; 89 56 f0
    50745126    xor dl, dl                                ; 30 d2
     5127    mov bx, di                                ; 89 fb
    50755128    xor cx, cx                                ; 31 c9
    5076     call 08c79h                               ; e8 6d 4f
     5129    call 08ff9h                               ; e8 86 52
    50775130    xor bx, bx                                ; 31 db
    50785131    add ax, si                                ; 01 f0
    50795132    adc dx, bx                                ; 11 da
    5080     mov bx, di                                ; 89 fb
     5133    mov bx, word [bp-00ch]                    ; 8b 5e f4
    50815134    xor cx, cx                                ; 31 c9
    5082     call 08c79h                               ; e8 60 4f
    5083     mov bx, word [bp-010h]                    ; 8b 5e f0
     5135    call 08ff9h                               ; e8 78 52
     5136    mov bx, word [bp-012h]                    ; 8b 5e ee
    50845137    dec bx                                    ; 4b
    50855138    xor cx, cx                                ; 31 c9
     
    50885141    mov bx, word [bp+01ah]                    ; 8b 5e 1a
    50895142    xor bl, bl                                ; 30 db
    5090     mov cx, word [bp-00ah]                    ; 8b 4e f6
     5143    mov cx, word [bp-006h]                    ; 8b 4e fa
    50915144    or cx, bx                                 ; 09 d9
    50925145    mov word [bp+01ah], cx                    ; 89 4e 1a
     
    50975150    shr di, 1                                 ; d1 ef
    50985151    rcr si, 1                                 ; d1 de
    5099     mov word [bp-01ah], di                    ; 89 7e e6
    5100     mov di, ax                                ; 89 c7
    5101     and di, strict byte 00003h                ; 83 e7 03
    5102     xor bh, bh                                ; 30 ff
    5103     add ax, word [bp-00ah]                    ; 03 46 f6
     5152    mov bx, ax                                ; 89 c3
     5153    xor bh, ah                                ; 30 e7
     5154    and bl, 003h                              ; 80 e3 03
     5155    mov word [bp-014h], bx                    ; 89 5e ec
     5156    xor bx, bx                                ; 31 db
     5157    add ax, word [bp-006h]                    ; 03 46 fa
    51045158    adc dx, bx                                ; 11 da
    5105     mov bx, ax                                ; 89 c3
    5106     add bx, strict byte 0ffffh                ; 83 c3 ff
    5107     mov ax, dx                                ; 89 d0
    5108     adc ax, strict word 0ffffh                ; 15 ff ff
    5109     mov word [bp-01eh], bx                    ; 89 5e e2
    5110     mov word [bp-01ch], ax                    ; 89 46 e4
     5159    add ax, strict word 0ffffh                ; 05 ff ff
     5160    adc dx, strict byte 0ffffh                ; 83 d2 ff
     5161    mov word [bp-01eh], ax                    ; 89 46 e2
     5162    mov word [bp-01ch], dx                    ; 89 56 e4
    51115163    shr word [bp-01ch], 1                     ; d1 6e e4
    51125164    rcr word [bp-01eh], 1                     ; d1 5e e2
     
    51145166    rcr word [bp-01eh], 1                     ; d1 5e e2
    51155167    mov cx, strict word 0000ch                ; b9 0c 00
    5116     xor bx, bx                                ; 31 db
    51175168    mov dx, ss                                ; 8c d2
    51185169    lea ax, [bp-02ah]                         ; 8d 46 d6
    5119     call 08caah                               ; e8 36 4f
     5170    call 0902ah                               ; e8 52 52
    51205171    mov word [bp-02ah], strict word 00028h    ; c7 46 d6 28 00
    5121     mov ax, word [bp-014h]                    ; 8b 46 ec
     5172    mov ax, word [bp-018h]                    ; 8b 46 e8
    51225173    add ax, si                                ; 01 f0
    5123     mov dx, word [bp-012h]                    ; 8b 56 ee
    5124     adc dx, word [bp-01ah]                    ; 13 56 e6
     5174    mov dx, word [bp-016h]                    ; 8b 56 ea
     5175    adc dx, di                                ; 11 fa
    51255176    xchg ah, al                               ; 86 c4
    51265177    xchg dh, dl                               ; 86 d6
     
    51345185    xchg ah, al                               ; 86 c4
    51355186    mov word [bp-023h], ax                    ; 89 46 dd
    5136     les bx, [bp-008h]                         ; c4 5e f8
     5187    les bx, [bp-00ah]                         ; c4 5e f6
    51375188    mov word [es:bx+00ah], dx                 ; 26 89 57 0a
    51385189    mov word [es:bx+00ch], 00200h             ; 26 c7 47 0c 00 02
    5139     mov ax, di                                ; 89 f8
     5190    mov ax, word [bp-014h]                    ; 8b 46 ec
    51405191    sal ax, 009h                              ; c1 e0 09
    51415192    mov word [es:bx+01ah], ax                 ; 26 89 47 1a
    5142     mov dx, word [bp-00ah]                    ; 8b 56 f6
     5193    mov dx, word [bp-006h]                    ; 8b 56 fa
    51435194    sal dx, 009h                              ; c1 e2 09
    51445195    and dh, 007h                              ; 80 e6 07
     
    51465197    sub bx, dx                                ; 29 d3
    51475198    mov dx, bx                                ; 89 da
    5148     mov bx, word [bp-008h]                    ; 8b 5e f8
     5199    mov bx, word [bp-00ah]                    ; 8b 5e f6
    51495200    mov bx, word [es:bx+01ah]                 ; 26 8b 5f 1a
    51505201    sub dx, bx                                ; 29 da
    5151     mov bx, word [bp-008h]                    ; 8b 5e f8
     5202    mov bx, word [bp-00ah]                    ; 8b 5e f6
    51525203    mov word [es:bx+01ch], dx                 ; 26 89 57 1c
    5153     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
    5154     jbe short 03e02h                          ; 76 2a
    5155     push word [bp-00eh]                       ; ff 76 f2
    5156     push word [bp-00ch]                       ; ff 76 f4
     5204    cmp byte [bp-002h], 00ch                  ; 80 7e fe 0c
     5205    jc short 03e64h                           ; 72 28
     5206    push dword [bp-010h]                      ; 66 ff 76 f0
    51575207    push strict byte 00001h                   ; 6a 01
    5158     mov si, word [bp-00ah]                    ; 8b 76 f6
     5208    mov si, word [bp-006h]                    ; 8b 76 fa
    51595209    xor di, di                                ; 31 ff
    51605210    mov cx, strict word 00009h                ; b9 09 00
    51615211    sal si, 1                                 ; d1 e6
    51625212    rcl di, 1                                 ; d1 d7
    5163     loop 03de8h                               ; e2 fa
     5213    loop 03e4ah                               ; e2 fa
    51645214    push di                                   ; 57
    51655215    push si                                   ; 56
     
    51695219    lea bx, [bp-02ah]                         ; 8d 5e d6
    51705220    mov dx, strict word 0000ch                ; ba 0c 00
    5171     call 07f53h                               ; e8 53 41
    5172     jmp short 03e2ah                          ; eb 28
    5173     push word [bp-00eh]                       ; ff 76 f2
    5174     push word [bp-00ch]                       ; ff 76 f4
     5221    call 082c2h                               ; e8 60 44
     5222    jmp short 03eb8h                          ; eb 54
     5223    cmp byte [bp-002h], 008h                  ; 80 7e fe 08
     5224    jc short 03e92h                           ; 72 28
     5225    push dword [bp-010h]                      ; 66 ff 76 f0
    51755226    push strict byte 00001h                   ; 6a 01
    5176     mov si, word [bp-00ah]                    ; 8b 76 f6
     5227    mov si, word [bp-006h]                    ; 8b 76 fa
    51775228    xor di, di                                ; 31 ff
    51785229    mov cx, strict word 00009h                ; b9 09 00
    51795230    sal si, 1                                 ; d1 e6
    51805231    rcl di, 1                                 ; d1 d7
    5181     loop 03e12h                               ; e2 fa
     5232    loop 03e78h                               ; e2 fa
    51825233    push di                                   ; 57
    51835234    push si                                   ; 56
     
    51875238    lea bx, [bp-02ah]                         ; 8d 5e d6
    51885239    mov dx, strict word 0000ch                ; ba 0c 00
    5189     call 0280ah                               ; e8 e0 e9
     5240    call 07626h                               ; e8 96 37
     5241    jmp short 03eb8h                          ; eb 26
     5242    push dword [bp-010h]                      ; 66 ff 76 f0
     5243    push strict byte 00001h                   ; 6a 01
     5244    mov si, word [bp-006h]                    ; 8b 76 fa
     5245    xor di, di                                ; 31 ff
     5246    mov cx, strict word 00009h                ; b9 09 00
     5247    sal si, 1                                 ; d1 e6
     5248    rcl di, 1                                 ; d1 d7
     5249    loop 03ea0h                               ; e2 fa
     5250    push di                                   ; 57
     5251    push si                                   ; 56
     5252    push ax                                   ; 50
     5253    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     5254    mov cx, ss                                ; 8c d1
     5255    lea bx, [bp-02ah]                         ; 8d 5e d6
     5256    mov dx, strict word 0000ch                ; ba 0c 00
     5257    call 027eah                               ; e8 32 e9
    51905258    mov dl, al                                ; 88 c2
    5191     les bx, [bp-008h]                         ; c4 5e f8
     5259    les bx, [bp-00ah]                         ; c4 5e f6
    51925260    db  066h, 026h, 0c7h, 047h, 01ah, 000h, 000h, 000h, 000h
    51935261    ; mov dword [es:bx+01ah], strict dword 000000000h ; 66 26 c7 47 1a 00 00 00 00
    51945262    test dl, dl                               ; 84 d2
    5195     je near 03f0eh                            ; 0f 84 d0 00
    5196     mov bx, 00cd6h                            ; bb d6 0c
     5263    je near 03f98h                            ; 0f 84 cc 00
     5264    mov bx, 00cech                            ; bb ec 0c
    51975265    mov cx, ds                                ; 8c d9
    51985266    mov ax, strict word 00004h                ; b8 04 00
    5199     call 018aeh                               ; e8 65 da
     5267    call 018aeh                               ; e8 d7 d9
    52005268    movzx ax, dl                              ; 0f b6 c2
    52015269    push ax                                   ; 50
     
    52065274    push 002fch                               ; 68 fc 02
    52075275    push strict byte 00004h                   ; 6a 04
    5208     call 018e9h                               ; e8 8a da
     5276    call 018e9h                               ; e8 fc d9
    52095277    add sp, strict byte 0000ah                ; 83 c4 0a
    52105278    mov ax, word [bp+01ah]                    ; 8b 46 1a
     
    52135281    mov word [bp+01ah], ax                    ; 89 46 1a
    52145282    mov byte [bp+01ah], 000h                  ; c6 46 1a 00
    5215     jmp near 03f58h                           ; e9 e4 00
     5283    jmp near 03fe3h                           ; e9 e1 00
    52165284    mov es, [bp-004h]                         ; 8e 46 fc
    5217     mov di, word [es:si+014h]                 ; 26 8b 7c 14
     5285    mov ax, word [es:si+014h]                 ; 26 8b 44 14
     5286    mov word [bp-00ch], ax                    ; 89 46 f4
    52185287    mov dx, word [es:si+012h]                 ; 26 8b 54 12
    52195288    dec dx                                    ; 4a
    5220     mov bx, word [es:si+010h]                 ; 26 8b 5c 10
    5221     dec bx                                    ; 4b
     5289    mov di, word [es:si+010h]                 ; 26 8b 7c 10
     5290    dec di                                    ; 4f
    52225291    mov byte [bp+01ah], 000h                  ; c6 46 1a 00
    5223     mov ax, word [bp+014h]                    ; 8b 46 14
    5224     xor al, al                                ; 30 c0
    5225     mov cx, word [bp+018h]                    ; 8b 4e 18
    5226     xor ch, ch                                ; 30 ed
    5227     mov word [bp-018h], cx                    ; 89 4e e8
    5228     mov cx, dx                                ; 89 d1
    5229     xor ch, dh                                ; 30 f5
    5230     sal cx, 008h                              ; c1 e1 08
    5231     mov word [bp-016h], cx                    ; 89 4e ea
    5232     mov cx, word [bp-018h]                    ; 8b 4e e8
    5233     or cx, word [bp-016h]                     ; 0b 4e ea
    5234     mov word [bp+018h], cx                    ; 89 4e 18
     5292    mov cx, word [bp+014h]                    ; 8b 4e 14
     5293    xor cl, cl                                ; 30 c9
     5294    mov ax, word [bp+018h]                    ; 8b 46 18
     5295    xor ah, ah                                ; 30 e4
     5296    mov word [bp-01ah], ax                    ; 89 46 e6
     5297    mov ax, dx                                ; 89 d0
     5298    xor ah, dh                                ; 30 f4
     5299    sal ax, 008h                              ; c1 e0 08
     5300    mov bx, word [bp-01ah]                    ; 8b 5e e6
     5301    or bx, ax                                 ; 09 c3
     5302    mov word [bp+018h], bx                    ; 89 5e 18
    52355303    shr dx, 002h                              ; c1 ea 02
    52365304    xor dh, dh                                ; 30 f6
    52375305    and dl, 0c0h                              ; 80 e2 c0
    5238     mov word [bp-016h], dx                    ; 89 56 ea
    5239     mov dx, di                                ; 89 fa
    5240     xor dh, dh                                ; 30 f6
    5241     and dl, 03fh                              ; 80 e2 3f
    5242     or dx, word [bp-016h]                     ; 0b 56 ea
    5243     xor cl, cl                                ; 30 c9
    5244     or cx, dx                                 ; 09 d1
    5245     mov word [bp+018h], cx                    ; 89 4e 18
    5246     mov dx, word [bp+016h]                    ; 8b 56 16
    5247     xor dh, dh                                ; 30 f6
    5248     sal bx, 008h                              ; c1 e3 08
    5249     or dx, bx                                 ; 09 da
    5250     mov word [bp+016h], dx                    ; 89 56 16
    5251     xor dl, dl                                ; 30 d2
    5252     or dl, 002h                               ; 80 ca 02
    5253     mov word [bp+016h], dx                    ; 89 56 16
    5254     mov dl, byte [es:si+001h]                 ; 26 8a 54 01
    5255     mov word [bp+014h], ax                    ; 89 46 14
    5256     cmp dl, 003h                              ; 80 fa 03
    5257     je short 03f00h                           ; 74 1a
    5258     cmp dl, 002h                              ; 80 fa 02
    5259     je short 03efch                           ; 74 11
    5260     cmp dl, 001h                              ; 80 fa 01
    5261     jne short 03f04h                          ; 75 14
     5306    mov ax, word [bp-00ch]                    ; 8b 46 f4
     5307    and AL, strict byte 03fh                  ; 24 3f
     5308    or dl, al                                 ; 08 c2
     5309    mov ax, bx                                ; 89 d8
     5310    xor al, bl                                ; 30 d8
     5311    or ax, dx                                 ; 09 d0
     5312    mov word [bp+018h], ax                    ; 89 46 18
     5313    mov ax, word [bp+016h]                    ; 8b 46 16
     5314    xor ah, ah                                ; 30 e4
     5315    sal di, 008h                              ; c1 e7 08
     5316    or ax, di                                 ; 09 f8
     5317    mov word [bp+016h], ax                    ; 89 46 16
     5318    xor al, al                                ; 30 c0
     5319    or AL, strict byte 002h                   ; 0c 02
     5320    mov word [bp+016h], ax                    ; 89 46 16
     5321    mov al, byte [es:si+001h]                 ; 26 8a 44 01
     5322    mov word [bp+014h], cx                    ; 89 4e 14
     5323    cmp AL, strict byte 003h                  ; 3c 03
     5324    je short 03f89h                           ; 74 1c
     5325    cmp AL, strict byte 002h                  ; 3c 02
     5326    je short 03f81h                           ; 74 10
     5327    cmp AL, strict byte 001h                  ; 3c 01
     5328    jne short 03f8eh                          ; 75 19
    52625329    mov ax, word [bp+014h]                    ; 8b 46 14
    52635330    xor al, al                                ; 30 c0
    52645331    or AL, strict byte 002h                   ; 0c 02
    52655332    mov word [bp+014h], ax                    ; 89 46 14
    5266     jmp short 03f04h                          ; eb 08
    5267     or AL, strict byte 004h                   ; 0c 04
    5268     jmp short 03ef7h                          ; eb f7
    5269     or AL, strict byte 006h                   ; 0c 06
    5270     jmp short 03ef7h                          ; eb f3
     5333    jmp short 03f8eh                          ; eb 0d
     5334    or cl, 004h                               ; 80 c9 04
     5335    mov word [bp+014h], cx                    ; 89 4e 14
     5336    jmp short 03f8eh                          ; eb 05
     5337    or cl, 006h                               ; 80 c9 06
     5338    jmp short 03f84h                          ; eb f6
    52715339    mov word [bp+00ch], 0efc7h                ; c7 46 0c c7 ef
    52725340    mov word [bp+00ah], 0f000h                ; c7 46 0a 00 f0
     
    52755343    mov dx, strict word 00074h                ; ba 74 00
    52765344    mov ax, strict word 00040h                ; b8 40 00
    5277     call 0160eh                               ; e8 f1 d6
     5345    call 0160eh                               ; e8 67 d6
    52785346    and byte [bp+020h], 0feh                  ; 80 66 20 fe
    52795347    leave                                     ; c9
     
    52815349    pop si                                    ; 5e
    52825350    retn                                      ; c3
    5283     or bh, 003h                               ; 80 cf 03
    5284     mov word [bp+01ah], bx                    ; 89 5e 1a
    5285     jmp short 03f12h                          ; eb e5
    5286     mov bx, 00cd6h                            ; bb d6 0c
     5351    or di, 00300h                             ; 81 cf 00 03
     5352    mov word [bp+01ah], di                    ; 89 7e 1a
     5353    jmp short 03f9ch                          ; eb e4
     5354    mov bx, 00cech                            ; bb ec 0c
    52875355    mov cx, ds                                ; 8c d9
    52885356    mov ax, strict word 00004h                ; b8 04 00
    5289     call 018aeh                               ; e8 76 d9
     5357    call 018aeh                               ; e8 eb d8
    52905358    mov ax, word [bp+01ah]                    ; 8b 46 1a
    52915359    shr ax, 008h                              ; c1 e8 08
     
    52945362    push 0031dh                               ; 68 1d 03
    52955363    push strict byte 00004h                   ; 6a 04
    5296     call 018e9h                               ; e8 9f d9
     5364    call 018e9h                               ; e8 14 d9
    52975365    add sp, strict byte 00008h                ; 83 c4 08
    52985366    mov ax, word [bp+01ah]                    ; 8b 46 1a
     
    53055373    mov dx, strict word 00074h                ; ba 74 00
    53065374    mov ax, strict word 00040h                ; b8 40 00
    5307     call 0160eh                               ; e8 a5 d6
     5375    call 0160eh                               ; e8 1a d6
    53085376    or byte [bp+020h], 001h                   ; 80 4e 20 01
    5309     jmp short 03f21h                          ; eb b2
     5377    jmp short 03fabh                          ; eb b1
    53105378    push ax                                   ; 50
    53115379    dec si                                    ; 4e
     
    53265394    add AL, strict byte 003h                  ; 04 03
    53275395    add al, byte [bx+di]                      ; 02 01
    5328     add byte [bx+si], bl                      ; 00 18
     5396    add dh, ch                                ; 00 ee
    53295397    inc bp                                    ; 45
    5330     xchg si, ax                               ; 96
     5398    xchg di, ax                               ; 97
     5399    inc bp                                    ; 45
     5400    inc byte [bx+si-012h]                     ; fe 40 ee
     5401    inc bp                                    ; 45
     5402    rep inc ax                                ; f3 40
     5403    out DX, AL                                ; ee
     5404    inc bp                                    ; 45
     5405    rep inc ax                                ; f3 40
     5406    out DX, AL                                ; ee
     5407    inc bp                                    ; 45
     5408    xchg di, ax                               ; 97
     5409    inc bp                                    ; 45
     5410    out DX, AL                                ; ee
     5411    inc bp                                    ; 45
     5412    out DX, AL                                ; ee
     5413    inc bp                                    ; 45
     5414    xchg di, ax                               ; 97
     5415    inc bp                                    ; 45
     5416    xchg di, ax                               ; 97
     5417    inc bp                                    ; 45
     5418    xchg di, ax                               ; 97
     5419    inc bp                                    ; 45
     5420    xchg di, ax                               ; 97
     5421    inc bp                                    ; 45
     5422    xchg di, ax                               ; 97
     5423    inc bp                                    ; 45
     5424    sub byte [bx+di-069h], al                 ; 28 41 97
     5425    inc bp                                    ; 45
     5426    out DX, AL                                ; ee
     5427    inc bp                                    ; 45
     5428    xor word [bx+di+044h], ax                 ; 31 41 44
     5429    inc cx                                    ; 41
     5430    rep inc ax                                ; f3 40
     5431    inc sp                                    ; 44
     5432    inc cx                                    ; 41
     5433    iret                                      ; cf
    53315434    inc dx                                    ; 42
    5332     jnc short 03fd2h                          ; 73 40
    5333     sbb byte [di+068h], al                    ; 18 45 68
    5334     inc ax                                    ; 40
    5335     sbb byte [di+068h], al                    ; 18 45 68
    5336     inc ax                                    ; 40
    5337     sbb byte [di-06ah], al                    ; 18 45 96
    5338     inc dx                                    ; 42
    5339     sbb byte [di+018h], al                    ; 18 45 18
     5435    jc short 0408ch                           ; 72 43
     5436    inc sp                                    ; 44
     5437    inc cx                                    ; 41
     5438    lahf                                      ; 9f
     5439    inc bx                                    ; 43
     5440    scasb                                     ; ae
    53405441    inc bp                                    ; 45
    5341     xchg si, ax                               ; 96
    5342     inc dx                                    ; 42
    5343     xchg si, ax                               ; 96
    5344     inc dx                                    ; 42
    5345     xchg si, ax                               ; 96
    5346     inc dx                                    ; 42
    5347     xchg si, ax                               ; 96
    5348     inc dx                                    ; 42
    5349     xchg si, ax                               ; 96
    5350     inc dx                                    ; 42
    5351     popfw                                     ; 9d
    5352     inc ax                                    ; 40
    5353     xchg si, ax                               ; 96
    5354     inc dx                                    ; 42
    5355     sbb byte [di-05ah], al                    ; 18 45 a6
    5356     inc ax                                    ; 40
    5357     mov cx, 06840h                            ; b9 40 68
    5358     inc ax                                    ; 40
    5359     mov cx, 00740h                            ; b9 40 07
    5360     inc dx                                    ; 42
    5361     lodsw                                     ; ad
    5362     inc dx                                    ; 42
    5363     mov cx, 0d840h                            ; b9 40 d8
    5364     inc dx                                    ; 42
    5365     rol word [si-027h], 1                     ; d1 44 d9
    5366     inc sp                                    ; 44
    5367     db  018h
     5442    mov DH, strict byte 045h                  ; b6 45
     5443    out DX, AL                                ; ee
    53685444    inc bp                                    ; 45
    5369 _int13_cdrom:                                ; 0xf3fc8 LB 0x56d
     5445_int13_cdrom:                                ; 0xf4053 LB 0x5b8
    53705446    push si                                   ; 56
    53715447    push di                                   ; 57
     
    53735449    mov dx, strict word 0000eh                ; ba 0e 00
    53745450    mov ax, strict word 00040h                ; b8 40 00
    5375     call 0161ch                               ; e8 45 d6
     5451    call 0161ch                               ; e8 ba d5
    53765452    mov word [bp-018h], ax                    ; 89 46 e8
    53775453    mov si, 00122h                            ; be 22 01
     
    53805456    mov dx, strict word 00074h                ; ba 74 00
    53815457    mov ax, strict word 00040h                ; b8 40 00
    5382     call 0160eh                               ; e8 23 d6
     5458    call 0160eh                               ; e8 98 d5
    53835459    mov ax, word [bp+014h]                    ; 8b 46 14
    53845460    xor ah, ah                                ; 30 e4
    53855461    cmp ax, 000e0h                            ; 3d e0 00
    5386     jc short 03ffah                           ; 72 05
     5462    jc short 04085h                           ; 72 05
    53875463    cmp ax, 000f0h                            ; 3d f0 00
    5388     jc short 04018h                           ; 72 1e
     5464    jc short 040a3h                           ; 72 1e
    53895465    mov ax, word [bp+014h]                    ; 8b 46 14
    53905466    xor ah, ah                                ; 30 e4
     
    53965472    push 00359h                               ; 68 59 03
    53975473    push strict byte 00004h                   ; 6a 04
    5398     call 018e9h                               ; e8 d7 d8
     5474    call 018e9h                               ; e8 4c d8
    53995475    add sp, strict byte 0000ah                ; 83 c4 0a
    5400     jmp near 044f5h                           ; e9 dd 04
     5476    jmp near 045cch                           ; e9 29 05
    54015477    mov ax, word [bp+014h]                    ; 8b 46 14
    54025478    xor ah, ah                                ; 30 e4
     
    54055481    add bx, ax                                ; 01 c3
    54065482    mov dl, byte [es:bx+000d0h]               ; 26 8a 97 d0 00
    5407     mov byte [bp-006h], dl                    ; 88 56 fa
     5483    mov byte [bp-002h], dl                    ; 88 56 fe
    54085484    cmp dl, 010h                              ; 80 fa 10
    5409     jc short 04041h                           ; 72 10
     5485    jc short 040cch                           ; 72 10
    54105486    push ax                                   ; 50
    54115487    mov ax, word [bp+01ch]                    ; 8b 46 1c
     
    54145490    push 0034dh                               ; 68 4d 03
    54155491    push 00384h                               ; 68 84 03
    5416     jmp short 0400dh                          ; eb cc
     5492    jmp short 04098h                          ; eb cc
    54175493    mov ax, word [bp+01ch]                    ; 8b 46 1c
    54185494    shr ax, 008h                              ; c1 e8 08
    54195495    cmp ax, strict word 00050h                ; 3d 50 00
    5420     jnbe near 04518h                          ; 0f 87 ca 04
     5496    jnbe near 045eeh                          ; 0f 87 15 05
    54215497    push CS                                   ; 0e
    54225498    pop ES                                    ; 07
    54235499    mov cx, strict word 0001eh                ; b9 1e 00
    5424     mov di, 03f6fh                            ; bf 6f 3f
     5500    mov di, 03ffah                            ; bf fa 3f
    54255501    repne scasb                               ; f2 ae
    54265502    sal cx, 1                                 ; d1 e1
    54275503    mov di, cx                                ; 89 cf
    5428     mov ax, word [cs:di+03f8ch]               ; 2e 8b 85 8c 3f
     5504    mov ax, word [cs:di+04017h]               ; 2e 8b 85 17 40
    54295505    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    54305506    xor bh, bh                                ; 30 ff
     
    54335509    xor ah, ah                                ; 30 e4
    54345510    or ah, 003h                               ; 80 cc 03
    5435     jmp near 044fdh                           ; e9 8a 04
     5511    jmp near 045d4h                           ; e9 d6 04
    54365512    mov dx, strict word 00074h                ; ba 74 00
    54375513    mov ax, strict word 00040h                ; b8 40 00
    5438     call 01600h                               ; e8 84 d5
     5514    call 01600h                               ; e8 f9 d4
    54395515    mov cl, al                                ; 88 c1
    54405516    movzx ax, cl                              ; 0f b6 c1
     
    54455521    mov dx, strict word 00074h                ; ba 74 00
    54465522    mov ax, strict word 00040h                ; b8 40 00
    5447     call 0160eh                               ; e8 7a d5
     5523    call 0160eh                               ; e8 ef d4
    54485524    test cl, cl                               ; 84 c9
    5449     je near 0429ah                            ; 0f 84 00 02
    5450     jmp near 04511h                           ; e9 74 04
     5525    je near 0459bh                            ; 0f 84 76 04
     5526    jmp near 045e8h                           ; e9 c0 04
    54515527    or bh, 002h                               ; 80 cf 02
    54525528    mov word [bp+01ch], bx                    ; 89 5e 1c
    5453     jmp near 04500h                           ; e9 5a 04
     5529    jmp near 045d7h                           ; e9 a6 04
    54545530    mov word [bp+016h], 0aa55h                ; c7 46 16 55 aa
    54555531    or bh, 030h                               ; 80 cf 30
    54565532    mov word [bp+01ch], bx                    ; 89 5e 1c
    54575533    mov word [bp+01ah], strict word 00007h    ; c7 46 1a 07 00
    5458     jmp near 0429ah                           ; e9 e1 01
     5534    jmp near 0459bh                           ; e9 57 04
    54595535    mov bx, word [bp+010h]                    ; 8b 5e 10
    54605536    mov es, [bp+00ah]                         ; 8e 46 0a
    54615537    mov di, bx                                ; 89 df
    5462     mov [bp-012h], es                         ; 8c 46 ee
     5538    mov [bp-016h], es                         ; 8c 46 ea
    54635539    mov ax, word [es:bx+002h]                 ; 26 8b 47 02
    5464     mov word [bp-00ch], ax                    ; 89 46 f4
     5540    mov word [bp-01ch], ax                    ; 89 46 e4
    54655541    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     5542    mov word [bp-012h], ax                    ; 89 46 ee
     5543    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     5544    mov word [bp-010h], ax                    ; 89 46 f0
     5545    mov ax, word [es:bx+00ch]                 ; 26 8b 47 0c
    54665546    mov word [bp-014h], ax                    ; 89 46 ec
    5467     mov ax, word [es:bx+004h]                 ; 26 8b 47 04
    5468     mov word [bp-016h], ax                    ; 89 46 ea
    5469     mov ax, word [es:bx+00ch]                 ; 26 8b 47 0c
    5470     mov word [bp-010h], ax                    ; 89 46 f0
    54715547    mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
    5472     mov word [bp-01ch], ax                    ; 89 46 e4
    5473     or ax, word [bp-010h]                     ; 0b 46 f0
    5474     je short 04104h                           ; 74 18
     5548    mov word [bp-00eh], ax                    ; 89 46 f2
     5549    or ax, word [bp-014h]                     ; 0b 46 ec
     5550    je short 0418fh                           ; 74 18
    54755551    mov ax, word [bp+01ch]                    ; 8b 46 1c
    54765552    shr ax, 008h                              ; c1 e8 08
     
    54795555    push 003b6h                               ; 68 b6 03
    54805556    push strict byte 00007h                   ; 6a 07
    5481     call 018e9h                               ; e8 eb d7
     5557    call 018e9h                               ; e8 60 d7
    54825558    add sp, strict byte 00008h                ; 83 c4 08
    5483     jmp near 044f5h                           ; e9 f1 03
    5484     mov es, [bp-012h]                         ; 8e 46 ee
     5559    jmp near 045cch                           ; e9 3d 04
     5560    mov es, [bp-016h]                         ; 8e 46 ea
    54855561    mov ax, word [es:di+008h]                 ; 26 8b 45 08
    5486     mov word [bp-010h], ax                    ; 89 46 f0
     5562    mov word [bp-014h], ax                    ; 89 46 ec
    54875563    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
    5488     mov word [bp-01ch], ax                    ; 89 46 e4
     5564    mov word [bp-00eh], ax                    ; 89 46 f2
    54895565    mov ax, word [bp+01ch]                    ; 8b 46 1c
    54905566    shr ax, 008h                              ; c1 e8 08
    54915567    cmp ax, strict word 00044h                ; 3d 44 00
    5492     je near 04296h                            ; 0f 84 74 01
     5568    je near 04597h                            ; 0f 84 ea 03
    54935569    cmp ax, strict word 00047h                ; 3d 47 00
    5494     je near 04296h                            ; 0f 84 6d 01
     5570    je near 04597h                            ; 0f 84 e3 03
    54955571    mov cx, strict word 0000ch                ; b9 0c 00
    54965572    xor bx, bx                                ; 31 db
    54975573    mov dx, ss                                ; 8c d2
    54985574    lea ax, [bp-028h]                         ; 8d 46 d8
    5499     call 08caah                               ; e8 74 4b
     5575    call 0902ah                               ; e8 69 4e
    55005576    mov word [bp-028h], strict word 00028h    ; c7 46 d8 28 00
    5501     mov ax, word [bp-010h]                    ; 8b 46 f0
    5502     mov dx, word [bp-01ch]                    ; 8b 56 e4
     5577    mov ax, word [bp-014h]                    ; 8b 46 ec
     5578    mov dx, word [bp-00eh]                    ; 8b 56 f2
    55035579    xchg ah, al                               ; 86 c4
    55045580    xchg dh, dl                               ; 86 d6
     
    55065582    mov word [bp-026h], ax                    ; 89 46 da
    55075583    mov word [bp-024h], dx                    ; 89 56 dc
    5508     mov ax, word [bp-00ch]                    ; 8b 46 f4
     5584    mov ax, word [bp-01ch]                    ; 8b 46 e4
    55095585    xchg ah, al                               ; 86 c4
    55105586    mov word [bp-021h], ax                    ; 89 46 df
    5511     les ax, [bp-00ch]                         ; c4 46 f4
     5587    mov ax, word [bp-01ch]                    ; 8b 46 e4
     5588    mov es, [bp-00ah]                         ; 8e 46 f6
    55125589    mov word [es:si+00ah], ax                 ; 26 89 44 0a
    55135590    mov word [es:si+00ch], 00800h             ; 26 c7 44 0c 00 08
    5514     cmp byte [bp-006h], 008h                  ; 80 7e fa 08
    5515     jbe short 0418dh                          ; 76 26
    5516     push dword [bp-016h]                      ; 66 ff 76 ea
     5591    mov al, byte [bp-002h]                    ; 8a 46 fe
     5592    cmp AL, strict byte 00ch                  ; 3c 0c
     5593    jc short 04221h                           ; 72 2b
     5594    push word [bp-012h]                       ; ff 76 ee
     5595    push word [bp-010h]                       ; ff 76 f0
    55175596    push strict byte 00001h                   ; 6a 01
     5597    mov ax, word [bp-01ch]                    ; 8b 46 e4
    55185598    xor bx, bx                                ; 31 db
    55195599    mov cx, strict word 0000bh                ; b9 0b 00
    55205600    sal ax, 1                                 ; d1 e0
    55215601    rcl bx, 1                                 ; d1 d3
    5522     loop 04172h                               ; e2 fa
     5602    loop 04206h                               ; e2 fa
    55235603    push bx                                   ; 53
    55245604    push ax                                   ; 50
    55255605    push strict byte 00000h                   ; 6a 00
    5526     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     5606    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    55275607    mov cx, ss                                ; 8c d1
    55285608    lea bx, [bp-028h]                         ; 8d 5e d8
    55295609    mov dx, strict word 0000ch                ; ba 0c 00
    5530     call 07f53h                               ; e8 c8 3d
    5531     jmp short 041b1h                          ; eb 24
    5532     push dword [bp-016h]                      ; 66 ff 76 ea
     5610    call 082c2h                               ; e8 a3 40
     5611    jmp short 04279h                          ; eb 58
     5612    cmp AL, strict byte 008h                  ; 3c 08
     5613    jc short 04250h                           ; 72 2b
     5614    push word [bp-012h]                       ; ff 76 ee
     5615    push word [bp-010h]                       ; ff 76 f0
    55335616    push strict byte 00001h                   ; 6a 01
     5617    mov ax, word [bp-01ch]                    ; 8b 46 e4
    55345618    xor bx, bx                                ; 31 db
    55355619    mov cx, strict word 0000bh                ; b9 0b 00
    55365620    sal ax, 1                                 ; d1 e0
    55375621    rcl bx, 1                                 ; d1 d3
    5538     loop 04198h                               ; e2 fa
     5622    loop 04235h                               ; e2 fa
    55395623    push bx                                   ; 53
    55405624    push ax                                   ; 50
    55415625    push strict byte 00000h                   ; 6a 00
    5542     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     5626    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    55435627    mov cx, ss                                ; 8c d1
    55445628    lea bx, [bp-028h]                         ; 8d 5e d8
    55455629    mov dx, strict word 0000ch                ; ba 0c 00
    5546     call 0280ah                               ; e8 59 e6
    5547     mov byte [bp-004h], al                    ; 88 46 fc
     5630    call 07626h                               ; e8 d8 33
     5631    jmp short 04279h                          ; eb 29
     5632    push word [bp-012h]                       ; ff 76 ee
     5633    push word [bp-010h]                       ; ff 76 f0
     5634    push strict byte 00001h                   ; 6a 01
     5635    mov ax, word [bp-01ch]                    ; 8b 46 e4
     5636    xor bx, bx                                ; 31 db
     5637    mov cx, strict word 0000bh                ; b9 0b 00
     5638    sal ax, 1                                 ; d1 e0
     5639    rcl bx, 1                                 ; d1 d3
     5640    loop 04260h                               ; e2 fa
     5641    push bx                                   ; 53
     5642    push ax                                   ; 50
     5643    push strict byte 00000h                   ; 6a 00
     5644    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     5645    mov cx, ss                                ; 8c d1
     5646    lea bx, [bp-028h]                         ; 8d 5e d8
     5647    mov dx, strict word 0000ch                ; ba 0c 00
     5648    call 027eah                               ; e8 71 e5
     5649    mov byte [bp-006h], al                    ; 88 46 fa
    55485650    mov es, [bp-00ah]                         ; 8e 46 f6
    55495651    mov ax, word [es:si+016h]                 ; 26 8b 44 16
     
    55525654    shr bx, 1                                 ; d1 eb
    55535655    rcr ax, 1                                 ; d1 d8
    5554     loop 041c2h                               ; e2 fa
    5555     mov es, [bp-012h]                         ; 8e 46 ee
     5656    loop 0428ah                               ; e2 fa
     5657    mov es, [bp-016h]                         ; 8e 46 ea
    55565658    mov word [es:di+002h], ax                 ; 26 89 45 02
    5557     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    5558     je near 04296h                            ; 0f 84 bf 00
    5559     mov bx, 00cd6h                            ; bb d6 0c
     5659    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
     5660    je near 04597h                            ; 0f 84 f8 02
     5661    mov bx, 00cech                            ; bb ec 0c
    55605662    mov cx, ds                                ; 8c d9
    55615663    mov ax, strict word 00004h                ; b8 04 00
    5562     call 018aeh                               ; e8 cc d6
    5563     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     5664    call 018aeh                               ; e8 04 d6
     5665    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    55645666    push ax                                   ; 50
    55655667    mov ax, word [bp+01ch]                    ; 8b 46 1c
     
    55695671    push 003dfh                               ; 68 df 03
    55705672    push strict byte 00004h                   ; 6a 04
    5571     call 018e9h                               ; e8 f0 d6
     5673    call 018e9h                               ; e8 28 d6
    55725674    add sp, strict byte 0000ah                ; 83 c4 0a
    55735675    mov ax, word [bp+01ch]                    ; 8b 46 1c
    55745676    xor ah, ah                                ; 30 e4
    55755677    or ah, 00ch                               ; 80 cc 0c
    5576     jmp near 044fdh                           ; e9 f6 02
     5678    jmp near 045d4h                           ; e9 05 03
    55775679    cmp bx, strict byte 00002h                ; 83 fb 02
    5578     jnbe near 044f5h                          ; 0f 87 e7 02
    5579     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     5680    jnbe near 045cch                          ; 0f 87 f6 02
     5681    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    55805682    imul ax, ax, strict byte 00018h           ; 6b c0 18
    55815683    mov es, [bp-00ah]                         ; 8e 46 f6
     
    55845686    mov al, byte [es:di+021h]                 ; 26 8a 45 21
    55855687    cmp bx, strict byte 00002h                ; 83 fb 02
    5586     je short 04287h                           ; 74 62
     5688    je short 04361h                           ; 74 74
    55875689    cmp bx, strict byte 00001h                ; 83 fb 01
    5588     je short 04265h                           ; 74 3b
     5690    je short 0432dh                           ; 74 3b
    55895691    test bx, bx                               ; 85 db
    5590     jne near 04296h                           ; 0f 85 66 00
     5692    jne near 04597h                           ; 0f 85 9f 02
    55915693    cmp AL, strict byte 0ffh                  ; 3c ff
    5592     jne short 04246h                          ; 75 12
     5694    jne short 0430eh                          ; 75 12
    55935695    mov ax, word [bp+01ch]                    ; 8b 46 1c
    55945696    xor ah, ah                                ; 30 e4
     
    55975699    xor al, al                                ; 30 c0
    55985700    or AL, strict byte 001h                   ; 0c 01
    5599     jmp near 044fdh                           ; e9 b7 02
    5600     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     5701    jmp near 045d4h                           ; e9 c6 02
     5702    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
    56015703    imul dx, dx, strict byte 00018h           ; 6b d2 18
    56025704    db  0feh, 0c0h
     
    56095711    or AL, strict byte 001h                   ; 0c 01
    56105712    mov word [bp+01ch], ax                    ; 89 46 1c
    5611     jmp near 04296h                           ; e9 31 00
     5713    jmp near 04597h                           ; e9 6a 02
    56125714    test al, al                               ; 84 c0
    5613     jne short 04275h                          ; 75 0c
     5715    jne short 0433dh                          ; 75 0c
    56145716    or bh, 0b0h                               ; 80 cf b0
    56155717    mov word [bp+01ch], bx                    ; 89 5e 1c
    56165718    mov byte [bp+01ch], al                    ; 88 46 1c
    5617     jmp near 04500h                           ; e9 8b 02
    5618     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     5719    jmp near 045d7h                           ; e9 9a 02
     5720    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
    56195721    imul dx, dx, strict byte 00018h           ; 6b d2 18
    56205722    db  0feh, 0c8h
     
    56305732    mov dl, al                                ; 88 c2
    56315733    mov word [bp+01ch], dx                    ; 89 56 1c
    5632     mov byte [bp+01dh], 000h                  ; c6 46 1d 00
    5633     xor bx, bx                                ; 31 db
    5634     mov dx, strict word 00074h                ; ba 74 00
    5635     mov ax, strict word 00040h                ; b8 40 00
    5636     call 0160eh                               ; e8 69 d3
    5637     and byte [bp+022h], 0feh                  ; 80 66 22 fe
    5638     leave                                     ; c9
    5639     pop di                                    ; 5f
    5640     pop si                                    ; 5e
    5641     retn                                      ; c3
    5642     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     5734    jmp near 04597h                           ; e9 36 02
     5735    test al, al                               ; 84 c0
     5736    db  00fh, 095h, 0c0h
     5737    ; setne al                                  ; 0f 95 c0
     5738    movzx dx, al                              ; 0f b6 d0
     5739    mov ax, word [bp+01ch]                    ; 8b 46 1c
     5740    xor al, al                                ; 30 c0
     5741    or ax, dx                                 ; 09 d0
     5742    jmp short 04327h                          ; eb b5
     5743    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    56435744    imul ax, ax, strict byte 00018h           ; 6b c0 18
    56445745    mov es, [bp-00ah]                         ; 8e 46 f6
     
    56465747    mov al, byte [es:si+021h]                 ; 26 8a 44 21
    56475748    test al, al                               ; 84 c0
    5648     je short 042c7h                           ; 74 06
     5749    je short 0438ch                           ; 74 06
    56495750    or bh, 0b1h                               ; 80 cf b1
    5650     jmp near 040a0h                           ; e9 d9 fd
    5651     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    5652     je short 04296h                           ; 74 c9
     5751    jmp near 0412bh                           ; e9 9f fd
     5752    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
     5753    je near 04597h                            ; 0f 84 03 02
    56535754    mov ax, word [bp+01ch]                    ; 8b 46 1c
    56545755    xor ah, ah                                ; 30 e4
    56555756    or ah, 0b1h                               ; 80 cc b1
    5656     jmp near 044fdh                           ; e9 25 02
     5757    jmp near 045d4h                           ; e9 35 02
    56575758    mov dx, word [bp+010h]                    ; 8b 56 10
    56585759    mov cx, word [bp+00ah]                    ; 8b 4e 0a
     
    56625763    mov di, dx                                ; 89 d7
    56635764    mov ax, word [es:di]                      ; 26 8b 05
    5664     mov word [bp-00eh], ax                    ; 89 46 f2
     5765    mov word [bp-00ch], ax                    ; 89 46 f4
    56655766    cmp ax, strict word 0001ah                ; 3d 1a 00
    5666     jc near 044f5h                            ; 0f 82 01 02
    5667     jc short 04343h                           ; 72 4d
    5668     movzx di, byte [bp-006h]                  ; 0f b6 7e fa
     5767    jc near 045cch                            ; 0f 82 11 02
     5768    jc short 0440ah                           ; 72 4d
     5769    movzx di, byte [bp-002h]                  ; 0f b6 7e fe
    56695770    imul di, di, strict byte 00018h           ; 6b ff 18
    56705771    mov es, [bp-00ah]                         ; 8e 46 f6
     
    56865787    db  066h, 026h, 0c7h, 045h, 014h, 0ffh, 0ffh, 0ffh, 0ffh
    56875788    ; mov dword [es:di+014h], strict dword 0ffffffffh ; 66 26 c7 45 14 ff ff ff ff
    5688     cmp word [bp-00eh], strict byte 0001eh    ; 83 7e f2 1e
    5689     jc near 04419h                            ; 0f 82 ce 00
     5789    cmp word [bp-00ch], strict byte 0001eh    ; 83 7e f4 1e
     5790    jc near 044e2h                            ; 0f 82 d0 00
    56905791    mov es, [bp-008h]                         ; 8e 46 f8
    56915792    mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
     
    56935794    mov word [es:bx+01ch], ax                 ; 26 89 47 1c
    56945795    mov word [es:bx+01ah], 00312h             ; 26 c7 47 1a 12 03
    5695     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     5796    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    56965797    mov ax, cx                                ; 89 c8
    56975798    cwd                                       ; 99
     
    57045805    mov di, si                                ; 89 f7
    57055806    add di, ax                                ; 01 c7
    5706     mov dx, word [es:di+001c2h]               ; 26 8b 95 c2 01
    5707     mov ax, word [es:di+001c4h]               ; 26 8b 85 c4 01
     5807    mov ax, word [es:di+001c2h]               ; 26 8b 85 c2 01
    57085808    mov word [bp-01ah], ax                    ; 89 46 e6
     5809    mov dx, word [es:di+001c4h]               ; 26 8b 95 c4 01
    57095810    mov al, byte [es:di+001c1h]               ; 26 8a 85 c1 01
    5710     mov byte [bp-002h], al                    ; 88 46 fe
     5811    mov byte [bp-004h], al                    ; 88 46 fc
    57115812    imul cx, cx, strict byte 00018h           ; 6b c9 18
    57125813    mov di, si                                ; 89 f7
     
    57165817    db  00fh, 094h, 0c0h
    57175818    ; sete al                                   ; 0f 94 c0
    5718     xor ah, ah                                ; 30 e4
    5719     or AL, strict byte 070h                   ; 0c 70
    5720     mov di, ax                                ; 89 c7
    5721     mov word [es:si+001f0h], dx               ; 26 89 94 f0 01
     5819    movzx cx, al                              ; 0f b6 c8
     5820    or cl, 070h                               ; 80 c9 70
    57225821    mov ax, word [bp-01ah]                    ; 8b 46 e6
    5723     mov word [es:si+001f2h], ax               ; 26 89 84 f2 01
    5724     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     5822    mov word [es:si+001f0h], ax               ; 26 89 84 f0 01
     5823    mov word [es:si+001f2h], dx               ; 26 89 94 f2 01
     5824    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    57255825    cwd                                       ; 99
    5726     mov cx, strict word 00002h                ; b9 02 00
    5727     idiv cx                                   ; f7 f9
     5826    mov di, strict word 00002h                ; bf 02 00
     5827    idiv di                                   ; f7 ff
    57285828    or dl, 00eh                               ; 80 ca 0e
    5729     sal dx, 004h                              ; c1 e2 04
    5730     mov byte [es:si+001f4h], dl               ; 26 88 94 f4 01
     5829    mov ax, dx                                ; 89 d0
     5830    sal ax, 004h                              ; c1 e0 04
     5831    mov byte [es:si+001f4h], al               ; 26 88 84 f4 01
    57315832    mov byte [es:si+001f5h], 0cbh             ; 26 c6 84 f5 01 cb
    5732     mov al, byte [bp-002h]                    ; 8a 46 fe
     5833    mov al, byte [bp-004h]                    ; 8a 46 fc
    57335834    mov byte [es:si+001f6h], al               ; 26 88 84 f6 01
    57345835    mov word [es:si+001f7h], strict word 00001h ; 26 c7 84 f7 01 01 00
    57355836    mov byte [es:si+001f9h], 000h             ; 26 c6 84 f9 01 00
    5736     mov word [es:si+001fah], di               ; 26 89 bc fa 01
     5837    mov word [es:si+001fah], cx               ; 26 89 8c fa 01
    57375838    mov word [es:si+001fch], strict word 00000h ; 26 c7 84 fc 01 00 00
    57385839    mov byte [es:si+001feh], 011h             ; 26 c6 84 fe 01 11
    57395840    xor cl, cl                                ; 30 c9
    57405841    xor ch, ch                                ; 30 ed
    5741     jmp short 043fch                          ; eb 05
     5842    jmp short 044c5h                          ; eb 05
    57425843    cmp ch, 00fh                              ; 80 fd 0f
    5743     jnc short 0440fh                          ; 73 13
     5844    jnc short 044d8h                          ; 73 13
    57445845    movzx dx, ch                              ; 0f b6 d5
    57455846    add dx, 00312h                            ; 81 c2 12 03
    57465847    mov ax, word [bp-018h]                    ; 8b 46 e8
    5747     call 01600h                               ; e8 f7 d1
     5848    call 01600h                               ; e8 2e d1
    57485849    add cl, al                                ; 00 c1
    57495850    db  0feh, 0c5h
    57505851    ; inc ch                                    ; fe c5
    5751     jmp short 043f7h                          ; eb e8
     5852    jmp short 044c0h                          ; eb e8
    57525853    neg cl                                    ; f6 d9
    57535854    mov es, [bp-00ah]                         ; 8e 46 f6
    57545855    mov byte [es:si+001ffh], cl               ; 26 88 8c ff 01
    5755     cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
    5756     jc near 04296h                            ; 0f 82 75 fe
    5757     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     5856    cmp word [bp-00ch], strict byte 00042h    ; 83 7e f4 42
     5857    jc near 04597h                            ; 0f 82 ad 00
     5858    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    57585859    cwd                                       ; 99
    57595860    db  02bh, 0c2h
     
    57725873    mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
    57735874    test al, al                               ; 84 c0
    5774     jne short 04462h                          ; 75 09
     5875    jne short 0452bh                          ; 75 09
    57755876    db  066h, 026h, 0c7h, 047h, 024h, 049h, 053h, 041h, 020h
    57765877    ; mov dword [es:bx+024h], strict dword 020415349h ; 66 26 c7 47 24 49 53 41 20
     
    57815882    ; mov dword [es:bx+02ch], strict dword 020202020h ; 66 26 c7 47 2c 20 20 20 20
    57825883    test al, al                               ; 84 c0
    5783     jne short 0448eh                          ; 75 13
     5884    jne short 04557h                          ; 75 13
    57845885    mov word [es:bx+030h], dx                 ; 26 89 57 30
    57855886    db  066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
    57865887    ; mov dword [es:bx+032h], strict dword 000000000h ; 66 26 c7 47 32 00 00 00 00
    57875888    mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00
    5788     mov al, byte [bp-006h]                    ; 8a 46 fa
     5889    mov al, byte [bp-002h]                    ; 8a 46 fe
    57895890    and AL, strict byte 001h                  ; 24 01
    57905891    xor ah, ah                                ; 30 e4
     
    57965897    xor al, al                                ; 30 c0
    57975898    mov AH, strict byte 01eh                  ; b4 1e
    5798     jmp short 044b6h                          ; eb 05
     5899    jmp short 0457fh                          ; eb 05
    57995900    cmp ah, 040h                              ; 80 fc 40
    5800     jnc short 044c5h                          ; 73 0f
     5901    jnc short 0458eh                          ; 73 0f
    58015902    movzx si, ah                              ; 0f b6 f4
    58025903    mov es, [bp-008h]                         ; 8e 46 f8
     
    58055906    db  0feh, 0c4h
    58065907    ; inc ah                                    ; fe c4
    5807     jmp short 044b1h                          ; eb ec
     5908    jmp short 0457ah                          ; eb ec
    58085909    neg al                                    ; f6 d8
    58095910    mov es, [bp-008h]                         ; 8e 46 f8
    58105911    mov byte [es:bx+041h], al                 ; 26 88 47 41
    5811     jmp near 04296h                           ; e9 c5 fd
     5912    mov byte [bp+01dh], 000h                  ; c6 46 1d 00
     5913    xor bx, bx                                ; 31 db
     5914    mov dx, strict word 00074h                ; ba 74 00
     5915    mov ax, strict word 00040h                ; b8 40 00
     5916    call 0160eh                               ; e8 68 d0
     5917    and byte [bp+022h], 0feh                  ; 80 66 22 fe
     5918    leave                                     ; c9
     5919    pop di                                    ; 5f
     5920    pop si                                    ; 5e
     5921    retn                                      ; c3
    58125922    or bh, 006h                               ; 80 cf 06
    58135923    mov word [bp+01ch], bx                    ; 89 5e 1c
    5814     jmp short 04511h                          ; eb 38
     5924    jmp short 045e8h                          ; eb 32
    58155925    cmp bx, strict byte 00006h                ; 83 fb 06
    5816     je near 04296h                            ; 0f 84 b6 fd
     5926    je short 04597h                           ; 74 dc
    58175927    cmp bx, strict byte 00001h                ; 83 fb 01
    5818     jc short 044f5h                           ; 72 10
    5819     jbe near 04296h                           ; 0f 86 ad fd
     5928    jc short 045cch                           ; 72 0c
     5929    jbe short 04597h                          ; 76 d5
    58205930    cmp bx, strict byte 00003h                ; 83 fb 03
    5821     jc short 044f5h                           ; 72 07
     5931    jc short 045cch                           ; 72 05
    58225932    cmp bx, strict byte 00004h                ; 83 fb 04
    5823     jbe near 04296h                           ; 0f 86 a1 fd
     5933    jbe short 04597h                          ; 76 cb
    58245934    mov ax, word [bp+01ch]                    ; 8b 46 1c
    58255935    xor ah, ah                                ; 30 e4
     
    58315941    mov dx, strict word 00074h                ; ba 74 00
    58325942    mov ax, strict word 00040h                ; b8 40 00
    5833     call 0160eh                               ; e8 fd d0
     5943    call 0160eh                               ; e8 26 d0
    58345944    or byte [bp+022h], 001h                   ; 80 4e 22 01
    5835     jmp near 042a9h                           ; e9 91 fd
    5836     mov bx, 00cd6h                            ; bb d6 0c
     5945    jmp short 045aah                          ; eb bc
     5946    mov bx, 00cech                            ; bb ec 0c
    58375947    mov cx, ds                                ; 8c d9
    58385948    mov ax, strict word 00004h                ; b8 04 00
    5839     call 018aeh                               ; e8 8b d3
     5949    call 018aeh                               ; e8 b5 d2
    58405950    mov ax, word [bp+01ch]                    ; 8b 46 1c
    58415951    shr ax, 008h                              ; c1 e8 08
     
    58445954    push 002a1h                               ; 68 a1 02
    58455955    push strict byte 00004h                   ; 6a 04
    5846     jmp near 040fbh                           ; e9 c6 fb
    5847 print_boot_device_:                          ; 0xf4535 LB 0x48
     5956    jmp near 04186h                           ; e9 7b fb
     5957print_boot_device_:                          ; 0xf460b LB 0x48
    58485958    push cx                                   ; 51
    58495959    push bp                                   ; 55
    58505960    mov bp, sp                                ; 89 e5
    58515961    test al, al                               ; 84 c0
    5852     je short 04542h                           ; 74 05
     5962    je short 04618h                           ; 74 05
    58535963    mov dx, strict word 00002h                ; ba 02 00
    5854     jmp short 0455ch                          ; eb 1a
     5964    jmp short 04632h                          ; eb 1a
    58555965    test dl, dl                               ; 84 d2
    5856     je short 0454bh                           ; 74 05
     5966    je short 04621h                           ; 74 05
    58575967    mov dx, strict word 00003h                ; ba 03 00
    5858     jmp short 0455ch                          ; eb 11
     5968    jmp short 04632h                          ; eb 11
    58595969    test bl, 080h                             ; f6 c3 80
    5860     jne short 04554h                          ; 75 04
     5970    jne short 0462ah                          ; 75 04
    58615971    xor dh, dh                                ; 30 f6
    5862     jmp short 0455ch                          ; eb 08
     5972    jmp short 04632h                          ; eb 08
    58635973    test bl, 080h                             ; f6 c3 80
    5864     je short 0457ah                           ; 74 21
     5974    je short 04650h                           ; 74 21
    58655975    mov dx, strict word 00001h                ; ba 01 00
    5866     mov bx, 00cd6h                            ; bb d6 0c
     5976    mov bx, 00cech                            ; bb ec 0c
    58675977    mov cx, ds                                ; 8c d9
    58685978    mov ax, strict word 00004h                ; b8 04 00
    5869     call 018aeh                               ; e8 47 d3
     5979    call 018aeh                               ; e8 71 d2
    58705980    imul dx, dx, strict byte 0000ah           ; 6b d2 0a
    5871     add dx, 00cfch                            ; 81 c2 fc 0c
     5981    add dx, 00d12h                            ; 81 c2 12 0d
    58725982    push dx                                   ; 52
    58735983    push 00402h                               ; 68 02 04
    58745984    push strict byte 00004h                   ; 6a 04
    5875     call 018e9h                               ; e8 72 d3
     5985    call 018e9h                               ; e8 9c d2
    58765986    add sp, strict byte 00006h                ; 83 c4 06
    58775987    pop bp                                    ; 5d
    58785988    pop cx                                    ; 59
    58795989    retn                                      ; c3
    5880 print_boot_failure_:                         ; 0xf457d LB 0x90
     5990print_boot_failure_:                         ; 0xf4653 LB 0x90
    58815991    push si                                   ; 56
    58825992    push bp                                   ; 55
     
    58875997    movzx si, ah                              ; 0f b6 f4
    58885998    test al, al                               ; 84 c0
    5889     je short 045aah                           ; 74 1b
    5890     mov bx, 00cd6h                            ; bb d6 0c
     5999    je short 04680h                           ; 74 1b
     6000    mov bx, 00cech                            ; bb ec 0c
    58916001    mov cx, ds                                ; 8c d9
    58926002    mov ax, strict word 00004h                ; b8 04 00
    5893     call 018aeh                               ; e8 14 d3
    5894     push 00d10h                               ; 68 10 0d
     6003    call 018aeh                               ; e8 3e d2
     6004    push 00d26h                               ; 68 26 0d
    58956005    push 00416h                               ; 68 16 04
    58966006    push strict byte 00004h                   ; 6a 04
    5897     call 018e9h                               ; e8 44 d3
     6007    call 018e9h                               ; e8 6e d2
    58986008    add sp, strict byte 00006h                ; 83 c4 06
    5899     jmp short 045eeh                          ; eb 44
     6009    jmp short 046c4h                          ; eb 44
    59006010    test dl, dl                               ; 84 d2
    5901     je short 045beh                           ; 74 10
    5902     mov bx, 00cd6h                            ; bb d6 0c
     6011    je short 04694h                           ; 74 10
     6012    mov bx, 00cech                            ; bb ec 0c
    59036013    mov cx, ds                                ; 8c d9
    59046014    mov ax, strict word 00004h                ; b8 04 00
    5905     call 018aeh                               ; e8 f5 d2
    5906     push 00d1ah                               ; 68 1a 0d
    5907     jmp short 0459dh                          ; eb df
     6015    call 018aeh                               ; e8 1f d2
     6016    push 00d30h                               ; 68 30 0d
     6017    jmp short 04673h                          ; eb df
    59086018    test bl, 080h                             ; f6 c3 80
    5909     je short 045d4h                           ; 74 11
    5910     mov bx, 00cd6h                            ; bb d6 0c
     6019    je short 046aah                           ; 74 11
     6020    mov bx, 00cech                            ; bb ec 0c
    59116021    mov cx, ds                                ; 8c d9
    59126022    mov ax, strict word 00004h                ; b8 04 00
    5913     call 018aeh                               ; e8 e0 d2
     6023    call 018aeh                               ; e8 0a d2
    59146024    push si                                   ; 56
    5915     push 00d06h                               ; 68 06 0d
    5916     jmp short 045e3h                          ; eb 0f
    5917     mov bx, 00cd6h                            ; bb d6 0c
     6025    push 00d1ch                               ; 68 1c 0d
     6026    jmp short 046b9h                          ; eb 0f
     6027    mov bx, 00cech                            ; bb ec 0c
    59186028    mov cx, ds                                ; 8c d9
    59196029    mov ax, strict word 00004h                ; b8 04 00
    5920     call 018aeh                               ; e8 cf d2
     6030    call 018aeh                               ; e8 f9 d1
    59216031    push si                                   ; 56
    5922     push 00cfch                               ; 68 fc 0c
     6032    push 00d12h                               ; 68 12 0d
    59236033    push 0042bh                               ; 68 2b 04
    59246034    push strict byte 00004h                   ; 6a 04
    5925     call 018e9h                               ; e8 fe d2
     6035    call 018e9h                               ; e8 28 d2
    59266036    add sp, strict byte 00008h                ; 83 c4 08
    59276037    cmp byte [bp+006h], 001h                  ; 80 7e 06 01
    5928     jne short 04608h                          ; 75 14
     6038    jne short 046deh                          ; 75 14
    59296039    test dh, dh                               ; 84 f6
    5930     jne short 045fdh                          ; 75 05
     6040    jne short 046d3h                          ; 75 05
    59316041    push 00443h                               ; 68 43 04
    5932     jmp short 04600h                          ; eb 03
     6042    jmp short 046d6h                          ; eb 03
    59336043    push 0046dh                               ; 68 6d 04
    59346044    push strict byte 00007h                   ; 6a 07
    5935     call 018e9h                               ; e8 e4 d2
     6045    call 018e9h                               ; e8 0e d2
    59366046    add sp, strict byte 00004h                ; 83 c4 04
    59376047    pop bp                                    ; 5d
    59386048    pop si                                    ; 5e
    59396049    retn 00002h                               ; c2 02 00
    5940 print_cdromboot_failure_:                    ; 0xf460d LB 0x24
     6050print_cdromboot_failure_:                    ; 0xf46e3 LB 0x24
    59416051    push bx                                   ; 53
    59426052    push cx                                   ; 51
     
    59456055    mov bp, sp                                ; 89 e5
    59466056    mov dx, ax                                ; 89 c2
    5947     mov bx, 00cd6h                            ; bb d6 0c
     6057    mov bx, 00cech                            ; bb ec 0c
    59486058    mov cx, ds                                ; 8c d9
    59496059    mov ax, strict word 00004h                ; b8 04 00
    5950     call 018aeh                               ; e8 8e d2
     6060    call 018aeh                               ; e8 b8 d1
    59516061    push dx                                   ; 52
    59526062    push 004a2h                               ; 68 a2 04
    59536063    push strict byte 00004h                   ; 6a 04
    5954     call 018e9h                               ; e8 c0 d2
     6064    call 018e9h                               ; e8 ea d1
    59556065    add sp, strict byte 00006h                ; 83 c4 06
    59566066    pop bp                                    ; 5d
     
    59596069    pop bx                                    ; 5b
    59606070    retn                                      ; c3
    5961 _int19_function:                             ; 0xf4631 LB 0x251
     6071_int19_function:                             ; 0xf4707 LB 0x251
    59626072    push si                                   ; 56
    59636073    push di                                   ; 57
     
    59656075    mov dx, strict word 0000eh                ; ba 0e 00
    59666076    mov ax, strict word 00040h                ; b8 40 00
    5967     call 0161ch                               ; e8 dc cf
     6077    call 0161ch                               ; e8 06 cf
    59686078    mov bx, ax                                ; 89 c3
    59696079    mov word [bp-00ah], ax                    ; 89 46 f6
    59706080    mov byte [bp-004h], 000h                  ; c6 46 fc 00
    59716081    mov ax, strict word 0003dh                ; b8 3d 00
    5972     call 0165ch                               ; e8 0d d0
     6082    call 0165ch                               ; e8 37 cf
    59736083    movzx si, al                              ; 0f b6 f0
    59746084    mov ax, strict word 00038h                ; b8 38 00
    5975     call 0165ch                               ; e8 04 d0
     6085    call 0165ch                               ; e8 2e cf
    59766086    and AL, strict byte 0f0h                  ; 24 f0
    59776087    xor ah, ah                                ; 30 e4
     
    59796089    or si, ax                                 ; 09 c6
    59806090    mov ax, strict word 0003ch                ; b8 3c 00
    5981     call 0165ch                               ; e8 f5 cf
     6091    call 0165ch                               ; e8 1f cf
    59826092    and AL, strict byte 00fh                  ; 24 0f
    59836093    xor ah, ah                                ; 30 e4
     
    59866096    mov dx, 00339h                            ; ba 39 03
    59876097    mov ax, bx                                ; 89 d8
    5988     call 01600h                               ; e8 88 cf
     6098    call 01600h                               ; e8 b2 ce
    59896099    test al, al                               ; 84 c0
    5990     je short 04687h                           ; 74 0b
     6100    je short 0475dh                           ; 74 0b
    59916101    mov dx, 00339h                            ; ba 39 03
    59926102    mov ax, bx                                ; 89 d8
    5993     call 01600h                               ; e8 7c cf
     6103    call 01600h                               ; e8 a6 ce
    59946104    movzx si, al                              ; 0f b6 f0
    59956105    cmp byte [bp+008h], 001h                  ; 80 7e 08 01
    5996     jne short 0469dh                          ; 75 10
     6106    jne short 04773h                          ; 75 10
    59976107    mov ax, strict word 0003ch                ; b8 3c 00
    5998     call 0165ch                               ; e8 c9 cf
     6108    call 0165ch                               ; e8 f3 ce
    59996109    and AL, strict byte 0f0h                  ; 24 f0
    60006110    xor ah, ah                                ; 30 e4
    60016111    sar ax, 004h                              ; c1 f8 04
    6002     call 0720dh                               ; e8 70 2b
     6112    call 0734fh                               ; e8 dc 2b
    60036113    cmp byte [bp+008h], 002h                  ; 80 7e 08 02
    6004     jne short 046a6h                          ; 75 03
     6114    jne short 0477ch                          ; 75 03
    60056115    shr si, 004h                              ; c1 ee 04
    60066116    cmp byte [bp+008h], 003h                  ; 80 7e 08 03
    6007     jne short 046afh                          ; 75 03
     6117    jne short 04785h                          ; 75 03
    60086118    shr si, 008h                              ; c1 ee 08
    60096119    cmp byte [bp+008h], 004h                  ; 80 7e 08 04
    6010     jne short 046b8h                          ; 75 03
     6120    jne short 0478eh                          ; 75 03
    60116121    shr si, 00ch                              ; c1 ee 0c
    60126122    cmp si, strict byte 00010h                ; 83 fe 10
    6013     jnc short 046c1h                          ; 73 04
     6123    jnc short 04797h                          ; 73 04
    60146124    mov byte [bp-004h], 001h                  ; c6 46 fc 01
    60156125    xor al, al                                ; 30 c0
     
    60176127    mov byte [bp-006h], al                    ; 88 46 fa
    60186128    mov byte [bp-008h], al                    ; 88 46 f8
    6019     mov bx, 00cd6h                            ; bb d6 0c
     6129    mov bx, 00cech                            ; bb ec 0c
    60206130    mov cx, ds                                ; 8c d9
    60216131    mov ax, strict word 00004h                ; b8 04 00
    6022     call 018aeh                               ; e8 d7 d1
     6132    call 018aeh                               ; e8 01 d1
    60236133    push si                                   ; 56
    60246134    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
     
    60266136    push 004c2h                               ; 68 c2 04
    60276137    push strict byte 00004h                   ; 6a 04
    6028     call 018e9h                               ; e8 04 d2
     6138    call 018e9h                               ; e8 2e d1
    60296139    add sp, strict byte 00008h                ; 83 c4 08
    60306140    and si, strict byte 0000fh                ; 83 e6 0f
    60316141    cmp si, strict byte 00002h                ; 83 fe 02
    6032     jc short 046feh                           ; 72 0e
    6033     jbe short 0470dh                          ; 76 1b
     6142    jc short 047d4h                           ; 72 0e
     6143    jbe short 047e3h                          ; 76 1b
    60346144    cmp si, strict byte 00004h                ; 83 fe 04
    6035     je short 0472bh                           ; 74 34
     6145    je short 04801h                           ; 74 34
    60366146    cmp si, strict byte 00003h                ; 83 fe 03
    6037     je short 04721h                           ; 74 25
    6038     jmp short 04758h                          ; eb 5a
     6147    je short 047f7h                           ; 74 25
     6148    jmp short 0482eh                          ; eb 5a
    60396149    cmp si, strict byte 00001h                ; 83 fe 01
    6040     jne short 04758h                          ; 75 55
     6150    jne short 0482eh                          ; 75 55
    60416151    xor al, al                                ; 30 c0
    60426152    mov byte [bp-002h], al                    ; 88 46 fe
    60436153    mov byte [bp-006h], al                    ; 88 46 fa
    6044     jmp short 04770h                          ; eb 63
     6154    jmp short 04846h                          ; eb 63
    60456155    mov dx, 00338h                            ; ba 38 03
    60466156    mov ax, word [bp-00ah]                    ; 8b 46 f6
    6047     call 01600h                               ; e8 ea ce
     6157    call 01600h                               ; e8 14 ce
    60486158    add AL, strict byte 080h                  ; 04 80
    60496159    mov byte [bp-002h], al                    ; 88 46 fe
    60506160    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    6051     jmp short 04770h                          ; eb 4f
     6161    jmp short 04846h                          ; eb 4f
    60526162    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    60536163    mov byte [bp-006h], 001h                  ; c6 46 fa 01
    6054     jmp short 04735h                          ; eb 0a
     6164    jmp short 0480bh                          ; eb 0a
    60556165    mov byte [bp-008h], 001h                  ; c6 46 f8 01
    60566166    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    6057     je short 04770h                           ; 74 3b
    6058     call 0377ah                               ; e8 42 f0
     6167    je short 04846h                           ; 74 3b
     6168    call 0375ah                               ; e8 4c ef
    60596169    mov bx, ax                                ; 89 c3
    60606170    test AL, strict byte 0ffh                 ; a8 ff
    6061     je short 0475fh                           ; 74 21
    6062     call 0460dh                               ; e8 cc fe
     6171    je short 04835h                           ; 74 21
     6172    call 046e3h                               ; e8 cc fe
    60636173    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    60646174    push ax                                   ; 50
     
    60676177    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    60686178    mov cx, strict word 00001h                ; b9 01 00
    6069     call 0457dh                               ; e8 25 fe
     6179    call 04653h                               ; e8 25 fe
    60706180    xor ax, ax                                ; 31 c0
    60716181    xor dx, dx                                ; 31 d2
    6072     jmp near 0487eh                           ; e9 1f 01
     6182    jmp near 04954h                           ; e9 1f 01
    60736183    mov dx, 0032eh                            ; ba 2e 03
    60746184    mov ax, word [bp-00ah]                    ; 8b 46 f6
    6075     call 0161ch                               ; e8 b4 ce
     6185    call 0161ch                               ; e8 de cd
    60766186    mov di, ax                                ; 89 c7
    60776187    shr bx, 008h                              ; c1 eb 08
    60786188    mov byte [bp-002h], bl                    ; 88 5e fe
    60796189    cmp byte [bp-008h], 001h                  ; 80 7e f8 01
    6080     jne near 047ech                           ; 0f 85 74 00
     6190    jne near 048c2h                           ; 0f 85 74 00
    60816191    xor si, si                                ; 31 f6
    60826192    mov ax, 0e200h                            ; b8 00 e2
    60836193    mov es, ax                                ; 8e c0
    60846194    cmp word [es:si], 0aa55h                  ; 26 81 3c 55 aa
    6085     jne short 04741h                          ; 75 bb
     6195    jne short 04817h                          ; 75 bb
    60866196    mov cx, ax                                ; 89 c1
    60876197    mov si, word [es:si+01ah]                 ; 26 8b 74 1a
    60886198    cmp word [es:si+002h], 0506eh             ; 26 81 7c 02 6e 50
    6089     jne short 04741h                          ; 75 ad
     6199    jne short 04817h                          ; 75 ad
    60906200    cmp word [es:si], 05024h                  ; 26 81 3c 24 50
    6091     jne short 04741h                          ; 75 a6
     6201    jne short 04817h                          ; 75 a6
    60926202    mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
    60936203    mov dx, word [es:di]                      ; 26 8b 15
    60946204    mov ax, word [es:di+002h]                 ; 26 8b 45 02
    60956205    cmp ax, 06568h                            ; 3d 68 65
    6096     jne short 047cah                          ; 75 1f
     6206    jne short 048a0h                          ; 75 1f
    60976207    cmp dx, 07445h                            ; 81 fa 45 74
    6098     jne short 047cah                          ; 75 19
     6208    jne short 048a0h                          ; 75 19
    60996209    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    61006210    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    61016211    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    6102     call 04535h                               ; e8 75 fd
     6212    call 0460bh                               ; e8 75 fd
    61036213    mov word [bp-00eh], strict word 00006h    ; c7 46 f2 06 00
    61046214    mov word [bp-00ch], cx                    ; 89 4e f4
    6105     jmp short 047e6h                          ; eb 1c
     6215    jmp short 048bch                          ; eb 1c
    61066216    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    61076217    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    61086218    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    6109     call 04535h                               ; e8 5c fd
     6219    call 0460bh                               ; e8 5c fd
    61106220    sti                                       ; fb
    61116221    mov word [bp-00ch], cx                    ; 89 4e f4
     
    61146224    mov word [bp-00eh], ax                    ; 89 46 f2
    61156225    call far [bp-00eh]                        ; ff 5e f2
    6116     jmp near 04741h                           ; e9 55 ff
     6226    jmp near 04817h                           ; e9 55 ff
    61176227    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    6118     jne short 04818h                          ; 75 26
     6228    jne short 048eeh                          ; 75 26
    61196229    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
    6120     jne short 04818h                          ; 75 20
     6230    jne short 048eeh                          ; 75 20
    61216231    mov di, 007c0h                            ; bf c0 07
    61226232    mov es, di                                ; 8e c7
     
    61316241    sbb ax, strict byte 00000h                ; 83 d8 00
    61326242    test ax, ax                               ; 85 c0
    6133     jne near 04741h                           ; 0f 85 29 ff
     6243    jne near 04817h                           ; 0f 85 29 ff
    61346244    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    61356245    db  00fh, 094h, 0c1h
    61366246    ; sete cl                                   ; 0f 94 c1
    61376247    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    6138     je short 04827h                           ; 74 02
     6248    je short 048fdh                           ; 74 02
    61396249    mov CL, strict byte 001h                  ; b1 01
    61406250    xor dx, dx                                ; 31 d2
    61416251    mov ax, di                                ; 89 f8
    6142     call 0161ch                               ; e8 ee cd
     6252    call 0161ch                               ; e8 18 cd
    61436253    mov bx, ax                                ; 89 c3
    61446254    mov dx, strict word 00002h                ; ba 02 00
    61456255    mov ax, di                                ; 89 f8
    6146     call 0161ch                               ; e8 e4 cd
     6256    call 0161ch                               ; e8 0e cd
    61476257    cmp bx, ax                                ; 39 c3
    6148     je short 0484dh                           ; 74 11
     6258    je short 04923h                           ; 74 11
    61496259    test cl, cl                               ; 84 c9
    6150     jne short 04863h                          ; 75 23
     6260    jne short 04939h                          ; 75 23
    61516261    mov dx, 001feh                            ; ba fe 01
    61526262    mov ax, di                                ; 89 f8
    6153     call 0161ch                               ; e8 d4 cd
     6263    call 0161ch                               ; e8 fe cc
    61546264    cmp ax, 0aa55h                            ; 3d 55 aa
    6155     je short 04863h                           ; 74 16
     6265    je short 04939h                           ; 74 16
    61566266    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    61576267    push ax                                   ; 50
     
    61606270    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    61616271    xor cx, cx                                ; 31 c9
    6162     jmp near 04755h                           ; e9 f2 fe
     6272    jmp near 0482bh                           ; e9 f2 fe
    61636273    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    61646274    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    61656275    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    6166     call 04535h                               ; e8 c3 fc
     6276    call 0460bh                               ; e8 c3 fc
    61676277    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    61686278    xor dx, dx                                ; 31 d2
     
    61746284    pop si                                    ; 5e
    61756285    retn                                      ; c3
    6176 keyboard_panic_:                             ; 0xf4882 LB 0x11
     6286keyboard_panic_:                             ; 0xf4958 LB 0x11
    61776287    push bp                                   ; 55
    61786288    mov bp, sp                                ; 89 e5
     
    61806290    push 004e2h                               ; 68 e2 04
    61816291    push strict byte 00007h                   ; 6a 07
    6182     call 018e9h                               ; e8 5b d0
     6292    call 018e9h                               ; e8 85 cf
    61836293    add sp, strict byte 00006h                ; 83 c4 06
    61846294    pop bp                                    ; 5d
    61856295    retn                                      ; c3
    6186 _keyboard_init:                              ; 0xf4893 LB 0x27a
     6296_keyboard_init:                              ; 0xf4969 LB 0x27a
    61876297    push bp                                   ; 55
    61886298    mov bp, sp                                ; 89 e5
     
    61966306    ; sub ah, ah                                ; 2a e4
    61976307    test AL, strict byte 002h                 ; a8 02
    6198     je short 048b6h                           ; 74 0d
     6308    je short 0498ch                           ; 74 0d
    61996309    dec bx                                    ; 4b
    62006310    test bx, bx                               ; 85 db
    6201     jbe short 048b6h                          ; 76 08
     6311    jbe short 0498ch                          ; 76 08
    62026312    xor al, al                                ; 30 c0
    62036313    mov dx, 00080h                            ; ba 80 00
    62046314    out DX, AL                                ; ee
    6205     jmp short 0489fh                          ; eb e9
     6315    jmp short 04975h                          ; eb e9
    62066316    test bx, bx                               ; 85 db
    6207     jne short 048bfh                          ; 75 05
     6317    jne short 04995h                          ; 75 05
    62086318    xor ax, ax                                ; 31 c0
    6209     call 04882h                               ; e8 c3 ff
     6319    call 04958h                               ; e8 c3 ff
    62106320    mov bx, strict word 0ffffh                ; bb ff ff
    62116321    mov dx, strict word 00064h                ; ba 64 00
     
    62146324    ; sub ah, ah                                ; 2a e4
    62156325    test AL, strict byte 001h                 ; a8 01
    6216     jne short 048d9h                          ; 75 0d
     6326    jne short 049afh                          ; 75 0d
    62176327    dec bx                                    ; 4b
    62186328    test bx, bx                               ; 85 db
    6219     jbe short 048d9h                          ; 76 08
     6329    jbe short 049afh                          ; 76 08
    62206330    mov AL, strict byte 001h                  ; b0 01
    62216331    mov dx, 00080h                            ; ba 80 00
    62226332    out DX, AL                                ; ee
    6223     jmp short 048c2h                          ; eb e9
     6333    jmp short 04998h                          ; eb e9
    62246334    test bx, bx                               ; 85 db
    6225     jne short 048e3h                          ; 75 06
     6335    jne short 049b9h                          ; 75 06
    62266336    mov ax, strict word 00001h                ; b8 01 00
    6227     call 04882h                               ; e8 9f ff
     6337    call 04958h                               ; e8 9f ff
    62286338    mov dx, strict word 00060h                ; ba 60 00
    62296339    in AL, DX                                 ; ec
     
    62316341    ; sub ah, ah                                ; 2a e4
    62326342    cmp ax, strict word 00055h                ; 3d 55 00
    6233     je short 048f4h                           ; 74 06
     6343    je short 049cah                           ; 74 06
    62346344    mov ax, 003dfh                            ; b8 df 03
    6235     call 04882h                               ; e8 8e ff
     6345    call 04958h                               ; e8 8e ff
    62366346    mov AL, strict byte 0abh                  ; b0 ab
    62376347    mov dx, strict word 00064h                ; ba 64 00
     
    62436353    ; sub ah, ah                                ; 2a e4
    62446354    test AL, strict byte 002h                 ; a8 02
    6245     je short 04914h                           ; 74 0d
     6355    je short 049eah                           ; 74 0d
    62466356    dec bx                                    ; 4b
    62476357    test bx, bx                               ; 85 db
    6248     jbe short 04914h                          ; 76 08
     6358    jbe short 049eah                          ; 76 08
    62496359    mov AL, strict byte 010h                  ; b0 10
    62506360    mov dx, 00080h                            ; ba 80 00
    62516361    out DX, AL                                ; ee
    6252     jmp short 048fdh                          ; eb e9
     6362    jmp short 049d3h                          ; eb e9
    62536363    test bx, bx                               ; 85 db
    6254     jne short 0491eh                          ; 75 06
     6364    jne short 049f4h                          ; 75 06
    62556365    mov ax, strict word 0000ah                ; b8 0a 00
    6256     call 04882h                               ; e8 64 ff
     6366    call 04958h                               ; e8 64 ff
    62576367    mov bx, strict word 0ffffh                ; bb ff ff
    62586368    mov dx, strict word 00064h                ; ba 64 00
     
    62616371    ; sub ah, ah                                ; 2a e4
    62626372    test AL, strict byte 001h                 ; a8 01
    6263     jne short 04938h                          ; 75 0d
     6373    jne short 04a0eh                          ; 75 0d
    62646374    dec bx                                    ; 4b
    62656375    test bx, bx                               ; 85 db
    6266     jbe short 04938h                          ; 76 08
     6376    jbe short 04a0eh                          ; 76 08
    62676377    mov AL, strict byte 011h                  ; b0 11
    62686378    mov dx, 00080h                            ; ba 80 00
    62696379    out DX, AL                                ; ee
    6270     jmp short 04921h                          ; eb e9
     6380    jmp short 049f7h                          ; eb e9
    62716381    test bx, bx                               ; 85 db
    6272     jne short 04942h                          ; 75 06
     6382    jne short 04a18h                          ; 75 06
    62736383    mov ax, strict word 0000bh                ; b8 0b 00
    6274     call 04882h                               ; e8 40 ff
     6384    call 04958h                               ; e8 40 ff
    62756385    mov dx, strict word 00060h                ; ba 60 00
    62766386    in AL, DX                                 ; ec
     
    62786388    ; sub ah, ah                                ; 2a e4
    62796389    test ax, ax                               ; 85 c0
    6280     je short 04952h                           ; 74 06
     6390    je short 04a28h                           ; 74 06
    62816391    mov ax, 003e0h                            ; b8 e0 03
    6282     call 04882h                               ; e8 30 ff
     6392    call 04958h                               ; e8 30 ff
    62836393    mov AL, strict byte 0ffh                  ; b0 ff
    62846394    mov dx, strict word 00060h                ; ba 60 00
     
    62906400    ; sub ah, ah                                ; 2a e4
    62916401    test AL, strict byte 002h                 ; a8 02
    6292     je short 04972h                           ; 74 0d
     6402    je short 04a48h                           ; 74 0d
    62936403    dec bx                                    ; 4b
    62946404    test bx, bx                               ; 85 db
    6295     jbe short 04972h                          ; 76 08
     6405    jbe short 04a48h                          ; 76 08
    62966406    mov AL, strict byte 020h                  ; b0 20
    62976407    mov dx, 00080h                            ; ba 80 00
    62986408    out DX, AL                                ; ee
    6299     jmp short 0495bh                          ; eb e9
     6409    jmp short 04a31h                          ; eb e9
    63006410    test bx, bx                               ; 85 db
    6301     jne short 0497ch                          ; 75 06
     6411    jne short 04a52h                          ; 75 06
    63026412    mov ax, strict word 00014h                ; b8 14 00
    6303     call 04882h                               ; e8 06 ff
     6413    call 04958h                               ; e8 06 ff
    63046414    mov bx, strict word 0ffffh                ; bb ff ff
    63056415    mov dx, strict word 00064h                ; ba 64 00
     
    63086418    ; sub ah, ah                                ; 2a e4
    63096419    test AL, strict byte 001h                 ; a8 01
    6310     jne short 04996h                          ; 75 0d
     6420    jne short 04a6ch                          ; 75 0d
    63116421    dec bx                                    ; 4b
    63126422    test bx, bx                               ; 85 db
    6313     jbe short 04996h                          ; 76 08
     6423    jbe short 04a6ch                          ; 76 08
    63146424    mov AL, strict byte 021h                  ; b0 21
    63156425    mov dx, 00080h                            ; ba 80 00
    63166426    out DX, AL                                ; ee
    6317     jmp short 0497fh                          ; eb e9
     6427    jmp short 04a55h                          ; eb e9
    63186428    test bx, bx                               ; 85 db
    6319     jne short 049a0h                          ; 75 06
     6429    jne short 04a76h                          ; 75 06
    63206430    mov ax, strict word 00015h                ; b8 15 00
    6321     call 04882h                               ; e8 e2 fe
     6431    call 04958h                               ; e8 e2 fe
    63226432    mov dx, strict word 00060h                ; ba 60 00
    63236433    in AL, DX                                 ; ec
     
    63256435    ; sub ah, ah                                ; 2a e4
    63266436    cmp ax, 000fah                            ; 3d fa 00
    6327     je short 049b1h                           ; 74 06
     6437    je short 04a87h                           ; 74 06
    63286438    mov ax, 003e1h                            ; b8 e1 03
    6329     call 04882h                               ; e8 d1 fe
     6439    call 04958h                               ; e8 d1 fe
    63306440    mov bx, strict word 0ffffh                ; bb ff ff
    63316441    mov dx, strict word 00064h                ; ba 64 00
     
    63346444    ; sub ah, ah                                ; 2a e4
    63356445    test AL, strict byte 001h                 ; a8 01
    6336     jne short 049cbh                          ; 75 0d
     6446    jne short 04aa1h                          ; 75 0d
    63376447    dec bx                                    ; 4b
    63386448    test bx, bx                               ; 85 db
    6339     jbe short 049cbh                          ; 76 08
     6449    jbe short 04aa1h                          ; 76 08
    63406450    mov AL, strict byte 031h                  ; b0 31
    63416451    mov dx, 00080h                            ; ba 80 00
    63426452    out DX, AL                                ; ee
    6343     jmp short 049b4h                          ; eb e9
     6453    jmp short 04a8ah                          ; eb e9
    63446454    test bx, bx                               ; 85 db
    6345     jne short 049d5h                          ; 75 06
     6455    jne short 04aabh                          ; 75 06
    63466456    mov ax, strict word 0001fh                ; b8 1f 00
    6347     call 04882h                               ; e8 ad fe
     6457    call 04958h                               ; e8 ad fe
    63486458    mov dx, strict word 00060h                ; ba 60 00
    63496459    in AL, DX                                 ; ec
     
    63516461    ; sub ah, ah                                ; 2a e4
    63526462    cmp ax, 000aah                            ; 3d aa 00
    6353     je short 049eeh                           ; 74 0e
     6463    je short 04ac4h                           ; 74 0e
    63546464    in AL, DX                                 ; ec
    63556465    db  02ah, 0e4h
    63566466    ; sub ah, ah                                ; 2a e4
    63576467    cmp ax, 000aah                            ; 3d aa 00
    6358     je short 049eeh                           ; 74 06
     6468    je short 04ac4h                           ; 74 06
    63596469    mov ax, 003e2h                            ; b8 e2 03
    6360     call 04882h                               ; e8 94 fe
     6470    call 04958h                               ; e8 94 fe
    63616471    mov AL, strict byte 0f5h                  ; b0 f5
    63626472    mov dx, strict word 00060h                ; ba 60 00
     
    63686478    ; sub ah, ah                                ; 2a e4
    63696479    test AL, strict byte 002h                 ; a8 02
    6370     je short 04a0eh                           ; 74 0d
     6480    je short 04ae4h                           ; 74 0d
    63716481    dec bx                                    ; 4b
    63726482    test bx, bx                               ; 85 db
    6373     jbe short 04a0eh                          ; 76 08
     6483    jbe short 04ae4h                          ; 76 08
    63746484    mov AL, strict byte 040h                  ; b0 40
    63756485    mov dx, 00080h                            ; ba 80 00
    63766486    out DX, AL                                ; ee
    6377     jmp short 049f7h                          ; eb e9
     6487    jmp short 04acdh                          ; eb e9
    63786488    test bx, bx                               ; 85 db
    6379     jne short 04a18h                          ; 75 06
     6489    jne short 04aeeh                          ; 75 06
    63806490    mov ax, strict word 00028h                ; b8 28 00
    6381     call 04882h                               ; e8 6a fe
     6491    call 04958h                               ; e8 6a fe
    63826492    mov bx, strict word 0ffffh                ; bb ff ff
    63836493    mov dx, strict word 00064h                ; ba 64 00
     
    63866496    ; sub ah, ah                                ; 2a e4
    63876497    test AL, strict byte 001h                 ; a8 01
    6388     jne short 04a32h                          ; 75 0d
     6498    jne short 04b08h                          ; 75 0d
    63896499    dec bx                                    ; 4b
    63906500    test bx, bx                               ; 85 db
    6391     jbe short 04a32h                          ; 76 08
     6501    jbe short 04b08h                          ; 76 08
    63926502    mov AL, strict byte 041h                  ; b0 41
    63936503    mov dx, 00080h                            ; ba 80 00
    63946504    out DX, AL                                ; ee
    6395     jmp short 04a1bh                          ; eb e9
     6505    jmp short 04af1h                          ; eb e9
    63966506    test bx, bx                               ; 85 db
    6397     jne short 04a3ch                          ; 75 06
     6507    jne short 04b12h                          ; 75 06
    63986508    mov ax, strict word 00029h                ; b8 29 00
    6399     call 04882h                               ; e8 46 fe
     6509    call 04958h                               ; e8 46 fe
    64006510    mov dx, strict word 00060h                ; ba 60 00
    64016511    in AL, DX                                 ; ec
     
    64036513    ; sub ah, ah                                ; 2a e4
    64046514    cmp ax, 000fah                            ; 3d fa 00
    6405     je short 04a4dh                           ; 74 06
     6515    je short 04b23h                           ; 74 06
    64066516    mov ax, 003e3h                            ; b8 e3 03
    6407     call 04882h                               ; e8 35 fe
     6517    call 04958h                               ; e8 35 fe
    64086518    mov AL, strict byte 060h                  ; b0 60
    64096519    mov dx, strict word 00064h                ; ba 64 00
     
    64156525    ; sub ah, ah                                ; 2a e4
    64166526    test AL, strict byte 002h                 ; a8 02
    6417     je short 04a6dh                           ; 74 0d
     6527    je short 04b43h                           ; 74 0d
    64186528    dec bx                                    ; 4b
    64196529    test bx, bx                               ; 85 db
    6420     jbe short 04a6dh                          ; 76 08
     6530    jbe short 04b43h                          ; 76 08
    64216531    mov AL, strict byte 050h                  ; b0 50
    64226532    mov dx, 00080h                            ; ba 80 00
    64236533    out DX, AL                                ; ee
    6424     jmp short 04a56h                          ; eb e9
     6534    jmp short 04b2ch                          ; eb e9
    64256535    test bx, bx                               ; 85 db
    6426     jne short 04a77h                          ; 75 06
     6536    jne short 04b4dh                          ; 75 06
    64276537    mov ax, strict word 00032h                ; b8 32 00
    6428     call 04882h                               ; e8 0b fe
     6538    call 04958h                               ; e8 0b fe
    64296539    mov AL, strict byte 065h                  ; b0 65
    64306540    mov dx, strict word 00060h                ; ba 60 00
     
    64366546    ; sub ah, ah                                ; 2a e4
    64376547    test AL, strict byte 002h                 ; a8 02
    6438     je short 04a97h                           ; 74 0d
     6548    je short 04b6dh                           ; 74 0d
    64396549    dec bx                                    ; 4b
    64406550    test bx, bx                               ; 85 db
    6441     jbe short 04a97h                          ; 76 08
     6551    jbe short 04b6dh                          ; 76 08
    64426552    mov AL, strict byte 060h                  ; b0 60
    64436553    mov dx, 00080h                            ; ba 80 00
    64446554    out DX, AL                                ; ee
    6445     jmp short 04a80h                          ; eb e9
     6555    jmp short 04b56h                          ; eb e9
    64466556    test bx, bx                               ; 85 db
    6447     jne short 04aa1h                          ; 75 06
     6557    jne short 04b77h                          ; 75 06
    64486558    mov ax, strict word 0003ch                ; b8 3c 00
    6449     call 04882h                               ; e8 e1 fd
     6559    call 04958h                               ; e8 e1 fd
    64506560    mov AL, strict byte 0f4h                  ; b0 f4
    64516561    mov dx, strict word 00060h                ; ba 60 00
     
    64576567    ; sub ah, ah                                ; 2a e4
    64586568    test AL, strict byte 002h                 ; a8 02
    6459     je short 04ac1h                           ; 74 0d
     6569    je short 04b97h                           ; 74 0d
    64606570    dec bx                                    ; 4b
    64616571    test bx, bx                               ; 85 db
    6462     jbe short 04ac1h                          ; 76 08
     6572    jbe short 04b97h                          ; 76 08
    64636573    mov AL, strict byte 070h                  ; b0 70
    64646574    mov dx, 00080h                            ; ba 80 00
    64656575    out DX, AL                                ; ee
    6466     jmp short 04aaah                          ; eb e9
     6576    jmp short 04b80h                          ; eb e9
    64676577    test bx, bx                               ; 85 db
    6468     jne short 04acbh                          ; 75 06
     6578    jne short 04ba1h                          ; 75 06
    64696579    mov ax, strict word 00046h                ; b8 46 00
    6470     call 04882h                               ; e8 b7 fd
     6580    call 04958h                               ; e8 b7 fd
    64716581    mov bx, strict word 0ffffh                ; bb ff ff
    64726582    mov dx, strict word 00064h                ; ba 64 00
     
    64756585    ; sub ah, ah                                ; 2a e4
    64766586    test AL, strict byte 001h                 ; a8 01
    6477     jne short 04ae5h                          ; 75 0d
     6587    jne short 04bbbh                          ; 75 0d
    64786588    dec bx                                    ; 4b
    64796589    test bx, bx                               ; 85 db
    6480     jbe short 04ae5h                          ; 76 08
     6590    jbe short 04bbbh                          ; 76 08
    64816591    mov AL, strict byte 071h                  ; b0 71
    64826592    mov dx, 00080h                            ; ba 80 00
    64836593    out DX, AL                                ; ee
    6484     jmp short 04aceh                          ; eb e9
     6594    jmp short 04ba4h                          ; eb e9
    64856595    test bx, bx                               ; 85 db
    6486     jne short 04aefh                          ; 75 06
     6596    jne short 04bc5h                          ; 75 06
    64876597    mov ax, strict word 00046h                ; b8 46 00
    6488     call 04882h                               ; e8 93 fd
     6598    call 04958h                               ; e8 93 fd
    64896599    mov dx, strict word 00060h                ; ba 60 00
    64906600    in AL, DX                                 ; ec
     
    64926602    ; sub ah, ah                                ; 2a e4
    64936603    cmp ax, 000fah                            ; 3d fa 00
    6494     je short 04b00h                           ; 74 06
     6604    je short 04bd6h                           ; 74 06
    64956605    mov ax, 003e4h                            ; b8 e4 03
    6496     call 04882h                               ; e8 82 fd
     6606    call 04958h                               ; e8 82 fd
    64976607    mov AL, strict byte 0a8h                  ; b0 a8
    64986608    mov dx, strict word 00064h                ; ba 64 00
    64996609    out DX, AL                                ; ee
    65006610    xor ax, ax                                ; 31 c0
    6501     call 05cf1h                               ; e8 e6 11
     6611    call 05e33h                               ; e8 52 12
    65026612    pop bp                                    ; 5d
    65036613    retn                                      ; c3
    6504 enqueue_key_:                                ; 0xf4b0d LB 0x90
     6614enqueue_key_:                                ; 0xf4be3 LB 0x90
    65056615    push bx                                   ; 53
    65066616    push cx                                   ; 51
     
    65126622    mov dx, strict word 0001ah                ; ba 1a 00
    65136623    mov ax, strict word 00040h                ; b8 40 00
    6514     call 0161ch                               ; e8 f9 ca
     6624    call 0161ch                               ; e8 23 ca
    65156625    mov di, ax                                ; 89 c7
    65166626    mov dx, strict word 0001ch                ; ba 1c 00
    65176627    mov ax, strict word 00040h                ; b8 40 00
    6518     call 0161ch                               ; e8 ee ca
     6628    call 0161ch                               ; e8 18 ca
    65196629    mov si, ax                                ; 89 c6
    65206630    lea cx, [si+002h]                         ; 8d 4c 02
    65216631    cmp cx, strict byte 0003eh                ; 83 f9 3e
    6522     jc short 04b3bh                           ; 72 03
     6632    jc short 04c11h                           ; 72 03
    65236633    mov cx, strict word 0001eh                ; b9 1e 00
    65246634    cmp cx, di                                ; 39 f9
    6525     jne short 04b43h                          ; 75 04
     6635    jne short 04c19h                          ; 75 04
    65266636    xor ax, ax                                ; 31 c0
    6527     jmp short 04b68h                          ; eb 25
     6637    jmp short 04c3eh                          ; eb 25
    65286638    xor bh, bh                                ; 30 ff
    65296639    mov dx, si                                ; 89 f2
    65306640    mov ax, strict word 00040h                ; b8 40 00
    6531     call 0160eh                               ; e8 c1 ca
     6641    call 0160eh                               ; e8 eb c9
    65326642    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    65336643    lea dx, [si+001h]                         ; 8d 54 01
    65346644    mov ax, strict word 00040h                ; b8 40 00
    6535     call 0160eh                               ; e8 b4 ca
     6645    call 0160eh                               ; e8 de c9
    65366646    mov bx, cx                                ; 89 cb
    65376647    mov dx, strict word 0001ch                ; ba 1c 00
    65386648    mov ax, strict word 00040h                ; b8 40 00
    6539     call 0162ah                               ; e8 c5 ca
     6649    call 0162ah                               ; e8 ef c9
    65406650    mov ax, strict word 00001h                ; b8 01 00
    65416651    leave                                     ; c9
     
    65546664    cmp bh, byte [bx+si]                      ; 3a 38
    65556665    sub bl, byte [ss:di]                      ; 36 2a 1d
    6556     aad 04dh                                  ; d5 4d
    6557     bound cx, [si+031h]                       ; 62 4c 31
     6666    stosw                                     ; ab
     6667    dec si                                    ; 4e
     6668    cmp byte [di+007h], cl                    ; 38 4d 07
     6669    dec bp                                    ; 4d
     6670    pop ES                                    ; 07
     6671    dec bp                                    ; 4d
     6672    mov dx, 0e04dh                            ; ba 4d e0
    65586673    dec sp                                    ; 4c
    6559     xor word [si-01ch], cx                    ; 31 4c e4
     6674    sub AL, strict byte 04eh                  ; 2c 4e
     6675    jnp short 04cb1h                          ; 7b 4e
     6676    sahf                                      ; 9e
     6677    dec si                                    ; 4e
     6678    jns short 04cb4h                          ; 79 4d
     6679    pop ES                                    ; 07
     6680    dec bp                                    ; 4d
     6681    pop ES                                    ; 07
     6682    dec bp                                    ; 4d
     6683    rep dec bp                                ; f3 4d
     6684    stc                                       ; f9
    65606685    dec sp                                    ; 4c
    6561     or cl, byte [si+056h]                     ; 0a 4c 56
    6562     dec bp                                    ; 4d
    6563     movsw                                     ; a5
    6564     dec bp                                    ; 4d
    6565     enter 0a34dh, 04ch                        ; c8 4d a3 4c
    6566     xor word [si+031h], cx                    ; 31 4c 31
    6567     dec sp                                    ; 4c
    6568     sbb ax, 0234dh                            ; 1d 4d 23
    6569     dec sp                                    ; 4c
    6570     xchg byte [di-03fh], cl                   ; 86 4d c1
    6571     dec bp                                    ; 4d
    6572 _int09_function:                             ; 0xf4b9d LB 0x358
     6686    pop sp                                    ; 5c
     6687    dec si                                    ; 4e
     6688    xchg di, ax                               ; 97
     6689    dec si                                    ; 4e
     6690_int09_function:                             ; 0xf4c73 LB 0x358
    65736691    push si                                   ; 56
    65746692    push di                                   ; 57
     
    65776695    mov byte [bp-006h], al                    ; 88 46 fa
    65786696    test al, al                               ; 84 c0
    6579     jne short 04bc6h                          ; 75 19
    6580     mov bx, 00cd6h                            ; bb d6 0c
     6697    jne short 04c9ch                          ; 75 19
     6698    mov bx, 00cech                            ; bb ec 0c
    65816699    mov cx, ds                                ; 8c d9
    65826700    mov ax, strict word 00004h                ; b8 04 00
    6583     call 018aeh                               ; e8 f6 cc
     6701    call 018aeh                               ; e8 20 cc
    65846702    push 004f5h                               ; 68 f5 04
    65856703    push strict byte 00004h                   ; 6a 04
    6586     call 018e9h                               ; e8 29 cd
     6704    call 018e9h                               ; e8 53 cc
    65876705    add sp, strict byte 00004h                ; 83 c4 04
    6588     jmp near 04ef1h                           ; e9 2b 03
     6706    jmp near 04fc7h                           ; e9 2b 03
    65896707    mov dx, strict word 00017h                ; ba 17 00
    65906708    mov ax, strict word 00040h                ; b8 40 00
    6591     call 01600h                               ; e8 31 ca
     6709    call 01600h                               ; e8 5b c9
    65926710    mov byte [bp-00ah], al                    ; 88 46 f6
    65936711    mov bl, al                                ; 88 c3
    65946712    mov dx, strict word 00018h                ; ba 18 00
    65956713    mov ax, strict word 00040h                ; b8 40 00
    6596     call 01600h                               ; e8 23 ca
     6714    call 01600h                               ; e8 4d c9
    65976715    mov byte [bp-00ch], al                    ; 88 46 f4
    65986716    mov byte [bp-008h], al                    ; 88 46 f8
    65996717    mov dx, 00096h                            ; ba 96 00
    66006718    mov ax, strict word 00040h                ; b8 40 00
    6601     call 01600h                               ; e8 14 ca
     6719    call 01600h                               ; e8 3e c9
    66026720    mov byte [bp-004h], al                    ; 88 46 fc
    66036721    mov byte [bp-002h], al                    ; 88 46 fe
     
    66066724    pop ES                                    ; 07
    66076725    mov cx, strict word 00010h                ; b9 10 00
    6608     mov di, 04b6eh                            ; bf 6e 4b
     6726    mov di, 04c44h                            ; bf 44 4c
    66096727    repne scasb                               ; f2 ae
    66106728    sal cx, 1                                 ; d1 e1
    66116729    mov di, cx                                ; 89 cf
    6612     mov ax, word [cs:di+04b7dh]               ; 2e 8b 85 7d 4b
     6730    mov ax, word [cs:di+04c53h]               ; 2e 8b 85 53 4c
    66136731    jmp ax                                    ; ff e0
    66146732    xor bl, 040h                              ; 80 f3 40
     
    66166734    mov dx, strict word 00017h                ; ba 17 00
    66176735    mov ax, strict word 00040h                ; b8 40 00
    6618     call 0160eh                               ; e8 f6 c9
     6736    call 0160eh                               ; e8 20 c9
    66196737    or byte [bp-008h], 040h                   ; 80 4e f8 40
    66206738    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    6621     jmp near 04d99h                           ; e9 76 01
     6739    jmp near 04e6fh                           ; e9 76 01
    66226740    mov al, byte [bp-00ch]                    ; 8a 46 f4
    66236741    and AL, strict byte 0bfh                  ; 24 bf
    66246742    mov byte [bp-008h], al                    ; 88 46 f8
    66256743    movzx bx, al                              ; 0f b6 d8
    6626     jmp near 04d99h                           ; e9 68 01
     6744    jmp near 04e6fh                           ; e9 68 01
    66276745    test byte [bp-002h], 002h                 ; f6 46 fe 02
    6628     jne near 04ed3h                           ; 0f 85 9a 02
     6746    jne near 04fa9h                           ; 0f 85 9a 02
    66296747    mov al, byte [bp-006h]                    ; 8a 46 fa
    66306748    and AL, strict byte 07fh                  ; 24 7f
     
    66356753    inc ax                                    ; 40
    66366754    test byte [bp-006h], 080h                 ; f6 46 fa 80
    6637     je short 04c52h                           ; 74 06
     6755    je short 04d28h                           ; 74 06
    66386756    not al                                    ; f6 d0
    66396757    and bl, al                                ; 20 c3
    6640     jmp short 04c54h                          ; eb 02
     6758    jmp short 04d2ah                          ; eb 02
    66416759    or bl, al                                 ; 08 c3
    66426760    xor bh, bh                                ; 30 ff
    66436761    mov dx, strict word 00017h                ; ba 17 00
    66446762    mov ax, strict word 00040h                ; b8 40 00
    6645     call 0160eh                               ; e8 af c9
    6646     jmp near 04ed3h                           ; e9 71 02
     6763    call 0160eh                               ; e8 d9 c8
     6764    jmp near 04fa9h                           ; e9 71 02
    66476765    test byte [bp-004h], 001h                 ; f6 46 fc 01
    6648     jne near 04ed3h                           ; 0f 85 69 02
     6766    jne near 04fa9h                           ; 0f 85 69 02
    66496767    or bl, 004h                               ; 80 cb 04
    66506768    xor bh, bh                                ; 30 ff
    66516769    mov dx, strict word 00017h                ; ba 17 00
    66526770    mov ax, strict word 00040h                ; b8 40 00
    6653     call 0160eh                               ; e8 96 c9
     6771    call 0160eh                               ; e8 c0 c8
    66546772    mov al, byte [bp-004h]                    ; 8a 46 fc
    66556773    test AL, strict byte 002h                 ; a8 02
    6656     je short 04c8ch                           ; 74 0d
     6774    je short 04d62h                           ; 74 0d
    66576775    or AL, strict byte 004h                   ; 0c 04
    66586776    mov byte [bp-002h], al                    ; 88 46 fe
    66596777    movzx bx, al                              ; 0f b6 d8
    66606778    mov dx, 00096h                            ; ba 96 00
    6661     jmp short 04c9ah                          ; eb 0e
     6779    jmp short 04d70h                          ; eb 0e
    66626780    mov al, byte [bp-00ch]                    ; 8a 46 f4
    66636781    or AL, strict byte 001h                   ; 0c 01
     
    66666784    mov dx, strict word 00018h                ; ba 18 00
    66676785    mov ax, strict word 00040h                ; b8 40 00
    6668     call 0160eh                               ; e8 6e c9
    6669     jmp near 04ed3h                           ; e9 30 02
     6786    call 0160eh                               ; e8 98 c8
     6787    jmp near 04fa9h                           ; e9 30 02
    66706788    test byte [bp-004h], 001h                 ; f6 46 fc 01
    6671     jne near 04ed3h                           ; 0f 85 28 02
     6789    jne near 04fa9h                           ; 0f 85 28 02
    66726790    and bl, 0fbh                              ; 80 e3 fb
    66736791    xor bh, bh                                ; 30 ff
    66746792    mov dx, strict word 00017h                ; ba 17 00
    66756793    mov ax, strict word 00040h                ; b8 40 00
    6676     call 0160eh                               ; e8 55 c9
     6794    call 0160eh                               ; e8 7f c8
    66776795    mov al, byte [bp-004h]                    ; 8a 46 fc
    66786796    test AL, strict byte 002h                 ; a8 02
    6679     je short 04ccdh                           ; 74 0d
     6797    je short 04da3h                           ; 74 0d
    66806798    and AL, strict byte 0fbh                  ; 24 fb
    66816799    mov byte [bp-002h], al                    ; 88 46 fe
    66826800    movzx bx, al                              ; 0f b6 d8
    66836801    mov dx, 00096h                            ; ba 96 00
    6684     jmp short 04cdbh                          ; eb 0e
     6802    jmp short 04db1h                          ; eb 0e
    66856803    mov al, byte [bp-00ch]                    ; 8a 46 f4
    66866804    and AL, strict byte 0feh                  ; 24 fe
     
    66896807    mov dx, strict word 00018h                ; ba 18 00
    66906808    mov ax, strict word 00040h                ; b8 40 00
    6691     call 0160eh                               ; e8 2d c9
    6692     jmp near 04ed3h                           ; e9 ef 01
     6809    call 0160eh                               ; e8 57 c8
     6810    jmp near 04fa9h                           ; e9 ef 01
    66936811    or bl, 008h                               ; 80 cb 08
    66946812    xor bh, bh                                ; 30 ff
    66956813    mov dx, strict word 00017h                ; ba 17 00
    66966814    mov ax, strict word 00040h                ; b8 40 00
    6697     call 0160eh                               ; e8 1c c9
     6815    call 0160eh                               ; e8 46 c8
    66986816    mov al, byte [bp-004h]                    ; 8a 46 fc
    66996817    test AL, strict byte 002h                 ; a8 02
    6700     je short 04d06h                           ; 74 0d
     6818    je short 04ddch                           ; 74 0d
    67016819    or AL, strict byte 008h                   ; 0c 08
    67026820    mov byte [bp-002h], al                    ; 88 46 fe
    67036821    movzx bx, al                              ; 0f b6 d8
    67046822    mov dx, 00096h                            ; ba 96 00
    6705     jmp short 04d14h                          ; eb 0e
     6823    jmp short 04deah                          ; eb 0e
    67066824    mov al, byte [bp-00ch]                    ; 8a 46 f4
    67076825    or AL, strict byte 002h                   ; 0c 02
     
    67106828    mov dx, strict word 00018h                ; ba 18 00
    67116829    mov ax, strict word 00040h                ; b8 40 00
    6712     call 0160eh                               ; e8 f4 c8
    6713     jmp near 04ed3h                           ; e9 b6 01
     6830    call 0160eh                               ; e8 1e c8
     6831    jmp near 04fa9h                           ; e9 b6 01
    67146832    and bl, 0f7h                              ; 80 e3 f7
    67156833    xor bh, bh                                ; 30 ff
    67166834    mov dx, strict word 00017h                ; ba 17 00
    67176835    mov ax, strict word 00040h                ; b8 40 00
    6718     call 0160eh                               ; e8 e3 c8
     6836    call 0160eh                               ; e8 0d c8
    67196837    mov al, byte [bp-004h]                    ; 8a 46 fc
    67206838    test AL, strict byte 002h                 ; a8 02
    6721     je short 04d3fh                           ; 74 0d
     6839    je short 04e15h                           ; 74 0d
    67226840    and AL, strict byte 0f7h                  ; 24 f7
    67236841    mov byte [bp-002h], al                    ; 88 46 fe
    67246842    movzx bx, al                              ; 0f b6 d8
    67256843    mov dx, 00096h                            ; ba 96 00
    6726     jmp short 04d4dh                          ; eb 0e
     6844    jmp short 04e23h                          ; eb 0e
    67276845    mov al, byte [bp-00ch]                    ; 8a 46 f4
    67286846    and AL, strict byte 0fdh                  ; 24 fd
     
    67316849    mov dx, strict word 00018h                ; ba 18 00
    67326850    mov ax, strict word 00040h                ; b8 40 00
    6733     call 0160eh                               ; e8 bb c8
    6734     jmp near 04ed3h                           ; e9 7d 01
     6851    call 0160eh                               ; e8 e5 c7
     6852    jmp near 04fa9h                           ; e9 7d 01
    67356853    test byte [bp-004h], 003h                 ; f6 46 fc 03
    6736     jne near 04ed3h                           ; 0f 85 75 01
     6854    jne near 04fa9h                           ; 0f 85 75 01
    67376855    mov al, byte [bp-00ch]                    ; 8a 46 f4
    67386856    or AL, strict byte 020h                   ; 0c 20
     
    67416859    mov dx, strict word 00018h                ; ba 18 00
    67426860    mov ax, strict word 00040h                ; b8 40 00
    6743     call 0160eh                               ; e8 9c c8
     6861    call 0160eh                               ; e8 c6 c7
    67446862    mov bl, byte [bp-00ah]                    ; 8a 5e f6
    67456863    xor bl, 020h                              ; 80 f3 20
     
    67476865    mov dx, strict word 00017h                ; ba 17 00
    67486866    mov ax, strict word 00040h                ; b8 40 00
    6749     call 0160eh                               ; e8 8b c8
    6750     jmp near 04ed3h                           ; e9 4d 01
     6867    call 0160eh                               ; e8 b5 c7
     6868    jmp near 04fa9h                           ; e9 4d 01
    67516869    test byte [bp-004h], 003h                 ; f6 46 fc 03
    6752     jne near 04ed3h                           ; 0f 85 45 01
     6870    jne near 04fa9h                           ; 0f 85 45 01
    67536871    mov al, byte [bp-00ch]                    ; 8a 46 f4
    67546872    and AL, strict byte 0dfh                  ; 24 df
     
    67576875    mov dx, strict word 00018h                ; ba 18 00
    67586876    mov ax, strict word 00040h                ; b8 40 00
    6759     call 0160eh                               ; e8 6c c8
    6760     jmp near 04ed3h                           ; e9 2e 01
     6877    call 0160eh                               ; e8 96 c7
     6878    jmp near 04fa9h                           ; e9 2e 01
    67616879    mov al, byte [bp-00ch]                    ; 8a 46 f4
    67626880    or AL, strict byte 010h                   ; 0c 10
     
    67656883    mov dx, strict word 00018h                ; ba 18 00
    67666884    mov ax, strict word 00040h                ; b8 40 00
    6767     call 0160eh                               ; e8 55 c8
     6885    call 0160eh                               ; e8 7f c7
    67686886    mov bl, byte [bp-00ah]                    ; 8a 5e f6
    67696887    xor bl, 010h                              ; 80 f3 10
    6770     jmp short 04d78h                          ; eb b7
     6888    jmp short 04e4eh                          ; eb b7
    67716889    mov al, byte [bp-00ch]                    ; 8a 46 f4
    67726890    and AL, strict byte 0efh                  ; 24 ef
    6773     jmp short 04d93h                          ; eb cb
     6891    jmp short 04e69h                          ; eb cb
    67746892    mov al, bl                                ; 88 d8
    67756893    and AL, strict byte 00ch                  ; 24 0c
    67766894    cmp AL, strict byte 00ch                  ; 3c 0c
    6777     jne short 04dd5h                          ; 75 05
     6895    jne short 04eabh                          ; 75 05
    67786896    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    67796897    test byte [bp-006h], 080h                 ; f6 46 fa 80
    6780     jne near 04ed3h                           ; 0f 85 f6 00
     6898    jne near 04fa9h                           ; 0f 85 f6 00
    67816899    cmp byte [bp-006h], 058h                  ; 80 7e fa 58
    6782     jbe short 04e01h                          ; 76 1e
    6783     mov bx, 00cd6h                            ; bb d6 0c
     6900    jbe short 04ed7h                          ; 76 1e
     6901    mov bx, 00cech                            ; bb ec 0c
    67846902    mov cx, ds                                ; 8c d9
    67856903    mov ax, strict word 00004h                ; b8 04 00
    6786     call 018aeh                               ; e8 c0 ca
     6904    call 018aeh                               ; e8 ea c9
    67876905    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    67886906    push ax                                   ; 50
    67896907    push 0050fh                               ; 68 0f 05
    67906908    push strict byte 00004h                   ; 6a 04
    6791     call 018e9h                               ; e8 ee ca
     6909    call 018e9h                               ; e8 18 ca
    67926910    add sp, strict byte 00006h                ; 83 c4 06
    6793     jmp near 04ef1h                           ; e9 f0 00
     6911    jmp near 04fc7h                           ; e9 f0 00
    67946912    test bl, 008h                             ; f6 c3 08
    6795     je short 04e18h                           ; 74 12
     6913    je short 04eeeh                           ; 74 12
    67966914    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    67976915    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6798     mov dl, byte [si+00d2ah]                  ; 8a 94 2a 0d
    6799     mov ax, word [si+00d2ah]                  ; 8b 84 2a 0d
    6800     jmp near 04ea4h                           ; e9 8c 00
     6916    mov dl, byte [si+00d40h]                  ; 8a 94 40 0d
     6917    mov ax, word [si+00d40h]                  ; 8b 84 40 0d
     6918    jmp near 04f7ah                           ; e9 8c 00
    68016919    test bl, 004h                             ; f6 c3 04
    6802     je short 04e2fh                           ; 74 12
     6920    je short 04f05h                           ; 74 12
    68036921    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    68046922    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6805     mov dl, byte [si+00d28h]                  ; 8a 94 28 0d
    6806     mov ax, word [si+00d28h]                  ; 8b 84 28 0d
    6807     jmp near 04ea4h                           ; e9 75 00
     6923    mov dl, byte [si+00d3eh]                  ; 8a 94 3e 0d
     6924    mov ax, word [si+00d3eh]                  ; 8b 84 3e 0d
     6925    jmp near 04f7ah                           ; e9 75 00
    68086926    mov al, byte [bp-002h]                    ; 8a 46 fe
    68096927    and AL, strict byte 002h                  ; 24 02
    68106928    test al, al                               ; 84 c0
    6811     jbe short 04e4dh                          ; 76 15
     6929    jbe short 04f23h                          ; 76 15
    68126930    mov al, byte [bp-006h]                    ; 8a 46 fa
    68136931    cmp AL, strict byte 047h                  ; 3c 47
    6814     jc short 04e4dh                           ; 72 0e
     6932    jc short 04f23h                           ; 72 0e
    68156933    cmp AL, strict byte 053h                  ; 3c 53
    6816     jnbe short 04e4dh                         ; 77 0a
     6934    jnbe short 04f23h                         ; 77 0a
    68176935    mov DL, strict byte 0e0h                  ; b2 e0
    68186936    movzx si, al                              ; 0f b6 f0
    68196937    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6820     jmp short 04ea0h                          ; eb 53
     6938    jmp short 04f76h                          ; eb 53
    68216939    test bl, 003h                             ; f6 c3 03
    6822     je short 04e7fh                           ; 74 2d
     6940    je short 04f55h                           ; 74 2d
    68236941    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    68246942    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6825     movzx ax, byte [si+00d2ch]                ; 0f b6 84 2c 0d
     6943    movzx ax, byte [si+00d42h]                ; 0f b6 84 42 0d
    68266944    movzx dx, bl                              ; 0f b6 d3
    68276945    test dx, ax                               ; 85 c2
    6828     je short 04e6fh                           ; 74 0a
    6829     mov dl, byte [si+00d24h]                  ; 8a 94 24 0d
    6830     mov ax, word [si+00d24h]                  ; 8b 84 24 0d
    6831     jmp short 04e77h                          ; eb 08
    6832     mov dl, byte [si+00d26h]                  ; 8a 94 26 0d
    6833     mov ax, word [si+00d26h]                  ; 8b 84 26 0d
     6946    je short 04f45h                           ; 74 0a
     6947    mov dl, byte [si+00d3ah]                  ; 8a 94 3a 0d
     6948    mov ax, word [si+00d3ah]                  ; 8b 84 3a 0d
     6949    jmp short 04f4dh                          ; eb 08
     6950    mov dl, byte [si+00d3ch]                  ; 8a 94 3c 0d
     6951    mov ax, word [si+00d3ch]                  ; 8b 84 3c 0d
    68346952    shr ax, 008h                              ; c1 e8 08
    68356953    mov byte [bp-006h], al                    ; 88 46 fa
    6836     jmp short 04eaah                          ; eb 2b
     6954    jmp short 04f80h                          ; eb 2b
    68376955    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    68386956    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6839     movzx ax, byte [si+00d2ch]                ; 0f b6 84 2c 0d
     6957    movzx ax, byte [si+00d42h]                ; 0f b6 84 42 0d
    68406958    movzx dx, bl                              ; 0f b6 d3
    68416959    test dx, ax                               ; 85 c2
    6842     je short 04e9ch                           ; 74 0a
    6843     mov dl, byte [si+00d26h]                  ; 8a 94 26 0d
    6844     mov ax, word [si+00d26h]                  ; 8b 84 26 0d
    6845     jmp short 04ea4h                          ; eb 08
    6846     mov dl, byte [si+00d24h]                  ; 8a 94 24 0d
    6847     mov ax, word [si+00d24h]                  ; 8b 84 24 0d
     6960    je short 04f72h                           ; 74 0a
     6961    mov dl, byte [si+00d3ch]                  ; 8a 94 3c 0d
     6962    mov ax, word [si+00d3ch]                  ; 8b 84 3c 0d
     6963    jmp short 04f7ah                          ; eb 08
     6964    mov dl, byte [si+00d3ah]                  ; 8a 94 3a 0d
     6965    mov ax, word [si+00d3ah]                  ; 8b 84 3a 0d
    68486966    shr ax, 008h                              ; c1 e8 08
    68496967    mov byte [bp-006h], al                    ; 88 46 fa
    68506968    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    6851     jne short 04ecah                          ; 75 1a
     6969    jne short 04fa0h                          ; 75 1a
    68526970    test dl, dl                               ; 84 d2
    6853     jne short 04ecah                          ; 75 16
    6854     mov bx, 00cd6h                            ; bb d6 0c
     6971    jne short 04fa0h                          ; 75 16
     6972    mov bx, 00cech                            ; bb ec 0c
    68556973    mov cx, ds                                ; 8c d9
    68566974    mov ax, strict word 00004h                ; b8 04 00
    6857     call 018aeh                               ; e8 ef c9
     6975    call 018aeh                               ; e8 19 c9
    68586976    push 00546h                               ; 68 46 05
    68596977    push strict byte 00004h                   ; 6a 04
    6860     call 018e9h                               ; e8 22 ca
     6978    call 018e9h                               ; e8 4c c9
    68616979    add sp, strict byte 00004h                ; 83 c4 04
    68626980    xor dh, dh                                ; 30 f6
    68636981    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    6864     call 04b0dh                               ; e8 3a fc
     6982    call 04be3h                               ; e8 3a fc
    68656983    mov al, byte [bp-006h]                    ; 8a 46 fa
    68666984    and AL, strict byte 07fh                  ; 24 7f
    68676985    cmp AL, strict byte 01dh                  ; 3c 1d
    6868     je short 04ee0h                           ; 74 04
     6986    je short 04fb6h                           ; 74 04
    68696987    and byte [bp-002h], 0feh                  ; 80 66 fe fe
    68706988    and byte [bp-002h], 0fdh                  ; 80 66 fe fd
     
    68726990    mov dx, 00096h                            ; ba 96 00
    68736991    mov ax, strict word 00040h                ; b8 40 00
    6874     call 0160eh                               ; e8 1d c7
     6992    call 0160eh                               ; e8 47 c6
    68756993    leave                                     ; c9
    68766994    pop di                                    ; 5f
    68776995    pop si                                    ; 5e
    68786996    retn                                      ; c3
    6879 dequeue_key_:                                ; 0xf4ef5 LB 0x90
     6997dequeue_key_:                                ; 0xf4fcb LB 0x90
    68806998    push si                                   ; 56
    68816999    push di                                   ; 57
     
    68877005    mov dx, strict word 0001ah                ; ba 1a 00
    68887006    mov ax, strict word 00040h                ; b8 40 00
    6889     call 0161ch                               ; e8 0e c7
     7007    call 0161ch                               ; e8 38 c6
    68907008    mov bx, ax                                ; 89 c3
    68917009    mov dx, strict word 0001ch                ; ba 1c 00
    68927010    mov ax, strict word 00040h                ; b8 40 00
    6893     call 0161ch                               ; e8 03 c7
     7011    call 0161ch                               ; e8 2d c6
    68947012    cmp bx, ax                                ; 39 c3
    6895     je short 04f5ah                           ; 74 3d
     7013    je short 05030h                           ; 74 3d
    68967014    mov dx, bx                                ; 89 da
    68977015    mov ax, strict word 00040h                ; b8 40 00
    6898     call 01600h                               ; e8 db c6
     7016    call 01600h                               ; e8 05 c6
    68997017    mov cl, al                                ; 88 c1
    69007018    lea dx, [bx+001h]                         ; 8d 57 01
    69017019    mov ax, strict word 00040h                ; b8 40 00
    6902     call 01600h                               ; e8 d0 c6
     7020    call 01600h                               ; e8 fa c5
    69037021    mov es, [bp-004h]                         ; 8e 46 fc
    69047022    mov byte [es:si], cl                      ; 26 88 0c
     
    69067024    mov byte [es:di], al                      ; 26 88 05
    69077025    cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
    6908     je short 04f55h                           ; 74 13
     7026    je short 0502bh                           ; 74 13
    69097027    inc bx                                    ; 43
    69107028    inc bx                                    ; 43
    69117029    cmp bx, strict byte 0003eh                ; 83 fb 3e
    6912     jc short 04f4ch                           ; 72 03
     7030    jc short 05022h                           ; 72 03
    69137031    mov bx, strict word 0001eh                ; bb 1e 00
    69147032    mov dx, strict word 0001ah                ; ba 1a 00
    69157033    mov ax, strict word 00040h                ; b8 40 00
    6916     call 0162ah                               ; e8 d5 c6
     7034    call 0162ah                               ; e8 ff c5
    69177035    mov ax, strict word 00001h                ; b8 01 00
    6918     jmp short 04f5ch                          ; eb 02
     7036    jmp short 05032h                          ; eb 02
    69197037    xor ax, ax                                ; 31 c0
    69207038    leave                                     ; c9
     
    69267044    or cl, byte [bx+di]                       ; 0a 09
    69277045    add ax, 00102h                            ; 05 02 01
    6928     add byte [bx+di], ah                      ; 00 21
     7046    add bh, dh                                ; 00 f7
    69297047    push dx                                   ; 52
    6930     aaa                                       ; 37
    6931     push ax                                   ; 50
    6932     jle short 04fc3h                          ; 7e 50
    6933     retf 0da50h                               ; ca 50 da
    6934     push ax                                   ; 50
    6935     add AL, strict byte 051h                  ; 04 51
    6936     or ax, 07e51h                             ; 0d 51 7e
     7048    or ax, 05451h                             ; 0d 51 54
    69377049    push cx                                   ; 51
    6938     scasw                                     ; af
     7050    mov AL, byte [0b051h]                     ; a0 51 b0
    69397051    push cx                                   ; 51
    6940     fcom qword [bx+di+016h]                   ; dc 51 16
     7052    ficom dword [bx+di-01dh]                  ; da 51 e3
     7053    push cx                                   ; 51
     7054    push sp                                   ; 54
    69417055    push dx                                   ; 52
    6942     db  064h, 052h
    6943     ; fs push dx                                ; 64 52
    6944 _int16_function:                             ; 0xf4f85 LB 0x314
     7056    test word [bp+si-04eh], dx                ; 85 52 b2
     7057    push dx                                   ; 52
     7058    in AL, DX                                 ; ec
     7059    push dx                                   ; 52
     7060    db  03ah
     7061    push bx                                   ; 53
     7062_int16_function:                             ; 0xf505b LB 0x2e2
    69457063    push di                                   ; 57
    69467064    enter 00006h, 000h                        ; c8 06 00 00
    69477065    mov dx, strict word 00017h                ; ba 17 00
    69487066    mov ax, strict word 00040h                ; b8 40 00
    6949     call 01600h                               ; e8 6d c6
     7067    call 01600h                               ; e8 97 c5
    69507068    mov cl, al                                ; 88 c1
    69517069    mov bh, al                                ; 88 c7
    69527070    mov dx, 00097h                            ; ba 97 00
    69537071    mov ax, strict word 00040h                ; b8 40 00
    6954     call 01600h                               ; e8 60 c6
     7072    call 01600h                               ; e8 8a c5
    69557073    mov bl, al                                ; 88 c3
    69567074    movzx dx, cl                              ; 0f b6 d1
     
    69617079    xor al, dl                                ; 30 d0
    69627080    test ax, ax                               ; 85 c0
    6963     je short 05015h                           ; 74 60
     7081    je short 050ebh                           ; 74 60
    69647082    cli                                       ; fa
    69657083    mov AL, strict byte 0edh                  ; b0 ed
     
    69717089    ; sub ah, ah                                ; 2a e4
    69727090    test AL, strict byte 001h                 ; a8 01
    6973     jne short 04fceh                          ; 75 08
     7091    jne short 050a4h                          ; 75 08
    69747092    mov AL, strict byte 021h                  ; b0 21
    69757093    mov dx, 00080h                            ; ba 80 00
    69767094    out DX, AL                                ; ee
    6977     jmp short 04fbch                          ; eb ee
     7095    jmp short 05092h                          ; eb ee
    69787096    mov dx, strict word 00060h                ; ba 60 00
    69797097    in AL, DX                                 ; ec
     
    69817099    ; sub ah, ah                                ; 2a e4
    69827100    cmp ax, 000fah                            ; 3d fa 00
    6983     jne short 05014h                          ; 75 3b
     7101    jne short 050eah                          ; 75 3b
    69847102    and bl, 0f8h                              ; 80 e3 f8
    69857103    movzx ax, bh                              ; 0f b6 c7
     
    69977115    ; sub ah, ah                                ; 2a e4
    69987116    test AL, strict byte 001h                 ; a8 01
    6999     jne short 05003h                          ; 75 08
     7117    jne short 050d9h                          ; 75 08
    70007118    mov AL, strict byte 021h                  ; b0 21
    70017119    mov dx, 00080h                            ; ba 80 00
    70027120    out DX, AL                                ; ee
    7003     jmp short 04ff1h                          ; eb ee
     7121    jmp short 050c7h                          ; eb ee
    70047122    mov dx, strict word 00060h                ; ba 60 00
    70057123    in AL, DX                                 ; ec
     
    70097127    mov dx, 00097h                            ; ba 97 00
    70107128    mov ax, strict word 00040h                ; b8 40 00
    7011     call 0160eh                               ; e8 fa c5
     7129    call 0160eh                               ; e8 24 c5
    70127130    sti                                       ; fb
    70137131    mov ax, word [bp+014h]                    ; 8b 46 14
    70147132    shr ax, 008h                              ; c1 e8 08
    70157133    cmp ax, 000a2h                            ; 3d a2 00
    7016     jnbe near 05221h                          ; 0f 87 ff 01
     7134    jnbe near 052f7h                          ; 0f 87 ff 01
    70177135    push CS                                   ; 0e
    70187136    pop ES                                    ; 07
    70197137    mov cx, strict word 0000ch                ; b9 0c 00
    7020     mov di, 04f62h                            ; bf 62 4f
     7138    mov di, 05038h                            ; bf 38 50
    70217139    repne scasb                               ; f2 ae
    70227140    sal cx, 1                                 ; d1 e1
    70237141    mov di, cx                                ; 89 cf
    7024     mov ax, word [cs:di+04f6dh]               ; 2e 8b 85 6d 4f
     7142    mov ax, word [cs:di+05043h]               ; 2e 8b 85 43 50
    70257143    jmp ax                                    ; ff e0
    70267144    push strict byte 00001h                   ; 6a 01
     
    70297147    mov dx, ss                                ; 8c d2
    70307148    lea ax, [bp-004h]                         ; 8d 46 fc
    7031     call 04ef5h                               ; e8 af fe
     7149    call 04fcbh                               ; e8 af fe
    70327150    test ax, ax                               ; 85 c0
    7033     jne short 05055h                          ; 75 0b
     7151    jne short 0512bh                          ; 75 0b
    70347152    push 0057dh                               ; 68 7d 05
    70357153    push strict byte 00007h                   ; 6a 07
    7036     call 018e9h                               ; e8 97 c8
     7154    call 018e9h                               ; e8 c1 c7
    70377155    add sp, strict byte 00004h                ; 83 c4 04
    70387156    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    7039     je short 05061h                           ; 74 06
     7157    je short 05137h                           ; 74 06
    70407158    cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
    7041     je short 05067h                           ; 74 06
     7159    je short 0513dh                           ; 74 06
    70427160    cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
    7043     jne short 0506bh                          ; 75 04
     7161    jne short 05141h                          ; 75 04
    70447162    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    70457163    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     
    70577175    mov dx, ss                                ; 8c d2
    70587176    lea ax, [bp-004h]                         ; 8d 46 fc
    7059     call 04ef5h                               ; e8 63 fe
     7177    call 04fcbh                               ; e8 63 fe
    70607178    test ax, ax                               ; 85 c0
    7061     jne short 0509dh                          ; 75 07
     7179    jne short 05173h                          ; 75 07
    70627180    or word [bp+01eh], strict byte 00040h     ; 83 4e 1e 40
    70637181    leave                                     ; c9
     
    70657183    retn                                      ; c3
    70667184    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    7067     je short 050a9h                           ; 74 06
     7185    je short 0517fh                           ; 74 06
    70687186    cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
    7069     je short 050afh                           ; 74 06
     7187    je short 05185h                           ; 74 06
    70707188    cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
    7071     jne short 050b3h                          ; 75 04
     7189    jne short 05189h                          ; 75 04
    70727190    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    70737191    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
     
    70827200    mov dx, strict word 00017h                ; ba 17 00
    70837201    mov ax, strict word 00040h                ; b8 40 00
    7084     call 01600h                               ; e8 2d c5
     7202    call 01600h                               ; e8 57 c4
    70857203    mov dx, word [bp+014h]                    ; 8b 56 14
    70867204    mov dl, al                                ; 88 c2
    7087     jmp short 05078h                          ; eb 9e
     7205    jmp short 0514eh                          ; eb 9e
    70887206    mov al, byte [bp+012h]                    ; 8a 46 12
    70897207    movzx dx, al                              ; 0f b6 d0
     
    70917209    shr ax, 008h                              ; c1 e8 08
    70927210    xor ah, ah                                ; 30 e4
    7093     call 04b0dh                               ; e8 22 fa
     7211    call 04be3h                               ; e8 22 fa
    70947212    test ax, ax                               ; 85 c0
    7095     jne short 050fch                          ; 75 0d
     7213    jne short 051d2h                          ; 75 0d
    70967214    mov ax, word [bp+014h]                    ; 8b 46 14
    70977215    xor al, al                                ; 30 c0
     
    71087226    xor al, al                                ; 30 c0
    71097227    or AL, strict byte 030h                   ; 0c 30
    7110     jmp short 050f6h                          ; eb e9
     7228    jmp short 051cch                          ; eb e9
    71117229    mov byte [bp-002h], 002h                  ; c6 46 fe 02
    71127230    xor cx, cx                                ; 31 c9
     
    71217239    ; sub ah, ah                                ; 2a e4
    71227240    test AL, strict byte 001h                 ; a8 01
    7123     jne short 05134h                          ; 75 0d
     7241    jne short 0520ah                          ; 75 0d
    71247242    dec bx                                    ; 4b
    71257243    test bx, bx                               ; 85 db
    7126     jbe short 05134h                          ; 76 08
     7244    jbe short 0520ah                          ; 76 08
    71277245    mov dx, 00080h                            ; ba 80 00
    71287246    in AL, DX                                 ; ec
    71297247    db  02ah, 0e4h
    71307248    ; sub ah, ah                                ; 2a e4
    7131     jmp short 0511dh                          ; eb e9
     7249    jmp short 051f3h                          ; eb e9
    71327250    test bx, bx                               ; 85 db
    7133     jbe short 05178h                          ; 76 40
     7251    jbe short 0524eh                          ; 76 40
    71347252    mov dx, strict word 00060h                ; ba 60 00
    71357253    in AL, DX                                 ; ec
     
    71377255    ; sub ah, ah                                ; 2a e4
    71387256    cmp ax, 000fah                            ; 3d fa 00
    7139     jne short 05178h                          ; 75 35
     7257    jne short 0524eh                          ; 75 35
    71407258    mov bx, strict word 0ffffh                ; bb ff ff
    71417259    mov dx, strict word 00064h                ; ba 64 00
     
    71447262    ; sub ah, ah                                ; 2a e4
    71457263    test AL, strict byte 001h                 ; a8 01
    7146     jne short 0515dh                          ; 75 0d
     7264    jne short 05233h                          ; 75 0d
    71477265    dec bx                                    ; 4b
    71487266    test bx, bx                               ; 85 db
    7149     jbe short 0515dh                          ; 76 08
     7267    jbe short 05233h                          ; 76 08
    71507268    mov dx, 00080h                            ; ba 80 00
    71517269    in AL, DX                                 ; ec
    71527270    db  02ah, 0e4h
    71537271    ; sub ah, ah                                ; 2a e4
    7154     jmp short 05146h                          ; eb e9
     7272    jmp short 0521ch                          ; eb e9
    71557273    test bx, bx                               ; 85 db
    7156     jbe short 0516fh                          ; 76 0e
     7274    jbe short 05245h                          ; 76 0e
    71577275    shr cx, 008h                              ; c1 e9 08
    71587276    mov dx, strict word 00060h                ; ba 60 00
     
    71647282    dec byte [bp-002h]                        ; fe 4e fe
    71657283    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    7166     jnbe short 05143h                         ; 77 cb
     7284    jnbe short 05219h                         ; 77 cb
    71677285    mov word [bp+00eh], cx                    ; 89 4e 0e
    71687286    leave                                     ; c9
     
    71747292    mov dx, ss                                ; 8c d2
    71757293    lea ax, [bp-004h]                         ; 8d 46 fc
    7176     call 04ef5h                               ; e8 68 fd
     7294    call 04fcbh                               ; e8 68 fd
    71777295    test ax, ax                               ; 85 c0
    7178     jne short 0519ch                          ; 75 0b
     7296    jne short 05272h                          ; 75 0b
    71797297    push 0057dh                               ; 68 7d 05
    71807298    push strict byte 00007h                   ; 6a 07
    7181     call 018e9h                               ; e8 50 c7
     7299    call 018e9h                               ; e8 7a c6
    71827300    add sp, strict byte 00004h                ; 83 c4 04
    71837301    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    7184     je near 0506bh                            ; 0f 84 c7 fe
     7302    je near 05141h                            ; 0f 84 c7 fe
    71857303    cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
    7186     je near 05067h                            ; 0f 84 bb fe
    7187     jmp near 0506bh                           ; e9 bc fe
     7304    je near 0513dh                            ; 0f 84 bb fe
     7305    jmp near 05141h                           ; e9 bc fe
    71887306    or word [bp+01eh], 00200h                 ; 81 4e 1e 00 02
    71897307    push strict byte 00000h                   ; 6a 00
     
    71927310    mov dx, ss                                ; 8c d2
    71937311    lea ax, [bp-004h]                         ; 8d 46 fc
    7194     call 04ef5h                               ; e8 32 fd
     7312    call 04fcbh                               ; e8 32 fd
    71957313    test ax, ax                               ; 85 c0
    7196     je near 05096h                            ; 0f 84 cd fe
     7314    je near 0516ch                            ; 0f 84 cd fe
    71977315    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    7198     je near 050b3h                            ; 0f 84 e2 fe
     7316    je near 05189h                            ; 0f 84 e2 fe
    71997317    cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
    7200     je near 050afh                            ; 0f 84 d6 fe
    7201     jmp near 050b3h                           ; e9 d7 fe
     7318    je near 05185h                            ; 0f 84 d6 fe
     7319    jmp near 05189h                           ; e9 d7 fe
    72027320    mov dx, strict word 00017h                ; ba 17 00
    72037321    mov ax, strict word 00040h                ; b8 40 00
    7204     call 01600h                               ; e8 1b c4
     7322    call 01600h                               ; e8 45 c3
    72057323    mov dx, word [bp+014h]                    ; 8b 56 14
    72067324    mov dl, al                                ; 88 c2
     
    72087326    mov dx, strict word 00018h                ; ba 18 00
    72097327    mov ax, strict word 00040h                ; b8 40 00
    7210     call 01600h                               ; e8 0a c4
     7328    call 01600h                               ; e8 34 c3
    72117329    mov bh, al                                ; 88 c7
    72127330    and bh, 073h                              ; 80 e7 73
    72137331    mov dx, 00096h                            ; ba 96 00
    72147332    mov ax, strict word 00040h                ; b8 40 00
    7215     call 01600h                               ; e8 fc c3
     7333    call 01600h                               ; e8 26 c3
    72167334    and AL, strict byte 00ch                  ; 24 0c
    72177335    or bh, al                                 ; 08 c7
     
    72207338    movzx ax, bh                              ; 0f b6 c7
    72217339    sal ax, 008h                              ; c1 e0 08
    7222     jmp near 05076h                           ; e9 60 fe
     7340    jmp near 0514ch                           ; e9 60 fe
    72237341    mov ax, word [bp+014h]                    ; 8b 46 14
    72247342    xor ah, ah                                ; 30 e4
    72257343    or ah, 080h                               ; 80 cc 80
    7226     jmp near 050f6h                           ; e9 d5 fe
    7227     mov bx, 00cd6h                            ; bb d6 0c
     7344    jmp near 051cch                           ; e9 d5 fe
     7345    mov bx, 00cech                            ; bb ec 0c
    72287346    mov cx, ds                                ; 8c d9
    72297347    mov ax, strict word 00004h                ; b8 04 00
    7230     call 018aeh                               ; e8 82 c6
     7348    call 018aeh                               ; e8 ac c5
    72317349    mov ax, word [bp+014h]                    ; 8b 46 14
    72327350    shr ax, 008h                              ; c1 e8 08
     
    72347352    push 005a1h                               ; 68 a1 05
    72357353    push strict byte 00004h                   ; 6a 04
    7236     call 018e9h                               ; e8 ae c6
     7354    call 018e9h                               ; e8 d8 c5
    72377355    add sp, strict byte 00006h                ; 83 c4 06
    7238     mov bx, 00cd6h                            ; bb d6 0c
     7356    mov bx, 00cech                            ; bb ec 0c
    72397357    mov cx, ds                                ; 8c d9
    72407358    mov ax, strict word 00004h                ; b8 04 00
    7241     call 018aeh                               ; e8 65 c6
     7359    call 018aeh                               ; e8 8f c5
    72427360    mov ax, word [bp+010h]                    ; 8b 46 10
    72437361    push ax                                   ; 50
     
    72507368    push 005c9h                               ; 68 c9 05
    72517369    push strict byte 00004h                   ; 6a 04
    7252     call 018e9h                               ; e8 88 c6
     7370    call 018e9h                               ; e8 b2 c5
    72537371    add sp, strict byte 0000ch                ; 83 c4 0c
    72547372    leave                                     ; c9
    72557373    pop di                                    ; 5f
    72567374    retn                                      ; c3
    7257     and word [bp+di+045h], dx                 ; 21 53 45
    7258     push bx                                   ; 53
    7259     jc short 052c0h                           ; 72 53
    7260     jc short 052c2h                           ; 72 53
    7261     jc short 052c4h                           ; 72 53
    7262     dec dx                                    ; 4a
    7263     push bp                                   ; 55
    7264     js short 052cbh                           ; 78 56
    7265     js short 052cdh                           ; 78 56
    7266     arpl word [di+055h], dx                   ; 63 55 55
     7375set_geom_lba_:                               ; 0xf533d LB 0x9e
    72677376    push si                                   ; 56
    7268     js short 052d3h                           ; 78 56
    7269     js short 052d5h                           ; 78 56
    7270     push bp                                   ; 55
     7377    push di                                   ; 57
     7378    enter 00004h, 000h                        ; c8 04 00 00
     7379    mov si, ax                                ; 89 c6
     7380    mov es, dx                                ; 8e c2
     7381    mov word [bp-004h], bx                    ; 89 5e fc
     7382    mov word [bp-002h], cx                    ; 89 4e fe
     7383    xor ax, ax                                ; 31 c0
     7384    mov dx, strict word 0007eh                ; ba 7e 00
     7385    mov di, 000ffh                            ; bf ff 00
     7386    xor bx, bx                                ; 31 db
     7387    jmp short 0535eh                          ; eb 05
     7388    cmp bx, strict byte 00004h                ; 83 fb 04
     7389    jnl short 05374h                          ; 7d 16
     7390    cmp dx, word [bp-002h]                    ; 3b 56 fe
     7391    jnbe short 0536ah                         ; 77 07
     7392    jne short 0536dh                          ; 75 08
     7393    cmp ax, word [bp-004h]                    ; 3b 46 fc
     7394    jc short 0536dh                           ; 72 03
     7395    inc di                                    ; 47
     7396    shr di, 1                                 ; d1 ef
     7397    shr dx, 1                                 ; d1 ea
     7398    rcr ax, 1                                 ; d1 d8
     7399    inc bx                                    ; 43
     7400    jmp short 05359h                          ; eb e5
     7401    mov ax, di                                ; 89 f8
     7402    xor dx, dx                                ; 31 d2
     7403    mov bx, strict word 0003fh                ; bb 3f 00
     7404    xor cx, cx                                ; 31 c9
     7405    call 08ff9h                               ; e8 79 3c
     7406    mov bx, ax                                ; 89 c3
     7407    mov cx, dx                                ; 89 d1
     7408    mov ax, word [bp-004h]                    ; 8b 46 fc
     7409    mov dx, word [bp-002h]                    ; 8b 56 fe
     7410    call 08fc0h                               ; e8 33 3c
     7411    mov word [es:si+002h], ax                 ; 26 89 44 02
     7412    cmp ax, 00400h                            ; 3d 00 04
     7413    jbe short 0539ch                          ; 76 06
     7414    mov word [es:si+002h], 00400h             ; 26 c7 44 02 00 04
     7415    mov word [es:si], di                      ; 26 89 3c
     7416    mov word [es:si+004h], strict word 0003fh ; 26 c7 44 04 3f 00
     7417    leave                                     ; c9
     7418    pop di                                    ; 5f
     7419    pop si                                    ; 5e
     7420    retn                                      ; c3
     7421    arpl word [si-079h], dx                   ; 63 54 87
     7422    push sp                                   ; 54
     7423    mov AH, strict byte 054h                  ; b4 54
     7424    mov AH, strict byte 054h                  ; b4 54
     7425    mov AH, strict byte 054h                  ; b4 54
     7426    mov [bp-046h], ss                         ; 8c 56 ba
     7427    push di                                   ; 57
     7428    mov dx, 0a557h                            ; ba 57 a5
    72717429    push si                                   ; 56
    7272     push bp                                   ; 55
    7273     push si                                   ; 56
    7274     js short 052dbh                           ; 78 56
    7275     js short 052ddh                           ; 78 56
    7276     fst dword [di+055h]                       ; d9 55 55
    7277     push si                                   ; 56
    7278     js short 052e3h                           ; 78 56
    7279     js short 052e5h                           ; 78 56
    7280     push bp                                   ; 55
    7281     push si                                   ; 56
    7282     or word [bp+078h], dx                     ; 09 56 78
    7283     push si                                   ; 56
    7284     js short 052edh                           ; 78 56
    7285     js short 052efh                           ; 78 56
    7286 _int13_harddisk:                             ; 0xf5299 LB 0x43c
     7430    xchg di, ax                               ; 97
     7431    push di                                   ; 57
     7432    mov dx, 0ba57h                            ; ba 57 ba
     7433    push di                                   ; 57
     7434    xchg di, ax                               ; 97
     7435    push di                                   ; 57
     7436    xchg di, ax                               ; 97
     7437    push di                                   ; 57
     7438    mov dx, 0ba57h                            ; ba 57 ba
     7439    push di                                   ; 57
     7440    sbb dx, word [bx-069h]                    ; 1b 57 97
     7441    push di                                   ; 57
     7442    mov dx, 0ba57h                            ; ba 57 ba
     7443    push di                                   ; 57
     7444    xchg di, ax                               ; 97
     7445    push di                                   ; 57
     7446    dec bx                                    ; 4b
     7447    push di                                   ; 57
     7448    mov dx, 0ba57h                            ; ba 57 ba
     7449    push di                                   ; 57
     7450    db  0bah
     7451    push di                                   ; 57
     7452_int13_harddisk:                             ; 0xf53db LB 0x43c
    72877453    enter 00010h, 000h                        ; c8 10 00 00
    72887454    mov dx, strict word 0000eh                ; ba 0e 00
    72897455    mov ax, strict word 00040h                ; b8 40 00
    7290     call 0161ch                               ; e8 76 c3
     7456    call 0161ch                               ; e8 34 c2
    72917457    mov si, 00122h                            ; be 22 01
    72927458    mov word [bp-004h], ax                    ; 89 46 fc
     
    72947460    mov dx, 0008eh                            ; ba 8e 00
    72957461    mov ax, strict word 00040h                ; b8 40 00
    7296     call 0160eh                               ; e8 57 c3
     7462    call 0160eh                               ; e8 15 c2
    72977463    mov ax, word [bp+00eh]                    ; 8b 46 0e
    72987464    xor ah, ah                                ; 30 e4
    72997465    cmp ax, 00080h                            ; 3d 80 00
    7300     jc short 052c6h                           ; 72 05
     7466    jc short 05408h                           ; 72 05
    73017467    cmp ax, 00090h                            ; 3d 90 00
    7302     jc short 052e4h                           ; 72 1e
     7468    jc short 05426h                           ; 72 1e
    73037469    mov ax, word [bp+00eh]                    ; 8b 46 0e
    73047470    xor ah, ah                                ; 30 e4
     
    73107476    push 005fbh                               ; 68 fb 05
    73117477    push strict byte 00004h                   ; 6a 04
    7312     call 018e9h                               ; e8 0b c6
     7478    call 018e9h                               ; e8 c9 c4
    73137479    add sp, strict byte 0000ah                ; 83 c4 0a
    7314     jmp near 05693h                           ; e9 af 03
     7480    jmp near 057d5h                           ; e9 af 03
    73157481    mov ax, word [bp+00eh]                    ; 8b 46 0e
    73167482    xor ah, ah                                ; 30 e4
     
    73217487    mov byte [bp-002h], dl                    ; 88 56 fe
    73227488    cmp dl, 010h                              ; 80 fa 10
    7323     jc short 0530dh                           ; 72 10
     7489    jc short 0544fh                           ; 72 10
    73247490    push ax                                   ; 50
    73257491    mov ax, word [bp+016h]                    ; 8b 46 16
     
    73287494    push 005ech                               ; 68 ec 05
    73297495    push 00626h                               ; 68 26 06
    7330     jmp short 052d9h                          ; eb cc
     7496    jmp short 0541bh                          ; eb cc
    73317497    mov bx, word [bp+016h]                    ; 8b 5e 16
    73327498    shr bx, 008h                              ; c1 eb 08
    73337499    cmp bx, strict byte 00018h                ; 83 fb 18
    7334     jnbe near 05678h                          ; 0f 87 5e 03
     7500    jnbe near 057bah                          ; 0f 87 5e 03
    73357501    add bx, bx                                ; 01 db
    7336     jmp word [cs:bx+05267h]                   ; 2e ff a7 67 52
     7502    jmp word [cs:bx+053a9h]                   ; 2e ff a7 a9 53
    73377503    cmp byte [bp-002h], 008h                  ; 80 7e fe 08
    7338     jnc near 05330h                           ; 0f 83 07 00
     7504    jnc near 05472h                           ; 0f 83 07 00
    73397505    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    7340     call 01be6h                               ; e8 b6 c8
     7506    call 01be6h                               ; e8 74 c7
    73417507    mov byte [bp+017h], 000h                  ; c6 46 17 00
    73427508    xor bx, bx                                ; 31 db
    73437509    mov dx, strict word 00074h                ; ba 74 00
    73447510    mov ax, strict word 00040h                ; b8 40 00
    7345     call 0160eh                               ; e8 cf c2
     7511    call 0160eh                               ; e8 8d c1
    73467512    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    73477513    leave                                     ; c9
     
    73497515    mov dx, strict word 00074h                ; ba 74 00
    73507516    mov ax, strict word 00040h                ; b8 40 00
    7351     call 01600h                               ; e8 b2 c2
     7517    call 01600h                               ; e8 70 c1
    73527518    mov cl, al                                ; 88 c1
    73537519    mov dx, word [bp+016h]                    ; 8b 56 16
     
    73607526    mov dx, strict word 00074h                ; ba 74 00
    73617527    mov ax, strict word 00040h                ; b8 40 00
    7362     call 0160eh                               ; e8 a3 c2
     7528    call 0160eh                               ; e8 61 c1
    73637529    test cl, cl                               ; 84 c9
    7364     je short 05334h                           ; 74 c5
    7365     jmp near 056afh                           ; e9 3d 03
     7530    je short 05476h                           ; 74 c5
     7531    jmp near 057f1h                           ; e9 3d 03
    73667532    mov ax, word [bp+016h]                    ; 8b 46 16
    73677533    xor ah, ah                                ; 30 e4
     
    73837549    mov ax, word [bp-00ch]                    ; 8b 46 f4
    73847550    cmp ax, 00080h                            ; 3d 80 00
    7385     jnbe short 053adh                         ; 77 04
     7551    jnbe short 054efh                         ; 77 04
    73867552    test ax, ax                               ; 85 c0
    7387     jne short 053d0h                          ; 75 23
    7388     mov bx, 00cd6h                            ; bb d6 0c
     7553    jne short 05512h                          ; 75 23
     7554    mov bx, 00cech                            ; bb ec 0c
    73897555    mov cx, ds                                ; 8c d9
    73907556    mov ax, strict word 00004h                ; b8 04 00
    7391     call 018aeh                               ; e8 f6 c4
     7557    call 018aeh                               ; e8 b4 c3
    73927558    mov ax, word [bp+016h]                    ; 8b 46 16
    73937559    shr ax, 008h                              ; c1 e8 08
     
    73967562    push 00658h                               ; 68 58 06
    73977563    push strict byte 00004h                   ; 6a 04
    7398     call 018e9h                               ; e8 1f c5
     7564    call 018e9h                               ; e8 dd c3
    73997565    add sp, strict byte 00008h                ; 83 c4 08
    7400     jmp near 05693h                           ; e9 c3 02
     7566    jmp near 057d5h                           ; e9 c3 02
    74017567    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    74027568    imul ax, ax, strict byte 00018h           ; 6b c0 18
     
    74097575    mov word [bp-00ah], dx                    ; 89 56 f6
    74107576    cmp di, ax                                ; 39 c7
    7411     jnc short 053fdh                          ; 73 0c
     7577    jnc short 0553fh                          ; 73 0c
    74127578    cmp cx, word [bp-008h]                    ; 3b 4e f8
    7413     jbe short 053fdh                          ; 76 07
     7579    jbe short 0553fh                          ; 76 07
    74147580    mov ax, word [bp-006h]                    ; 8b 46 fa
    74157581    cmp ax, dx                                ; 39 d0
    7416     jbe short 0542bh                          ; 76 2e
    7417     mov bx, 00cd6h                            ; bb d6 0c
     7582    jbe short 0556dh                          ; 76 2e
     7583    mov bx, 00cech                            ; bb ec 0c
    74187584    mov cx, ds                                ; 8c d9
    74197585    mov ax, strict word 00004h                ; b8 04 00
    7420     call 018aeh                               ; e8 a6 c4
     7586    call 018aeh                               ; e8 64 c3
    74217587    push dword [bp-008h]                      ; 66 ff 76 f8
    74227588    push di                                   ; 57
     
    74307596    push 00680h                               ; 68 80 06
    74317597    push strict byte 00004h                   ; 6a 04
    7432     call 018e9h                               ; e8 c4 c4
     7598    call 018e9h                               ; e8 82 c3
    74337599    add sp, strict byte 00010h                ; 83 c4 10
    7434     jmp near 05693h                           ; e9 68 02
     7600    jmp near 057d5h                           ; e9 68 02
    74357601    mov ax, word [bp+016h]                    ; 8b 46 16
    74367602    shr ax, 008h                              ; c1 e8 08
    74377603    cmp ax, strict word 00004h                ; 3d 04 00
    7438     jne short 05439h                          ; 75 03
    7439     jmp near 05330h                           ; e9 f7 fe
     7604    jne short 0557bh                          ; 75 03
     7605    jmp near 05472h                           ; e9 f7 fe
    74407606    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    74417607    imul bx, bx, strict byte 00018h           ; 6b db 18
     
    74437609    add bx, si                                ; 01 f3
    74447610    cmp cx, word [es:bx+02ch]                 ; 26 3b 4f 2c
    7445     jne short 0545ah                          ; 75 0f
     7611    jne short 0559ch                          ; 75 0f
    74467612    mov ax, word [es:bx+030h]                 ; 26 8b 47 30
    74477613    cmp ax, word [bp-00ah]                    ; 3b 46 f6
    7448     jne short 0545ah                          ; 75 06
     7614    jne short 0559ch                          ; 75 06
    74497615    cmp byte [bp-002h], 008h                  ; 80 7e fe 08
    7450     jc short 0548ah                           ; 72 30
     7616    jc short 055cch                           ; 72 30
    74517617    mov ax, di                                ; 89 f8
    74527618    xor dx, dx                                ; 31 d2
    74537619    mov bx, cx                                ; 89 cb
    74547620    xor cx, cx                                ; 31 c9
    7455     call 08c79h                               ; e8 14 38
     7621    call 08ff9h                               ; e8 52 3a
    74567622    xor bx, bx                                ; 31 db
    74577623    add ax, word [bp-008h]                    ; 03 46 f8
     
    74597625    mov bx, word [bp-00ah]                    ; 8b 5e f6
    74607626    xor cx, cx                                ; 31 c9
    7461     call 08c79h                               ; e8 05 38
     7627    call 08ff9h                               ; e8 43 3a
    74627628    xor bx, bx                                ; 31 db
    74637629    add ax, word [bp-006h]                    ; 03 46 fa
    7464     db  011h, 0dah, 005h, 0ffh, 0ffh, 089h, 046h, 0f0h, 083h, 0d2h, 0ffh, 089h, 056h, 0f2h, 089h, 05eh
    7465     db  0fah, 08eh, 046h, 0fch, 066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h, 026h, 0c7h, 044h
    7466     db  018h, 000h, 000h, 08bh, 046h, 0f0h, 026h, 089h, 004h, 08bh, 046h, 0f2h, 026h, 089h, 044h, 002h
    7467     db  08bh, 046h, 010h, 08bh, 056h, 006h, 026h, 089h, 044h, 004h, 026h, 089h, 054h, 006h, 08bh, 046h
    7468     db  0f4h, 026h, 089h, 044h, 00ah, 026h, 0c7h, 044h, 00ch, 000h, 002h, 026h, 089h, 07ch, 00eh, 08bh
    7469     db  046h, 0f8h, 026h, 089h, 044h, 010h, 08bh, 046h, 0fah, 026h, 089h, 044h, 012h, 08ah, 046h, 0feh
    7470     db  026h, 088h, 044h, 008h, 00fh, 0b6h, 046h, 0feh, 06bh, 0c0h, 018h, 089h, 0f3h, 001h, 0c3h, 026h
    7471     db  00fh, 0b6h, 047h, 01eh, 089h, 0c3h, 0c1h, 0e3h, 002h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 001h
    7472     db  0c0h, 001h, 0c3h, 006h, 056h, 0ffh, 097h, 0fch, 0ffh, 089h, 0c2h, 08bh, 046h, 016h, 030h, 0c0h
    7473     db  08eh, 046h, 0fch, 026h, 08bh, 05ch, 014h, 009h, 0c3h, 089h, 05eh, 016h, 084h, 0d2h, 00fh, 084h
    7474     db  015h, 0feh, 0bbh, 0d6h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 088h, 0c3h, 00fh, 0b6h, 0c2h
    7475     db  050h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0ech, 005h, 068h, 0c7h, 006h, 06ah, 004h
    7476     db  0e8h, 0adh, 0c3h, 083h, 0c4h, 00ah, 08bh, 046h, 016h, 030h, 0e4h, 080h, 0cch, 00ch, 0e9h, 051h
    7477     db  001h, 0bbh, 0d6h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 059h, 0c3h, 068h, 0e8h, 006h, 06ah
    7478     db  004h, 0e8h, 08ch, 0c3h, 083h, 0c4h, 004h, 0e9h, 0cdh, 0fdh, 00fh, 0b6h, 046h, 0feh, 06bh, 0c0h
    7479     db  018h, 08eh, 046h, 0fch, 089h, 0f3h, 001h, 0c3h, 026h, 08bh, 07fh, 028h, 026h, 08bh, 04fh, 026h
    7480     db  026h, 08bh, 047h, 02ah, 089h, 046h, 0f6h, 026h, 00fh, 0b6h, 084h, 09eh, 001h, 089h, 046h, 0f4h
    7481     db  0c6h, 046h, 016h, 000h, 08bh, 056h, 014h, 030h, 0f6h, 04fh, 089h, 0f8h, 030h, 0e4h, 0c1h, 0e0h
    7482     db  008h, 009h, 0c2h, 089h, 056h, 014h, 0c1h, 0efh, 002h, 081h, 0e7h, 0c0h, 000h, 08bh, 046h, 0f6h
    7483     db  030h, 0e4h, 024h, 03fh, 009h, 0c7h, 089h, 0d0h, 030h, 0d0h, 009h, 0f8h, 089h, 046h, 014h, 08bh
    7484     db  056h, 012h, 030h, 0f6h, 089h, 0c8h, 0c1h, 0e0h, 008h, 02dh, 000h, 001h, 009h, 0c2h, 089h, 056h
    7485     db  012h, 089h, 0d0h, 030h, 0d0h, 08bh, 056h, 0f4h, 009h, 0c2h, 089h, 056h, 012h, 0e9h, 057h, 0fdh
    7486     db  00fh, 0b6h, 046h, 0feh, 099h, 02bh, 0c2h, 0d1h, 0f8h, 06bh, 0c0h, 006h, 08eh, 046h, 0fch, 001h
    7487     db  0c6h, 026h, 08bh, 094h, 0c2h, 001h, 083h, 0c2h, 007h, 0ech, 02ah, 0e4h, 024h, 0c0h, 03ch, 040h
    7488     db  075h, 003h, 0e9h, 032h, 0fdh, 08bh, 046h, 016h, 030h, 0e4h, 080h, 0cch, 0aah, 0e9h, 092h, 000h
    7489     db  00fh, 0b6h, 046h, 0feh, 06bh, 0c0h, 018h, 08eh, 046h, 0fch, 001h, 0c6h, 026h, 08bh, 07ch, 02eh
    7490     db  026h, 08bh, 044h, 02ch, 089h, 046h, 0f8h, 026h, 08bh, 044h, 030h, 089h, 046h, 0fah, 089h, 0f8h
    7491     db  031h, 0d2h, 08bh, 05eh, 0f8h, 031h, 0c9h, 0e8h, 046h, 036h, 08bh, 05eh, 0fah, 031h, 0c9h, 0e8h
    7492     db  03eh, 036h, 089h, 046h, 0f0h, 089h, 056h, 0f2h, 089h, 056h, 014h, 089h, 046h, 012h, 08bh, 046h
    7493     db  016h, 030h, 0e4h, 080h, 0cch, 003h, 089h, 046h, 016h, 0e9h, 0dfh, 0fch, 0bbh, 0d6h, 00ch, 08ch
    7494     db  0d9h, 0b8h, 004h, 000h, 0e8h, 04eh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0ech
    7495     db  005h, 068h, 002h, 007h, 06ah, 004h, 0e8h, 077h, 0c2h, 083h, 0c4h, 008h, 0e9h, 0b8h, 0fch, 0bbh
    7496     db  0d6h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 02bh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h
    7497     db  050h, 068h, 0ech, 005h, 068h, 035h, 007h, 0e9h, 032h, 0fdh, 08bh, 046h, 016h, 030h, 0e4h, 080h
    7498     db  0cch, 001h, 089h, 046h, 016h, 08bh, 05eh, 016h, 0c1h, 0ebh, 008h, 030h, 0ffh, 0bah, 074h, 000h
    7499     db  0b8h, 040h, 000h, 0e8h, 05fh, 0bfh, 080h, 04eh, 01ch, 001h, 0c9h, 0c3h, 06eh, 057h, 086h, 057h
    7500     db  086h, 057h, 086h, 057h, 035h, 05bh, 0c9h, 058h, 086h, 057h, 0cfh, 058h, 035h, 05bh, 082h, 05bh
    7501     db  082h, 05bh, 082h, 05bh, 082h, 05bh, 04ah, 05bh, 082h, 05bh, 082h, 05bh
    7502 _int13_harddisk_ext:                         ; 0xf56d5 LB 0x4c8
     7630    adc dx, bx                                ; 11 da
     7631    add ax, strict word 0ffffh                ; 05 ff ff
     7632    mov word [bp-010h], ax                    ; 89 46 f0
     7633    adc dx, strict byte 0ffffh                ; 83 d2 ff
     7634    mov word [bp-00eh], dx                    ; 89 56 f2
     7635    mov word [bp-006h], bx                    ; 89 5e fa
     7636    mov es, [bp-004h]                         ; 8e 46 fc
     7637    db  066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h
     7638    ; mov dword [es:si+014h], strict dword 000000000h ; 66 26 c7 44 14 00 00 00 00
     7639    mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00
     7640    mov ax, word [bp-010h]                    ; 8b 46 f0
     7641    mov word [es:si], ax                      ; 26 89 04
     7642    mov ax, word [bp-00eh]                    ; 8b 46 f2
     7643    mov word [es:si+002h], ax                 ; 26 89 44 02
     7644    mov ax, word [bp+010h]                    ; 8b 46 10
     7645    mov dx, word [bp+006h]                    ; 8b 56 06
     7646    mov word [es:si+004h], ax                 ; 26 89 44 04
     7647    mov word [es:si+006h], dx                 ; 26 89 54 06
     7648    mov ax, word [bp-00ch]                    ; 8b 46 f4
     7649    mov word [es:si+00ah], ax                 ; 26 89 44 0a
     7650    mov word [es:si+00ch], 00200h             ; 26 c7 44 0c 00 02
     7651    mov word [es:si+00eh], di                 ; 26 89 7c 0e
     7652    mov ax, word [bp-008h]                    ; 8b 46 f8
     7653    mov word [es:si+010h], ax                 ; 26 89 44 10
     7654    mov ax, word [bp-006h]                    ; 8b 46 fa
     7655    mov word [es:si+012h], ax                 ; 26 89 44 12
     7656    mov al, byte [bp-002h]                    ; 8a 46 fe
     7657    mov byte [es:si+008h], al                 ; 26 88 44 08
     7658    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     7659    imul ax, ax, strict byte 00018h           ; 6b c0 18
     7660    mov bx, si                                ; 89 f3
     7661    add bx, ax                                ; 01 c3
     7662    movzx ax, byte [es:bx+01eh]               ; 26 0f b6 47 1e
     7663    mov bx, ax                                ; 89 c3
     7664    sal bx, 002h                              ; c1 e3 02
     7665    mov ax, word [bp+016h]                    ; 8b 46 16
     7666    shr ax, 008h                              ; c1 e8 08
     7667    add ax, ax                                ; 01 c0
     7668    add bx, ax                                ; 01 c3
     7669    push ES                                   ; 06
     7670    push si                                   ; 56
     7671    call word [word bx-00004h]                ; ff 97 fc ff
     7672    mov dx, ax                                ; 89 c2
     7673    mov ax, word [bp+016h]                    ; 8b 46 16
     7674    xor al, al                                ; 30 c0
     7675    mov es, [bp-004h]                         ; 8e 46 fc
     7676    mov bx, word [es:si+014h]                 ; 26 8b 5c 14
     7677    or bx, ax                                 ; 09 c3
     7678    mov word [bp+016h], bx                    ; 89 5e 16
     7679    test dl, dl                               ; 84 d2
     7680    je near 05472h                            ; 0f 84 15 fe
     7681    mov bx, 00cech                            ; bb ec 0c
     7682    mov cx, ds                                ; 8c d9
     7683    mov ax, strict word 00004h                ; b8 04 00
     7684    call 018aeh                               ; e8 46 c2
     7685    movzx ax, dl                              ; 0f b6 c2
     7686    push ax                                   ; 50
     7687    mov ax, word [bp+016h]                    ; 8b 46 16
     7688    shr ax, 008h                              ; c1 e8 08
     7689    push ax                                   ; 50
     7690    push 005ech                               ; 68 ec 05
     7691    push 006c7h                               ; 68 c7 06
     7692    push strict byte 00004h                   ; 6a 04
     7693    call 018e9h                               ; e8 6b c2
     7694    add sp, strict byte 0000ah                ; 83 c4 0a
     7695    mov ax, word [bp+016h]                    ; 8b 46 16
     7696    xor ah, ah                                ; 30 e4
     7697    or ah, 00ch                               ; 80 cc 0c
     7698    jmp near 057ddh                           ; e9 51 01
     7699    mov bx, 00cech                            ; bb ec 0c
     7700    mov cx, ds                                ; 8c d9
     7701    mov ax, strict word 00004h                ; b8 04 00
     7702    call 018aeh                               ; e8 17 c2
     7703    push 006e8h                               ; 68 e8 06
     7704    push strict byte 00004h                   ; 6a 04
     7705    call 018e9h                               ; e8 4a c2
     7706    add sp, strict byte 00004h                ; 83 c4 04
     7707    jmp near 05472h                           ; e9 cd fd
     7708    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     7709    imul ax, ax, strict byte 00018h           ; 6b c0 18
     7710    mov es, [bp-004h]                         ; 8e 46 fc
     7711    mov bx, si                                ; 89 f3
     7712    add bx, ax                                ; 01 c3
     7713    mov di, word [es:bx+028h]                 ; 26 8b 7f 28
     7714    mov cx, word [es:bx+026h]                 ; 26 8b 4f 26
     7715    mov ax, word [es:bx+02ah]                 ; 26 8b 47 2a
     7716    mov word [bp-00ah], ax                    ; 89 46 f6
     7717    movzx ax, byte [es:si+0019eh]             ; 26 0f b6 84 9e 01
     7718    mov word [bp-00ch], ax                    ; 89 46 f4
     7719    mov byte [bp+016h], 000h                  ; c6 46 16 00
     7720    mov dx, word [bp+014h]                    ; 8b 56 14
     7721    xor dh, dh                                ; 30 f6
     7722    dec di                                    ; 4f
     7723    mov ax, di                                ; 89 f8
     7724    xor ah, ah                                ; 30 e4
     7725    sal ax, 008h                              ; c1 e0 08
     7726    or dx, ax                                 ; 09 c2
     7727    mov word [bp+014h], dx                    ; 89 56 14
     7728    shr di, 002h                              ; c1 ef 02
     7729    and di, 000c0h                            ; 81 e7 c0 00
     7730    mov ax, word [bp-00ah]                    ; 8b 46 f6
     7731    xor ah, ah                                ; 30 e4
     7732    and AL, strict byte 03fh                  ; 24 3f
     7733    or di, ax                                 ; 09 c7
     7734    mov ax, dx                                ; 89 d0
     7735    xor al, dl                                ; 30 d0
     7736    or ax, di                                 ; 09 f8
     7737    mov word [bp+014h], ax                    ; 89 46 14
     7738    mov dx, word [bp+012h]                    ; 8b 56 12
     7739    xor dh, dh                                ; 30 f6
     7740    mov ax, cx                                ; 89 c8
     7741    sal ax, 008h                              ; c1 e0 08
     7742    sub ax, 00100h                            ; 2d 00 01
     7743    or dx, ax                                 ; 09 c2
     7744    mov word [bp+012h], dx                    ; 89 56 12
     7745    mov ax, dx                                ; 89 d0
     7746    xor al, dl                                ; 30 d0
     7747    mov dx, word [bp-00ch]                    ; 8b 56 f4
     7748    or dx, ax                                 ; 09 c2
     7749    mov word [bp+012h], dx                    ; 89 56 12
     7750    jmp near 05472h                           ; e9 57 fd
     7751    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     7752    cwd                                       ; 99
     7753    db  02bh, 0c2h
     7754    ; sub ax, dx                                ; 2b c2
     7755    sar ax, 1                                 ; d1 f8
     7756    imul ax, ax, strict byte 00006h           ; 6b c0 06
     7757    mov es, [bp-004h]                         ; 8e 46 fc
     7758    add si, ax                                ; 01 c6
     7759    mov dx, word [es:si+001c2h]               ; 26 8b 94 c2 01
     7760    add dx, strict byte 00007h                ; 83 c2 07
     7761    in AL, DX                                 ; ec
     7762    db  02ah, 0e4h
     7763    ; sub ah, ah                                ; 2a e4
     7764    and AL, strict byte 0c0h                  ; 24 c0
     7765    cmp AL, strict byte 040h                  ; 3c 40
     7766    jne short 05740h                          ; 75 03
     7767    jmp near 05472h                           ; e9 32 fd
     7768    mov ax, word [bp+016h]                    ; 8b 46 16
     7769    xor ah, ah                                ; 30 e4
     7770    or ah, 0aah                               ; 80 cc aa
     7771    jmp near 057ddh                           ; e9 92 00
     7772    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     7773    imul ax, ax, strict byte 00018h           ; 6b c0 18
     7774    mov es, [bp-004h]                         ; 8e 46 fc
     7775    add si, ax                                ; 01 c6
     7776    mov di, word [es:si+02eh]                 ; 26 8b 7c 2e
     7777    mov ax, word [es:si+02ch]                 ; 26 8b 44 2c
     7778    mov word [bp-008h], ax                    ; 89 46 f8
     7779    mov ax, word [es:si+030h]                 ; 26 8b 44 30
     7780    mov word [bp-006h], ax                    ; 89 46 fa
     7781    mov ax, di                                ; 89 f8
     7782    xor dx, dx                                ; 31 d2
     7783    mov bx, word [bp-008h]                    ; 8b 5e f8
     7784    xor cx, cx                                ; 31 c9
     7785    call 08ff9h                               ; e8 84 38
     7786    mov bx, word [bp-006h]                    ; 8b 5e fa
     7787    xor cx, cx                                ; 31 c9
     7788    call 08ff9h                               ; e8 7c 38
     7789    mov word [bp-010h], ax                    ; 89 46 f0
     7790    mov word [bp-00eh], dx                    ; 89 56 f2
     7791    mov word [bp+014h], dx                    ; 89 56 14
     7792    mov word [bp+012h], ax                    ; 89 46 12
     7793    mov ax, word [bp+016h]                    ; 8b 46 16
     7794    xor ah, ah                                ; 30 e4
     7795    or ah, 003h                               ; 80 cc 03
     7796    mov word [bp+016h], ax                    ; 89 46 16
     7797    jmp near 05476h                           ; e9 df fc
     7798    mov bx, 00cech                            ; bb ec 0c
     7799    mov cx, ds                                ; 8c d9
     7800    mov ax, strict word 00004h                ; b8 04 00
     7801    call 018aeh                               ; e8 0c c1
     7802    mov ax, word [bp+016h]                    ; 8b 46 16
     7803    shr ax, 008h                              ; c1 e8 08
     7804    push ax                                   ; 50
     7805    push 005ech                               ; 68 ec 05
     7806    push 00702h                               ; 68 02 07
     7807    push strict byte 00004h                   ; 6a 04
     7808    call 018e9h                               ; e8 35 c1
     7809    add sp, strict byte 00008h                ; 83 c4 08
     7810    jmp near 05472h                           ; e9 b8 fc
     7811    mov bx, 00cech                            ; bb ec 0c
     7812    mov cx, ds                                ; 8c d9
     7813    mov ax, strict word 00004h                ; b8 04 00
     7814    call 018aeh                               ; e8 e9 c0
     7815    mov ax, word [bp+016h]                    ; 8b 46 16
     7816    shr ax, 008h                              ; c1 e8 08
     7817    push ax                                   ; 50
     7818    push 005ech                               ; 68 ec 05
     7819    push 00735h                               ; 68 35 07
     7820    jmp near 05507h                           ; e9 32 fd
     7821    mov ax, word [bp+016h]                    ; 8b 46 16
     7822    xor ah, ah                                ; 30 e4
     7823    or ah, 001h                               ; 80 cc 01
     7824    mov word [bp+016h], ax                    ; 89 46 16
     7825    mov bx, word [bp+016h]                    ; 8b 5e 16
     7826    shr bx, 008h                              ; c1 eb 08
     7827    xor bh, bh                                ; 30 ff
     7828    mov dx, strict word 00074h                ; ba 74 00
     7829    mov ax, strict word 00040h                ; b8 40 00
     7830    call 0160eh                               ; e8 1d be
     7831    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     7832    leave                                     ; c9
     7833    retn                                      ; c3
     7834    db  0b0h, 058h, 0c8h, 058h, 0c8h, 058h, 0c8h, 058h, 077h, 05ch, 00bh, 05ah, 0c8h, 058h, 011h, 05ah
     7835    db  077h, 05ch, 0c4h, 05ch, 0c4h, 05ch, 0c4h, 05ch, 0c4h, 05ch, 08ch, 05ch, 0c4h, 05ch, 0c4h, 05ch
     7836_int13_harddisk_ext:                         ; 0xf5817 LB 0x4c8
    75037837    enter 00028h, 000h                        ; c8 28 00 00
    75047838    mov dx, strict word 0000eh                ; ba 0e 00
    75057839    mov ax, strict word 00040h                ; b8 40 00
    7506     call 0161ch                               ; e8 3a bf
     7840    call 0161ch                               ; e8 f8 bd
    75077841    mov word [bp-014h], ax                    ; 89 46 ec
    75087842    mov dx, strict word 0000eh                ; ba 0e 00
    75097843    mov ax, strict word 00040h                ; b8 40 00
    7510     call 0161ch                               ; e8 2e bf
     7844    call 0161ch                               ; e8 ec bd
    75117845    mov si, 00122h                            ; be 22 01
    75127846    mov word [bp-026h], ax                    ; 89 46 da
     
    75147848    mov dx, 0008eh                            ; ba 8e 00
    75157849    mov ax, strict word 00040h                ; b8 40 00
    7516     call 0160eh                               ; e8 0f bf
     7850    call 0160eh                               ; e8 cd bd
    75177851    mov ax, word [bp+00eh]                    ; 8b 46 0e
    75187852    xor ah, ah                                ; 30 e4
    75197853    cmp ax, 00080h                            ; 3d 80 00
    7520     jc short 0570eh                           ; 72 05
     7854    jc short 05850h                           ; 72 05
    75217855    cmp ax, 00090h                            ; 3d 90 00
    7522     jc short 0572ch                           ; 72 1e
     7856    jc short 0586eh                           ; 72 1e
    75237857    mov ax, word [bp+00eh]                    ; 8b 46 0e
    75247858    xor ah, ah                                ; 30 e4
     
    75307864    push 005fbh                               ; 68 fb 05
    75317865    push strict byte 00004h                   ; 6a 04
    7532     call 018e9h                               ; e8 c3 c1
     7866    call 018e9h                               ; e8 81 c0
    75337867    add sp, strict byte 0000ah                ; 83 c4 0a
    7534     jmp near 05b60h                           ; e9 34 04
     7868    jmp near 05ca2h                           ; e9 34 04
    75357869    mov ax, word [bp+00eh]                    ; 8b 46 0e
    75367870    xor ah, ah                                ; 30 e4
     
    75407874    mov cl, byte [es:bx+0011fh]               ; 26 8a 8f 1f 01
    75417875    cmp cl, 010h                              ; 80 f9 10
    7542     jc short 05752h                           ; 72 10
     7876    jc short 05894h                           ; 72 10
    75437877    push ax                                   ; 50
    75447878    mov ax, word [bp+016h]                    ; 8b 46 16
     
    75477881    push 00763h                               ; 68 63 07
    75487882    push 00626h                               ; 68 26 06
    7549     jmp short 05721h                          ; eb cf
     7883    jmp short 05863h                          ; eb cf
    75507884    mov bx, word [bp+016h]                    ; 8b 5e 16
    75517885    shr bx, 008h                              ; c1 eb 08
    75527886    sub bx, strict byte 00041h                ; 83 eb 41
    75537887    cmp bx, strict byte 0000fh                ; 83 fb 0f
    7554     jnbe near 05b82h                          ; 0f 87 20 04
     7888    jnbe near 05cc4h                          ; 0f 87 20 04
    75557889    add bx, bx                                ; 01 db
    75567890    mov ax, word [bp+016h]                    ; 8b 46 16
    75577891    xor ah, ah                                ; 30 e4
    7558     jmp word [cs:bx+056b5h]                   ; 2e ff a7 b5 56
     7892    jmp word [cs:bx+057f7h]                   ; 2e ff a7 f7 57
    75597893    mov word [bp+010h], 0aa55h                ; c7 46 10 55 aa
    75607894    mov ax, word [bp+016h]                    ; 8b 46 16
     
    75637897    mov word [bp+016h], ax                    ; 89 46 16
    75647898    mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
    7565     jmp near 05b39h                           ; e9 b3 03
     7899    jmp near 05c7bh                           ; e9 b3 03
    75667900    mov bx, word [bp+00ah]                    ; 8b 5e 0a
    75677901    mov es, [bp+004h]                         ; 8e 46 04
     
    75787912    mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
    75797913    or ax, word [bp-00ah]                     ; 0b 46 f6
    7580     je short 057c7h                           ; 74 11
     7914    je short 05909h                           ; 74 11
    75817915    mov ax, word [bp+016h]                    ; 8b 46 16
    75827916    shr ax, 008h                              ; c1 e8 08
     
    75857919    push 00776h                               ; 68 76 07
    75867920    push strict byte 00007h                   ; 6a 07
    7587     jmp short 05811h                          ; eb 4a
     7921    jmp short 05953h                          ; eb 4a
    75887922    mov es, [bp-010h]                         ; 8e 46 f0
    75897923    mov ax, word [es:di+008h]                 ; 26 8b 45 08
     
    75977931    mov ch, byte [es:bx+01eh]                 ; 26 8a 6f 1e
    75987932    cmp ax, word [es:bx+034h]                 ; 26 3b 47 34
    7599     jnbe short 057f7h                         ; 77 0b
    7600     jne short 0581ah                          ; 75 2c
     7933    jnbe short 05939h                         ; 77 0b
     7934    jne short 0595ch                          ; 75 2c
    76017935    mov dx, word [bp-00ah]                    ; 8b 56 f6
    76027936    cmp dx, word [es:bx+032h]                 ; 26 3b 57 32
    7603     jc short 0581ah                           ; 72 23
    7604     mov bx, 00cd6h                            ; bb d6 0c
     7937    jc short 0595ch                           ; 72 23
     7938    mov bx, 00cech                            ; bb ec 0c
    76057939    mov cx, ds                                ; 8c d9
    76067940    mov ax, strict word 00004h                ; b8 04 00
    7607     call 018aeh                               ; e8 ac c0
     7941    call 018aeh                               ; e8 6a bf
    76087942    mov ax, word [bp+016h]                    ; 8b 46 16
    76097943    shr ax, 008h                              ; c1 e8 08
     
    76127946    push 0079fh                               ; 68 9f 07
    76137947    push strict byte 00004h                   ; 6a 04
    7614     call 018e9h                               ; e8 d5 c0
     7948    call 018e9h                               ; e8 93 bf
    76157949    add sp, strict byte 00008h                ; 83 c4 08
    7616     jmp near 05b60h                           ; e9 46 03
     7950    jmp near 05ca2h                           ; e9 46 03
    76177951    mov dx, word [bp+016h]                    ; 8b 56 16
    76187952    shr dx, 008h                              ; c1 ea 08
    76197953    mov word [bp-00ch], dx                    ; 89 56 f4
    76207954    cmp dx, strict byte 00044h                ; 83 fa 44
    7621     je near 05b35h                            ; 0f 84 0b 03
     7955    je near 05c77h                            ; 0f 84 0b 03
    76227956    cmp dx, strict byte 00047h                ; 83 fa 47
    7623     je near 05b35h                            ; 0f 84 04 03
     7957    je near 05c77h                            ; 0f 84 04 03
    76247958    mov es, [bp-026h]                         ; 8e 46 da
    76257959    db  066h, 026h, 0c7h, 044h, 014h, 000h, 000h, 000h, 000h
     
    76537987    mov word [es:di+002h], ax                 ; 26 89 45 02
    76547988    test dl, dl                               ; 84 d2
    7655     je near 05b35h                            ; 0f 84 97 02
    7656     mov bx, 00cd6h                            ; bb d6 0c
     7989    je near 05c77h                            ; 0f 84 97 02
     7990    mov bx, 00cech                            ; bb ec 0c
    76577991    mov cx, ds                                ; 8c d9
    76587992    mov ax, strict word 00004h                ; b8 04 00
    7659     call 018aeh                               ; e8 05 c0
     7993    call 018aeh                               ; e8 c3 be
    76607994    movzx ax, dl                              ; 0f b6 c2
    76617995    push ax                                   ; 50
     
    76647998    push 006c7h                               ; 68 c7 06
    76657999    push strict byte 00004h                   ; 6a 04
    7666     call 018e9h                               ; e8 2e c0
     8000    call 018e9h                               ; e8 ec be
    76678001    add sp, strict byte 0000ah                ; 83 c4 0a
    76688002    mov ax, word [bp+016h]                    ; 8b 46 16
    76698003    xor ah, ah                                ; 30 e4
    76708004    or ah, 00ch                               ; 80 cc 0c
    7671     jmp near 05b68h                           ; e9 9f 02
     8005    jmp near 05caah                           ; e9 9f 02
    76728006    or ah, 0b2h                               ; 80 cc b2
    7673     jmp near 05b68h                           ; e9 99 02
     8007    jmp near 05caah                           ; e9 99 02
    76748008    mov bx, word [bp+00ah]                    ; 8b 5e 0a
    76758009    mov ax, word [bp+004h]                    ; 8b 46 04
     
    76818015    mov word [bp-00eh], ax                    ; 89 46 f2
    76828016    cmp ax, strict word 0001ah                ; 3d 1a 00
    7683     jc near 05b60h                            ; 0f 82 74 02
    7684     jc near 05973h                            ; 0f 82 83 00
     8017    jc near 05ca2h                            ; 0f 82 74 02
     8018    jc near 05ab5h                            ; 0f 82 83 00
    76858019    movzx ax, cl                              ; 0f b6 c1
    76868020    imul ax, ax, strict byte 00018h           ; 6b c0 18
     
    77208054    ; mov dword [es:di+014h], strict dword 000000000h ; 66 26 c7 45 14 00 00 00 00
    77218055    cmp word [bp-00eh], strict byte 0001eh    ; 83 7e f2 1e
    7722     jc near 05a7fh                            ; 0f 82 04 01
     8056    jc near 05bc1h                            ; 0f 82 04 01
    77238057    mov es, [bp-004h]                         ; 8e 46 fc
    77248058    mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
     
    77468080    mov al, byte [es:di+023h]                 ; 26 8a 45 23
    77478081    test al, al                               ; 84 c0
    7748     jne short 059d1h                          ; 75 04
     8082    jne short 05b13h                          ; 75 04
    77498083    xor dx, dx                                ; 31 d2
    7750     jmp short 059d4h                          ; eb 03
     8084    jmp short 05b16h                          ; eb 03
    77518085    mov dx, strict word 00008h                ; ba 08 00
    77528086    or dl, 010h                               ; 80 ca 10
     
    77638097    or word [bp-008h], dx                     ; 09 56 f8
    77648098    cmp AL, strict byte 003h                  ; 3c 03
    7765     jne short 059fah                          ; 75 05
     8099    jne short 05b3ch                          ; 75 05
    77668100    mov ax, strict word 00003h                ; b8 03 00
    7767     jmp short 059fch                          ; eb 02
     8101    jmp short 05b3eh                          ; eb 02
    77688102    xor ax, ax                                ; 31 c0
    77698103    or word [bp-008h], ax                     ; 09 46 f8
     
    77908124    xor ch, ch                                ; 30 ed
    77918125    mov byte [bp-002h], ch                    ; 88 6e fe
    7792     jmp short 05a60h                          ; eb 06
     8126    jmp short 05ba2h                          ; eb 06
    77938127    cmp byte [bp-002h], 00fh                  ; 80 7e fe 0f
    7794     jnc short 05a75h                          ; 73 15
     8128    jnc short 05bb7h                          ; 73 15
    77958129    movzx dx, byte [bp-002h]                  ; 0f b6 56 fe
    77968130    add dx, 00312h                            ; 81 c2 12 03
    77978131    mov ax, word [bp-014h]                    ; 8b 46 ec
    7798     call 01600h                               ; e8 92 bb
     8132    call 01600h                               ; e8 50 ba
    77998133    add ch, al                                ; 00 c5
    78008134    inc byte [bp-002h]                        ; fe 46 fe
    7801     jmp short 05a5ah                          ; eb e5
     8135    jmp short 05b9ch                          ; eb e5
    78028136    neg ch                                    ; f6 dd
    78038137    mov es, [bp-026h]                         ; 8e 46 da
    78048138    mov byte [es:si+001ffh], ch               ; 26 88 ac ff 01
    78058139    cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
    7806     jc near 05b35h                            ; 0f 82 ae 00
     8140    jc near 05c77h                            ; 0f 82 ae 00
    78078141    movzx ax, cl                              ; 0f b6 c1
    78088142    cwd                                       ; 99
     
    78228156    mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
    78238157    test al, al                               ; 84 c0
    7824     jne short 05ac7h                          ; 75 09
     8158    jne short 05c09h                          ; 75 09
    78258159    db  066h, 026h, 0c7h, 047h, 024h, 049h, 053h, 041h, 020h
    78268160    ; mov dword [es:bx+024h], strict dword 020415349h ; 66 26 c7 47 24 49 53 41 20
     
    78318165    ; mov dword [es:bx+02ch], strict dword 020202020h ; 66 26 c7 47 2c 20 20 20 20
    78328166    test al, al                               ; 84 c0
    7833     jne short 05af3h                          ; 75 13
     8167    jne short 05c35h                          ; 75 13
    78348168    mov word [es:bx+030h], dx                 ; 26 89 57 30
    78358169    db  066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
     
    78468180    xor cl, cl                                ; 30 c9
    78478181    mov CH, strict byte 01eh                  ; b5 1e
    7848     jmp short 05b1ah                          ; eb 05
     8182    jmp short 05c5ch                          ; eb 05
    78498183    cmp ch, 040h                              ; 80 fd 40
    7850     jnc short 05b2ch                          ; 73 12
     8184    jnc short 05c6eh                          ; 73 12
    78518185    movzx dx, ch                              ; 0f b6 d5
    78528186    add dx, word [bp+00ah]                    ; 03 56 0a
    78538187    mov ax, word [bp+004h]                    ; 8b 46 04
    7854     call 01600h                               ; e8 da ba
     8188    call 01600h                               ; e8 98 b9
    78558189    add cl, al                                ; 00 c1
    78568190    db  0feh, 0c5h
    78578191    ; inc ch                                    ; fe c5
    7858     jmp short 05b15h                          ; eb e9
     8192    jmp short 05c57h                          ; eb e9
    78598193    neg cl                                    ; f6 d9
    78608194    mov es, [bp-004h]                         ; 8e 46 fc
     
    78648198    mov dx, strict word 00074h                ; ba 74 00
    78658199    mov ax, strict word 00040h                ; b8 40 00
    7866     call 0160eh                               ; e8 ca ba
     8200    call 0160eh                               ; e8 88 b9
    78678201    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    78688202    leave                                     ; c9
    78698203    retn                                      ; c3
    78708204    cmp ax, strict word 00006h                ; 3d 06 00
    7871     je short 05b35h                           ; 74 e6
     8205    je short 05c77h                           ; 74 e6
    78728206    cmp ax, strict word 00001h                ; 3d 01 00
    7873     jc short 05b60h                           ; 72 0c
    7874     jbe short 05b35h                          ; 76 df
     8207    jc short 05ca2h                           ; 72 0c
     8208    jbe short 05c77h                          ; 76 df
    78758209    cmp ax, strict word 00003h                ; 3d 03 00
    7876     jc short 05b60h                           ; 72 05
     8210    jc short 05ca2h                           ; 72 05
    78778211    cmp ax, strict word 00004h                ; 3d 04 00
    7878     jbe short 05b35h                          ; 76 d5
     8212    jbe short 05c77h                          ; 76 d5
    78798213    mov ax, word [bp+016h]                    ; 8b 46 16
    78808214    xor ah, ah                                ; 30 e4
     
    78868220    mov dx, strict word 00074h                ; ba 74 00
    78878221    mov ax, strict word 00040h                ; b8 40 00
    7888     call 0160eh                               ; e8 92 ba
     8222    call 0160eh                               ; e8 50 b9
    78898223    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
    78908224    leave                                     ; c9
    78918225    retn                                      ; c3
    7892     mov bx, 00cd6h                            ; bb d6 0c
     8226    mov bx, 00cech                            ; bb ec 0c
    78938227    mov cx, ds                                ; 8c d9
    78948228    mov ax, strict word 00004h                ; b8 04 00
    7895     call 018aeh                               ; e8 21 bd
     8229    call 018aeh                               ; e8 df bb
    78968230    mov ax, word [bp+016h]                    ; 8b 46 16
    78978231    shr ax, 008h                              ; c1 e8 08
     
    78998233    push 00763h                               ; 68 63 07
    79008234    push 00735h                               ; 68 35 07
    7901     jmp near 0580fh                           ; e9 72 fc
    7902 _int14_function:                             ; 0xf5b9d LB 0x154
     8235    jmp near 05951h                           ; e9 72 fc
     8236_int14_function:                             ; 0xf5cdf LB 0x154
    79038237    push si                                   ; 56
    79048238    push bp                                   ; 55
     
    79088242    add dx, dx                                ; 01 d2
    79098243    mov ax, strict word 00040h                ; b8 40 00
    7910     call 0161ch                               ; e8 6f ba
     8244    call 0161ch                               ; e8 2d b9
    79118245    mov si, ax                                ; 89 c6
    79128246    mov bx, ax                                ; 89 c3
     
    79148248    add dx, strict byte 0007ch                ; 83 c2 7c
    79158249    mov ax, strict word 00040h                ; b8 40 00
    7916     call 01600h                               ; e8 43 ba
     8250    call 01600h                               ; e8 01 b9
    79178251    mov cl, al                                ; 88 c1
    79188252    cmp word [bp+010h], strict byte 00004h    ; 83 7e 10 04
    7919     jnc near 05ceah                           ; 0f 83 23 01
     8253    jnc near 05e2ch                           ; 0f 83 23 01
    79208254    test si, si                               ; 85 f6
    7921     jbe near 05ceah                           ; 0f 86 1d 01
     8255    jbe near 05e2ch                           ; 0f 86 1d 01
    79228256    mov al, byte [bp+015h]                    ; 8a 46 15
    79238257    cmp AL, strict byte 001h                  ; 3c 01
    7924     jc short 05be5h                           ; 72 11
    7925     jbe short 05c39h                          ; 76 63
     8258    jc short 05d27h                           ; 72 11
     8259    jbe short 05d7bh                          ; 76 63
    79268260    cmp AL, strict byte 003h                  ; 3c 03
    7927     je near 05cd2h                            ; 0f 84 f6 00
     8261    je near 05e14h                            ; 0f 84 f6 00
    79288262    cmp AL, strict byte 002h                  ; 3c 02
    7929     je near 05c87h                            ; 0f 84 a5 00
    7930     jmp near 05ce3h                           ; e9 fe 00
     8263    je near 05dc9h                            ; 0f 84 a5 00
     8264    jmp near 05e25h                           ; e9 fe 00
    79318265    test al, al                               ; 84 c0
    7932     jne near 05ce3h                           ; 0f 85 f8 00
     8266    jne near 05e25h                           ; 0f 85 f8 00
    79338267    lea dx, [bx+003h]                         ; 8d 57 03
    79348268    in AL, DX                                 ; ec
     
    79628296    ; sub ah, ah                                ; 2a e4
    79638297    mov byte [bp+014h], al                    ; 88 46 14
    7964     jmp near 05cc3h                           ; e9 97 00
     8298    jmp near 05e05h                           ; e9 97 00
    79658299    mov AL, strict byte 017h                  ; b0 17
    79668300    mov dx, bx                                ; 89 da
     
    79698303    mov AL, strict byte 004h                  ; b0 04
    79708304    out DX, AL                                ; ee
    7971     jmp short 05c0eh                          ; eb d5
     8305    jmp short 05d50h                          ; eb d5
    79728306    mov dx, strict word 0006ch                ; ba 6c 00
    79738307    mov ax, strict word 00040h                ; b8 40 00
    7974     call 0161ch                               ; e8 da b9
     8308    call 0161ch                               ; e8 98 b8
    79758309    mov si, ax                                ; 89 c6
    79768310    lea dx, [bx+005h]                         ; 8d 57 05
     
    79808314    and ax, strict word 00060h                ; 25 60 00
    79818315    cmp ax, strict word 00060h                ; 3d 60 00
    7982     je short 05c69h                           ; 74 17
     8316    je short 05dabh                           ; 74 17
    79838317    test cl, cl                               ; 84 c9
    7984     je short 05c69h                           ; 74 13
     8318    je short 05dabh                           ; 74 13
    79858319    mov dx, strict word 0006ch                ; ba 6c 00
    79868320    mov ax, strict word 00040h                ; b8 40 00
    7987     call 0161ch                               ; e8 bd b9
     8321    call 0161ch                               ; e8 7b b8
    79888322    cmp ax, si                                ; 39 f0
    7989     je short 05c44h                           ; 74 e1
     8323    je short 05d86h                           ; 74 e1
    79908324    mov si, ax                                ; 89 c6
    79918325    db  0feh, 0c9h
    79928326    ; dec cl                                    ; fe c9
    7993     jmp short 05c44h                          ; eb db
     8327    jmp short 05d86h                          ; eb db
    79948328    test cl, cl                               ; 84 c9
    7995     je short 05c73h                           ; 74 06
     8329    je short 05db5h                           ; 74 06
    79968330    mov al, byte [bp+014h]                    ; 8a 46 14
    79978331    mov dx, bx                                ; 89 da
     
    80038337    mov byte [bp+015h], al                    ; 88 46 15
    80048338    test cl, cl                               ; 84 c9
    8005     jne short 05cc3h                          ; 75 43
     8339    jne short 05e05h                          ; 75 43
    80068340    or AL, strict byte 080h                   ; 0c 80
    80078341    mov byte [bp+015h], al                    ; 88 46 15
    8008     jmp short 05cc3h                          ; eb 3c
     8342    jmp short 05e05h                          ; eb 3c
    80098343    mov dx, strict word 0006ch                ; ba 6c 00
    80108344    mov ax, strict word 00040h                ; b8 40 00
    8011     call 0161ch                               ; e8 8c b9
     8345    call 0161ch                               ; e8 4a b8
    80128346    mov si, ax                                ; 89 c6
    80138347    lea dx, [bx+005h]                         ; 8d 57 05
     
    80168350    ; sub ah, ah                                ; 2a e4
    80178351    test AL, strict byte 001h                 ; a8 01
    8018     jne short 05cb3h                          ; 75 17
     8352    jne short 05df5h                          ; 75 17
    80198353    test cl, cl                               ; 84 c9
    8020     je short 05cb3h                           ; 74 13
     8354    je short 05df5h                           ; 74 13
    80218355    mov dx, strict word 0006ch                ; ba 6c 00
    80228356    mov ax, strict word 00040h                ; b8 40 00
    8023     call 0161ch                               ; e8 73 b9
     8357    call 0161ch                               ; e8 31 b8
    80248358    cmp ax, si                                ; 39 f0
    8025     je short 05c92h                           ; 74 e5
     8359    je short 05dd4h                           ; 74 e5
    80268360    mov si, ax                                ; 89 c6
    80278361    db  0feh, 0c9h
    80288362    ; dec cl                                    ; fe c9
    8029     jmp short 05c92h                          ; eb df
     8363    jmp short 05dd4h                          ; eb df
    80308364    test cl, cl                               ; 84 c9
    8031     je short 05ccah                           ; 74 13
     8365    je short 05e0ch                           ; 74 13
    80328366    mov byte [bp+015h], 000h                  ; c6 46 15 00
    80338367    mov dx, bx                                ; 89 da
     
    80448378    db  02ah, 0e4h
    80458379    ; sub ah, ah                                ; 2a e4
    8046     jmp short 05c82h                          ; eb b0
     8380    jmp short 05dc4h                          ; eb b0
    80478381    lea dx, [si+005h]                         ; 8d 54 05
    80488382    in AL, DX                                 ; ec
     
    80548388    db  02ah, 0e4h
    80558389    ; sub ah, ah                                ; 2a e4
    8056     jmp short 05cc0h                          ; eb dd
     8390    jmp short 05e02h                          ; eb dd
    80578391    or byte [bp+01eh], 001h                   ; 80 4e 1e 01
    80588392    pop bp                                    ; 5d
     
    80638397    pop si                                    ; 5e
    80648398    retn                                      ; c3
    8065 set_enable_a20_:                             ; 0xf5cf1 LB 0x29
     8399set_enable_a20_:                             ; 0xf5e33 LB 0x29
    80668400    push bx                                   ; 53
    80678401    push cx                                   ; 51
     
    80768410    mov cl, al                                ; 88 c1
    80778411    test bx, bx                               ; 85 db
    8078     je short 05d0ah                           ; 74 05
     8412    je short 05e4ch                           ; 74 05
    80798413    or AL, strict byte 002h                   ; 0c 02
    80808414    out DX, AL                                ; ee
    8081     jmp short 05d0dh                          ; eb 03
     8415    jmp short 05e4fh                          ; eb 03
    80828416    and AL, strict byte 0fdh                  ; 24 fd
    80838417    out DX, AL                                ; ee
     
    80918425    pop bx                                    ; 5b
    80928426    retn                                      ; c3
    8093 set_e820_range_:                             ; 0xf5d1a LB 0x8c
     8427set_e820_range_:                             ; 0xf5e5c LB 0x8c
    80948428    push si                                   ; 56
    80958429    push bp                                   ; 55
     
    81208454    retn 0000ah                               ; c2 0a 00
    81218455    in AL, DX                                 ; ec
    8122     jmp near 01f4dh                           ; e9 d8 c1
     8456    jmp near 0208fh                           ; e9 d8 c1
    81238457    sar byte [bx-06f6fh], 089h                ; c0 bf 91 90 89
    81248458    mov byte [bx+05283h], al                  ; 88 87 83 52
     
    81268460    inc cx                                    ; 41
    81278461    and AL, strict byte 000h                  ; 24 00
    8128     inc cx                                    ; 41
     8462    and word [bp+di+026h], strict byte 0005fh ; 83 63 26 5f
     8463    cmp word [bx-035h], bx                    ; 39 5f cb
     8464    pop di                                    ; 5f
     8465    rcr word [bx-02ah], 1                     ; d1 5f d6
     8466    pop di                                    ; 5f
     8467    fistp dword [bx+07dh]                     ; db 5f 7d
     8468    pushaw                                    ; 60
     8469    sbb ah, byte [bp+si+040h]                 ; 1a 62 40
    81298470    db  062h
    8130     in AL, strict byte 05dh                   ; e4 5d
    8131     neg word [di-077h]                        ; f7 5d 89
     8471    db  0c7h, 05fh, 0c7h, 05fh, 00dh
     8472    ; mov word [bx-039h], 00d5fh                ; c7 5f c7 5f 0d
     8473    arpl word [di], si                        ; 63 35
     8474    arpl word [bx+si+063h], cx                ; 63 48 63
     8475    push di                                   ; 57
     8476    arpl bx, cx                               ; 63 cb
     8477    pop di                                    ; 5f
    81328478    pop si                                    ; 5e
    8133     db  08fh, 05eh, 094h
    8134     ; pop word [bp-06ch]                        ; 8f 5e 94
    8135     pop si                                    ; 5e
    8136     cwd                                       ; 99
    8137     pop si                                    ; 5e
    8138     cmp bx, word [bx-028h]                    ; 3b 5f d8
    8139     pushaw                                    ; 60
    8140     db  0feh
    8141     pushaw                                    ; 60
    8142     test word [bp-07bh], bx                   ; 85 5e 85
    8143     pop si                                    ; 5e
    8144     retf                                      ; cb
    8145     popaw                                     ; 61
    8146     db  0f3h, 061h
    8147     ; rep popaw                                 ; f3 61
    8148     push ES                                   ; 06
    8149     bound dx, [di]                            ; 62 15
    8150     bound cx, [bx+di+01c5eh]                  ; 62 89 5e 1c
    8151     db  062h
    8152 _int15_function:                             ; 0xf5da6 LB 0x4c9
     8479    db  063h
     8480_int15_function:                             ; 0xf5ee8 LB 0x4c9
    81538481    push si                                   ; 56
    81548482    push di                                   ; 57
     
    81578485    shr ax, 008h                              ; c1 e8 08
    81588486    cmp ax, 000ech                            ; 3d ec 00
    8159     jnbe near 06241h                          ; 0f 87 88 04
     8487    jnbe near 06383h                          ; 0f 87 88 04
    81608488    push CS                                   ; 0e
    81618489    pop ES                                    ; 07
    81628490    mov cx, strict word 00012h                ; b9 12 00
    8163     mov di, 05d71h                            ; bf 71 5d
     8491    mov di, 05eb3h                            ; bf b3 5e
    81648492    repne scasb                               ; f2 ae
    81658493    sal cx, 1                                 ; d1 e1
    81668494    mov di, cx                                ; 89 cf
    8167     mov si, word [cs:di+05d82h]               ; 2e 8b b5 82 5d
     8495    mov si, word [cs:di+05ec4h]               ; 2e 8b b5 c4 5e
    81688496    mov ax, word [bp+016h]                    ; 8b 46 16
    81698497    xor ah, ah                                ; 30 e4
     
    81788506    xor ah, ah                                ; 30 e4
    81798507    cmp ax, 000c0h                            ; 3d c0 00
    8180     jne near 06241h                           ; 0f 85 51 04
     8508    jne near 06383h                           ; 0f 85 51 04
    81818509    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
    8182     jmp near 061eah                           ; e9 f3 03
     8510    jmp near 0632ch                           ; e9 f3 03
    81838511    mov dx, ax                                ; 89 c2
    81848512    cmp ax, strict word 00001h                ; 3d 01 00
    8185     jc short 05e0ch                           ; 72 0e
    8186     jbe short 05e20h                          ; 76 20
     8513    jc short 05f4eh                           ; 72 0e
     8514    jbe short 05f62h                          ; 76 20
    81878515    cmp ax, strict word 00003h                ; 3d 03 00
    8188     je short 05e4dh                           ; 74 48
     8516    je short 05f8fh                           ; 74 48
    81898517    cmp ax, strict word 00002h                ; 3d 02 00
    8190     je short 05e30h                           ; 74 26
    8191     jmp short 05e5ah                          ; eb 4e
     8518    je short 05f72h                           ; 74 26
     8519    jmp short 05f9ch                          ; eb 4e
    81928520    test ax, ax                               ; 85 c0
    8193     jne short 05e5ah                          ; 75 4a
     8521    jne short 05f9ch                          ; 75 4a
    81948522    xor ax, ax                                ; 31 c0
    8195     call 05cf1h                               ; e8 dc fe
     8523    call 05e33h                               ; e8 dc fe
    81968524    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    81978525    mov byte [bp+017h], 000h                  ; c6 46 17 00
    8198     jmp near 05e85h                           ; e9 65 00
     8526    jmp near 05fc7h                           ; e9 65 00
    81998527    mov ax, strict word 00001h                ; b8 01 00
    8200     call 05cf1h                               ; e8 cb fe
     8528    call 05e33h                               ; e8 cb fe
    82018529    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    82028530    mov byte [bp+017h], dh                    ; 88 76 17
    8203     jmp near 05e85h                           ; e9 55 00
     8531    jmp near 05fc7h                           ; e9 55 00
    82048532    mov dx, 00092h                            ; ba 92 00
    82058533    in AL, DX                                 ; ec
     
    82138541    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    82148542    mov byte [bp+017h], ah                    ; 88 66 17
    8215     jmp near 05e85h                           ; e9 38 00
     8543    jmp near 05fc7h                           ; e9 38 00
    82168544    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    82178545    mov byte [bp+017h], ah                    ; 88 66 17
    82188546    mov word [bp+010h], ax                    ; 89 46 10
    8219     jmp near 05e85h                           ; e9 2b 00
    8220     mov bx, 00cd6h                            ; bb d6 0c
     8547    jmp near 05fc7h                           ; e9 2b 00
     8548    mov bx, 00cech                            ; bb ec 0c
    82218549    mov cx, ds                                ; 8c d9
    82228550    mov ax, strict word 00004h                ; b8 04 00
    8223     call 018aeh                               ; e8 49 ba
     8551    call 018aeh                               ; e8 07 b9
    82248552    mov ax, word [bp+016h]                    ; 8b 46 16
    82258553    xor ah, ah                                ; 30 e4
     
    82278555    push 007c4h                               ; 68 c4 07
    82288556    push strict byte 00004h                   ; 6a 04
    8229     call 018e9h                               ; e8 76 ba
     8557    call 018e9h                               ; e8 34 b9
    82308558    add sp, strict byte 00006h                ; 83 c4 06
    82318559    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     
    82398567    retn                                      ; c3
    82408568    mov word [bp+01ch], bx                    ; 89 5e 1c
    8241     jmp near 05f35h                           ; e9 a6 00
     8569    jmp near 06077h                           ; e9 a6 00
    82428570    mov word [bp+01ch], bx                    ; 89 5e 1c
    8243     jmp short 05e85h                          ; eb f1
     8571    jmp short 05fc7h                          ; eb f1
    82448572    mov word [bp+01ch], cx                    ; 89 4e 1c
    8245     jmp short 05e82h                          ; eb e9
     8573    jmp short 05fc4h                          ; eb e9
    82468574    test byte [bp+016h], 0ffh                 ; f6 46 16 ff
    8247     je short 05f0bh                           ; 74 6c
     8575    je short 0604dh                           ; 74 6c
    82488576    mov dx, 000a0h                            ; ba a0 00
    82498577    mov ax, strict word 00040h                ; b8 40 00
    8250     call 01600h                               ; e8 58 b7
     8578    call 01600h                               ; e8 16 b6
    82518579    test AL, strict byte 001h                 ; a8 01
    8252     jne near 061e1h                           ; 0f 85 33 03
     8580    jne near 06323h                           ; 0f 85 33 03
    82538581    mov bx, strict word 00001h                ; bb 01 00
    82548582    mov dx, 000a0h                            ; ba a0 00
    82558583    mov ax, strict word 00040h                ; b8 40 00
    8256     call 0160eh                               ; e8 54 b7
     8584    call 0160eh                               ; e8 12 b6
    82578585    mov bx, word [bp+018h]                    ; 8b 5e 18
    82588586    mov dx, 00098h                            ; ba 98 00
    82598587    mov ax, strict word 00040h                ; b8 40 00
    8260     call 0162ah                               ; e8 64 b7
     8588    call 0162ah                               ; e8 22 b6
    82618589    mov bx, word [bp+010h]                    ; 8b 5e 10
    82628590    mov dx, 0009ah                            ; ba 9a 00
    82638591    mov ax, strict word 00040h                ; b8 40 00
    8264     call 0162ah                               ; e8 58 b7
     8592    call 0162ah                               ; e8 16 b6
    82658593    mov bx, word [bp+012h]                    ; 8b 5e 12
    82668594    mov dx, 0009ch                            ; ba 9c 00
    82678595    mov ax, strict word 00040h                ; b8 40 00
    8268     call 0162ah                               ; e8 4c b7
     8596    call 0162ah                               ; e8 0a b6
    82698597    mov bx, word [bp+014h]                    ; 8b 5e 14
    82708598    mov dx, 0009eh                            ; ba 9e 00
    82718599    mov ax, strict word 00040h                ; b8 40 00
    8272     call 0162ah                               ; e8 40 b7
     8600    call 0162ah                               ; e8 fe b5
    82738601    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    82748602    mov dx, 000a1h                            ; ba a1 00
     
    82798607    out DX, AL                                ; ee
    82808608    mov ax, strict word 0000bh                ; b8 0b 00
    8281     call 0165ch                               ; e8 5f b7
     8609    call 0165ch                               ; e8 1d b6
    82828610    or AL, strict byte 040h                   ; 0c 40
    82838611    movzx dx, al                              ; 0f b6 d0
    82848612    mov ax, strict word 0000bh                ; b8 0b 00
    8285     call 0166dh                               ; e8 65 b7
    8286     jmp near 05e85h                           ; e9 7a ff
     8613    call 0166dh                               ; e8 23 b6
     8614    jmp near 05fc7h                           ; e9 7a ff
    82878615    cmp ax, strict word 00001h                ; 3d 01 00
    8288     jne short 05f29h                          ; 75 19
     8616    jne short 0606bh                          ; 75 19
    82898617    xor bx, bx                                ; 31 db
    82908618    mov dx, 000a0h                            ; ba a0 00
    82918619    mov ax, strict word 00040h                ; b8 40 00
    8292     call 0160eh                               ; e8 f3 b6
     8620    call 0160eh                               ; e8 b1 b5
    82938621    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    82948622    mov ax, strict word 0000bh                ; b8 0b 00
    8295     call 0165ch                               ; e8 37 b7
     8623    call 0165ch                               ; e8 f5 b5
    82968624    and AL, strict byte 0bfh                  ; 24 bf
    8297     jmp short 05effh                          ; eb d6
     8625    jmp short 06041h                          ; eb d6
    82988626    mov word [bp+01ch], bx                    ; 89 5e 1c
    82998627    mov ax, dx                                ; 89 d0
     
    83038631    or dx, ax                                 ; 09 c2
    83048632    mov word [bp+016h], dx                    ; 89 56 16
    8305     jmp near 05e85h                           ; e9 4a ff
     8633    jmp near 05fc7h                           ; e9 4a ff
    83068634    cli                                       ; fa
    83078635    mov ax, strict word 00001h                ; b8 01 00
    8308     call 05cf1h                               ; e8 af fd
     8636    call 05e33h                               ; e8 af fd
    83098637    mov di, ax                                ; 89 c7
    83108638    mov ax, word [bp+018h]                    ; 8b 46 18
     
    83168644    mov byte [bp-002h], dl                    ; 88 56 fe
    83178645    cmp cx, ax                                ; 39 c1
    8318     jnc short 05f61h                          ; 73 05
     8646    jnc short 060a3h                          ; 73 05
    83198647    db  0feh, 0c2h
    83208648    ; inc dl                                    ; fe c2
     
    83248652    mov ax, word [bp+018h]                    ; 8b 46 18
    83258653    mov bx, strict word 0002fh                ; bb 2f 00
    8326     call 0162ah                               ; e8 ba b6
     8654    call 0162ah                               ; e8 78 b5
    83278655    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83288656    add dx, strict byte 0000ah                ; 83 c2 0a
    83298657    mov ax, word [bp+018h]                    ; 8b 46 18
    83308658    mov bx, cx                                ; 89 cb
    8331     call 0162ah                               ; e8 ac b6
     8659    call 0162ah                               ; e8 6a b5
    83328660    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    83338661    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83348662    add dx, strict byte 0000ch                ; 83 c2 0c
    83358663    mov ax, word [bp+018h]                    ; 8b 46 18
    8336     call 0160eh                               ; e8 80 b6
     8664    call 0160eh                               ; e8 3e b5
    83378665    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83388666    add dx, strict byte 0000dh                ; 83 c2 0d
    83398667    mov ax, word [bp+018h]                    ; 8b 46 18
    83408668    mov bx, 00093h                            ; bb 93 00
    8341     call 0160eh                               ; e8 71 b6
     8669    call 0160eh                               ; e8 2f b5
    83428670    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83438671    add dx, strict byte 0000eh                ; 83 c2 0e
    83448672    mov ax, word [bp+018h]                    ; 8b 46 18
    83458673    xor bx, bx                                ; 31 db
    8346     call 0162ah                               ; e8 7f b6
     8674    call 0162ah                               ; e8 3d b5
    83478675    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83488676    add dx, strict byte 00020h                ; 83 c2 20
    83498677    mov ax, word [bp+018h]                    ; 8b 46 18
    83508678    mov bx, strict word 0ffffh                ; bb ff ff
    8351     call 0162ah                               ; e8 70 b6
     8679    call 0162ah                               ; e8 2e b5
    83528680    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83538681    add dx, strict byte 00022h                ; 83 c2 22
    83548682    mov ax, word [bp+018h]                    ; 8b 46 18
    83558683    xor bx, bx                                ; 31 db
    8356     call 0162ah                               ; e8 62 b6
     8684    call 0162ah                               ; e8 20 b5
    83578685    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83588686    add dx, strict byte 00024h                ; 83 c2 24
    83598687    mov ax, word [bp+018h]                    ; 8b 46 18
    83608688    mov bx, strict word 0000fh                ; bb 0f 00
    8361     call 0160eh                               ; e8 37 b6
     8689    call 0160eh                               ; e8 f5 b4
    83628690    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83638691    add dx, strict byte 00025h                ; 83 c2 25
    83648692    mov ax, word [bp+018h]                    ; 8b 46 18
    83658693    mov bx, 0009bh                            ; bb 9b 00
    8366     call 0160eh                               ; e8 28 b6
     8694    call 0160eh                               ; e8 e6 b4
    83678695    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83688696    add dx, strict byte 00026h                ; 83 c2 26
    83698697    mov ax, word [bp+018h]                    ; 8b 46 18
    83708698    xor bx, bx                                ; 31 db
    8371     call 0162ah                               ; e8 36 b6
     8699    call 0162ah                               ; e8 f4 b4
    83728700    mov ax, ss                                ; 8c d0
    83738701    mov cx, ax                                ; 89 c1
     
    83798707    mov ax, word [bp+018h]                    ; 8b 46 18
    83808708    mov bx, strict word 0ffffh                ; bb ff ff
    8381     call 0162ah                               ; e8 1a b6
     8709    call 0162ah                               ; e8 d8 b4
    83828710    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83838711    add dx, strict byte 0002ah                ; 83 c2 2a
    83848712    mov ax, word [bp+018h]                    ; 8b 46 18
    83858713    mov bx, cx                                ; 89 cb
    8386     call 0162ah                               ; e8 0c b6
     8714    call 0162ah                               ; e8 ca b4
    83878715    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    83888716    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83898717    add dx, strict byte 0002ch                ; 83 c2 2c
    83908718    mov ax, word [bp+018h]                    ; 8b 46 18
    8391     call 0160eh                               ; e8 e0 b5
     8719    call 0160eh                               ; e8 9e b4
    83928720    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83938721    add dx, strict byte 0002dh                ; 83 c2 2d
    83948722    mov ax, word [bp+018h]                    ; 8b 46 18
    83958723    mov bx, 00093h                            ; bb 93 00
    8396     call 0160eh                               ; e8 d1 b5
     8724    call 0160eh                               ; e8 8f b4
    83978725    mov dx, word [bp+00ah]                    ; 8b 56 0a
    83988726    add dx, strict byte 0002eh                ; 83 c2 2e
    83998727    mov ax, word [bp+018h]                    ; 8b 46 18
    84008728    xor bx, bx                                ; 31 db
    8401     call 0162ah                               ; e8 df b5
     8729    call 0162ah                               ; e8 9d b4
    84028730    mov si, word [bp+00ah]                    ; 8b 76 0a
    84038731    mov es, [bp+018h]                         ; 8e 46 18
     
    84108738    mov word [00467h], sp                     ; 89 26 67 04
    84118739    mov [00469h], ss                          ; 8c 16 69 04
    8412     call 06067h                               ; e8 00 00
     8740    call 061a9h                               ; e8 00 00
    84138741    pop di                                    ; 5f
    84148742    add di, strict byte 0001bh                ; 83 c7 1b
     
    84338761    cld                                       ; fc
    84348762    rep movsw                                 ; f3 a5
    8435     call 0609bh                               ; e8 00 00
     8763    call 061ddh                               ; e8 00 00
    84368764    pop ax                                    ; 58
    84378765    push 0f000h                               ; 68 00 f0
     
    84548782    pop DS                                    ; 1f
    84558783    mov ax, di                                ; 89 f8
    8456     call 05cf1h                               ; e8 25 fc
     8784    call 05e33h                               ; e8 25 fc
    84578785    sti                                       ; fb
    84588786    mov byte [bp+017h], 000h                  ; c6 46 17 00
    84598787    and byte [bp+01ch], 0feh                  ; 80 66 1c fe
    8460     jmp near 05e85h                           ; e9 ad fd
     8788    jmp near 05fc7h                           ; e9 ad fd
    84618789    mov ax, strict word 00031h                ; b8 31 00
    8462     call 0165ch                               ; e8 7e b5
     8790    call 0165ch                               ; e8 3c b4
    84638791    xor ah, ah                                ; 30 e4
    84648792    mov dx, ax                                ; 89 c2
    84658793    sal dx, 008h                              ; c1 e2 08
    84668794    mov ax, strict word 00030h                ; b8 30 00
    8467     call 0165ch                               ; e8 71 b5
     8795    call 0165ch                               ; e8 2f b4
    84688796    xor ah, ah                                ; 30 e4
    84698797    or dx, ax                                 ; 09 c2
    84708798    mov word [bp+016h], dx                    ; 89 56 16
    84718799    cmp dx, strict byte 0ffc0h                ; 83 fa c0
    8472     jbe short 060d1h                          ; 76 da
     8800    jbe short 06213h                          ; 76 da
    84738801    mov word [bp+016h], strict word 0ffc0h    ; c7 46 16 c0 ff
    8474     jmp short 060d1h                          ; eb d3
     8802    jmp short 06213h                          ; eb d3
    84758803    cli                                       ; fa
    84768804    mov ax, strict word 00001h                ; b8 01 00
    8477     call 05cf1h                               ; e8 ec fb
     8805    call 05e33h                               ; e8 ec fb
    84788806    mov dx, word [bp+00ah]                    ; 8b 56 0a
    84798807    add dx, strict byte 00038h                ; 83 c2 38
    84808808    mov ax, word [bp+018h]                    ; 8b 46 18
    84818809    mov bx, strict word 0ffffh                ; bb ff ff
    8482     call 0162ah                               ; e8 16 b5
     8810    call 0162ah                               ; e8 d4 b3
    84838811    mov dx, word [bp+00ah]                    ; 8b 56 0a
    84848812    add dx, strict byte 0003ah                ; 83 c2 3a
    84858813    mov ax, word [bp+018h]                    ; 8b 46 18
    84868814    xor bx, bx                                ; 31 db
    8487     call 0162ah                               ; e8 08 b5
     8815    call 0162ah                               ; e8 c6 b3
    84888816    mov dx, word [bp+00ah]                    ; 8b 56 0a
    84898817    add dx, strict byte 0003ch                ; 83 c2 3c
    84908818    mov ax, word [bp+018h]                    ; 8b 46 18
    84918819    mov bx, strict word 0000fh                ; bb 0f 00
    8492     call 0160eh                               ; e8 dd b4
     8820    call 0160eh                               ; e8 9b b3
    84938821    mov dx, word [bp+00ah]                    ; 8b 56 0a
    84948822    add dx, strict byte 0003dh                ; 83 c2 3d
    84958823    mov ax, word [bp+018h]                    ; 8b 46 18
    84968824    mov bx, 0009bh                            ; bb 9b 00
    8497     call 0160eh                               ; e8 ce b4
     8825    call 0160eh                               ; e8 8c b3
    84988826    mov dx, word [bp+00ah]                    ; 8b 56 0a
    84998827    add dx, strict byte 0003eh                ; 83 c2 3e
    85008828    mov ax, word [bp+018h]                    ; 8b 46 18
    85018829    xor bx, bx                                ; 31 db
    8502     call 0162ah                               ; e8 dc b4
     8830    call 0162ah                               ; e8 9a b3
    85038831    mov AL, strict byte 011h                  ; b0 11
    85048832    mov dx, strict word 00020h                ; ba 20 00
     
    85308858    out DX, AL                                ; ee
    85318859    mov si, word [bp+00ah]                    ; 8b 76 0a
    8532     call 0618fh                               ; e8 00 00
     8860    call 062d1h                               ; e8 00 00
    85338861    pop di                                    ; 5f
    85348862    add di, strict byte 00018h                ; 83 c7 18
     
    85588886    push cx                                   ; 51
    85598887    retf                                      ; cb
    8560     jmp near 05e85h                           ; e9 ba fc
    8561     mov bx, 00cd6h                            ; bb d6 0c
     8888    jmp near 05fc7h                           ; e9 ba fc
     8889    mov bx, 00cech                            ; bb ec 0c
    85628890    mov cx, ds                                ; 8c d9
    85638891    mov ax, strict word 00004h                ; b8 04 00
    8564     call 018aeh                               ; e8 d8 b6
     8892    call 018aeh                               ; e8 96 b5
    85658893    push 00804h                               ; 68 04 08
    85668894    push strict byte 00004h                   ; 6a 04
    8567     call 018e9h                               ; e8 0b b7
     8895    call 018e9h                               ; e8 c9 b5
    85688896    add sp, strict byte 00004h                ; 83 c4 04
    85698897    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     
    85728900    or ah, 086h                               ; 80 cc 86
    85738901    mov word [bp+016h], ax                    ; 89 46 16
    8574     jmp near 05e85h                           ; e9 92 fc
     8902    jmp near 05fc7h                           ; e9 92 fc
    85758903    mov word [bp+01ch], cx                    ; 89 4e 1c
    85768904    mov word [bp+016h], ax                    ; 89 46 16
    85778905    mov word [bp+010h], 0e6f5h                ; c7 46 10 f5 e6
    85788906    mov word [bp+018h], 0f000h                ; c7 46 18 00 f0
    8579     jmp near 05e85h                           ; e9 7f fc
     8907    jmp near 05fc7h                           ; e9 7f fc
    85808908    mov dx, strict word 0000eh                ; ba 0e 00
    85818909    mov ax, strict word 00040h                ; b8 40 00
    8582     call 0161ch                               ; e8 0d b4
     8910    call 0161ch                               ; e8 cb b2
    85838911    mov word [bp+018h], ax                    ; 89 46 18
    8584     jmp near 060d1h                           ; e9 bc fe
     8912    jmp near 06213h                           ; e9 bc fe
    85858913    push 00833h                               ; 68 33 08
    85868914    push strict byte 00008h                   ; 6a 08
    8587     jmp short 061dbh                          ; eb bf
     8915    jmp short 0631dh                          ; eb bf
    85888916    test byte [bp+016h], 0ffh                 ; f6 46 16 ff
    8589     jne short 06241h                          ; 75 1f
     8917    jne short 06383h                          ; 75 1f
    85908918    mov word [bp+016h], ax                    ; 89 46 16
    85918919    mov ax, word [bp+010h]                    ; 8b 46 10
    85928920    xor ah, ah                                ; 30 e4
    85938921    cmp ax, strict word 00001h                ; 3d 01 00
    8594     jc short 0623ah                           ; 72 0b
     8922    jc short 0637ch                           ; 72 0b
    85958923    cmp ax, strict word 00003h                ; 3d 03 00
    8596     jnbe short 0623ah                         ; 77 06
     8924    jnbe short 0637ch                         ; 77 06
    85978925    mov word [bp+01ch], cx                    ; 89 4e 1c
    8598     jmp near 05e85h                           ; e9 4b fc
     8926    jmp near 05fc7h                           ; e9 4b fc
    85998927    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
    8600     jmp near 05e85h                           ; e9 44 fc
    8601     mov bx, 00cd6h                            ; bb d6 0c
     8928    jmp near 05fc7h                           ; e9 44 fc
     8929    mov bx, 00cech                            ; bb ec 0c
    86028930    mov cx, ds                                ; 8c d9
    86038931    mov ax, strict word 00004h                ; b8 04 00
    8604     call 018aeh                               ; e8 62 b6
     8932    call 018aeh                               ; e8 20 b5
    86058933    push word [bp+010h]                       ; ff 76 10
    86068934    push word [bp+016h]                       ; ff 76 16
    86078935    push 0084ah                               ; 68 4a 08
    86088936    push strict byte 00004h                   ; 6a 04
    8609     call 018e9h                               ; e8 8f b6
     8937    call 018e9h                               ; e8 4d b5
    86108938    add sp, strict byte 00008h                ; 83 c4 08
    8611     jmp short 061e1h                          ; eb 82
    8612     mov ax, word [0d763h]                     ; a1 63 d7
    8613     arpl cx, di                               ; 63 f9
    8614     arpl word [bp+si], bx                     ; 63 1a
    8615     cmp word [fs:si+058h], sp                 ; 64 39 64 58
    8616     db  064h
    8617     db  09ah
    8618     db  064h
    8619     db  0c7h
    8620     db  064h
    8621 _int15_function32:                           ; 0xf626f LB 0x309
     8939    jmp short 06323h                          ; eb 82
     8940    jcxz 06407h                               ; e3 64
     8941    sbb word [di+03bh], sp                    ; 19 65 3b
     8942    db  065h, 05ch
     8943    ; gs pop sp                                 ; 65 5c
     8944    db  065h, 07bh, 065h
     8945    ; gs jnp short 06410h                       ; 65 7b 65
     8946    call far 00965h:0dc65h                    ; 9a 65 dc 65 09
     8947    db  066h
     8948_int15_function32:                           ; 0xf63b1 LB 0x309
    86228949    push si                                   ; 56
    86238950    enter 00008h, 000h                        ; c8 08 00 00
     
    86258952    shr ax, 008h                              ; c1 e8 08
    86268953    cmp ax, 000e8h                            ; 3d e8 00
    8627     je short 062c0h                           ; 74 41
     8954    je short 06402h                           ; 74 41
    86288955    cmp ax, 00086h                            ; 3d 86 00
    8629     jne near 0654bh                           ; 0f 85 c5 02
     8956    jne near 0668dh                           ; 0f 85 c5 02
    86308957    sti                                       ; fb
    86318958    mov ax, word [bp+01eh]                    ; 8b 46 1e
     
    86468973    db  066h, 00bh, 0c9h
    86478974    ; or ecx, ecx                               ; 66 0b c9
    8648     je near 062bdh                            ; 0f 84 0e 00
     8975    je near 063ffh                            ; 0f 84 0e 00
    86498976    in AL, strict byte 061h                   ; e4 61
    86508977    and AL, strict byte 010h                  ; 24 10
    86518978    db  03ah, 0c4h
    86528979    ; cmp al, ah                                ; 3a c4
    8653     je short 062afh                           ; 74 f8
     8980    je short 063f1h                           ; 74 f8
    86548981    db  08ah, 0e0h
    86558982    ; mov ah, al                                ; 8a e0
    86568983    dec ecx                                   ; 66 49
    8657     jne short 062afh                          ; 75 f2
     8984    jne short 063f1h                          ; 75 f2
    86588985    leave                                     ; c9
    86598986    pop si                                    ; 5e
     
    86628989    xor ah, ah                                ; 30 e4
    86638990    cmp ax, strict word 00020h                ; 3d 20 00
    8664     je short 062d4h                           ; 74 0a
     8991    je short 06416h                           ; 74 0a
    86658992    cmp ax, strict word 00001h                ; 3d 01 00
    8666     je near 064fdh                            ; 0f 84 2c 02
    8667     jmp near 0654bh                           ; e9 77 02
     8993    je near 0663fh                            ; 0f 84 2c 02
     8994    jmp near 0668dh                           ; e9 77 02
    86688995    cmp word [bp+01ch], 0534dh                ; 81 7e 1c 4d 53
    8669     jne near 0654bh                           ; 0f 85 6e 02
     8996    jne near 0668dh                           ; 0f 85 6e 02
    86708997    cmp word [bp+01ah], 04150h                ; 81 7e 1a 50 41
    8671     jne near 0654bh                           ; 0f 85 65 02
     8998    jne near 0668dh                           ; 0f 85 65 02
    86728999    mov ax, strict word 00035h                ; b8 35 00
    8673     call 0165ch                               ; e8 70 b3
     9000    call 0165ch                               ; e8 2e b2
    86749001    movzx bx, al                              ; 0f b6 d8
    86759002    xor dx, dx                                ; 31 d2
     
    86779004    sal bx, 1                                 ; d1 e3
    86789005    rcl dx, 1                                 ; d1 d2
    8679     loop 062f4h                               ; e2 fa
     9006    loop 06436h                               ; e2 fa
    86809007    mov ax, strict word 00034h                ; b8 34 00
    8681     call 0165ch                               ; e8 5c b3
     9008    call 0165ch                               ; e8 1a b2
    86829009    xor ah, ah                                ; 30 e4
    86839010    mov dx, bx                                ; 89 da
     
    86879014    adc dx, 00100h                            ; 81 d2 00 01
    86889015    cmp dx, 00100h                            ; 81 fa 00 01
    8689     jc short 0631ah                           ; 72 06
    8690     jne short 06347h                          ; 75 31
     9016    jc short 0645ch                           ; 72 06
     9017    jne short 06489h                          ; 75 31
    86919018    test bx, bx                               ; 85 db
    8692     jnbe short 06347h                         ; 77 2d
     9019    jnbe short 06489h                         ; 77 2d
    86939020    mov ax, strict word 00031h                ; b8 31 00
    8694     call 0165ch                               ; e8 3c b3
     9021    call 0165ch                               ; e8 fa b1
    86959022    movzx bx, al                              ; 0f b6 d8
    86969023    xor dx, dx                                ; 31 d2
     
    86989025    sal bx, 1                                 ; d1 e3
    86999026    rcl dx, 1                                 ; d1 d2
    8700     loop 06328h                               ; e2 fa
     9027    loop 0646ah                               ; e2 fa
    87019028    mov ax, strict word 00030h                ; b8 30 00
    8702     call 0165ch                               ; e8 28 b3
     9029    call 0165ch                               ; e8 e6 b1
    87039030    xor ah, ah                                ; 30 e4
    87049031    or bx, ax                                 ; 09 c3
     
    87069033    sal bx, 1                                 ; d1 e3
    87079034    rcl dx, 1                                 ; d1 d2
    8708     loop 0633bh                               ; e2 fa
     9035    loop 0647dh                               ; e2 fa
    87099036    add bx, strict byte 00000h                ; 83 c3 00
    87109037    adc dx, strict byte 00010h                ; 83 d2 10
    87119038    mov ax, strict word 00062h                ; b8 62 00
    8712     call 0165ch                               ; e8 0f b3
     9039    call 0165ch                               ; e8 cd b1
    87139040    xor ah, ah                                ; 30 e4
    87149041    mov word [bp-008h], ax                    ; 89 46 f8
     
    87189045    sal word [bp-008h], 1                     ; d1 66 f8
    87199046    rcl word [bp-006h], 1                     ; d1 56 fa
    8720     loop 0635ah                               ; e2 f8
     9047    loop 0649ch                               ; e2 f8
    87219048    mov ax, strict word 00061h                ; b8 61 00
    8722     call 0165ch                               ; e8 f4 b2
     9049    call 0165ch                               ; e8 b2 b1
    87239050    xor ah, ah                                ; 30 e4
    87249051    or word [bp-008h], ax                     ; 09 46 f8
     
    87279054    mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
    87289055    mov ax, strict word 00063h                ; b8 63 00
    8729     call 0165ch                               ; e8 de b2
     9056    call 0165ch                               ; e8 9c b1
    87309057    mov byte [bp-004h], al                    ; 88 46 fc
    87319058    mov byte [bp-002h], al                    ; 88 46 fe
    87329059    mov ax, word [bp+016h]                    ; 8b 46 16
    87339060    cmp ax, strict word 00007h                ; 3d 07 00
    8734     jnbe near 0654bh                          ; 0f 87 bd 01
     9061    jnbe near 0668dh                          ; 0f 87 bd 01
    87359062    mov si, ax                                ; 89 c6
    87369063    add si, ax                                ; 01 c6
     
    87399066    mov cx, dx                                ; 89 d1
    87409067    adc cx, strict byte 0ffffh                ; 83 d1 ff
    8741     jmp word [cs:si+0625fh]                   ; 2e ff a4 5f 62
     9068    jmp word [cs:si+063a1h]                   ; 2e ff a4 a1 63
    87429069    push strict byte 00001h                   ; 6a 01
    87439070    push dword 000000000h                     ; 66 6a 00
     
    87489075    xor bx, bx                                ; 31 db
    87499076    xor cx, cx                                ; 31 c9
    8750     call 05d1ah                               ; e8 62 f9
     9077    call 05e5ch                               ; e8 62 f9
    87519078    mov dword [bp+016h], strict dword 000000001h ; 66 c7 46 16 01 00 00 00
    87529079    mov dword [bp+022h], strict dword 0534d4150h ; 66 c7 46 22 50 41 4d 53
     
    87649091    mov bx, 0fc00h                            ; bb 00 fc
    87659092    mov cx, strict word 00009h                ; b9 09 00
    8766     call 05d1ah                               ; e8 2b f9
     9093    call 05e5ch                               ; e8 2b f9
    87679094    mov dword [bp+016h], strict dword 000000002h ; 66 c7 46 16 02 00 00 00
    8768     jmp short 063c0h                          ; eb c7
     9095    jmp short 06502h                          ; eb c7
    87699096    push strict byte 00002h                   ; 6a 02
    87709097    push dword 000000000h                     ; 66 6a 00
     
    87759102    xor bx, bx                                ; 31 db
    87769103    mov cx, strict word 0000fh                ; b9 0f 00
    8777     call 05d1ah                               ; e8 0a f9
     9104    call 05e5ch                               ; e8 0a f9
    87789105    mov dword [bp+016h], strict dword 000000003h ; 66 c7 46 16 03 00 00 00
    8779     jmp short 063c0h                          ; eb a6
     9106    jmp short 06502h                          ; eb a6
    87809107    push strict byte 00001h                   ; 6a 01
    87819108    push dword 000000000h                     ; 66 6a 00
     
    87869113    xor bx, bx                                ; 31 db
    87879114    mov cx, strict word 00010h                ; b9 10 00
    8788     call 05d1ah                               ; e8 eb f8
     9115    call 05e5ch                               ; e8 eb f8
    87899116    mov dword [bp+016h], strict dword 000000004h ; 66 c7 46 16 04 00 00 00
    8790     jmp short 063c0h                          ; eb 87
     9117    jmp short 06502h                          ; eb 87
    87919118    push strict byte 00003h                   ; 6a 03
    87929119    push dword 000000000h                     ; 66 6a 00
     
    87979124    mov bx, ax                                ; 89 c3
    87989125    mov ax, si                                ; 89 f0
    8799     call 05d1ah                               ; e8 cd f8
     9126    call 05e5ch                               ; e8 cd f8
    88009127    mov dword [bp+016h], strict dword 000000005h ; 66 c7 46 16 05 00 00 00
    8801     jmp near 063c0h                           ; e9 68 ff
     9128    jmp near 06502h                           ; e9 68 ff
    88029129    push strict byte 00002h                   ; 6a 02
    88039130    push dword 000000000h                     ; 66 6a 00
     
    88079134    xor bx, bx                                ; 31 db
    88089135    mov cx, strict word 0fffch                ; b9 fc ff
    8809     call 05d1ah                               ; e8 ac f8
     9136    call 05e5ch                               ; e8 ac f8
    88109137    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    8811     jne short 0647bh                          ; 75 07
     9138    jne short 065bdh                          ; 75 07
    88129139    mov ax, word [bp-006h]                    ; 8b 46 fa
    88139140    test ax, ax                               ; 85 c0
    8814     je short 06491h                           ; 74 16
     9141    je short 065d3h                           ; 74 16
    88159142    mov dword [bp+016h], strict dword 000000007h ; 66 c7 46 16 07 00 00 00
    8816     jmp near 063c0h                           ; e9 3a ff
     9143    jmp near 06502h                           ; e9 3a ff
    88179144    mov dword [bp+016h], strict dword 000000006h ; 66 c7 46 16 06 00 00 00
    8818     jmp near 063c0h                           ; e9 2f ff
     9145    jmp near 06502h                           ; e9 2f ff
    88199146    mov word [bp+016h], ax                    ; 89 46 16
    88209147    mov word [bp+018h], ax                    ; 89 46 18
    8821     jmp near 063c0h                           ; e9 26 ff
     9148    jmp near 06502h                           ; e9 26 ff
    88229149    push strict byte 00002h                   ; 6a 02
    88239150    push dword 000000000h                     ; 66 6a 00
     
    88279154    xor bx, bx                                ; 31 db
    88289155    xor cx, cx                                ; 31 c9
    8829     call 05d1ah                               ; e8 6b f8
     9156    call 05e5ch                               ; e8 6b f8
    88309157    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    8831     jne short 064bch                          ; 75 07
     9158    jne short 065feh                          ; 75 07
    88329159    mov ax, word [bp-006h]                    ; 8b 46 fa
    88339160    test ax, ax                               ; 85 c0
    8834     je short 064beh                           ; 74 02
    8835     jmp short 0647bh                          ; eb bd
     9161    je short 06600h                           ; 74 02
     9162    jmp short 065bdh                          ; eb bd
    88369163    mov word [bp+016h], ax                    ; 89 46 16
    88379164    mov word [bp+018h], ax                    ; 89 46 18
    8838     jmp near 063c0h                           ; e9 f9 fe
     9165    jmp near 06502h                           ; e9 f9 fe
    88399166    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    8840     jne short 064d5h                          ; 75 08
     9167    jne short 06617h                          ; 75 08
    88419168    cmp word [bp-006h], strict byte 00000h    ; 83 7e fa 00
    8842     je near 063c0h                            ; 0f 84 eb fe
     9169    je near 06502h                            ; 0f 84 eb fe
    88439170    push strict byte 00001h                   ; 6a 01
    88449171    mov al, byte [bp-002h]                    ; 8a 46 fe
     
    88539180    xor bx, bx                                ; 31 db
    88549181    xor cx, cx                                ; 31 c9
    8855     call 05d1ah                               ; e8 28 f8
     9182    call 05e5ch                               ; e8 28 f8
    88569183    xor ax, ax                                ; 31 c0
    88579184    mov word [bp+016h], ax                    ; 89 46 16
    88589185    mov word [bp+018h], ax                    ; 89 46 18
    8859     jmp near 063c0h                           ; e9 c3 fe
     9186    jmp near 06502h                           ; e9 c3 fe
    88609187    and byte [bp+02ah], 0feh                  ; 80 66 2a fe
    88619188    mov ax, strict word 00031h                ; b8 31 00
    8862     call 0165ch                               ; e8 55 b1
     9189    call 0165ch                               ; e8 13 b0
    88639190    xor ah, ah                                ; 30 e4
    88649191    mov dx, ax                                ; 89 c2
    88659192    sal dx, 008h                              ; c1 e2 08
    88669193    mov ax, strict word 00030h                ; b8 30 00
    8867     call 0165ch                               ; e8 48 b1
     9194    call 0165ch                               ; e8 06 b0
    88689195    xor ah, ah                                ; 30 e4
    88699196    or dx, ax                                 ; 09 c2
    88709197    mov word [bp+01eh], dx                    ; 89 56 1e
    88719198    cmp dx, 03c00h                            ; 81 fa 00 3c
    8872     jbe short 06526h                          ; 76 05
     9199    jbe short 06668h                          ; 76 05
    88739200    mov word [bp+01eh], 03c00h                ; c7 46 1e 00 3c
    88749201    mov ax, strict word 00035h                ; b8 35 00
    8875     call 0165ch                               ; e8 30 b1
     9202    call 0165ch                               ; e8 ee af
    88769203    movzx dx, al                              ; 0f b6 d0
    88779204    sal dx, 008h                              ; c1 e2 08
    88789205    mov ax, strict word 00034h                ; b8 34 00
    8879     call 0165ch                               ; e8 24 b1
     9206    call 0165ch                               ; e8 e2 af
    88809207    xor ah, ah                                ; 30 e4
    88819208    or dx, ax                                 ; 09 c2
     
    88879214    pop si                                    ; 5e
    88889215    retn                                      ; c3
    8889     mov bx, 00cd6h                            ; bb d6 0c
     9216    mov bx, 00cech                            ; bb ec 0c
    88909217    mov cx, ds                                ; 8c d9
    88919218    mov ax, strict word 00004h                ; b8 04 00
    8892     call 018aeh                               ; e8 58 b3
     9219    call 018aeh                               ; e8 16 b2
    88939220    push word [bp+016h]                       ; ff 76 16
    88949221    push word [bp+022h]                       ; ff 76 22
    88959222    push 0084ah                               ; 68 4a 08
    88969223    push strict byte 00004h                   ; 6a 04
    8897     call 018e9h                               ; e8 85 b3
     9224    call 018e9h                               ; e8 43 b2
    88989225    add sp, strict byte 00008h                ; 83 c4 08
    88999226    or byte [bp+02ah], 001h                   ; 80 4e 2a 01
     
    89059232    pop si                                    ; 5e
    89069233    retn                                      ; c3
    8907 init_rtc_:                                   ; 0xf6578 LB 0x25
     9234init_rtc_:                                   ; 0xf66ba LB 0x25
    89089235    push dx                                   ; 52
    89099236    push bp                                   ; 55
     
    89119238    mov dx, strict word 00026h                ; ba 26 00
    89129239    mov ax, strict word 0000ah                ; b8 0a 00
    8913     call 0166dh                               ; e8 e8 b0
     9240    call 0166dh                               ; e8 a6 af
    89149241    mov dx, strict word 00002h                ; ba 02 00
    89159242    mov ax, strict word 0000bh                ; b8 0b 00
    8916     call 0166dh                               ; e8 df b0
     9243    call 0166dh                               ; e8 9d af
    89179244    mov ax, strict word 0000ch                ; b8 0c 00
    8918     call 0165ch                               ; e8 c8 b0
     9245    call 0165ch                               ; e8 86 af
    89199246    mov ax, strict word 0000dh                ; b8 0d 00
    8920     call 0165ch                               ; e8 c2 b0
     9247    call 0165ch                               ; e8 80 af
    89219248    pop bp                                    ; 5d
    89229249    pop dx                                    ; 5a
    89239250    retn                                      ; c3
    8924 rtc_updating_:                               ; 0xf659d LB 0x1f
     9251rtc_updating_:                               ; 0xf66df LB 0x1f
    89259252    push dx                                   ; 52
    89269253    push bp                                   ; 55
     
    89289255    mov dx, 061a8h                            ; ba a8 61
    89299256    dec dx                                    ; 4a
    8930     je short 065b6h                           ; 74 0f
     9257    je short 066f8h                           ; 74 0f
    89319258    mov ax, strict word 0000ah                ; b8 0a 00
    8932     call 0165ch                               ; e8 af b0
     9259    call 0165ch                               ; e8 6d af
    89339260    test AL, strict byte 080h                 ; a8 80
    8934     jne short 065a4h                          ; 75 f3
     9261    jne short 066e6h                          ; 75 f3
    89359262    xor ax, ax                                ; 31 c0
    89369263    pop bp                                    ; 5d
     
    89419268    pop dx                                    ; 5a
    89429269    retn                                      ; c3
    8943 _int70_function:                             ; 0xf65bc LB 0xbb
     9270_int70_function:                             ; 0xf66fe LB 0xbb
    89449271    push si                                   ; 56
    89459272    enter 00002h, 000h                        ; c8 02 00 00
    89469273    mov ax, strict word 0000bh                ; b8 0b 00
    8947     call 0165ch                               ; e8 95 b0
     9274    call 0165ch                               ; e8 53 af
    89489275    mov dl, al                                ; 88 c2
    89499276    mov byte [bp-002h], al                    ; 88 46 fe
    89509277    mov ax, strict word 0000ch                ; b8 0c 00
    8951     call 0165ch                               ; e8 8a b0
     9278    call 0165ch                               ; e8 48 af
    89529279    mov dh, al                                ; 88 c6
    89539280    test dl, 060h                             ; f6 c2 60
    8954     je near 06661h                            ; 0f 84 86 00
     9281    je near 067a3h                            ; 0f 84 86 00
    89559282    test AL, strict byte 020h                 ; a8 20
    8956     je short 065e3h                           ; 74 04
     9283    je short 06725h                           ; 74 04
    89579284    sti                                       ; fb
    89589285    int 04ah                                  ; cd 4a
    89599286    cli                                       ; fa
    89609287    test dh, 040h                             ; f6 c6 40
    8961     je near 06661h                            ; 0f 84 77 00
     9288    je near 067a3h                            ; 0f 84 77 00
    89629289    mov dx, 000a0h                            ; ba a0 00
    89639290    mov ax, strict word 00040h                ; b8 40 00
    8964     call 01600h                               ; e8 0d b0
     9291    call 01600h                               ; e8 cb ae
    89659292    test al, al                               ; 84 c0
    8966     je short 06661h                           ; 74 6a
     9293    je short 067a3h                           ; 74 6a
    89679294    mov dx, 0009ch                            ; ba 9c 00
    89689295    mov ax, strict word 00040h                ; b8 40 00
    8969     call 01638h                               ; e8 38 b0
     9296    call 01638h                               ; e8 f6 ae
    89709297    test dx, dx                               ; 85 d2
    8971     jne short 0664dh                          ; 75 49
     9298    jne short 0678fh                          ; 75 49
    89729299    cmp ax, 003d1h                            ; 3d d1 03
    8973     jnc short 0664dh                          ; 73 44
     9300    jnc short 0678fh                          ; 73 44
    89749301    mov dx, 00098h                            ; ba 98 00
    89759302    mov ax, strict word 00040h                ; b8 40 00
    8976     call 0161ch                               ; e8 0a b0
     9303    call 0161ch                               ; e8 c8 ae
    89779304    mov si, ax                                ; 89 c6
    89789305    mov dx, 0009ah                            ; ba 9a 00
    89799306    mov ax, strict word 00040h                ; b8 40 00
    8980     call 0161ch                               ; e8 ff af
     9307    call 0161ch                               ; e8 bd ae
    89819308    mov cx, ax                                ; 89 c1
    89829309    xor bx, bx                                ; 31 db
    89839310    mov dx, 000a0h                            ; ba a0 00
    89849311    mov ax, strict word 00040h                ; b8 40 00
    8985     call 0160eh                               ; e8 e4 af
     9312    call 0160eh                               ; e8 a2 ae
    89869313    mov al, byte [bp-002h]                    ; 8a 46 fe
    89879314    and AL, strict byte 037h                  ; 24 37
    89889315    movzx dx, al                              ; 0f b6 d0
    89899316    mov ax, strict word 0000bh                ; b8 0b 00
    8990     call 0166dh                               ; e8 35 b0
     9317    call 0166dh                               ; e8 f3 ae
    89919318    mov dx, cx                                ; 89 ca
    89929319    mov ax, si                                ; 89 f0
    8993     call 01600h                               ; e8 c1 af
     9320    call 01600h                               ; e8 7f ae
    89949321    or AL, strict byte 080h                   ; 0c 80
    89959322    movzx bx, al                              ; 0f b6 d8
    89969323    mov dx, cx                                ; 89 ca
    89979324    mov ax, si                                ; 89 f0
    8998     call 0160eh                               ; e8 c3 af
    8999     jmp short 06661h                          ; eb 14
     9325    call 0160eh                               ; e8 81 ae
     9326    jmp short 067a3h                          ; eb 14
    90009327    mov bx, ax                                ; 89 c3
    90019328    add bx, 0fc2fh                            ; 81 c3 2f fc
     
    90049331    mov dx, 0009ch                            ; ba 9c 00
    90059332    mov ax, strict word 00040h                ; b8 40 00
    9006     call 0164ah                               ; e8 e9 af
    9007     call 0e03bh                               ; e8 d7 79
     9333    call 0164ah                               ; e8 a7 ae
     9334    call 0e03bh                               ; e8 95 78
    90089335    leave                                     ; c9
    90099336    pop si                                    ; 5e
    90109337    retn                                      ; c3
    9011     mov fs, [bp-04bh]                         ; 8e 66 b5
    9012     db  066h, 0dah, 066h, 00ch
    9013     ; fisub dword [bp+00ch]                     ; 66 da 66 0c
    9014     db  067h, 05ah
    9015     ; pop dx                                    ; 67 5a
    9016     db  067h, 090h
    9017     ; nop                                       ; 67 90
    9018     sal byte [edi+027h], CL                   ; 67 d2 67 27
    9019     db  068h
    9020 _int1a_function:                             ; 0xf6677 LB 0x1c0
     9338    db  0d0h, 067h, 0f7h, 067h, 01ch, 068h, 04eh, 068h, 09ch, 068h, 0d2h, 068h, 014h, 069h, 069h, 069h
     9339_int1a_function:                             ; 0xf67b9 LB 0x1c0
    90219340    push bp                                   ; 55
    90229341    mov bp, sp                                ; 89 e5
     
    90249343    mov al, byte [bp+013h]                    ; 8a 46 13
    90259344    cmp AL, strict byte 007h                  ; 3c 07
    9026     jnbe near 066b3h                          ; 0f 87 2f 00
     9345    jnbe near 067f5h                          ; 0f 87 2f 00
    90279346    movzx bx, al                              ; 0f b6 d8
    90289347    add bx, bx                                ; 01 db
    9029     jmp word [cs:bx+06667h]                   ; 2e ff a7 67 66
     9348    jmp word [cs:bx+067a9h]                   ; 2e ff a7 a9 67
    90309349    cli                                       ; fa
    90319350    mov bx, 0046eh                            ; bb 6e 04
     
    90599378    pop bp                                    ; 5d
    90609379    retn                                      ; c3
    9061     call 0659dh                               ; e8 c0 fe
     9380    call 066dfh                               ; e8 c0 fe
    90629381    test ax, ax                               ; 85 c0
    9063     je short 066e3h                           ; 74 02
     9382    je short 06825h                           ; 74 02
    90649383    pop bp                                    ; 5d
    90659384    retn                                      ; c3
    90669385    xor ax, ax                                ; 31 c0
    9067     call 0165ch                               ; e8 74 af
     9386    call 0165ch                               ; e8 32 ae
    90689387    mov byte [bp+00fh], al                    ; 88 46 0f
    90699388    mov ax, strict word 00002h                ; b8 02 00
    9070     call 0165ch                               ; e8 6b af
     9389    call 0165ch                               ; e8 29 ae
    90719390    mov byte [bp+010h], al                    ; 88 46 10
    90729391    mov ax, strict word 00004h                ; b8 04 00
    9073     call 0165ch                               ; e8 62 af
     9392    call 0165ch                               ; e8 20 ae
    90749393    mov bl, al                                ; 88 c3
    90759394    mov byte [bp+011h], al                    ; 88 46 11
    90769395    mov ax, strict word 0000bh                ; b8 0b 00
    9077     call 0165ch                               ; e8 57 af
     9396    call 0165ch                               ; e8 15 ae
    90789397    and AL, strict byte 001h                  ; 24 01
    90799398    mov byte [bp+00eh], al                    ; 88 46 0e
    9080     jmp short 06751h                          ; eb 45
    9081     call 0659dh                               ; e8 8e fe
     9399    jmp short 06893h                          ; eb 45
     9400    call 066dfh                               ; e8 8e fe
    90829401    test ax, ax                               ; 85 c0
    9083     je short 06716h                           ; 74 03
    9084     call 06578h                               ; e8 62 fe
     9402    je short 06858h                           ; 74 03
     9403    call 066bah                               ; e8 62 fe
    90859404    movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
    90869405    xor ax, ax                                ; 31 c0
    9087     call 0166dh                               ; e8 4e af
     9406    call 0166dh                               ; e8 0c ae
    90889407    movzx dx, byte [bp+010h]                  ; 0f b6 56 10
    90899408    mov ax, strict word 00002h                ; b8 02 00
    9090     call 0166dh                               ; e8 44 af
     9409    call 0166dh                               ; e8 02 ae
    90919410    movzx dx, byte [bp+011h]                  ; 0f b6 56 11
    90929411    mov ax, strict word 00004h                ; b8 04 00
    9093     call 0166dh                               ; e8 3a af
     9412    call 0166dh                               ; e8 f8 ad
    90949413    mov ax, strict word 0000bh                ; b8 0b 00
    9095     call 0165ch                               ; e8 23 af
     9414    call 0165ch                               ; e8 e1 ad
    90969415    mov bl, al                                ; 88 c3
    90979416    and bl, 060h                              ; 80 e3 60
     
    91029421    movzx dx, bl                              ; 0f b6 d3
    91039422    mov ax, strict word 0000bh                ; b8 0b 00
    9104     call 0166dh                               ; e8 1c af
     9423    call 0166dh                               ; e8 da ad
    91059424    mov byte [bp+013h], 000h                  ; c6 46 13 00
    91069425    mov byte [bp+012h], bl                    ; 88 5e 12
     
    91089427    retn                                      ; c3
    91099428    mov byte [bp+013h], 000h                  ; c6 46 13 00
    9110     call 0659dh                               ; e8 3c fe
     9429    call 066dfh                               ; e8 3c fe
    91119430    test ax, ax                               ; 85 c0
    9112     je short 06767h                           ; 74 02
     9431    je short 068a9h                           ; 74 02
    91139432    pop bp                                    ; 5d
    91149433    retn                                      ; c3
    91159434    mov ax, strict word 00009h                ; b8 09 00
    9116     call 0165ch                               ; e8 ef ae
     9435    call 0165ch                               ; e8 ad ad
    91179436    mov byte [bp+010h], al                    ; 88 46 10
    91189437    mov ax, strict word 00008h                ; b8 08 00
    9119     call 0165ch                               ; e8 e6 ae
     9438    call 0165ch                               ; e8 a4 ad
    91209439    mov byte [bp+00fh], al                    ; 88 46 0f
    91219440    mov ax, strict word 00007h                ; b8 07 00
    9122     call 0165ch                               ; e8 dd ae
     9441    call 0165ch                               ; e8 9b ad
    91239442    mov byte [bp+00eh], al                    ; 88 46 0e
    91249443    mov ax, strict word 00032h                ; b8 32 00
    9125     call 0165ch                               ; e8 d4 ae
     9444    call 0165ch                               ; e8 92 ad
    91269445    mov byte [bp+011h], al                    ; 88 46 11
    91279446    mov byte [bp+012h], al                    ; 88 46 12
    91289447    pop bp                                    ; 5d
    91299448    retn                                      ; c3
    9130     call 0659dh                               ; e8 0a fe
     9449    call 066dfh                               ; e8 0a fe
    91319450    test ax, ax                               ; 85 c0
    9132     je short 0679ch                           ; 74 05
    9133     call 06578h                               ; e8 de fd
     9451    je short 068deh                           ; 74 05
     9452    call 066bah                               ; e8 de fd
    91349453    pop bp                                    ; 5d
    91359454    retn                                      ; c3
    91369455    movzx dx, byte [bp+010h]                  ; 0f b6 56 10
    91379456    mov ax, strict word 00009h                ; b8 09 00
    9138     call 0166dh                               ; e8 c7 ae
     9457    call 0166dh                               ; e8 85 ad
    91399458    movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
    91409459    mov ax, strict word 00008h                ; b8 08 00
    9141     call 0166dh                               ; e8 bd ae
     9460    call 0166dh                               ; e8 7b ad
    91429461    movzx dx, byte [bp+00eh]                  ; 0f b6 56 0e
    91439462    mov ax, strict word 00007h                ; b8 07 00
    9144     call 0166dh                               ; e8 b3 ae
     9463    call 0166dh                               ; e8 71 ad
    91459464    movzx dx, byte [bp+011h]                  ; 0f b6 56 11
    91469465    mov ax, strict word 00032h                ; b8 32 00
    9147     call 0166dh                               ; e8 a9 ae
     9466    call 0166dh                               ; e8 67 ad
    91489467    mov ax, strict word 0000bh                ; b8 0b 00
    9149     call 0165ch                               ; e8 92 ae
     9468    call 0165ch                               ; e8 50 ad
    91509469    mov bl, al                                ; 88 c3
    91519470    and bl, 07fh                              ; 80 e3 7f
    9152     jmp near 06748h                           ; e9 76 ff
     9471    jmp near 0688ah                           ; e9 76 ff
    91539472    mov ax, strict word 0000bh                ; b8 0b 00
    9154     call 0165ch                               ; e8 84 ae
     9473    call 0165ch                               ; e8 42 ad
    91559474    mov bl, al                                ; 88 c3
    91569475    mov word [bp+012h], strict word 00000h    ; c7 46 12 00 00
    91579476    test AL, strict byte 020h                 ; a8 20
    9158     je short 067e5h                           ; 74 02
     9477    je short 06927h                           ; 74 02
    91599478    pop bp                                    ; 5d
    91609479    retn                                      ; c3
    9161     call 0659dh                               ; e8 b5 fd
     9480    call 066dfh                               ; e8 b5 fd
    91629481    test ax, ax                               ; 85 c0
    9163     je short 067efh                           ; 74 03
    9164     call 06578h                               ; e8 89 fd
     9482    je short 06931h                           ; 74 03
     9483    call 066bah                               ; e8 89 fd
    91659484    movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
    91669485    mov ax, strict word 00001h                ; b8 01 00
    9167     call 0166dh                               ; e8 74 ae
     9486    call 0166dh                               ; e8 32 ad
    91689487    movzx dx, byte [bp+010h]                  ; 0f b6 56 10
    91699488    mov ax, strict word 00003h                ; b8 03 00
    9170     call 0166dh                               ; e8 6a ae
     9489    call 0166dh                               ; e8 28 ad
    91719490    movzx dx, byte [bp+011h]                  ; 0f b6 56 11
    91729491    mov ax, strict word 00005h                ; b8 05 00
    9173     call 0166dh                               ; e8 60 ae
     9492    call 0166dh                               ; e8 1e ad
    91749493    mov dx, 000a1h                            ; ba a1 00
    91759494    in AL, DX                                 ; ec
     
    91839502    movzx dx, al                              ; 0f b6 d0
    91849503    mov ax, strict word 0000bh                ; b8 0b 00
    9185     call 0166dh                               ; e8 48 ae
     9504    call 0166dh                               ; e8 06 ad
    91869505    pop bp                                    ; 5d
    91879506    retn                                      ; c3
    91889507    mov ax, strict word 0000bh                ; b8 0b 00
    9189     call 0165ch                               ; e8 2f ae
     9508    call 0165ch                               ; e8 ed ac
    91909509    mov bl, al                                ; 88 c3
    91919510    and AL, strict byte 057h                  ; 24 57
    91929511    movzx dx, al                              ; 0f b6 d0
    9193     jmp near 0674bh                           ; e9 14 ff
    9194 send_to_mouse_ctrl_:                         ; 0xf6837 LB 0x31
     9512    jmp near 0688dh                           ; e9 14 ff
     9513send_to_mouse_ctrl_:                         ; 0xf6979 LB 0x31
    91959514    push bx                                   ; 53
    91969515    push dx                                   ; 52
     
    92039522    ; sub ah, ah                                ; 2a e4
    92049523    test AL, strict byte 002h                 ; a8 02
    9205     je short 06856h                           ; 74 0e
     9524    je short 06998h                           ; 74 0e
    92069525    push 00884h                               ; 68 84 08
    9207     push 0109eh                               ; 68 9e 10
     9526    push 010b4h                               ; 68 b4 10
    92089527    push strict byte 00007h                   ; 6a 07
    9209     call 018e9h                               ; e8 96 b0
     9528    call 018e9h                               ; e8 54 af
    92109529    add sp, strict byte 00006h                ; 83 c4 06
    92119530    mov AL, strict byte 0d4h                  ; b0 d4
     
    92209539    pop bx                                    ; 5b
    92219540    retn                                      ; c3
    9222 get_mouse_data_:                             ; 0xf6868 LB 0x38
     9541get_mouse_data_:                             ; 0xf69aa LB 0x38
    92239542    push bx                                   ; 53
    92249543    push cx                                   ; 51
     
    92349553    and ax, strict word 00021h                ; 25 21 00
    92359554    cmp ax, strict word 00021h                ; 3d 21 00
    9236     je short 06889h                           ; 74 07
     9555    je short 069cbh                           ; 74 07
    92379556    test cx, cx                               ; 85 c9
    9238     je short 06889h                           ; 74 03
     9557    je short 069cbh                           ; 74 03
    92399558    dec cx                                    ; 49
    9240     jmp short 06874h                          ; eb eb
     9559    jmp short 069b6h                          ; eb eb
    92419560    test cx, cx                               ; 85 c9
    9242     jne short 06891h                          ; 75 04
     9561    jne short 069d3h                          ; 75 04
    92439562    mov AL, strict byte 001h                  ; b0 01
    9244     jmp short 0689ch                          ; eb 0b
     9563    jmp short 069deh                          ; eb 0b
    92459564    mov dx, strict word 00060h                ; ba 60 00
    92469565    in AL, DX                                 ; ec
     
    92539572    pop bx                                    ; 5b
    92549573    retn                                      ; c3
    9255 set_kbd_command_byte_:                       ; 0xf68a0 LB 0x2f
     9574set_kbd_command_byte_:                       ; 0xf69e2 LB 0x2f
    92569575    push bx                                   ; 53
    92579576    push dx                                   ; 52
     
    92649583    ; sub ah, ah                                ; 2a e4
    92659584    test AL, strict byte 002h                 ; a8 02
    9266     je short 068bfh                           ; 74 0e
     9585    je short 06a01h                           ; 74 0e
    92679586    push 0088eh                               ; 68 8e 08
    9268     push 0109eh                               ; 68 9e 10
     9587    push 010b4h                               ; 68 b4 10
    92699588    push strict byte 00007h                   ; 6a 07
    9270     call 018e9h                               ; e8 2d b0
     9589    call 018e9h                               ; e8 eb ae
    92719590    add sp, strict byte 00006h                ; 83 c4 06
    92729591    mov AL, strict byte 060h                  ; b0 60
     
    92809599    pop bx                                    ; 5b
    92819600    retn                                      ; c3
    9282 _int74_function:                             ; 0xf68cf LB 0xc6
     9601_int74_function:                             ; 0xf6a11 LB 0xc6
    92839602    enter 00008h, 000h                        ; c8 08 00 00
    92849603    mov dx, strict word 0000eh                ; ba 0e 00
    92859604    mov ax, strict word 00040h                ; b8 40 00
    9286     call 0161ch                               ; e8 40 ad
     9605    call 0161ch                               ; e8 fe ab
    92879606    mov cx, ax                                ; 89 c1
    92889607    mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
     
    92939612    and AL, strict byte 021h                  ; 24 21
    92949613    cmp AL, strict byte 021h                  ; 3c 21
    9295     jne near 06983h                           ; 0f 85 92 00
     9614    jne near 06ac5h                           ; 0f 85 92 00
    92969615    mov dx, strict word 00060h                ; ba 60 00
    92979616    in AL, DX                                 ; ec
     
    93019620    mov dx, strict word 00026h                ; ba 26 00
    93029621    mov ax, cx                                ; 89 c8
    9303     call 01600h                               ; e8 ff ac
     9622    call 01600h                               ; e8 bd ab
    93049623    mov byte [bp-006h], al                    ; 88 46 fa
    93059624    mov dx, strict word 00027h                ; ba 27 00
    93069625    mov ax, cx                                ; 89 c8
    9307     call 01600h                               ; e8 f4 ac
     9626    call 01600h                               ; e8 b2 ab
    93089627    mov byte [bp-008h], al                    ; 88 46 f8
    93099628    test AL, strict byte 080h                 ; a8 80
    9310     je short 06983h                           ; 74 70
     9629    je short 06ac5h                           ; 74 70
    93119630    mov al, byte [bp-008h]                    ; 8a 46 f8
    93129631    and AL, strict byte 007h                  ; 24 07
     
    93199638    add dx, strict byte 00028h                ; 83 c2 28
    93209639    mov ax, cx                                ; 89 c8
    9321     call 0160eh                               ; e8 de ac
     9640    call 0160eh                               ; e8 9c ab
    93229641    mov al, byte [bp-004h]                    ; 8a 46 fc
    93239642    cmp al, byte [bp-002h]                    ; 3a 46 fe
    9324     jc short 06974h                           ; 72 3c
     9643    jc short 06ab6h                           ; 72 3c
    93259644    mov dx, strict word 00028h                ; ba 28 00
    93269645    mov ax, cx                                ; 89 c8
    9327     call 01600h                               ; e8 c0 ac
     9646    call 01600h                               ; e8 7e ab
    93289647    xor ah, ah                                ; 30 e4
    93299648    mov word [bp+00ch], ax                    ; 89 46 0c
    93309649    mov dx, strict word 00029h                ; ba 29 00
    93319650    mov ax, cx                                ; 89 c8
    9332     call 01600h                               ; e8 b3 ac
     9651    call 01600h                               ; e8 71 ab
    93339652    xor ah, ah                                ; 30 e4
    93349653    mov word [bp+00ah], ax                    ; 89 46 0a
    93359654    mov dx, strict word 0002ah                ; ba 2a 00
    93369655    mov ax, cx                                ; 89 c8
    9337     call 01600h                               ; e8 a6 ac
     9656    call 01600h                               ; e8 64 ab
    93389657    xor ah, ah                                ; 30 e4
    93399658    mov word [bp+008h], ax                    ; 89 46 08
     
    93429661    mov byte [bp-006h], ah                    ; 88 66 fa
    93439662    test byte [bp-008h], 080h                 ; f6 46 f8 80
    9344     je short 06977h                           ; 74 0a
     9663    je short 06ab9h                           ; 74 0a
    93459664    mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
    9346     jmp short 06977h                          ; eb 03
     9665    jmp short 06ab9h                          ; eb 03
    93479666    inc byte [bp-006h]                        ; fe 46 fa
    93489667    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    93499668    mov dx, strict word 00026h                ; ba 26 00
    93509669    mov ax, cx                                ; 89 c8
    9351     call 0160eh                               ; e8 8b ac
     9670    call 0160eh                               ; e8 49 ab
    93529671    leave                                     ; c9
    93539672    retn                                      ; c3
    9354     xlatb                                     ; d7
    9355     imul cx, word [di+06ah], 06ad0h           ; 69 4d 6a d0 6a
    9356     popaw                                     ; 61
    9357     imul cx, di, strict byte 0006bh           ; 6b cf 6b
    9358     and bp, word [bp+si-009h]                 ; 23 6a f7
    9359     db  06bh
    9360     db  0bch
    9361     insb                                      ; 6c
    9362 _int15_function_mouse:                       ; 0xf6995 LB 0x386
     9673    sbb word [bp+di-071h], bp                 ; 19 6b 8f
     9674    imul dx, word [bp+si], strict byte 0006ch ; 6b 12 6c
     9675    mov word [0116ch], ax                     ; a3 6c 11
     9676    insw                                      ; 6d
     9677    imul di, word [gs:bx+di], strict byte 0006dh ; 65 6b 39 6d
     9678    db  0feh
     9679    insw                                      ; 6d
     9680_int15_function_mouse:                       ; 0xf6ad7 LB 0x386
    93639681    push si                                   ; 56
    93649682    enter 00006h, 000h                        ; c8 06 00 00
    93659683    mov dx, strict word 0000eh                ; ba 0e 00
    93669684    mov ax, strict word 00040h                ; b8 40 00
    9367     call 0161ch                               ; e8 79 ac
     9685    call 0161ch                               ; e8 37 ab
    93689686    mov cx, ax                                ; 89 c1
    93699687    cmp byte [bp+014h], 007h                  ; 80 7e 14 07
    9370     jbe short 069b6h                          ; 76 0b
     9688    jbe short 06af8h                          ; 76 0b
    93719689    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    93729690    mov byte [bp+015h], 001h                  ; c6 46 15 01
     
    93759693    retn                                      ; c3
    93769694    mov ax, strict word 00065h                ; b8 65 00
    9377     call 068a0h                               ; e8 e4 fe
     9695    call 069e2h                               ; e8 e4 fe
    93789696    and word [bp+01ah], strict byte 0fffeh    ; 83 66 1a fe
    93799697    mov byte [bp+015h], 000h                  ; c6 46 15 00
    93809698    mov al, byte [bp+014h]                    ; 8a 46 14
    93819699    cmp AL, strict byte 007h                  ; 3c 07
    9382     jnbe near 06cffh                          ; 0f 87 32 03
     9700    jnbe near 06e41h                          ; 0f 87 32 03
    93839701    movzx si, al                              ; 0f b6 f0
    93849702    add si, si                                ; 01 f6
    9385     jmp word [cs:si+06985h]                   ; 2e ff a4 85 69
     9703    jmp word [cs:si+06ac7h]                   ; 2e ff a4 c7 6a
    93869704    cmp byte [bp+00fh], 001h                  ; 80 7e 0f 01
    9387     jnbe near 06d0ah                          ; 0f 87 2b 03
     9705    jnbe near 06e4ch                          ; 0f 87 2b 03
    93889706    mov dx, strict word 00027h                ; ba 27 00
    93899707    mov ax, cx                                ; 89 c8
    9390     call 01600h                               ; e8 19 ac
     9708    call 01600h                               ; e8 d7 aa
    93919709    test AL, strict byte 080h                 ; a8 80
    9392     jne short 069f6h                          ; 75 0b
     9710    jne short 06b38h                          ; 75 0b
    93939711    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    93949712    mov byte [bp+015h], 005h                  ; c6 46 15 05
    9395     jmp near 06d12h                           ; e9 1c 03
     9713    jmp near 06e54h                           ; e9 1c 03
    93969714    cmp byte [bp+00fh], 000h                  ; 80 7e 0f 00
    93979715    db  00fh, 094h, 0c0h
     
    93999717    add AL, strict byte 0f4h                  ; 04 f4
    94009718    xor ah, ah                                ; 30 e4
    9401     call 06837h                               ; e8 33 fe
     9719    call 06979h                               ; e8 33 fe
    94029720    test al, al                               ; 84 c0
    9403     jne near 06c98h                           ; 0f 85 8e 02
     9721    jne near 06ddah                           ; 0f 85 8e 02
    94049722    mov dx, ss                                ; 8c d2
    94059723    lea ax, [bp-006h]                         ; 8d 46 fa
    9406     call 06868h                               ; e8 56 fe
     9724    call 069aah                               ; e8 56 fe
    94079725    test al, al                               ; 84 c0
    9408     je near 06d12h                            ; 0f 84 fa 02
     9726    je near 06e54h                            ; 0f 84 fa 02
    94099727    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9410     jne near 06c98h                           ; 0f 85 78 02
    9411     jmp near 06d12h                           ; e9 ef 02
     9728    jne near 06ddah                           ; 0f 85 78 02
     9729    jmp near 06e54h                           ; e9 ef 02
    94129730    mov al, byte [bp+00fh]                    ; 8a 46 0f
    94139731    cmp AL, strict byte 001h                  ; 3c 01
    9414     jc short 06a2eh                           ; 72 04
     9732    jc short 06b70h                           ; 72 04
    94159733    cmp AL, strict byte 008h                  ; 3c 08
    9416     jbe short 06a31h                          ; 76 03
    9417     jmp near 06bc4h                           ; e9 93 01
     9734    jbe short 06b73h                          ; 76 03
     9735    jmp near 06d06h                           ; e9 93 01
    94189736    mov dx, strict word 00027h                ; ba 27 00
    94199737    mov ax, cx                                ; 89 c8
    9420     call 01600h                               ; e8 c7 ab
     9738    call 01600h                               ; e8 85 aa
    94219739    mov ah, byte [bp+00fh]                    ; 8a 66 0f
    94229740    db  0feh, 0cch
     
    94279745    mov dx, strict word 00027h                ; ba 27 00
    94289746    mov ax, cx                                ; 89 c8
    9429     call 0160eh                               ; e8 c1 ab
     9747    call 0160eh                               ; e8 7f aa
    94309748    mov dx, strict word 00026h                ; ba 26 00
    94319749    mov ax, cx                                ; 89 c8
    9432     call 01600h                               ; e8 ab ab
     9750    call 01600h                               ; e8 69 aa
    94339751    and AL, strict byte 0f8h                  ; 24 f8
    94349752    movzx bx, al                              ; 0f b6 d8
    94359753    mov dx, strict word 00026h                ; ba 26 00
    94369754    mov ax, cx                                ; 89 c8
    9437     call 0160eh                               ; e8 ac ab
     9755    call 0160eh                               ; e8 6a aa
    94389756    mov ax, 000ffh                            ; b8 ff 00
    9439     call 06837h                               ; e8 cf fd
     9757    call 06979h                               ; e8 cf fd
    94409758    test al, al                               ; 84 c0
    9441     jne near 06c98h                           ; 0f 85 2a 02
     9759    jne near 06ddah                           ; 0f 85 2a 02
    94429760    mov dx, ss                                ; 8c d2
    94439761    lea ax, [bp-002h]                         ; 8d 46 fe
    9444     call 06868h                               ; e8 f2 fd
     9762    call 069aah                               ; e8 f2 fd
    94459763    mov cl, al                                ; 88 c1
    94469764    cmp byte [bp-002h], 0feh                  ; 80 7e fe fe
    9447     jne short 06a89h                          ; 75 0b
     9765    jne short 06bcbh                          ; 75 0b
    94489766    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    94499767    mov byte [bp+015h], 004h                  ; c6 46 15 04
    9450     jmp near 06d12h                           ; e9 89 02
     9768    jmp near 06e54h                           ; e9 89 02
    94519769    cmp byte [bp-002h], 0fah                  ; 80 7e fe fa
    9452     je short 06a9fh                           ; 74 10
     9770    je short 06be1h                           ; 74 10
    94539771    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    94549772    push ax                                   ; 50
    94559773    push 00899h                               ; 68 99 08
    94569774    push strict byte 00007h                   ; 6a 07
    9457     call 018e9h                               ; e8 4d ae
     9775    call 018e9h                               ; e8 0b ad
    94589776    add sp, strict byte 00006h                ; 83 c4 06
    94599777    test cl, cl                               ; 84 c9
    9460     jne near 06c98h                           ; 0f 85 f3 01
     9778    jne near 06ddah                           ; 0f 85 f3 01
    94619779    mov dx, ss                                ; 8c d2
    94629780    lea ax, [bp-006h]                         ; 8d 46 fa
    9463     call 06868h                               ; e8 bb fd
     9781    call 069aah                               ; e8 bb fd
    94649782    test al, al                               ; 84 c0
    9465     jne near 06c98h                           ; 0f 85 e5 01
     9783    jne near 06ddah                           ; 0f 85 e5 01
    94669784    mov dx, ss                                ; 8c d2
    94679785    lea ax, [bp-004h]                         ; 8d 46 fc
    9468     call 06868h                               ; e8 ad fd
     9786    call 069aah                               ; e8 ad fd
    94699787    test al, al                               ; 84 c0
    9470     jne near 06c98h                           ; 0f 85 d7 01
     9788    jne near 06ddah                           ; 0f 85 d7 01
    94719789    mov al, byte [bp-006h]                    ; 8a 46 fa
    94729790    mov byte [bp+00eh], al                    ; 88 46 0e
    94739791    mov al, byte [bp-004h]                    ; 8a 46 fc
    94749792    mov byte [bp+00fh], al                    ; 88 46 0f
    9475     jmp near 06d12h                           ; e9 42 02
     9793    jmp near 06e54h                           ; e9 42 02
    94769794    mov al, byte [bp+00fh]                    ; 8a 46 0f
    94779795    cmp AL, strict byte 003h                  ; 3c 03
    9478     jc short 06ae7h                           ; 72 10
    9479     jbe short 06b05h                          ; 76 2c
     9796    jc short 06c29h                           ; 72 10
     9797    jbe short 06c47h                          ; 76 2c
    94809798    cmp AL, strict byte 006h                  ; 3c 06
    9481     je short 06b17h                           ; 74 3a
     9799    je short 06c59h                           ; 74 3a
    94829800    cmp AL, strict byte 005h                  ; 3c 05
    9483     je short 06b11h                           ; 74 30
     9801    je short 06c53h                           ; 74 30
    94849802    cmp AL, strict byte 004h                  ; 3c 04
    9485     je short 06b0bh                           ; 74 26
    9486     jmp short 06b1dh                          ; eb 36
     9803    je short 06c4dh                           ; 74 26
     9804    jmp short 06c5fh                          ; eb 36
    94879805    cmp AL, strict byte 002h                  ; 3c 02
    9488     je short 06affh                           ; 74 14
     9806    je short 06c41h                           ; 74 14
    94899807    cmp AL, strict byte 001h                  ; 3c 01
    9490     je short 06af9h                           ; 74 0a
     9808    je short 06c3bh                           ; 74 0a
    94919809    test al, al                               ; 84 c0
    9492     jne short 06b1dh                          ; 75 2a
     9810    jne short 06c5fh                          ; 75 2a
    94939811    mov byte [bp-006h], 00ah                  ; c6 46 fa 0a
    9494     jmp short 06b21h                          ; eb 28
     9812    jmp short 06c63h                          ; eb 28
    94959813    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    9496     jmp short 06b21h                          ; eb 22
     9814    jmp short 06c63h                          ; eb 22
    94979815    mov byte [bp-006h], 028h                  ; c6 46 fa 28
    9498     jmp short 06b21h                          ; eb 1c
     9816    jmp short 06c63h                          ; eb 1c
    94999817    mov byte [bp-006h], 03ch                  ; c6 46 fa 3c
    9500     jmp short 06b21h                          ; eb 16
     9818    jmp short 06c63h                          ; eb 16
    95019819    mov byte [bp-006h], 050h                  ; c6 46 fa 50
    9502     jmp short 06b21h                          ; eb 10
     9820    jmp short 06c63h                          ; eb 10
    95039821    mov byte [bp-006h], 064h                  ; c6 46 fa 64
    9504     jmp short 06b21h                          ; eb 0a
     9822    jmp short 06c63h                          ; eb 0a
    95059823    mov byte [bp-006h], 0c8h                  ; c6 46 fa c8
    9506     jmp short 06b21h                          ; eb 04
     9824    jmp short 06c63h                          ; eb 04
    95079825    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    95089826    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    9509     jbe short 06b56h                          ; 76 2f
     9827    jbe short 06c98h                          ; 76 2f
    95109828    mov ax, 000f3h                            ; b8 f3 00
    9511     call 06837h                               ; e8 0a fd
     9829    call 06979h                               ; e8 0a fd
    95129830    test al, al                               ; 84 c0
    9513     jne short 06b4bh                          ; 75 1a
     9831    jne short 06c8dh                          ; 75 1a
    95149832    mov dx, ss                                ; 8c d2
    95159833    lea ax, [bp-004h]                         ; 8d 46 fc
    9516     call 06868h                               ; e8 2f fd
     9834    call 069aah                               ; e8 2f fd
    95179835    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    9518     call 06837h                               ; e8 f7 fc
     9836    call 06979h                               ; e8 f7 fc
    95199837    mov dx, ss                                ; 8c d2
    95209838    lea ax, [bp-004h]                         ; 8d 46 fc
    9521     call 06868h                               ; e8 20 fd
    9522     jmp near 06d12h                           ; e9 c7 01
     9839    call 069aah                               ; e8 20 fd
     9840    jmp near 06e54h                           ; e9 c7 01
    95239841    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95249842    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9525     jmp near 06d12h                           ; e9 bc 01
     9843    jmp near 06e54h                           ; e9 bc 01
    95269844    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95279845    mov byte [bp+015h], 002h                  ; c6 46 15 02
    9528     jmp near 06d12h                           ; e9 b1 01
     9846    jmp near 06e54h                           ; e9 b1 01
    95299847    cmp byte [bp+00fh], 004h                  ; 80 7e 0f 04
    9530     jnc short 06bc4h                          ; 73 5d
     9848    jnc short 06d06h                          ; 73 5d
    95319849    mov ax, 000e8h                            ; b8 e8 00
    9532     call 06837h                               ; e8 ca fc
     9850    call 06979h                               ; e8 ca fc
    95339851    test al, al                               ; 84 c0
    9534     jne short 06bb9h                          ; 75 48
     9852    jne short 06cfbh                          ; 75 48
    95359853    mov dx, ss                                ; 8c d2
    95369854    lea ax, [bp-006h]                         ; 8d 46 fa
    9537     call 06868h                               ; e8 ef fc
     9855    call 069aah                               ; e8 ef fc
    95389856    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9539     je short 06b8fh                           ; 74 10
     9857    je short 06cd1h                           ; 74 10
    95409858    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    95419859    push ax                                   ; 50
    95429860    push 008c4h                               ; 68 c4 08
    95439861    push strict byte 00007h                   ; 6a 07
    9544     call 018e9h                               ; e8 5d ad
     9862    call 018e9h                               ; e8 1b ac
    95459863    add sp, strict byte 00006h                ; 83 c4 06
    95469864    movzx ax, byte [bp+00fh]                  ; 0f b6 46 0f
    9547     call 06837h                               ; e8 a1 fc
     9865    call 06979h                               ; e8 a1 fc
    95489866    mov dx, ss                                ; 8c d2
    95499867    lea ax, [bp-006h]                         ; 8d 46 fa
    9550     call 06868h                               ; e8 ca fc
     9868    call 069aah                               ; e8 ca fc
    95519869    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9552     je near 06d12h                            ; 0f 84 6c 01
     9870    je near 06e54h                            ; 0f 84 6c 01
    95539871    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    95549872    push ax                                   ; 50
    95559873    push 008c4h                               ; 68 c4 08
    95569874    push strict byte 00007h                   ; 6a 07
    9557     call 018e9h                               ; e8 36 ad
     9875    call 018e9h                               ; e8 f4 ab
    95589876    add sp, strict byte 00006h                ; 83 c4 06
    9559     jmp near 06d12h                           ; e9 59 01
     9877    jmp near 06e54h                           ; e9 59 01
    95609878    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95619879    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9562     jmp near 06d12h                           ; e9 4e 01
     9880    jmp near 06e54h                           ; e9 4e 01
    95639881    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95649882    mov byte [bp+015h], 002h                  ; c6 46 15 02
    9565     jmp near 06d12h                           ; e9 43 01
     9883    jmp near 06e54h                           ; e9 43 01
    95669884    mov ax, 000f2h                            ; b8 f2 00
    9567     call 06837h                               ; e8 62 fc
     9885    call 06979h                               ; e8 62 fc
    95689886    test al, al                               ; 84 c0
    9569     jne short 06bech                          ; 75 13
     9887    jne short 06d2eh                          ; 75 13
    95709888    mov dx, ss                                ; 8c d2
    95719889    lea ax, [bp-006h]                         ; 8d 46 fa
    9572     call 06868h                               ; e8 87 fc
     9890    call 069aah                               ; e8 87 fc
    95739891    mov dx, ss                                ; 8c d2
    95749892    lea ax, [bp-004h]                         ; 8d 46 fc
    9575     call 06868h                               ; e8 7f fc
    9576     jmp near 06ac7h                           ; e9 db fe
     9893    call 069aah                               ; e8 7f fc
     9894    jmp near 06c09h                           ; e9 db fe
    95779895    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95789896    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9579     jmp near 06d12h                           ; e9 1b 01
     9897    jmp near 06e54h                           ; e9 1b 01
    95809898    mov al, byte [bp+00fh]                    ; 8a 46 0f
    95819899    test al, al                               ; 84 c0
    9582     jbe short 06c05h                          ; 76 07
     9900    jbe short 06d47h                          ; 76 07
    95839901    cmp AL, strict byte 002h                  ; 3c 02
    9584     jbe short 06c6eh                          ; 76 6c
    9585     jmp near 06ca2h                           ; e9 9d 00
     9902    jbe short 06db0h                          ; 76 6c
     9903    jmp near 06de4h                           ; e9 9d 00
    95869904    mov ax, 000e9h                            ; b8 e9 00
    9587     call 06837h                               ; e8 2c fc
     9905    call 06979h                               ; e8 2c fc
    95889906    test al, al                               ; 84 c0
    9589     jne near 06c98h                           ; 0f 85 87 00
     9907    jne near 06ddah                           ; 0f 85 87 00
    95909908    mov dx, ss                                ; 8c d2
    95919909    lea ax, [bp-006h]                         ; 8d 46 fa
    9592     call 06868h                               ; e8 4f fc
     9910    call 069aah                               ; e8 4f fc
    95939911    mov cl, al                                ; 88 c1
    95949912    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9595     je short 06c31h                           ; 74 10
     9913    je short 06d73h                           ; 74 10
    95969914    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    95979915    push ax                                   ; 50
    95989916    push 008c4h                               ; 68 c4 08
    95999917    push strict byte 00007h                   ; 6a 07
    9600     call 018e9h                               ; e8 bb ac
     9918    call 018e9h                               ; e8 79 ab
    96019919    add sp, strict byte 00006h                ; 83 c4 06
    96029920    test cl, cl                               ; 84 c9
    9603     jne short 06c98h                          ; 75 63
     9921    jne short 06ddah                          ; 75 63
    96049922    mov dx, ss                                ; 8c d2
    96059923    lea ax, [bp-006h]                         ; 8d 46 fa
    9606     call 06868h                               ; e8 2b fc
     9924    call 069aah                               ; e8 2b fc
    96079925    test al, al                               ; 84 c0
    9608     jne short 06c98h                          ; 75 57
     9926    jne short 06ddah                          ; 75 57
    96099927    mov dx, ss                                ; 8c d2
    96109928    lea ax, [bp-004h]                         ; 8d 46 fc
    9611     call 06868h                               ; e8 1f fc
     9929    call 069aah                               ; e8 1f fc
    96129930    test al, al                               ; 84 c0
    9613     jne short 06c98h                          ; 75 4b
     9931    jne short 06ddah                          ; 75 4b
    96149932    mov dx, ss                                ; 8c d2
    96159933    lea ax, [bp-002h]                         ; 8d 46 fe
    9616     call 06868h                               ; e8 13 fc
     9934    call 069aah                               ; e8 13 fc
    96179935    test al, al                               ; 84 c0
    9618     jne short 06c98h                          ; 75 3f
     9936    jne short 06ddah                          ; 75 3f
    96199937    mov al, byte [bp-006h]                    ; 8a 46 fa
    96209938    mov byte [bp+00eh], al                    ; 88 46 0e
     
    96239941    mov al, byte [bp-002h]                    ; 8a 46 fe
    96249942    mov byte [bp+010h], al                    ; 88 46 10
    9625     jmp near 06d12h                           ; e9 a4 00
     9943    jmp near 06e54h                           ; e9 a4 00
    96269944    cmp AL, strict byte 001h                  ; 3c 01
    9627     jne short 06c77h                          ; 75 05
     9945    jne short 06db9h                          ; 75 05
    96289946    mov ax, 000e6h                            ; b8 e6 00
    9629     jmp short 06c7ah                          ; eb 03
     9947    jmp short 06dbch                          ; eb 03
    96309948    mov ax, 000e7h                            ; b8 e7 00
    9631     call 06837h                               ; e8 ba fb
     9949    call 06979h                               ; e8 ba fb
    96329950    mov cl, al                                ; 88 c1
    96339951    test cl, cl                               ; 84 c9
    9634     jne short 06c92h                          ; 75 0f
     9952    jne short 06dd4h                          ; 75 0f
    96359953    mov dx, ss                                ; 8c d2
    96369954    lea ax, [bp-006h]                         ; 8d 46 fa
    9637     call 06868h                               ; e8 dd fb
     9955    call 069aah                               ; e8 dd fb
    96389956    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    96399957    db  00fh, 095h, 0c1h
    96409958    ; setne cl                                  ; 0f 95 c1
    96419959    test cl, cl                               ; 84 c9
    9642     je near 06d12h                            ; 0f 84 7a 00
     9960    je near 06e54h                            ; 0f 84 7a 00
    96439961    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    96449962    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9645     jmp short 06d12h                          ; eb 70
     9963    jmp short 06e54h                          ; eb 70
    96469964    movzx ax, byte [bp+00fh]                  ; 0f b6 46 0f
    96479965    push ax                                   ; 50
    96489966    push 008f0h                               ; 68 f0 08
    96499967    push strict byte 00007h                   ; 6a 07
    9650     call 018e9h                               ; e8 3a ac
     9968    call 018e9h                               ; e8 f8 aa
    96519969    add sp, strict byte 00006h                ; 83 c4 06
    96529970    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    96539971    mov byte [bp+015h], 001h                  ; c6 46 15 01
    9654     jmp short 06d12h                          ; eb 56
     9972    jmp short 06e54h                          ; eb 56
    96559973    mov si, word [bp+00eh]                    ; 8b 76 0e
    96569974    mov bx, si                                ; 89 f3
    96579975    mov dx, strict word 00022h                ; ba 22 00
    96589976    mov ax, cx                                ; 89 c8
    9659     call 0162ah                               ; e8 61 a9
     9977    call 0162ah                               ; e8 1f a8
    96609978    mov bx, word [bp+016h]                    ; 8b 5e 16
    96619979    mov dx, strict word 00024h                ; ba 24 00
    96629980    mov ax, cx                                ; 89 c8
    9663     call 0162ah                               ; e8 56 a9
     9981    call 0162ah                               ; e8 14 a8
    96649982    mov dx, strict word 00027h                ; ba 27 00
    96659983    mov ax, cx                                ; 89 c8
    9666     call 01600h                               ; e8 24 a9
     9984    call 01600h                               ; e8 e2 a7
    96679985    mov ah, al                                ; 88 c4
    96689986    test si, si                               ; 85 f6
    9669     jne short 06cf0h                          ; 75 0e
     9987    jne short 06e32h                          ; 75 0e
    96709988    cmp word [bp+016h], strict byte 00000h    ; 83 7e 16 00
    9671     jne short 06cf0h                          ; 75 08
     9989    jne short 06e32h                          ; 75 08
    96729990    test AL, strict byte 080h                 ; a8 80
    9673     je short 06cf2h                           ; 74 06
     9991    je short 06e34h                           ; 74 06
    96749992    and AL, strict byte 07fh                  ; 24 7f
    9675     jmp short 06cf2h                          ; eb 02
     9993    jmp short 06e34h                          ; eb 02
    96769994    or AL, strict byte 080h                   ; 0c 80
    96779995    movzx bx, al                              ; 0f b6 d8
    96789996    mov dx, strict word 00027h                ; ba 27 00
    96799997    mov ax, cx                                ; 89 c8
    9680     call 0160eh                               ; e8 11 a9
    9681     jmp short 06d12h                          ; eb 13
     9998    call 0160eh                               ; e8 cf a7
     9999    jmp short 06e54h                          ; eb 13
    968210000    push 0090ah                               ; 68 0a 09
    968310001    push strict byte 00007h                   ; 6a 07
    9684     call 018e9h                               ; e8 e2 ab
     10002    call 018e9h                               ; e8 a0 aa
    968510003    add sp, strict byte 00004h                ; 83 c4 04
    968610004    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    968710005    mov byte [bp+015h], 001h                  ; c6 46 15 01
    968810006    mov ax, strict word 00047h                ; b8 47 00
    9689     call 068a0h                               ; e8 88 fb
     10007    call 069e2h                               ; e8 88 fb
    969010008    leave                                     ; c9
    969110009    pop si                                    ; 5e
    969210010    retn                                      ; c3
    9693 _int17_function:                             ; 0xf6d1b LB 0xb1
     10011_int17_function:                             ; 0xf6e5d LB 0xb1
    969410012    push si                                   ; 56
    969510013    enter 00002h, 000h                        ; c8 02 00 00
     
    969910017    add dx, strict byte 00008h                ; 83 c2 08
    970010018    mov ax, strict word 00040h                ; b8 40 00
    9701     call 0161ch                               ; e8 ed a8
     10019    call 0161ch                               ; e8 ab a7
    970210020    mov bx, ax                                ; 89 c3
    970310021    mov si, ax                                ; 89 c6
    970410022    cmp byte [bp+015h], 003h                  ; 80 7e 15 03
    9705     jnc near 06dc5h                           ; 0f 83 8a 00
     10023    jnc near 06f07h                           ; 0f 83 8a 00
    970610024    mov ax, word [bp+010h]                    ; 8b 46 10
    970710025    cmp ax, strict word 00003h                ; 3d 03 00
    9708     jnc near 06dc5h                           ; 0f 83 80 00
     10026    jnc near 06f07h                           ; 0f 83 80 00
    970910027    test bx, bx                               ; 85 db
    9710     jbe near 06dc5h                           ; 0f 86 7a 00
     10028    jbe near 06f07h                           ; 0f 86 7a 00
    971110029    mov dx, ax                                ; 89 c2
    971210030    add dx, strict byte 00078h                ; 83 c2 78
    971310031    mov ax, strict word 00040h                ; b8 40 00
    9714     call 01600h                               ; e8 aa a8
     10032    call 01600h                               ; e8 68 a7
    971510033    movzx cx, al                              ; 0f b6 c8
    971610034    sal cx, 008h                              ; c1 e1 08
    971710035    cmp byte [bp+015h], 000h                  ; 80 7e 15 00
    9718     jne short 06d8fh                          ; 75 2d
     10036    jne short 06ed1h                          ; 75 2d
    971910037    mov al, byte [bp+014h]                    ; 8a 46 14
    972010038    mov dx, bx                                ; 89 da
     
    973610054    ; sub ah, ah                                ; 2a e4
    973710055    test AL, strict byte 040h                 ; a8 40
    9738     je short 06d8fh                           ; 74 07
     10056    je short 06ed1h                           ; 74 07
    973910057    test cx, cx                               ; 85 c9
    9740     je short 06d8fh                           ; 74 03
     10058    je short 06ed1h                           ; 74 03
    974110059    dec cx                                    ; 49
    9742     jmp short 06d7eh                          ; eb ef
     10060    jmp short 06ec0h                          ; eb ef
    974310061    cmp byte [bp+015h], 001h                  ; 80 7e 15 01
    9744     jne short 06dabh                          ; 75 16
     10062    jne short 06eedh                          ; 75 16
    974510063    lea dx, [si+002h]                         ; 8d 54 02
    974610064    in AL, DX                                 ; ec
     
    976110079    mov byte [bp+015h], al                    ; 88 46 15
    976210080    test cx, cx                               ; 85 c9
    9763     jne short 06dbeh                          ; 75 04
     10081    jne short 06f00h                          ; 75 04
    976410082    or byte [bp+015h], 001h                   ; 80 4e 15 01
    976510083    and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     
    977110089    pop si                                    ; 5e
    977210090    retn                                      ; c3
    9773 wait_:                                       ; 0xf6dcc LB 0xad
     10091wait_:                                       ; 0xf6f0e LB 0xad
    977410092    push bx                                   ; 53
    977510093    push cx                                   ; 51
     
    978710105    mov dx, 0046ch                            ; ba 6c 04
    978810106    xor ax, ax                                ; 31 c0
    9789     call 01638h                               ; e8 4b a8
     10107    call 01638h                               ; e8 09 a7
    979010108    mov word [bp-006h], ax                    ; 89 46 fa
    979110109    mov bx, dx                                ; 89 d3
     
    979310111    mov dx, 0046ch                            ; ba 6c 04
    979410112    xor ax, ax                                ; 31 c0
    9795     call 01638h                               ; e8 3d a8
     10113    call 01638h                               ; e8 fb a6
    979610114    mov word [bp-00ah], ax                    ; 89 46 f6
    979710115    mov di, dx                                ; 89 d7
    979810116    cmp dx, bx                                ; 39 da
    9799     jnbe short 06e0bh                         ; 77 07
    9800     jne short 06e12h                          ; 75 0c
     10117    jnbe short 06f4dh                         ; 77 07
     10118    jne short 06f54h                          ; 75 0c
    980110119    cmp ax, word [bp-006h]                    ; 3b 46 fa
    9802     jbe short 06e12h                          ; 76 07
     10120    jbe short 06f54h                          ; 76 07
    980310121    sub ax, word [bp-006h]                    ; 2b 46 fa
    980410122    sbb dx, bx                                ; 19 da
    9805     jmp short 06e1dh                          ; eb 0b
     10123    jmp short 06f5fh                          ; eb 0b
    980610124    cmp dx, bx                                ; 39 da
    9807     jc short 06e1dh                           ; 72 07
    9808     jne short 06e21h                          ; 75 09
     10125    jc short 06f5fh                           ; 72 07
     10126    jne short 06f63h                          ; 75 09
    980910127    cmp ax, word [bp-006h]                    ; 3b 46 fa
    9810     jnc short 06e21h                          ; 73 04
     10128    jnc short 06f63h                          ; 73 04
    981110129    sub si, ax                                ; 29 c6
    981210130    sbb cx, dx                                ; 19 d1
     
    981610134    mov ax, 00100h                            ; b8 00 01
    981710135    int 016h                                  ; cd 16
    9818     je near 06e37h                            ; 0f 84 05 00
     10136    je near 06f79h                            ; 0f 84 05 00
    981910137    mov AL, strict byte 001h                  ; b0 01
    9820     jmp near 06e39h                           ; e9 02 00
     10138    jmp near 06f7bh                           ; e9 02 00
    982110139    db  032h, 0c0h
    982210140    ; xor al, al                                ; 32 c0
    982310141    test al, al                               ; 84 c0
    9824     je short 06e61h                           ; 74 24
     10142    je short 06fa3h                           ; 74 24
    982510143    db  033h, 0c0h
    982610144    ; xor ax, ax                                ; 33 c0
     
    983310151    push 0092ch                               ; 68 2c 09
    983410152    push strict byte 00004h                   ; 6a 04
    9835     call 018e9h                               ; e8 95 aa
     10153    call 018e9h                               ; e8 53 a9
    983610154    add sp, strict byte 00006h                ; 83 c4 06
    983710155    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    9838     je short 06e61h                           ; 74 04
     10156    je short 06fa3h                           ; 74 04
    983910157    mov al, dl                                ; 88 d0
    9840     jmp short 06e73h                          ; eb 12
     10158    jmp short 06fb5h                          ; eb 12
    984110159    test cx, cx                               ; 85 c9
    9842     jnle short 06df2h                         ; 7f 8d
    9843     jne short 06e6bh                          ; 75 04
     10160    jnle short 06f34h                         ; 7f 8d
     10161    jne short 06fadh                          ; 75 04
    984410162    test si, si                               ; 85 f6
    9845     jnbe short 06df2h                         ; 77 87
     10163    jnbe short 06f34h                         ; 77 87
    984610164    mov ax, word [bp-008h]                    ; 8b 46 f8
    984710165    push ax                                   ; 50
     
    985410172    pop bx                                    ; 5b
    985510173    retn                                      ; c3
    9856 read_logo_byte_:                             ; 0xf6e79 LB 0x13
     10174read_logo_byte_:                             ; 0xf6fbb LB 0x13
    985710175    push dx                                   ; 52
    985810176    push bp                                   ; 55
     
    986810186    pop dx                                    ; 5a
    986910187    retn                                      ; c3
    9870 read_logo_word_:                             ; 0xf6e8c LB 0x11
     10188read_logo_word_:                             ; 0xf6fce LB 0x11
    987110189    push dx                                   ; 52
    987210190    push bp                                   ; 55
     
    988010198    pop dx                                    ; 5a
    988110199    retn                                      ; c3
    9882 print_detected_harddisks_:                   ; 0xf6e9d LB 0x12c
     10200print_detected_harddisks_:                   ; 0xf6fdf LB 0x12c
    988310201    push bx                                   ; 53
    988410202    push cx                                   ; 51
     
    988910207    mov dx, strict word 0000eh                ; ba 0e 00
    989010208    mov ax, strict word 00040h                ; b8 40 00
    9891     call 0161ch                               ; e8 6d a7
     10209    call 0161ch                               ; e8 2b a6
    989210210    mov si, ax                                ; 89 c6
    989310211    mov byte [bp-002h], 000h                  ; c6 46 fe 00
     
    989510213    xor ch, ch                                ; 30 ed
    989610214    mov dx, 002c0h                            ; ba c0 02
    9897     call 01600h                               ; e8 41 a7
     10215    call 01600h                               ; e8 ff a5
    989810216    mov byte [bp-004h], al                    ; 88 46 fc
    989910217    xor bl, bl                                ; 30 db
    990010218    cmp bl, byte [bp-004h]                    ; 3a 5e fc
    9901     jnc near 06f9eh                           ; 0f 83 d3 00
     10219    jnc near 070e0h                           ; 0f 83 d3 00
    990210220    movzx dx, bl                              ; 0f b6 d3
    990310221    add dx, 002c1h                            ; 81 c2 c1 02
    990410222    mov ax, si                                ; 89 f0
    9905     call 01600h                               ; e8 29 a7
     10223    call 01600h                               ; e8 e7 a5
    990610224    mov bh, al                                ; 88 c7
    990710225    cmp AL, strict byte 00ch                  ; 3c 0c
    9908     jc short 06f01h                           ; 72 24
     10226    jc short 07043h                           ; 72 24
    990910227    test cl, cl                               ; 84 c9
    9910     jne short 06eeeh                          ; 75 0d
     10228    jne short 07030h                          ; 75 0d
    991110229    push 0093dh                               ; 68 3d 09
    991210230    push strict byte 00002h                   ; 6a 02
    9913     call 018e9h                               ; e8 00 aa
     10231    call 018e9h                               ; e8 be a8
    991410232    add sp, strict byte 00004h                ; 83 c4 04
    991510233    mov CL, strict byte 001h                  ; b1 01
     
    991910237    push 00951h                               ; 68 51 09
    992010238    push strict byte 00002h                   ; 6a 02
    9921     call 018e9h                               ; e8 ee a9
     10239    call 018e9h                               ; e8 ac a8
    992210240    add sp, strict byte 00006h                ; 83 c4 06
    9923     jmp near 06f99h                           ; e9 98 00
     10241    jmp near 070dbh                           ; e9 98 00
    992410242    cmp AL, strict byte 008h                  ; 3c 08
    9925     jc short 06f18h                           ; 72 13
     10243    jc short 0705ah                           ; 72 13
    992610244    test ch, ch                               ; 84 ed
    9927     jne short 06f16h                          ; 75 0d
     10245    jne short 07058h                          ; 75 0d
    992810246    push 00964h                               ; 68 64 09
    992910247    push strict byte 00002h                   ; 6a 02
    9930     call 018e9h                               ; e8 d8 a9
     10248    call 018e9h                               ; e8 96 a8
    993110249    add sp, strict byte 00004h                ; 83 c4 04
    993210250    mov CH, strict byte 001h                  ; b5 01
    9933     jmp short 06eeeh                          ; eb d6
     10251    jmp short 07030h                          ; eb d6
    993410252    cmp AL, strict byte 004h                  ; 3c 04
    9935     jnc short 06f33h                          ; 73 17
     10253    jnc short 07075h                          ; 73 17
    993610254    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    9937     jne short 06f33h                          ; 75 11
     10255    jne short 07075h                          ; 75 11
    993810256    push 00978h                               ; 68 78 09
    993910257    push strict byte 00002h                   ; 6a 02
    9940     call 018e9h                               ; e8 bf a9
     10258    call 018e9h                               ; e8 7d a8
    994110259    add sp, strict byte 00004h                ; 83 c4 04
    994210260    mov byte [bp-002h], 001h                  ; c6 46 fe 01
    9943     jmp short 06f49h                          ; eb 16
     10261    jmp short 0708bh                          ; eb 16
    994410262    cmp bh, 004h                              ; 80 ff 04
    9945     jc short 06f49h                           ; 72 11
     10263    jc short 0708bh                           ; 72 11
    994610264    test cl, cl                               ; 84 c9
    9947     jne short 06f49h                          ; 75 0d
     10265    jne short 0708bh                          ; 75 0d
    994810266    push 0093dh                               ; 68 3d 09
    994910267    push strict byte 00002h                   ; 6a 02
    9950     call 018e9h                               ; e8 a5 a9
     10268    call 018e9h                               ; e8 63 a8
    995110269    add sp, strict byte 00004h                ; 83 c4 04
    995210270    mov CL, strict byte 001h                  ; b1 01
     
    995610274    push 00989h                               ; 68 89 09
    995710275    push strict byte 00002h                   ; 6a 02
    9958     call 018e9h                               ; e8 93 a9
     10276    call 018e9h                               ; e8 51 a8
    995910277    add sp, strict byte 00006h                ; 83 c4 06
    996010278    cmp bh, 004h                              ; 80 ff 04
    9961     jc short 06f61h                           ; 72 03
     10279    jc short 070a3h                           ; 72 03
    996210280    sub bh, 004h                              ; 80 ef 04
    996310281    movzx ax, bh                              ; 0f b6 c7
     
    996710285    sar ax, 1                                 ; d1 f8
    996810286    test ax, ax                               ; 85 c0
    9969     je short 06f72h                           ; 74 05
     10287    je short 070b4h                           ; 74 05
    997010288    push 00993h                               ; 68 93 09
    9971     jmp short 06f75h                          ; eb 03
     10289    jmp short 070b7h                          ; eb 03
    997210290    push 0099eh                               ; 68 9e 09
    997310291    push strict byte 00002h                   ; 6a 02
    9974     call 018e9h                               ; e8 6f a9
     10292    call 018e9h                               ; e8 2d a8
    997510293    add sp, strict byte 00004h                ; 83 c4 04
    997610294    movzx ax, bh                              ; 0f b6 c7
     
    997910297    idiv di                                   ; f7 ff
    998010298    test dx, dx                               ; 85 d2
    9981     je short 06f8fh                           ; 74 05
     10299    je short 070d1h                           ; 74 05
    998210300    push 009a7h                               ; 68 a7 09
    9983     jmp short 06f92h                          ; eb 03
     10301    jmp short 070d4h                          ; eb 03
    998410302    push 009adh                               ; 68 ad 09
    998510303    push di                                   ; 57
    9986     call 018e9h                               ; e8 53 a9
     10304    call 018e9h                               ; e8 11 a8
    998710305    add sp, strict byte 00004h                ; 83 c4 04
    998810306    db  0feh, 0c3h
    998910307    ; inc bl                                    ; fe c3
    9990     jmp near 06ec4h                           ; e9 26 ff
     10308    jmp near 07006h                           ; e9 26 ff
    999110309    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    9992     jne short 06fb7h                          ; 75 13
     10310    jne short 070f9h                          ; 75 13
    999310311    test cl, cl                               ; 84 c9
    9994     jne short 06fb7h                          ; 75 0f
     10312    jne short 070f9h                          ; 75 0f
    999510313    test ch, ch                               ; 84 ed
    9996     jne short 06fb7h                          ; 75 0b
     10314    jne short 070f9h                          ; 75 0b
    999710315    push 009b4h                               ; 68 b4 09
    999810316    push strict byte 00002h                   ; 6a 02
    9999     call 018e9h                               ; e8 35 a9
     10317    call 018e9h                               ; e8 f3 a7
    1000010318    add sp, strict byte 00004h                ; 83 c4 04
    1000110319    push 009c8h                               ; 68 c8 09
    1000210320    push strict byte 00002h                   ; 6a 02
    10003     call 018e9h                               ; e8 2a a9
     10321    call 018e9h                               ; e8 e8 a7
    1000410322    add sp, strict byte 00004h                ; 83 c4 04
    1000510323    leave                                     ; c9
     
    1001010328    pop bx                                    ; 5b
    1001110329    retn                                      ; c3
    10012 get_boot_drive_:                             ; 0xf6fc9 LB 0x25
     10330get_boot_drive_:                             ; 0xf710b LB 0x25
    1001310331    push bx                                   ; 53
    1001410332    push dx                                   ; 52
     
    1001810336    mov dx, strict word 0000eh                ; ba 0e 00
    1001910337    mov ax, strict word 00040h                ; b8 40 00
    10020     call 0161ch                               ; e8 43 a6
     10338    call 0161ch                               ; e8 01 a5
    1002110339    mov dx, 002c0h                            ; ba c0 02
    10022     call 01600h                               ; e8 21 a6
     10340    call 01600h                               ; e8 df a4
    1002310341    sub bl, 002h                              ; 80 eb 02
    1002410342    cmp bl, al                                ; 38 c3
    10025     jc short 06fe8h                           ; 72 02
     10343    jc short 0712ah                           ; 72 02
    1002610344    mov BL, strict byte 0ffh                  ; b3 ff
    1002710345    mov al, bl                                ; 88 d8
     
    1003010348    pop bx                                    ; 5b
    1003110349    retn                                      ; c3
    10032 show_logo_:                                  ; 0xf6fee LB 0x21f
     10350show_logo_:                                  ; 0xf7130 LB 0x21f
    1003310351    push bx                                   ; 53
    1003410352    push cx                                   ; 51
     
    1003910357    mov dx, strict word 0000eh                ; ba 0e 00
    1004010358    mov ax, strict word 00040h                ; b8 40 00
    10041     call 0161ch                               ; e8 1c a6
     10359    call 0161ch                               ; e8 da a4
    1004210360    mov si, ax                                ; 89 c6
    1004310361    xor cl, cl                                ; 30 c9
     
    1005010368    out strict byte 040h, AL                  ; e6 40
    1005110369    movzx ax, dl                              ; 0f b6 c2
    10052     call 06e8ch                               ; e8 74 fe
     10370    call 06fceh                               ; e8 74 fe
    1005310371    cmp ax, 066bbh                            ; 3d bb 66
    10054     jne near 070f0h                           ; 0f 85 d1 00
     10372    jne near 07232h                           ; 0f 85 d1 00
    1005510373    push SS                                   ; 16
    1005610374    pop ES                                    ; 07
     
    1006010378    mov word [es:di], bx                      ; 26 89 1d
    1006110379    cmp ax, strict word 0004fh                ; 3d 4f 00
    10062     jne near 070f0h                           ; 0f 85 bd 00
     10380    jne near 07232h                           ; 0f 85 bd 00
    1006310381    mov al, dl                                ; 88 d0
    1006410382    add AL, strict byte 004h                  ; 04 04
    1006510383    xor ah, ah                                ; 30 e4
    10066     call 06e79h                               ; e8 3d fe
     10384    call 06fbbh                               ; e8 3d fe
    1006710385    mov ch, al                                ; 88 c5
    1006810386    mov byte [bp-002h], al                    ; 88 46 fe
     
    1007010388    add AL, strict byte 005h                  ; 04 05
    1007110389    xor ah, ah                                ; 30 e4
    10072     call 06e79h                               ; e8 2f fe
     10390    call 06fbbh                               ; e8 2f fe
    1007310391    mov dh, al                                ; 88 c6
    1007410392    mov byte [bp-006h], al                    ; 88 46 fa
     
    1007610394    add AL, strict byte 002h                  ; 04 02
    1007710395    xor ah, ah                                ; 30 e4
    10078     call 06e8ch                               ; e8 34 fe
     10396    call 06fceh                               ; e8 34 fe
    1007910397    mov bx, ax                                ; 89 c3
    1008010398    mov word [bp-00ah], ax                    ; 89 46 f6
     
    1008210400    add AL, strict byte 006h                  ; 04 06
    1008310401    xor ah, ah                                ; 30 e4
    10084     call 06e79h                               ; e8 13 fe
     10402    call 06fbbh                               ; e8 13 fe
    1008510403    mov byte [bp-008h], al                    ; 88 46 f8
    1008610404    test ch, ch                               ; 84 ed
    10087     jne short 07077h                          ; 75 0a
     10405    jne short 071b9h                          ; 75 0a
    1008810406    test dh, dh                               ; 84 f6
    10089     jne short 07077h                          ; 75 06
     10407    jne short 071b9h                          ; 75 06
    1009010408    test bx, bx                               ; 85 db
    10091     je near 070f0h                            ; 0f 84 79 00
     10409    je near 07232h                            ; 0f 84 79 00
    1009210410    mov bx, 00142h                            ; bb 42 01
    1009310411    mov ax, 04f02h                            ; b8 02 4f
    1009410412    int 010h                                  ; cd 10
    1009510413    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    10096     je short 070a8h                           ; 74 23
     10414    je short 071eah                           ; 74 23
    1009710415    xor bx, bx                                ; 31 db
    10098     jmp short 0708fh                          ; eb 06
     10416    jmp short 071d1h                          ; eb 06
    1009910417    inc bx                                    ; 43
    1010010418    cmp bx, strict byte 00010h                ; 83 fb 10
    10101     jnbe short 070afh                         ; 77 20
     10419    jnbe short 071f1h                         ; 77 20
    1010210420    mov ax, bx                                ; 89 d8
    1010310421    or ah, 002h                               ; 80 cc 02
     
    1010610424    xor dx, dx                                ; 31 d2
    1010710425    mov ax, strict word 00001h                ; b8 01 00
    10108     call 06dcch                               ; e8 2c fd
     10426    call 06f0eh                               ; e8 2c fd
    1010910427    cmp AL, strict byte 086h                  ; 3c 86
    10110     jne short 07089h                          ; 75 e5
     10428    jne short 071cbh                          ; 75 e5
    1011110429    mov CL, strict byte 001h                  ; b1 01
    10112     jmp short 070afh                          ; eb 07
     10430    jmp short 071f1h                          ; eb 07
    1011310431    mov ax, 00210h                            ; b8 10 02
    1011410432    mov dx, 003b8h                            ; ba b8 03
    1011510433    out DX, ax                                ; ef
    1011610434    test cl, cl                               ; 84 c9
    10117     jne short 070c5h                          ; 75 12
     10435    jne short 07207h                          ; 75 12
    1011810436    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1011910437    shr ax, 004h                              ; c1 e8 04
    1012010438    mov dx, strict word 00001h                ; ba 01 00
    10121     call 06dcch                               ; e8 0d fd
     10439    call 06f0eh                               ; e8 0d fd
    1012210440    cmp AL, strict byte 086h                  ; 3c 86
    10123     jne short 070c5h                          ; 75 02
     10441    jne short 07207h                          ; 75 02
    1012410442    mov CL, strict byte 001h                  ; b1 01
    1012510443    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    10126     je short 070f0h                           ; 74 25
     10444    je short 07232h                           ; 74 25
    1012710445    test cl, cl                               ; 84 c9
    10128     jne short 070f0h                          ; 75 21
     10446    jne short 07232h                          ; 75 21
    1012910447    mov bx, strict word 00010h                ; bb 10 00
    10130     jmp short 070d9h                          ; eb 05
     10448    jmp short 0721bh                          ; eb 05
    1013110449    dec bx                                    ; 4b
    1013210450    test bx, bx                               ; 85 db
    10133     jbe short 070f0h                          ; 76 17
     10451    jbe short 07232h                          ; 76 17
    1013410452    mov ax, bx                                ; 89 d8
    1013510453    or ah, 002h                               ; 80 cc 02
     
    1013810456    xor dx, dx                                ; 31 d2
    1013910457    mov ax, strict word 00001h                ; b8 01 00
    10140     call 06dcch                               ; e8 e2 fc
     10458    call 06f0eh                               ; e8 e2 fc
    1014110459    cmp AL, strict byte 086h                  ; 3c 86
    10142     jne short 070d4h                          ; 75 e6
     10460    jne short 07216h                          ; 75 e6
    1014310461    mov CL, strict byte 001h                  ; b1 01
    1014410462    xor bx, bx                                ; 31 db
    1014510463    mov dx, 00339h                            ; ba 39 03
    1014610464    mov ax, si                                ; 89 f0
    10147     call 0160eh                               ; e8 14 a5
     10465    call 0160eh                               ; e8 d2 a3
    1014810466    mov AL, strict byte 003h                  ; b0 03
    1014910467    mov AH, strict byte 000h                  ; b4 00
    1015010468    int 010h                                  ; cd 10
    1015110469    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
    10152     je near 071f1h                            ; 0f 84 e9 00
     10470    je near 07333h                            ; 0f 84 e9 00
    1015310471    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    10154     jne short 0713eh                          ; 75 30
     10472    jne short 07280h                          ; 75 30
    1015510473    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    10156     jne short 0713eh                          ; 75 2a
     10474    jne short 07280h                          ; 75 2a
    1015710475    cmp word [bp-00ah], strict byte 00000h    ; 83 7e f6 00
    10158     jne short 0713eh                          ; 75 24
     10476    jne short 07280h                          ; 75 24
    1015910477    cmp byte [bp-008h], 002h                  ; 80 7e f8 02
    10160     jne short 0712bh                          ; 75 0b
     10478    jne short 0726dh                          ; 75 0b
    1016110479    push 009cah                               ; 68 ca 09
    1016210480    push strict byte 00002h                   ; 6a 02
    10163     call 018e9h                               ; e8 c1 a7
     10481    call 018e9h                               ; e8 7f a6
    1016410482    add sp, strict byte 00004h                ; 83 c4 04
    1016510483    test cl, cl                               ; 84 c9
    10166     jne short 0713eh                          ; 75 0f
     10484    jne short 07280h                          ; 75 0f
    1016710485    mov dx, strict word 00001h                ; ba 01 00
    1016810486    mov ax, 000c0h                            ; b8 c0 00
    10169     call 06dcch                               ; e8 94 fc
     10487    call 06f0eh                               ; e8 94 fc
    1017010488    cmp AL, strict byte 086h                  ; 3c 86
    10171     jne short 0713eh                          ; 75 02
     10489    jne short 07280h                          ; 75 02
    1017210490    mov CL, strict byte 001h                  ; b1 01
    1017310491    test cl, cl                               ; 84 c9
    10174     je near 071f1h                            ; 0f 84 ad 00
     10492    je near 07333h                            ; 0f 84 ad 00
    1017510493    mov byte [bp-004h], 000h                  ; c6 46 fc 00
    1017610494    mov ax, 00100h                            ; b8 00 01
     
    1019110509    push 009ech                               ; 68 ec 09
    1019210510    push strict byte 00002h                   ; 6a 02
    10193     call 018e9h                               ; e8 7c a7
     10511    call 018e9h                               ; e8 3a a6
    1019410512    add sp, strict byte 00004h                ; 83 c4 04
    10195     call 06e9dh                               ; e8 2a fd
     10513    call 06fdfh                               ; e8 2a fd
    1019610514    push 00a30h                               ; 68 30 0a
    1019710515    push strict byte 00002h                   ; 6a 02
    10198     call 018e9h                               ; e8 6e a7
     10516    call 018e9h                               ; e8 2c a6
    1019910517    add sp, strict byte 00004h                ; 83 c4 04
    1020010518    mov dx, strict word 00001h                ; ba 01 00
    1020110519    mov ax, strict word 00040h                ; b8 40 00
    10202     call 06dcch                               ; e8 45 fc
     10520    call 06f0eh                               ; e8 45 fc
    1020310521    mov bl, al                                ; 88 c3
    1020410522    test al, al                               ; 84 c0
    10205     je short 0717eh                           ; 74 f1
     10523    je short 072c0h                           ; 74 f1
    1020610524    cmp AL, strict byte 030h                  ; 3c 30
    10207     je short 071dfh                           ; 74 4e
     10525    je short 07321h                           ; 74 4e
    1020810526    cmp bl, 002h                              ; 80 fb 02
    10209     jc short 071b8h                           ; 72 22
     10527    jc short 072fah                           ; 72 22
    1021010528    cmp bl, 009h                              ; 80 fb 09
    10211     jnbe short 071b8h                         ; 77 1d
     10529    jnbe short 072fah                         ; 77 1d
    1021210530    movzx ax, bl                              ; 0f b6 c3
    10213     call 06fc9h                               ; e8 28 fe
     10531    call 0710bh                               ; e8 28 fe
    1021410532    cmp AL, strict byte 0ffh                  ; 3c ff
    10215     jne short 071a7h                          ; 75 02
    10216     jmp short 0717eh                          ; eb d7
     10533    jne short 072e9h                          ; 75 02
     10534    jmp short 072c0h                          ; eb d7
    1021710535    movzx bx, al                              ; 0f b6 d8
    1021810536    mov dx, 00338h                            ; ba 38 03
    1021910537    mov ax, si                                ; 89 f0
    10220     call 0160eh                               ; e8 5c a4
     10538    call 0160eh                               ; e8 1a a3
    1022110539    mov byte [bp-004h], 002h                  ; c6 46 fc 02
    10222     jmp short 071dfh                          ; eb 27
     10540    jmp short 07321h                          ; eb 27
    1022310541    cmp bl, 02eh                              ; 80 fb 2e
    10224     je short 071cdh                           ; 74 10
     10542    je short 0730fh                           ; 74 10
    1022510543    cmp bl, 026h                              ; 80 fb 26
    10226     je short 071d3h                           ; 74 11
     10544    je short 07315h                           ; 74 11
    1022710545    cmp bl, 021h                              ; 80 fb 21
    10228     jne short 071d9h                          ; 75 12
     10546    jne short 0731bh                          ; 75 12
    1022910547    mov byte [bp-004h], 001h                  ; c6 46 fc 01
    10230     jmp short 071dfh                          ; eb 12
     10548    jmp short 07321h                          ; eb 12
    1023110549    mov byte [bp-004h], 003h                  ; c6 46 fc 03
    10232     jmp short 071dfh                          ; eb 0c
     10550    jmp short 07321h                          ; eb 0c
    1023310551    mov byte [bp-004h], 004h                  ; c6 46 fc 04
    10234     jmp short 071dfh                          ; eb 06
     10552    jmp short 07321h                          ; eb 06
    1023510553    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    10236     je short 0717eh                           ; 74 9f
     10554    je short 072c0h                           ; 74 9f
    1023710555    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    1023810556    mov dx, 00339h                            ; ba 39 03
    1023910557    mov ax, si                                ; 89 f0
    10240     call 0160eh                               ; e8 23 a4
     10558    call 0160eh                               ; e8 e1 a2
    1024110559    mov AL, strict byte 003h                  ; b0 03
    1024210560    mov AH, strict byte 000h                  ; b4 00
     
    1025110569    push DS                                   ; 1e
    1025210570    mov ds, ax                                ; 8e d8
    10253     call 0edbfh                               ; e8 bc 7b
     10571    call 0edbfh                               ; e8 7a 7a
    1025410572    pop DS                                    ; 1f
    1025510573    popad                                     ; 66 61
     
    1026110579    pop bx                                    ; 5b
    1026210580    retn                                      ; c3
    10263 delay_boot_:                                 ; 0xf720d LB 0x64
     10581delay_boot_:                                 ; 0xf734f LB 0x64
    1026410582    push bx                                   ; 53
    1026510583    push dx                                   ; 52
     
    1026810586    mov dx, ax                                ; 89 c2
    1026910587    test ax, ax                               ; 85 c0
    10270     je short 0726dh                           ; 74 55
     10588    je short 073afh                           ; 74 55
    1027110589    mov AL, strict byte 034h                  ; b0 34
    1027210590    out strict byte 043h, AL                  ; e6 43
     
    1027810596    push 00a7ah                               ; 68 7a 0a
    1027910597    push strict byte 00002h                   ; 6a 02
    10280     call 018e9h                               ; e8 bc a6
     10598    call 018e9h                               ; e8 7a a5
    1028110599    add sp, strict byte 00006h                ; 83 c4 06
    1028210600    mov bx, dx                                ; 89 d3
    1028310601    test bx, bx                               ; 85 db
    10284     jbe short 0724dh                          ; 76 17
     10602    jbe short 0738fh                          ; 76 17
    1028510603    push bx                                   ; 53
    1028610604    push 00a98h                               ; 68 98 0a
    1028710605    push strict byte 00002h                   ; 6a 02
    10288     call 018e9h                               ; e8 aa a6
     10606    call 018e9h                               ; e8 68 a5
    1028910607    add sp, strict byte 00006h                ; 83 c4 06
    1029010608    xor dx, dx                                ; 31 d2
    1029110609    mov ax, strict word 00040h                ; b8 40 00
    10292     call 06dcch                               ; e8 82 fb
     10610    call 06f0eh                               ; e8 82 fb
    1029310611    dec bx                                    ; 4b
    10294     jmp short 07232h                          ; eb e5
     10612    jmp short 07374h                          ; eb e5
    1029510613    push 009c8h                               ; 68 c8 09
    1029610614    push strict byte 00002h                   ; 6a 02
    10297     call 018e9h                               ; e8 94 a6
     10615    call 018e9h                               ; e8 52 a5
    1029810616    add sp, strict byte 00004h                ; 83 c4 04
    1029910617    mov AL, strict byte 034h                  ; b0 34
     
    1030610624    push DS                                   ; 1e
    1030710625    mov ds, ax                                ; 8e d8
    10308     call 0edbfh                               ; e8 55 7b
     10626    call 0edbfh                               ; e8 13 7a
    1030910627    pop DS                                    ; 1f
    1031010628    popad                                     ; 66 61
     
    1031310631    pop bx                                    ; 5b
    1031410632    retn                                      ; c3
    10315 scsi_cmd_data_in_:                           ; 0xf7271 LB 0x63
     10633scsi_cmd_data_in_:                           ; 0xf73b3 LB 0x88
    1031610634    push si                                   ; 56
    1031710635    push di                                   ; 57
    10318     enter 00004h, 000h                        ; c8 04 00 00
     10636    enter 00006h, 000h                        ; c8 06 00 00
    1031910637    mov si, ax                                ; 89 c6
    1032010638    mov byte [bp-002h], dl                    ; 88 56 fe
    10321     mov word [bp-004h], bx                    ; 89 5e fc
     10639    mov word [bp-006h], bx                    ; 89 5e fa
     10640    mov word [bp-004h], cx                    ; 89 4e fc
    1032210641    mov dx, si                                ; 89 f2
    1032310642    in AL, DX                                 ; ec
     
    1032510644    ; sub ah, ah                                ; 2a e4
    1032610645    test AL, strict byte 001h                 ; a8 01
    10327     jne short 0727fh                          ; 75 f7
     10646    jne short 073c4h                          ; 75 f7
     10647    mov ax, word [bp+00eh]                    ; 8b 46 0e
     10648    mov dx, word [bp+010h]                    ; 8b 56 10
     10649    mov cx, strict word 0000ch                ; b9 0c 00
     10650    shr dx, 1                                 ; d1 ea
     10651    rcr ax, 1                                 ; d1 d8
     10652    loop 073d6h                               ; e2 fa
     10653    and ax, 000f0h                            ; 25 f0 00
     10654    movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
     10655    or bx, ax                                 ; 09 c3
    1032810656    mov al, byte [bp-002h]                    ; 8a 46 fe
     10657    mov dx, si                                ; 89 f2
    1032910658    out DX, AL                                ; ee
    1033010659    xor al, al                                ; 30 c0
    1033110660    out DX, AL                                ; ee
    10332     mov al, byte [bp+008h]                    ; 8a 46 08
     10661    mov al, bl                                ; 88 d8
    1033310662    out DX, AL                                ; ee
    1033410663    mov al, byte [bp+00eh]                    ; 8a 46 0e
    1033510664    out DX, AL                                ; ee
    1033610665    mov ax, word [bp+00eh]                    ; 8b 46 0e
    10337     shr ax, 008h                              ; c1 e8 08
     10666    mov dx, word [bp+010h]                    ; 8b 56 10
     10667    mov cx, strict word 00008h                ; b9 08 00
     10668    shr dx, 1                                 ; d1 ea
     10669    rcr ax, 1                                 ; d1 d8
     10670    loop 073feh                               ; e2 fa
     10671    mov dx, si                                ; 89 f2
    1033810672    out DX, AL                                ; ee
    1033910673    xor bx, bx                                ; 31 db
    1034010674    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    1034110675    cmp bx, ax                                ; 39 c3
    10342     jnc short 072b8h                          ; 73 10
    10343     mov es, cx                                ; 8e c1
    10344     mov di, word [bp-004h]                    ; 8b 7e fc
     10676    jnc short 0741fh                          ; 73 0e
     10677    les di, [bp-006h]                         ; c4 7e fa
    1034510678    add di, bx                                ; 01 df
    1034610679    mov al, byte [es:di]                      ; 26 8a 05
     
    1034810681    out DX, AL                                ; ee
    1034910682    inc bx                                    ; 43
    10350     jmp short 072a0h                          ; eb e8
     10683    jmp short 07409h                          ; eb ea
    1035110684    mov dx, si                                ; 89 f2
    1035210685    in AL, DX                                 ; ec
     
    1035410687    ; sub ah, ah                                ; 2a e4
    1035510688    test AL, strict byte 001h                 ; a8 01
    10356     jne short 072b8h                          ; 75 f7
     10689    jne short 0741fh                          ; 75 f7
    1035710690    lea dx, [si+001h]                         ; 8d 54 01
    1035810691    mov cx, word [bp+00eh]                    ; 8b 4e 0e
     
    1036310696    pop di                                    ; 5f
    1036410697    pop si                                    ; 5e
    10365     retn 00008h                               ; c2 08 00
    10366 scsi_cmd_data_out_:                          ; 0xf72d4 LB 0x64
     10698    retn 0000ah                               ; c2 0a 00
     10699scsi_cmd_data_out_:                          ; 0xf743b LB 0x89
    1036710700    push si                                   ; 56
    1036810701    push di                                   ; 57
    10369     enter 00004h, 000h                        ; c8 04 00 00
     10702    enter 00006h, 000h                        ; c8 06 00 00
    1037010703    mov di, ax                                ; 89 c7
    1037110704    mov byte [bp-002h], dl                    ; 88 56 fe
    10372     mov word [bp-004h], bx                    ; 89 5e fc
     10705    mov word [bp-006h], bx                    ; 89 5e fa
     10706    mov word [bp-004h], cx                    ; 89 4e fc
    1037310707    mov dx, di                                ; 89 fa
    1037410708    in AL, DX                                 ; ec
     
    1037610710    ; sub ah, ah                                ; 2a e4
    1037710711    test AL, strict byte 001h                 ; a8 01
    10378     jne short 072e2h                          ; 75 f7
     10712    jne short 0744ch                          ; 75 f7
     10713    mov ax, word [bp+00eh]                    ; 8b 46 0e
     10714    mov dx, word [bp+010h]                    ; 8b 56 10
     10715    mov cx, strict word 0000ch                ; b9 0c 00
     10716    shr dx, 1                                 ; d1 ea
     10717    rcr ax, 1                                 ; d1 d8
     10718    loop 0745eh                               ; e2 fa
     10719    and ax, 000f0h                            ; 25 f0 00
     10720    movzx bx, byte [bp+008h]                  ; 0f b6 5e 08
     10721    or bx, ax                                 ; 09 c3
    1037910722    mov al, byte [bp-002h]                    ; 8a 46 fe
     10723    mov dx, di                                ; 89 fa
    1038010724    out DX, AL                                ; ee
    1038110725    mov AL, strict byte 001h                  ; b0 01
    1038210726    out DX, AL                                ; ee
    10383     mov al, byte [bp+008h]                    ; 8a 46 08
     10727    mov al, bl                                ; 88 d8
    1038410728    out DX, AL                                ; ee
    1038510729    mov al, byte [bp+00eh]                    ; 8a 46 0e
    1038610730    out DX, AL                                ; ee
    1038710731    mov ax, word [bp+00eh]                    ; 8b 46 0e
    10388     shr ax, 008h                              ; c1 e8 08
     10732    mov dx, word [bp+010h]                    ; 8b 56 10
     10733    mov cx, strict word 00008h                ; b9 08 00
     10734    shr dx, 1                                 ; d1 ea
     10735    rcr ax, 1                                 ; d1 d8
     10736    loop 07486h                               ; e2 fa
     10737    mov dx, di                                ; 89 fa
    1038910738    out DX, AL                                ; ee
    1039010739    xor bx, bx                                ; 31 db
    1039110740    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    1039210741    cmp bx, ax                                ; 39 c3
    10393     jnc short 0731bh                          ; 73 10
    10394     mov es, cx                                ; 8e c1
    10395     mov si, word [bp-004h]                    ; 8b 76 fc
     10742    jnc short 074a7h                          ; 73 0e
     10743    les si, [bp-006h]                         ; c4 76 fa
    1039610744    add si, bx                                ; 01 de
    1039710745    mov al, byte [es:si]                      ; 26 8a 04
     
    1039910747    out DX, AL                                ; ee
    1040010748    inc bx                                    ; 43
    10401     jmp short 07303h                          ; eb e8
     10749    jmp short 07491h                          ; eb ea
    1040210750    lea dx, [di+001h]                         ; 8d 55 01
    1040310751    mov cx, word [bp+00eh]                    ; 8b 4e 0e
     
    1041010758    ; sub ah, ah                                ; 2a e4
    1041110759    test AL, strict byte 001h                 ; a8 01
    10412     jne short 07327h                          ; 75 f7
     10760    jne short 074b3h                          ; 75 f7
    1041310761    xor ax, ax                                ; 31 c0
    1041410762    leave                                     ; c9
    1041510763    pop di                                    ; 5f
    1041610764    pop si                                    ; 5e
    10417     retn 00008h                               ; c2 08 00
    10418 @scsi_read_sectors:                          ; 0xf7338 LB 0xa2
     10765    retn 0000ah                               ; c2 0a 00
     10766@scsi_read_sectors:                          ; 0xf74c4 LB 0xb1
    1041910767    push si                                   ; 56
    1042010768    push di                                   ; 57
    10421     enter 0000ch, 000h                        ; c8 0c 00 00
     10769    enter 0000eh, 000h                        ; c8 0e 00 00
    1042210770    mov si, word [bp+008h]                    ; 8b 76 08
    1042310771    mov es, [bp+00ah]                         ; 8e 46 0a
     
    1042510773    sub bl, 008h                              ; 80 eb 08
    1042610774    cmp bl, 004h                              ; 80 fb 04
    10427     jbe short 0735fh                          ; 76 0f
     10775    jbe short 074ebh                          ; 76 0f
    1042810776    movzx ax, bl                              ; 0f b6 c3
    1042910777    push ax                                   ; 50
    1043010778    push 00a9ch                               ; 68 9c 0a
    1043110779    push strict byte 00007h                   ; 6a 07
    10432     call 018e9h                               ; e8 8d a5
     10780    call 018e9h                               ; e8 01 a4
    1043310781    add sp, strict byte 00006h                ; 83 c4 06
    1043410782    mov es, [bp+00ah]                         ; 8e 46 0a
    1043510783    mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
    10436     mov word [bp-00ch], strict word 00028h    ; c7 46 f4 28 00
     10784    mov word [bp-00eh], strict word 00028h    ; c7 46 f2 28 00
    1043710785    mov ax, word [es:si]                      ; 26 8b 04
    1043810786    mov dx, word [es:si+002h]                 ; 26 8b 54 02
     
    1044010788    xchg dh, dl                               ; 86 d6
    1044110789    xchg dx, ax                               ; 92
    10442     mov word [bp-00ah], ax                    ; 89 46 f6
    10443     mov word [bp-008h], dx                    ; 89 56 f8
    10444     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     10790    mov word [bp-00ch], ax                    ; 89 46 f4
     10791    mov word [bp-00ah], dx                    ; 89 56 f6
     10792    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1044510793    mov ax, di                                ; 89 f8
    1044610794    xchg ah, al                               ; 86 c4
    10447     mov word [bp-005h], ax                    ; 89 46 fb
    10448     mov byte [bp-003h], 000h                  ; c6 46 fd 00
     10795    mov word [bp-007h], ax                    ; 89 46 f9
     10796    mov byte [bp-005h], 000h                  ; c6 46 fb 00
    1044910797    xor bh, bh                                ; 30 ff
    1045010798    sal bx, 002h                              ; c1 e3 02
     
    1045210800    mov ax, word [es:bx+001d8h]               ; 26 8b 87 d8 01
    1045310801    mov dl, byte [es:bx+001dah]               ; 26 8a 97 da 01
    10454     mov bx, di                                ; 89 fb
    10455     sal bx, 009h                              ; c1 e3 09
    10456     mov word [bp-002h], bx                    ; 89 5e fe
    10457     push bx                                   ; 53
     10802    mov word [bp-004h], di                    ; 89 7e fc
     10803    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
     10804    mov cx, strict word 00009h                ; b9 09 00
     10805    sal word [bp-004h], 1                     ; d1 66 fc
     10806    rcl word [bp-002h], 1                     ; d1 56 fe
     10807    loop 07534h                               ; e2 f8
     10808    push dword [bp-004h]                      ; 66 ff 76 fc
    1045810809    db  066h, 026h, 0ffh, 074h, 004h
    1045910810    ; push dword [es:si+004h]                   ; 66 26 ff 74 04
     
    1046110812    xor dh, dh                                ; 30 f6
    1046210813    mov cx, ss                                ; 8c d1
    10463     lea bx, [bp-00ch]                         ; 8d 5e f4
    10464     call 07271h                               ; e8 ba fe
     10814    lea bx, [bp-00eh]                         ; 8d 5e f2
     10815    call 073b3h                               ; e8 62 fe
    1046510816    mov ah, al                                ; 88 c4
    1046610817    test al, al                               ; 84 c0
    10467     jne short 073d1h                          ; 75 14
     10818    jne short 0756ch                          ; 75 15
    1046810819    mov es, [bp+00ah]                         ; 8e 46 0a
    1046910820    mov word [es:si+014h], di                 ; 26 89 7c 14
     10821    mov dx, word [bp-004h]                    ; 8b 56 fc
     10822    mov word [es:si+016h], dx                 ; 26 89 54 16
    1047010823    mov dx, word [bp-002h]                    ; 8b 56 fe
    10471     mov word [es:si+016h], dx                 ; 26 89 54 16
    10472     mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00
     10824    mov word [es:si+018h], dx                 ; 26 89 54 18
    1047310825    movzx ax, ah                              ; 0f b6 c4
    1047410826    leave                                     ; c9
     
    1047610828    pop si                                    ; 5e
    1047710829    retn 00004h                               ; c2 04 00
    10478 @scsi_write_sectors:                         ; 0xf73da LB 0xa2
     10830@scsi_write_sectors:                         ; 0xf7575 LB 0xb1
    1047910831    push si                                   ; 56
    1048010832    push di                                   ; 57
    10481     enter 0000ch, 000h                        ; c8 0c 00 00
     10833    enter 0000eh, 000h                        ; c8 0e 00 00
    1048210834    mov si, word [bp+008h]                    ; 8b 76 08
    1048310835    mov es, [bp+00ah]                         ; 8e 46 0a
     
    1048510837    sub bl, 008h                              ; 80 eb 08
    1048610838    cmp bl, 004h                              ; 80 fb 04
    10487     jbe short 07401h                          ; 76 0f
     10839    jbe short 0759ch                          ; 76 0f
    1048810840    movzx ax, bl                              ; 0f b6 c3
    1048910841    push ax                                   ; 50
    1049010842    push 00acah                               ; 68 ca 0a
    1049110843    push strict byte 00007h                   ; 6a 07
    10492     call 018e9h                               ; e8 eb a4
     10844    call 018e9h                               ; e8 50 a3
    1049310845    add sp, strict byte 00006h                ; 83 c4 06
    1049410846    mov es, [bp+00ah]                         ; 8e 46 0a
    1049510847    mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
    10496     mov word [bp-00ch], strict word 0002ah    ; c7 46 f4 2a 00
     10848    mov word [bp-00eh], strict word 0002ah    ; c7 46 f2 2a 00
    1049710849    mov ax, word [es:si]                      ; 26 8b 04
    1049810850    mov dx, word [es:si+002h]                 ; 26 8b 54 02
     
    1050010852    xchg dh, dl                               ; 86 d6
    1050110853    xchg dx, ax                               ; 92
    10502     mov word [bp-00ah], ax                    ; 89 46 f6
    10503     mov word [bp-008h], dx                    ; 89 56 f8
    10504     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     10854    mov word [bp-00ch], ax                    ; 89 46 f4
     10855    mov word [bp-00ah], dx                    ; 89 56 f6
     10856    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1050510857    mov ax, di                                ; 89 f8
    1050610858    xchg ah, al                               ; 86 c4
    10507     mov word [bp-005h], ax                    ; 89 46 fb
    10508     mov byte [bp-003h], 000h                  ; c6 46 fd 00
     10859    mov word [bp-007h], ax                    ; 89 46 f9
     10860    mov byte [bp-005h], 000h                  ; c6 46 fb 00
    1050910861    xor bh, bh                                ; 30 ff
    1051010862    sal bx, 002h                              ; c1 e3 02
     
    1051210864    mov ax, word [es:bx+001d8h]               ; 26 8b 87 d8 01
    1051310865    mov dl, byte [es:bx+001dah]               ; 26 8a 97 da 01
    10514     mov bx, di                                ; 89 fb
    10515     sal bx, 009h                              ; c1 e3 09
    10516     mov word [bp-002h], bx                    ; 89 5e fe
    10517     push bx                                   ; 53
     10866    mov word [bp-004h], di                    ; 89 7e fc
     10867    mov word [bp-002h], strict word 00000h    ; c7 46 fe 00 00
     10868    mov cx, strict word 00009h                ; b9 09 00
     10869    sal word [bp-004h], 1                     ; d1 66 fc
     10870    rcl word [bp-002h], 1                     ; d1 56 fe
     10871    loop 075e5h                               ; e2 f8
     10872    push dword [bp-004h]                      ; 66 ff 76 fc
    1051810873    db  066h, 026h, 0ffh, 074h, 004h
    1051910874    ; push dword [es:si+004h]                   ; 66 26 ff 74 04
     
    1052110876    xor dh, dh                                ; 30 f6
    1052210877    mov cx, ss                                ; 8c d1
    10523     lea bx, [bp-00ch]                         ; 8d 5e f4
    10524     call 072d4h                               ; e8 7b fe
     10878    lea bx, [bp-00eh]                         ; 8d 5e f2
     10879    call 0743bh                               ; e8 39 fe
    1052510880    mov ah, al                                ; 88 c4
    1052610881    test al, al                               ; 84 c0
    10527     jne short 07473h                          ; 75 14
     10882    jne short 0761dh                          ; 75 15
    1052810883    mov es, [bp+00ah]                         ; 8e 46 0a
    1052910884    mov word [es:si+014h], di                 ; 26 89 7c 14
     10885    mov dx, word [bp-004h]                    ; 8b 56 fc
     10886    mov word [es:si+016h], dx                 ; 26 89 54 16
    1053010887    mov dx, word [bp-002h]                    ; 8b 56 fe
    10531     mov word [es:si+016h], dx                 ; 26 89 54 16
    10532     mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00
     10888    mov word [es:si+018h], dx                 ; 26 89 54 18
    1053310889    movzx ax, ah                              ; 0f b6 c4
    1053410890    leave                                     ; c9
     
    1053610892    pop si                                    ; 5e
    1053710893    retn 00004h                               ; c2 04 00
    10538 scsi_enumerate_attached_devices_:            ; 0xf747c LB 0x285
     10894scsi_cmd_packet_:                            ; 0xf7626 LB 0x131
     10895    push si                                   ; 56
     10896    push di                                   ; 57
     10897    enter 0000ch, 000h                        ; c8 0c 00 00
     10898    mov di, ax                                ; 89 c7
     10899    mov byte [bp-002h], dl                    ; 88 56 fe
     10900    mov word [bp-00ch], bx                    ; 89 5e f4
     10901    mov word [bp-006h], cx                    ; 89 4e fa
     10902    mov dx, strict word 0000eh                ; ba 0e 00
     10903    mov ax, strict word 00040h                ; b8 40 00
     10904    call 0161ch                               ; e8 dc 9f
     10905    mov si, 00122h                            ; be 22 01
     10906    mov word [bp-00ah], ax                    ; 89 46 f6
     10907    cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
     10908    jne short 0766bh                          ; 75 1f
     10909    mov bx, 00cech                            ; bb ec 0c
     10910    mov cx, ds                                ; 8c d9
     10911    mov ax, strict word 00004h                ; b8 04 00
     10912    call 018aeh                               ; e8 57 a2
     10913    push 00af9h                               ; 68 f9 0a
     10914    push 00b09h                               ; 68 09 0b
     10915    push strict byte 00004h                   ; 6a 04
     10916    call 018e9h                               ; e8 87 a2
     10917    add sp, strict byte 00006h                ; 83 c4 06
     10918    mov dx, strict word 00001h                ; ba 01 00
     10919    jmp near 0774fh                           ; e9 e4 00
     10920    sub di, strict byte 00008h                ; 83 ef 08
     10921    sal di, 002h                              ; c1 e7 02
     10922    sub byte [bp-002h], 002h                  ; 80 6e fe 02
     10923    mov es, [bp-00ah]                         ; 8e 46 f6
     10924    add di, si                                ; 01 f7
     10925    mov bx, word [es:di+001d8h]               ; 26 8b 9d d8 01
     10926    mov al, byte [es:di+001dah]               ; 26 8a 85 da 01
     10927    mov byte [bp-004h], al                    ; 88 46 fc
     10928    mov dx, bx                                ; 89 da
     10929    in AL, DX                                 ; ec
     10930    db  02ah, 0e4h
     10931    ; sub ah, ah                                ; 2a e4
     10932    test AL, strict byte 001h                 ; a8 01
     10933    jne short 07687h                          ; 75 f7
     10934    xor di, di                                ; 31 ff
     10935    mov ax, word [bp+00ah]                    ; 8b 46 0a
     10936    add ax, word [bp+008h]                    ; 03 46 08
     10937    mov word [bp-008h], ax                    ; 89 46 f8
     10938    adc di, word [bp+00ch]                    ; 13 7e 0c
     10939    mov dx, di                                ; 89 fa
     10940    mov cx, strict word 0000ch                ; b9 0c 00
     10941    shr dx, 1                                 ; d1 ea
     10942    rcr ax, 1                                 ; d1 d8
     10943    loop 076a3h                               ; e2 fa
     10944    and ax, 000f0h                            ; 25 f0 00
     10945    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
     10946    or cx, ax                                 ; 09 c1
     10947    mov al, byte [bp-004h]                    ; 8a 46 fc
     10948    mov dx, bx                                ; 89 da
     10949    out DX, AL                                ; ee
     10950    xor al, al                                ; 30 c0
     10951    out DX, AL                                ; ee
     10952    mov al, cl                                ; 88 c8
     10953    out DX, AL                                ; ee
     10954    mov ax, word [bp+00ah]                    ; 8b 46 0a
     10955    add ax, word [bp+008h]                    ; 03 46 08
     10956    out DX, AL                                ; ee
     10957    mov ax, word [bp-008h]                    ; 8b 46 f8
     10958    mov dx, di                                ; 89 fa
     10959    mov cx, strict word 00008h                ; b9 08 00
     10960    shr dx, 1                                 ; d1 ea
     10961    rcr ax, 1                                 ; d1 d8
     10962    loop 076cdh                               ; e2 fa
     10963    mov dx, bx                                ; 89 da
     10964    out DX, AL                                ; ee
     10965    xor cx, cx                                ; 31 c9
     10966    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     10967    cmp cx, ax                                ; 39 c1
     10968    jnc short 076f1h                          ; 73 11
     10969    mov es, [bp-006h]                         ; 8e 46 fa
     10970    mov di, word [bp-00ch]                    ; 8b 7e f4
     10971    add di, cx                                ; 01 cf
     10972    mov al, byte [es:di]                      ; 26 8a 05
     10973    mov dx, bx                                ; 89 da
     10974    out DX, AL                                ; ee
     10975    inc cx                                    ; 41
     10976    jmp short 076d8h                          ; eb e7
     10977    mov dx, bx                                ; 89 da
     10978    in AL, DX                                 ; ec
     10979    db  02ah, 0e4h
     10980    ; sub ah, ah                                ; 2a e4
     10981    test AL, strict byte 001h                 ; a8 01
     10982    jne short 076f1h                          ; 75 f7
     10983    mov ax, word [bp+008h]                    ; 8b 46 08
     10984    test ax, ax                               ; 85 c0
     10985    je short 07709h                           ; 74 08
     10986    lea dx, [bx+001h]                         ; 8d 57 01
     10987    mov cx, ax                                ; 89 c1
     10988    in AL, DX                                 ; ec
     10989    loop 07706h                               ; e2 fd
     10990    mov ax, word [bp+00ah]                    ; 8b 46 0a
     10991    mov es, [bp-00ah]                         ; 8e 46 f6
     10992    mov word [es:si+016h], ax                 ; 26 89 44 16
     10993    mov ax, word [bp+00ch]                    ; 8b 46 0c
     10994    mov word [es:si+018h], ax                 ; 26 89 44 18
     10995    lea dx, [bx+001h]                         ; 8d 57 01
     10996    cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
     10997    jne short 0772ah                          ; 75 07
     10998    cmp word [bp+00ah], 08000h                ; 81 7e 0a 00 80
     10999    jbe short 07745h                          ; 76 1b
     11000    mov cx, 08000h                            ; b9 00 80
     11001    les di, [bp+010h]                         ; c4 7e 10
     11002    rep insb                                  ; f3 6c
     11003    add word [bp+00ah], 08000h                ; 81 46 0a 00 80
     11004    adc word [bp+00ch], strict byte 0ffffh    ; 83 56 0c ff
     11005    mov ax, es                                ; 8c c0
     11006    add ax, 00800h                            ; 05 00 08
     11007    mov word [bp+012h], ax                    ; 89 46 12
     11008    jmp short 0771ah                          ; eb d5
     11009    mov cx, word [bp+00ah]                    ; 8b 4e 0a
     11010    les di, [bp+010h]                         ; c4 7e 10
     11011    rep insb                                  ; f3 6c
     11012    xor dx, dx                                ; 31 d2
     11013    mov ax, dx                                ; 89 d0
     11014    leave                                     ; c9
     11015    pop di                                    ; 5f
     11016    pop si                                    ; 5e
     11017    retn 0000ch                               ; c2 0c 00
     11018scsi_enumerate_attached_devices_:            ; 0xf7757 LB 0x319
    1053911019    push bx                                   ; 53
    1054011020    push cx                                   ; 51
     
    1054211022    push si                                   ; 56
    1054311023    push di                                   ; 57
    10544     enter 0021ah, 000h                        ; c8 1a 02 00
    10545     push ax                                   ; 50
     11024    enter 0021eh, 000h                        ; c8 1e 02 00
     11025    mov di, ax                                ; 89 c7
    1054611026    mov dx, strict word 0000eh                ; ba 0e 00
    1054711027    mov ax, strict word 00040h                ; b8 40 00
    10548     call 0161ch                               ; e8 8d a1
     11028    call 0161ch                               ; e8 b1 9e
    1054911029    mov si, 00122h                            ; be 22 01
    10550     mov word [bp-006h], ax                    ; 89 46 fa
    10551     mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
    10552     jmp near 076a9h                           ; e9 0c 02
    10553     mov es, [bp-006h]                         ; 8e 46 fa
     11030    mov word [bp-00ah], ax                    ; 89 46 f6
     11031    mov word [bp-006h], strict word 00000h    ; c7 46 fa 00 00
     11032    jmp near 07a03h                           ; e9 8a 02
     11033    mov es, [bp-00ah]                         ; 8e 46 f6
    1055411034    cmp byte [es:si+001e8h], 004h             ; 26 80 bc e8 01 04
    10555     jnc near 076fah                           ; 0f 83 50 02
     11035    jnc near 07a69h                           ; 0f 83 e3 02
    1055611036    mov cx, strict word 0000ah                ; b9 0a 00
    1055711037    xor bx, bx                                ; 31 db
    1055811038    mov dx, ss                                ; 8c d2
    10559     lea ax, [bp-01ah]                         ; 8d 46 e6
    10560     call 08caah                               ; e8 f3 17
    10561     mov byte [bp-01ah], 025h                  ; c6 46 e6 25
    10562     push strict byte 00008h                   ; 6a 08
    10563     lea dx, [bp-0021ah]                       ; 8d 96 e6 fd
     11039    lea ax, [bp-01eh]                         ; 8d 46 e2
     11040    call 0902ah                               ; e8 97 18
     11041    mov byte [bp-01eh], 025h                  ; c6 46 e2 25
     11042    push dword 000000008h                     ; 66 6a 08
     11043    lea dx, [bp-0021eh]                       ; 8d 96 e2 fd
    1056411044    push SS                                   ; 16
    1056511045    push dx                                   ; 52
    1056611046    push strict byte 0000ah                   ; 6a 0a
    10567     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     11047    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    1056811048    mov cx, ss                                ; 8c d1
    10569     lea bx, [bp-01ah]                         ; 8d 5e e6
    10570     mov ax, word [bp-0021ch]                  ; 8b 86 e4 fd
    10571     call 07271h                               ; e8 9c fd
     11049    lea bx, [bp-01eh]                         ; 8d 5e e2
     11050    mov ax, di                                ; 89 f8
     11051    call 073b3h                               ; e8 03 fc
    1057211052    test al, al                               ; 84 c0
    10573     je short 074e4h                           ; 74 0b
    10574     push 00b2fh                               ; 68 2f 0b
     11053    je short 077c2h                           ; 74 0e
     11054    push 00b29h                               ; 68 29 0b
     11055    push 00b62h                               ; 68 62 0b
    1057511056    push strict byte 00007h                   ; 6a 07
    10576     call 018e9h                               ; e8 08 a4
    10577     add sp, strict byte 00004h                ; 83 c4 04
    10578     movzx dx, byte [bp-00219h]                ; 0f b6 96 e7 fd
    10579     movzx di, byte [bp-0021ah]                ; 0f b6 be e6 fd
    10580     sal di, 008h                              ; c1 e7 08
     11057    call 018e9h                               ; e8 2a a1
     11058    add sp, strict byte 00006h                ; 83 c4 06
     11059    movzx dx, byte [bp-0021dh]                ; 0f b6 96 e3 fd
     11060    movzx ax, byte [bp-0021eh]                ; 0f b6 86 e2 fd
     11061    sal ax, 008h                              ; c1 e0 08
    1058111062    xor bx, bx                                ; 31 db
    10582     or di, dx                                 ; 09 d7
     11063    or ax, dx                                 ; 09 d0
     11064    mov word [bp-014h], ax                    ; 89 46 ec
     11065    movzx ax, byte [bp-0021ch]                ; 0f b6 86 e4 fd
     11066    xor dx, dx                                ; 31 d2
     11067    mov cx, strict word 00008h                ; b9 08 00
     11068    sal ax, 1                                 ; d1 e0
     11069    rcl dx, 1                                 ; d1 d2
     11070    loop 077e0h                               ; e2 fa
     11071    or bx, ax                                 ; 09 c3
     11072    or dx, word [bp-014h]                     ; 0b 56 ec
     11073    movzx ax, byte [bp-0021bh]                ; 0f b6 86 e5 fd
     11074    or bx, ax                                 ; 09 c3
     11075    mov word [bp-010h], bx                    ; 89 5e f0
     11076    mov word [bp-008h], dx                    ; 89 56 f8
     11077    movzx dx, byte [bp-0021ah]                ; 0f b6 96 e6 fd
     11078    sal dx, 008h                              ; c1 e2 08
     11079    movzx ax, byte [bp-00219h]                ; 0f b6 86 e7 fd
     11080    xor bx, bx                                ; 31 db
     11081    or dx, ax                                 ; 09 c2
     11082    mov word [bp-014h], dx                    ; 89 56 ec
    1058311083    movzx ax, byte [bp-00218h]                ; 0f b6 86 e8 fd
    1058411084    xor dx, dx                                ; 31 d2
     
    1058611086    sal ax, 1                                 ; d1 e0
    1058711087    rcl dx, 1                                 ; d1 d2
    10588     loop 074ffh                               ; e2 fa
     11088    loop 07816h                               ; e2 fa
    1058911089    or bx, ax                                 ; 09 c3
    10590     or di, dx                                 ; 09 d7
     11090    or dx, word [bp-014h]                     ; 0b 56 ec
    1059111091    movzx ax, byte [bp-00217h]                ; 0f b6 86 e9 fd
    1059211092    or bx, ax                                 ; 09 c3
    10593     mov word [bp-00ah], bx                    ; 89 5e f6
    10594     movzx ax, byte [bp-00216h]                ; 0f b6 86 ea fd
    10595     sal ax, 008h                              ; c1 e0 08
    10596     movzx bx, byte [bp-00215h]                ; 0f b6 9e eb fd
    10597     mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    10598     or bx, ax                                 ; 09 c3
    10599     movzx ax, byte [bp-00214h]                ; 0f b6 86 ec fd
    10600     xor dx, dx                                ; 31 d2
    10601     mov cx, strict word 00008h                ; b9 08 00
    10602     sal ax, 1                                 ; d1 e0
    10603     rcl dx, 1                                 ; d1 d2
    10604     loop 07531h                               ; e2 fa
    10605     mov cx, word [bp-010h]                    ; 8b 4e f0
    10606     or cx, ax                                 ; 09 c1
    10607     or dx, bx                                 ; 09 da
    10608     movzx ax, byte [bp-00213h]                ; 0f b6 86 ed fd
    10609     mov bx, cx                                ; 89 cb
    10610     or bx, ax                                 ; 09 c3
    10611     mov word [bp-00ch], bx                    ; 89 5e f4
     11093    mov word [bp-012h], bx                    ; 89 5e ee
    1061211094    test dx, dx                               ; 85 d2
    10613     jne short 07554h                          ; 75 06
     11095    jne short 07835h                          ; 75 06
    1061411096    cmp bx, 00200h                            ; 81 fb 00 02
    10615     je short 07574h                           ; 74 20
    10616     mov bx, 00cd6h                            ; bb d6 0c
     11097    je short 07855h                           ; 74 20
     11098    mov bx, 00cech                            ; bb ec 0c
    1061711099    mov cx, ds                                ; 8c d9
    1061811100    mov ax, strict word 00004h                ; b8 04 00
    10619     call 018aeh                               ; e8 4f a3
     11101    call 018aeh                               ; e8 6e a0
    1062011102    push dx                                   ; 52
    10621     push word [bp-00ch]                       ; ff 76 f4
    10622     push word [bp-008h]                       ; ff 76 f8
    10623     push 00b6bh                               ; 68 6b 0b
     11103    push word [bp-012h]                       ; ff 76 ee
     11104    push word [bp-006h]                       ; ff 76 fa
     11105    push 00b81h                               ; 68 81 0b
    1062411106    push strict byte 00004h                   ; 6a 04
    10625     call 018e9h                               ; e8 7b a3
     11107    call 018e9h                               ; e8 9a a0
    1062611108    add sp, strict byte 0000ah                ; 83 c4 0a
    10627     jmp near 076a0h                           ; e9 2c 01
    10628     cmp di, strict byte 00040h                ; 83 ff 40
    10629     jnbe short 0757bh                         ; 77 02
    10630     jne short 07585h                          ; 75 0a
    10631     mov dword [bp-004h], strict dword 000ff003fh ; 66 c7 46 fc 3f 00 ff 00
    10632     jmp short 0759eh                          ; eb 19
    10633     cmp di, strict byte 00020h                ; 83 ff 20
    10634     jnbe short 0758ch                         ; 77 02
    10635     jne short 07596h                          ; 75 0a
    10636     mov dword [bp-004h], strict dword 000800020h ; 66 c7 46 fc 20 00 80 00
    10637     jmp short 0759eh                          ; eb 08
    10638     mov dword [bp-004h], strict dword 000400020h ; 66 c7 46 fc 20 00 40 00
    10639     mov bx, word [bp-002h]                    ; 8b 5e fe
    10640     imul bx, word [bp-004h]                   ; 0f af 5e fc
    10641     mov ax, word [bp-00ah]                    ; 8b 46 f6
    10642     mov dx, di                                ; 89 fa
     11109    jmp near 079fah                           ; e9 a5 01
     11110    mov ax, word [bp-008h]                    ; 8b 46 f8
     11111    cmp ax, strict word 00040h                ; 3d 40 00
     11112    jnbe short 0785fh                         ; 77 02
     11113    jne short 07869h                          ; 75 0a
     11114    mov dword [bp-00eh], strict dword 000ff003fh ; 66 c7 46 f2 3f 00 ff 00
     11115    jmp short 07882h                          ; eb 19
     11116    cmp ax, strict word 00020h                ; 3d 20 00
     11117    jnbe short 07870h                         ; 77 02
     11118    jne short 0787ah                          ; 75 0a
     11119    mov dword [bp-00eh], strict dword 000800020h ; 66 c7 46 f2 20 00 80 00
     11120    jmp short 07882h                          ; eb 08
     11121    mov dword [bp-00eh], strict dword 000400020h ; 66 c7 46 f2 20 00 40 00
     11122    mov bx, word [bp-00ch]                    ; 8b 5e f4
     11123    imul bx, word [bp-00eh]                   ; 0f af 5e f2
     11124    mov ax, word [bp-010h]                    ; 8b 46 f0
     11125    mov dx, word [bp-008h]                    ; 8b 56 f8
    1064311126    xor cx, cx                                ; 31 c9
    10644     call 08c40h                               ; e8 91 16
    10645     mov word [bp-00eh], dx                    ; 89 56 f2
    10646     mov es, [bp-006h]                         ; 8e 46 fa
    10647     mov cl, byte [es:si+001e8h]               ; 26 8a 8c e8 01
    10648     mov ch, cl                                ; 88 cd
    10649     add ch, 008h                              ; 80 c5 08
    10650     movzx dx, cl                              ; 0f b6 d1
    10651     sal dx, 002h                              ; c1 e2 02
    10652     mov bx, si                                ; 89 f3
    10653     add bx, dx                                ; 01 d3
    10654     mov dx, word [bp-0021ch]                  ; 8b 96 e4 fd
    10655     mov word [es:bx+001d8h], dx               ; 26 89 97 d8 01
    10656     mov dl, byte [bp-008h]                    ; 8a 56 f8
    10657     mov byte [es:bx+001dah], dl               ; 26 88 97 da 01
    10658     movzx dx, ch                              ; 0f b6 d5
     11127    call 08fc0h                               ; e8 2c 17
     11128    mov cx, ax                                ; 89 c1
     11129    mov word [bp-004h], dx                    ; 89 56 fc
     11130    mov es, [bp-00ah]                         ; 8e 46 f6
     11131    mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
     11132    mov byte [bp-002h], al                    ; 88 46 fe
     11133    add AL, strict byte 008h                  ; 04 08
     11134    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     11135    sal bx, 002h                              ; c1 e3 02
     11136    add bx, si                                ; 01 f3
     11137    mov word [es:bx+001d8h], di               ; 26 89 bf d8 01
     11138    mov ah, byte [bp-006h]                    ; 8a 66 fa
     11139    mov byte [es:bx+001dah], ah               ; 26 88 a7 da 01
     11140    movzx dx, al                              ; 0f b6 d0
    1065911141    imul dx, dx, strict byte 00018h           ; 6b d2 18
    1066011142    mov bx, si                                ; 89 f3
     
    1066211144    db  066h, 026h, 0c7h, 047h, 01eh, 004h, 0ffh, 000h, 000h
    1066311145    ; mov dword [es:bx+01eh], strict dword 00000ff04h ; 66 26 c7 47 1e 04 ff 00 00
    10664     mov dx, word [bp-00ch]                    ; 8b 56 f4
     11146    mov dx, word [bp-012h]                    ; 8b 56 ee
    1066511147    mov word [es:bx+024h], dx                 ; 26 89 57 24
    1066611148    mov byte [es:bx+023h], 001h               ; 26 c6 47 23 01
    10667     mov dx, word [bp-002h]                    ; 8b 56 fe
     11149    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1066811150    mov word [es:bx+026h], dx                 ; 26 89 57 26
    10669     mov dx, word [bp-004h]                    ; 8b 56 fc
     11151    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1067011152    mov word [es:bx+02ah], dx                 ; 26 89 57 2a
    10671     cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    10672     jne short 07612h                          ; 75 05
    10673     cmp ax, 00400h                            ; 3d 00 04
    10674     jbe short 0761ah                          ; 76 08
     11153    cmp word [bp-004h], strict byte 00000h    ; 83 7e fc 00
     11154    jne short 078f5h                          ; 75 06
     11155    cmp cx, 00400h                            ; 81 f9 00 04
     11156    jbe short 078fdh                          ; 76 08
    1067511157    mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
    10676     jmp short 0761eh                          ; eb 04
    10677     mov word [es:bx+028h], ax                 ; 26 89 47 28
    10678     movzx bx, ch                              ; 0f b6 dd
    10679     imul bx, bx, strict byte 00018h           ; 6b db 18
    10680     mov es, [bp-006h]                         ; 8e 46 fa
    10681     add bx, si                                ; 01 f3
    10682     mov dx, word [bp-002h]                    ; 8b 56 fe
     11158    jmp short 07901h                          ; eb 04
     11159    mov word [es:bx+028h], cx                 ; 26 89 4f 28
     11160    movzx dx, al                              ; 0f b6 d0
     11161    imul dx, dx, strict byte 00018h           ; 6b d2 18
     11162    mov es, [bp-00ah]                         ; 8e 46 f6
     11163    mov bx, si                                ; 89 f3
     11164    add bx, dx                                ; 01 d3
     11165    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1068311166    mov word [es:bx+02ch], dx                 ; 26 89 57 2c
    10684     mov dx, word [bp-004h]                    ; 8b 56 fc
     11167    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1068511168    mov word [es:bx+030h], dx                 ; 26 89 57 30
    10686     cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    10687     jne short 07642h                          ; 75 05
    10688     cmp ax, 00400h                            ; 3d 00 04
    10689     jbe short 0764ah                          ; 76 08
     11169    cmp word [bp-004h], strict byte 00000h    ; 83 7e fc 00
     11170    jne short 07928h                          ; 75 06
     11171    cmp cx, 00400h                            ; 81 f9 00 04
     11172    jbe short 07930h                          ; 76 08
    1069011173    mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
    10691     jmp short 0764eh                          ; eb 04
    10692     mov word [es:bx+02eh], ax                 ; 26 89 47 2e
    10693     movzx bx, ch                              ; 0f b6 dd
    10694     imul bx, bx, strict byte 00018h           ; 6b db 18
    10695     mov es, [bp-006h]                         ; 8e 46 fa
    10696     add bx, si                                ; 01 f3
    10697     mov ax, word [bp-00ah]                    ; 8b 46 f6
     11174    jmp short 07934h                          ; eb 04
     11175    mov word [es:bx+02eh], cx                 ; 26 89 4f 2e
     11176    xor ah, ah                                ; 30 e4
     11177    imul ax, ax, strict byte 00018h           ; 6b c0 18
     11178    mov es, [bp-00ah]                         ; 8e 46 f6
     11179    mov bx, si                                ; 89 f3
     11180    add bx, ax                                ; 01 c3
     11181    mov ax, word [bp-010h]                    ; 8b 46 f0
    1069811182    mov word [es:bx+032h], ax                 ; 26 89 47 32
    10699     mov word [es:bx+034h], di                 ; 26 89 7f 34
     11183    mov ax, word [bp-008h]                    ; 8b 46 f8
     11184    mov word [es:bx+034h], ax                 ; 26 89 47 34
    1070011185    mov al, byte [es:si+0019eh]               ; 26 8a 84 9e 01
    10701     mov ah, cl                                ; 88 cc
     11186    mov ah, byte [bp-002h]                    ; 8a 66 fe
    1070211187    add ah, 008h                              ; 80 c4 08
    1070311188    movzx bx, al                              ; 0f b6 d8
     
    1070911194    mov dx, strict word 00075h                ; ba 75 00
    1071011195    mov ax, strict word 00040h                ; b8 40 00
    10711     call 01600h                               ; e8 78 9f
     11196    call 01600h                               ; e8 8d 9c
    1071211197    db  0feh, 0c0h
    1071311198    ; inc al                                    ; fe c0
     
    1071511200    mov dx, strict word 00075h                ; ba 75 00
    1071611201    mov ax, strict word 00040h                ; b8 40 00
    10717     call 0160eh                               ; e8 78 9f
    10718     db  0feh, 0c1h
    10719     ; inc cl                                    ; fe c1
    10720     mov es, [bp-006h]                         ; 8e 46 fa
    10721     mov byte [es:si+001e8h], cl               ; 26 88 8c e8 01
    10722     inc word [bp-008h]                        ; ff 46 f8
    10723     cmp word [bp-008h], strict byte 00010h    ; 83 7e f8 10
    10724     jnl short 076fah                          ; 7d 51
    10725     mov byte [bp-01ah], 012h                  ; c6 46 e6 12
     11202    call 0160eh                               ; e8 8d 9c
     11203    inc byte [bp-002h]                        ; fe 46 fe
     11204    mov al, byte [bp-002h]                    ; 8a 46 fe
     11205    mov es, [bp-00ah]                         ; 8e 46 f6
     11206    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
     11207    jmp short 079fah                          ; eb 69
     11208    mov al, byte [bp-002h]                    ; 8a 46 fe
     11209    add AL, strict byte 008h                  ; 04 08
     11210    test byte [bp-0021dh], 080h               ; f6 86 e3 fd 80
     11211    db  00fh, 095h, 0c4h
     11212    ; setne ah                                  ; 0f 95 c4
     11213    movzx dx, ah                              ; 0f b6 d4
     11214    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     11215    sal bx, 002h                              ; c1 e3 02
     11216    mov es, [bp-00ah]                         ; 8e 46 f6
     11217    add bx, si                                ; 01 f3
     11218    mov word [es:bx+001d8h], di               ; 26 89 bf d8 01
     11219    mov ah, byte [bp-006h]                    ; 8a 66 fa
     11220    mov byte [es:bx+001dah], ah               ; 26 88 a7 da 01
     11221    xor ah, ah                                ; 30 e4
     11222    imul ax, ax, strict byte 00018h           ; 6b c0 18
     11223    mov bx, si                                ; 89 f3
     11224    add bx, ax                                ; 01 c3
     11225    mov word [es:bx+01eh], 00504h             ; 26 c7 47 1e 04 05
     11226    mov byte [es:bx+020h], dl                 ; 26 88 57 20
     11227    mov word [es:bx+024h], 00800h             ; 26 c7 47 24 00 08
     11228    mov al, byte [es:si+001afh]               ; 26 8a 84 af 01
     11229    mov ah, byte [bp-002h]                    ; 8a 66 fe
     11230    add ah, 008h                              ; 80 c4 08
     11231    movzx bx, al                              ; 0f b6 d8
     11232    add bx, si                                ; 01 f3
     11233    mov byte [es:bx+001b0h], ah               ; 26 88 a7 b0 01
     11234    db  0feh, 0c0h
     11235    ; inc al                                    ; fe c0
     11236    mov byte [es:si+001afh], al               ; 26 88 84 af 01
     11237    inc byte [bp-002h]                        ; fe 46 fe
     11238    mov al, byte [bp-002h]                    ; 8a 46 fe
     11239    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
     11240    inc word [bp-006h]                        ; ff 46 fa
     11241    cmp word [bp-006h], strict byte 00010h    ; 83 7e fa 10
     11242    jnl short 07a69h                          ; 7d 66
     11243    mov byte [bp-01eh], 012h                  ; c6 46 e2 12
    1072611244    xor al, al                                ; 30 c0
     11245    mov byte [bp-01dh], al                    ; 88 46 e3
     11246    mov byte [bp-01ch], al                    ; 88 46 e4
     11247    mov byte [bp-01bh], al                    ; 88 46 e5
     11248    mov byte [bp-01ah], 005h                  ; c6 46 e6 05
    1072711249    mov byte [bp-019h], al                    ; 88 46 e7
    10728     mov byte [bp-018h], al                    ; 88 46 e8
    10729     mov byte [bp-017h], al                    ; 88 46 e9
    10730     mov byte [bp-016h], 005h                  ; c6 46 ea 05
    10731     mov byte [bp-015h], al                    ; 88 46 eb
    10732     push strict byte 00005h                   ; 6a 05
    10733     lea dx, [bp-0021ah]                       ; 8d 96 e6 fd
     11250    push dword 000000005h                     ; 66 6a 05
     11251    lea dx, [bp-0021eh]                       ; 8d 96 e2 fd
    1073411252    push SS                                   ; 16
    1073511253    push dx                                   ; 52
    1073611254    push strict byte 00006h                   ; 6a 06
    10737     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     11255    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    1073811256    mov cx, ss                                ; 8c d1
    10739     lea bx, [bp-01ah]                         ; 8d 5e e6
    10740     mov ax, word [bp-0021ch]                  ; 8b 86 e4 fd
    10741     call 07271h                               ; e8 98 fb
     11257    lea bx, [bp-01eh]                         ; 8d 5e e2
     11258    mov ax, di                                ; 89 f8
     11259    call 073b3h                               ; e8 81 f9
    1074211260    test al, al                               ; 84 c0
    10743     je short 076e8h                           ; 74 0b
    10744     push 00af9h                               ; 68 f9 0a
     11261    je short 07a44h                           ; 74 0e
     11262    push 00b29h                               ; 68 29 0b
     11263    push 00b49h                               ; 68 49 0b
    1074511264    push strict byte 00007h                   ; 6a 07
    10746     call 018e9h                               ; e8 04 a2
    10747     add sp, strict byte 00004h                ; 83 c4 04
    10748     test byte [bp-0021ah], 0e0h               ; f6 86 e6 fd e0
    10749     jne short 076a0h                          ; 75 b1
    10750     test byte [bp-0021ah], 01fh               ; f6 86 e6 fd 1f
    10751     je near 0749dh                            ; 0f 84 a5 fd
    10752     jmp short 076a0h                          ; eb a6
     11265    call 018e9h                               ; e8 a8 9e
     11266    add sp, strict byte 00006h                ; 83 c4 06
     11267    test byte [bp-0021eh], 0e0h               ; f6 86 e2 fd e0
     11268    jne short 07a54h                          ; 75 09
     11269    test byte [bp-0021eh], 01fh               ; f6 86 e2 fd 1f
     11270    je near 07779h                            ; 0f 84 25 fd
     11271    test byte [bp-0021eh], 0e0h               ; f6 86 e2 fd e0
     11272    jne short 079fah                          ; 75 9f
     11273    mov al, byte [bp-0021eh]                  ; 8a 86 e2 fd
     11274    and AL, strict byte 01fh                  ; 24 1f
     11275    cmp AL, strict byte 005h                  ; 3c 05
     11276    je near 07991h                            ; 0f 84 2a ff
     11277    jmp short 079fah                          ; eb 91
    1075311278    leave                                     ; c9
    1075411279    pop di                                    ; 5f
     
    1075811283    pop bx                                    ; 5b
    1075911284    retn                                      ; c3
    10760 _scsi_init:                                  ; 0xf7701 LB 0x64
     11285_scsi_init:                                  ; 0xf7a70 LB 0x64
    1076111286    push bp                                   ; 55
    1076211287    mov bp, sp                                ; 89 e5
    1076311288    mov dx, strict word 0000eh                ; ba 0e 00
    1076411289    mov ax, strict word 00040h                ; b8 40 00
    10765     call 0161ch                               ; e8 0f 9f
     11290    call 0161ch                               ; e8 a0 9b
    1076611291    mov bx, 00122h                            ; bb 22 01
    1076711292    mov es, ax                                ; 8e c0
     
    1077411299    ; sub ah, ah                                ; 2a e4
    1077511300    cmp AL, strict byte 055h                  ; 3c 55
    10776     jne short 07731h                          ; 75 0c
     11301    jne short 07aa0h                          ; 75 0c
    1077711302    xor al, al                                ; 30 c0
    1077811303    mov dx, 00333h                            ; ba 33 03
    1077911304    out DX, AL                                ; ee
    1078011305    mov ax, 00330h                            ; b8 30 03
    10781     call 0747ch                               ; e8 4b fd
     11306    call 07757h                               ; e8 b7 fc
    1078211307    mov AL, strict byte 055h                  ; b0 55
    1078311308    mov dx, 00342h                            ; ba 42 03
     
    1078711312    ; sub ah, ah                                ; 2a e4
    1078811313    cmp AL, strict byte 055h                  ; 3c 55
    10789     jne short 0774ah                          ; 75 0c
     11314    jne short 07ab9h                          ; 75 0c
    1079011315    xor al, al                                ; 30 c0
    1079111316    mov dx, 00343h                            ; ba 43 03
    1079211317    out DX, AL                                ; ee
    1079311318    mov ax, 00340h                            ; b8 40 03
    10794     call 0747ch                               ; e8 32 fd
     11319    call 07757h                               ; e8 9e fc
    1079511320    mov AL, strict byte 055h                  ; b0 55
    1079611321    mov dx, 00352h                            ; ba 52 03
     
    1080011325    ; sub ah, ah                                ; 2a e4
    1080111326    cmp AL, strict byte 055h                  ; 3c 55
    10802     jne short 07763h                          ; 75 0c
     11327    jne short 07ad2h                          ; 75 0c
    1080311328    xor al, al                                ; 30 c0
    1080411329    mov dx, 00353h                            ; ba 53 03
    1080511330    out DX, AL                                ; ee
    1080611331    mov ax, 00350h                            ; b8 50 03
    10807     call 0747ch                               ; e8 19 fd
     11332    call 07757h                               ; e8 85 fc
    1080811333    pop bp                                    ; 5d
    1080911334    retn                                      ; c3
    10810 high_bits_save_:                             ; 0xf7765 LB 0x14
     11335high_bits_save_:                             ; 0xf7ad4 LB 0x14
    1081111336    push bx                                   ; 53
    1081211337    push bp                                   ; 55
     
    1081911344    pop bx                                    ; 5b
    1082011345    retn                                      ; c3
    10821 high_bits_restore_:                          ; 0xf7779 LB 0x14
     11346high_bits_restore_:                          ; 0xf7ae8 LB 0x14
    1082211347    push bx                                   ; 53
    1082311348    push bp                                   ; 55
     
    1083011355    pop bx                                    ; 5b
    1083111356    retn                                      ; c3
    10832 ahci_ctrl_set_bits_:                         ; 0xf778d LB 0x40
     11357ahci_ctrl_set_bits_:                         ; 0xf7afc LB 0x40
    1083311358    push si                                   ; 56
    1083411359    push di                                   ; 57
     
    1086511390    pop si                                    ; 5e
    1086611391    retn                                      ; c3
    10867 ahci_ctrl_clear_bits_:                       ; 0xf77cd LB 0x44
     11392ahci_ctrl_clear_bits_:                       ; 0xf7b3c LB 0x44
    1086811393    push si                                   ; 56
    1086911394    push di                                   ; 57
     
    1090211427    pop si                                    ; 5e
    1090311428    retn                                      ; c3
    10904 ahci_ctrl_is_bit_set_:                       ; 0xf7811 LB 0x36
     11429ahci_ctrl_is_bit_set_:                       ; 0xf7b80 LB 0x36
    1090511430    push si                                   ; 56
    1090611431    push di                                   ; 57
     
    1092411449    xchg dx, ax                               ; 92
    1092511450    test dx, di                               ; 85 fa
    10926     jne short 0783dh                          ; 75 04
     11451    jne short 07bach                          ; 75 04
    1092711452    test ax, bx                               ; 85 d8
    10928     je short 07841h                           ; 74 04
     11453    je short 07bb0h                           ; 74 04
    1092911454    mov AL, strict byte 001h                  ; b0 01
    10930     jmp short 07843h                          ; eb 02
     11455    jmp short 07bb2h                          ; eb 02
    1093111456    xor al, al                                ; 30 c0
    1093211457    pop bp                                    ; 5d
     
    1093411459    pop si                                    ; 5e
    1093511460    retn                                      ; c3
    10936 ahci_ctrl_extract_bits_:                     ; 0xf7847 LB 0x1b
     11461ahci_ctrl_extract_bits_:                     ; 0xf7bb6 LB 0x1b
    1093711462    push si                                   ; 56
    1093811463    push bp                                   ; 55
     
    1094211467    and dx, cx                                ; 21 ca
    1094311468    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
    10944     jcxz 0785dh                               ; e3 06
     11469    jcxz 07bcch                               ; e3 06
    1094511470    shr dx, 1                                 ; d1 ea
    1094611471    rcr ax, 1                                 ; d1 d8
    10947     loop 07857h                               ; e2 fa
     11472    loop 07bc6h                               ; e2 fa
    1094811473    pop bp                                    ; 5d
    1094911474    pop si                                    ; 5e
    1095011475    retn 00002h                               ; c2 02 00
    10951 ahci_addr_to_phys_:                          ; 0xf7862 LB 0x1e
     11476ahci_addr_to_phys_:                          ; 0xf7bd1 LB 0x1e
    1095211477    push bx                                   ; 53
    1095311478    push cx                                   ; 51
     
    1096011485    sal ax, 1                                 ; d1 e0
    1096111486    rcl dx, 1                                 ; d1 d2
    10962     loop 07870h                               ; e2 fa
     11487    loop 07bdfh                               ; e2 fa
    1096311488    xor cx, cx                                ; 31 c9
    1096411489    add ax, bx                                ; 01 d8
     
    1096811493    pop bx                                    ; 5b
    1096911494    retn                                      ; c3
    10970 ahci_port_cmd_sync_:                         ; 0xf7880 LB 0xd0
     11495ahci_port_cmd_sync_:                         ; 0xf7bef LB 0xd0
    1097111496    push cx                                   ; 51
    1097211497    push si                                   ; 56
     
    1098011505    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
    1098111506    cmp AL, strict byte 0ffh                  ; 3c ff
    10982     je near 0794bh                            ; 0f 84 aa 00
     11507    je near 07cbah                            ; 0f 84 aa 00
    1098311508    movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
    1098411509    xor dx, dx                                ; 31 d2
     
    1099211517    lea ax, [si+00080h]                       ; 8d 84 80 00
    1099311518    mov dx, es                                ; 8c c2
    10994     call 07862h                               ; e8 98 ff
     11519    call 07bd1h                               ; e8 98 ff
    1099511520    mov es, [bp-004h]                         ; 8e 46 fc
    1099611521    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1100211527    xor cx, cx                                ; 31 c9
    1100311528    mov ax, di                                ; 89 f8
    11004     call 0778dh                               ; e8 a3 fe
     11529    call 07afch                               ; e8 a3 fe
    1100511530    lea ax, [si+00138h]                       ; 8d 84 38 01
    1100611531    cwd                                       ; 99
     
    1102911554    mov dx, si                                ; 89 f2
    1103011555    mov ax, di                                ; 89 f8
    11031     call 07811h                               ; e8 e7 fe
     11556    call 07b80h                               ; e8 e7 fe
    1103211557    test al, al                               ; 84 c0
    11033     je short 0790dh                           ; 74 df
     11558    je short 07c7ch                           ; 74 df
    1103411559    mov bx, strict word 00001h                ; bb 01 00
    1103511560    xor cx, cx                                ; 31 c9
    1103611561    mov dx, si                                ; 89 f2
    1103711562    mov ax, di                                ; 89 f8
    11038     call 0778dh                               ; e8 53 fe
     11563    call 07afch                               ; e8 53 fe
    1103911564    mov dx, word [bp-006h]                    ; 8b 56 fa
    1104011565    add dx, 00118h                            ; 81 c2 18 01
     
    1104211567    xor cx, cx                                ; 31 c9
    1104311568    mov ax, di                                ; 89 f8
    11044     call 077cdh                               ; e8 82 fe
     11569    call 07b3ch                               ; e8 82 fe
    1104511570    leave                                     ; c9
    1104611571    pop di                                    ; 5f
     
    1104811573    pop cx                                    ; 59
    1104911574    retn                                      ; c3
    11050 ahci_cmd_data_:                              ; 0xf7950 LB 0x1c5
     11575ahci_cmd_data_:                              ; 0xf7cbf LB 0x1c5
    1105111576    push cx                                   ; 51
    1105211577    push si                                   ; 56
     
    1107011595    mov ax, 00080h                            ; b8 80 00
    1107111596    mov dx, word [bp-004h]                    ; 8b 56 fc
    11072     call 08caah                               ; e8 1d 13
     11597    call 0902ah                               ; e8 2e 13
    1107311598    mov es, [bp-004h]                         ; 8e 46 fc
    1107411599    mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
     
    1108611611    shr bx, 1                                 ; d1 eb
    1108711612    rcr ax, 1                                 ; d1 d8
    11088     loop 079c0h                               ; e2 fa
     11613    loop 07d2fh                               ; e2 fa
    1108911614    mov es, [bp-004h]                         ; 8e 46 fc
    1109011615    mov byte [es:si+00085h], al               ; 26 88 84 85 00
     
    1111111636    mov bx, word [bp-010h]                    ; 8b 5e f0
    1111211637    xor cx, cx                                ; 31 c9
    11113     call 08c79h                               ; e8 50 12
     11638    call 08ff9h                               ; e8 61 12
    1111411639    push dx                                   ; 52
    1111511640    push ax                                   ; 50
     
    1111911644    mov ax, 0026ah                            ; b8 6a 02
    1112011645    mov dx, word [bp-004h]                    ; 8b 56 fc
    11121     call 08b9dh                               ; e8 5e 11
     11646    call 08f14h                               ; e8 66 11
    1112211647    mov es, [bp-004h]                         ; 8e 46 fc
    1112311648    movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
     
    1113911664    mov es, [bp-00ch]                         ; 8e 46 f4
    1114011665    cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
    11141     je short 07ab8h                           ; 74 2c
     11666    je short 07e27h                           ; 74 2c
    1114211667    mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
    1114311668    dec dx                                    ; 4a
     
    1115811683    movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
    1115911684    cmp ax, dx                                ; 39 d0
    11160     jnc short 07ad2h                          ; 73 03
     11685    jnc short 07e41h                          ; 73 03
    1116111686    inc ax                                    ; 40
    11162     jmp short 07ac2h                          ; eb f0
     11687    jmp short 07e31h                          ; eb f0
    1116311688    mov al, byte [bp-002h]                    ; 8a 46 fe
    1116411689    cmp AL, strict byte 035h                  ; 3c 35
    11165     jne short 07adfh                          ; 75 06
     11690    jne short 07e4eh                          ; 75 06
    1116611691    mov byte [bp-002h], 040h                  ; c6 46 fe 40
    11167     jmp short 07af3h                          ; eb 14
     11692    jmp short 07e62h                          ; eb 14
    1116811693    cmp AL, strict byte 0a0h                  ; 3c a0
    11169     jne short 07aefh                          ; 75 0c
     11694    jne short 07e5eh                          ; 75 0c
    1117011695    or byte [bp-002h], 020h                   ; 80 4e fe 20
    1117111696    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    11172     jmp short 07af3h                          ; eb 04
     11697    jmp short 07e62h                          ; eb 04
    1117311698    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    1117411699    or byte [bp-002h], 005h                   ; 80 4e fe 05
     
    1117611701    mov ax, word [bp-008h]                    ; 8b 46 f8
    1117711702    mov dx, word [bp-006h]                    ; 8b 56 fa
    11178     call 07880h                               ; e8 7c fd
     11703    call 07befh                               ; e8 7c fd
    1117911704    mov ax, word [bp-008h]                    ; 8b 46 f8
    1118011705    add ax, 0026ah                            ; 05 6a 02
    1118111706    mov dx, word [bp-006h]                    ; 8b 56 fa
    11182     call 08c13h                               ; e8 03 11
     11707    call 08f8ah                               ; e8 0b 11
    1118311708    leave                                     ; c9
    1118411709    pop di                                    ; 5f
     
    1118611711    pop cx                                    ; 59
    1118711712    retn                                      ; c3
    11188 ahci_port_deinit_current_:                   ; 0xf7b15 LB 0x13f
     11713ahci_port_deinit_current_:                   ; 0xf7e84 LB 0x13f
    1118911714    push bx                                   ; 53
    1119011715    push cx                                   ; 51
     
    1119911724    mov byte [bp-002h], al                    ; 88 46 fe
    1120011725    cmp AL, strict byte 0ffh                  ; 3c ff
    11201     je near 07c4eh                            ; 0f 84 17 01
     11726    je near 07fbdh                            ; 0f 84 17 01
    1120211727    movzx dx, al                              ; 0f b6 d0
    1120311728    sal dx, 007h                              ; c1 e2 07
     
    1120611731    xor cx, cx                                ; 31 c9
    1120711732    mov ax, si                                ; 89 f0
    11208     call 077cdh                               ; e8 82 fc
     11733    call 07b3ch                               ; e8 82 fc
    1120911734    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    1121011735    sal ax, 007h                              ; c1 e0 07
     
    1121511740    xor cx, cx                                ; 31 c9
    1121611741    mov ax, si                                ; 89 f0
    11217     call 07811h                               ; e8 ac fc
     11742    call 07b80h                               ; e8 ac fc
    1121811743    cmp AL, strict byte 001h                  ; 3c 01
    11219     je short 07b4bh                           ; 74 e2
     11744    je short 07ebah                           ; 74 e2
    1122011745    mov cx, strict word 00020h                ; b9 20 00
    1122111746    xor bx, bx                                ; 31 db
    1122211747    mov ax, di                                ; 89 f8
    1122311748    mov dx, word [bp-004h]                    ; 8b 56 fc
    11224     call 08caah                               ; e8 34 11
     11749    call 0902ah                               ; e8 45 11
    1122511750    lea ax, [di+00080h]                       ; 8d 85 80 00
    1122611751    mov cx, strict word 00040h                ; b9 40 00
    1122711752    xor bx, bx                                ; 31 db
    1122811753    mov dx, word [bp-004h]                    ; 8b 56 fc
    11229     call 08caah                               ; e8 25 11
     11754    call 0902ah                               ; e8 36 11
    1123011755    lea ax, [di+00200h]                       ; 8d 85 00 02
    1123111756    mov cx, strict word 00060h                ; b9 60 00
    1123211757    xor bx, bx                                ; 31 db
    1123311758    mov dx, word [bp-004h]                    ; 8b 56 fc
    11234     call 08caah                               ; e8 16 11
     11759    call 0902ah                               ; e8 27 11
    1123511760    mov ax, word [bp-006h]                    ; 8b 46 fa
    1123611761    add ax, 00108h                            ; 05 08 01
     
    1133311858    pop bx                                    ; 5b
    1133411859    retn                                      ; c3
    11335 ahci_port_init_:                             ; 0xf7c54 LB 0x201
     11860ahci_port_init_:                             ; 0xf7fc3 LB 0x201
    1133611861    push cx                                   ; 51
    1133711862    push si                                   ; 56
     
    1134111866    mov word [bp-004h], dx                    ; 89 56 fc
    1134211867    mov byte [bp-002h], bl                    ; 88 5e fe
    11343     call 07b15h                               ; e8 af fe
     11868    call 07e84h                               ; e8 af fe
    1134411869    movzx dx, bl                              ; 0f b6 d3
    1134511870    sal dx, 007h                              ; c1 e2 07
     
    1134911874    mov bx, strict word 00011h                ; bb 11 00
    1135011875    xor cx, cx                                ; 31 c9
    11351     call 077cdh                               ; e8 4d fb
     11876    call 07b3ch                               ; e8 4d fb
    1135211877    movzx di, byte [bp-002h]                  ; 0f b6 7e fe
    1135311878    sal di, 007h                              ; c1 e7 07
     
    1135711882    mov bx, 0c011h                            ; bb 11 c0
    1135811883    xor cx, cx                                ; 31 c9
    11359     call 07811h                               ; e8 76 fb
     11884    call 07b80h                               ; e8 76 fb
    1136011885    cmp AL, strict byte 001h                  ; 3c 01
    11361     je short 07c80h                           ; 74 e1
     11886    je short 07fefh                           ; 74 e1
    1136211887    mov cx, strict word 00020h                ; b9 20 00
    1136311888    xor bx, bx                                ; 31 db
    1136411889    mov ax, si                                ; 89 f0
    1136511890    mov dx, word [bp-004h]                    ; 8b 56 fc
    11366     call 08caah                               ; e8 fe 0f
     11891    call 0902ah                               ; e8 0f 10
    1136711892    lea ax, [si+00080h]                       ; 8d 84 80 00
    1136811893    mov cx, strict word 00040h                ; b9 40 00
    1136911894    xor bx, bx                                ; 31 db
    1137011895    mov dx, word [bp-004h]                    ; 8b 56 fc
    11371     call 08caah                               ; e8 ef 0f
     11896    call 0902ah                               ; e8 00 10
    1137211897    mov ax, si                                ; 89 f0
    1137311898    add ah, 002h                              ; 80 c4 02
     
    1137611901    xor bx, bx                                ; 31 db
    1137711902    mov dx, word [bp-004h]                    ; 8b 56 fc
    11378     call 08caah                               ; e8 dc 0f
     11903    call 0902ah                               ; e8 ed 0f
    1137911904    lea ax, [di+00108h]                       ; 8d 85 08 01
    1138011905    cwd                                       ; 99
     
    1139011915    mov ax, word [bp-006h]                    ; 8b 46 fa
    1139111916    mov dx, word [bp-004h]                    ; 8b 56 fc
    11392     call 07862h                               ; e8 71 fb
     11917    call 07bd1h                               ; e8 71 fb
    1139311918    mov es, [bp-004h]                         ; 8e 46 fc
    1139411919    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1143511960    mov ax, si                                ; 89 f0
    1143611961    mov dx, word [bp-004h]                    ; 8b 56 fc
    11437     call 07862h                               ; e8 05 fb
     11962    call 07bd1h                               ; e8 05 fb
    1143811963    mov es, [bp-004h]                         ; 8e 46 fc
    1143911964    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1153912064    pop cx                                    ; 59
    1154012065    retn                                      ; c3
    11541 @ahci_read_sectors:                          ; 0xf7e55 LB 0x91
     12066@ahci_read_sectors:                          ; 0xf81c4 LB 0x91
    1154212067    push si                                   ; 56
    1154312068    push di                                   ; 57
     
    1154812073    sub di, strict byte 0000ch                ; 83 ef 0c
    1154912074    cmp di, strict byte 00004h                ; 83 ff 04
    11550     jbe short 07e79h                          ; 76 0f
     12075    jbe short 081e8h                          ; 76 0f
    1155112076    push di                                   ; 57
    11552     push 00b9ah                               ; 68 9a 0b
    11553     push 00bach                               ; 68 ac 0b
     12077    push 00bb0h                               ; 68 b0 0b
     12078    push 00bc2h                               ; 68 c2 0b
    1155412079    push strict byte 00007h                   ; 6a 07
    11555     call 018e9h                               ; e8 73 9a
     12080    call 018e9h                               ; e8 04 97
    1155612081    add sp, strict byte 00008h                ; 83 c4 08
    1155712082    les bx, [bp+008h]                         ; c4 5e 08
    1155812083    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
    1155912084    xor ax, ax                                ; 31 c0
    11560     call 07765h                               ; e8 df f8
     12085    call 07ad4h                               ; e8 df f8
    1156112086    mov es, [bp+00ah]                         ; 8e 46 0a
    1156212087    add di, bx                                ; 01 df
     
    1156512090    mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
    1156612091    xor ax, ax                                ; 31 c0
    11567     call 07c54h                               ; e8 b6 fd
     12092    call 07fc3h                               ; e8 b6 fd
    1156812093    mov bx, strict word 00025h                ; bb 25 00
    1156912094    mov ax, di                                ; 89 f8
    1157012095    mov dx, word [bp+00ah]                    ; 8b 56 0a
    11571     call 07950h                               ; e8 a7 fa
     12096    call 07cbfh                               ; e8 a7 fa
    1157212097    mov es, [bp+00ah]                         ; 8e 46 0a
    1157312098    mov bx, di                                ; 89 fb
     
    1158912114    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
    1159012115    xor ax, ax                                ; 31 c0
    11591     call 07779h                               ; e8 9b f8
     12116    call 07ae8h                               ; e8 9b f8
    1159212117    xor ax, ax                                ; 31 c0
    1159312118    pop bp                                    ; 5d
     
    1159512120    pop si                                    ; 5e
    1159612121    retn 00004h                               ; c2 04 00
    11597 @ahci_write_sectors:                         ; 0xf7ee6 LB 0x6d
     12122@ahci_write_sectors:                         ; 0xf8255 LB 0x6d
    1159812123    push si                                   ; 56
    1159912124    push bp                                   ; 55
     
    1160512130    sub bx, strict byte 0000ch                ; 83 eb 0c
    1160612131    cmp bx, strict byte 00004h                ; 83 fb 04
    11607     jbe short 07f0eh                          ; 76 0f
     12132    jbe short 0827dh                          ; 76 0f
    1160812133    push bx                                   ; 53
    11609     push 00bcbh                               ; 68 cb 0b
    11610     push 00bach                               ; 68 ac 0b
     12134    push 00be1h                               ; 68 e1 0b
     12135    push 00bc2h                               ; 68 c2 0b
    1161112136    push strict byte 00007h                   ; 6a 07
    11612     call 018e9h                               ; e8 de 99
     12137    call 018e9h                               ; e8 6f 96
    1161312138    add sp, strict byte 00008h                ; 83 c4 08
    1161412139    mov es, cx                                ; 8e c1
    1161512140    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1161612141    xor ax, ax                                ; 31 c0
    11617     call 07765h                               ; e8 4b f8
     12142    call 07ad4h                               ; e8 4b f8
    1161812143    mov es, cx                                ; 8e c1
    1161912144    add bx, si                                ; 01 f3
     
    1162112146    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1162212147    xor ax, ax                                ; 31 c0
    11623     call 07c54h                               ; e8 26 fd
     12148    call 07fc3h                               ; e8 26 fd
    1162412149    mov bx, strict word 00035h                ; bb 35 00
    1162512150    mov ax, si                                ; 89 f0
    1162612151    mov dx, cx                                ; 89 ca
    11627     call 07950h                               ; e8 18 fa
     12152    call 07cbfh                               ; e8 18 fa
    1162812153    mov es, cx                                ; 8e c1
    1162912154    mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
     
    1163112156    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1163212157    xor ax, ax                                ; 31 c0
    11633     call 07779h                               ; e8 2d f8
     12158    call 07ae8h                               ; e8 2d f8
    1163412159    xor ax, ax                                ; 31 c0
    1163512160    pop bp                                    ; 5d
    1163612161    pop si                                    ; 5e
    1163712162    retn 00004h                               ; c2 04 00
    11638 ahci_cmd_packet_:                            ; 0xf7f53 LB 0x16e
     12163ahci_cmd_packet_:                            ; 0xf82c2 LB 0x16e
    1163912164    push si                                   ; 56
    1164012165    push di                                   ; 57
     
    1164612171    mov dx, strict word 0000eh                ; ba 0e 00
    1164712172    mov ax, strict word 00040h                ; b8 40 00
    11648     call 0161ch                               ; e8 b0 96
     12173    call 0161ch                               ; e8 41 93
    1164912174    mov si, 00122h                            ; be 22 01
    1165012175    mov word [bp-004h], ax                    ; 89 46 fc
    1165112176    cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
    11652     jne short 07f97h                          ; 75 1f
    11653     mov bx, 00cd6h                            ; bb d6 0c
     12177    jne short 08306h                          ; 75 1f
     12178    mov bx, 00cech                            ; bb ec 0c
    1165412179    mov cx, ds                                ; 8c d9
    1165512180    mov ax, strict word 00004h                ; b8 04 00
    11656     call 018aeh                               ; e8 2b 99
    11657     push 00bdeh                               ; 68 de 0b
    11658     push 00beeh                               ; 68 ee 0b
     12181    call 018aeh                               ; e8 bc 95
     12182    push 00bf4h                               ; 68 f4 0b
     12183    push 00c04h                               ; 68 04 0c
    1165912184    push strict byte 00004h                   ; 6a 04
    11660     call 018e9h                               ; e8 5b 99
     12185    call 018e9h                               ; e8 ec 95
    1166112186    add sp, strict byte 00006h                ; 83 c4 06
    1166212187    mov ax, strict word 00001h                ; b8 01 00
    11663     jmp near 080bbh                           ; e9 24 01
     12188    jmp near 0842ah                           ; e9 24 01
    1166412189    test byte [bp+008h], 001h                 ; f6 46 08 01
    11665     jne short 07f91h                          ; 75 f4
     12190    jne short 08300h                          ; 75 f4
    1166612191    mov ax, word [bp+00ah]                    ; 8b 46 0a
    1166712192    mov dx, word [bp+00ch]                    ; 8b 56 0c
     
    1166912194    sal ax, 1                                 ; d1 e0
    1167012195    rcl dx, 1                                 ; d1 d2
    11671     loop 07fa6h                               ; e2 fa
     12196    loop 08315h                               ; e2 fa
    1167212197    mov es, [bp-004h]                         ; 8e 46 fc
    1167312198    mov word [es:si], ax                      ; 26 89 04
     
    1168112206    mov dx, word [bp+00ch]                    ; 8b 56 0c
    1168212207    xor cx, cx                                ; 31 c9
    11683     call 08c40h                               ; e8 6d 0c
     12208    call 08fc0h                               ; e8 7e 0c
    1168412209    mov word [es:si+00ah], ax                 ; 26 89 44 0a
    1168512210    xor di, di                                ; 31 ff
     
    1169112216    xor ax, ax                                ; 31 c0
    1169212217    mov dx, word [bp-006h]                    ; 8b 56 fa
    11693     call 07765h                               ; e8 72 f7
     12218    call 07ad4h                               ; e8 72 f7
    1169412219    mov es, [bp-004h]                         ; 8e 46 fc
    1169512220    mov bx, word [bp-010h]                    ; 8b 5e f0
     
    1169812223    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1169912224    xor ax, ax                                ; 31 c0
    11700     call 07c54h                               ; e8 49 fc
     12225    call 07fc3h                               ; e8 49 fc
    1170112226    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    1170212227    push ax                                   ; 50
     
    1170512230    mov ax, 000c0h                            ; b8 c0 00
    1170612231    mov dx, word [bp-006h]                    ; 8b 56 fa
    11707     call 08cb7h                               ; e8 98 0c
     12232    call 09037h                               ; e8 a9 0c
    1170812233    mov es, [bp-004h]                         ; 8e 46 fc
    1170912234    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1171212237    mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
    1171312238    test ax, ax                               ; 85 c0
    11714     je short 0805dh                           ; 74 27
     12239    je short 083cch                           ; 74 27
    1171512240    dec ax                                    ; 48
    1171612241    mov es, [bp-006h]                         ; 8e 46 fa
     
    1172512250    mov ax, si                                ; 89 f0
    1172612251    mov dx, word [bp-004h]                    ; 8b 56 fc
    11727     call 07950h                               ; e8 e8 f8
     12252    call 07cbfh                               ; e8 e8 f8
    1172812253    les bx, [bp-00ah]                         ; c4 5e f6
    1172912254    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     
    1174812273    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1174912274    mov dx, word [bp-008h]                    ; 8b 56 f8
    11750     call 07779h                               ; e8 d2 f6
     12275    call 07ae8h                               ; e8 d2 f6
    1175112276    les bx, [bp-00ah]                         ; c4 5e f6
    1175212277    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1175312278    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    11754     jne short 080b9h                          ; 75 05
     12279    jne short 08428h                          ; 75 05
    1175512280    mov ax, strict word 00004h                ; b8 04 00
    11756     jmp short 080bbh                          ; eb 02
     12281    jmp short 0842ah                          ; eb 02
    1175712282    xor ax, ax                                ; 31 c0
    1175812283    leave                                     ; c9
     
    1176012285    pop si                                    ; 5e
    1176112286    retn 0000ch                               ; c2 0c 00
    11762 ahci_port_detect_device_:                    ; 0xf80c1 LB 0x3c3
     12287ahci_port_detect_device_:                    ; 0xf8430 LB 0x3cb
    1176312288    push cx                                   ; 51
    1176412289    push si                                   ; 56
    1176512290    push di                                   ; 57
    11766     enter 00220h, 000h                        ; c8 20 02 00
     12291    enter 00222h, 000h                        ; c8 22 02 00
    1176712292    mov di, ax                                ; 89 c7
    1176812293    mov word [bp-00ah], dx                    ; 89 56 f6
     
    1177012295    movzx cx, bl                              ; 0f b6 cb
    1177112296    mov bx, cx                                ; 89 cb
    11772     call 07c54h                               ; e8 7c fb
     12297    call 07fc3h                               ; e8 7c fb
    1177312298    mov dx, strict word 0000eh                ; ba 0e 00
    1177412299    mov ax, strict word 00040h                ; b8 40 00
    11775     call 0161ch                               ; e8 3b 95
    11776     mov word [bp-01eh], ax                    ; 89 46 e2
     12300    call 0161ch                               ; e8 cc 91
     12301    mov word [bp-01ah], ax                    ; 89 46 e6
    1177712302    mov si, 00122h                            ; be 22 01
    1177812303    mov word [bp-008h], ax                    ; 89 46 f8
    11779     mov word [bp-00eh], si                    ; 89 76 f2
     12304    mov word [bp-01ch], si                    ; 89 76 e4
    1178012305    mov word [bp-00ch], ax                    ; 89 46 f4
    1178112306    sal cx, 007h                              ; c1 e1 07
    11782     mov word [bp-012h], cx                    ; 89 4e ee
     12307    mov word [bp-016h], cx                    ; 89 4e ea
    1178312308    mov ax, cx                                ; 89 c8
    1178412309    add ax, 0012ch                            ; 05 2c 01
    1178512310    cwd                                       ; 99
    11786     mov word [bp-020h], ax                    ; 89 46 e0
     12311    mov word [bp-018h], ax                    ; 89 46 e8
    1178712312    mov bx, dx                                ; 89 d3
    1178812313    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1180612331    mov es, [bp-00ah]                         ; 8e 46 f6
    1180712332    mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
    11808     mov ax, word [bp-020h]                    ; 8b 46 e0
     12333    mov ax, word [bp-018h]                    ; 8b 46 e8
    1180912334    mov cx, bx                                ; 89 d9
    1181012335    xchg cx, ax                               ; 91
     
    1182312348    ; mov ax, cx                                ; 8b c1
    1182412349    out DX, eax                               ; 66 ef
    11825     mov ax, word [bp-012h]                    ; 8b 46 ee
     12350    mov ax, word [bp-016h]                    ; 8b 46 ea
    1182612351    add ax, 00128h                            ; 05 28 01
    1182712352    cwd                                       ; 99
     
    1184612371    mov bx, strict word 0000fh                ; bb 0f 00
    1184712372    xor cx, cx                                ; 31 c9
    11848     call 07847h                               ; e8 b2 f6
     12373    call 07bb6h                               ; e8 b2 f6
    1184912374    cmp ax, strict word 00003h                ; 3d 03 00
    11850     jne near 0847fh                           ; 0f 85 e3 02
     12375    jne near 087f6h                           ; 0f 85 eb 02
    1185112376    mov es, [bp-008h]                         ; 8e 46 f8
    1185212377    mov al, byte [es:si+001edh]               ; 26 8a 84 ed 01
    1185312378    mov byte [bp-004h], al                    ; 88 46 fc
    1185412379    cmp AL, strict byte 004h                  ; 3c 04
    11855     jnc near 0847fh                           ; 0f 83 d2 02
    11856     mov dx, word [bp-012h]                    ; 8b 56 ee
     12380    jnc near 087f6h                           ; 0f 83 da 02
     12381    mov dx, word [bp-016h]                    ; 8b 56 ea
    1185712382    add dx, 00118h                            ; 81 c2 18 01
    1185812383    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1186012385    mov bx, strict word 00010h                ; bb 10 00
    1186112386    xor cx, cx                                ; 31 c9
    11862     call 0778dh                               ; e8 c9 f5
    11863     mov ax, word [bp-012h]                    ; 8b 46 ee
     12387    call 07afch                               ; e8 c9 f5
     12388    mov ax, word [bp-016h]                    ; 8b 46 ea
    1186412389    add ax, 00124h                            ; 05 24 01
    1186512390    cwd                                       ; 99
     12391    mov es, [bp-00ah]                         ; 8e 46 f6
     12392    mov bx, word [es:di+00260h]               ; 26 8b 9d 60 02
    1186612393    mov cx, dx                                ; 89 d1
    11867     mov es, [bp-00ah]                         ; 8e 46 f6
    11868     mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     12394    mov dx, bx                                ; 89 da
    1186912395    xchg cx, ax                               ; 91
    1187012396    sal eax, 010h                             ; 66 c1 e0 10
     
    1188512411    add cl, 00ch                              ; 80 c1 0c
    1188612412    test dx, dx                               ; 85 d2
    11887     jne near 083d9h                           ; 0f 85 d7 01
     12413    jne near 08748h                           ; 0f 85 d5 01
    1188812414    cmp bx, 00101h                            ; 81 fb 01 01
    11889     jne near 083d9h                           ; 0f 85 cf 01
     12415    jne near 08748h                           ; 0f 85 cd 01
    1189012416    mov es, [bp-008h]                         ; 8e 46 f8
    1189112417    db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
    1189212418    ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00
    11893     lea dx, [bp-00220h]                       ; 8d 96 e0 fd
     12419    lea dx, [bp-00222h]                       ; 8d 96 de fd
    1189412420    mov word [es:si+004h], dx                 ; 26 89 54 04
    1189512421    mov [es:si+006h], ss                      ; 26 8c 54 06
     
    1189812424    mov bx, 000ech                            ; bb ec 00
    1189912425    mov ax, si                                ; 89 f0
    11900     mov dx, word [bp-01eh]                    ; 8b 56 e2
    11901     call 07950h                               ; e8 1b f7
     12426    mov dx, word [bp-01ah]                    ; 8b 56 e6
     12427    call 07cbfh                               ; e8 19 f7
    1190212428    mov byte [bp-006h], cl                    ; 88 4e fa
    11903     test byte [bp-00220h], 080h               ; f6 86 e0 fd 80
     12429    test byte [bp-00222h], 080h               ; f6 86 de fd 80
    1190412430    db  00fh, 095h, 0c0h
    1190512431    ; setne al                                  ; 0f 95 c0
    1190612432    xor ah, ah                                ; 30 e4
    11907     mov dx, word [bp-0021eh]                  ; 8b 96 e2 fd
    11908     mov word [bp-018h], dx                    ; 89 56 e8
    11909     mov dx, word [bp-0021ah]                  ; 8b 96 e6 fd
     12433    mov dx, word [bp-00220h]                  ; 8b 96 e0 fd
    1191012434    mov word [bp-014h], dx                    ; 89 56 ec
    11911     mov dx, word [bp-00214h]                  ; 8b 96 ec fd
    11912     mov word [bp-01ah], dx                    ; 89 56 e6
     12435    mov dx, word [bp-0021ch]                  ; 8b 96 e4 fd
     12436    mov word [bp-012h], dx                    ; 89 56 ee
     12437    mov dx, word [bp-00216h]                  ; 8b 96 ea fd
     12438    mov word [bp-010h], dx                    ; 89 56 f0
     12439    mov di, word [bp-001aah]                  ; 8b be 56 fe
    1191312440    mov dx, word [bp-001a8h]                  ; 8b 96 58 fe
    11914     mov word [bp-010h], dx                    ; 89 56 f0
    11915     mov di, word [bp-001a6h]                  ; 8b be 5a fe
    11916     cmp di, 00fffh                            ; 81 ff ff 0f
    11917     jne short 08278h                          ; 75 10
    11918     cmp dx, strict byte 0ffffh                ; 83 fa ff
    11919     jne short 08278h                          ; 75 0b
     12441    mov word [bp-00eh], dx                    ; 89 56 f2
     12442    cmp dx, 00fffh                            ; 81 fa ff 0f
     12443    jne short 085e9h                          ; 75 10
     12444    cmp di, strict byte 0ffffh                ; 83 ff ff
     12445    jne short 085e9h                          ; 75 0b
     12446    mov di, word [bp-0015ah]                  ; 8b be a6 fe
    1192012447    mov dx, word [bp-00158h]                  ; 8b 96 a8 fe
    11921     mov word [bp-010h], dx                    ; 89 56 f0
    11922     mov di, word [bp-00156h]                  ; 8b be aa fe
     12448    mov word [bp-00eh], dx                    ; 89 56 f2
    1192312449    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    1192412450    mov es, [bp-00ch]                         ; 8e 46 f4
    11925     add bx, word [bp-00eh]                    ; 03 5e f2
     12451    add bx, word [bp-01ch]                    ; 03 5e e4
    1192612452    mov ah, byte [bp-002h]                    ; 8a 66 fe
    1192712453    mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
    1192812454    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
    1192912455    imul dx, dx, strict byte 00018h           ; 6b d2 18
    11930     mov si, word [bp-00eh]                    ; 8b 76 f2
     12456    mov si, word [bp-01ch]                    ; 8b 76 e4
    1193112457    add si, dx                                ; 01 d6
    1193212458    mov word [es:si+01eh], 0ff05h             ; 26 c7 44 1e 05 ff
     
    1193512461    mov word [es:si+024h], 00200h             ; 26 c7 44 24 00 02
    1193612462    mov byte [es:si+023h], 001h               ; 26 c6 44 23 01
     12463    mov word [es:si+032h], di                 ; 26 89 7c 32
     12464    mov ax, word [bp-00eh]                    ; 8b 46 f2
     12465    mov word [es:si+034h], ax                 ; 26 89 44 34
     12466    mov ax, word [bp-012h]                    ; 8b 46 ee
     12467    mov word [es:si+02ch], ax                 ; 26 89 44 2c
     12468    mov ax, word [bp-014h]                    ; 8b 46 ec
     12469    mov word [es:si+02eh], ax                 ; 26 89 44 2e
    1193712470    mov ax, word [bp-010h]                    ; 8b 46 f0
    11938     mov word [es:si+032h], ax                 ; 26 89 44 32
    11939     mov word [es:si+034h], di                 ; 26 89 7c 34
    11940     mov ax, word [bp-014h]                    ; 8b 46 ec
    11941     mov word [es:si+02ch], ax                 ; 26 89 44 2c
    11942     mov ax, word [bp-018h]                    ; 8b 46 e8
    11943     mov word [es:si+02eh], ax                 ; 26 89 44 2e
    11944     mov ax, word [bp-01ah]                    ; 8b 46 e6
    1194512471    mov word [es:si+030h], ax                 ; 26 89 44 30
    1194612472    mov al, byte [bp-004h]                    ; 8a 46 fc
    1194712473    cmp AL, strict byte 001h                  ; 3c 01
    11948     jc short 082e3h                           ; 72 0c
    11949     jbe short 082ebh                          ; 76 12
     12474    jc short 08654h                           ; 72 0c
     12475    jbe short 0865ch                          ; 76 12
    1195012476    cmp AL, strict byte 003h                  ; 3c 03
    11951     je short 082f3h                           ; 74 16
     12477    je short 08664h                           ; 74 16
    1195212478    cmp AL, strict byte 002h                  ; 3c 02
    11953     je short 082efh                           ; 74 0e
    11954     jmp short 0833ah                          ; eb 57
     12479    je short 08660h                           ; 74 0e
     12480    jmp short 086adh                          ; eb 59
    1195512481    test al, al                               ; 84 c0
    11956     jne short 0833ah                          ; 75 53
     12482    jne short 086adh                          ; 75 55
    1195712483    mov DL, strict byte 040h                  ; b2 40
    11958     jmp short 082f5h                          ; eb 0a
     12484    jmp short 08666h                          ; eb 0a
    1195912485    mov DL, strict byte 048h                  ; b2 48
    11960     jmp short 082f5h                          ; eb 06
     12486    jmp short 08666h                          ; eb 06
    1196112487    mov DL, strict byte 050h                  ; b2 50
    11962     jmp short 082f5h                          ; eb 02
     12488    jmp short 08666h                          ; eb 02
    1196312489    mov DL, strict byte 058h                  ; b2 58
    1196412490    mov al, dl                                ; 88 d0
     
    1196612492    movzx bx, al                              ; 0f b6 d8
    1196712493    mov ax, bx                                ; 89 d8
    11968     call 0165ch                               ; e8 5b 93
     12494    call 0165ch                               ; e8 ea 8f
    1196912495    test al, al                               ; 84 c0
    11970     je short 0833ah                           ; 74 35
     12496    je short 086adh                           ; 74 37
    1197112497    mov al, dl                                ; 88 d0
    1197212498    db  0feh, 0c0h
    1197312499    ; inc al                                    ; fe c0
    1197412500    xor ah, ah                                ; 30 e4
    11975     call 0165ch                               ; e8 4e 93
     12501    call 0165ch                               ; e8 dd 8f
    1197612502    xor ah, ah                                ; 30 e4
    1197712503    mov cx, ax                                ; 89 c1
    1197812504    sal cx, 008h                              ; c1 e1 08
    1197912505    movzx ax, dl                              ; 0f b6 c2
    11980     call 0165ch                               ; e8 41 93
     12506    call 0165ch                               ; e8 d0 8f
    1198112507    xor ah, ah                                ; 30 e4
    1198212508    add ax, cx                                ; 01 c8
    11983     mov word [bp-01ch], ax                    ; 89 46 e4
     12509    mov word [bp-020h], ax                    ; 89 46 e0
    1198412510    mov al, dl                                ; 88 d0
    1198512511    add AL, strict byte 002h                  ; 04 02
    1198612512    xor ah, ah                                ; 30 e4
    11987     call 0165ch                               ; e8 31 93
     12513    call 0165ch                               ; e8 c0 8f
    1198812514    xor ah, ah                                ; 30 e4
    11989     mov word [bp-016h], ax                    ; 89 46 ea
     12515    mov word [bp-022h], ax                    ; 89 46 de
    1199012516    mov ax, bx                                ; 89 d8
    11991     call 0165ch                               ; e8 27 93
    11992     movzx dx, al                              ; 0f b6 d0
    11993     jmp short 08349h                          ; eb 0f
    11994     mov ax, word [bp-018h]                    ; 8b 46 e8
    11995     mov word [bp-01ch], ax                    ; 89 46 e4
    11996     mov ax, word [bp-014h]                    ; 8b 46 ec
    11997     mov word [bp-016h], ax                    ; 89 46 ea
    11998     mov dx, word [bp-01ah]                    ; 8b 56 e6
    11999     mov bx, 00cd6h                            ; bb d6 0c
     12517    call 0165ch                               ; e8 b6 8f
     12518    xor ah, ah                                ; 30 e4
     12519    mov word [bp-01eh], ax                    ; 89 46 e2
     12520    jmp short 086bah                          ; eb 0d
     12521    mov bx, di                                ; 89 fb
     12522    mov cx, word [bp-00eh]                    ; 8b 4e f2
     12523    mov dx, ss                                ; 8c d2
     12524    lea ax, [bp-022h]                         ; 8d 46 de
     12525    call 0533dh                               ; e8 83 cc
     12526    mov bx, 00cech                            ; bb ec 0c
    1200012527    mov cx, ds                                ; 8c d9
    1200112528    mov ax, strict word 00004h                ; b8 04 00
    12002     call 018aeh                               ; e8 5a 95
     12529    call 018aeh                               ; e8 e9 91
     12530    push word [bp-00eh]                       ; ff 76 f2
    1200312531    push di                                   ; 57
    12004     push word [bp-010h]                       ; ff 76 f0
    12005     push dx                                   ; 52
    12006     push word [bp-016h]                       ; ff 76 ea
    12007     push word [bp-01ch]                       ; ff 76 e4
    12008     push word [bp-01ah]                       ; ff 76 e6
     12532    mov ax, word [bp-01eh]                    ; 8b 46 e2
     12533    push ax                                   ; 50
     12534    mov ax, word [bp-022h]                    ; 8b 46 de
     12535    push ax                                   ; 50
     12536    mov ax, word [bp-020h]                    ; 8b 46 e0
     12537    push ax                                   ; 50
     12538    push dword [bp-012h]                      ; 66 ff 76 ee
    1200912539    push word [bp-014h]                       ; ff 76 ec
    12010     push word [bp-018h]                       ; ff 76 e8
    1201112540    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    1201212541    push ax                                   ; 50
    1201312542    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    1201412543    push ax                                   ; 50
    12015     push 00c0eh                               ; 68 0e 0c
     12544    push 00c24h                               ; 68 24 0c
    1201612545    push strict byte 00004h                   ; 6a 04
    12017     call 018e9h                               ; e8 6f 95
     12546    call 018e9h                               ; e8 fb 91
    1201812547    add sp, strict byte 00018h                ; 83 c4 18
    12019     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    12020     imul ax, ax, strict byte 00018h           ; 6b c0 18
    12021     les si, [bp-00eh]                         ; c4 76 f2
    12022     add si, ax                                ; 01 c6
    12023     mov ax, word [bp-016h]                    ; 8b 46 ea
    12024     mov word [es:si+026h], ax                 ; 26 89 44 26
    12025     mov ax, word [bp-01ch]                    ; 8b 46 e4
    12026     mov word [es:si+028h], ax                 ; 26 89 44 28
    12027     mov word [es:si+02ah], dx                 ; 26 89 54 2a
    12028     mov bx, word [bp-00eh]                    ; 8b 5e f2
    12029     mov dl, byte [es:bx+0019eh]               ; 26 8a 97 9e 01
    12030     mov al, byte [bp-004h]                    ; 8a 46 fc
    12031     add AL, strict byte 00ch                  ; 04 0c
    12032     movzx bx, dl                              ; 0f b6 da
    12033     add bx, word [bp-00eh]                    ; 03 5e f2
    12034     mov byte [es:bx+0019fh], al               ; 26 88 87 9f 01
    12035     db  0feh, 0c2h
    12036     ; inc dl                                    ; fe c2
    12037     mov bx, word [bp-00eh]                    ; 8b 5e f2
    12038     mov byte [es:bx+0019eh], dl               ; 26 88 97 9e 01
     12548    movzx di, byte [bp-006h]                  ; 0f b6 7e fa
     12549    imul di, di, strict byte 00018h           ; 6b ff 18
     12550    add di, word [bp-01ch]                    ; 03 7e e4
     12551    mov es, [bp-00ch]                         ; 8e 46 f4
     12552    lea di, [di+026h]                         ; 8d 7d 26
     12553    push DS                                   ; 1e
     12554    push SS                                   ; 16
     12555    pop DS                                    ; 1f
     12556    lea si, [bp-022h]                         ; 8d 76 de
     12557    movsw                                     ; a5
     12558    movsw                                     ; a5
     12559    movsw                                     ; a5
     12560    pop DS                                    ; 1f
     12561    mov bx, word [bp-01ch]                    ; 8b 5e e4
     12562    mov al, byte [es:bx+0019eh]               ; 26 8a 87 9e 01
     12563    mov ah, byte [bp-004h]                    ; 8a 66 fc
     12564    add ah, 00ch                              ; 80 c4 0c
     12565    movzx bx, al                              ; 0f b6 d8
     12566    add bx, word [bp-01ch]                    ; 03 5e e4
     12567    mov byte [es:bx+0019fh], ah               ; 26 88 a7 9f 01
     12568    db  0feh, 0c0h
     12569    ; inc al                                    ; fe c0
     12570    mov bx, word [bp-01ch]                    ; 8b 5e e4
     12571    mov byte [es:bx+0019eh], al               ; 26 88 87 9e 01
    1203912572    mov dx, strict word 00075h                ; ba 75 00
    1204012573    mov ax, strict word 00040h                ; b8 40 00
    12041     call 01600h                               ; e8 3a 92
    12042     mov dl, al                                ; 88 c2
    12043     db  0feh, 0c2h
    12044     ; inc dl                                    ; fe c2
    12045     movzx bx, dl                              ; 0f b6 da
     12574    call 01600h                               ; e8 c9 8e
     12575    db  0feh, 0c0h
     12576    ; inc al                                    ; fe c0
     12577    movzx bx, al                              ; 0f b6 d8
    1204612578    mov dx, strict word 00075h                ; ba 75 00
    1204712579    mov ax, strict word 00040h                ; b8 40 00
    12048     call 0160eh                               ; e8 38 92
    12049     jmp near 08471h                           ; e9 98 00
     12580    call 0160eh                               ; e8 c9 8e
     12581    jmp near 087e5h                           ; e9 9d 00
    1205012582    cmp dx, 0eb14h                            ; 81 fa 14 eb
    12051     jne near 08471h                           ; 0f 85 90 00
     12583    jne near 087e5h                           ; 0f 85 95 00
    1205212584    cmp bx, 00101h                            ; 81 fb 01 01
    12053     jne near 08471h                           ; 0f 85 88 00
     12585    jne near 087e5h                           ; 0f 85 8d 00
    1205412586    mov es, [bp-008h]                         ; 8e 46 f8
    1205512587    db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
    1205612588    ; mov dword [es:si], strict dword 000000000h ; 66 26 c7 04 00 00 00 00
    12057     lea dx, [bp-00220h]                       ; 8d 96 e0 fd
     12589    lea dx, [bp-00222h]                       ; 8d 96 de fd
    1205812590    mov word [es:si+004h], dx                 ; 26 89 54 04
    1205912591    mov [es:si+006h], ss                      ; 26 8c 54 06
     
    1206212594    mov bx, 000a1h                            ; bb a1 00
    1206312595    mov ax, si                                ; 89 f0
    12064     mov dx, word [bp-01eh]                    ; 8b 56 e2
    12065     call 07950h                               ; e8 3c f5
    12066     test byte [bp-00220h], 080h               ; f6 86 e0 fd 80
     12596    mov dx, word [bp-01ah]                    ; 8b 56 e6
     12597    call 07cbfh                               ; e8 3c f5
     12598    test byte [bp-00222h], 080h               ; f6 86 de fd 80
    1206712599    db  00fh, 095h, 0c0h
    1206812600    ; setne al                                  ; 0f 95 c0
    1206912601    xor ah, ah                                ; 30 e4
    12070     mov dx, ax                                ; 89 c2
    1207112602    movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
    12072     mov es, [bp-01eh]                         ; 8e 46 e2
     12603    mov es, [bp-01ah]                         ; 8e 46 e6
    1207312604    add bx, si                                ; 01 f3
    12074     mov al, byte [bp-002h]                    ; 8a 46 fe
    12075     mov byte [es:bx+001e9h], al               ; 26 88 87 e9 01
     12605    mov ah, byte [bp-002h]                    ; 8a 66 fe
     12606    mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
    1207612607    movzx si, cl                              ; 0f b6 f1
    1207712608    imul si, si, strict byte 00018h           ; 6b f6 18
    1207812609    add si, 00122h                            ; 81 c6 22 01
    1207912610    mov word [es:si+01eh], 00505h             ; 26 c7 44 1e 05 05
    12080     mov byte [es:si+020h], dl                 ; 26 88 54 20
     12611    mov byte [es:si+020h], al                 ; 26 88 44 20
    1208112612    mov word [es:si+024h], 00800h             ; 26 c7 44 24 00 08
    12082     les bx, [bp-00eh]                         ; c4 5e f2
    12083     mov dl, byte [es:bx+001afh]               ; 26 8a 97 af 01
    12084     mov al, byte [bp-004h]                    ; 8a 46 fc
    12085     add AL, strict byte 00ch                  ; 04 0c
    12086     movzx bx, dl                              ; 0f b6 da
    12087     mov es, [bp-01eh]                         ; 8e 46 e2
     12613    mov es, [bp-00ch]                         ; 8e 46 f4
     12614    mov bx, word [bp-01ch]                    ; 8b 5e e4
     12615    mov al, byte [es:bx+001afh]               ; 26 8a 87 af 01
     12616    mov ah, byte [bp-004h]                    ; 8a 66 fc
     12617    add ah, 00ch                              ; 80 c4 0c
     12618    movzx bx, al                              ; 0f b6 d8
     12619    mov es, [bp-01ah]                         ; 8e 46 e6
    1208812620    add bx, 00122h                            ; 81 c3 22 01
    12089     mov byte [es:bx+001b0h], al               ; 26 88 87 b0 01
    12090     db  0feh, 0c2h
    12091     ; inc dl                                    ; fe c2
    12092     les bx, [bp-00eh]                         ; c4 5e f2
    12093     mov byte [es:bx+001afh], dl               ; 26 88 97 af 01
     12621    mov byte [es:bx+001b0h], ah               ; 26 88 a7 b0 01
     12622    db  0feh, 0c0h
     12623    ; inc al                                    ; fe c0
     12624    mov es, [bp-00ch]                         ; 8e 46 f4
     12625    mov bx, word [bp-01ch]                    ; 8b 5e e4
     12626    mov byte [es:bx+001afh], al               ; 26 88 87 af 01
    1209412627    inc byte [bp-004h]                        ; fe 46 fc
    1209512628    mov al, byte [bp-004h]                    ; 8a 46 fc
    12096     les bx, [bp-00eh]                         ; c4 5e f2
     12629    mov es, [bp-00ch]                         ; 8e 46 f4
     12630    mov bx, word [bp-01ch]                    ; 8b 5e e4
    1209712631    mov byte [es:bx+001edh], al               ; 26 88 87 ed 01
    1209812632    leave                                     ; c9
     
    1210112635    pop cx                                    ; 59
    1210212636    retn                                      ; c3
    12103 ahci_mem_alloc_:                             ; 0xf8484 LB 0x40
     12637ahci_mem_alloc_:                             ; 0xf87fb LB 0x40
    1210412638    push bx                                   ; 53
    1210512639    push cx                                   ; 51
     
    1211112645    mov dx, 00413h                            ; ba 13 04
    1211212646    xor ax, ax                                ; 31 c0
    12113     call 0161ch                               ; e8 88 91
     12647    call 0161ch                               ; e8 11 8e
    1211412648    test ax, ax                               ; 85 c0
    12115     je short 084bdh                           ; 74 25
     12649    je short 08834h                           ; 74 25
    1211612650    dec ax                                    ; 48
    1211712651    mov bx, ax                                ; 89 c3
     
    1212012654    sal ax, 1                                 ; d1 e0
    1212112655    rcl dx, 1                                 ; d1 d2
    12122     loop 084a0h                               ; e2 fa
     12656    loop 08817h                               ; e2 fa
    1212312657    mov si, ax                                ; 89 c6
    1212412658    mov di, dx                                ; 89 d7
     
    1212612660    shr di, 1                                 ; d1 ef
    1212712661    rcr si, 1                                 ; d1 de
    12128     loop 084adh                               ; e2 fa
     12662    loop 08824h                               ; e2 fa
    1212912663    mov dx, 00413h                            ; ba 13 04
    1213012664    xor ax, ax                                ; 31 c0
    12131     call 0162ah                               ; e8 6f 91
     12665    call 0162ah                               ; e8 f8 8d
    1213212666    mov ax, si                                ; 89 f0
    1213312667    pop bp                                    ; 5d
     
    1213812672    pop bx                                    ; 5b
    1213912673    retn                                      ; c3
    12140 ahci_hba_init_:                              ; 0xf84c4 LB 0x120
     12674ahci_hba_init_:                              ; 0xf883b LB 0x120
    1214112675    push bx                                   ; 53
    1214212676    push cx                                   ; 51
     
    1214812682    mov dx, strict word 0000eh                ; ba 0e 00
    1214912683    mov ax, strict word 00040h                ; b8 40 00
    12150     call 0161ch                               ; e8 44 91
     12684    call 0161ch                               ; e8 cd 8d
    1215112685    mov bx, 00122h                            ; bb 22 01
    1215212686    mov word [bp-006h], ax                    ; 89 46 fa
     
    1216512699    shr eax, 010h                             ; 66 c1 e8 10
    1216612700    xchg dx, ax                               ; 92
    12167     call 08484h                               ; e8 87 ff
     12701    call 087fbh                               ; e8 87 ff
    1216812702    mov di, ax                                ; 89 c7
    1216912703    test ax, ax                               ; 85 c0
    12170     je near 085c6h                            ; 0f 84 c1 00
     12704    je near 0893dh                            ; 0f 84 c1 00
    1217112705    mov es, [bp-006h]                         ; 8e 46 fa
    1217212706    mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
     
    1218212716    mov dx, strict word 00004h                ; ba 04 00
    1218312717    mov ax, si                                ; 89 f0
    12184     call 0778dh                               ; e8 54 f2
     12718    call 07afch                               ; e8 4c f2
    1218512719    mov ax, strict word 00004h                ; b8 04 00
    1218612720    xor cx, cx                                ; 31 c9
     
    1219912733    xchg dx, ax                               ; 92
    1220012734    test AL, strict byte 001h                 ; a8 01
    12201     jne short 08539h                          ; 75 de
     12735    jne short 088b0h                          ; 75 de
    1220212736    xor ax, ax                                ; 31 c0
    1220312737    xor cx, cx                                ; 31 c9
     
    1221712751    mov bx, strict word 0001fh                ; bb 1f 00
    1221812752    xor cx, cx                                ; 31 c9
    12219     call 07847h                               ; e8 c8 f2
     12753    call 07bb6h                               ; e8 c0 f2
    1222012754    db  0feh, 0c0h
    1222112755    ; inc al                                    ; fe c0
    1222212756    mov byte [bp-004h], al                    ; 88 46 fc
    1222312757    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    12224     jmp short 08593h                          ; eb 09
     12758    jmp short 0890ah                          ; eb 09
    1222512759    inc byte [bp-002h]                        ; fe 46 fe
    1222612760    cmp byte [bp-002h], 020h                  ; 80 7e fe 20
    12227     jnc short 085c4h                          ; 73 31
     12761    jnc short 0893bh                          ; 73 31
    1222812762    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    1222912763    mov ax, strict word 00001h                ; b8 01 00
    1223012764    xor dx, dx                                ; 31 d2
    12231     jcxz 085a4h                               ; e3 06
     12765    jcxz 0891bh                               ; e3 06
    1223212766    sal ax, 1                                 ; d1 e0
    1223312767    rcl dx, 1                                 ; d1 d2
    12234     loop 0859eh                               ; e2 fa
     12768    loop 08915h                               ; e2 fa
    1223512769    mov bx, ax                                ; 89 c3
    1223612770    mov cx, dx                                ; 89 d1
    1223712771    mov dx, strict word 0000ch                ; ba 0c 00
    1223812772    mov ax, si                                ; 89 f0
    12239     call 07811h                               ; e8 61 f2
     12773    call 07b80h                               ; e8 59 f2
    1224012774    test al, al                               ; 84 c0
    12241     je short 0858ah                           ; 74 d6
     12775    je short 08901h                           ; 74 d6
    1224212776    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    1224312777    xor ax, ax                                ; 31 c0
    1224412778    mov dx, di                                ; 89 fa
    12245     call 080c1h                               ; e8 02 fb
     12779    call 08430h                               ; e8 fa fa
    1224612780    dec byte [bp-004h]                        ; fe 4e fc
    12247     jne short 0858ah                          ; 75 c6
     12781    jne short 08901h                          ; 75 c6
    1224812782    xor ax, ax                                ; 31 c0
    1224912783    leave                                     ; c9
     
    1225412788    pop bx                                    ; 5b
    1225512789    retn                                      ; c3
    12256     or ax, word [di]                          ; 0b 05
    12257     add AL, strict byte 003h                  ; 04 03
    12258     add al, byte [bx+di]                      ; 02 01
    12259     add byte [bx+di-0707ah], dh               ; 00 b1 86 8f
    12260     xchg byte [di-0647ah], dl                 ; 86 95 86 9b
    12261     xchg byte [bx+di-0587ah], ah              ; 86 a1 86 a7
    12262     xchg byte [di-04e7ah], ch                 ; 86 ad 86 b1
    12263     db  086h
    12264 _ahci_init:                                  ; 0xf85e4 LB 0xf9
     12790    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 028h, 08ah, 006h, 08ah, 00ch, 08ah, 012h, 08ah, 018h
     12791    db  08ah, 01eh, 08ah, 024h, 08ah, 028h, 08ah
     12792_ahci_init:                                  ; 0xf895b LB 0xf9
    1226512793    push si                                   ; 56
    1226612794    push di                                   ; 57
     
    1226812796    mov ax, 00601h                            ; b8 01 06
    1226912797    mov dx, strict word 00001h                ; ba 01 00
    12270     call 08ad6h                               ; e8 e3 04
     12798    call 08e4dh                               ; e8 e3 04
    1227112799    mov dx, ax                                ; 89 c2
    1227212800    cmp ax, strict word 0ffffh                ; 3d ff ff
    12273     je near 086d9h                            ; 0f 84 dd 00
     12801    je near 08a50h                            ; 0f 84 dd 00
    1227412802    xor al, al                                ; 30 c0
    1227512803    shr ax, 008h                              ; c1 e8 08
     
    1227912807    xor ah, ah                                ; 30 e4
    1228012808    mov bx, strict word 00034h                ; bb 34 00
    12281     call 08afeh                               ; e8 ed 04
     12809    call 08e75h                               ; e8 ed 04
    1228212810    mov cl, al                                ; 88 c1
    1228312811    test cl, cl                               ; 84 c9
    12284     je short 0863ah                           ; 74 23
     12812    je short 089b1h                           ; 74 23
    1228512813    movzx bx, cl                              ; 0f b6 d9
    1228612814    movzx di, byte [bp-004h]                  ; 0f b6 7e fc
     
    1228812816    mov dx, di                                ; 89 fa
    1228912817    mov ax, si                                ; 89 f0
    12290     call 08afeh                               ; e8 d5 04
     12818    call 08e75h                               ; e8 d5 04
    1229112819    cmp AL, strict byte 012h                  ; 3c 12
    12292     je short 0863ah                           ; 74 0d
     12820    je short 089b1h                           ; 74 0d
    1229312821    mov al, cl                                ; 88 c8
    1229412822    db  0feh, 0c0h
     
    1229712825    mov dx, di                                ; 89 fa
    1229812826    mov ax, si                                ; 89 f0
    12299     jmp short 0860eh                          ; eb d4
     12827    jmp short 08985h                          ; eb d4
    1230012828    test cl, cl                               ; 84 c9
    12301     je near 086d9h                            ; 0f 84 99 00
     12829    je near 08a50h                            ; 0f 84 99 00
    1230212830    add cl, 002h                              ; 80 c1 02
    1230312831    movzx bx, cl                              ; 0f b6 d9
     
    1230612834    mov dx, di                                ; 89 fa
    1230712835    mov ax, si                                ; 89 f0
    12308     call 08afeh                               ; e8 a9 04
     12836    call 08e75h                               ; e8 a9 04
    1230912837    cmp AL, strict byte 010h                  ; 3c 10
    12310     jne near 086d9h                           ; 0f 85 7e 00
     12838    jne near 08a50h                           ; 0f 85 7e 00
    1231112839    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    1231212840    mov al, cl                                ; 88 c8
     
    1231512843    mov dx, di                                ; 89 fa
    1231612844    mov ax, si                                ; 89 f0
    12317     call 08b1fh                               ; e8 b2 04
     12845    call 08e96h                               ; e8 b2 04
    1231812846    mov dx, ax                                ; 89 c2
    1231912847    and ax, strict word 0000fh                ; 25 0f 00
    1232012848    sub ax, strict word 00004h                ; 2d 04 00
    1232112849    cmp ax, strict word 0000bh                ; 3d 0b 00
    12322     jnbe short 086b1h                         ; 77 37
     12850    jnbe short 08a28h                         ; 77 37
    1232312851    push CS                                   ; 0e
    1232412852    pop ES                                    ; 07
    1232512853    mov cx, strict word 00008h                ; b9 08 00
    12326     mov di, 085cdh                            ; bf cd 85
     12854    mov di, 08944h                            ; bf 44 89
    1232712855    repne scasb                               ; f2 ae
    1232812856    sal cx, 1                                 ; d1 e1
    1232912857    mov di, cx                                ; 89 cf
    12330     mov ax, word [cs:di-07a2ch]               ; 2e 8b 85 d4 85
     12858    mov ax, word [cs:di-076b5h]               ; 2e 8b 85 4b 89
    1233112859    jmp ax                                    ; ff e0
    1233212860    mov byte [bp-002h], 010h                  ; c6 46 fe 10
    12333     jmp short 086b1h                          ; eb 1c
     12861    jmp short 08a28h                          ; eb 1c
    1233412862    mov byte [bp-002h], 014h                  ; c6 46 fe 14
    12335     jmp short 086b1h                          ; eb 16
     12863    jmp short 08a28h                          ; eb 16
    1233612864    mov byte [bp-002h], 018h                  ; c6 46 fe 18
    12337     jmp short 086b1h                          ; eb 10
     12865    jmp short 08a28h                          ; eb 10
    1233812866    mov byte [bp-002h], 01ch                  ; c6 46 fe 1c
    12339     jmp short 086b1h                          ; eb 0a
     12867    jmp short 08a28h                          ; eb 0a
    1234012868    mov byte [bp-002h], 020h                  ; c6 46 fe 20
    12341     jmp short 086b1h                          ; eb 04
     12869    jmp short 08a28h                          ; eb 04
    1234212870    mov byte [bp-002h], 024h                  ; c6 46 fe 24
    1234312871    mov si, dx                                ; 89 d6
     
    1234612874    mov al, byte [bp-002h]                    ; 8a 46 fe
    1234712875    test al, al                               ; 84 c0
    12348     je short 086d9h                           ; 74 19
     12876    je short 08a50h                           ; 74 19
    1234912877    movzx bx, al                              ; 0f b6 d8
    1235012878    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    1235112879    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    12352     call 08b3eh                               ; e8 70 04
     12880    call 08eb5h                               ; e8 70 04
    1235312881    test AL, strict byte 001h                 ; a8 01
    12354     je short 086d9h                           ; 74 07
     12882    je short 08a50h                           ; 74 07
    1235512883    and AL, strict byte 0f0h                  ; 24 f0
    1235612884    add ax, si                                ; 01 f0
    12357     call 084c4h                               ; e8 eb fd
     12885    call 0883bh                               ; e8 eb fd
    1235812886    leave                                     ; c9
    1235912887    pop di                                    ; 5f
    1236012888    pop si                                    ; 5e
    1236112889    retn                                      ; c3
    12362 apm_out_str_:                                ; 0xf86dd LB 0x36
     12890apm_out_str_:                                ; 0xf8a54 LB 0x36
    1236312891    push bx                                   ; 53
    1236412892    push bp                                   ; 55
     
    1236612894    mov bx, ax                                ; 89 c3
    1236712895    cmp byte [bx], 000h                       ; 80 3f 00
    12368     je short 086f2h                           ; 74 0a
     12896    je short 08a69h                           ; 74 0a
    1236912897    mov al, byte [bx]                         ; 8a 07
    1237012898    out DX, AL                                ; ee
     
    1237312901    db  00ah, 0c0h
    1237412902    ; or al, al                                 ; 0a c0
    12375     jne short 086eah                          ; 75 f8
     12903    jne short 08a61h                          ; 75 f8
    1237612904    pop bp                                    ; 5d
    1237712905    pop bx                                    ; 5b
    1237812906    retn                                      ; c3
    12379     xchg word [ss:di], ax                     ; 36 87 05
    12380     mov byte [bx+si-079h], cl                 ; 88 48 87
    12381     arpl word [bx-077fbh], ax                 ; 63 87 05 88
    12382     mov es, [bx-077fbh]                       ; 8e 87 05 88
    12383     xchg bx, ax                               ; 93
    12384     xchg dx, bx                               ; 87 da
    12385     xchg dx, bx                               ; 87 da
    12386     xchg dx, bx                               ; 87 da
    12387     xchg bp, dx                               ; 87 d5
    12388     xchg dx, bx                               ; 87 da
    12389     xchg dx, bx                               ; 87 da
    12390     xchg bp, cx                               ; 87 cd
    12391     db  087h
    12392 _apm_function:                               ; 0xf8713 LB 0xf5
     12907    lodsw                                     ; ad
     12908    mov bh, byte [si-075h]                    ; 8a 7c 8b
     12909    mov di, 0da8ah                            ; bf 8a da
     12910    mov bh, byte [si-075h]                    ; 8a 7c 8b
     12911    add ax, 07c8bh                            ; 05 8b 7c
     12912    mov cx, word [bp+si]                      ; 8b 0a
     12913    mov dx, word [bx+di-075h]                 ; 8b 51 8b
     12914    push cx                                   ; 51
     12915    mov dx, word [bx+di-075h]                 ; 8b 51 8b
     12916    dec sp                                    ; 4c
     12917    mov dx, word [bx+di-075h]                 ; 8b 51 8b
     12918    push cx                                   ; 51
     12919    mov ax, word [si-075h]                    ; 8b 44 8b
     12920_apm_function:                               ; 0xf8a8a LB 0xf5
    1239312921    push si                                   ; 56
    1239412922    push bp                                   ; 55
     
    1239812926    xor ah, ah                                ; 30 e4
    1239912927    cmp ax, strict word 0000eh                ; 3d 0e 00
    12400     jnbe near 087dah                          ; 0f 87 b3 00
     12928    jnbe near 08b51h                          ; 0f 87 b3 00
    1240112929    mov bx, ax                                ; 89 c3
    1240212930    add bx, ax                                ; 01 c3
    1240312931    mov dx, word [bp+01ah]                    ; 8b 56 1a
    1240412932    or dl, 001h                               ; 80 ca 01
    12405     jmp word [cs:bx-0790bh]                   ; 2e ff a7 f5 86
     12933    jmp word [cs:bx-07594h]                   ; 2e ff a7 6c 8a
    1240612934    mov word [bp+014h], 00102h                ; c7 46 14 02 01
    1240712935    mov word [bp+00eh], 0504dh                ; c7 46 0e 4d 50
     
    1241112939    retn                                      ; c3
    1241212940    mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
    12413     mov word [bp+00eh], 08d24h                ; c7 46 0e 24 8d
     12941    mov word [bp+00eh], 090a4h                ; c7 46 0e a4 90
    1241412942    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1241512943    mov ax, strict word 0fff0h                ; b8 f0 ff
     
    1244012968    retn                                      ; c3
    1244112969    cmp word [bp+012h], strict byte 00003h    ; 83 7e 12 03
    12442     je short 087b9h                           ; 74 20
     12970    je short 08b30h                           ; 74 20
    1244312971    cmp word [bp+012h], strict byte 00002h    ; 83 7e 12 02
    12444     je short 087b1h                           ; 74 12
     12972    je short 08b28h                           ; 74 12
    1244512973    cmp word [bp+012h], strict byte 00001h    ; 83 7e 12 01
    12446     jne short 087c1h                          ; 75 1c
     12974    jne short 08b38h                          ; 75 1c
    1244712975    mov dx, 08900h                            ; ba 00 89
    12448     mov ax, 00c46h                            ; b8 46 0c
    12449     call 086ddh                               ; e8 2f ff
     12976    mov ax, 00c5ch                            ; b8 5c 0c
     12977    call 08a54h                               ; e8 2f ff
    1245012978    pop bp                                    ; 5d
    1245112979    pop si                                    ; 5e
    1245212980    retn                                      ; c3
    1245312981    mov dx, 08900h                            ; ba 00 89
    12454     mov ax, 00c4eh                            ; b8 4e 0c
    12455     jmp short 087abh                          ; eb f2
     12982    mov ax, 00c64h                            ; b8 64 0c
     12983    jmp short 08b22h                          ; eb f2
    1245612984    mov dx, 08900h                            ; ba 00 89
    12457     mov ax, 00c56h                            ; b8 56 0c
    12458     jmp short 087abh                          ; eb ea
     12985    mov ax, 00c6ch                            ; b8 6c 0c
     12986    jmp short 08b22h                          ; eb ea
    1245912987    or ah, 00ah                               ; 80 cc 0a
    1246012988    mov word [bp+014h], ax                    ; 89 46 14
     
    1246812996    retn                                      ; c3
    1246912997    or ah, 080h                               ; 80 cc 80
    12470     jmp short 087c4h                          ; eb ea
    12471     mov bx, 00cd6h                            ; bb d6 0c
     12998    jmp short 08b3bh                          ; eb ea
     12999    mov bx, 00cech                            ; bb ec 0c
    1247213000    mov cx, ds                                ; 8c d9
    1247313001    mov ax, strict word 00004h                ; b8 04 00
    12474     call 018aeh                               ; e8 c9 90
     13002    call 018aeh                               ; e8 52 8d
    1247513003    push word [bp+00eh]                       ; ff 76 0e
    1247613004    push word [bp+014h]                       ; ff 76 14
    12477     push 00c5fh                               ; 68 5f 0c
     13005    push 00c75h                               ; 68 75 0c
    1247813006    push strict byte 00004h                   ; 6a 04
    12479     call 018e9h                               ; e8 f6 90
     13007    call 018e9h                               ; e8 7f 8d
    1248013008    add sp, strict byte 00008h                ; 83 c4 08
    1248113009    mov ax, word [bp+014h]                    ; 8b 46 14
     
    1248713015    pop si                                    ; 5e
    1248813016    retn                                      ; c3
    12489 pci16_select_reg_:                           ; 0xf8808 LB 0x21
     13017pci16_select_reg_:                           ; 0xf8b7f LB 0x21
    1249013018    push bx                                   ; 53
    1249113019    push bp                                   ; 55
     
    1250313031    pop bx                                    ; 5b
    1250413032    retn                                      ; c3
    12505 pci16_find_device_:                          ; 0xf8829 LB 0xf2
     13033pci16_find_device_:                          ; 0xf8ba0 LB 0xf2
    1250613034    push si                                   ; 56
    1250713035    push di                                   ; 57
     
    1251513043    mov byte [bp-004h], 000h                  ; c6 46 fc 00
    1251613044    test bl, 007h                             ; f6 c3 07
    12517     jne short 0886fh                          ; 75 2d
     13045    jne short 08be6h                          ; 75 2d
    1251813046    mov dx, strict word 0000eh                ; ba 0e 00
    1251913047    mov ax, bx                                ; 89 d8
    12520     call 08808h                               ; e8 be ff
     13048    call 08b7fh                               ; e8 be ff
    1252113049    mov dx, 00cfeh                            ; ba fe 0c
    1252213050    in AL, DX                                 ; ec
     
    1252513053    mov byte [bp-002h], al                    ; 88 46 fe
    1252613054    cmp AL, strict byte 0ffh                  ; 3c ff
    12527     jne short 0885dh                          ; 75 06
     13055    jne short 08bd4h                          ; 75 06
    1252813056    add bx, strict byte 00008h                ; 83 c3 08
    12529     jmp near 088f0h                           ; e9 93 00
     13057    jmp near 08c67h                           ; e9 93 00
    1253013058    test byte [bp-002h], 080h                 ; f6 46 fe 80
    12531     je short 0886ah                           ; 74 07
     13059    je short 08be1h                           ; 74 07
    1253213060    mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
    12533     jmp short 0886fh                          ; eb 05
     13061    jmp short 08be6h                          ; eb 05
    1253413062    mov word [bp-006h], strict word 00008h    ; c7 46 fa 08 00
    1253513063    mov al, byte [bp-002h]                    ; 8a 46 fe
    1253613064    and AL, strict byte 007h                  ; 24 07
    1253713065    cmp AL, strict byte 001h                  ; 3c 01
    12538     jne short 08897h                          ; 75 1f
     13066    jne short 08c0eh                          ; 75 1f
    1253913067    mov ax, bx                                ; 89 d8
    1254013068    shr ax, 008h                              ; c1 e8 08
    1254113069    test ax, ax                               ; 85 c0
    12542     jne short 08897h                          ; 75 16
     13070    jne short 08c0eh                          ; 75 16
    1254313071    mov dx, strict word 0001ah                ; ba 1a 00
    1254413072    mov ax, bx                                ; 89 d8
    12545     call 08808h                               ; e8 7f ff
     13073    call 08b7fh                               ; e8 7f ff
    1254613074    mov dx, 00cfeh                            ; ba fe 0c
    1254713075    in AL, DX                                 ; ec
     
    1254913077    ; sub ah, ah                                ; 2a e4
    1255013078    cmp al, byte [bp-004h]                    ; 3a 46 fc
    12551     jbe short 08897h                          ; 76 03
     13079    jbe short 08c0eh                          ; 76 03
    1255213080    mov byte [bp-004h], al                    ; 88 46 fc
    1255313081    test di, di                               ; 85 ff
    12554     je short 088a0h                           ; 74 05
     13082    je short 08c17h                           ; 74 05
    1255513083    mov dx, strict word 00008h                ; ba 08 00
    12556     jmp short 088a2h                          ; eb 02
     13084    jmp short 08c19h                          ; eb 02
    1255713085    xor dx, dx                                ; 31 d2
    1255813086    mov ax, bx                                ; 89 d8
    12559     call 08808h                               ; e8 61 ff
     13087    call 08b7fh                               ; e8 61 ff
    1256013088    mov dx, 00cfch                            ; ba fc 0c
    1256113089    in eax, DX                                ; 66 ed
     
    1256813096    mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
    1256913097    test di, di                               ; 85 ff
    12570     je short 088d1h                           ; 74 0f
     13098    je short 08c48h                           ; 74 0f
    1257113099    mov cx, strict word 00008h                ; b9 08 00
    1257213100    shr dx, 1                                 ; d1 ea
    1257313101    rcr ax, 1                                 ; d1 d8
    12574     loop 088c5h                               ; e2 fa
     13102    loop 08c3ch                               ; e2 fa
    1257513103    mov word [bp-00ah], ax                    ; 89 46 f6
    1257613104    mov word [bp-008h], dx                    ; 89 56 f8
    1257713105    mov ax, word [bp-008h]                    ; 8b 46 f8
    1257813106    cmp ax, word [bp-010h]                    ; 3b 46 f0
    12579     jne short 088e1h                          ; 75 08
     13107    jne short 08c58h                          ; 75 08
    1258013108    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1258113109    cmp ax, word [bp-00eh]                    ; 3b 46 f2
    12582     je short 088e7h                           ; 74 06
     13110    je short 08c5eh                           ; 74 06
    1258313111    cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
    12584     je short 088edh                           ; 74 06
     13112    je short 08c64h                           ; 74 06
    1258513113    dec si                                    ; 4e
    1258613114    cmp si, strict byte 0ffffh                ; 83 fe ff
    12587     je short 088ffh                           ; 74 12
     13115    je short 08c76h                           ; 74 12
    1258813116    add bx, word [bp-006h]                    ; 03 5e fa
    1258913117    mov dx, bx                                ; 89 da
     
    1259113119    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
    1259213120    cmp dx, ax                                ; 39 c2
    12593     jbe near 0883dh                           ; 0f 86 3e ff
     13121    jbe near 08bb4h                           ; 0f 86 3e ff
    1259413122    cmp si, strict byte 0ffffh                ; 83 fe ff
    12595     jne short 08908h                          ; 75 04
     13123    jne short 08c7fh                          ; 75 04
    1259613124    mov ax, bx                                ; 89 d8
    12597     jmp short 0890bh                          ; eb 03
     13125    jmp short 08c82h                          ; eb 03
    1259813126    mov ax, strict word 0ffffh                ; b8 ff ff
    1259913127    leave                                     ; c9
     
    1260113129    pop si                                    ; 5e
    1260213130    retn                                      ; c3
    12603     sti                                       ; fb
    12604     mov word [di], dx                         ; 89 15
    12605     mov ch, byte [bx+si]                      ; 8a 28
    12606     mov bh, byte [di]                         ; 8a 3d
    12607     mov dl, byte [bx+si-076h]                 ; 8a 50 8a
    12608     db  062h
    12609     db  08ah
    12610 _pci16_function:                             ; 0xf891b LB 0x1bb
     13131    db  072h, 08dh, 08ch, 08dh, 09fh, 08dh, 0b4h, 08dh, 0c7h, 08dh, 0d9h, 08dh
     13132_pci16_function:                             ; 0xf8c92 LB 0x1bb
    1261113133    push si                                   ; 56
    1261213134    push di                                   ; 57
     
    1262013142    xor ah, ah                                ; 30 e4
    1262113143    cmp bx, strict byte 00003h                ; 83 fb 03
    12622     jc short 08952h                           ; 72 1a
    12623     jbe short 089aah                          ; 76 70
     13144    jc short 08cc9h                           ; 72 1a
     13145    jbe short 08d21h                          ; 76 70
    1262413146    cmp bx, strict byte 0000eh                ; 83 fb 0e
    12625     je near 08a76h                            ; 0f 84 35 01
     13147    je near 08dedh                            ; 0f 84 35 01
    1262613148    cmp bx, strict byte 00008h                ; 83 fb 08
    12627     jc near 08aa5h                            ; 0f 82 5d 01
     13149    jc near 08e1ch                            ; 0f 82 5d 01
    1262813150    cmp bx, strict byte 0000dh                ; 83 fb 0d
    12629     jbe near 089cfh                           ; 0f 86 80 00
    12630     jmp near 08aa5h                           ; e9 53 01
     13151    jbe near 08d46h                           ; 0f 86 80 00
     13152    jmp near 08e1ch                           ; e9 53 01
    1263113153    cmp bx, strict byte 00002h                ; 83 fb 02
    12632     je short 0897ah                           ; 74 23
     13154    je short 08cf1h                           ; 74 23
    1263313155    cmp bx, strict byte 00001h                ; 83 fb 01
    12634     jne near 08aa5h                           ; 0f 85 47 01
     13156    jne near 08e1ch                           ; 0f 85 47 01
    1263513157    mov word [bp+024h], strict word 00001h    ; c7 46 24 01 00
    1263613158    mov word [bp+018h], 00210h                ; c7 46 18 10 02
     
    1263813160    mov word [bp+01ch], 04350h                ; c7 46 1c 50 43
    1263913161    mov word [bp+01eh], 02049h                ; c7 46 1e 49 20
    12640     jmp near 08ad2h                           ; e9 58 01
     13162    jmp near 08e49h                           ; e9 58 01
    1264113163    cmp word [bp+01ch], strict byte 0ffffh    ; 83 7e 1c ff
    12642     jne short 08986h                          ; 75 06
     13164    jne short 08cfdh                          ; 75 06
    1264313165    or ah, 083h                               ; 80 cc 83
    12644     jmp near 08acbh                           ; e9 45 01
     13166    jmp near 08e42h                           ; e9 45 01
    1264513167    mov bx, word [bp+00ch]                    ; 8b 5e 0c
    1264613168    mov dx, word [bp+020h]                    ; 8b 56 20
    1264713169    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1264813170    xor cx, cx                                ; 31 c9
    12649     call 08829h                               ; e8 95 fe
     13171    call 08ba0h                               ; e8 95 fe
    1265013172    cmp ax, strict word 0ffffh                ; 3d ff ff
    12651     jne short 089a4h                          ; 75 0b
     13173    jne short 08d1bh                          ; 75 0b
    1265213174    mov ax, word [bp+024h]                    ; 8b 46 24
    1265313175    xor ah, ah                                ; 30 e4
    1265413176    or ah, 086h                               ; 80 cc 86
    12655     jmp near 08acbh                           ; e9 27 01
     13177    jmp near 08e42h                           ; e9 27 01
    1265613178    mov word [bp+018h], ax                    ; 89 46 18
    12657     jmp near 08ad2h                           ; e9 28 01
     13179    jmp near 08e49h                           ; e9 28 01
    1265813180    mov bx, word [bp+00ch]                    ; 8b 5e 0c
    1265913181    mov ax, word [bp+020h]                    ; 8b 46 20
    1266013182    mov dx, word [bp+022h]                    ; 8b 56 22
    1266113183    mov cx, strict word 00001h                ; b9 01 00
    12662     call 08829h                               ; e8 70 fe
     13184    call 08ba0h                               ; e8 70 fe
    1266313185    cmp ax, strict word 0ffffh                ; 3d ff ff
    12664     jne short 089c9h                          ; 75 0b
     13186    jne short 08d40h                          ; 75 0b
    1266513187    mov ax, word [bp+024h]                    ; 8b 46 24
    1266613188    xor ah, ah                                ; 30 e4
    1266713189    or ah, 086h                               ; 80 cc 86
    12668     jmp near 08acbh                           ; e9 02 01
     13190    jmp near 08e42h                           ; e9 02 01
    1266913191    mov word [bp+018h], ax                    ; 89 46 18
    12670     jmp near 08ad2h                           ; e9 03 01
     13192    jmp near 08e49h                           ; e9 03 01
    1267113193    cmp word [bp+008h], 00100h                ; 81 7e 08 00 01
    12672     jc short 089dch                           ; 72 06
     13194    jc short 08d53h                           ; 72 06
    1267313195    or ah, 087h                               ; 80 cc 87
    12674     jmp near 08acbh                           ; e9 ef 00
     13196    jmp near 08e42h                           ; e9 ef 00
    1267513197    mov dx, word [bp+008h]                    ; 8b 56 08
    1267613198    mov ax, word [bp+018h]                    ; 8b 46 18
    12677     call 08808h                               ; e8 23 fe
     13199    call 08b7fh                               ; e8 23 fe
    1267813200    mov bx, word [bp+024h]                    ; 8b 5e 24
    1267913201    xor bh, bh                                ; 30 ff
    1268013202    sub bx, strict byte 00008h                ; 83 eb 08
    1268113203    cmp bx, strict byte 00005h                ; 83 fb 05
    12682     jnbe near 08ad2h                          ; 0f 87 de 00
     13204    jnbe near 08e49h                          ; 0f 87 de 00
    1268313205    add bx, bx                                ; 01 db
    12684     jmp word [cs:bx-076f1h]                   ; 2e ff a7 0f 89
     13206    jmp word [cs:bx-0737ah]                   ; 2e ff a7 86 8c
    1268513207    mov bx, word [bp+020h]                    ; 8b 5e 20
    1268613208    xor bl, bl                                ; 30 db
     
    1269313215    or bx, ax                                 ; 09 c3
    1269413216    mov word [bp+020h], bx                    ; 89 5e 20
    12695     jmp near 08ad2h                           ; e9 bd 00
     13217    jmp near 08e49h                           ; e9 bd 00
    1269613218    mov dx, word [bp+008h]                    ; 8b 56 08
    1269713219    xor dh, dh                                ; 30 f6
     
    1270013222    in ax, DX                                 ; ed
    1270113223    mov word [bp+020h], ax                    ; 89 46 20
    12702     jmp near 08ad2h                           ; e9 aa 00
     13224    jmp near 08e49h                           ; e9 aa 00
    1270313225    mov dx, 00cfch                            ; ba fc 0c
    1270413226    in eax, DX                                ; 66 ed
     
    1270913231    mov word [bp+020h], ax                    ; 89 46 20
    1271013232    mov word [bp+022h], dx                    ; 89 56 22
    12711     jmp near 08ad2h                           ; e9 95 00
     13233    jmp near 08e49h                           ; e9 95 00
    1271213234    mov ax, word [bp+020h]                    ; 8b 46 20
    1271313235    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1271613238    add dx, 00cfch                            ; 81 c2 fc 0c
    1271713239    out DX, AL                                ; ee
    12718     jmp near 08ad2h                           ; e9 82 00
     13240    jmp near 08e49h                           ; e9 82 00
    1271913241    mov ax, word [bp+020h]                    ; 8b 46 20
    1272013242    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1272313245    add dx, 00cfch                            ; 81 c2 fc 0c
    1272413246    out DX, ax                                ; ef
    12725     jmp short 08ad2h                          ; eb 70
     13247    jmp short 08e49h                          ; eb 70
    1272613248    mov ax, word [bp+020h]                    ; 8b 46 20
    1272713249    mov cx, word [bp+022h]                    ; 8b 4e 22
     
    1273213254    ; mov ax, cx                                ; 8b c1
    1273313255    out DX, eax                               ; 66 ef
    12734     jmp short 08ad2h                          ; eb 5c
     13256    jmp short 08e49h                          ; eb 5c
    1273513257    mov bx, word [bp+008h]                    ; 8b 5e 08
    1273613258    mov es, [bp+028h]                         ; 8e 46 28
    1273713259    mov cx, word [word 00000h]                ; 8b 0e 00 00
    1273813260    cmp cx, word [es:bx]                      ; 26 3b 0f
    12739     jbe short 08a8fh                          ; 76 0a
     13261    jbe short 08e06h                          ; 76 0a
    1274013262    mov ax, word [bp+024h]                    ; 8b 46 24
    1274113263    xor ah, ah                                ; 30 e4
    1274213264    or ah, 089h                               ; 80 cc 89
    12743     jmp short 08acbh                          ; eb 3c
     13265    jmp short 08e42h                          ; eb 3c
    1274413266    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1274513267    mov si, 0f2c0h                            ; be c0 f2
     
    1275013272    pop DS                                    ; 1f
    1275113273    mov word [bp+018h], 00a00h                ; c7 46 18 00 0a
    12752     jmp short 08ad2h                          ; eb 2d
    12753     mov bx, 00cd6h                            ; bb d6 0c
     13274    jmp short 08e49h                          ; eb 2d
     13275    mov bx, 00cech                            ; bb ec 0c
    1275413276    mov cx, ds                                ; 8c d9
    1275513277    mov ax, strict word 00004h                ; b8 04 00
    12756     call 018aeh                               ; e8 fe 8d
     13278    call 018aeh                               ; e8 87 8a
    1275713279    mov ax, word [bp+018h]                    ; 8b 46 18
    1275813280    push ax                                   ; 50
    1275913281    mov ax, word [bp+024h]                    ; 8b 46 24
    1276013282    push ax                                   ; 50
    12761     push 00c92h                               ; 68 92 0c
     13283    push 00ca8h                               ; 68 a8 0c
    1276213284    push strict byte 00004h                   ; 6a 04
    12763     call 018e9h                               ; e8 29 8e
     13285    call 018e9h                               ; e8 b2 8a
    1276413286    add sp, strict byte 00008h                ; 83 c4 08
    1276513287    mov ax, word [bp+024h]                    ; 8b 46 24
     
    1277213294    pop si                                    ; 5e
    1277313295    retn                                      ; c3
    12774 pci_find_classcode_:                         ; 0xf8ad6 LB 0x28
     13296pci_find_classcode_:                         ; 0xf8e4d LB 0x28
    1277513297    push bx                                   ; 53
    1277613298    push cx                                   ; 51
     
    1278713309    int 01ah                                  ; cd 1a
    1278813310    cmp ah, 000h                              ; 80 fc 00
    12789     je near 08af7h                            ; 0f 84 03 00
     13311    je near 08e6eh                            ; 0f 84 03 00
    1279013312    mov bx, strict word 0ffffh                ; bb ff ff
    1279113313    mov ax, bx                                ; 89 d8
     
    1279513317    pop bx                                    ; 5b
    1279613318    retn                                      ; c3
    12797 pci_read_config_byte_:                       ; 0xf8afe LB 0x21
     13319pci_read_config_byte_:                       ; 0xf8e75 LB 0x21
    1279813320    push cx                                   ; 51
    1279913321    push di                                   ; 57
     
    1281313335    pop cx                                    ; 59
    1281413336    retn                                      ; c3
    12815 pci_read_config_word_:                       ; 0xf8b1f LB 0x1f
     13337pci_read_config_word_:                       ; 0xf8e96 LB 0x1f
    1281613338    push cx                                   ; 51
    1281713339    push di                                   ; 57
     
    1283113353    pop cx                                    ; 59
    1283213354    retn                                      ; c3
    12833 pci_read_config_dword_:                      ; 0xf8b3e LB 0x24
     13355pci_read_config_dword_:                      ; 0xf8eb5 LB 0x24
    1283413356    push cx                                   ; 51
    1283513357    push di                                   ; 57
     
    1285113373    pop cx                                    ; 59
    1285213374    retn                                      ; c3
    12853 vds_is_present_:                             ; 0xf8b62 LB 0x1d
     13375vds_is_present_:                             ; 0xf8ed9 LB 0x1d
    1285413376    push bx                                   ; 53
    1285513377    push bp                                   ; 55
     
    1285913381    mov es, ax                                ; 8e c0
    1286013382    test byte [es:bx], 020h                   ; 26 f6 07 20
    12861     je short 08b7ah                           ; 74 06
     13383    je short 08ef1h                           ; 74 06
    1286213384    mov ax, strict word 00001h                ; b8 01 00
    1286313385    pop bp                                    ; 5d
     
    1286813390    pop bx                                    ; 5b
    1286913391    retn                                      ; c3
    12870 vds_real_to_lin_:                            ; 0xf8b7f LB 0x1e
     13392vds_real_to_lin_:                            ; 0xf8ef6 LB 0x1e
    1287113393    push bx                                   ; 53
    1287213394    push cx                                   ; 51
     
    1287913401    sal ax, 1                                 ; d1 e0
    1288013402    rcl dx, 1                                 ; d1 d2
    12881     loop 08b8dh                               ; e2 fa
     13403    loop 08f04h                               ; e2 fa
    1288213404    xor cx, cx                                ; 31 c9
    1288313405    add ax, bx                                ; 01 d8
     
    1288713409    pop bx                                    ; 5b
    1288813410    retn                                      ; c3
    12889 vds_build_sg_list_:                          ; 0xf8b9d LB 0x76
     13411vds_build_sg_list_:                          ; 0xf8f14 LB 0x76
    1289013412    push si                                   ; 56
    1289113413    push di                                   ; 57
     
    1290113423    mov bx, word [bp+00ah]                    ; 8b 5e 0a
    1290213424    mov word [es:di+002h], bx                 ; 26 89 5d 02
    12903     call 08b7fh                               ; e8 c3 ff
     13425    call 08ef6h                               ; e8 c3 ff
    1290413426    mov es, si                                ; 8e c6
    1290513427    mov word [es:di+004h], ax                 ; 26 89 45 04
    1290613428    mov word [es:di+006h], dx                 ; 26 89 55 06
    1290713429    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    12908     call 08b62h                               ; e8 93 ff
     13430    call 08ed9h                               ; e8 93 ff
    1290913431    test ax, ax                               ; 85 c0
    12910     je short 08be6h                           ; 74 13
     13432    je short 08f5dh                           ; 74 13
    1291113433    mov es, si                                ; 8e c6
    1291213434    mov ax, 08105h                            ; b8 05 81
    1291313435    mov dx, strict word 00000h                ; ba 00 00
    1291413436    int 04bh                                  ; cd 4b
    12915     jc near 08be3h                            ; 0f 82 02 00
     13437    jc near 08f5ah                            ; 0f 82 02 00
    1291613438    db  032h, 0c0h
    1291713439    ; xor al, al                                ; 32 c0
    1291813440    cbw                                       ; 98
    12919     jmp short 08c0dh                          ; eb 27
     13441    jmp short 08f84h                          ; eb 27
    1292013442    mov es, si                                ; 8e c6
    1292113443    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1293313455    pop si                                    ; 5e
    1293413456    retn 00004h                               ; c2 04 00
    12935 vds_free_sg_list_:                           ; 0xf8c13 LB 0x2d
     13457vds_free_sg_list_:                           ; 0xf8f8a LB 0x36
    1293613458    push bx                                   ; 53
    1293713459    push di                                   ; 57
     
    1293913461    mov bp, sp                                ; 89 e5
    1294013462    mov bx, ax                                ; 89 c3
    12941     call 08b62h                               ; e8 45 ff
     13463    call 08ed9h                               ; e8 45 ff
    1294213464    test ax, ax                               ; 85 c0
    12943     je short 08c34h                           ; 74 13
     13465    je short 08fabh                           ; 74 13
    1294413466    mov di, bx                                ; 89 df
    1294513467    mov es, dx                                ; 8e c2
     
    1294713469    mov dx, strict word 00000h                ; ba 00 00
    1294813470    int 04bh                                  ; cd 4b
    12949     jc near 08c33h                            ; 0f 82 02 00
     13471    jc near 08faah                            ; 0f 82 02 00
    1295013472    db  032h, 0c0h
    1295113473    ; xor al, al                                ; 32 c0
     
    1295713479    pop bx                                    ; 5b
    1295813480    retn                                      ; c3
    12959 __U4D:                                       ; 0xf8c40 LB 0x39
     13481    times 0x9 db 0
     13482__U4D:                                       ; 0xf8fc0 LB 0x39
    1296013483    pushfw                                    ; 9c
    1296113484    push eax                                  ; 66 50
     
    1298713510    popfw                                     ; 9d
    1298813511    retn                                      ; c3
    12989 __U4M:                                       ; 0xf8c79 LB 0x31
     13512__U4M:                                       ; 0xf8ff9 LB 0x31
    1299013513    pushfw                                    ; 9c
    1299113514    push eax                                  ; 66 50
     
    1301213535    popfw                                     ; 9d
    1301313536    retn                                      ; c3
    13014 _fmemset_:                                   ; 0xf8caa LB 0xd
     13537_fmemset_:                                   ; 0xf902a LB 0xd
    1301513538    push di                                   ; 57
    1301613539    mov es, dx                                ; 8e c2
     
    1302213545    pop di                                    ; 5f
    1302313546    retn                                      ; c3
    13024 _fmemcpy_:                                   ; 0xf8cb7 LB 0x33
     13547_fmemcpy_:                                   ; 0xf9037 LB 0x33
    1302513548    push bp                                   ; 55
    1302613549    db  08bh, 0ech
     
    1304213565    leave                                     ; c9
    1304313566    retn                                      ; c3
    13044     add byte [bx+si], al                      ; 00 00
    13045     lea ax, [bp+si]                           ; 8d 02
    13046     lea ax, [0068dh]                          ; 8d 06 8d 06
    13047     lea ax, [0088dh]                          ; 8d 06 8d 08
    13048     lea cx, [bx+si]                           ; 8d 08
    13049     lea cx, [bp+si]                           ; 8d 0a
    13050     lea cx, [00e8dh]                          ; 8d 0e 8d 0e
    13051     lea dx, [bx+si]                           ; 8d 10
    13052     lea dx, [di]                              ; 8d 15
    13053     lea dx, [bx]                              ; 8d 17
    13054     db  08dh
    13055 apm_worker:                                  ; 0xf8cea LB 0x3a
     13567    add byte [bx+si-07d70h], al               ; 00 80 90 82
     13568    nop                                       ; 90
     13569    xchg byte [bx+si-06f7ah], dl              ; 86 90 86 90
     13570    xchg byte [bx+si-06f78h], dl              ; 86 90 88 90
     13571    mov byte [bx+si-06f76h], dl               ; 88 90 8a 90
     13572    mov ss, [bx+si-06f72h]                    ; 8e 90 8e 90
     13573    nop                                       ; 90
     13574    nop                                       ; 90
     13575    xchg bp, ax                               ; 95
     13576    nop                                       ; 90
     13577    xchg di, ax                               ; 97
     13578    nop                                       ; 90
     13579apm_worker:                                  ; 0xf906a LB 0x3a
    1305613580    sti                                       ; fb
    1305713581    push ax                                   ; 50
     
    1306513589    pop ax                                    ; 58
    1306613590    mov AH, strict byte 053h                  ; b4 53
    13067     jnc short 08d20h                          ; 73 25
    13068     jmp word [cs:bp-07330h]                   ; 2e ff a6 d0 8c
    13069     jmp short 08d1eh                          ; eb 1c
     13591    jnc short 090a0h                          ; 73 25
     13592    jmp word [cs:bp-06fb0h]                   ; 2e ff a6 50 90
     13593    jmp short 0909eh                          ; eb 1c
    1307013594    sti                                       ; fb
    1307113595    hlt                                       ; f4
    13072     jmp short 08d1eh                          ; eb 18
    13073     jmp short 08d1eh                          ; eb 16
    13074     jmp short 08d20h                          ; eb 16
     13596    jmp short 0909eh                          ; eb 18
     13597    jmp short 0909eh                          ; eb 16
     13598    jmp short 090a0h                          ; eb 16
    1307513599    mov AH, strict byte 080h                  ; b4 80
    13076     jmp short 08d22h                          ; eb 14
    13077     jmp short 08d20h                          ; eb 10
     13600    jmp short 090a2h                          ; eb 14
     13601    jmp short 090a0h                          ; eb 10
    1307813602    mov ax, 00102h                            ; b8 02 01
    13079     jmp short 08d1eh                          ; eb 09
    13080     jmp short 08d1eh                          ; eb 07
     13603    jmp short 0909eh                          ; eb 09
     13604    jmp short 0909eh                          ; eb 07
    1308113605    mov BL, strict byte 000h                  ; b3 00
    1308213606    mov cx, strict word 00000h                ; b9 00 00
    13083     jmp short 08d1eh                          ; eb 00
     13607    jmp short 0909eh                          ; eb 00
    1308413608    clc                                       ; f8
    1308513609    retn                                      ; c3
     
    1308713611    stc                                       ; f9
    1308813612    retn                                      ; c3
    13089 apm_pm16_entry:                              ; 0xf8d24 LB 0x11
     13613apm_pm16_entry:                              ; 0xf90a4 LB 0x11
    1309013614    mov AH, strict byte 002h                  ; b4 02
    1309113615    push DS                                   ; 1e
     
    1309513619    add bp, strict byte 00008h                ; 83 c5 08
    1309613620    mov ds, bp                                ; 8e dd
    13097     call 08ceah                               ; e8 b8 ff
     13621    call 0906ah                               ; e8 b8 ff
    1309813622    pop bp                                    ; 5d
    1309913623    pop DS                                    ; 1f
    1310013624    retf                                      ; cb
    1310113625
    13102   ; Padding 0x4ccb bytes at 0xf8d35
    13103   times 19659 db 0
     13626  ; Padding 0x494b bytes at 0xf90b5
     13627  times 18763 db 0
    1310413628
    1310513629section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3aa class=CODE group=AUTO
     
    1314813672    add bp, strict byte 00008h                ; 83 c5 08
    1314913673    push ebp                                  ; 66 55
    13150     mov bp, 08d26h                            ; bd 26 8d
     13674    mov bp, 090a6h                            ; bd a6 90
    1315113675    add byte [bx+si], al                      ; 00 00
    1315213676    push ebp                                  ; 66 55
     
    1364914173    db  033h, 0ffh
    1365014174    ; xor di, di                                ; 33 ff
    13651     mov cx, 07e00h                            ; b9 00 7e
     14175    mov cx, 07ff8h                            ; b9 f8 7f
    1365214176    rep stosw                                 ; f3 ab
    1365314177    db  033h, 0dbh
     
    1373614260    pop DS                                    ; 1f
    1373714261    cld                                       ; fc
    13738     call 04893h                               ; e8 da 66
     14262    call 04969h                               ; e8 b0 67
    1373914263    pop DS                                    ; 1f
    1374014264    mov AL, strict byte 014h                  ; b0 14
     
    1382414348    cld                                       ; fc
    1382514349    call 01b25h                               ; e8 89 38
    13826     call 01f23h                               ; e8 84 3c
    13827     call 085e4h                               ; e8 42 a3
    13828     call 07701h                               ; e8 5c 94
     14350    call 01f13h                               ; e8 74 3c
     14351    call 0895bh                               ; e8 b9 a6
     14352    call 07a70h                               ; e8 cb 97
    1382914353    call 0ed2fh                               ; e8 87 0a
    1383014354    call 0e2d2h                               ; e8 27 00
     
    1383314357    cld                                       ; fc
    1383414358    call 01725h                               ; e8 74 34
    13835     call 0358dh                               ; e8 d9 52
     14359    call 0356dh                               ; e8 b9 52
    1383614360    sti                                       ; fb
    1383714361    int 019h                                  ; cd 19
     
    1395814482    pop DS                                    ; 1f
    1395914483    cld                                       ; fc
    13960     call 05b9dh                               ; e8 5b 74
     14484    call 05cdfh                               ; e8 9d 75
    1396114485    popaw                                     ; 61
    1396214486    pop ES                                    ; 07
     
    1407414598    pop DS                                    ; 1f
    1407514599    cld                                       ; fc
    14076     call 04f85h                               ; e8 43 67
     14600    call 0505bh                               ; e8 19 68
    1407714601    popaw                                     ; 61
    1407814602    pop DS                                    ; 1f
     
    1409114615    pop DS                                    ; 1f
    1409214616    cld                                       ; fc
    14093     call 04f85h                               ; e8 25 67
     14617    call 0505bh                               ; e8 fb 67
    1409414618    popaw                                     ; 61
    1409514619    pop DS                                    ; 1f
     
    1419014714    pop DS                                    ; 1f
    1419114715    cld                                       ; fc
    14192     call 04b9dh                               ; e8 ce 61
     14716    call 04c73h                               ; e8 a4 62
    1419314717    pop ES                                    ; 07
    1419414718    popaw                                     ; 61
     
    1421614740    cld                                       ; fc
    1421714741    push 0ece9h                               ; 68 e9 ec
    14218     jmp near 035cbh                           ; e9 5a 49
     14742    jmp near 035abh                           ; e9 3a 49
    1421914743    push ES                                   ; 06
    1422014744    push ax                                   ; 50
     
    1422214746    push cx                                   ; 51
    1422314747    push dx                                   ; 52
    14224     call 035a3h                               ; e8 2a 49
     14748    call 03583h                               ; e8 0a 49
    1422514749    cmp AL, strict byte 000h                  ; 3c 00
    1422614750    je short 0ecabh                           ; 74 2e
    14227     call 035b7h                               ; e8 37 49
     14751    call 03597h                               ; e8 17 49
    1422814752    pop dx                                    ; 5a
    1422914753    push dx                                   ; 52
     
    1424314767    cld                                       ; fc
    1424414768    push 0ece9h                               ; 68 e9 ec
    14245     jmp near 03ba9h                           ; e9 12 4f
     14769    jmp near 03c06h                           ; e9 6f 4f
    1424614770    and dl, 0e0h                              ; 80 e2 e0
    1424714771    db  03ah, 0c2h
     
    1428314807    jne short 0ecc8h                          ; 75 06
    1428414808    push 0ece9h                               ; 68 e9 ec
    14285     jmp near 02df4h                           ; e9 2c 41
     14809    jmp near 02dd4h                           ; e9 0c 41
    1428614810int13_notfloppy:                             ; 0xfecc8 LB 0x14
    1428714811    cmp dl, 0e0h                              ; 80 fa e0
     
    1428914813    shr ebx, 010h                             ; 66 c1 eb 10
    1429014814    push bx                                   ; 53
    14291     call 03fc8h                               ; e8 f3 52
     14815    call 04053h                               ; e8 7e 53
    1429214816    pop bx                                    ; 5b
    1429314817    sal ebx, 010h                             ; 66 c1 e3 10
     
    1429614820    cmp ah, 040h                              ; 80 fc 40
    1429714821    jnbe short 0ece6h                         ; 77 05
    14298     call 05299h                               ; e8 b5 65
     14822    call 053dbh                               ; e8 f7 66
    1429914823    jmp short 0ece9h                          ; eb 03
    14300     call 056d5h                               ; e8 ec 69
     14824    call 05817h                               ; e8 2e 6b
    1430114825int13_out:                                   ; 0xfece9 LB 0x4
    1430214826    pop DS                                    ; 1f
     
    1451015034    pop DS                                    ; 1f
    1451115035    cld                                       ; fc
    14512     call 06d1bh                               ; e8 40 7d
     15036    call 06e5dh                               ; e8 82 7e
    1451315037    popaw                                     ; 61
    1451415038    pop ES                                    ; 07
     
    1455815082    mov ax, strict word 00001h                ; b8 01 00
    1455915083    push ax                                   ; 50
    14560     call 04631h                               ; e8 61 55
     15084    call 04707h                               ; e8 37 56
    1456115085    inc sp                                    ; 44
    1456215086    inc sp                                    ; 44
     
    1456515089    mov ax, strict word 00002h                ; b8 02 00
    1456615090    push ax                                   ; 50
    14567     call 04631h                               ; e8 54 55
     15091    call 04707h                               ; e8 2a 56
    1456815092    inc sp                                    ; 44
    1456915093    inc sp                                    ; 44
     
    1457215096    mov ax, strict word 00003h                ; b8 03 00
    1457315097    push strict byte 00003h                   ; 6a 03
    14574     call 04631h                               ; e8 46 55
     15098    call 04707h                               ; e8 1c 56
    1457515099    inc sp                                    ; 44
    1457615100    inc sp                                    ; 44
     
    1457915103    mov ax, strict word 00004h                ; b8 04 00
    1458015104    push ax                                   ; 50
    14581     call 04631h                               ; e8 39 55
     15105    call 04707h                               ; e8 0f 56
    1458215106    inc sp                                    ; 44
    1458315107    inc sp                                    ; 44
     
    1492315447    cmp ah, 0c2h                              ; 80 fc c2
    1492415448    je short 0f882h                           ; 74 0e
    14925     call 05da6h                               ; e8 2f 65
     15449    call 05ee8h                               ; e8 71 66
    1492615450    popaw                                     ; 61
    1492715451    pop ES                                    ; 07
     
    1492915453    popfw                                     ; 9d
    1493015454    jmp short 0f890h                          ; eb 13
    14931     call 08713h                               ; e8 93 8e
     15455    call 08a8ah                               ; e8 0a 92
    1493215456    jmp short 0f877h                          ; eb f5
    1493315457int15_handler_mouse:                         ; 0xff882 LB 0x5
    14934     call 06995h                               ; e8 10 71
     15458    call 06ad7h                               ; e8 52 72
    1493515459    jmp short 0f877h                          ; eb f0
    1493615460int15_handler32:                             ; 0xff887 LB 0x9
    1493715461    pushad                                    ; 66 60
    14938     call 0626fh                               ; e8 e3 69
     15462    call 063b1h                               ; e8 25 6b
    1493915463    popad                                     ; 66 61
    1494015464    jmp short 0f878h                          ; eb e8
     
    1496615490    pop DS                                    ; 1f
    1496715491    cld                                       ; fc
    14968     call 068cfh                               ; e8 17 70
     15492    call 06a11h                               ; e8 59 71
    1496915493    pop cx                                    ; 59
    1497015494    jcxz 0f8c7h                               ; e3 0c
     
    1505815582    db  018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
    1505915583    db  076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
    15060     db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 09eh, 08ah, 066h
    15061     db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 0ech, 067h, 061h, 01fh, 007h
     15584    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 015h, 08eh, 066h
     15585    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 02eh, 069h, 061h, 01fh, 007h
    1506215586    db  0cfh
    1506315587int70_handler:                               ; 0xffe8f LB 0x16
     
    1506815592    pop DS                                    ; 1f
    1506915593    cld                                       ; fc
    15070     call 065bch                               ; e8 24 67
     15594    call 066feh                               ; e8 66 68
    1507115595    popaw                                     ; 61
    1507215596    pop DS                                    ; 1f
     
    1516415688cpu_reset:                                   ; 0xffff0 LB 0x10
    1516515689    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    15166     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0f5h
     15690    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 03bh
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum

    r43316 r43630  
    1 57dac3e8f20bd1918af25a3b6b5e6cfb *VBoxPcBios.rom
     10c14a3e4d7b29dba2a7e66be9479e668 *VBoxPcBios.rom
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette