VirtualBox

Ignore:
Timestamp:
Feb 4, 2014 10:30:36 AM (11 years ago)
Author:
vboxsync
Message:

Devices/BIOS: update alternative source

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm

    r50167 r50317  
    856856    db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
    857857_pktacc:                                     ; 0xf006a LB 0xc
    858     db  000h, 000h, 000h, 000h, 000h, 000h, 08fh, 028h, 02ah, 079h, 0f2h, 086h
     858    db  000h, 000h, 000h, 000h, 000h, 000h, 08fh, 028h, 030h, 079h, 0f8h, 086h
    859859_softrst:                                    ; 0xf0076 LB 0xc
    860860    db  000h, 000h, 000h, 000h, 000h, 000h, 077h, 02bh, 091h, 036h, 091h, 036h
    861861_dskacc:                                     ; 0xf0082 LB 0x2e
    862862    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0d8h, 027h, 052h, 028h, 000h, 000h, 000h, 000h
    863     db  0beh, 077h, 074h, 078h, 0eeh, 085h, 082h, 086h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     863    db  0beh, 077h, 077h, 078h, 0f4h, 085h, 088h, 086h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
    864864    db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
    865865
    866 section CONST progbits vstart=0xb0 align=1 ; size=0xce0 class=DATA group=DGROUP
     866section CONST progbits vstart=0xb0 align=1 ; size=0xcc8 class=DATA group=DGROUP
    867867    db   'NMI Handler called', 00ah, 000h
    868868    db   'INT18: BOOT FAILURE', 00ah, 000h
     
    958958    db   'Delaying boot for %d seconds:', 000h
    959959    db   ' %d', 000h
    960     db   'scsi_read_sectors: device_id out of range %d', 00ah, 000h
    961     db   'scsi_write_sectors: device_id out of range %d', 00ah, 000h
     960    db   'scsi_read_sectors', 000h
     961    db   '%s: device_id out of range %d', 00ah, 000h
     962    db   'scsi_write_sectors', 000h
    962963    db   'scsi_cmd_packet', 000h
    963964    db   '%s: DATA_OUT not supported yet', 00ah, 000h
     
    967968    db   'Disk %d has an unsupported sector size of %u', 00ah, 000h
    968969    db   'SCSI %d-ID#%d: LCHS=%u/%u/%u %ld sectors', 00ah, 000h
    969     db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h
     970    db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
    970971    db   'ahci_read_sectors', 000h
    971972    db   '%s: device_id out of range %d', 00ah, 000h
     
    980981    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    981982
    982 section CONST2 progbits vstart=0xd90 align=1 ; size=0x3fa class=DATA group=DGROUP
    983 _bios_cvs_version_string:                    ; 0xf0d90 LB 0x12
     983section CONST2 progbits vstart=0xd78 align=1 ; size=0x3fa class=DATA group=DGROUP
     984_bios_cvs_version_string:                    ; 0xf0d78 LB 0x12
    984985    db  'VirtualBox 4.3.53', 000h
    985 _bios_prefix_string:                         ; 0xf0da2 LB 0x8
     986_bios_prefix_string:                         ; 0xf0d8a LB 0x8
    986987    db  'BIOS: ', 000h, 000h
    987 _isotag:                                     ; 0xf0daa LB 0x6
     988_isotag:                                     ; 0xf0d92 LB 0x6
    988989    db  'CD001', 000h
    989 _eltorito:                                   ; 0xf0db0 LB 0x18
     990_eltorito:                                   ; 0xf0d98 LB 0x18
    990991    db  'EL TORITO SPECIFICATION', 000h
    991 _drivetypes:                                 ; 0xf0dc8 LB 0x28
     992_drivetypes:                                 ; 0xf0db0 LB 0x28
    992993    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    993994    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    994995    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    995 _scan_to_scanascii:                          ; 0xf0df0 LB 0x37a
     996_scan_to_scanascii:                          ; 0xf0dd8 LB 0x37a
    996997    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    997998    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    10501051    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    10511052    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    1052 _panic_msg_keyb_buffer_full:                 ; 0xf116a LB 0x20
     1053_panic_msg_keyb_buffer_full:                 ; 0xf1152 LB 0x20
    10531054    db  '%s: keyboard input buffer full', 00ah, 000h
    10541055
    1055   ; Padding 0x476 bytes at 0xf118a
    1056   times 1142 db 0
     1056  ; Padding 0x48e bytes at 0xf1172
     1057  times 1166 db 0
    10571058
    1058 section _TEXT progbits vstart=0x1600 align=1 ; size=0x7f35 class=CODE group=AUTO
     1059section _TEXT progbits vstart=0x1600 align=1 ; size=0x7f65 class=CODE group=AUTO
    10591060rom_scan_:                                   ; 0xf1600 LB 0x50
    10601061    push bp                                   ; 55
     
    12781279    push bp                                   ; 55
    12791280    mov bp, sp                                ; 89 e5
    1280     mov bx, 00da2h                            ; bb a2 0d
     1281    mov bx, 00d8ah                            ; bb 8a 0d
    12811282    mov cx, ds                                ; 8c d9
    12821283    mov ax, strict word 00004h                ; b8 04 00
    12831284    call 01931h                               ; e8 ac 01
    1284     push 00d90h                               ; 68 90 0d
     1285    push 00d78h                               ; 68 78 0d
    12851286    push 000d9h                               ; 68 d9 00
    12861287    push strict byte 00004h                   ; 6a 04
     
    14531454    mov bx, strict word 0000ah                ; bb 0a 00
    14541455    xor cx, cx                                ; 31 c9
    1455     call 09440h                               ; e8 67 7b
     1456    call 09470h                               ; e8 97 7b
    14561457    mov word [bp-008h], ax                    ; 89 46 f8
    14571458    mov cx, dx                                ; 89 d1
     
    24172418    lea ax, [bp-036h]                         ; 8d 46 ca
    24182419    call 05389h                               ; e8 6c 31
    2419     mov bx, 00da2h                            ; bb a2 0d
     2420    mov bx, 00d8ah                            ; bb 8a 0d
    24202421    mov cx, ds                                ; 8c d9
    24212422    mov ax, strict word 00004h                ; b8 04 00
     
    30653066    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    30663067    jne short 028e1h                          ; 75 1f
    3067     mov bx, 00da2h                            ; bb a2 0d
     3068    mov bx, 00d8ah                            ; bb 8a 0d
    30683069    mov cx, ds                                ; 8c d9
    30693070    mov ax, strict word 00004h                ; b8 04 00
     
    39443945    cmp AL, strict byte 048h                  ; 3c 48
    39453946    jbe short 03095h                          ; 76 29
    3946     mov bx, 00da2h                            ; bb a2 0d
     3947    mov bx, 00d8ah                            ; bb 8a 0d
    39473948    mov cx, ds                                ; 8c d9
    39483949    mov ax, strict word 00004h                ; b8 04 00
     
    45444545    mov ax, strict word 00006h                ; b8 06 00
    45454546    jmp near 02fbdh                           ; e9 7e f9
    4546     mov bx, 00da2h                            ; bb a2 0d
     4547    mov bx, 00d8ah                            ; bb 8a 0d
    45474548    mov cx, ds                                ; 8c d9
    45484549    mov ax, strict word 00004h                ; b8 04 00
     
    46414642    cmp ax, strict word 0004ah                ; 3d 4a 00
    46424643    jne near 03829h                           ; 0f 85 1e 01
    4643     mov bx, 00da2h                            ; bb a2 0d
     4644    mov bx, 00d8ah                            ; bb 8a 0d
    46444645    mov cx, ds                                ; 8c d9
    46454646    mov ax, strict word 00004h                ; b8 04 00
     
    47394740    pop bp                                    ; 5d
    47404741    retn                                      ; c3
    4741     mov bx, 00da2h                            ; bb a2 0d
     4742    mov bx, 00d8ah                            ; bb 8a 0d
    47424743    mov cx, ds                                ; 8c d9
    47434744    mov ax, strict word 00004h                ; b8 04 00
     
    48204821    mov dx, ss                                ; 8c d2
    48214822    lea ax, [bp-026h]                         ; 8d 46 da
    4822     call 094aah                               ; e8 b7 5b
     4823    call 094dah                               ; e8 e7 5b
    48234824    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    48244825    mov ax, strict word 00011h                ; b8 11 00
     
    48744875    jnc short 03993h                          ; 73 10
    48754876    mov al, byte [bp+di-00825h]               ; 8a 83 db f7
    4876     cmp al, byte [di+00daah]                  ; 3a 85 aa 0d
     4877    cmp al, byte [di+00d92h]                  ; 3a 85 92 0d
    48774878    je short 0397dh                           ; 74 f0
    48784879    mov ax, strict word 00005h                ; b8 05 00
     
    48844885    jnc short 039adh                          ; 73 10
    48854886    mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
    4886     cmp al, byte [di+00db0h]                  ; 3a 85 b0 0d
     4887    cmp al, byte [di+00d98h]                  ; 3a 85 98 0d
    48874888    je short 03997h                           ; 74 f0
    48884889    mov ax, strict word 00006h                ; b8 06 00
     
    51625163    cmp dx, ax                                ; 39 c2
    51635164    je short 03d2fh                           ; 74 29
    5164     mov bx, 00da2h                            ; bb a2 0d
     5165    mov bx, 00d8ah                            ; bb 8a 0d
    51655166    mov cx, ds                                ; 8c d9
    51665167    mov ax, strict word 00004h                ; b8 04 00
     
    52795280    xor dl, dl                                ; 30 d2
    52805281    xor cx, cx                                ; 31 c9
    5281     call 09479h                               ; e8 25 56
     5282    call 094a9h                               ; e8 55 56
    52825283    xor bx, bx                                ; 31 db
    52835284    add ax, si                                ; 01 f0
     
    52855286    mov bx, di                                ; 89 fb
    52865287    xor cx, cx                                ; 31 c9
    5287     call 09479h                               ; e8 18 56
     5288    call 094a9h                               ; e8 48 56
    52885289    mov bx, ax                                ; 89 c3
    52895290    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    53205321    mov dx, ss                                ; 8c d2
    53215322    lea ax, [bp-02eh]                         ; 8d 46 d2
    5322     call 094aah                               ; e8 f2 55
     5323    call 094dah                               ; e8 22 56
    53235324    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    53245325    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    53845385    test al, al                               ; 84 c0
    53855386    je near 03d7bh                            ; 0f 84 13 fe
    5386     mov bx, 00da2h                            ; bb a2 0d
     5387    mov bx, 00d8ah                            ; bb 8a 0d
    53875388    mov cx, ds                                ; 8c d9
    53885389    mov ax, strict word 00004h                ; b8 04 00
     
    54655466    mov word [bp+016h], bx                    ; 89 5e 16
    54665467    jmp near 03d7fh                           ; e9 37 fd
    5467     mov bx, 00da2h                            ; bb a2 0d
     5468    mov bx, 00d8ah                            ; bb 8a 0d
    54685469    mov cx, ds                                ; 8c d9
    54695470    mov ax, strict word 00004h                ; b8 04 00
     
    56275628    mov dx, ss                                ; 8c d2
    56285629    lea ax, [bp-02ch]                         ; 8d 46 d4
    5629     call 094aah                               ; e8 57 52
     5630    call 094dah                               ; e8 87 52
    56305631    mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
    56315632    mov ax, word [bp-018h]                    ; 8b 46 e8
     
    56765677    test dl, dl                               ; 84 d2
    56775678    je near 043a5h                            ; 0f 84 cb 00
    5678     mov bx, 00da2h                            ; bb a2 0d
     5679    mov bx, 00d8ah                            ; bb 8a 0d
    56795680    mov cx, ds                                ; 8c d9
    56805681    mov ax, strict word 00004h                ; b8 04 00
     
    59605961    or byte [bp+01eh], 001h                   ; 80 4e 1e 01
    59615962    jmp near 043b8h                           ; e9 8f fd
    5962     mov bx, 00da2h                            ; bb a2 0d
     5963    mov bx, 00d8ah                            ; bb 8a 0d
    59635964    mov cx, ds                                ; 8c d9
    59645965    mov ax, strict word 00004h                ; b8 04 00
     
    59905991    je short 0468bh                           ; 74 21
    59915992    mov dx, strict word 00001h                ; ba 01 00
    5992     mov bx, 00da2h                            ; bb a2 0d
     5993    mov bx, 00d8ah                            ; bb 8a 0d
    59935994    mov cx, ds                                ; 8c d9
    59945995    mov ax, strict word 00004h                ; b8 04 00
    59955996    call 01931h                               ; e8 b9 d2
    59965997    imul dx, dx, strict byte 0000ah           ; 6b d2 0a
    5997     add dx, 00dc8h                            ; 81 c2 c8 0d
     5998    add dx, 00db0h                            ; 81 c2 b0 0d
    59985999    push dx                                   ; 52
    59996000    push 00474h                               ; 68 74 04
     
    60156016    test al, al                               ; 84 c0
    60166017    je short 046beh                           ; 74 1b
    6017     mov bx, 00da2h                            ; bb a2 0d
     6018    mov bx, 00d8ah                            ; bb 8a 0d
    60186019    mov cx, ds                                ; 8c d9
    60196020    mov ax, strict word 00004h                ; b8 04 00
    60206021    call 01931h                               ; e8 83 d2
    6021     push 00ddch                               ; 68 dc 0d
     6022    push 00dc4h                               ; 68 c4 0d
    60226023    push 00488h                               ; 68 88 04
    60236024    push strict byte 00004h                   ; 6a 04
     
    60276028    test dl, dl                               ; 84 d2
    60286029    je short 046d2h                           ; 74 10
    6029     mov bx, 00da2h                            ; bb a2 0d
     6030    mov bx, 00d8ah                            ; bb 8a 0d
    60306031    mov cx, ds                                ; 8c d9
    60316032    mov ax, strict word 00004h                ; b8 04 00
    60326033    call 01931h                               ; e8 64 d2
    6033     push 00de6h                               ; 68 e6 0d
     6034    push 00dceh                               ; 68 ce 0d
    60346035    jmp short 046b1h                          ; eb df
    60356036    test bl, 080h                             ; f6 c3 80
    60366037    je short 046e8h                           ; 74 11
    6037     mov bx, 00da2h                            ; bb a2 0d
     6038    mov bx, 00d8ah                            ; bb 8a 0d
    60386039    mov cx, ds                                ; 8c d9
    60396040    mov ax, strict word 00004h                ; b8 04 00
    60406041    call 01931h                               ; e8 4f d2
    60416042    push si                                   ; 56
    6042     push 00dd2h                               ; 68 d2 0d
     6043    push 00dbah                               ; 68 ba 0d
    60436044    jmp short 046f7h                          ; eb 0f
    6044     mov bx, 00da2h                            ; bb a2 0d
     6045    mov bx, 00d8ah                            ; bb 8a 0d
    60456046    mov cx, ds                                ; 8c d9
    60466047    mov ax, strict word 00004h                ; b8 04 00
    60476048    call 01931h                               ; e8 3e d2
    60486049    push si                                   ; 56
    6049     push 00dc8h                               ; 68 c8 0d
     6050    push 00db0h                               ; 68 b0 0d
    60506051    push 0049dh                               ; 68 9d 04
    60516052    push strict byte 00004h                   ; 6a 04
     
    60736074    push dx                                   ; 52
    60746075    mov dx, ax                                ; 89 c2
    6075     mov bx, 00da2h                            ; bb a2 0d
     6076    mov bx, 00d8ah                            ; bb 8a 0d
    60766077    mov cx, ds                                ; 8c d9
    60776078    mov ax, strict word 00004h                ; b8 04 00
     
    61486149    mov byte [bp-00ah], al                    ; 88 46 f6
    61496150    mov byte [bp-00ch], al                    ; 88 46 f4
    6150     mov bx, 00da2h                            ; bb a2 0d
     6151    mov bx, 00d8ah                            ; bb 8a 0d
    61516152    mov cx, ds                                ; 8c d9
    61526153    mov ax, strict word 00004h                ; b8 04 00
     
    67156716    test al, al                               ; 84 c0
    67166717    jne short 04cdch                          ; 75 19
    6717     mov bx, 00da2h                            ; bb a2 0d
     6718    mov bx, 00d8ah                            ; bb 8a 0d
    67186719    mov cx, ds                                ; 8c d9
    67196720    mov ax, strict word 00004h                ; b8 04 00
     
    69186919    cmp byte [bp-00ah], 058h                  ; 80 7e f6 58
    69196920    jbe short 04f17h                          ; 76 1e
    6920     mov bx, 00da2h                            ; bb a2 0d
     6921    mov bx, 00d8ah                            ; bb 8a 0d
    69216922    mov cx, ds                                ; 8c d9
    69226923    mov ax, strict word 00004h                ; b8 04 00
     
    69336934    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    69346935    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6935     mov dl, byte [si+00df6h]                  ; 8a 94 f6 0d
    6936     mov ax, word [si+00df6h]                  ; 8b 84 f6 0d
     6936    mov dl, byte [si+00ddeh]                  ; 8a 94 de 0d
     6937    mov ax, word [si+00ddeh]                  ; 8b 84 de 0d
    69376938    jmp near 04fbah                           ; e9 8c 00
    69386939    test bl, 004h                             ; f6 c3 04
     
    69406941    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    69416942    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6942     mov dl, byte [si+00df4h]                  ; 8a 94 f4 0d
    6943     mov ax, word [si+00df4h]                  ; 8b 84 f4 0d
     6943    mov dl, byte [si+00ddch]                  ; 8a 94 dc 0d
     6944    mov ax, word [si+00ddch]                  ; 8b 84 dc 0d
    69446945    jmp near 04fbah                           ; e9 75 00
    69456946    mov al, byte [bp-006h]                    ; 8a 46 fa
     
    69606961    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    69616962    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6962     movzx ax, byte [si+00df8h]                ; 0f b6 84 f8 0d
     6963    movzx ax, byte [si+00de0h]                ; 0f b6 84 e0 0d
    69636964    movzx dx, bl                              ; 0f b6 d3
    69646965    test dx, ax                               ; 85 c2
    69656966    je short 04f85h                           ; 74 0a
    6966     mov dl, byte [si+00df0h]                  ; 8a 94 f0 0d
    6967     mov ax, word [si+00df0h]                  ; 8b 84 f0 0d
     6967    mov dl, byte [si+00dd8h]                  ; 8a 94 d8 0d
     6968    mov ax, word [si+00dd8h]                  ; 8b 84 d8 0d
    69686969    jmp short 04f8dh                          ; eb 08
    6969     mov dl, byte [si+00df2h]                  ; 8a 94 f2 0d
    6970     mov ax, word [si+00df2h]                  ; 8b 84 f2 0d
     6970    mov dl, byte [si+00ddah]                  ; 8a 94 da 0d
     6971    mov ax, word [si+00ddah]                  ; 8b 84 da 0d
    69716972    shr ax, 008h                              ; c1 e8 08
    69726973    mov byte [bp-00ah], al                    ; 88 46 f6
     
    69746975    movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
    69756976    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6976     movzx ax, byte [si+00df8h]                ; 0f b6 84 f8 0d
     6977    movzx ax, byte [si+00de0h]                ; 0f b6 84 e0 0d
    69776978    movzx dx, bl                              ; 0f b6 d3
    69786979    test dx, ax                               ; 85 c2
    69796980    je short 04fb2h                           ; 74 0a
    6980     mov dl, byte [si+00df2h]                  ; 8a 94 f2 0d
    6981     mov ax, word [si+00df2h]                  ; 8b 84 f2 0d
     6981    mov dl, byte [si+00ddah]                  ; 8a 94 da 0d
     6982    mov ax, word [si+00ddah]                  ; 8b 84 da 0d
    69826983    jmp short 04fbah                          ; eb 08
    6983     mov dl, byte [si+00df0h]                  ; 8a 94 f0 0d
    6984     mov ax, word [si+00df0h]                  ; 8b 84 f0 0d
     6984    mov dl, byte [si+00dd8h]                  ; 8a 94 d8 0d
     6985    mov ax, word [si+00dd8h]                  ; 8b 84 d8 0d
    69856986    shr ax, 008h                              ; c1 e8 08
    69866987    mov byte [bp-00ah], al                    ; 88 46 f6
     
    69896990    test dl, dl                               ; 84 d2
    69906991    jne short 04fe0h                          ; 75 16
    6991     mov bx, 00da2h                            ; bb a2 0d
     6992    mov bx, 00d8ah                            ; bb 8a 0d
    69926993    mov cx, ds                                ; 8c d9
    69936994    mov ax, strict word 00004h                ; b8 04 00
     
    73587359    or ah, 080h                               ; 80 cc 80
    73597360    jmp near 05215h                           ; e9 d5 fe
    7360     mov bx, 00da2h                            ; bb a2 0d
     7361    mov bx, 00d8ah                            ; bb 8a 0d
    73617362    mov cx, ds                                ; 8c d9
    73627363    mov ax, strict word 00004h                ; b8 04 00
     
    73697370    call 01972h                               ; e8 18 c6
    73707371    add sp, strict byte 00006h                ; 83 c4 06
    7371     mov bx, 00da2h                            ; bb a2 0d
     7372    mov bx, 00d8ah                            ; bb 8a 0d
    73727373    mov cx, ds                                ; 8c d9
    73737374    mov ax, strict word 00004h                ; b8 04 00
     
    74197420    mov bx, strict word 0003fh                ; bb 3f 00
    74207421    xor cx, cx                                ; 31 c9
    7421     call 09479h                               ; e8 ad 40
     7422    call 094a9h                               ; e8 dd 40
    74227423    mov bx, ax                                ; 89 c3
    74237424    mov cx, dx                                ; 89 d1
    74247425    mov ax, word [bp-004h]                    ; 8b 46 fc
    74257426    mov dx, word [bp-002h]                    ; 8b 56 fe
    7426     call 09440h                               ; e8 67 40
     7427    call 09470h                               ; e8 97 40
    74277428    mov word [es:si+002h], ax                 ; 26 89 44 02
    74287429    cmp ax, 00400h                            ; 3d 00 04
     
    75677568    test ax, ax                               ; 85 c0
    75687569    jne short 05562h                          ; 75 23
    7569     mov bx, 00da2h                            ; bb a2 0d
     7570    mov bx, 00d8ah                            ; bb 8a 0d
    75707571    mov cx, ds                                ; 8c d9
    75717572    mov ax, strict word 00004h                ; b8 04 00
     
    75967597    cmp ax, dx                                ; 39 d0
    75977598    jbe short 055bdh                          ; 76 2e
    7598     mov bx, 00da2h                            ; bb a2 0d
     7599    mov bx, 00d8ah                            ; bb 8a 0d
    75997600    mov cx, ds                                ; 8c d9
    76007601    mov ax, strict word 00004h                ; b8 04 00
     
    76347635    mov bx, cx                                ; 89 cb
    76357636    xor cx, cx                                ; 31 c9
    7636     call 09479h                               ; e8 82 3e
     7637    call 094a9h                               ; e8 b2 3e
    76377638    xor bx, bx                                ; 31 db
    76387639    add ax, word [bp-008h]                    ; 03 46 f8
     
    76407641    mov bx, word [bp-00ah]                    ; 8b 5e f6
    76417642    xor cx, cx                                ; 31 c9
    7642     call 09479h                               ; e8 73 3e
     7643    call 094a9h                               ; e8 a3 3e
    76437644    xor bx, bx                                ; 31 db
    76447645    add ax, word [bp-006h]                    ; 03 46 fa
     
    76947695    test dl, dl                               ; 84 d2
    76957696    je near 054c0h                            ; 0f 84 13 fe
    7696     mov bx, 00da2h                            ; bb a2 0d
     7697    mov bx, 00d8ah                            ; bb 8a 0d
    76977698    mov cx, ds                                ; 8c d9
    76987699    mov ax, strict word 00004h                ; b8 04 00
     
    77127713    or ah, 00ch                               ; 80 cc 0c
    77137714    jmp near 0582dh                           ; e9 51 01
    7714     mov bx, 00da2h                            ; bb a2 0d
     7715    mov bx, 00d8ah                            ; bb 8a 0d
    77157716    mov cx, ds                                ; 8c d9
    77167717    mov ax, strict word 00004h                ; b8 04 00
     
    77987799    mov bx, word [bp-008h]                    ; 8b 5e f8
    77997800    xor cx, cx                                ; 31 c9
    7800     call 09479h                               ; e8 b4 3c
     7801    call 094a9h                               ; e8 e4 3c
    78017802    mov bx, word [bp-006h]                    ; 8b 5e fa
    78027803    xor cx, cx                                ; 31 c9
    7803     call 09479h                               ; e8 ac 3c
     7804    call 094a9h                               ; e8 dc 3c
    78047805    mov word [bp-010h], ax                    ; 89 46 f0
    78057806    mov word [bp-00eh], dx                    ; 89 56 f2
     
    78117812    mov word [bp+016h], ax                    ; 89 46 16
    78127813    jmp near 054c4h                           ; e9 dd fc
    7813     mov bx, 00da2h                            ; bb a2 0d
     7814    mov bx, 00d8ah                            ; bb 8a 0d
    78147815    mov cx, ds                                ; 8c d9
    78157816    mov ax, strict word 00004h                ; b8 04 00
     
    78247825    add sp, strict byte 00008h                ; 83 c4 08
    78257826    jmp near 054c0h                           ; e9 b6 fc
    7826     mov bx, 00da2h                            ; bb a2 0d
     7827    mov bx, 00d8ah                            ; bb 8a 0d
    78277828    mov cx, ds                                ; 8c d9
    78287829    mov ax, strict word 00004h                ; b8 04 00
     
    79667967    cmp dx, word [es:bx+032h]                 ; 26 3b 57 32
    79677968    jc short 059afh                           ; 72 23
    7968     mov bx, 00da2h                            ; bb a2 0d
     7969    mov bx, 00d8ah                            ; bb 8a 0d
    79697970    mov cx, ds                                ; 8c d9
    79707971    mov ax, strict word 00004h                ; b8 04 00
     
    80188019    test dl, dl                               ; 84 d2
    80198020    je near 05ccah                            ; 0f 84 97 02
    8020     mov bx, 00da2h                            ; bb a2 0d
     8021    mov bx, 00d8ah                            ; bb 8a 0d
    80218022    mov cx, ds                                ; 8c d9
    80228023    mov ax, strict word 00004h                ; b8 04 00
     
    82548255    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
    82558256    jmp short 05cddh                          ; eb c4
    8256     mov bx, 00da2h                            ; bb a2 0d
     8257    mov bx, 00d8ah                            ; bb 8a 0d
    82578258    mov cx, ds                                ; 8c d9
    82588259    mov ax, strict word 00004h                ; b8 04 00
     
    85748575    mov word [bp+00ch], ax                    ; 89 46 0c
    85758576    jmp near 06021h                           ; e9 2b 00
    8576     mov bx, 00da2h                            ; bb a2 0d
     8577    mov bx, 00d8ah                            ; bb 8a 0d
    85778578    mov cx, ds                                ; 8c d9
    85788579    mov ax, strict word 00004h                ; b8 04 00
     
    89168917    retf                                      ; cb
    89178918    jmp near 06021h                           ; e9 b7 fc
    8918     mov bx, 00da2h                            ; bb a2 0d
     8919    mov bx, 00d8ah                            ; bb 8a 0d
    89198920    mov cx, ds                                ; 8c d9
    89208921    mov ax, strict word 00004h                ; b8 04 00
     
    89568957    or byte [bp+018h], 001h                   ; 80 4e 18 01
    89578958    jmp near 06021h                           ; e9 41 fc
    8958     mov bx, 00da2h                            ; bb a2 0d
     8959    mov bx, 00d8ah                            ; bb 8a 0d
    89598960    mov cx, ds                                ; 8c d9
    89608961    mov ax, strict word 00004h                ; b8 04 00
     
    92699270    mov word [bp+014h], dx                    ; 89 56 14
    92709271    jmp short 06786h                          ; eb 2a
    9271     mov bx, 00da2h                            ; bb a2 0d
     9272    mov bx, 00d8ah                            ; bb 8a 0d
    92729273    mov cx, ds                                ; 8c d9
    92739274    mov ax, strict word 00004h                ; b8 04 00
     
    97209721    je short 06c0fh                           ; 74 0e
    97219722    push 008f6h                               ; 68 f6 08
    9722     push 0116ah                               ; 68 6a 11
     9723    push 01152h                               ; 68 52 11
    97239724    push strict byte 00007h                   ; 6a 07
    97249725    call 01972h                               ; e8 66 ad
     
    97839784    je short 06c7eh                           ; 74 0e
    97849785    push 00900h                               ; 68 00 09
    9785     push 0116ah                               ; 68 6a 11
     9786    push 01152h                               ; 68 52 11
    97869787    push strict byte 00007h                   ; 6a 07
    97879788    call 01972h                               ; e8 f7 ac
     
    1101911020    pop bp                                    ; 5d
    1102011021    retn 0000ah                               ; c2 0a 00
    11021 @scsi_read_sectors:                          ; 0xf77be LB 0xb6
     11022@scsi_read_sectors:                          ; 0xf77be LB 0xb9
    1102211023    push bp                                   ; 55
    1102311024    mov bp, sp                                ; 89 e5
     
    1103011031    sub bl, 008h                              ; 80 eb 08
    1103111032    cmp bl, 004h                              ; 80 fb 04
    11032     jbe short 077e7h                          ; 76 0f
     11033    jbe short 077eah                          ; 76 12
    1103311034    movzx ax, bl                              ; 0f b6 c3
    1103411035    push ax                                   ; 50
    1103511036    push 00b0eh                               ; 68 0e 0b
     11037    push 00b20h                               ; 68 20 0b
    1103611038    push strict byte 00007h                   ; 6a 07
    11037     call 01972h                               ; e8 8e a1
    11038     add sp, strict byte 00006h                ; 83 c4 06
     11039    call 01972h                               ; e8 8b a1
     11040    add sp, strict byte 00008h                ; 83 c4 08
    1103911041    mov es, [bp+006h]                         ; 8e 46 06
    1104011042    mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
     
    1106211064    sal word [bp-008h], 1                     ; d1 66 f8
    1106311065    rcl word [bp-006h], 1                     ; d1 56 fa
    11064     loop 07830h                               ; e2 f8
     11066    loop 07833h                               ; e2 f8
    1106511067    push dword [bp-008h]                      ; 66 ff 76 f8
    1106611068    db  066h, 026h, 0ffh, 074h, 004h
     
    1107011072    mov cx, ss                                ; 8c d1
    1107111073    lea bx, [bp-012h]                         ; 8d 5e ee
    11072     call 07658h                               ; e8 0b fe
     11074    call 07658h                               ; e8 08 fe
    1107311075    mov ah, al                                ; 88 c4
    1107411076    test al, al                               ; 84 c0
    11075     jne short 07868h                          ; 75 15
     11077    jne short 0786bh                          ; 75 15
    1107611078    mov es, [bp+006h]                         ; 8e 46 06
    1107711079    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1108611088    pop bp                                    ; 5d
    1108711089    retn 00004h                               ; c2 04 00
    11088 @scsi_write_sectors:                         ; 0xf7874 LB 0xb6
     11090@scsi_write_sectors:                         ; 0xf7877 LB 0xb9
    1108911091    push bp                                   ; 55
    1109011092    mov bp, sp                                ; 89 e5
     
    1109711099    sub bl, 008h                              ; 80 eb 08
    1109811100    cmp bl, 004h                              ; 80 fb 04
    11099     jbe short 0789dh                          ; 76 0f
     11101    jbe short 078a3h                          ; 76 12
    1110011102    movzx ax, bl                              ; 0f b6 c3
    1110111103    push ax                                   ; 50
    11102     push 00b3ch                               ; 68 3c 0b
     11104    push 00b3fh                               ; 68 3f 0b
     11105    push 00b20h                               ; 68 20 0b
    1110311106    push strict byte 00007h                   ; 6a 07
    11104     call 01972h                               ; e8 d8 a0
    11105     add sp, strict byte 00006h                ; 83 c4 06
     11107    call 01972h                               ; e8 d2 a0
     11108    add sp, strict byte 00008h                ; 83 c4 08
    1110611109    mov es, [bp+006h]                         ; 8e 46 06
    1110711110    mov di, word [es:si+00ah]                 ; 26 8b 7c 0a
     
    1112911132    sal word [bp-008h], 1                     ; d1 66 f8
    1113011133    rcl word [bp-006h], 1                     ; d1 56 fa
    11131     loop 078e6h                               ; e2 f8
     11134    loop 078ech                               ; e2 f8
    1113211135    push dword [bp-008h]                      ; 66 ff 76 f8
    1113311136    db  066h, 026h, 0ffh, 074h, 004h
     
    1113711140    mov cx, ss                                ; 8c d1
    1113811141    lea bx, [bp-012h]                         ; 8d 5e ee
    11139     call 0770ah                               ; e8 07 fe
     11142    call 0770ah                               ; e8 01 fe
    1114011143    mov ah, al                                ; 88 c4
    1114111144    test al, al                               ; 84 c0
    11142     jne short 0791eh                          ; 75 15
     11145    jne short 07924h                          ; 75 15
    1114311146    mov es, [bp+006h]                         ; 8e 46 06
    1114411147    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1115311156    pop bp                                    ; 5d
    1115411157    retn 00004h                               ; c2 04 00
    11155 scsi_cmd_packet_:                            ; 0xf792a LB 0x166
     11158scsi_cmd_packet_:                            ; 0xf7930 LB 0x166
    1115611159    push bp                                   ; 55
    1115711160    mov bp, sp                                ; 89 e5
     
    1116511168    mov dx, strict word 0000eh                ; ba 0e 00
    1116611169    mov ax, strict word 00040h                ; b8 40 00
    11167     call 0166ch                               ; e8 26 9d
     11170    call 0166ch                               ; e8 20 9d
    1116811171    mov si, 00122h                            ; be 22 01
    1116911172    mov word [bp-00eh], ax                    ; 89 46 f2
    1117011173    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    11171     jne short 07971h                          ; 75 1f
    11172     mov bx, 00da2h                            ; bb a2 0d
     11174    jne short 07977h                          ; 75 1f
     11175    mov bx, 00d8ah                            ; bb 8a 0d
    1117311176    mov cx, ds                                ; 8c d9
    1117411177    mov ax, strict word 00004h                ; b8 04 00
    11175     call 01931h                               ; e8 d4 9f
    11176     push 00b6bh                               ; 68 6b 0b
    11177     push 00b7bh                               ; 68 7b 0b
     11178    call 01931h                               ; e8 ce 9f
     11179    push 00b52h                               ; 68 52 0b
     11180    push 00b62h                               ; 68 62 0b
    1117811181    push strict byte 00004h                   ; 6a 04
    11179     call 01972h                               ; e8 0a a0
     11182    call 01972h                               ; e8 04 a0
    1118011183    add sp, strict byte 00006h                ; 83 c4 06
    1118111184    mov dx, strict word 00001h                ; ba 01 00
    11182     jmp near 07a85h                           ; e9 14 01
     11185    jmp near 07a8bh                           ; e9 14 01
    1118311186    sub di, strict byte 00008h                ; 83 ef 08
    1118411187    sal di, 002h                              ; c1 e7 02
     
    1119411197    ; sub ah, ah                                ; 2a e4
    1119511198    test AL, strict byte 001h                 ; a8 01
    11196     jne short 0798dh                          ; 75 f7
     11199    jne short 07993h                          ; 75 f7
    1119711200    xor ax, ax                                ; 31 c0
    1119811201    mov dx, word [bp+006h]                    ; 8b 56 06
     
    1121011213    shr dx, 1                                 ; d1 ea
    1121111214    rcr ax, 1                                 ; d1 d8
    11212     loop 079b8h                               ; e2 fa
     11215    loop 079beh                               ; e2 fa
    1121311216    and ax, 000f0h                            ; 25 f0 00
    1121411217    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     
    1122811231    shr dx, 1                                 ; d1 ea
    1122911232    rcr ax, 1                                 ; d1 d8
    11230     loop 079dfh                               ; e2 fa
     11233    loop 079e5h                               ; e2 fa
    1123111234    mov dx, bx                                ; 89 da
    1123211235    out DX, AL                                ; ee
     
    1123411237    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    1123511238    cmp cx, ax                                ; 39 c1
    11236     jnc short 07a00h                          ; 73 0e
     11239    jnc short 07a06h                          ; 73 0e
    1123711240    les di, [bp-00ch]                         ; c4 7e f4
    1123811241    add di, cx                                ; 01 cf
     
    1124111244    out DX, AL                                ; ee
    1124211245    inc cx                                    ; 41
    11243     jmp short 079eah                          ; eb ea
     11246    jmp short 079f0h                          ; eb ea
    1124411247    mov dx, bx                                ; 89 da
    1124511248    in AL, DX                                 ; ec
     
    1124711250    ; sub ah, ah                                ; 2a e4
    1124811251    test AL, strict byte 001h                 ; a8 01
    11249     jne short 07a00h                          ; 75 f7
     11252    jne short 07a06h                          ; 75 f7
    1125011253    test AL, strict byte 002h                 ; a8 02
    11251     je short 07a1bh                           ; 74 0e
     11254    je short 07a21h                           ; 74 0e
    1125211255    lea dx, [bx+003h]                         ; 8d 57 03
    1125311256    xor al, al                                ; 30 c0
     
    1125711260    ; sub ah, ah                                ; 2a e4
    1125811261    mov dx, strict word 00003h                ; ba 03 00
    11259     jmp short 07a85h                          ; eb 6a
     11262    jmp short 07a8bh                          ; eb 6a
    1126011263    mov ax, word [bp+004h]                    ; 8b 46 04
    1126111264    test ax, ax                               ; 85 c0
    11262     je short 07a2ah                           ; 74 08
     11265    je short 07a30h                           ; 74 08
    1126311266    lea dx, [bx+001h]                         ; 8d 57 01
    1126411267    mov cx, ax                                ; 89 c1
    1126511268    in AL, DX                                 ; ec
    11266     loop 07a27h                               ; e2 fd
     11269    loop 07a2dh                               ; e2 fd
    1126711270    mov ax, word [bp+006h]                    ; 8b 46 06
    1126811271    mov es, [bp-00eh]                         ; 8e 46 f2
     
    1127211275    lea ax, [bx+001h]                         ; 8d 47 01
    1127311276    cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
    11274     jne short 07a4bh                          ; 75 07
     11277    jne short 07a51h                          ; 75 07
    1127511278    cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
    11276     jbe short 07a68h                          ; 76 1d
     11279    jbe short 07a6eh                          ; 76 1d
    1127711280    mov dx, ax                                ; 89 c2
    1127811281    mov cx, 08000h                            ; b9 00 80
     
    1128411287    add ax, 00800h                            ; 05 00 08
    1128511288    mov word [bp+00eh], ax                    ; 89 46 0e
    11286     jmp short 07a3bh                          ; eb d3
     11289    jmp short 07a41h                          ; eb d3
    1128711290    mov dx, ax                                ; 89 c2
    1128811291    mov cx, word [bp+006h]                    ; 8b 4e 06
     
    1129111294    mov es, [bp-00eh]                         ; 8e 46 f2
    1129211295    cmp word [es:si+01ch], strict byte 00000h ; 26 83 7c 1c 00
    11293     je short 07a83h                           ; 74 07
     11296    je short 07a89h                           ; 74 07
    1129411297    mov cx, word [es:si+01ch]                 ; 26 8b 4c 1c
    1129511298    in AL, DX                                 ; ec
    11296     loop 07a80h                               ; e2 fd
     11299    loop 07a86h                               ; e2 fd
    1129711300    xor dx, dx                                ; 31 d2
    1129811301    mov ax, dx                                ; 89 d0
     
    1130211305    pop bp                                    ; 5d
    1130311306    retn 0000ch                               ; c2 0c 00
    11304 scsi_enumerate_attached_devices_:            ; 0xf7a90 LB 0x3e5
     11307scsi_enumerate_attached_devices_:            ; 0xf7a96 LB 0x3e5
    1130511308    push bp                                   ; 55
    1130611309    mov bp, sp                                ; 89 e5
     
    1131411317    mov dx, strict word 0000eh                ; ba 0e 00
    1131511318    mov ax, strict word 00040h                ; b8 40 00
    11316     call 0166ch                               ; e8 c6 9b
     11319    call 0166ch                               ; e8 c0 9b
    1131711320    mov si, 00122h                            ; be 22 01
    1131811321    mov word [bp-01ah], ax                    ; 89 46 e6
    1131911322    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    11320     jmp near 07e03h                           ; e9 4f 03
     11323    jmp near 07e09h                           ; e9 4f 03
    1132111324    mov es, [bp-01ah]                         ; 8e 46 e6
    1132211325    cmp byte [es:si+001e8h], 004h             ; 26 80 bc e8 01 04
    11323     jnc near 07e6bh                           ; 0f 83 aa 03
     11326    jnc near 07e71h                           ; 0f 83 aa 03
    1132411327    mov cx, strict word 0000ah                ; b9 0a 00
    1132511328    xor bx, bx                                ; 31 db
    1132611329    mov dx, ss                                ; 8c d2
    1132711330    lea ax, [bp-026h]                         ; 8d 46 da
    11328     call 094aah                               ; e8 dc 19
     11331    call 094dah                               ; e8 06 1a
    1132911332    mov byte [bp-026h], 025h                  ; c6 46 da 25
    1133011333    push dword 000000008h                     ; 66 6a 08
     
    1133711340    lea bx, [bp-026h]                         ; 8d 5e da
    1133811341    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
    11339     call 07658h                               ; e8 6b fb
     11342    call 07658h                               ; e8 65 fb
    1134011343    test al, al                               ; 84 c0
    11341     je short 07affh                           ; 74 0e
    11342     push 00b9bh                               ; 68 9b 0b
    11343     push 00bd4h                               ; 68 d4 0b
     11344    je short 07b05h                           ; 74 0e
     11345    push 00b82h                               ; 68 82 0b
     11346    push 00bbbh                               ; 68 bb 0b
    1134411347    push strict byte 00007h                   ; 6a 07
    11345     call 01972h                               ; e8 76 9e
     11348    call 01972h                               ; e8 70 9e
    1134611349    add sp, strict byte 00006h                ; 83 c4 06
    1134711350    movzx ax, byte [bp-00225h]                ; 0f b6 86 db fd
     
    1135511358    sal ax, 1                                 ; d1 e0
    1135611359    rcl dx, 1                                 ; d1 d2
    11357     loop 07b1ah                               ; e2 fa
     11360    loop 07b20h                               ; e2 fa
    1135811361    or bx, ax                                 ; 09 c3
    1135911362    or dx, di                                 ; 09 fa
     
    1137211375    sal ax, 1                                 ; d1 e0
    1137311376    rcl dx, 1                                 ; d1 d2
    11374     loop 07b4ch                               ; e2 fa
     11377    loop 07b52h                               ; e2 fa
    1137511378    or ax, bx                                 ; 09 d8
    1137611379    or dx, di                                 ; 09 fa
     
    1137911382    mov word [bp-016h], ax                    ; 89 46 ea
    1138011383    test dx, dx                               ; 85 d2
    11381     jne short 07b69h                          ; 75 05
     11384    jne short 07b6fh                          ; 75 05
    1138211385    cmp ax, 00200h                            ; 3d 00 02
    11383     je short 07b89h                           ; 74 20
    11384     mov bx, 00da2h                            ; bb a2 0d
     11386    je short 07b8fh                           ; 74 20
     11387    mov bx, 00d8ah                            ; bb 8a 0d
    1138511388    mov cx, ds                                ; 8c d9
    1138611389    mov ax, strict word 00004h                ; b8 04 00
    11387     call 01931h                               ; e8 bd 9d
     11390    call 01931h                               ; e8 b7 9d
    1138811391    push dx                                   ; 52
    1138911392    push word [bp-016h]                       ; ff 76 ea
    1139011393    push word [bp-010h]                       ; ff 76 f0
    11391     push 00bf3h                               ; 68 f3 0b
     11394    push 00bdah                               ; 68 da 0b
    1139211395    push strict byte 00004h                   ; 6a 04
    11393     call 01972h                               ; e8 ef 9d
     11396    call 01972h                               ; e8 e9 9d
    1139411397    add sp, strict byte 0000ah                ; 83 c4 0a
    11395     jmp near 07dfah                           ; e9 71 02
     11398    jmp near 07e00h                           ; e9 71 02
    1139611399    mov es, [bp-01ah]                         ; 8e 46 e6
    1139711400    mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
    1139811401    mov byte [bp-00ch], al                    ; 88 46 f4
    1139911402    cmp AL, strict byte 001h                  ; 3c 01
    11400     jc short 07ba4h                           ; 72 0c
    11401     jbe short 07bach                          ; 76 12
     11403    jc short 07baah                           ; 72 0c
     11404    jbe short 07bb2h                          ; 76 12
    1140211405    cmp AL, strict byte 003h                  ; 3c 03
    11403     je short 07bb4h                           ; 74 16
     11406    je short 07bbah                           ; 74 16
    1140411407    cmp AL, strict byte 002h                  ; 3c 02
    11405     je short 07bb0h                           ; 74 0e
    11406     jmp short 07c00h                          ; eb 5c
     11408    je short 07bb6h                           ; 74 0e
     11409    jmp short 07c06h                          ; eb 5c
    1140711410    test al, al                               ; 84 c0
    11408     jne short 07c00h                          ; 75 58
     11411    jne short 07c06h                          ; 75 58
    1140911412    mov BL, strict byte 090h                  ; b3 90
    11410     jmp short 07bb6h                          ; eb 0a
     11413    jmp short 07bbch                          ; eb 0a
    1141111414    mov BL, strict byte 098h                  ; b3 98
    11412     jmp short 07bb6h                          ; eb 06
     11415    jmp short 07bbch                          ; eb 06
    1141311416    mov BL, strict byte 0a0h                  ; b3 a0
    11414     jmp short 07bb6h                          ; eb 02
     11417    jmp short 07bbch                          ; eb 02
    1141511418    mov BL, strict byte 0a8h                  ; b3 a8
    1141611419    mov al, bl                                ; 88 d8
     
    1141811421    movzx cx, al                              ; 0f b6 c8
    1141911422    mov ax, cx                                ; 89 c8
    11420     call 016ach                               ; e8 ea 9a
     11423    call 016ach                               ; e8 e4 9a
    1142111424    test al, al                               ; 84 c0
    11422     je short 07c00h                           ; 74 3a
     11425    je short 07c06h                           ; 74 3a
    1142311426    mov al, bl                                ; 88 d8
    1142411427    db  0feh, 0c0h
    1142511428    ; inc al                                    ; fe c0
    1142611429    xor ah, ah                                ; 30 e4
    11427     call 016ach                               ; e8 dd 9a
     11430    call 016ach                               ; e8 d7 9a
    1142811431    xor ah, ah                                ; 30 e4
    1142911432    mov dx, ax                                ; 89 c2
    1143011433    sal dx, 008h                              ; c1 e2 08
    1143111434    movzx ax, bl                              ; 0f b6 c3
    11432     call 016ach                               ; e8 d0 9a
     11435    call 016ach                               ; e8 ca 9a
    1143311436    xor ah, ah                                ; 30 e4
    1143411437    add ax, dx                                ; 01 d0
     
    1143911442    add AL, strict byte 002h                  ; 04 02
    1144011443    xor ah, ah                                ; 30 e4
    11441     call 016ach                               ; e8 bd 9a
     11444    call 016ach                               ; e8 b7 9a
    1144211445    xor ah, ah                                ; 30 e4
    1144311446    mov word [bp-014h], ax                    ; 89 46 ec
    1144411447    mov ax, cx                                ; 89 c8
    11445     call 016ach                               ; e8 b3 9a
     11448    call 016ach                               ; e8 ad 9a
    1144611449    xor ah, ah                                ; 30 e4
    1144711450    mov word [bp-01ch], ax                    ; 89 46 e4
    11448     jmp short 07c45h                          ; eb 45
     11451    jmp short 07c4bh                          ; eb 45
    1144911452    mov ax, word [bp-018h]                    ; 8b 46 e8
    1145011453    cmp ax, strict word 00040h                ; 3d 40 00
    11451     jnbe short 07c0ah                         ; 77 02
    11452     jne short 07c16h                          ; 75 0c
     11454    jnbe short 07c10h                         ; 77 02
     11455    jne short 07c1ch                          ; 75 0c
    1145311456    mov word [bp-014h], 000ffh                ; c7 46 ec ff 00
    1145411457    mov word [bp-01ch], strict word 0003fh    ; c7 46 e4 3f 00
    11455     jmp short 07c2eh                          ; eb 18
     11458    jmp short 07c34h                          ; eb 18
    1145611459    cmp ax, strict word 00020h                ; 3d 20 00
    11457     jnbe short 07c1dh                         ; 77 02
    11458     jne short 07c24h                          ; 75 07
     11460    jnbe short 07c23h                         ; 77 02
     11461    jne short 07c2ah                          ; 75 07
    1145911462    mov word [bp-014h], 00080h                ; c7 46 ec 80 00
    11460     jmp short 07c29h                          ; eb 05
     11463    jmp short 07c2fh                          ; eb 05
    1146111464    mov word [bp-014h], strict word 00040h    ; c7 46 ec 40 00
    1146211465    mov word [bp-01ch], strict word 00020h    ; c7 46 e4 20 00
     
    1146611469    mov dx, word [bp-018h]                    ; 8b 56 e8
    1146711470    xor cx, cx                                ; 31 c9
    11468     call 09440h                               ; e8 00 18
     11471    call 09470h                               ; e8 2a 18
    1146911472    mov di, ax                                ; 89 c7
    1147011473    mov word [bp-012h], dx                    ; 89 56 ee
     
    1149311496    mov word [es:bx+02ah], ax                 ; 26 89 47 2a
    1149411497    cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
    11495     jne short 07ca1h                          ; 75 06
     11498    jne short 07ca7h                          ; 75 06
    1149611499    cmp di, 00400h                            ; 81 ff 00 04
    11497     jbe short 07ca9h                          ; 76 08
     11500    jbe short 07cafh                          ; 76 08
    1149811501    mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
    11499     jmp short 07cadh                          ; eb 04
     11502    jmp short 07cb3h                          ; eb 04
    1150011503    mov word [es:bx+028h], di                 ; 26 89 7f 28
    11501     mov bx, 00da2h                            ; bb a2 0d
     11504    mov bx, 00d8ah                            ; bb 8a 0d
    1150211505    mov cx, ds                                ; 8c d9
    1150311506    mov ax, strict word 00004h                ; b8 04 00
    11504     call 01931h                               ; e8 79 9c
     11507    call 01931h                               ; e8 73 9c
    1150511508    push word [bp-018h]                       ; ff 76 e8
    1150611509    push word [bp-00eh]                       ; ff 76 f2
     
    1151111514    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    1151211515    push ax                                   ; 50
    11513     push 00c21h                               ; 68 21 0c
     11516    push 00c08h                               ; 68 08 0c
    1151411517    push strict byte 00004h                   ; 6a 04
    11515     call 01972h                               ; e8 9d 9c
     11518    call 01972h                               ; e8 97 9c
    1151611519    add sp, strict byte 00012h                ; 83 c4 12
    1151711520    movzx ax, dl                              ; 0f b6 c2
     
    1152511528    mov word [es:bx+030h], ax                 ; 26 89 47 30
    1152611529    cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
    11527     jne short 07cffh                          ; 75 06
     11530    jne short 07d05h                          ; 75 06
    1152811531    cmp di, 00400h                            ; 81 ff 00 04
    11529     jbe short 07d07h                          ; 76 08
     11532    jbe short 07d0dh                          ; 76 08
    1153011533    mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
    11531     jmp short 07d0bh                          ; eb 04
     11534    jmp short 07d11h                          ; eb 04
    1153211535    mov word [es:bx+02eh], di                 ; 26 89 7f 2e
    1153311536    movzx ax, dl                              ; 0f b6 c2
     
    1155111554    mov dx, strict word 00075h                ; ba 75 00
    1155211555    mov ax, strict word 00040h                ; b8 40 00
    11553     call 01650h                               ; e8 05 99
     11556    call 01650h                               ; e8 ff 98
    1155411557    db  0feh, 0c0h
    1155511558    ; inc al                                    ; fe c0
     
    1155711560    mov dx, strict word 00075h                ; ba 75 00
    1155811561    mov ax, strict word 00040h                ; b8 40 00
    11559     call 0165eh                               ; e8 05 99
     11562    call 0165eh                               ; e8 ff 98
    1156011563    inc byte [bp-00ch]                        ; fe 46 f4
    1156111564    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1156211565    mov es, [bp-01ah]                         ; 8e 46 e6
    1156311566    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
    11564     jmp near 07dfah                           ; e9 90 00
    11565     mov bx, 00da2h                            ; bb a2 0d
     11567    jmp near 07e00h                           ; e9 90 00
     11568    mov bx, 00d8ah                            ; bb 8a 0d
    1156611569    mov cx, ds                                ; 8c d9
    1156711570    mov ax, strict word 00004h                ; b8 04 00
    11568     call 01931h                               ; e8 bc 9b
     11571    call 01931h                               ; e8 b6 9b
    1156911572    push word [bp-010h]                       ; ff 76 f0
    1157011573    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    1157111574    push ax                                   ; 50
    11572     push 00c4bh                               ; 68 4b 0c
     11575    push 00c32h                               ; 68 32 0c
    1157311576    push strict byte 00004h                   ; 6a 04
    11574     call 01972h                               ; e8 ed 9b
     11577    call 01972h                               ; e8 e7 9b
    1157511578    add sp, strict byte 00008h                ; 83 c4 08
    1157611579    mov dl, byte [bp-00ch]                    ; 8a 56 f4
     
    1161111614    inc word [bp-010h]                        ; ff 46 f0
    1161211615    cmp word [bp-010h], strict byte 00010h    ; 83 7e f0 10
    11613     jnl short 07e6bh                          ; 7d 68
     11616    jnl short 07e71h                          ; 7d 68
    1161411617    mov byte [bp-026h], 012h                  ; c6 46 da 12
    1161511618    xor al, al                                ; 30 c0
     
    1162811631    lea bx, [bp-026h]                         ; 8d 5e da
    1162911632    mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
    11630     call 07658h                               ; e8 24 f8
     11633    call 07658h                               ; e8 1e f8
    1163111634    test al, al                               ; 84 c0
    11632     je short 07e46h                           ; 74 0e
    11633     push 00b9bh                               ; 68 9b 0b
    11634     push 00bbbh                               ; 68 bb 0b
     11635    je short 07e4ch                           ; 74 0e
     11636    push 00b82h                               ; 68 82 0b
     11637    push 00ba2h                               ; 68 a2 0b
    1163511638    push strict byte 00007h                   ; 6a 07
    11636     call 01972h                               ; e8 2f 9b
     11639    call 01972h                               ; e8 29 9b
    1163711640    add sp, strict byte 00006h                ; 83 c4 06
    1163811641    test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
    11639     jne short 07e56h                          ; 75 09
     11642    jne short 07e5ch                          ; 75 09
    1164011643    test byte [bp-00226h], 01fh               ; f6 86 da fd 1f
    11641     je near 07ab4h                            ; 0f 84 5e fc
     11644    je near 07abah                            ; 0f 84 5e fc
    1164211645    test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
    11643     jne short 07dfah                          ; 75 9d
     11646    jne short 07e00h                          ; 75 9d
    1164411647    mov al, byte [bp-00226h]                  ; 8a 86 da fd
    1164511648    and AL, strict byte 01fh                  ; 24 1f
    1164611649    cmp AL, strict byte 005h                  ; 3c 05
    11647     je near 07d6ah                            ; 0f 84 01 ff
    11648     jmp short 07dfah                          ; eb 8f
     11650    je near 07d70h                            ; 0f 84 01 ff
     11651    jmp short 07e00h                          ; eb 8f
    1164911652    lea sp, [bp-00ah]                         ; 8d 66 f6
    1165011653    pop di                                    ; 5f
     
    1165511658    pop bp                                    ; 5d
    1165611659    retn                                      ; c3
    11657 _scsi_init:                                  ; 0xf7e75 LB 0x66
     11660_scsi_init:                                  ; 0xf7e7b LB 0x66
    1165811661    push bp                                   ; 55
    1165911662    mov bp, sp                                ; 89 e5
    1166011663    mov dx, strict word 0000eh                ; ba 0e 00
    1166111664    mov ax, strict word 00040h                ; b8 40 00
    11662     call 0166ch                               ; e8 eb 97
     11665    call 0166ch                               ; e8 e5 97
    1166311666    mov bx, 00122h                            ; bb 22 01
    1166411667    mov es, ax                                ; 8e c0
     
    1167111674    ; sub ah, ah                                ; 2a e4
    1167211675    cmp AL, strict byte 055h                  ; 3c 55
    11673     jne short 07ea5h                          ; 75 0c
     11676    jne short 07eabh                          ; 75 0c
    1167411677    xor al, al                                ; 30 c0
    1167511678    mov dx, 00433h                            ; ba 33 04
    1167611679    out DX, AL                                ; ee
    1167711680    mov ax, 00430h                            ; b8 30 04
    11678     call 07a90h                               ; e8 eb fb
     11681    call 07a96h                               ; e8 eb fb
    1167911682    mov AL, strict byte 055h                  ; b0 55
    1168011683    mov dx, 00436h                            ; ba 36 04
     
    1168411687    ; sub ah, ah                                ; 2a e4
    1168511688    cmp AL, strict byte 055h                  ; 3c 55
    11686     jne short 07ebeh                          ; 75 0c
     11689    jne short 07ec4h                          ; 75 0c
    1168711690    xor al, al                                ; 30 c0
    1168811691    mov dx, 00437h                            ; ba 37 04
    1168911692    out DX, AL                                ; ee
    1169011693    mov ax, 00434h                            ; b8 34 04
    11691     call 07a90h                               ; e8 d2 fb
     11694    call 07a96h                               ; e8 d2 fb
    1169211695    mov AL, strict byte 055h                  ; b0 55
    1169311696    mov dx, 0043ah                            ; ba 3a 04
     
    1169711700    ; sub ah, ah                                ; 2a e4
    1169811701    cmp AL, strict byte 055h                  ; 3c 55
    11699     jne short 07ed7h                          ; 75 0c
     11702    jne short 07eddh                          ; 75 0c
    1170011703    xor al, al                                ; 30 c0
    1170111704    mov dx, 0043bh                            ; ba 3b 04
    1170211705    out DX, AL                                ; ee
    1170311706    mov ax, 00438h                            ; b8 38 04
    11704     call 07a90h                               ; e8 b9 fb
     11707    call 07a96h                               ; e8 b9 fb
    1170511708    mov sp, bp                                ; 89 ec
    1170611709    pop bp                                    ; 5d
    1170711710    retn                                      ; c3
    11708 high_bits_save_:                             ; 0xf7edb LB 0x17
     11711high_bits_save_:                             ; 0xf7ee1 LB 0x17
    1170911712    push bp                                   ; 55
    1171011713    mov bp, sp                                ; 89 e5
     
    1171811721    pop bp                                    ; 5d
    1171911722    retn                                      ; c3
    11720 high_bits_restore_:                          ; 0xf7ef2 LB 0x17
     11723high_bits_restore_:                          ; 0xf7ef8 LB 0x17
    1172111724    push bp                                   ; 55
    1172211725    mov bp, sp                                ; 89 e5
     
    1173011733    pop bp                                    ; 5d
    1173111734    retn                                      ; c3
    11732 ahci_ctrl_set_bits_:                         ; 0xf7f09 LB 0x43
     11735ahci_ctrl_set_bits_:                         ; 0xf7f0f LB 0x43
    1173311736    push bp                                   ; 55
    1173411737    mov bp, sp                                ; 89 e5
     
    1176811771    pop bp                                    ; 5d
    1176911772    retn                                      ; c3
    11770 ahci_ctrl_clear_bits_:                       ; 0xf7f4c LB 0x47
     11773ahci_ctrl_clear_bits_:                       ; 0xf7f52 LB 0x47
    1177111774    push bp                                   ; 55
    1177211775    mov bp, sp                                ; 89 e5
     
    1180811811    pop bp                                    ; 5d
    1180911812    retn                                      ; c3
    11810 ahci_ctrl_is_bit_set_:                       ; 0xf7f93 LB 0x39
     11813ahci_ctrl_is_bit_set_:                       ; 0xf7f99 LB 0x39
    1181111814    push bp                                   ; 55
    1181211815    mov bp, sp                                ; 89 e5
     
    1183011833    xchg dx, ax                               ; 92
    1183111834    test dx, di                               ; 85 fa
    11832     jne short 07fbfh                          ; 75 04
     11835    jne short 07fc5h                          ; 75 04
    1183311836    test ax, bx                               ; 85 d8
    11834     je short 07fc3h                           ; 74 04
     11837    je short 07fc9h                           ; 74 04
    1183511838    mov AL, strict byte 001h                  ; b0 01
    11836     jmp short 07fc5h                          ; eb 02
     11839    jmp short 07fcbh                          ; eb 02
    1183711840    xor al, al                                ; 30 c0
    1183811841    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1184111844    pop bp                                    ; 5d
    1184211845    retn                                      ; c3
    11843 ahci_ctrl_extract_bits_:                     ; 0xf7fcc LB 0x1b
     11846ahci_ctrl_extract_bits_:                     ; 0xf7fd2 LB 0x1b
    1184411847    push si                                   ; 56
    1184511848    push bp                                   ; 55
     
    1184911852    and dx, cx                                ; 21 ca
    1185011853    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
    11851     jcxz 07fe2h                               ; e3 06
     11854    jcxz 07fe8h                               ; e3 06
    1185211855    shr dx, 1                                 ; d1 ea
    1185311856    rcr ax, 1                                 ; d1 d8
    11854     loop 07fdch                               ; e2 fa
     11857    loop 07fe2h                               ; e2 fa
    1185511858    pop bp                                    ; 5d
    1185611859    pop si                                    ; 5e
    1185711860    retn 00002h                               ; c2 02 00
    11858 ahci_addr_to_phys_:                          ; 0xf7fe7 LB 0x1e
     11861ahci_addr_to_phys_:                          ; 0xf7fed LB 0x1e
    1185911862    push bx                                   ; 53
    1186011863    push cx                                   ; 51
     
    1186711870    sal ax, 1                                 ; d1 e0
    1186811871    rcl dx, 1                                 ; d1 d2
    11869     loop 07ff5h                               ; e2 fa
     11872    loop 07ffbh                               ; e2 fa
    1187011873    xor cx, cx                                ; 31 c9
    1187111874    add ax, bx                                ; 01 d8
     
    1187511878    pop bx                                    ; 5b
    1187611879    retn                                      ; c3
    11877 ahci_port_cmd_sync_:                         ; 0xf8005 LB 0xd5
     11880ahci_port_cmd_sync_:                         ; 0xf800b LB 0xd5
    1187811881    push bp                                   ; 55
    1187911882    mov bp, sp                                ; 89 e5
     
    1188911892    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
    1189011893    cmp AL, strict byte 0ffh                  ; 3c ff
    11891     je near 080d2h                            ; 0f 84 aa 00
     11894    je near 080d8h                            ; 0f 84 aa 00
    1189211895    movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
    1189311896    xor dx, dx                                ; 31 d2
     
    1190111904    lea ax, [si+00080h]                       ; 8d 84 80 00
    1190211905    mov dx, es                                ; 8c c2
    11903     call 07fe7h                               ; e8 96 ff
     11906    call 07fedh                               ; e8 96 ff
    1190411907    mov es, [bp-00ah]                         ; 8e 46 f6
    1190511908    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1191111914    xor cx, cx                                ; 31 c9
    1191211915    mov ax, di                                ; 89 f8
    11913     call 07f09h                               ; e8 98 fe
     11916    call 07f0fh                               ; e8 98 fe
    1191411917    lea ax, [si+00138h]                       ; 8d 84 38 01
    1191511918    cwd                                       ; 99
     
    1193811941    mov dx, si                                ; 89 f2
    1193911942    mov ax, di                                ; 89 f8
    11940     call 07f93h                               ; e8 e2 fe
     11943    call 07f99h                               ; e8 e2 fe
    1194111944    test al, al                               ; 84 c0
    11942     je short 08094h                           ; 74 df
     11945    je short 0809ah                           ; 74 df
    1194311946    mov bx, strict word 00001h                ; bb 01 00
    1194411947    xor cx, cx                                ; 31 c9
    1194511948    mov dx, si                                ; 89 f2
    1194611949    mov ax, di                                ; 89 f8
    11947     call 07f09h                               ; e8 48 fe
     11950    call 07f0fh                               ; e8 48 fe
    1194811951    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1194911952    add dx, 00118h                            ; 81 c2 18 01
     
    1195111954    xor cx, cx                                ; 31 c9
    1195211955    mov ax, di                                ; 89 f8
    11953     call 07f4ch                               ; e8 7a fe
     11956    call 07f52h                               ; e8 7a fe
    1195411957    lea sp, [bp-006h]                         ; 8d 66 fa
    1195511958    pop di                                    ; 5f
     
    1195811961    pop bp                                    ; 5d
    1195911962    retn                                      ; c3
    11960 ahci_cmd_data_:                              ; 0xf80da LB 0x1ca
     11963ahci_cmd_data_:                              ; 0xf80e0 LB 0x1ca
    1196111964    push bp                                   ; 55
    1196211965    mov bp, sp                                ; 89 e5
     
    1198211985    mov ax, 00080h                            ; b8 80 00
    1198311986    mov dx, word [bp-00ah]                    ; 8b 56 f6
    11984     call 094aah                               ; e8 91 13
     11987    call 094dah                               ; e8 bb 13
    1198511988    mov es, [bp-00ah]                         ; 8e 46 f6
    1198611989    mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
     
    1199812001    shr bx, 1                                 ; d1 eb
    1199912002    rcr ax, 1                                 ; d1 d8
    12000     loop 0814ch                               ; e2 fa
     12003    loop 08152h                               ; e2 fa
    1200112004    mov es, [bp-00ah]                         ; 8e 46 f6
    1200212005    mov byte [es:si+00085h], al               ; 26 88 84 85 00
     
    1202312026    mov bx, word [bp-016h]                    ; 8b 5e ea
    1202412027    xor cx, cx                                ; 31 c9
    12025     call 09479h                               ; e8 c4 12
     12028    call 094a9h                               ; e8 ee 12
    1202612029    push dx                                   ; 52
    1202712030    push ax                                   ; 50
     
    1203112034    mov ax, 0026ah                            ; b8 6a 02
    1203212035    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12033     call 0938fh                               ; e8 c4 11
     12036    call 093c5h                               ; e8 f4 11
    1203412037    mov es, [bp-00ah]                         ; 8e 46 f6
    1203512038    movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
     
    1205112054    mov es, [bp-012h]                         ; 8e 46 ee
    1205212055    cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
    12053     je short 08244h                           ; 74 2c
     12056    je short 0824ah                           ; 74 2c
    1205412057    mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
    1205512058    dec dx                                    ; 4a
     
    1207012073    movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
    1207112074    cmp ax, dx                                ; 39 d0
    12072     jnc short 0825eh                          ; 73 03
     12075    jnc short 08264h                          ; 73 03
    1207312076    inc ax                                    ; 40
    12074     jmp short 0824eh                          ; eb f0
     12077    jmp short 08254h                          ; eb f0
    1207512078    mov al, byte [bp-008h]                    ; 8a 46 f8
    1207612079    cmp AL, strict byte 035h                  ; 3c 35
    12077     jne short 0826bh                          ; 75 06
     12080    jne short 08271h                          ; 75 06
    1207812081    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    12079     jmp short 0827fh                          ; eb 14
     12082    jmp short 08285h                          ; eb 14
    1208012083    cmp AL, strict byte 0a0h                  ; 3c a0
    12081     jne short 0827bh                          ; 75 0c
     12084    jne short 08281h                          ; 75 0c
    1208212085    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1208312086    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    12084     jmp short 0827fh                          ; eb 04
     12087    jmp short 08285h                          ; eb 04
    1208512088    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1208612089    or byte [bp-008h], 005h                   ; 80 4e f8 05
     
    1208812091    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1208912092    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12090     call 08005h                               ; e8 75 fd
     12093    call 0800bh                               ; e8 75 fd
    1209112094    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1209212095    add ax, 0026ah                            ; 05 6a 02
    1209312096    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12094     call 09408h                               ; e8 6c 11
     12097    call 0943eh                               ; e8 9c 11
    1209512098    lea sp, [bp-006h]                         ; 8d 66 fa
    1209612099    pop di                                    ; 5f
     
    1209912102    pop bp                                    ; 5d
    1210012103    retn                                      ; c3
    12101 ahci_port_deinit_current_:                   ; 0xf82a4 LB 0x144
     12104ahci_port_deinit_current_:                   ; 0xf82aa LB 0x144
    1210212105    push bp                                   ; 55
    1210312106    mov bp, sp                                ; 89 e5
     
    1211412117    mov byte [bp-00ah], al                    ; 88 46 f6
    1211512118    cmp AL, strict byte 0ffh                  ; 3c ff
    12116     je near 083dfh                            ; 0f 84 17 01
     12119    je near 083e5h                            ; 0f 84 17 01
    1211712120    movzx dx, al                              ; 0f b6 d0
    1211812121    sal dx, 007h                              ; c1 e2 07
     
    1212112124    xor cx, cx                                ; 31 c9
    1212212125    mov ax, si                                ; 89 f0
    12123     call 07f4ch                               ; e8 70 fc
     12126    call 07f52h                               ; e8 70 fc
    1212412127    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1212512128    sal ax, 007h                              ; c1 e0 07
     
    1213012133    xor cx, cx                                ; 31 c9
    1213112134    mov ax, si                                ; 89 f0
    12132     call 07f93h                               ; e8 9d fc
     12135    call 07f99h                               ; e8 9d fc
    1213312136    cmp AL, strict byte 001h                  ; 3c 01
    12134     je short 082dch                           ; 74 e2
     12137    je short 082e2h                           ; 74 e2
    1213512138    mov cx, strict word 00020h                ; b9 20 00
    1213612139    xor bx, bx                                ; 31 db
    1213712140    mov ax, di                                ; 89 f8
    1213812141    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12139     call 094aah                               ; e8 a3 11
     12142    call 094dah                               ; e8 cd 11
    1214012143    lea ax, [di+00080h]                       ; 8d 85 80 00
    1214112144    mov cx, strict word 00040h                ; b9 40 00
    1214212145    xor bx, bx                                ; 31 db
    1214312146    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12144     call 094aah                               ; e8 94 11
     12147    call 094dah                               ; e8 be 11
    1214512148    lea ax, [di+00200h]                       ; 8d 85 00 02
    1214612149    mov cx, strict word 00060h                ; b9 60 00
    1214712150    xor bx, bx                                ; 31 db
    1214812151    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12149     call 094aah                               ; e8 85 11
     12152    call 094dah                               ; e8 af 11
    1215012153    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1215112154    add ax, 00108h                            ; 05 08 01
     
    1224912252    pop bp                                    ; 5d
    1225012253    retn                                      ; c3
    12251 ahci_port_init_:                             ; 0xf83e8 LB 0x206
     12254ahci_port_init_:                             ; 0xf83ee LB 0x206
    1225212255    push bp                                   ; 55
    1225312256    mov bp, sp                                ; 89 e5
     
    1225912262    mov word [bp-00ah], dx                    ; 89 56 f6
    1226012263    mov byte [bp-008h], bl                    ; 88 5e f8
    12261     call 082a4h                               ; e8 a8 fe
     12264    call 082aah                               ; e8 a8 fe
    1226212265    movzx dx, bl                              ; 0f b6 d3
    1226312266    sal dx, 007h                              ; c1 e2 07
     
    1226712270    mov bx, strict word 00011h                ; bb 11 00
    1226812271    xor cx, cx                                ; 31 c9
    12269     call 07f4ch                               ; e8 36 fb
     12272    call 07f52h                               ; e8 36 fb
    1227012273    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
    1227112274    sal di, 007h                              ; c1 e7 07
     
    1227512278    mov bx, 0c011h                            ; bb 11 c0
    1227612279    xor cx, cx                                ; 31 c9
    12277     call 07f93h                               ; e8 62 fb
     12280    call 07f99h                               ; e8 62 fb
    1227812281    cmp AL, strict byte 001h                  ; 3c 01
    12279     je short 08416h                           ; 74 e1
     12282    je short 0841ch                           ; 74 e1
    1228012283    mov cx, strict word 00020h                ; b9 20 00
    1228112284    xor bx, bx                                ; 31 db
    1228212285    mov ax, si                                ; 89 f0
    1228312286    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12284     call 094aah                               ; e8 68 10
     12287    call 094dah                               ; e8 92 10
    1228512288    lea ax, [si+00080h]                       ; 8d 84 80 00
    1228612289    mov cx, strict word 00040h                ; b9 40 00
    1228712290    xor bx, bx                                ; 31 db
    1228812291    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12289     call 094aah                               ; e8 59 10
     12292    call 094dah                               ; e8 83 10
    1229012293    mov ax, si                                ; 89 f0
    1229112294    add ah, 002h                              ; 80 c4 02
     
    1229412297    xor bx, bx                                ; 31 db
    1229512298    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12296     call 094aah                               ; e8 46 10
     12299    call 094dah                               ; e8 70 10
    1229712300    lea ax, [di+00108h]                       ; 8d 85 08 01
    1229812301    cwd                                       ; 99
     
    1230812311    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1230912312    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12310     call 07fe7h                               ; e8 60 fb
     12313    call 07fedh                               ; e8 60 fb
    1231112314    mov es, [bp-00ah]                         ; 8e 46 f6
    1231212315    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1235312356    mov ax, si                                ; 89 f0
    1235412357    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12355     call 07fe7h                               ; e8 f4 fa
     12358    call 07fedh                               ; e8 f4 fa
    1235612359    mov es, [bp-00ah]                         ; 8e 46 f6
    1235712360    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1245812461    pop bp                                    ; 5d
    1245912462    retn                                      ; c3
    12460 @ahci_read_sectors:                          ; 0xf85ee LB 0x94
     12463@ahci_read_sectors:                          ; 0xf85f4 LB 0x94
    1246112464    push bp                                   ; 55
    1246212465    mov bp, sp                                ; 89 e5
     
    1246712470    sub di, strict byte 0000ch                ; 83 ef 0c
    1246812471    cmp di, strict byte 00004h                ; 83 ff 04
    12469     jbe short 08612h                          ; 76 0f
     12472    jbe short 08618h                          ; 76 0f
    1247012473    push di                                   ; 57
    12471     push 00c66h                               ; 68 66 0c
    12472     push 00c78h                               ; 68 78 0c
     12474    push 00c4eh                               ; 68 4e 0c
     12475    push 00c60h                               ; 68 60 0c
    1247312476    push strict byte 00007h                   ; 6a 07
    12474     call 01972h                               ; e8 63 93
     12477    call 01972h                               ; e8 5d 93
    1247512478    add sp, strict byte 00008h                ; 83 c4 08
    1247612479    les bx, [bp+004h]                         ; c4 5e 04
    1247712480    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
    1247812481    xor ax, ax                                ; 31 c0
    12479     call 07edbh                               ; e8 bc f8
     12482    call 07ee1h                               ; e8 bc f8
    1248012483    mov es, [bp+006h]                         ; 8e 46 06
    1248112484    add di, bx                                ; 01 df
     
    1248412487    mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
    1248512488    xor ax, ax                                ; 31 c0
    12486     call 083e8h                               ; e8 b1 fd
     12489    call 083eeh                               ; e8 b1 fd
    1248712490    mov bx, strict word 00025h                ; bb 25 00
    1248812491    mov ax, di                                ; 89 f8
    1248912492    mov dx, word [bp+006h]                    ; 8b 56 06
    12490     call 080dah                               ; e8 98 fa
     12493    call 080e0h                               ; e8 98 fa
    1249112494    mov es, [bp+006h]                         ; 8e 46 06
    1249212495    mov bx, di                                ; 89 fb
     
    1250812511    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
    1250912512    xor ax, ax                                ; 31 c0
    12510     call 07ef2h                               ; e8 7b f8
     12513    call 07ef8h                               ; e8 7b f8
    1251112514    xor ax, ax                                ; 31 c0
    1251212515    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1251512518    pop bp                                    ; 5d
    1251612519    retn 00004h                               ; c2 04 00
    12517 @ahci_write_sectors:                         ; 0xf8682 LB 0x70
     12520@ahci_write_sectors:                         ; 0xf8688 LB 0x70
    1251812521    push bp                                   ; 55
    1251912522    mov bp, sp                                ; 89 e5
     
    1252512528    sub bx, strict byte 0000ch                ; 83 eb 0c
    1252612529    cmp bx, strict byte 00004h                ; 83 fb 04
    12527     jbe short 086aah                          ; 76 0f
     12530    jbe short 086b0h                          ; 76 0f
    1252812531    push bx                                   ; 53
    12529     push 00c97h                               ; 68 97 0c
    12530     push 00c78h                               ; 68 78 0c
     12532    push 00c7fh                               ; 68 7f 0c
     12533    push 00c60h                               ; 68 60 0c
    1253112534    push strict byte 00007h                   ; 6a 07
    12532     call 01972h                               ; e8 cb 92
     12535    call 01972h                               ; e8 c5 92
    1253312536    add sp, strict byte 00008h                ; 83 c4 08
    1253412537    mov es, cx                                ; 8e c1
    1253512538    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1253612539    xor ax, ax                                ; 31 c0
    12537     call 07edbh                               ; e8 25 f8
     12540    call 07ee1h                               ; e8 25 f8
    1253812541    mov es, cx                                ; 8e c1
    1253912542    add bx, si                                ; 01 f3
     
    1254112544    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1254212545    xor ax, ax                                ; 31 c0
    12543     call 083e8h                               ; e8 1e fd
     12546    call 083eeh                               ; e8 1e fd
    1254412547    mov bx, strict word 00035h                ; bb 35 00
    1254512548    mov ax, si                                ; 89 f0
    1254612549    mov dx, cx                                ; 89 ca
    12547     call 080dah                               ; e8 06 fa
     12550    call 080e0h                               ; e8 06 fa
    1254812551    mov es, cx                                ; 8e c1
    1254912552    mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
     
    1255112554    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1255212555    xor ax, ax                                ; 31 c0
    12553     call 07ef2h                               ; e8 0a f8
     12556    call 07ef8h                               ; e8 0a f8
    1255412557    xor ax, ax                                ; 31 c0
    1255512558    lea sp, [bp-002h]                         ; 8d 66 fe
     
    1255712560    pop bp                                    ; 5d
    1255812561    retn 00004h                               ; c2 04 00
    12559 ahci_cmd_packet_:                            ; 0xf86f2 LB 0x173
     12562ahci_cmd_packet_:                            ; 0xf86f8 LB 0x173
    1256012563    push bp                                   ; 55
    1256112564    mov bp, sp                                ; 89 e5
     
    1256912572    mov dx, strict word 0000eh                ; ba 0e 00
    1257012573    mov ax, strict word 00040h                ; b8 40 00
    12571     call 0166ch                               ; e8 5f 8f
     12574    call 0166ch                               ; e8 59 8f
    1257212575    mov si, 00122h                            ; be 22 01
    1257312576    mov word [bp-008h], ax                    ; 89 46 f8
    1257412577    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    12575     jne short 08738h                          ; 75 1f
    12576     mov bx, 00da2h                            ; bb a2 0d
     12578    jne short 0873eh                          ; 75 1f
     12579    mov bx, 00d8ah                            ; bb 8a 0d
    1257712580    mov cx, ds                                ; 8c d9
    1257812581    mov ax, strict word 00004h                ; b8 04 00
    12579     call 01931h                               ; e8 0d 92
    12580     push 00caah                               ; 68 aa 0c
    12581     push 00cbah                               ; 68 ba 0c
     12582    call 01931h                               ; e8 07 92
     12583    push 00c92h                               ; 68 92 0c
     12584    push 00ca2h                               ; 68 a2 0c
    1258212585    push strict byte 00004h                   ; 6a 04
    12583     call 01972h                               ; e8 43 92
     12586    call 01972h                               ; e8 3d 92
    1258412587    add sp, strict byte 00006h                ; 83 c4 06
    1258512588    mov ax, strict word 00001h                ; b8 01 00
    12586     jmp near 0885ch                           ; e9 24 01
     12589    jmp near 08862h                           ; e9 24 01
    1258712590    test byte [bp+004h], 001h                 ; f6 46 04 01
    12588     jne short 08732h                          ; 75 f4
     12591    jne short 08738h                          ; 75 f4
    1258912592    mov ax, word [bp+006h]                    ; 8b 46 06
    1259012593    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1259212595    sal ax, 1                                 ; d1 e0
    1259312596    rcl dx, 1                                 ; d1 d2
    12594     loop 08747h                               ; e2 fa
     12597    loop 0874dh                               ; e2 fa
    1259512598    mov es, [bp-008h]                         ; 8e 46 f8
    1259612599    mov word [es:si], ax                      ; 26 89 04
     
    1260412607    mov dx, word [bp+008h]                    ; 8b 56 08
    1260512608    xor cx, cx                                ; 31 c9
    12606     call 09440h                               ; e8 cc 0c
     12609    call 09470h                               ; e8 f6 0c
    1260712610    mov word [es:si+00ah], ax                 ; 26 89 44 0a
    1260812611    xor di, di                                ; 31 ff
     
    1261412617    xor ax, ax                                ; 31 c0
    1261512618    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12616     call 07edbh                               ; e8 47 f7
     12619    call 07ee1h                               ; e8 47 f7
    1261712620    mov es, [bp-008h]                         ; 8e 46 f8
    1261812621    mov bx, word [bp-014h]                    ; 8b 5e ec
     
    1262112624    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1262212625    xor ax, ax                                ; 31 c0
    12623     call 083e8h                               ; e8 3c fc
     12626    call 083eeh                               ; e8 3c fc
    1262412627    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    1262512628    push ax                                   ; 50
     
    1262812631    mov ax, 000c0h                            ; b8 c0 00
    1262912632    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12630     call 094b7h                               ; e8 f7 0c
     12633    call 094e7h                               ; e8 21 0d
    1263112634    mov es, [bp-008h]                         ; 8e 46 f8
    1263212635    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1263512638    mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
    1263612639    test ax, ax                               ; 85 c0
    12637     je short 087feh                           ; 74 27
     12640    je short 08804h                           ; 74 27
    1263812641    dec ax                                    ; 48
    1263912642    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1264812651    mov ax, si                                ; 89 f0
    1264912652    mov dx, word [bp-008h]                    ; 8b 56 f8
    12650     call 080dah                               ; e8 d1 f8
     12653    call 080e0h                               ; e8 d1 f8
    1265112654    les bx, [bp-00eh]                         ; c4 5e f2
    1265212655    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     
    1267112674    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1267212675    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12673     call 07ef2h                               ; e8 aa f6
     12676    call 07ef8h                               ; e8 aa f6
    1267412677    les bx, [bp-00eh]                         ; c4 5e f2
    1267512678    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1267612679    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    12677     jne short 0885ah                          ; 75 05
     12680    jne short 08860h                          ; 75 05
    1267812681    mov ax, strict word 00004h                ; b8 04 00
    12679     jmp short 0885ch                          ; eb 02
     12682    jmp short 08862h                          ; eb 02
    1268012683    xor ax, ax                                ; 31 c0
    1268112684    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1268412687    pop bp                                    ; 5d
    1268512688    retn 0000ch                               ; c2 0c 00
    12686 ahci_port_detect_device_:                    ; 0xf8865 LB 0x3d1
     12689ahci_port_detect_device_:                    ; 0xf886b LB 0x401
    1268712690    push bp                                   ; 55
    1268812691    mov bp, sp                                ; 89 e5
     
    1269312696    mov di, ax                                ; 89 c7
    1269412697    mov word [bp-010h], dx                    ; 89 56 f0
    12695     mov byte [bp-008h], bl                    ; 88 5e f8
     12698    mov byte [bp-00ch], bl                    ; 88 5e f4
    1269612699    movzx cx, bl                              ; 0f b6 cb
    1269712700    mov bx, cx                                ; 89 cb
    12698     call 083e8h                               ; e8 69 fb
     12701    call 083eeh                               ; e8 69 fb
    1269912702    mov dx, strict word 0000eh                ; ba 0e 00
    1270012703    mov ax, strict word 00040h                ; b8 40 00
    12701     call 0166ch                               ; e8 e4 8d
     12704    call 0166ch                               ; e8 de 8d
    1270212705    mov word [bp-020h], ax                    ; 89 46 e0
    1270312706    mov si, 00122h                            ; be 22 01
    1270412707    mov word [bp-00eh], ax                    ; 89 46 f2
    12705     mov word [bp-022h], si                    ; 89 76 de
    12706     mov word [bp-012h], ax                    ; 89 46 ee
     12708    mov word [bp-012h], si                    ; 89 76 ee
     12709    mov word [bp-01eh], ax                    ; 89 46 e2
    1270712710    sal cx, 007h                              ; c1 e1 07
    12708     mov word [bp-01ch], cx                    ; 89 4e e4
     12711    mov word [bp-016h], cx                    ; 89 4e ea
    1270912712    mov ax, cx                                ; 89 c8
    1271012713    add ax, 0012ch                            ; 05 2c 01
    1271112714    cwd                                       ; 99
    12712     mov word [bp-01eh], ax                    ; 89 46 e2
     12715    mov word [bp-022h], ax                    ; 89 46 de
    1271312716    mov bx, dx                                ; 89 d3
    1271412717    mov es, [bp-010h]                         ; 8e 46 f0
     
    1273212735    mov es, [bp-010h]                         ; 8e 46 f0
    1273312736    mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
    12734     mov ax, word [bp-01eh]                    ; 8b 46 e2
     12737    mov ax, word [bp-022h]                    ; 8b 46 de
    1273512738    mov cx, bx                                ; 89 d9
    1273612739    xchg cx, ax                               ; 91
     
    1274912752    ; mov ax, cx                                ; 8b c1
    1275012753    out DX, eax                               ; 66 ef
    12751     mov ax, word [bp-01ch]                    ; 8b 46 e4
     12754    mov ax, word [bp-016h]                    ; 8b 46 ea
    1275212755    add ax, 00128h                            ; 05 28 01
    1275312756    cwd                                       ; 99
     
    1277212775    mov bx, strict word 0000fh                ; bb 0f 00
    1277312776    xor cx, cx                                ; 31 c9
    12774     call 07fcch                               ; e8 90 f6
     12777    call 07fd2h                               ; e8 90 f6
    1277512778    cmp ax, strict word 00003h                ; 3d 03 00
    12776     jne near 08c2eh                           ; 0f 85 eb 02
     12779    jne near 08c64h                           ; 0f 85 1b 03
     12780    mov ax, word [bp-016h]                    ; 8b 46 ea
     12781    add ax, 00130h                            ; 05 30 01
     12782    cwd                                       ; 99
     12783    mov es, [bp-010h]                         ; 8e 46 f0
     12784    mov bx, word [es:di+00260h]               ; 26 8b 9d 60 02
     12785    mov cx, dx                                ; 89 d1
     12786    mov dx, bx                                ; 89 da
     12787    xchg cx, ax                               ; 91
     12788    sal eax, 010h                             ; 66 c1 e0 10
     12789    db  08bh, 0c1h
     12790    ; mov ax, cx                                ; 8b c1
     12791    out DX, eax                               ; 66 ef
     12792    mov es, [bp-010h]                         ; 8e 46 f0
     12793    mov dx, word [es:di+00260h]               ; 26 8b 95 60 02
     12794    add dx, strict byte 00004h                ; 83 c2 04
     12795    mov ax, strict word 0ffffh                ; b8 ff ff
     12796    mov cx, ax                                ; 89 c1
     12797    xchg cx, ax                               ; 91
     12798    sal eax, 010h                             ; 66 c1 e0 10
     12799    db  08bh, 0c1h
     12800    ; mov ax, cx                                ; 8b c1
     12801    out DX, eax                               ; 66 ef
    1277712802    mov es, [bp-00eh]                         ; 8e 46 f2
    1277812803    mov al, byte [es:si+001edh]               ; 26 8a 84 ed 01
    12779     mov byte [bp-00ah], al                    ; 88 46 f6
     12804    mov byte [bp-008h], al                    ; 88 46 f8
    1278012805    cmp AL, strict byte 004h                  ; 3c 04
    12781     jnc near 08c2eh                           ; 0f 83 da 02
    12782     mov dx, word [bp-01ch]                    ; 8b 56 e4
     12806    jnc near 08c64h                           ; 0f 83 d5 02
     12807    mov dx, word [bp-016h]                    ; 8b 56 ea
    1278312808    add dx, 00118h                            ; 81 c2 18 01
    1278412809    mov es, [bp-010h]                         ; 8e 46 f0
     
    1278612811    mov bx, strict word 00010h                ; bb 10 00
    1278712812    xor cx, cx                                ; 31 c9
    12788     call 07f09h                               ; e8 9e f5
    12789     mov ax, word [bp-01ch]                    ; 8b 46 e4
     12813    call 07f0fh                               ; e8 69 f5
     12814    mov ax, word [bp-016h]                    ; 8b 46 ea
    1279012815    add ax, 00124h                            ; 05 24 01
    1279112816    cwd                                       ; 99
     
    1280712832    shr eax, 010h                             ; 66 c1 e8 10
    1280812833    xchg dx, ax                               ; 92
    12809     mov bx, ax                                ; 89 c3
    12810     mov ax, dx                                ; 89 d0
    12811     mov cl, byte [bp-00ah]                    ; 8a 4e f6
     12834    mov cl, byte [bp-008h]                    ; 8a 4e f8
    1281212835    add cl, 00ch                              ; 80 c1 0c
    1281312836    test dx, dx                               ; 85 d2
    12814     jne near 08b80h                           ; 0f 85 d5 01
    12815     cmp bx, 00101h                            ; 81 fb 01 01
    12816     jne near 08b80h                           ; 0f 85 cd 01
     12837    jne near 08bb6h                           ; 0f 85 d4 01
     12838    cmp ax, 00101h                            ; 3d 01 01
     12839    jne near 08bb6h                           ; 0f 85 cd 01
    1281712840    mov es, [bp-00eh]                         ; 8e 46 f2
    1281812841    db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     
    1282612849    mov ax, si                                ; 89 f0
    1282712850    mov dx, word [bp-020h]                    ; 8b 56 e0
    12828     call 080dah                               ; e8 fc f6
    12829     mov byte [bp-00ch], cl                    ; 88 4e f4
     12851    call 080e0h                               ; e8 cc f6
     12852    mov byte [bp-00ah], cl                    ; 88 4e f6
    1283012853    test byte [bp-00228h], 080h               ; f6 86 d8 fd 80
    1283112854    db  00fh, 095h, 0c0h
     
    1283312856    xor ah, ah                                ; 30 e4
    1283412857    mov dx, word [bp-00226h]                  ; 8b 96 da fd
     12858    mov word [bp-018h], dx                    ; 89 56 e8
     12859    mov dx, word [bp-00222h]                  ; 8b 96 de fd
     12860    mov word [bp-01ch], dx                    ; 89 56 e4
     12861    mov dx, word [bp-0021ch]                  ; 8b 96 e4 fd
    1283512862    mov word [bp-01ah], dx                    ; 89 56 e6
    12836     mov dx, word [bp-00222h]                  ; 8b 96 de fd
    12837     mov word [bp-018h], dx                    ; 89 56 e8
    12838     mov dx, word [bp-0021ch]                  ; 8b 96 e4 fd
    12839     mov word [bp-016h], dx                    ; 89 56 ea
    1284012863    mov di, word [bp-001b0h]                  ; 8b be 50 fe
    1284112864    mov dx, word [bp-001aeh]                  ; 8b 96 52 fe
    1284212865    mov word [bp-014h], dx                    ; 89 56 ec
    1284312866    cmp dx, 00fffh                            ; 81 fa ff 0f
    12844     jne short 08a21h                          ; 75 10
     12867    jne short 08a57h                          ; 75 10
    1284512868    cmp di, strict byte 0ffffh                ; 83 ff ff
    12846     jne short 08a21h                          ; 75 0b
     12869    jne short 08a57h                          ; 75 0b
    1284712870    mov di, word [bp-00160h]                  ; 8b be a0 fe
    1284812871    mov dx, word [bp-0015eh]                  ; 8b 96 a2 fe
    1284912872    mov word [bp-014h], dx                    ; 89 56 ec
    12850     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
    12851     mov es, [bp-012h]                         ; 8e 46 ee
    12852     add bx, word [bp-022h]                    ; 03 5e de
    12853     mov ah, byte [bp-008h]                    ; 8a 66 f8
     12873    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     12874    mov es, [bp-01eh]                         ; 8e 46 e2
     12875    add bx, word [bp-012h]                    ; 03 5e ee
     12876    mov ah, byte [bp-00ch]                    ; 8a 66 f4
    1285412877    mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
    12855     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     12878    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
    1285612879    imul dx, dx, strict byte 00018h           ; 6b d2 18
    12857     mov si, word [bp-022h]                    ; 8b 76 de
     12880    mov si, word [bp-012h]                    ; 8b 76 ee
    1285812881    add si, dx                                ; 01 d6
    1285912882    mov word [es:si+01eh], 0ff05h             ; 26 c7 44 1e 05 ff
     
    1286512888    mov ax, word [bp-014h]                    ; 8b 46 ec
    1286612889    mov word [es:si+034h], ax                 ; 26 89 44 34
     12890    mov ax, word [bp-01ch]                    ; 8b 46 e4
     12891    mov word [es:si+02ch], ax                 ; 26 89 44 2c
    1286712892    mov ax, word [bp-018h]                    ; 8b 46 e8
    12868     mov word [es:si+02ch], ax                 ; 26 89 44 2c
     12893    mov word [es:si+02eh], ax                 ; 26 89 44 2e
    1286912894    mov ax, word [bp-01ah]                    ; 8b 46 e6
    12870     mov word [es:si+02eh], ax                 ; 26 89 44 2e
    12871     mov ax, word [bp-016h]                    ; 8b 46 ea
    1287212895    mov word [es:si+030h], ax                 ; 26 89 44 30
    12873     mov al, byte [bp-00ah]                    ; 8a 46 f6
     12896    mov al, byte [bp-008h]                    ; 8a 46 f8
    1287412897    cmp AL, strict byte 001h                  ; 3c 01
    12875     jc short 08a8ch                           ; 72 0c
    12876     jbe short 08a94h                          ; 76 12
     12898    jc short 08ac2h                           ; 72 0c
     12899    jbe short 08acah                          ; 76 12
    1287712900    cmp AL, strict byte 003h                  ; 3c 03
    12878     je short 08a9ch                           ; 74 16
     12901    je short 08ad2h                           ; 74 16
    1287912902    cmp AL, strict byte 002h                  ; 3c 02
    12880     je short 08a98h                           ; 74 0e
    12881     jmp short 08ae5h                          ; eb 59
     12903    je short 08aceh                           ; 74 0e
     12904    jmp short 08b1bh                          ; eb 59
    1288212905    test al, al                               ; 84 c0
    12883     jne short 08ae5h                          ; 75 55
     12906    jne short 08b1bh                          ; 75 55
    1288412907    mov DL, strict byte 040h                  ; b2 40
    12885     jmp short 08a9eh                          ; eb 0a
     12908    jmp short 08ad4h                          ; eb 0a
    1288612909    mov DL, strict byte 048h                  ; b2 48
    12887     jmp short 08a9eh                          ; eb 06
     12910    jmp short 08ad4h                          ; eb 06
    1288812911    mov DL, strict byte 050h                  ; b2 50
    12889     jmp short 08a9eh                          ; eb 02
     12912    jmp short 08ad4h                          ; eb 02
    1289012913    mov DL, strict byte 058h                  ; b2 58
    1289112914    mov al, dl                                ; 88 d0
     
    1289312916    movzx bx, al                              ; 0f b6 d8
    1289412917    mov ax, bx                                ; 89 d8
    12895     call 016ach                               ; e8 02 8c
     12918    call 016ach                               ; e8 cc 8b
    1289612919    test al, al                               ; 84 c0
    12897     je short 08ae5h                           ; 74 37
     12920    je short 08b1bh                           ; 74 37
    1289812921    mov al, dl                                ; 88 d0
    1289912922    db  0feh, 0c0h
    1290012923    ; inc al                                    ; fe c0
    1290112924    xor ah, ah                                ; 30 e4
    12902     call 016ach                               ; e8 f5 8b
     12925    call 016ach                               ; e8 bf 8b
    1290312926    xor ah, ah                                ; 30 e4
    1290412927    mov cx, ax                                ; 89 c1
    1290512928    sal cx, 008h                              ; c1 e1 08
    1290612929    movzx ax, dl                              ; 0f b6 c2
    12907     call 016ach                               ; e8 e8 8b
     12930    call 016ach                               ; e8 b2 8b
    1290812931    xor ah, ah                                ; 30 e4
    1290912932    add ax, cx                                ; 01 c8
     
    1291212935    add AL, strict byte 002h                  ; 04 02
    1291312936    xor ah, ah                                ; 30 e4
    12914     call 016ach                               ; e8 d8 8b
     12937    call 016ach                               ; e8 a2 8b
    1291512938    xor ah, ah                                ; 30 e4
    1291612939    mov word [bp-028h], ax                    ; 89 46 d8
    1291712940    mov ax, bx                                ; 89 d8
    12918     call 016ach                               ; e8 ce 8b
     12941    call 016ach                               ; e8 98 8b
    1291912942    xor ah, ah                                ; 30 e4
    1292012943    mov word [bp-024h], ax                    ; 89 46 dc
    12921     jmp short 08af2h                          ; eb 0d
     12944    jmp short 08b28h                          ; eb 0d
    1292212945    mov bx, di                                ; 89 fb
    1292312946    mov cx, word [bp-014h]                    ; 8b 4e ec
    1292412947    mov dx, ss                                ; 8c d2
    1292512948    lea ax, [bp-028h]                         ; 8d 46 d8
    12926     call 05389h                               ; e8 97 c8
    12927     mov bx, 00da2h                            ; bb a2 0d
     12949    call 05389h                               ; e8 61 c8
     12950    mov bx, 00d8ah                            ; bb 8a 0d
    1292812951    mov cx, ds                                ; 8c d9
    1292912952    mov ax, strict word 00004h                ; b8 04 00
    12930     call 01931h                               ; e8 34 8e
     12953    call 01931h                               ; e8 fe 8d
    1293112954    push word [bp-014h]                       ; ff 76 ec
    1293212955    push di                                   ; 57
     
    1293712960    mov ax, word [bp-026h]                    ; 8b 46 da
    1293812961    push ax                                   ; 50
    12939     push dword [bp-018h]                      ; 66 ff 76 e8
    12940     push word [bp-01ah]                       ; ff 76 e6
     12962    push dword [bp-01ch]                      ; 66 ff 76 e4
     12963    push word [bp-018h]                       ; ff 76 e8
     12964    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     12965    push ax                                   ; 50
    1294112966    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1294212967    push ax                                   ; 50
    12943     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    12944     push ax                                   ; 50
    12945     push 00cdah                               ; 68 da 0c
     12968    push 00cc2h                               ; 68 c2 0c
    1294612969    push strict byte 00004h                   ; 6a 04
    12947     call 01972h                               ; e8 4c 8e
     12970    call 01972h                               ; e8 16 8e
    1294812971    add sp, strict byte 00018h                ; 83 c4 18
    12949     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
     12972    movzx di, byte [bp-00ah]                  ; 0f b6 7e f6
    1295012973    imul di, di, strict byte 00018h           ; 6b ff 18
    12951     add di, word [bp-022h]                    ; 03 7e de
    12952     mov es, [bp-012h]                         ; 8e 46 ee
     12974    add di, word [bp-012h]                    ; 03 7e ee
     12975    mov es, [bp-01eh]                         ; 8e 46 e2
    1295312976    lea di, [di+026h]                         ; 8d 7d 26
    1295412977    push DS                                   ; 1e
     
    1296012983    movsw                                     ; a5
    1296112984    pop DS                                    ; 1f
    12962     mov bx, word [bp-022h]                    ; 8b 5e de
     12985    mov bx, word [bp-012h]                    ; 8b 5e ee
    1296312986    mov al, byte [es:bx+0019eh]               ; 26 8a 87 9e 01
    12964     mov ah, byte [bp-00ah]                    ; 8a 66 f6
     12987    mov ah, byte [bp-008h]                    ; 8a 66 f8
    1296512988    add ah, 00ch                              ; 80 c4 0c
    1296612989    movzx bx, al                              ; 0f b6 d8
    12967     add bx, word [bp-022h]                    ; 03 5e de
     12990    add bx, word [bp-012h]                    ; 03 5e ee
    1296812991    mov byte [es:bx+0019fh], ah               ; 26 88 a7 9f 01
    1296912992    db  0feh, 0c0h
    1297012993    ; inc al                                    ; fe c0
    12971     mov bx, word [bp-022h]                    ; 8b 5e de
     12994    mov bx, word [bp-012h]                    ; 8b 5e ee
    1297212995    mov byte [es:bx+0019eh], al               ; 26 88 87 9e 01
    1297312996    mov dx, strict word 00075h                ; ba 75 00
    1297412997    mov ax, strict word 00040h                ; b8 40 00
    12975     call 01650h                               ; e8 e1 8a
     12998    call 01650h                               ; e8 ab 8a
    1297612999    db  0feh, 0c0h
    1297713000    ; inc al                                    ; fe c0
     
    1297913002    mov dx, strict word 00075h                ; ba 75 00
    1298013003    mov ax, strict word 00040h                ; b8 40 00
    12981     call 0165eh                               ; e8 e1 8a
    12982     jmp near 08c1dh                           ; e9 9d 00
     13004    call 0165eh                               ; e8 ab 8a
     13005    jmp near 08c53h                           ; e9 9d 00
    1298313006    cmp dx, 0eb14h                            ; 81 fa 14 eb
    12984     jne near 08c1dh                           ; 0f 85 95 00
    12985     cmp bx, 00101h                            ; 81 fb 01 01
    12986     jne near 08c1dh                           ; 0f 85 8d 00
     13007    jne near 08c53h                           ; 0f 85 95 00
     13008    cmp ax, 00101h                            ; 3d 01 01
     13009    jne near 08c53h                           ; 0f 85 8e 00
    1298713010    mov es, [bp-00eh]                         ; 8e 46 f2
    1298813011    db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     
    1299613019    mov ax, si                                ; 89 f0
    1299713020    mov dx, word [bp-020h]                    ; 8b 56 e0
    12998     call 080dah                               ; e8 1f f5
     13021    call 080e0h                               ; e8 f0 f4
    1299913022    test byte [bp-00228h], 080h               ; f6 86 d8 fd 80
    1300013023    db  00fh, 095h, 0c0h
    1300113024    ; setne al                                  ; 0f 95 c0
    13002     xor ah, ah                                ; 30 e4
    13003     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     13025    movzx dx, al                              ; 0f b6 d0
     13026    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    1300413027    mov es, [bp-020h]                         ; 8e 46 e0
    1300513028    add bx, si                                ; 01 f3
    13006     mov ah, byte [bp-008h]                    ; 8a 66 f8
    13007     mov byte [es:bx+001e9h], ah               ; 26 88 a7 e9 01
     13029    mov al, byte [bp-00ch]                    ; 8a 46 f4
     13030    mov byte [es:bx+001e9h], al               ; 26 88 87 e9 01
    1300813031    movzx si, cl                              ; 0f b6 f1
    1300913032    imul si, si, strict byte 00018h           ; 6b f6 18
    1301013033    add si, 00122h                            ; 81 c6 22 01
    1301113034    mov word [es:si+01eh], 00505h             ; 26 c7 44 1e 05 05
    13012     mov byte [es:si+020h], al                 ; 26 88 44 20
     13035    mov byte [es:si+020h], dl                 ; 26 88 54 20
    1301313036    mov word [es:si+024h], 00800h             ; 26 c7 44 24 00 08
    13014     mov es, [bp-012h]                         ; 8e 46 ee
    13015     mov bx, word [bp-022h]                    ; 8b 5e de
     13037    mov es, [bp-01eh]                         ; 8e 46 e2
     13038    mov bx, word [bp-012h]                    ; 8b 5e ee
    1301613039    mov al, byte [es:bx+001afh]               ; 26 8a 87 af 01
    13017     mov ah, byte [bp-00ah]                    ; 8a 66 f6
     13040    mov ah, byte [bp-008h]                    ; 8a 66 f8
    1301813041    add ah, 00ch                              ; 80 c4 0c
    1301913042    movzx bx, al                              ; 0f b6 d8
     
    1302313046    db  0feh, 0c0h
    1302413047    ; inc al                                    ; fe c0
    13025     mov es, [bp-012h]                         ; 8e 46 ee
    13026     mov bx, word [bp-022h]                    ; 8b 5e de
     13048    mov es, [bp-01eh]                         ; 8e 46 e2
     13049    mov bx, word [bp-012h]                    ; 8b 5e ee
    1302713050    mov byte [es:bx+001afh], al               ; 26 88 87 af 01
    13028     inc byte [bp-00ah]                        ; fe 46 f6
    13029     mov al, byte [bp-00ah]                    ; 8a 46 f6
    13030     mov es, [bp-012h]                         ; 8e 46 ee
    13031     mov bx, word [bp-022h]                    ; 8b 5e de
     13051    inc byte [bp-008h]                        ; fe 46 f8
     13052    mov al, byte [bp-008h]                    ; 8a 46 f8
     13053    mov es, [bp-01eh]                         ; 8e 46 e2
     13054    mov bx, word [bp-012h]                    ; 8b 5e ee
    1303213055    mov byte [es:bx+001edh], al               ; 26 88 87 ed 01
    1303313056    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1303713060    pop bp                                    ; 5d
    1303813061    retn                                      ; c3
    13039 ahci_mem_alloc_:                             ; 0xf8c36 LB 0x43
     13062ahci_mem_alloc_:                             ; 0xf8c6c LB 0x43
    1304013063    push bp                                   ; 55
    1304113064    mov bp, sp                                ; 89 e5
     
    1304713070    mov dx, 00413h                            ; ba 13 04
    1304813071    xor ax, ax                                ; 31 c0
    13049     call 0166ch                               ; e8 26 8a
     13072    call 0166ch                               ; e8 f0 89
    1305013073    test ax, ax                               ; 85 c0
    13051     je short 08c6fh                           ; 74 25
     13074    je short 08ca5h                           ; 74 25
    1305213075    dec ax                                    ; 48
    1305313076    mov bx, ax                                ; 89 c3
     
    1305613079    sal ax, 1                                 ; d1 e0
    1305713080    rcl dx, 1                                 ; d1 d2
    13058     loop 08c52h                               ; e2 fa
     13081    loop 08c88h                               ; e2 fa
    1305913082    mov si, ax                                ; 89 c6
    1306013083    mov di, dx                                ; 89 d7
     
    1306213085    shr di, 1                                 ; d1 ef
    1306313086    rcr si, 1                                 ; d1 de
    13064     loop 08c5fh                               ; e2 fa
     13087    loop 08c95h                               ; e2 fa
    1306513088    mov dx, 00413h                            ; ba 13 04
    1306613089    xor ax, ax                                ; 31 c0
    13067     call 0167ah                               ; e8 0d 8a
     13090    call 0167ah                               ; e8 d7 89
    1306813091    mov ax, si                                ; 89 f0
    1306913092    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1307513098    pop bp                                    ; 5d
    1307613099    retn                                      ; c3
    13077 ahci_hba_init_:                              ; 0xf8c79 LB 0x125
     13100ahci_hba_init_:                              ; 0xf8caf LB 0x125
    1307813101    push bp                                   ; 55
    1307913102    mov bp, sp                                ; 89 e5
     
    1308713110    mov dx, strict word 0000eh                ; ba 0e 00
    1308813111    mov ax, strict word 00040h                ; b8 40 00
    13089     call 0166ch                               ; e8 dd 89
     13112    call 0166ch                               ; e8 a7 89
    1309013113    mov bx, 00122h                            ; bb 22 01
    1309113114    mov word [bp-010h], ax                    ; 89 46 f0
     
    1310413127    shr eax, 010h                             ; 66 c1 e8 10
    1310513128    xchg dx, ax                               ; 92
    13106     call 08c36h                               ; e8 82 ff
     13129    call 08c6ch                               ; e8 82 ff
    1310713130    mov di, ax                                ; 89 c7
    1310813131    test ax, ax                               ; 85 c0
    13109     je near 08d7dh                            ; 0f 84 c1 00
     13132    je near 08db3h                            ; 0f 84 c1 00
    1311013133    mov es, [bp-010h]                         ; 8e 46 f0
    1311113134    mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
     
    1312113144    mov dx, strict word 00004h                ; ba 04 00
    1312213145    mov ax, si                                ; 89 f0
    13123     call 07f09h                               ; e8 19 f2
     13146    call 07f0fh                               ; e8 e9 f1
    1312413147    mov ax, strict word 00004h                ; b8 04 00
    1312513148    xor cx, cx                                ; 31 c9
     
    1313813161    xchg dx, ax                               ; 92
    1313913162    test AL, strict byte 001h                 ; a8 01
    13140     jne short 08cf0h                          ; 75 de
     13163    jne short 08d26h                          ; 75 de
    1314113164    xor ax, ax                                ; 31 c0
    1314213165    xor cx, cx                                ; 31 c9
     
    1315613179    mov bx, strict word 0001fh                ; bb 1f 00
    1315713180    xor cx, cx                                ; 31 c9
    13158     call 07fcch                               ; e8 96 f2
     13181    call 07fd2h                               ; e8 66 f2
    1315913182    db  0feh, 0c0h
    1316013183    ; inc al                                    ; fe c0
    1316113184    mov byte [bp-00eh], al                    ; 88 46 f2
    1316213185    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    13163     jmp short 08d4ah                          ; eb 09
     13186    jmp short 08d80h                          ; eb 09
    1316413187    inc byte [bp-00ch]                        ; fe 46 f4
    1316513188    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    13166     jnc short 08d7bh                          ; 73 31
     13189    jnc short 08db1h                          ; 73 31
    1316713190    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    1316813191    mov ax, strict word 00001h                ; b8 01 00
    1316913192    xor dx, dx                                ; 31 d2
    13170     jcxz 08d5bh                               ; e3 06
     13193    jcxz 08d91h                               ; e3 06
    1317113194    sal ax, 1                                 ; d1 e0
    1317213195    rcl dx, 1                                 ; d1 d2
    13173     loop 08d55h                               ; e2 fa
     13196    loop 08d8bh                               ; e2 fa
    1317413197    mov bx, ax                                ; 89 c3
    1317513198    mov cx, dx                                ; 89 d1
    1317613199    mov dx, strict word 0000ch                ; ba 0c 00
    1317713200    mov ax, si                                ; 89 f0
    13178     call 07f93h                               ; e8 2c f2
     13201    call 07f99h                               ; e8 fc f1
    1317913202    test al, al                               ; 84 c0
    13180     je short 08d41h                           ; 74 d6
     13203    je short 08d77h                           ; 74 d6
    1318113204    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    1318213205    xor ax, ax                                ; 31 c0
    1318313206    mov dx, di                                ; 89 fa
    13184     call 08865h                               ; e8 ef fa
     13207    call 0886bh                               ; e8 bf fa
    1318513208    dec byte [bp-00eh]                        ; fe 4e f2
    13186     jne short 08d41h                          ; 75 c6
     13209    jne short 08d77h                          ; 75 c6
    1318713210    xor ax, ax                                ; 31 c0
    1318813211    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1319413217    pop bp                                    ; 5d
    1319513218    retn                                      ; c3
    13196     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 06dh, 08eh, 04bh, 08eh, 051h, 08eh, 057h, 08eh, 05dh
    13197     db  08eh, 063h, 08eh, 069h, 08eh, 06dh, 08eh
    13198 _ahci_init:                                  ; 0xf8d9e LB 0xfe
     13219    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0a3h, 08eh, 081h, 08eh, 087h, 08eh, 08dh, 08eh, 093h
     13220    db  08eh, 099h, 08eh, 09fh, 08eh, 0a3h, 08eh
     13221_ahci_init:                                  ; 0xf8dd4 LB 0xfe
    1319913222    push bp                                   ; 55
    1320013223    mov bp, sp                                ; 89 e5
     
    1320413227    mov ax, 00601h                            ; b8 01 06
    1320513228    mov dx, strict word 00001h                ; ba 01 00
    13206     call 092bch                               ; e8 0d 05
     13229    call 092f2h                               ; e8 0d 05
    1320713230    mov dx, ax                                ; 89 c2
    1320813231    cmp ax, strict word 0ffffh                ; 3d ff ff
    13209     je near 08e95h                            ; 0f 84 dd 00
     13232    je near 08ecbh                            ; 0f 84 dd 00
    1321013233    xor al, al                                ; 30 c0
    1321113234    shr ax, 008h                              ; c1 e8 08
     
    1321513238    xor ah, ah                                ; 30 e4
    1321613239    mov bx, strict word 00034h                ; bb 34 00
    13217     call 092e7h                               ; e8 1a 05
     13240    call 0931dh                               ; e8 1a 05
    1321813241    mov cl, al                                ; 88 c1
    1321913242    test cl, cl                               ; 84 c9
    13220     je short 08df6h                           ; 74 23
     13243    je short 08e2ch                           ; 74 23
    1322113244    movzx bx, cl                              ; 0f b6 d9
    1322213245    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1322413247    mov dx, di                                ; 89 fa
    1322513248    mov ax, si                                ; 89 f0
    13226     call 092e7h                               ; e8 02 05
     13249    call 0931dh                               ; e8 02 05
    1322713250    cmp AL, strict byte 012h                  ; 3c 12
    13228     je short 08df6h                           ; 74 0d
     13251    je short 08e2ch                           ; 74 0d
    1322913252    mov al, cl                                ; 88 c8
    1323013253    db  0feh, 0c0h
     
    1323313256    mov dx, di                                ; 89 fa
    1323413257    mov ax, si                                ; 89 f0
    13235     jmp short 08dcah                          ; eb d4
     13258    jmp short 08e00h                          ; eb d4
    1323613259    test cl, cl                               ; 84 c9
    13237     je near 08e95h                            ; 0f 84 99 00
     13260    je near 08ecbh                            ; 0f 84 99 00
    1323813261    add cl, 002h                              ; 80 c1 02
    1323913262    movzx bx, cl                              ; 0f b6 d9
     
    1324213265    mov dx, di                                ; 89 fa
    1324313266    mov ax, si                                ; 89 f0
    13244     call 092e7h                               ; e8 d6 04
     13267    call 0931dh                               ; e8 d6 04
    1324513268    cmp AL, strict byte 010h                  ; 3c 10
    13246     jne near 08e95h                           ; 0f 85 7e 00
     13269    jne near 08ecbh                           ; 0f 85 7e 00
    1324713270    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1324813271    mov al, cl                                ; 88 c8
     
    1325113274    mov dx, di                                ; 89 fa
    1325213275    mov ax, si                                ; 89 f0
    13253     call 0930bh                               ; e8 e2 04
     13276    call 09341h                               ; e8 e2 04
    1325413277    mov dx, ax                                ; 89 c2
    1325513278    and ax, strict word 0000fh                ; 25 0f 00
    1325613279    sub ax, strict word 00004h                ; 2d 04 00
    1325713280    cmp ax, strict word 0000bh                ; 3d 0b 00
    13258     jnbe short 08e6dh                         ; 77 37
     13281    jnbe short 08ea3h                         ; 77 37
    1325913282    push CS                                   ; 0e
    1326013283    pop ES                                    ; 07
    1326113284    mov cx, strict word 00008h                ; b9 08 00
    13262     mov di, 08d87h                            ; bf 87 8d
     13285    mov di, 08dbdh                            ; bf bd 8d
    1326313286    repne scasb                               ; f2 ae
    1326413287    sal cx, 1                                 ; d1 e1
    1326513288    mov di, cx                                ; 89 cf
    13266     mov ax, word [cs:di-07272h]               ; 2e 8b 85 8e 8d
     13289    mov ax, word [cs:di-0723ch]               ; 2e 8b 85 c4 8d
    1326713290    jmp ax                                    ; ff e0
    1326813291    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    13269     jmp short 08e6dh                          ; eb 1c
     13292    jmp short 08ea3h                          ; eb 1c
    1327013293    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    13271     jmp short 08e6dh                          ; eb 16
     13294    jmp short 08ea3h                          ; eb 16
    1327213295    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    13273     jmp short 08e6dh                          ; eb 10
     13296    jmp short 08ea3h                          ; eb 10
    1327413297    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    13275     jmp short 08e6dh                          ; eb 0a
     13298    jmp short 08ea3h                          ; eb 0a
    1327613299    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    13277     jmp short 08e6dh                          ; eb 04
     13300    jmp short 08ea3h                          ; eb 04
    1327813301    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1327913302    mov si, dx                                ; 89 d6
     
    1328213305    mov al, byte [bp-006h]                    ; 8a 46 fa
    1328313306    test al, al                               ; 84 c0
    13284     je short 08e95h                           ; 74 19
     13307    je short 08ecbh                           ; 74 19
    1328513308    movzx bx, al                              ; 0f b6 d8
    1328613309    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    1328713310    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    13288     call 0932dh                               ; e8 a3 04
     13311    call 09363h                               ; e8 a3 04
    1328913312    test AL, strict byte 001h                 ; a8 01
    13290     je short 08e95h                           ; 74 07
     13313    je short 08ecbh                           ; 74 07
    1329113314    and AL, strict byte 0f0h                  ; 24 f0
    1329213315    add ax, si                                ; 01 f0
    13293     call 08c79h                               ; e8 e4 fd
     13316    call 08cafh                               ; e8 e4 fd
    1329413317    lea sp, [bp-004h]                         ; 8d 66 fc
    1329513318    pop di                                    ; 5f
     
    1329713320    pop bp                                    ; 5d
    1329813321    retn                                      ; c3
    13299 apm_out_str_:                                ; 0xf8e9c LB 0x39
     13322apm_out_str_:                                ; 0xf8ed2 LB 0x39
    1330013323    push bp                                   ; 55
    1330113324    mov bp, sp                                ; 89 e5
     
    1330313326    mov bx, ax                                ; 89 c3
    1330413327    cmp byte [bx], 000h                       ; 80 3f 00
    13305     je short 08eb1h                           ; 74 0a
     13328    je short 08ee7h                           ; 74 0a
    1330613329    mov al, byte [bx]                         ; 8a 07
    1330713330    out DX, AL                                ; ee
     
    1331013333    db  00ah, 0c0h
    1331113334    ; or al, al                                 ; 0a c0
    13312     jne short 08ea9h                          ; 75 f8
     13335    jne short 08edfh                          ; 75 f8
    1331313336    lea sp, [bp-002h]                         ; 8d 66 fe
    1331413337    pop bx                                    ; 5b
    1331513338    pop bp                                    ; 5d
    1331613339    retn                                      ; c3
    13317     clc                                       ; f8
    13318     mov es, sp                                ; 8e c4
    13319     db  08fh, 00ah
    13320     ; pop word [bp+si]                          ; 8f 0a
    13321     db  08fh, 025h
    13322     ; pop word [di]                             ; 8f 25
    13323     db  08fh, 0c4h
    13324     ; pop sp                                    ; 8f c4
    13325     db  08fh, 050h, 08fh
    13326     ; pop word [bx+si-071h]                     ; 8f 50 8f
    13327     les cx, [bx-070abh]                       ; c4 8f 55 8f
    13328     cwd                                       ; 99
    13329     db  08fh, 099h, 08fh, 099h
    13330     ; pop word [bx+di-06671h]                   ; 8f 99 8f 99
    13331     db  08fh, 094h, 08fh, 099h
    13332     ; pop word [si-06671h]                      ; 8f 94 8f 99
    13333     db  08fh, 099h, 08fh, 08dh
    13334     ; pop word [bx+di-07271h]                   ; 8f 99 8f 8d
     13340    db  02eh, 08fh, 0fah
     13341    ; cs pop dx                                 ; 2e 8f fa
     13342    pop word [bx+si-071h]                     ; 8f 40 8f
     13343    pop bx                                    ; 5b
     13344    db  08fh, 0fah
     13345    ; pop dx                                    ; 8f fa
     13346    pop word [bp-00571h]                      ; 8f 86 8f fa
     13347    db  08fh, 08bh, 08fh, 0cfh
     13348    ; pop word [bp+di-03071h]                   ; 8f 8b 8f cf
     13349    db  08fh, 0cfh
     13350    ; pop di                                    ; 8f cf
     13351    db  08fh, 0cfh
     13352    ; pop di                                    ; 8f cf
     13353    db  08fh, 0cah
     13354    ; pop dx                                    ; 8f ca
     13355    db  08fh, 0cfh
     13356    ; pop di                                    ; 8f cf
     13357    db  08fh, 0cfh
     13358    ; pop di                                    ; 8f cf
     13359    db  08fh, 0c3h
     13360    ; pop bx                                    ; 8f c3
    1333513361    db  08fh
    13336 _apm_function:                               ; 0xf8ed5 LB 0xf5
     13362_apm_function:                               ; 0xf8f0b LB 0xf5
    1333713363    push bp                                   ; 55
    1333813364    mov bp, sp                                ; 89 e5
     
    1334213368    xor ah, ah                                ; 30 e4
    1334313369    cmp ax, strict word 0000eh                ; 3d 0e 00
    13344     jnbe near 08f99h                          ; 0f 87 b0 00
     13370    jnbe near 08fcfh                          ; 0f 87 b0 00
    1334513371    mov bx, ax                                ; 89 c3
    1334613372    add bx, ax                                ; 01 c3
    1334713373    mov dx, word [bp+018h]                    ; 8b 56 18
    1334813374    or dl, 001h                               ; 80 ca 01
    13349     jmp word [cs:bx-07149h]                   ; 2e ff a7 b7 8e
     13375    jmp word [cs:bx-07113h]                   ; 2e ff a7 ed 8e
    1335013376    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1335113377    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1335213378    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    13353     jmp near 08fc4h                           ; e9 ba 00
     13379    jmp near 08ffah                           ; e9 ba 00
    1335413380    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    13355     mov word [bp+00ch], 09524h                ; c7 46 0c 24 95
     13381    mov word [bp+00ch], 09554h                ; c7 46 0c 54 95
    1335613382    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1335713383    mov ax, strict word 0fff0h                ; b8 f0 ff
    1335813384    mov word [bp+006h], ax                    ; 89 46 06
    1335913385    mov word [bp+004h], ax                    ; 89 46 04
    13360     jmp near 08fc4h                           ; e9 9f 00
     13386    jmp near 08ffah                           ; e9 9f 00
    1336113387    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1336213388    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1337113397    mov si, ax                                ; 89 c6
    1337213398    sal esi, 010h                             ; 66 c1 e6 10
    13373     jmp near 08fc4h                           ; e9 74 00
     13399    jmp near 08ffah                           ; e9 74 00
    1337413400    sti                                       ; fb
    1337513401    hlt                                       ; f4
    13376     jmp near 08fc4h                           ; e9 6f 00
     13402    jmp near 08ffah                           ; e9 6f 00
    1337713403    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    13378     je short 08f7ah                           ; 74 1f
     13404    je short 08fb0h                           ; 74 1f
    1337913405    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    13380     je short 08f72h                           ; 74 11
     13406    je short 08fa8h                           ; 74 11
    1338113407    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    13382     jne short 08f82h                          ; 75 1b
     13408    jne short 08fb8h                          ; 75 1b
    1338313409    mov dx, 08900h                            ; ba 00 89
    13384     mov ax, 00d12h                            ; b8 12 0d
    13385     call 08e9ch                               ; e8 2c ff
    13386     jmp short 08fc4h                          ; eb 52
     13410    mov ax, 00cfah                            ; b8 fa 0c
     13411    call 08ed2h                               ; e8 2c ff
     13412    jmp short 08ffah                          ; eb 52
    1338713413    mov dx, 08900h                            ; ba 00 89
    13388     mov ax, 00d1ah                            ; b8 1a 0d
    13389     jmp short 08f6dh                          ; eb f3
     13414    mov ax, 00d02h                            ; b8 02 0d
     13415    jmp short 08fa3h                          ; eb f3
    1339013416    mov dx, 08900h                            ; ba 00 89
    13391     mov ax, 00d22h                            ; b8 22 0d
    13392     jmp short 08f6dh                          ; eb eb
     13417    mov ax, 00d0ah                            ; b8 0a 0d
     13418    jmp short 08fa3h                          ; eb eb
    1339313419    or ah, 00ah                               ; 80 cc 0a
    1339413420    mov word [bp+012h], ax                    ; 89 46 12
    1339513421    mov word [bp+018h], dx                    ; 89 56 18
    13396     jmp short 08fc4h                          ; eb 37
     13422    jmp short 08ffah                          ; eb 37
    1339713423    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    13398     jmp short 08fc4h                          ; eb 30
     13424    jmp short 08ffah                          ; eb 30
    1339913425    or ah, 080h                               ; 80 cc 80
    13400     jmp short 08f85h                          ; eb ec
    13401     mov bx, 00da2h                            ; bb a2 0d
     13426    jmp short 08fbbh                          ; eb ec
     13427    mov bx, 00d8ah                            ; bb 8a 0d
    1340213428    mov cx, ds                                ; 8c d9
    1340313429    mov ax, strict word 00004h                ; b8 04 00
    13404     call 01931h                               ; e8 8d 89
     13430    call 01931h                               ; e8 57 89
    1340513431    push word [bp+00ch]                       ; ff 76 0c
    1340613432    push word [bp+012h]                       ; ff 76 12
    13407     push 00d2bh                               ; 68 2b 0d
     13433    push 00d13h                               ; 68 13 0d
    1340813434    push strict byte 00004h                   ; 6a 04
    13409     call 01972h                               ; e8 c0 89
     13435    call 01972h                               ; e8 8a 89
    1341013436    add sp, strict byte 00008h                ; 83 c4 08
    1341113437    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1341813444    pop bp                                    ; 5d
    1341913445    retn                                      ; c3
    13420 pci16_select_reg_:                           ; 0xf8fca LB 0x24
     13446pci16_select_reg_:                           ; 0xf9000 LB 0x24
    1342113447    push bp                                   ; 55
    1342213448    mov bp, sp                                ; 89 e5
     
    1343513461    pop bp                                    ; 5d
    1343613462    retn                                      ; c3
    13437 pci16_find_device_:                          ; 0xf8fee LB 0xf7
     13463pci16_find_device_:                          ; 0xf9024 LB 0xf7
    1343813464    push bp                                   ; 55
    1343913465    mov bp, sp                                ; 89 e5
     
    1344913475    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1345013476    test bl, 007h                             ; f6 c3 07
    13451     jne short 09036h                          ; 75 2d
     13477    jne short 0906ch                          ; 75 2d
    1345213478    mov dx, strict word 0000eh                ; ba 0e 00
    1345313479    mov ax, bx                                ; 89 d8
    13454     call 08fcah                               ; e8 b9 ff
     13480    call 09000h                               ; e8 b9 ff
    1345513481    mov dx, 00cfeh                            ; ba fe 0c
    1345613482    in AL, DX                                 ; ec
     
    1345913485    mov byte [bp-006h], al                    ; 88 46 fa
    1346013486    cmp AL, strict byte 0ffh                  ; 3c ff
    13461     jne short 09024h                          ; 75 06
     13487    jne short 0905ah                          ; 75 06
    1346213488    add bx, strict byte 00008h                ; 83 c3 08
    13463     jmp near 090b7h                           ; e9 93 00
     13489    jmp near 090edh                           ; e9 93 00
    1346413490    test byte [bp-006h], 080h                 ; f6 46 fa 80
    13465     je short 09031h                           ; 74 07
     13491    je short 09067h                           ; 74 07
    1346613492    mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
    13467     jmp short 09036h                          ; eb 05
     13493    jmp short 0906ch                          ; eb 05
    1346813494    mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
    1346913495    mov al, byte [bp-006h]                    ; 8a 46 fa
    1347013496    and AL, strict byte 007h                  ; 24 07
    1347113497    cmp AL, strict byte 001h                  ; 3c 01
    13472     jne short 0905eh                          ; 75 1f
     13498    jne short 09094h                          ; 75 1f
    1347313499    mov ax, bx                                ; 89 d8
    1347413500    shr ax, 008h                              ; c1 e8 08
    1347513501    test ax, ax                               ; 85 c0
    13476     jne short 0905eh                          ; 75 16
     13502    jne short 09094h                          ; 75 16
    1347713503    mov dx, strict word 0001ah                ; ba 1a 00
    1347813504    mov ax, bx                                ; 89 d8
    13479     call 08fcah                               ; e8 7a ff
     13505    call 09000h                               ; e8 7a ff
    1348013506    mov dx, 00cfeh                            ; ba fe 0c
    1348113507    in AL, DX                                 ; ec
     
    1348313509    ; sub ah, ah                                ; 2a e4
    1348413510    cmp al, byte [bp-008h]                    ; 3a 46 f8
    13485     jbe short 0905eh                          ; 76 03
     13511    jbe short 09094h                          ; 76 03
    1348613512    mov byte [bp-008h], al                    ; 88 46 f8
    1348713513    test di, di                               ; 85 ff
    13488     je short 09067h                           ; 74 05
     13514    je short 0909dh                           ; 74 05
    1348913515    mov dx, strict word 00008h                ; ba 08 00
    13490     jmp short 09069h                          ; eb 02
     13516    jmp short 0909fh                          ; eb 02
    1349113517    xor dx, dx                                ; 31 d2
    1349213518    mov ax, bx                                ; 89 d8
    13493     call 08fcah                               ; e8 5c ff
     13519    call 09000h                               ; e8 5c ff
    1349413520    mov dx, 00cfch                            ; ba fc 0c
    1349513521    in eax, DX                                ; 66 ed
     
    1350213528    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    1350313529    test di, di                               ; 85 ff
    13504     je short 09098h                           ; 74 0f
     13530    je short 090ceh                           ; 74 0f
    1350513531    mov cx, strict word 00008h                ; b9 08 00
    1350613532    shr dx, 1                                 ; d1 ea
    1350713533    rcr ax, 1                                 ; d1 d8
    13508     loop 0908ch                               ; e2 fa
     13534    loop 090c2h                               ; e2 fa
    1350913535    mov word [bp-00eh], ax                    ; 89 46 f2
    1351013536    mov word [bp-00ch], dx                    ; 89 56 f4
    1351113537    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1351213538    cmp ax, word [bp-014h]                    ; 3b 46 ec
    13513     jne short 090a8h                          ; 75 08
     13539    jne short 090deh                          ; 75 08
    1351413540    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1351513541    cmp ax, word [bp-012h]                    ; 3b 46 ee
    13516     je short 090aeh                           ; 74 06
     13542    je short 090e4h                           ; 74 06
    1351713543    cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
    13518     je short 090b4h                           ; 74 06
     13544    je short 090eah                           ; 74 06
    1351913545    dec si                                    ; 4e
    1352013546    cmp si, strict byte 0ffffh                ; 83 fe ff
    13521     je short 090c6h                           ; 74 12
     13547    je short 090fch                           ; 74 12
    1352213548    add bx, word [bp-00ah]                    ; 03 5e f6
    1352313549    mov dx, bx                                ; 89 da
     
    1352513551    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1352613552    cmp dx, ax                                ; 39 c2
    13527     jbe near 09004h                           ; 0f 86 3e ff
     13553    jbe near 0903ah                           ; 0f 86 3e ff
    1352813554    cmp si, strict byte 0ffffh                ; 83 fe ff
    13529     jne short 090cfh                          ; 75 04
     13555    jne short 09105h                          ; 75 04
    1353013556    mov ax, bx                                ; 89 d8
    13531     jmp short 090d2h                          ; eb 03
     13557    jmp short 09108h                          ; eb 03
    1353213558    mov ax, strict word 0ffffh                ; b8 ff ff
    1353313559    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1353613562    pop bp                                    ; 5d
    1353713563    retn                                      ; c3
    13538     db  0c7h, 091h, 0e1h, 091h, 0f4h, 091h
    13539     ; mov word [bx+di-06e1fh], 091f4h           ; c7 91 e1 91 f4 91
    13540     or word [bp+si-06de4h], dx                ; 09 92 1c 92
    13541     das                                       ; 2f
     13564    std                                       ; fd
     13565    xchg cx, ax                               ; 91
     13566    pop SS                                    ; 17
    1354213567    xchg dx, ax                               ; 92
    13543 _pci16_function:                             ; 0xf90e5 LB 0x1d7
     13568    sub dl, byte [bp+si-06dc1h]               ; 2a 92 3f 92
     13569    push dx                                   ; 52
     13570    xchg dx, ax                               ; 92
     13571    db  065h, 092h
     13572    ; gs xchg dx, ax                            ; 65 92
     13573_pci16_function:                             ; 0xf911b LB 0x1d7
    1354413574    push bp                                   ; 55
    1354513575    mov bp, sp                                ; 89 e5
     
    1355513585    xor ah, ah                                ; 30 e4
    1355613586    cmp bx, strict byte 00003h                ; 83 fb 03
    13557     jc short 0911eh                           ; 72 1a
    13558     jbe short 09176h                          ; 76 70
     13587    jc short 09154h                           ; 72 1a
     13588    jbe short 091ach                          ; 76 70
    1355913589    cmp bx, strict byte 0000eh                ; 83 fb 0e
    13560     je near 09243h                            ; 0f 84 36 01
     13590    je near 09279h                            ; 0f 84 36 01
    1356113591    cmp bx, strict byte 00008h                ; 83 fb 08
    13562     jc near 09288h                            ; 0f 82 74 01
     13592    jc near 092beh                            ; 0f 82 74 01
    1356313593    cmp bx, strict byte 0000dh                ; 83 fb 0d
    13564     jbe near 0919bh                           ; 0f 86 80 00
    13565     jmp near 09288h                           ; e9 6a 01
     13594    jbe near 091d1h                           ; 0f 86 80 00
     13595    jmp near 092beh                           ; e9 6a 01
    1356613596    cmp bx, strict byte 00002h                ; 83 fb 02
    13567     je short 09146h                           ; 74 23
     13597    je short 0917ch                           ; 74 23
    1356813598    cmp bx, strict byte 00001h                ; 83 fb 01
    13569     jne near 09288h                           ; 0f 85 5e 01
     13599    jne near 092beh                           ; 0f 85 5e 01
    1357013600    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1357113601    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1357313603    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1357413604    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    13575     jmp near 092b5h                           ; e9 6f 01
     13605    jmp near 092ebh                           ; e9 6f 01
    1357613606    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    13577     jne short 09152h                          ; 75 06
     13607    jne short 09188h                          ; 75 06
    1357813608    or ah, 083h                               ; 80 cc 83
    13579     jmp near 092aeh                           ; e9 5c 01
     13609    jmp near 092e4h                           ; e9 5c 01
    1358013610    mov bx, word [bp+008h]                    ; 8b 5e 08
    1358113611    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1358213612    mov ax, word [bp+018h]                    ; 8b 46 18
    1358313613    xor cx, cx                                ; 31 c9
    13584     call 08feeh                               ; e8 8e fe
     13614    call 09024h                               ; e8 8e fe
    1358513615    cmp ax, strict word 0ffffh                ; 3d ff ff
    13586     jne short 09170h                          ; 75 0b
     13616    jne short 091a6h                          ; 75 0b
    1358713617    mov ax, word [bp+020h]                    ; 8b 46 20
    1358813618    xor ah, ah                                ; 30 e4
    1358913619    or ah, 086h                               ; 80 cc 86
    13590     jmp near 092aeh                           ; e9 3e 01
     13620    jmp near 092e4h                           ; e9 3e 01
    1359113621    mov word [bp+014h], ax                    ; 89 46 14
    13592     jmp near 092b5h                           ; e9 3f 01
     13622    jmp near 092ebh                           ; e9 3f 01
    1359313623    mov bx, word [bp+008h]                    ; 8b 5e 08
    1359413624    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1359513625    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1359613626    mov cx, strict word 00001h                ; b9 01 00
    13597     call 08feeh                               ; e8 69 fe
     13627    call 09024h                               ; e8 69 fe
    1359813628    cmp ax, strict word 0ffffh                ; 3d ff ff
    13599     jne short 09195h                          ; 75 0b
     13629    jne short 091cbh                          ; 75 0b
    1360013630    mov ax, word [bp+020h]                    ; 8b 46 20
    1360113631    xor ah, ah                                ; 30 e4
    1360213632    or ah, 086h                               ; 80 cc 86
    13603     jmp near 092aeh                           ; e9 19 01
     13633    jmp near 092e4h                           ; e9 19 01
    1360413634    mov word [bp+014h], ax                    ; 89 46 14
    13605     jmp near 092b5h                           ; e9 1a 01
     13635    jmp near 092ebh                           ; e9 1a 01
    1360613636    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    13607     jc short 091a8h                           ; 72 06
     13637    jc short 091deh                           ; 72 06
    1360813638    or ah, 087h                               ; 80 cc 87
    13609     jmp near 092aeh                           ; e9 06 01
     13639    jmp near 092e4h                           ; e9 06 01
    1361013640    mov dx, word [bp+004h]                    ; 8b 56 04
    1361113641    mov ax, word [bp+014h]                    ; 8b 46 14
    13612     call 08fcah                               ; e8 19 fe
     13642    call 09000h                               ; e8 19 fe
    1361313643    mov bx, word [bp+020h]                    ; 8b 5e 20
    1361413644    xor bh, bh                                ; 30 ff
    1361513645    sub bx, strict byte 00008h                ; 83 eb 08
    1361613646    cmp bx, strict byte 00005h                ; 83 fb 05
    13617     jnbe near 092b5h                          ; 0f 87 f5 00
     13647    jnbe near 092ebh                          ; 0f 87 f5 00
    1361813648    add bx, bx                                ; 01 db
    13619     jmp word [cs:bx-06f27h]                   ; 2e ff a7 d9 90
     13649    jmp word [cs:bx-06ef1h]                   ; 2e ff a7 0f 91
    1362013650    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1362113651    xor bl, bl                                ; 30 db
     
    1362813658    or bx, ax                                 ; 09 c3
    1362913659    mov word [bp+01ch], bx                    ; 89 5e 1c
    13630     jmp near 092b5h                           ; e9 d4 00
     13660    jmp near 092ebh                           ; e9 d4 00
    1363113661    mov dx, word [bp+004h]                    ; 8b 56 04
    1363213662    xor dh, dh                                ; 30 f6
     
    1363513665    in ax, DX                                 ; ed
    1363613666    mov word [bp+01ch], ax                    ; 89 46 1c
    13637     jmp near 092b5h                           ; e9 c1 00
     13667    jmp near 092ebh                           ; e9 c1 00
    1363813668    mov dx, 00cfch                            ; ba fc 0c
    1363913669    in eax, DX                                ; 66 ed
     
    1364413674    mov word [bp+01ch], ax                    ; 89 46 1c
    1364513675    mov word [bp+01eh], dx                    ; 89 56 1e
    13646     jmp near 092b5h                           ; e9 ac 00
     13676    jmp near 092ebh                           ; e9 ac 00
    1364713677    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1364813678    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1365113681    add dx, 00cfch                            ; 81 c2 fc 0c
    1365213682    out DX, AL                                ; ee
    13653     jmp near 092b5h                           ; e9 99 00
     13683    jmp near 092ebh                           ; e9 99 00
    1365413684    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1365513685    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1365813688    add dx, 00cfch                            ; 81 c2 fc 0c
    1365913689    out DX, ax                                ; ef
    13660     jmp near 092b5h                           ; e9 86 00
     13690    jmp near 092ebh                           ; e9 86 00
    1366113691    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1366213692    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1366713697    ; mov ax, cx                                ; 8b c1
    1366813698    out DX, eax                               ; 66 ef
    13669     jmp short 092b5h                          ; eb 72
     13699    jmp short 092ebh                          ; eb 72
    1367013700    mov bx, word [bp+004h]                    ; 8b 5e 04
    1367113701    mov es, [bp+026h]                         ; 8e 46 26
     
    1367413704    mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
    1367513705    cmp cx, word [es:bx]                      ; 26 3b 0f
    13676     jbe short 09269h                          ; 76 11
     13706    jbe short 0929fh                          ; 76 11
    1367713707    mov ax, word [bp+020h]                    ; 8b 46 20
    1367813708    xor ah, ah                                ; 30 e4
     
    1368013710    mov word [bp+020h], ax                    ; 89 46 20
    1368113711    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    13682     jmp short 0927dh                          ; eb 14
     13712    jmp short 092b3h                          ; eb 14
    1368313713    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1368413714    mov si, 0f2c0h                            ; be c0 f2
     
    1369213722    les bx, [bp-008h]                         ; c4 5e f8
    1369313723    mov word [es:bx], ax                      ; 26 89 07
    13694     jmp short 092b5h                          ; eb 2d
    13695     mov bx, 00da2h                            ; bb a2 0d
     13724    jmp short 092ebh                          ; eb 2d
     13725    mov bx, 00d8ah                            ; bb 8a 0d
    1369613726    mov cx, ds                                ; 8c d9
    1369713727    mov ax, strict word 00004h                ; b8 04 00
    13698     call 01931h                               ; e8 9e 86
     13728    call 01931h                               ; e8 68 86
    1369913729    mov ax, word [bp+014h]                    ; 8b 46 14
    1370013730    push ax                                   ; 50
    1370113731    mov ax, word [bp+020h]                    ; 8b 46 20
    1370213732    push ax                                   ; 50
    13703     push 00d5eh                               ; 68 5e 0d
     13733    push 00d46h                               ; 68 46 0d
    1370413734    push strict byte 00004h                   ; 6a 04
    13705     call 01972h                               ; e8 cf 86
     13735    call 01972h                               ; e8 99 86
    1370613736    add sp, strict byte 00008h                ; 83 c4 08
    1370713737    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1371513745    pop bp                                    ; 5d
    1371613746    retn                                      ; c3
    13717 pci_find_classcode_:                         ; 0xf92bc LB 0x2b
     13747pci_find_classcode_:                         ; 0xf92f2 LB 0x2b
    1371813748    push bp                                   ; 55
    1371913749    mov bp, sp                                ; 89 e5
     
    1373013760    int 01ah                                  ; cd 1a
    1373113761    cmp ah, 000h                              ; 80 fc 00
    13732     je near 092ddh                            ; 0f 84 03 00
     13762    je near 09313h                            ; 0f 84 03 00
    1373313763    mov bx, strict word 0ffffh                ; bb ff ff
    1373413764    mov ax, bx                                ; 89 d8
     
    1373913769    pop bp                                    ; 5d
    1374013770    retn                                      ; c3
    13741 pci_read_config_byte_:                       ; 0xf92e7 LB 0x24
     13771pci_read_config_byte_:                       ; 0xf931d LB 0x24
    1374213772    push bp                                   ; 55
    1374313773    mov bp, sp                                ; 89 e5
     
    1375813788    pop bp                                    ; 5d
    1375913789    retn                                      ; c3
    13760 pci_read_config_word_:                       ; 0xf930b LB 0x22
     13790pci_read_config_word_:                       ; 0xf9341 LB 0x22
    1376113791    push bp                                   ; 55
    1376213792    mov bp, sp                                ; 89 e5
     
    1377713807    pop bp                                    ; 5d
    1377813808    retn                                      ; c3
    13779 pci_read_config_dword_:                      ; 0xf932d LB 0x27
     13809pci_read_config_dword_:                      ; 0xf9363 LB 0x27
    1378013810    push bp                                   ; 55
    1378113811    mov bp, sp                                ; 89 e5
     
    1379813828    pop bp                                    ; 5d
    1379913829    retn                                      ; c3
    13800 vds_is_present_:                             ; 0xf9354 LB 0x1d
     13830vds_is_present_:                             ; 0xf938a LB 0x1d
    1380113831    push bx                                   ; 53
    1380213832    push bp                                   ; 55
     
    1380613836    mov es, ax                                ; 8e c0
    1380713837    test byte [es:bx], 020h                   ; 26 f6 07 20
    13808     je short 0936ch                           ; 74 06
     13838    je short 093a2h                           ; 74 06
    1380913839    mov ax, strict word 00001h                ; b8 01 00
    1381013840    pop bp                                    ; 5d
     
    1381513845    pop bx                                    ; 5b
    1381613846    retn                                      ; c3
    13817 vds_real_to_lin_:                            ; 0xf9371 LB 0x1e
     13847vds_real_to_lin_:                            ; 0xf93a7 LB 0x1e
    1381813848    push bx                                   ; 53
    1381913849    push cx                                   ; 51
     
    1382613856    sal ax, 1                                 ; d1 e0
    1382713857    rcl dx, 1                                 ; d1 d2
    13828     loop 0937fh                               ; e2 fa
     13858    loop 093b5h                               ; e2 fa
    1382913859    xor cx, cx                                ; 31 c9
    1383013860    add ax, bx                                ; 01 d8
     
    1383413864    pop bx                                    ; 5b
    1383513865    retn                                      ; c3
    13836 vds_build_sg_list_:                          ; 0xf938f LB 0x79
     13866vds_build_sg_list_:                          ; 0xf93c5 LB 0x79
    1383713867    push bp                                   ; 55
    1383813868    mov bp, sp                                ; 89 e5
     
    1384813878    mov bx, word [bp+006h]                    ; 8b 5e 06
    1384913879    mov word [es:di+002h], bx                 ; 26 89 5d 02
    13850     call 09371h                               ; e8 c3 ff
     13880    call 093a7h                               ; e8 c3 ff
    1385113881    mov es, si                                ; 8e c6
    1385213882    mov word [es:di+004h], ax                 ; 26 89 45 04
    1385313883    mov word [es:di+006h], dx                 ; 26 89 55 06
    1385413884    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    13855     call 09354h                               ; e8 93 ff
     13885    call 0938ah                               ; e8 93 ff
    1385613886    test ax, ax                               ; 85 c0
    13857     je short 093d8h                           ; 74 13
     13887    je short 0940eh                           ; 74 13
    1385813888    mov es, si                                ; 8e c6
    1385913889    mov ax, 08105h                            ; b8 05 81
    1386013890    mov dx, strict word 00000h                ; ba 00 00
    1386113891    int 04bh                                  ; cd 4b
    13862     jc near 093d5h                            ; 0f 82 02 00
     13892    jc near 0940bh                            ; 0f 82 02 00
    1386313893    db  032h, 0c0h
    1386413894    ; xor al, al                                ; 32 c0
    1386513895    cbw                                       ; 98
    13866     jmp short 093ffh                          ; eb 27
     13896    jmp short 09435h                          ; eb 27
    1386713897    mov es, si                                ; 8e c6
    1386813898    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1388113911    pop bp                                    ; 5d
    1388213912    retn 00004h                               ; c2 04 00
    13883 vds_free_sg_list_:                           ; 0xf9408 LB 0x38
     13913vds_free_sg_list_:                           ; 0xf943e LB 0x32
    1388413914    push bp                                   ; 55
    1388513915    mov bp, sp                                ; 89 e5
     
    1388713917    push di                                   ; 57
    1388813918    mov bx, ax                                ; 89 c3
    13889     call 09354h                               ; e8 42 ff
     13919    call 0938ah                               ; e8 42 ff
    1389013920    test ax, ax                               ; 85 c0
    13891     je short 09429h                           ; 74 13
     13921    je short 0945fh                           ; 74 13
    1389213922    mov di, bx                                ; 89 df
    1389313923    mov es, dx                                ; 8e c2
     
    1389513925    mov dx, strict word 00000h                ; ba 00 00
    1389613926    int 04bh                                  ; cd 4b
    13897     jc near 09428h                            ; 0f 82 02 00
     13927    jc near 0945eh                            ; 0f 82 02 00
    1389813928    db  032h, 0c0h
    1389913929    ; xor al, al                                ; 32 c0
     
    1390613936    pop bp                                    ; 5d
    1390713937    retn                                      ; c3
    13908     times 0x8 db 0
    13909 __U4D:                                       ; 0xf9440 LB 0x39
     13938    times 0x2 db 0
     13939__U4D:                                       ; 0xf9470 LB 0x39
    1391013940    pushfw                                    ; 9c
    1391113941    push eax                                  ; 66 50
     
    1393713967    popfw                                     ; 9d
    1393813968    retn                                      ; c3
    13939 __U4M:                                       ; 0xf9479 LB 0x31
     13969__U4M:                                       ; 0xf94a9 LB 0x31
    1394013970    pushfw                                    ; 9c
    1394113971    push eax                                  ; 66 50
     
    1396213992    popfw                                     ; 9d
    1396313993    retn                                      ; c3
    13964 _fmemset_:                                   ; 0xf94aa LB 0xd
     13994_fmemset_:                                   ; 0xf94da LB 0xd
    1396513995    push di                                   ; 57
    1396613996    mov es, dx                                ; 8e c2
     
    1397214002    pop di                                    ; 5f
    1397314003    retn                                      ; c3
    13974 _fmemcpy_:                                   ; 0xf94b7 LB 0x33
     14004_fmemcpy_:                                   ; 0xf94e7 LB 0x33
    1397514005    push bp                                   ; 55
    1397614006    db  08bh, 0ech
     
    1399214022    leave                                     ; c9
    1399314023    retn                                      ; c3
    13994     add byte [bx+si], al                      ; 00 00
     14024    add byte [bx+si], dh                      ; 00 30
    1399514025    xchg bp, ax                               ; 95
    13996     add dl, byte [di-06afah]                  ; 02 95 06 95
    13997     push ES                                   ; 06
     14026    xor dl, byte [di-06acah]                  ; 32 95 36 95
     14027    db  036h, 095h
     14028    ; ss xchg bp, ax                            ; 36 95
     14029    db  036h, 095h
     14030    ; ss xchg bp, ax                            ; 36 95
     14031    cmp byte [di-06ac8h], dl                  ; 38 95 38 95
     14032    cmp dl, byte [di-06ac2h]                  ; 3a 95 3e 95
     14033    db  03eh, 095h
     14034    ; ds xchg bp, ax                            ; 3e 95
     14035    inc ax                                    ; 40
    1399814036    xchg bp, ax                               ; 95
    13999     push ES                                   ; 06
     14037    inc bp                                    ; 45
    1400014038    xchg bp, ax                               ; 95
    14001     or byte [di-06af8h], dl                   ; 08 95 08 95
    14002     or dl, byte [di-06af2h]                   ; 0a 95 0e 95
    14003     push CS                                   ; 0e
     14039    inc di                                    ; 47
    1400414040    xchg bp, ax                               ; 95
    14005     adc byte [di-06aebh], dl                  ; 10 95 15 95
    14006     pop SS                                    ; 17
    14007     xchg bp, ax                               ; 95
    14008 apm_worker:                                  ; 0xf94ea LB 0x3a
     14041apm_worker:                                  ; 0xf951a LB 0x3a
    1400914042    sti                                       ; fb
    1401014043    push ax                                   ; 50
     
    1401814051    pop ax                                    ; 58
    1401914052    mov AH, strict byte 053h                  ; b4 53
    14020     jnc short 09520h                          ; 73 25
    14021     jmp word [cs:bp-06b30h]                   ; 2e ff a6 d0 94
    14022     jmp short 0951eh                          ; eb 1c
     14053    jnc short 09550h                          ; 73 25
     14054    jmp word [cs:bp-06b00h]                   ; 2e ff a6 00 95
     14055    jmp short 0954eh                          ; eb 1c
    1402314056    sti                                       ; fb
    1402414057    hlt                                       ; f4
    14025     jmp short 0951eh                          ; eb 18
    14026     jmp short 0951eh                          ; eb 16
    14027     jmp short 09520h                          ; eb 16
     14058    jmp short 0954eh                          ; eb 18
     14059    jmp short 0954eh                          ; eb 16
     14060    jmp short 09550h                          ; eb 16
    1402814061    mov AH, strict byte 080h                  ; b4 80
    14029     jmp short 09522h                          ; eb 14
    14030     jmp short 09520h                          ; eb 10
     14062    jmp short 09552h                          ; eb 14
     14063    jmp short 09550h                          ; eb 10
    1403114064    mov ax, 00102h                            ; b8 02 01
    14032     jmp short 0951eh                          ; eb 09
    14033     jmp short 0951eh                          ; eb 07
     14065    jmp short 0954eh                          ; eb 09
     14066    jmp short 0954eh                          ; eb 07
    1403414067    mov BL, strict byte 000h                  ; b3 00
    1403514068    mov cx, strict word 00000h                ; b9 00 00
    14036     jmp short 0951eh                          ; eb 00
     14069    jmp short 0954eh                          ; eb 00
    1403714070    clc                                       ; f8
    1403814071    retn                                      ; c3
     
    1404014073    stc                                       ; f9
    1404114074    retn                                      ; c3
    14042 apm_pm16_entry:                              ; 0xf9524 LB 0x11
     14075apm_pm16_entry:                              ; 0xf9554 LB 0x11
    1404314076    mov AH, strict byte 002h                  ; b4 02
    1404414077    push DS                                   ; 1e
     
    1404814081    add bp, strict byte 00008h                ; 83 c5 08
    1404914082    mov ds, bp                                ; 8e dd
    14050     call 094eah                               ; e8 b8 ff
     14083    call 0951ah                               ; e8 b8 ff
    1405114084    pop bp                                    ; 5d
    1405214085    pop DS                                    ; 1f
    1405314086    retf                                      ; cb
    1405414087
    14055   ; Padding 0x44cb bytes at 0xf9535
    14056   times 17611 db 0
     14088  ; Padding 0x449b bytes at 0xf9565
     14089  times 17563 db 0
    1405714090
    1405814091section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1410114134    add bp, strict byte 00008h                ; 83 c5 08
    1410214135    push ebp                                  ; 66 55
    14103     mov bp, 09526h                            ; bd 26 95
     14136    mov bp, 09556h                            ; bd 56 95
    1410414137    add byte [bx+si], al                      ; 00 00
    1410514138    push ebp                                  ; 66 55
     
    1481014843    call 01badh                               ; e8 8c 38
    1481114844    call 01fa7h                               ; e8 83 3c
    14812     call 08d9eh                               ; e8 77 aa
    14813     call 07e75h                               ; e8 4b 9b
     14845    call 08dd4h                               ; e8 ad aa
     14846    call 07e7bh                               ; e8 51 9b
    1481414847    call 0ed2fh                               ; e8 02 0a
    1481514848    call 0e2d2h                               ; e8 a2 ff
     
    1580815841    popfw                                     ; 9d
    1580915842    jmp short 0f895h                          ; eb 13
    15810     call 08ed5h                               ; e8 50 96
     15843    call 08f0bh                               ; e8 86 96
    1581115844    jmp short 0f87ch                          ; eb f5
    1581215845int15_handler_mouse:                         ; 0xff887 LB 0x5
     
    1593715970    db  018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
    1593815971    db  076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
    15939     db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 068h, 092h, 066h
     15972    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 09eh, 092h, 066h
    1594015973    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 09dh, 06bh, 061h, 01fh, 007h
    1594115974    db  0cfh
     
    1604616079cpu_reset:                                   ; 0xffff0 LB 0x10
    1604716080    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    16048     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 043h
     16081    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0c9h
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