VirtualBox

Changeset 55260 in vbox for trunk/src/VBox/Devices/PC/BIOS


Ignore:
Timestamp:
Apr 14, 2015 6:21:00 PM (10 years ago)
Author:
vboxsync
Message:

5.0.0 Beta 2

Location:
trunk/src/VBox/Devices/PC/BIOS
Files:
2 edited

Legend:

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

    r55078 r55260  
    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, 05dh, 07bh, 025h, 089h
     858    db  000h, 000h, 000h, 000h, 000h, 000h, 08fh, 028h, 089h, 07bh, 06bh, 089h
    859859_softrst:                                    ; 0xf0076 LB 0xc
    860860    db  000h, 000h, 000h, 000h, 000h, 000h, 077h, 02bh, 054h, 038h, 054h, 038h
    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  0ebh, 079h, 0a4h, 07ah, 021h, 088h, 0b5h, 088h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     863    db  017h, 07ah, 0d0h, 07ah, 066h, 088h, 0f9h, 088h, 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
     
    984984section CONST2 progbits vstart=0xd90 align=1 ; size=0x400 class=DATA group=DGROUP
    985985_bios_cvs_version_string:                    ; 0xf0d90 LB 0x18
    986     db  'VirtualBox 5.0.0_BETA1', 000h, 000h
     986    db  'VirtualBox 5.0.0_BETA2', 000h, 000h
    987987_bios_prefix_string:                         ; 0xf0da8 LB 0x8
    988988    db  'BIOS: ', 000h, 000h
     
    10581058  times 1136 db 0
    10591059
    1060 section _TEXT progbits vstart=0x1600 align=1 ; size=0x81e5 class=CODE group=AUTO
     1060section _TEXT progbits vstart=0x1600 align=1 ; size=0x8235 class=CODE group=AUTO
    10611061rom_scan_:                                   ; 0xf1600 LB 0x50
    10621062    push bp                                   ; 55
     
    14551455    mov bx, strict word 0000ah                ; bb 0a 00
    14561456    xor cx, cx                                ; 31 c9
    1457     call 096f0h                               ; e8 17 7e
     1457    call 09740h                               ; e8 67 7e
    14581458    mov word [bp-008h], ax                    ; 89 46 f8
    14591459    mov cx, dx                                ; 89 d1
     
    49854985    mov dx, ss                                ; 8c d2
    49864986    lea ax, [bp-026h]                         ; 8d 46 da
    4987     call 0975ah                               ; e8 a4 5c
     4987    call 097aah                               ; e8 f4 5c
    49884988    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    49894989    mov ax, strict word 00011h                ; b8 11 00
     
    54445444    xor dl, dl                                ; 30 d2
    54455445    xor cx, cx                                ; 31 c9
    5446     call 09729h                               ; e8 12 57
     5446    call 09779h                               ; e8 62 57
    54475447    xor bx, bx                                ; 31 db
    54485448    add ax, si                                ; 01 f0
     
    54505450    mov bx, di                                ; 89 fb
    54515451    xor cx, cx                                ; 31 c9
    5452     call 09729h                               ; e8 05 57
     5452    call 09779h                               ; e8 55 57
    54535453    mov bx, ax                                ; 89 c3
    54545454    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    54855485    mov dx, ss                                ; 8c d2
    54865486    lea ax, [bp-02eh]                         ; 8d 46 d2
    5487     call 0975ah                               ; e8 df 56
     5487    call 097aah                               ; e8 2f 57
    54885488    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    54895489    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    57925792    mov dx, ss                                ; 8c d2
    57935793    lea ax, [bp-02ch]                         ; 8d 46 d4
    5794     call 0975ah                               ; e8 44 53
     5794    call 097aah                               ; e8 94 53
    57955795    mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
    57965796    mov ax, word [bp-018h]                    ; 8b 46 e8
     
    76127612    mov bx, strict word 0003fh                ; bb 3f 00
    76137613    xor cx, cx                                ; 31 c9
    7614     call 09729h                               ; e8 30 41
     7614    call 09779h                               ; e8 80 41
    76157615    mov bx, ax                                ; 89 c3
    76167616    mov cx, dx                                ; 89 d1
    76177617    mov ax, word [bp-004h]                    ; 8b 46 fc
    76187618    mov dx, word [bp-002h]                    ; 8b 56 fe
    7619     call 096f0h                               ; e8 ea 40
     7619    call 09740h                               ; e8 3a 41
    76207620    mov word [es:si+002h], ax                 ; 26 89 44 02
    76217621    cmp ax, 00400h                            ; 3d 00 04
     
    78357835    mov bx, cx                                ; 89 cb
    78367836    xor cx, cx                                ; 31 c9
    7837     call 09729h                               ; e8 05 3f
     7837    call 09779h                               ; e8 55 3f
    78387838    xor bx, bx                                ; 31 db
    78397839    add ax, word [bp-008h]                    ; 03 46 f8
     
    78417841    mov bx, word [bp-00ah]                    ; 8b 5e f6
    78427842    xor cx, cx                                ; 31 c9
    7843     call 09729h                               ; e8 f6 3e
     7843    call 09779h                               ; e8 46 3f
    78447844    xor bx, bx                                ; 31 db
    78457845    add ax, word [bp-006h]                    ; 03 46 fa
     
    79997999    mov bx, word [bp-008h]                    ; 8b 5e f8
    80008000    xor cx, cx                                ; 31 c9
    8001     call 09729h                               ; e8 37 3d
     8001    call 09779h                               ; e8 87 3d
    80028002    mov bx, word [bp-006h]                    ; 8b 5e fa
    80038003    xor cx, cx                                ; 31 c9
    8004     call 09729h                               ; e8 2f 3d
     8004    call 09779h                               ; e8 7f 3d
    80058005    mov word [bp-010h], ax                    ; 89 46 f0
    80068006    mov word [bp-00eh], dx                    ; 89 56 f2
     
    1104911049    pop bp                                    ; 5d
    1105011050    retn                                      ; c3
    11051 scsi_cmd_data_in_:                           ; 0xf7885 LB 0xb2
     11051scsi_cmd_data_in_:                           ; 0xf7885 LB 0xc9
    1105211052    push bp                                   ; 55
    1105311053    mov bp, sp                                ; 89 e5
     
    1105711057    mov si, ax                                ; 89 c6
    1105811058    mov byte [bp-006h], dl                    ; 88 56 fa
    11059     mov word [bp-00ah], bx                    ; 89 5e f6
    11060     mov word [bp-008h], cx                    ; 89 4e f8
     11059    mov word [bp-008h], bx                    ; 89 5e f8
     11060    mov word [bp-00ah], cx                    ; 89 4e f6
    1106111061    mov bx, word [bp+00ah]                    ; 8b 5e 0a
    1106211062    mov dx, si                                ; 89 f2
     
    1109511095    movzx ax, byte [bp+004h]                  ; 0f b6 46 04
    1109611096    cmp cx, ax                                ; 39 c1
    11097     jnc short 078f3h                          ; 73 0e
    11098     les di, [bp-00ah]                         ; c4 7e f6
     11097    jnc short 078f6h                          ; 73 11
     11098    mov es, [bp-00ah]                         ; 8e 46 f6
     11099    mov di, word [bp-008h]                    ; 8b 7e f8
    1109911100    add di, cx                                ; 01 cf
    1110011101    mov al, byte [es:di]                      ; 26 8a 05
     
    1110211103    out DX, AL                                ; ee
    1110311104    inc cx                                    ; 41
    11104     jmp short 078ddh                          ; eb ea
     11105    jmp short 078ddh                          ; eb e7
    1110511106    mov dx, si                                ; 89 f2
    1110611107    in AL, DX                                 ; ec
     
    1110811109    ; sub ah, ah                                ; 2a e4
    1110911110    test AL, strict byte 001h                 ; a8 01
    11110     jne short 078f3h                          ; 75 f7
     11111    jne short 078f6h                          ; 75 f7
     11112    test AL, strict byte 002h                 ; a8 02
     11113    je short 07911h                           ; 74 0e
     11114    lea dx, [si+003h]                         ; 8d 54 03
     11115    xor al, al                                ; 30 c0
     11116    out DX, AL                                ; ee
     11117    in AL, DX                                 ; ec
     11118    db  02ah, 0e4h
     11119    ; sub ah, ah                                ; 2a e4
     11120    mov di, strict word 00004h                ; bf 04 00
     11121    jmp short 07943h                          ; eb 32
    1111111122    lea dx, [si+001h]                         ; 8d 54 01
    1111211123    cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
    11113     jne short 0790bh                          ; 75 06
     11124    jne short 07920h                          ; 75 06
    1111411125    cmp bx, 08000h                            ; 81 fb 00 80
    11115     jbe short 07925h                          ; 76 1a
     11126    jbe short 0793ah                          ; 76 1a
    1111611127    mov cx, 08000h                            ; b9 00 80
    1111711128    les di, [bp+006h]                         ; c4 7e 06
     
    1112211133    add ax, 00800h                            ; 05 00 08
    1112311134    mov word [bp+008h], ax                    ; 89 46 08
    11124     jmp short 078fch                          ; eb d7
     11135    jmp short 07911h                          ; eb d7
    1112511136    mov cx, bx                                ; 89 d9
    1112611137    les di, [bp+006h]                         ; c4 7e 06
    1112711138    rep insb                                  ; f3 6c
    11128     xor ax, ax                                ; 31 c0
     11139    xor di, di                                ; 31 ff
     11140    mov ax, di                                ; 89 f8
    1112911141    lea sp, [bp-004h]                         ; 8d 66 fc
    1113011142    pop di                                    ; 5f
     
    1113211144    pop bp                                    ; 5d
    1113311145    retn 0000ah                               ; c2 0a 00
    11134 scsi_cmd_data_out_:                          ; 0xf7937 LB 0xb4
     11146scsi_cmd_data_out_:                          ; 0xf794e LB 0xc9
    1113511147    push bp                                   ; 55
    1113611148    mov bp, sp                                ; 89 e5
     
    1114011152    mov di, ax                                ; 89 c7
    1114111153    mov byte [bp-006h], dl                    ; 88 56 fa
    11142     mov word [bp-00ah], bx                    ; 89 5e f6
    11143     mov word [bp-008h], cx                    ; 89 4e f8
     11154    mov word [bp-008h], bx                    ; 89 5e f8
     11155    mov word [bp-00ah], cx                    ; 89 4e f6
    1114411156    mov bx, word [bp+00ah]                    ; 8b 5e 0a
    1114511157    mov dx, di                                ; 89 fa
     
    1114811160    ; sub ah, ah                                ; 2a e4
    1114911161    test AL, strict byte 001h                 ; a8 01
    11150     jne short 0794dh                          ; 75 f7
     11162    jne short 07964h                          ; 75 f7
    1115111163    mov ax, bx                                ; 89 d8
    1115211164    mov dx, word [bp+00ch]                    ; 8b 56 0c
     
    1115411166    shr dx, 1                                 ; d1 ea
    1115511167    rcr ax, 1                                 ; d1 d8
    11156     loop 0795eh                               ; e2 fa
     11168    loop 07975h                               ; e2 fa
    1115711169    and ax, 000f0h                            ; 25 f0 00
    1115811170    movzx cx, byte [bp+004h]                  ; 0f b6 4e 04
     
    1117211184    shr dx, 1                                 ; d1 ea
    1117311185    rcr ax, 1                                 ; d1 d8
    11174     loop 07984h                               ; e2 fa
     11186    loop 0799bh                               ; e2 fa
    1117511187    mov dx, di                                ; 89 fa
    1117611188    out DX, AL                                ; ee
     
    1117811190    movzx ax, byte [bp+004h]                  ; 0f b6 46 04
    1117911191    cmp cx, ax                                ; 39 c1
    11180     jnc short 079a5h                          ; 73 0e
    11181     les si, [bp-00ah]                         ; c4 76 f6
     11192    jnc short 079bfh                          ; 73 11
     11193    mov es, [bp-00ah]                         ; 8e 46 f6
     11194    mov si, word [bp-008h]                    ; 8b 76 f8
    1118211195    add si, cx                                ; 01 ce
    1118311196    mov al, byte [es:si]                      ; 26 8a 04
     
    1118511198    out DX, AL                                ; ee
    1118611199    inc cx                                    ; 41
    11187     jmp short 0798fh                          ; eb ea
     11200    jmp short 079a6h                          ; eb e7
    1118811201    lea dx, [di+001h]                         ; 8d 55 01
    1118911202    cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
    11190     jne short 079b4h                          ; 75 06
     11203    jne short 079ceh                          ; 75 06
    1119111204    cmp bx, 08000h                            ; 81 fb 00 80
    11192     jbe short 079cfh                          ; 76 1b
     11205    jbe short 079e9h                          ; 76 1b
    1119311206    mov cx, 08000h                            ; b9 00 80
    1119411207    les si, [bp+006h]                         ; c4 76 06
     
    1120011213    add ax, 00800h                            ; 05 00 08
    1120111214    mov word [bp+008h], ax                    ; 89 46 08
    11202     jmp short 079a5h                          ; eb d6
     11215    jmp short 079bfh                          ; eb d6
    1120311216    mov cx, bx                                ; 89 d9
    1120411217    les si, [bp+006h]                         ; c4 76 06
     
    1121011223    ; sub ah, ah                                ; 2a e4
    1121111224    test AL, strict byte 001h                 ; a8 01
    11212     jne short 079d7h                          ; 75 f7
     11225    jne short 079f1h                          ; 75 f7
     11226    test AL, strict byte 002h                 ; a8 02
     11227    je short 07a0ch                           ; 74 0e
     11228    lea dx, [di+003h]                         ; 8d 55 03
     11229    xor al, al                                ; 30 c0
     11230    out DX, AL                                ; ee
     11231    in AL, DX                                 ; ec
     11232    db  02ah, 0e4h
     11233    ; sub ah, ah                                ; 2a e4
     11234    mov ax, strict word 00004h                ; b8 04 00
     11235    jmp short 07a0eh                          ; eb 02
    1121311236    xor ax, ax                                ; 31 c0
    1121411237    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1121711240    pop bp                                    ; 5d
    1121811241    retn 0000ah                               ; c2 0a 00
    11219 @scsi_read_sectors:                          ; 0xf79eb LB 0xb9
     11242@scsi_read_sectors:                          ; 0xf7a17 LB 0xb9
    1122011243    push bp                                   ; 55
    1122111244    mov bp, sp                                ; 89 e5
     
    1122811251    sub bl, 008h                              ; 80 eb 08
    1122911252    cmp bl, 004h                              ; 80 fb 04
    11230     jbe short 07a17h                          ; 76 12
     11253    jbe short 07a43h                          ; 76 12
    1123111254    movzx ax, bl                              ; 0f b6 c3
    1123211255    push ax                                   ; 50
     
    1123411257    push 00b38h                               ; 68 38 0b
    1123511258    push strict byte 00007h                   ; 6a 07
    11236     call 01972h                               ; e8 5e 9f
     11259    call 01972h                               ; e8 32 9f
    1123711260    add sp, strict byte 00008h                ; 83 c4 08
    1123811261    mov es, [bp+006h]                         ; 8e 46 06
     
    1126111284    sal word [bp-008h], 1                     ; d1 66 f8
    1126211285    rcl word [bp-006h], 1                     ; d1 56 fa
    11263     loop 07a60h                               ; e2 f8
     11286    loop 07a8ch                               ; e2 f8
    1126411287    push dword [bp-008h]                      ; 66 ff 76 f8
    1126511288    db  066h, 026h, 0ffh, 074h, 004h
     
    1126911292    mov cx, ss                                ; 8c d1
    1127011293    lea bx, [bp-012h]                         ; 8d 5e ee
    11271     call 07885h                               ; e8 08 fe
     11294    call 07885h                               ; e8 dc fd
    1127211295    mov ah, al                                ; 88 c4
    1127311296    test al, al                               ; 84 c0
    11274     jne short 07a98h                          ; 75 15
     11297    jne short 07ac4h                          ; 75 15
    1127511298    mov es, [bp+006h]                         ; 8e 46 06
    1127611299    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1128511308    pop bp                                    ; 5d
    1128611309    retn 00004h                               ; c2 04 00
    11287 @scsi_write_sectors:                         ; 0xf7aa4 LB 0xb9
     11310@scsi_write_sectors:                         ; 0xf7ad0 LB 0xb9
    1128811311    push bp                                   ; 55
    1128911312    mov bp, sp                                ; 89 e5
     
    1129611319    sub bl, 008h                              ; 80 eb 08
    1129711320    cmp bl, 004h                              ; 80 fb 04
    11298     jbe short 07ad0h                          ; 76 12
     11321    jbe short 07afch                          ; 76 12
    1129911322    movzx ax, bl                              ; 0f b6 c3
    1130011323    push ax                                   ; 50
     
    1130211325    push 00b38h                               ; 68 38 0b
    1130311326    push strict byte 00007h                   ; 6a 07
    11304     call 01972h                               ; e8 a5 9e
     11327    call 01972h                               ; e8 79 9e
    1130511328    add sp, strict byte 00008h                ; 83 c4 08
    1130611329    mov es, [bp+006h]                         ; 8e 46 06
     
    1132911352    sal word [bp-008h], 1                     ; d1 66 f8
    1133011353    rcl word [bp-006h], 1                     ; d1 56 fa
    11331     loop 07b19h                               ; e2 f8
     11354    loop 07b45h                               ; e2 f8
    1133211355    push dword [bp-008h]                      ; 66 ff 76 f8
    1133311356    db  066h, 026h, 0ffh, 074h, 004h
     
    1133711360    mov cx, ss                                ; 8c d1
    1133811361    lea bx, [bp-012h]                         ; 8d 5e ee
    11339     call 07937h                               ; e8 01 fe
     11362    call 0794eh                               ; e8 ec fd
    1134011363    mov ah, al                                ; 88 c4
    1134111364    test al, al                               ; 84 c0
    11342     jne short 07b51h                          ; 75 15
     11365    jne short 07b7dh                          ; 75 15
    1134311366    mov es, [bp+006h]                         ; 8e 46 06
    1134411367    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1135311376    pop bp                                    ; 5d
    1135411377    retn 00004h                               ; c2 04 00
    11355 scsi_cmd_packet_:                            ; 0xf7b5d LB 0x166
     11378scsi_cmd_packet_:                            ; 0xf7b89 LB 0x166
    1135611379    push bp                                   ; 55
    1135711380    mov bp, sp                                ; 89 e5
     
    1136511388    mov dx, strict word 0000eh                ; ba 0e 00
    1136611389    mov ax, strict word 00040h                ; b8 40 00
    11367     call 0166ch                               ; e8 f3 9a
     11390    call 0166ch                               ; e8 c7 9a
    1136811391    mov si, 00122h                            ; be 22 01
    1136911392    mov word [bp-00eh], ax                    ; 89 46 f2
    1137011393    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    11371     jne short 07ba4h                          ; 75 1f
     11394    jne short 07bd0h                          ; 75 1f
    1137211395    mov bx, 00da8h                            ; bb a8 0d
    1137311396    mov cx, ds                                ; 8c d9
    1137411397    mov ax, strict word 00004h                ; b8 04 00
    11375     call 01931h                               ; e8 a1 9d
     11398    call 01931h                               ; e8 75 9d
    1137611399    push 00b6ah                               ; 68 6a 0b
    1137711400    push 00b7ah                               ; 68 7a 0b
    1137811401    push strict byte 00004h                   ; 6a 04
    11379     call 01972h                               ; e8 d7 9d
     11402    call 01972h                               ; e8 ab 9d
    1138011403    add sp, strict byte 00006h                ; 83 c4 06
    1138111404    mov dx, strict word 00001h                ; ba 01 00
    11382     jmp near 07cb8h                           ; e9 14 01
     11405    jmp near 07ce4h                           ; e9 14 01
    1138311406    sub di, strict byte 00008h                ; 83 ef 08
    1138411407    sal di, 002h                              ; c1 e7 02
     
    1139411417    ; sub ah, ah                                ; 2a e4
    1139511418    test AL, strict byte 001h                 ; a8 01
    11396     jne short 07bc0h                          ; 75 f7
     11419    jne short 07bech                          ; 75 f7
    1139711420    xor ax, ax                                ; 31 c0
    1139811421    mov dx, word [bp+006h]                    ; 8b 56 06
     
    1141011433    shr dx, 1                                 ; d1 ea
    1141111434    rcr ax, 1                                 ; d1 d8
    11412     loop 07bebh                               ; e2 fa
     11435    loop 07c17h                               ; e2 fa
    1141311436    and ax, 000f0h                            ; 25 f0 00
    1141411437    movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     
    1142811451    shr dx, 1                                 ; d1 ea
    1142911452    rcr ax, 1                                 ; d1 d8
    11430     loop 07c12h                               ; e2 fa
     11453    loop 07c3eh                               ; e2 fa
    1143111454    mov dx, bx                                ; 89 da
    1143211455    out DX, AL                                ; ee
     
    1143411457    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    1143511458    cmp cx, ax                                ; 39 c1
    11436     jnc short 07c33h                          ; 73 0e
     11459    jnc short 07c5fh                          ; 73 0e
    1143711460    les di, [bp-00ch]                         ; c4 7e f4
    1143811461    add di, cx                                ; 01 cf
     
    1144111464    out DX, AL                                ; ee
    1144211465    inc cx                                    ; 41
    11443     jmp short 07c1dh                          ; eb ea
     11466    jmp short 07c49h                          ; eb ea
    1144411467    mov dx, bx                                ; 89 da
    1144511468    in AL, DX                                 ; ec
     
    1144711470    ; sub ah, ah                                ; 2a e4
    1144811471    test AL, strict byte 001h                 ; a8 01
    11449     jne short 07c33h                          ; 75 f7
     11472    jne short 07c5fh                          ; 75 f7
    1145011473    test AL, strict byte 002h                 ; a8 02
    11451     je short 07c4eh                           ; 74 0e
     11474    je short 07c7ah                           ; 74 0e
    1145211475    lea dx, [bx+003h]                         ; 8d 57 03
    1145311476    xor al, al                                ; 30 c0
     
    1145711480    ; sub ah, ah                                ; 2a e4
    1145811481    mov dx, strict word 00003h                ; ba 03 00
    11459     jmp short 07cb8h                          ; eb 6a
     11482    jmp short 07ce4h                          ; eb 6a
    1146011483    mov ax, word [bp+004h]                    ; 8b 46 04
    1146111484    test ax, ax                               ; 85 c0
    11462     je short 07c5dh                           ; 74 08
     11485    je short 07c89h                           ; 74 08
    1146311486    lea dx, [bx+001h]                         ; 8d 57 01
    1146411487    mov cx, ax                                ; 89 c1
    1146511488    in AL, DX                                 ; ec
    11466     loop 07c5ah                               ; e2 fd
     11489    loop 07c86h                               ; e2 fd
    1146711490    mov ax, word [bp+006h]                    ; 8b 46 06
    1146811491    mov es, [bp-00eh]                         ; 8e 46 f2
     
    1147211495    lea ax, [bx+001h]                         ; 8d 47 01
    1147311496    cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
    11474     jne short 07c7eh                          ; 75 07
     11497    jne short 07caah                          ; 75 07
    1147511498    cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
    11476     jbe short 07c9bh                          ; 76 1d
     11499    jbe short 07cc7h                          ; 76 1d
    1147711500    mov dx, ax                                ; 89 c2
    1147811501    mov cx, 08000h                            ; b9 00 80
     
    1148411507    add ax, 00800h                            ; 05 00 08
    1148511508    mov word [bp+00eh], ax                    ; 89 46 0e
    11486     jmp short 07c6eh                          ; eb d3
     11509    jmp short 07c9ah                          ; eb d3
    1148711510    mov dx, ax                                ; 89 c2
    1148811511    mov cx, word [bp+006h]                    ; 8b 4e 06
     
    1149111514    mov es, [bp-00eh]                         ; 8e 46 f2
    1149211515    cmp word [es:si+01ch], strict byte 00000h ; 26 83 7c 1c 00
    11493     je short 07cb6h                           ; 74 07
     11516    je short 07ce2h                           ; 74 07
    1149411517    mov cx, word [es:si+01ch]                 ; 26 8b 4c 1c
    1149511518    in AL, DX                                 ; ec
    11496     loop 07cb3h                               ; e2 fd
     11519    loop 07cdfh                               ; e2 fd
    1149711520    xor dx, dx                                ; 31 d2
    1149811521    mov ax, dx                                ; 89 d0
     
    1150211525    pop bp                                    ; 5d
    1150311526    retn 0000ch                               ; c2 0c 00
    11504 scsi_enumerate_attached_devices_:            ; 0xf7cc3 LB 0x3e5
     11527scsi_enumerate_attached_devices_:            ; 0xf7cef LB 0x3e4
    1150511528    push bp                                   ; 55
    1150611529    mov bp, sp                                ; 89 e5
     
    1151011533    push si                                   ; 56
    1151111534    push di                                   ; 57
    11512     sub sp, 0021ch                            ; 81 ec 1c 02
     11535    sub sp, 0021eh                            ; 81 ec 1e 02
    1151311536    push ax                                   ; 50
    1151411537    mov dx, strict word 0000eh                ; ba 0e 00
    1151511538    mov ax, strict word 00040h                ; b8 40 00
    11516     call 0166ch                               ; e8 93 99
     11539    call 0166ch                               ; e8 67 99
    1151711540    mov si, 00122h                            ; be 22 01
    11518     mov word [bp-01ah], ax                    ; 89 46 e6
    11519     mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    11520     jmp near 08036h                           ; e9 4f 03
    11521     mov es, [bp-01ah]                         ; 8e 46 e6
    11522     cmp byte [es:si+001e8h], 004h             ; 26 80 bc e8 01 04
    11523     jnc near 0809eh                           ; 0f 83 aa 03
     11541    mov word [bp-018h], ax                    ; 89 46 e8
     11542    mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
     11543    jmp near 08055h                           ; e9 42 03
     11544    cmp AL, strict byte 004h                  ; 3c 04
     11545    jnc near 080c9h                           ; 0f 83 b0 03
    1152411546    mov cx, strict word 0000ah                ; b9 0a 00
    1152511547    xor bx, bx                                ; 31 db
    1152611548    mov dx, ss                                ; 8c d2
    11527     lea ax, [bp-026h]                         ; 8d 46 da
    11528     call 0975ah                               ; e8 59 1a
    11529     mov byte [bp-026h], 025h                  ; c6 46 da 25
     11549    lea ax, [bp-028h]                         ; 8d 46 d8
     11550    call 097aah                               ; e8 84 1a
     11551    mov byte [bp-028h], 025h                  ; c6 46 d8 25
    1153011552    push dword 000000008h                     ; 66 6a 08
    11531     lea dx, [bp-00226h]                       ; 8d 96 da fd
     11553    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
    1153211554    push SS                                   ; 16
    1153311555    push dx                                   ; 52
    1153411556    push strict byte 0000ah                   ; 6a 0a
    11535     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     11557    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    1153611558    mov cx, ss                                ; 8c d1
    11537     lea bx, [bp-026h]                         ; 8d 5e da
    11538     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
    11539     call 07885h                               ; e8 65 fb
     11559    lea bx, [bp-028h]                         ; 8d 5e d8
     11560    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
     11561    call 07885h                               ; e8 40 fb
    1154011562    test al, al                               ; 84 c0
    11541     je short 07d32h                           ; 74 0e
     11563    je short 07d57h                           ; 74 0e
    1154211564    push 00b9ah                               ; 68 9a 0b
    1154311565    push 00bd3h                               ; 68 d3 0b
    1154411566    push strict byte 00007h                   ; 6a 07
    11545     call 01972h                               ; e8 43 9c
     11567    call 01972h                               ; e8 1e 9c
    1154611568    add sp, strict byte 00006h                ; 83 c4 06
    11547     movzx ax, byte [bp-00225h]                ; 0f b6 86 db fd
    11548     movzx di, byte [bp-00226h]                ; 0f b6 be da fd
     11569    movzx ax, byte [bp-00227h]                ; 0f b6 86 d9 fd
     11570    movzx di, byte [bp-00228h]                ; 0f b6 be d8 fd
    1154911571    sal di, 008h                              ; c1 e7 08
    1155011572    xor bx, bx                                ; 31 db
    1155111573    or di, ax                                 ; 09 c7
    11552     movzx ax, byte [bp-00224h]                ; 0f b6 86 dc fd
     11574    movzx ax, byte [bp-00226h]                ; 0f b6 86 da fd
    1155311575    xor dx, dx                                ; 31 d2
    1155411576    mov cx, strict word 00008h                ; b9 08 00
    1155511577    sal ax, 1                                 ; d1 e0
    1155611578    rcl dx, 1                                 ; d1 d2
    11557     loop 07d4dh                               ; e2 fa
     11579    loop 07d72h                               ; e2 fa
    1155811580    or bx, ax                                 ; 09 c3
    11559     or dx, di                                 ; 09 fa
    11560     movzx ax, byte [bp-00223h]                ; 0f b6 86 dd fd
     11581    or di, dx                                 ; 09 d7
     11582    movzx ax, byte [bp-00225h]                ; 0f b6 86 db fd
    1156111583    or bx, ax                                 ; 09 c3
    11562     mov word [bp-00eh], bx                    ; 89 5e f2
    11563     mov word [bp-018h], dx                    ; 89 56 e8
    11564     movzx di, byte [bp-00222h]                ; 0f b6 be de fd
    11565     sal di, 008h                              ; c1 e7 08
    11566     movzx dx, byte [bp-00221h]                ; 0f b6 96 df fd
     11584    mov word [bp-014h], bx                    ; 89 5e ec
     11585    add word [bp-014h], strict byte 00001h    ; 83 46 ec 01
     11586    adc di, strict byte 00000h                ; 83 d7 00
     11587    movzx ax, byte [bp-00224h]                ; 0f b6 86 dc fd
     11588    sal ax, 008h                              ; c1 e0 08
     11589    movzx dx, byte [bp-00223h]                ; 0f b6 96 dd fd
    1156711590    xor bx, bx                                ; 31 db
    11568     or di, dx                                 ; 09 d7
    11569     movzx ax, byte [bp-00220h]                ; 0f b6 86 e0 fd
     11591    or ax, dx                                 ; 09 d0
     11592    mov word [bp-012h], ax                    ; 89 46 ee
     11593    movzx ax, byte [bp-00222h]                ; 0f b6 86 de fd
    1157011594    xor dx, dx                                ; 31 d2
    1157111595    mov cx, strict word 00008h                ; b9 08 00
    1157211596    sal ax, 1                                 ; d1 e0
    1157311597    rcl dx, 1                                 ; d1 d2
    11574     loop 07d7fh                               ; e2 fa
     11598    loop 07dabh                               ; e2 fa
    1157511599    or ax, bx                                 ; 09 d8
    11576     or dx, di                                 ; 09 fa
    11577     movzx bx, byte [bp-0021fh]                ; 0f b6 9e e1 fd
     11600    or dx, word [bp-012h]                     ; 0b 56 ee
     11601    movzx bx, byte [bp-00221h]                ; 0f b6 9e df fd
    1157811602    or ax, bx                                 ; 09 d8
    11579     mov word [bp-016h], ax                    ; 89 46 ea
     11603    mov word [bp-010h], ax                    ; 89 46 f0
    1158011604    test dx, dx                               ; 85 d2
    11581     jne short 07d9ch                          ; 75 05
     11605    jne short 07dc9h                          ; 75 05
    1158211606    cmp ax, 00200h                            ; 3d 00 02
    11583     je short 07dbch                           ; 74 20
     11607    je short 07de9h                           ; 74 20
    1158411608    mov bx, 00da8h                            ; bb a8 0d
    1158511609    mov cx, ds                                ; 8c d9
    1158611610    mov ax, strict word 00004h                ; b8 04 00
    11587     call 01931h                               ; e8 8a 9b
     11611    call 01931h                               ; e8 5d 9b
    1158811612    push dx                                   ; 52
    11589     push word [bp-016h]                       ; ff 76 ea
    1159011613    push word [bp-010h]                       ; ff 76 f0
     11614    push word [bp-00eh]                       ; ff 76 f2
    1159111615    push 00bf2h                               ; 68 f2 0b
    1159211616    push strict byte 00004h                   ; 6a 04
    11593     call 01972h                               ; e8 bc 9b
     11617    call 01972h                               ; e8 8f 9b
    1159411618    add sp, strict byte 0000ah                ; 83 c4 0a
    11595     jmp near 0802dh                           ; e9 71 02
    11596     mov es, [bp-01ah]                         ; 8e 46 e6
    11597     mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
    11598     mov byte [bp-00ch], al                    ; 88 46 f4
     11619    jmp near 0804ch                           ; e9 63 02
     11620    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1159911621    cmp AL, strict byte 001h                  ; 3c 01
    11600     jc short 07dd7h                           ; 72 0c
    11601     jbe short 07ddfh                          ; 76 12
     11622    jc short 07dfch                           ; 72 0c
     11623    jbe short 07e04h                          ; 76 12
    1160211624    cmp AL, strict byte 003h                  ; 3c 03
    11603     je short 07de7h                           ; 74 16
     11625    je short 07e0ch                           ; 74 16
    1160411626    cmp AL, strict byte 002h                  ; 3c 02
    11605     je short 07de3h                           ; 74 0e
    11606     jmp short 07e33h                          ; eb 5c
     11627    je short 07e08h                           ; 74 0e
     11628    jmp short 07e5bh                          ; eb 5f
    1160711629    test al, al                               ; 84 c0
    11608     jne short 07e33h                          ; 75 58
     11630    jne short 07e5bh                          ; 75 5b
    1160911631    mov BL, strict byte 090h                  ; b3 90
    11610     jmp short 07de9h                          ; eb 0a
     11632    jmp short 07e0eh                          ; eb 0a
    1161111633    mov BL, strict byte 098h                  ; b3 98
    11612     jmp short 07de9h                          ; eb 06
     11634    jmp short 07e0eh                          ; eb 06
    1161311635    mov BL, strict byte 0a0h                  ; b3 a0
    11614     jmp short 07de9h                          ; eb 02
     11636    jmp short 07e0eh                          ; eb 02
    1161511637    mov BL, strict byte 0a8h                  ; b3 a8
    1161611638    mov al, bl                                ; 88 d8
     
    1161811640    movzx cx, al                              ; 0f b6 c8
    1161911641    mov ax, cx                                ; 89 c8
    11620     call 016ach                               ; e8 b7 98
     11642    call 016ach                               ; e8 92 98
    1162111643    test al, al                               ; 84 c0
    11622     je short 07e33h                           ; 74 3a
     11644    je short 07e5bh                           ; 74 3d
    1162311645    mov al, bl                                ; 88 d8
    1162411646    db  0feh, 0c0h
    1162511647    ; inc al                                    ; fe c0
    1162611648    xor ah, ah                                ; 30 e4
    11627     call 016ach                               ; e8 aa 98
     11649    call 016ach                               ; e8 85 98
    1162811650    xor ah, ah                                ; 30 e4
    11629     mov dx, ax                                ; 89 c2
    11630     sal dx, 008h                              ; c1 e2 08
     11651    sal ax, 008h                              ; c1 e0 08
     11652    mov word [bp-012h], ax                    ; 89 46 ee
    1163111653    movzx ax, bl                              ; 0f b6 c3
    11632     call 016ach                               ; e8 9d 98
     11654    call 016ach                               ; e8 77 98
    1163311655    xor ah, ah                                ; 30 e4
    11634     add ax, dx                                ; 01 d0
     11656    add ax, word [bp-012h]                    ; 03 46 ee
    1163511657    cwd                                       ; 99
    11636     mov di, ax                                ; 89 c7
    11637     mov word [bp-012h], dx                    ; 89 56 ee
     11658    mov word [bp-01eh], ax                    ; 89 46 e2
     11659    mov word [bp-016h], dx                    ; 89 56 ea
    1163811660    mov al, bl                                ; 88 d8
    1163911661    add AL, strict byte 002h                  ; 04 02
    1164011662    xor ah, ah                                ; 30 e4
    11641     call 016ach                               ; e8 8a 98
    11642     xor ah, ah                                ; 30 e4
    11643     mov word [bp-014h], ax                    ; 89 46 ec
    11644     mov ax, cx                                ; 89 c8
    11645     call 016ach                               ; e8 80 98
     11663    call 016ach                               ; e8 62 98
    1164611664    xor ah, ah                                ; 30 e4
    1164711665    mov word [bp-01ch], ax                    ; 89 46 e4
    11648     jmp short 07e78h                          ; eb 45
    11649     mov ax, word [bp-018h]                    ; 8b 46 e8
    11650     cmp ax, strict word 00040h                ; 3d 40 00
    11651     jnbe short 07e3dh                         ; 77 02
    11652     jne short 07e49h                          ; 75 0c
    11653     mov word [bp-014h], 000ffh                ; c7 46 ec ff 00
    11654     mov word [bp-01ch], strict word 0003fh    ; c7 46 e4 3f 00
    11655     jmp short 07e61h                          ; eb 18
    11656     cmp ax, strict word 00020h                ; 3d 20 00
    11657     jnbe short 07e50h                         ; 77 02
    11658     jne short 07e57h                          ; 75 07
    11659     mov word [bp-014h], 00080h                ; c7 46 ec 80 00
    11660     jmp short 07e5ch                          ; eb 05
    11661     mov word [bp-014h], strict word 00040h    ; c7 46 ec 40 00
    11662     mov word [bp-01ch], strict word 00020h    ; c7 46 e4 20 00
    11663     mov bx, word [bp-014h]                    ; 8b 5e ec
    11664     imul bx, word [bp-01ch]                   ; 0f af 5e e4
    11665     mov ax, word [bp-00eh]                    ; 8b 46 f2
    11666     mov dx, word [bp-018h]                    ; 8b 56 e8
     11666    mov ax, cx                                ; 89 c8
     11667    call 016ach                               ; e8 58 98
     11668    xor ah, ah                                ; 30 e4
     11669    mov word [bp-01ah], ax                    ; 89 46 e6
     11670    jmp short 07e9ch                          ; eb 41
     11671    cmp di, strict byte 00040h                ; 83 ff 40
     11672    jnbe short 07e62h                         ; 77 02
     11673    jne short 07e6ch                          ; 75 0a
     11674    mov dword [bp-01ch], strict dword 0003f00ffh ; 66 c7 46 e4 ff 00 3f 00
     11675    jmp short 07e85h                          ; eb 19
     11676    cmp di, strict byte 00020h                ; 83 ff 20
     11677    jnbe short 07e73h                         ; 77 02
     11678    jne short 07e7dh                          ; 75 0a
     11679    mov dword [bp-01ch], strict dword 000200080h ; 66 c7 46 e4 80 00 20 00
     11680    jmp short 07e85h                          ; eb 08
     11681    mov dword [bp-01ch], strict dword 000200040h ; 66 c7 46 e4 40 00 20 00
     11682    mov bx, word [bp-01ch]                    ; 8b 5e e4
     11683    imul bx, word [bp-01ah]                   ; 0f af 5e e6
     11684    mov ax, word [bp-014h]                    ; 8b 46 ec
     11685    mov dx, di                                ; 89 fa
    1166711686    xor cx, cx                                ; 31 c9
    11668     call 096f0h                               ; e8 7d 18
    11669     mov di, ax                                ; 89 c7
    11670     mov word [bp-012h], dx                    ; 89 56 ee
     11687    call 09740h                               ; e8 aa 18
     11688    mov word [bp-01eh], ax                    ; 89 46 e2
     11689    mov word [bp-016h], dx                    ; 89 56 ea
    1167111690    mov dl, byte [bp-00ch]                    ; 8a 56 f4
    1167211691    add dl, 008h                              ; 80 c2 08
    1167311692    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    1167411693    sal bx, 002h                              ; c1 e3 02
    11675     mov es, [bp-01ah]                         ; 8e 46 e6
     11694    mov es, [bp-018h]                         ; 8e 46 e8
    1167611695    add bx, si                                ; 01 f3
    11677     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
     11696    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
    1167811697    mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
    11679     mov al, byte [bp-010h]                    ; 8a 46 f0
     11698    mov al, byte [bp-00eh]                    ; 8a 46 f2
    1168011699    mov byte [es:bx+001dah], al               ; 26 88 87 da 01
    1168111700    movzx ax, dl                              ; 0f b6 c2
     
    1168511704    db  066h, 026h, 0c7h, 047h, 01eh, 004h, 0ffh, 000h, 000h
    1168611705    ; mov dword [es:bx+01eh], strict dword 00000ff04h ; 66 26 c7 47 1e 04 ff 00 00
    11687     mov ax, word [bp-016h]                    ; 8b 46 ea
     11706    mov ax, word [bp-010h]                    ; 8b 46 f0
    1168811707    mov word [es:bx+024h], ax                 ; 26 89 47 24
    1168911708    mov byte [es:bx+023h], 001h               ; 26 c6 47 23 01
    11690     mov ax, word [bp-014h]                    ; 8b 46 ec
     11709    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1169111710    mov word [es:bx+026h], ax                 ; 26 89 47 26
    11692     mov ax, word [bp-01ch]                    ; 8b 46 e4
     11711    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1169311712    mov word [es:bx+02ah], ax                 ; 26 89 47 2a
    11694     cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
    11695     jne short 07ed4h                          ; 75 06
    11696     cmp di, 00400h                            ; 81 ff 00 04
    11697     jbe short 07edch                          ; 76 08
     11713    cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
     11714    jne short 07ef9h                          ; 75 07
     11715    cmp word [bp-01eh], 00400h                ; 81 7e e2 00 04
     11716    jbe short 07f01h                          ; 76 08
    1169811717    mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
    11699     jmp short 07ee0h                          ; eb 04
    11700     mov word [es:bx+028h], di                 ; 26 89 7f 28
     11718    jmp short 07f08h                          ; eb 07
     11719    mov ax, word [bp-01eh]                    ; 8b 46 e2
     11720    mov word [es:bx+028h], ax                 ; 26 89 47 28
    1170111721    mov bx, 00da8h                            ; bb a8 0d
    1170211722    mov cx, ds                                ; 8c d9
    1170311723    mov ax, strict word 00004h                ; b8 04 00
    11704     call 01931h                               ; e8 46 9a
    11705     push word [bp-018h]                       ; ff 76 e8
     11724    call 01931h                               ; e8 1e 9a
     11725    push di                                   ; 57
     11726    push word [bp-014h]                       ; ff 76 ec
     11727    push dword [bp-01ch]                      ; 66 ff 76 e4
     11728    push word [bp-01eh]                       ; ff 76 e2
    1170611729    push word [bp-00eh]                       ; ff 76 f2
    11707     push word [bp-01ch]                       ; ff 76 e4
    11708     push word [bp-014h]                       ; ff 76 ec
    11709     push di                                   ; 57
    11710     push word [bp-010h]                       ; ff 76 f0
    1171111730    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    1171211731    push ax                                   ; 50
    1171311732    push 00c20h                               ; 68 20 0c
    1171411733    push strict byte 00004h                   ; 6a 04
    11715     call 01972h                               ; e8 6a 9a
     11734    call 01972h                               ; e8 44 9a
    1171611735    add sp, strict byte 00012h                ; 83 c4 12
    1171711736    movzx ax, dl                              ; 0f b6 c2
    1171811737    imul ax, ax, strict byte 00018h           ; 6b c0 18
    11719     mov es, [bp-01ah]                         ; 8e 46 e6
     11738    mov es, [bp-018h]                         ; 8e 46 e8
     11739    mov bx, si                                ; 89 f3
     11740    add bx, ax                                ; 01 c3
     11741    mov ax, word [bp-01ch]                    ; 8b 46 e4
     11742    mov word [es:bx+02ch], ax                 ; 26 89 47 2c
     11743    mov ax, word [bp-01ah]                    ; 8b 46 e6
     11744    mov word [es:bx+030h], ax                 ; 26 89 47 30
     11745    cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
     11746    jne short 07f59h                          ; 75 07
     11747    cmp word [bp-01eh], 00400h                ; 81 7e e2 00 04
     11748    jbe short 07f61h                          ; 76 08
     11749    mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
     11750    jmp short 07f68h                          ; eb 07
     11751    mov ax, word [bp-01eh]                    ; 8b 46 e2
     11752    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
     11753    movzx ax, dl                              ; 0f b6 c2
     11754    imul ax, ax, strict byte 00018h           ; 6b c0 18
     11755    mov es, [bp-018h]                         ; 8e 46 e8
    1172011756    mov bx, si                                ; 89 f3
    1172111757    add bx, ax                                ; 01 c3
    1172211758    mov ax, word [bp-014h]                    ; 8b 46 ec
    11723     mov word [es:bx+02ch], ax                 ; 26 89 47 2c
    11724     mov ax, word [bp-01ch]                    ; 8b 46 e4
    11725     mov word [es:bx+030h], ax                 ; 26 89 47 30
    11726     cmp word [bp-012h], strict byte 00000h    ; 83 7e ee 00
    11727     jne short 07f32h                          ; 75 06
    11728     cmp di, 00400h                            ; 81 ff 00 04
    11729     jbe short 07f3ah                          ; 76 08
    11730     mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
    11731     jmp short 07f3eh                          ; eb 04
    11732     mov word [es:bx+02eh], di                 ; 26 89 7f 2e
    11733     movzx ax, dl                              ; 0f b6 c2
    11734     imul ax, ax, strict byte 00018h           ; 6b c0 18
    11735     mov es, [bp-01ah]                         ; 8e 46 e6
    11736     mov bx, si                                ; 89 f3
    11737     add bx, ax                                ; 01 c3
    11738     mov ax, word [bp-00eh]                    ; 8b 46 f2
    1173911759    mov word [es:bx+032h], ax                 ; 26 89 47 32
    11740     mov ax, word [bp-018h]                    ; 8b 46 e8
    11741     mov word [es:bx+034h], ax                 ; 26 89 47 34
     11760    mov word [es:bx+034h], di                 ; 26 89 7f 34
    1174211761    mov al, byte [es:si+0019eh]               ; 26 8a 84 9e 01
    1174311762    mov ah, byte [bp-00ch]                    ; 8a 66 f4
     
    1175111770    mov dx, strict word 00075h                ; ba 75 00
    1175211771    mov ax, strict word 00040h                ; b8 40 00
    11753     call 01650h                               ; e8 d2 96
     11772    call 01650h                               ; e8 ab 96
    1175411773    db  0feh, 0c0h
    1175511774    ; inc al                                    ; fe c0
     
    1175711776    mov dx, strict word 00075h                ; ba 75 00
    1175811777    mov ax, strict word 00040h                ; b8 40 00
    11759     call 0165eh                               ; e8 d2 96
     11778    call 0165eh                               ; e8 ab 96
    1176011779    inc byte [bp-00ch]                        ; fe 46 f4
    11761     mov al, byte [bp-00ch]                    ; 8a 46 f4
    11762     mov es, [bp-01ah]                         ; 8e 46 e6
    11763     mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
    11764     jmp near 0802dh                           ; e9 90 00
     11780    jmp near 08041h                           ; e9 88 00
    1176511781    mov bx, 00da8h                            ; bb a8 0d
    1176611782    mov cx, ds                                ; 8c d9
    1176711783    mov ax, strict word 00004h                ; b8 04 00
    11768     call 01931h                               ; e8 89 99
    11769     push word [bp-010h]                       ; ff 76 f0
     11784    call 01931h                               ; e8 6d 99
     11785    push word [bp-00eh]                       ; ff 76 f2
    1177011786    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    1177111787    push ax                                   ; 50
    1177211788    push 00c4ah                               ; 68 4a 0c
    1177311789    push strict byte 00004h                   ; 6a 04
    11774     call 01972h                               ; e8 ba 99
     11790    call 01972h                               ; e8 9e 99
    1177511791    add sp, strict byte 00008h                ; 83 c4 08
    1177611792    mov dl, byte [bp-00ch]                    ; 8a 56 f4
    1177711793    add dl, 008h                              ; 80 c2 08
    11778     test byte [bp-00225h], 080h               ; f6 86 db fd 80
     11794    test byte [bp-00227h], 080h               ; f6 86 d9 fd 80
    1177911795    db  00fh, 095h, 0c0h
    1178011796    ; setne al                                  ; 0f 95 c0
     
    1178311799    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    1178411800    sal ax, 002h                              ; c1 e0 02
    11785     mov es, [bp-01ah]                         ; 8e 46 e6
     11801    mov es, [bp-018h]                         ; 8e 46 e8
    1178611802    mov bx, si                                ; 89 f3
    1178711803    add bx, ax                                ; 01 c3
    11788     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
     11804    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
    1178911805    mov word [es:bx+001d8h], ax               ; 26 89 87 d8 01
    11790     mov al, byte [bp-010h]                    ; 8a 46 f0
     11806    mov al, byte [bp-00eh]                    ; 8a 46 f2
    1179111807    mov byte [es:bx+001dah], al               ; 26 88 87 da 01
    1179211808    movzx ax, dl                              ; 0f b6 c2
     
    1180811824    inc byte [bp-00ch]                        ; fe 46 f4
    1180911825    mov al, byte [bp-00ch]                    ; 8a 46 f4
     11826    mov es, [bp-018h]                         ; 8e 46 e8
    1181011827    mov byte [es:si+001e8h], al               ; 26 88 84 e8 01
    11811     inc word [bp-010h]                        ; ff 46 f0
    11812     cmp word [bp-010h], strict byte 00010h    ; 83 7e f0 10
    11813     jnl short 0809eh                          ; 7d 68
    11814     mov byte [bp-026h], 012h                  ; c6 46 da 12
     11828    inc word [bp-00eh]                        ; ff 46 f2
     11829    cmp word [bp-00eh], strict byte 00010h    ; 83 7e f2 10
     11830    jnl short 080c9h                          ; 7d 74
     11831    mov byte [bp-028h], 012h                  ; c6 46 d8 12
    1181511832    xor al, al                                ; 30 c0
     11833    mov byte [bp-027h], al                    ; 88 46 d9
     11834    mov byte [bp-026h], al                    ; 88 46 da
    1181611835    mov byte [bp-025h], al                    ; 88 46 db
    11817     mov byte [bp-024h], al                    ; 88 46 dc
     11836    mov byte [bp-024h], 005h                  ; c6 46 dc 05
    1181811837    mov byte [bp-023h], al                    ; 88 46 dd
    11819     mov byte [bp-022h], 005h                  ; c6 46 de 05
    11820     mov byte [bp-021h], al                    ; 88 46 df
    1182111838    push dword 000000005h                     ; 66 6a 05
    11822     lea dx, [bp-00226h]                       ; 8d 96 da fd
     11839    lea dx, [bp-00228h]                       ; 8d 96 d8 fd
    1182311840    push SS                                   ; 16
    1182411841    push dx                                   ; 52
    1182511842    push strict byte 00006h                   ; 6a 06
    11826     movzx dx, byte [bp-010h]                  ; 0f b6 56 f0
     11843    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
    1182711844    mov cx, ss                                ; 8c d1
    11828     lea bx, [bp-026h]                         ; 8d 5e da
    11829     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
    11830     call 07885h                               ; e8 1e f8
     11845    lea bx, [bp-028h]                         ; 8d 5e d8
     11846    mov ax, word [bp-0022ah]                  ; 8b 86 d6 fd
     11847    call 07885h                               ; e8 ff f7
    1183111848    test al, al                               ; 84 c0
    11832     je short 08079h                           ; 74 0e
     11849    je short 08098h                           ; 74 0e
    1183311850    push 00b9ah                               ; 68 9a 0b
    1183411851    push 00bbah                               ; 68 ba 0b
    1183511852    push strict byte 00007h                   ; 6a 07
    11836     call 01972h                               ; e8 fc 98
     11853    call 01972h                               ; e8 dd 98
    1183711854    add sp, strict byte 00006h                ; 83 c4 06
    11838     test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
    11839     jne short 08089h                          ; 75 09
    11840     test byte [bp-00226h], 01fh               ; f6 86 da fd 1f
    11841     je near 07ce7h                            ; 0f 84 5e fc
    11842     test byte [bp-00226h], 0e0h               ; f6 86 da fd e0
    11843     jne short 0802dh                          ; 75 9d
    11844     mov al, byte [bp-00226h]                  ; 8a 86 da fd
     11855    mov es, [bp-018h]                         ; 8e 46 e8
     11856    mov al, byte [es:si+001e8h]               ; 26 8a 84 e8 01
     11857    mov byte [bp-00ch], al                    ; 88 46 f4
     11858    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
     11859    jne short 080b3h                          ; 75 09
     11860    test byte [bp-00228h], 01fh               ; f6 86 d8 fd 1f
     11861    je near 07d13h                            ; 0f 84 60 fc
     11862    test byte [bp-00228h], 0e0h               ; f6 86 d8 fd e0
     11863    jne short 08041h                          ; 75 87
     11864    mov al, byte [bp-00228h]                  ; 8a 86 d8 fd
    1184511865    and AL, strict byte 01fh                  ; 24 1f
    1184611866    cmp AL, strict byte 005h                  ; 3c 05
    11847     je near 07f9dh                            ; 0f 84 01 ff
    11848     jmp short 0802dh                          ; eb 8f
     11867    je near 07fb9h                            ; 0f 84 f3 fe
     11868    jmp near 08041h                           ; e9 78 ff
    1184911869    lea sp, [bp-00ah]                         ; 8d 66 f6
    1185011870    pop di                                    ; 5f
     
    1185511875    pop bp                                    ; 5d
    1185611876    retn                                      ; c3
    11857 _scsi_init:                                  ; 0xf80a8 LB 0x66
     11877_scsi_init:                                  ; 0xf80d3 LB 0x66
    1185811878    push bp                                   ; 55
    1185911879    mov bp, sp                                ; 89 e5
    1186011880    mov dx, strict word 0000eh                ; ba 0e 00
    1186111881    mov ax, strict word 00040h                ; b8 40 00
    11862     call 0166ch                               ; e8 b8 95
     11882    call 0166ch                               ; e8 8d 95
    1186311883    mov bx, 00122h                            ; bb 22 01
    1186411884    mov es, ax                                ; 8e c0
     
    1187111891    ; sub ah, ah                                ; 2a e4
    1187211892    cmp AL, strict byte 055h                  ; 3c 55
    11873     jne short 080d8h                          ; 75 0c
     11893    jne short 08103h                          ; 75 0c
    1187411894    xor al, al                                ; 30 c0
    1187511895    mov dx, 00433h                            ; ba 33 04
    1187611896    out DX, AL                                ; ee
    1187711897    mov ax, 00430h                            ; b8 30 04
    11878     call 07cc3h                               ; e8 eb fb
     11898    call 07cefh                               ; e8 ec fb
    1187911899    mov AL, strict byte 055h                  ; b0 55
    1188011900    mov dx, 00436h                            ; ba 36 04
     
    1188411904    ; sub ah, ah                                ; 2a e4
    1188511905    cmp AL, strict byte 055h                  ; 3c 55
    11886     jne short 080f1h                          ; 75 0c
     11906    jne short 0811ch                          ; 75 0c
    1188711907    xor al, al                                ; 30 c0
    1188811908    mov dx, 00437h                            ; ba 37 04
    1188911909    out DX, AL                                ; ee
    1189011910    mov ax, 00434h                            ; b8 34 04
    11891     call 07cc3h                               ; e8 d2 fb
     11911    call 07cefh                               ; e8 d3 fb
    1189211912    mov AL, strict byte 055h                  ; b0 55
    1189311913    mov dx, 0043ah                            ; ba 3a 04
     
    1189711917    ; sub ah, ah                                ; 2a e4
    1189811918    cmp AL, strict byte 055h                  ; 3c 55
    11899     jne short 0810ah                          ; 75 0c
     11919    jne short 08135h                          ; 75 0c
    1190011920    xor al, al                                ; 30 c0
    1190111921    mov dx, 0043bh                            ; ba 3b 04
    1190211922    out DX, AL                                ; ee
    1190311923    mov ax, 00438h                            ; b8 38 04
    11904     call 07cc3h                               ; e8 b9 fb
     11924    call 07cefh                               ; e8 ba fb
    1190511925    mov sp, bp                                ; 89 ec
    1190611926    pop bp                                    ; 5d
    1190711927    retn                                      ; c3
    11908 high_bits_save_:                             ; 0xf810e LB 0x17
     11928high_bits_save_:                             ; 0xf8139 LB 0x17
    1190911929    push bp                                   ; 55
    1191011930    mov bp, sp                                ; 89 e5
     
    1191811938    pop bp                                    ; 5d
    1191911939    retn                                      ; c3
    11920 high_bits_restore_:                          ; 0xf8125 LB 0x17
     11940high_bits_restore_:                          ; 0xf8150 LB 0x17
    1192111941    push bp                                   ; 55
    1192211942    mov bp, sp                                ; 89 e5
     
    1193011950    pop bp                                    ; 5d
    1193111951    retn                                      ; c3
    11932 ahci_ctrl_set_bits_:                         ; 0xf813c LB 0x43
     11952ahci_ctrl_set_bits_:                         ; 0xf8167 LB 0x43
    1193311953    push bp                                   ; 55
    1193411954    mov bp, sp                                ; 89 e5
     
    1196811988    pop bp                                    ; 5d
    1196911989    retn                                      ; c3
    11970 ahci_ctrl_clear_bits_:                       ; 0xf817f LB 0x47
     11990ahci_ctrl_clear_bits_:                       ; 0xf81aa LB 0x47
    1197111991    push bp                                   ; 55
    1197211992    mov bp, sp                                ; 89 e5
     
    1200812028    pop bp                                    ; 5d
    1200912029    retn                                      ; c3
    12010 ahci_ctrl_is_bit_set_:                       ; 0xf81c6 LB 0x39
     12030ahci_ctrl_is_bit_set_:                       ; 0xf81f1 LB 0x39
    1201112031    push bp                                   ; 55
    1201212032    mov bp, sp                                ; 89 e5
     
    1203012050    xchg dx, ax                               ; 92
    1203112051    test dx, di                               ; 85 fa
    12032     jne short 081f2h                          ; 75 04
     12052    jne short 0821dh                          ; 75 04
    1203312053    test ax, bx                               ; 85 d8
    12034     je short 081f6h                           ; 74 04
     12054    je short 08221h                           ; 74 04
    1203512055    mov AL, strict byte 001h                  ; b0 01
    12036     jmp short 081f8h                          ; eb 02
     12056    jmp short 08223h                          ; eb 02
    1203712057    xor al, al                                ; 30 c0
    1203812058    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1204112061    pop bp                                    ; 5d
    1204212062    retn                                      ; c3
    12043 ahci_ctrl_extract_bits_:                     ; 0xf81ff LB 0x1b
     12063ahci_ctrl_extract_bits_:                     ; 0xf822a LB 0x1b
    1204412064    push si                                   ; 56
    1204512065    push bp                                   ; 55
     
    1204912069    and dx, cx                                ; 21 ca
    1205012070    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
    12051     jcxz 08215h                               ; e3 06
     12071    jcxz 08240h                               ; e3 06
    1205212072    shr dx, 1                                 ; d1 ea
    1205312073    rcr ax, 1                                 ; d1 d8
    12054     loop 0820fh                               ; e2 fa
     12074    loop 0823ah                               ; e2 fa
    1205512075    pop bp                                    ; 5d
    1205612076    pop si                                    ; 5e
    1205712077    retn 00002h                               ; c2 02 00
    12058 ahci_addr_to_phys_:                          ; 0xf821a LB 0x1e
     12078ahci_addr_to_phys_:                          ; 0xf8245 LB 0x1e
    1205912079    push bx                                   ; 53
    1206012080    push cx                                   ; 51
     
    1206712087    sal ax, 1                                 ; d1 e0
    1206812088    rcl dx, 1                                 ; d1 d2
    12069     loop 08228h                               ; e2 fa
     12089    loop 08253h                               ; e2 fa
    1207012090    xor cx, cx                                ; 31 c9
    1207112091    add ax, bx                                ; 01 d8
     
    1207512095    pop bx                                    ; 5b
    1207612096    retn                                      ; c3
    12077 ahci_port_cmd_sync_:                         ; 0xf8238 LB 0xd5
     12097ahci_port_cmd_sync_:                         ; 0xf8263 LB 0xd5
    1207812098    push bp                                   ; 55
    1207912099    mov bp, sp                                ; 89 e5
     
    1208912109    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
    1209012110    cmp AL, strict byte 0ffh                  ; 3c ff
    12091     je near 08305h                            ; 0f 84 aa 00
     12111    je near 08330h                            ; 0f 84 aa 00
    1209212112    movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
    1209312113    xor dx, dx                                ; 31 d2
     
    1210112121    lea ax, [si+00080h]                       ; 8d 84 80 00
    1210212122    mov dx, es                                ; 8c c2
    12103     call 0821ah                               ; e8 96 ff
     12123    call 08245h                               ; e8 96 ff
    1210412124    mov es, [bp-00ah]                         ; 8e 46 f6
    1210512125    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1211112131    xor cx, cx                                ; 31 c9
    1211212132    mov ax, di                                ; 89 f8
    12113     call 0813ch                               ; e8 98 fe
     12133    call 08167h                               ; e8 98 fe
    1211412134    lea ax, [si+00138h]                       ; 8d 84 38 01
    1211512135    cwd                                       ; 99
     
    1213812158    mov dx, si                                ; 89 f2
    1213912159    mov ax, di                                ; 89 f8
    12140     call 081c6h                               ; e8 e2 fe
     12160    call 081f1h                               ; e8 e2 fe
    1214112161    test al, al                               ; 84 c0
    12142     je short 082c7h                           ; 74 df
     12162    je short 082f2h                           ; 74 df
    1214312163    mov bx, strict word 00001h                ; bb 01 00
    1214412164    xor cx, cx                                ; 31 c9
    1214512165    mov dx, si                                ; 89 f2
    1214612166    mov ax, di                                ; 89 f8
    12147     call 0813ch                               ; e8 48 fe
     12167    call 08167h                               ; e8 48 fe
    1214812168    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1214912169    add dx, 00118h                            ; 81 c2 18 01
     
    1215112171    xor cx, cx                                ; 31 c9
    1215212172    mov ax, di                                ; 89 f8
    12153     call 0817fh                               ; e8 7a fe
     12173    call 081aah                               ; e8 7a fe
    1215412174    lea sp, [bp-006h]                         ; 8d 66 fa
    1215512175    pop di                                    ; 5f
     
    1215812178    pop bp                                    ; 5d
    1215912179    retn                                      ; c3
    12160 ahci_cmd_data_:                              ; 0xf830d LB 0x1ca
     12180ahci_cmd_data_:                              ; 0xf8338 LB 0x1e4
    1216112181    push bp                                   ; 55
    1216212182    mov bp, sp                                ; 89 e5
     
    1216612186    sub sp, strict byte 00010h                ; 83 ec 10
    1216712187    mov di, ax                                ; 89 c7
    12168     mov word [bp-012h], dx                    ; 89 56 ee
     12188    mov word [bp-00ch], dx                    ; 89 56 f4
    1216912189    mov byte [bp-008h], bl                    ; 88 5e f8
    1217012190    xor si, si                                ; 31 f6
     
    1217212192    mov ax, word [es:di+001eeh]               ; 26 8b 85 ee 01
    1217312193    mov word [bp-00ah], ax                    ; 89 46 f6
    12174     mov word [bp-00eh], si                    ; 89 76 f2
    12175     mov word [bp-00ch], ax                    ; 89 46 f4
     12194    mov word [bp-010h], si                    ; 89 76 f0
     12195    mov word [bp-00eh], ax                    ; 89 46 f2
    1217612196    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
    12177     mov word [bp-010h], ax                    ; 89 46 f0
     12197    mov word [bp-016h], ax                    ; 89 46 ea
    1217812198    mov ax, word [es:di+00ch]                 ; 26 8b 45 0c
    12179     mov word [bp-016h], ax                    ; 89 46 ea
     12199    mov word [bp-012h], ax                    ; 89 46 ee
    1218012200    mov cx, strict word 00040h                ; b9 40 00
    1218112201    xor bx, bx                                ; 31 db
    1218212202    mov ax, 00080h                            ; b8 80 00
    1218312203    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12184     call 0975ah                               ; e8 0e 14
     12204    call 097aah                               ; e8 33 14
    1218512205    mov es, [bp-00ah]                         ; 8e 46 f6
    1218612206    mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
     
    1218812208    mov byte [es:si+00082h], al               ; 26 88 84 82 00
    1218912209    mov byte [es:si+00083h], 000h             ; 26 c6 84 83 00 00
    12190     mov es, [bp-012h]                         ; 8e 46 ee
     12210    mov es, [bp-00ch]                         ; 8e 46 f4
    1219112211    mov al, byte [es:di]                      ; 26 8a 05
    1219212212    mov es, [bp-00ah]                         ; 8e 46 f6
    1219312213    mov byte [es:si+00084h], al               ; 26 88 84 84 00
    12194     mov es, [bp-012h]                         ; 8e 46 ee
     12214    mov es, [bp-00ch]                         ; 8e 46 f4
    1219512215    mov ax, word [es:di]                      ; 26 8b 05
    1219612216    mov bx, word [es:di+002h]                 ; 26 8b 5d 02
     
    1219812218    shr bx, 1                                 ; d1 eb
    1219912219    rcr ax, 1                                 ; d1 d8
    12200     loop 0837fh                               ; e2 fa
     12220    loop 083aah                               ; e2 fa
    1220112221    mov es, [bp-00ah]                         ; 8e 46 f6
    1220212222    mov byte [es:si+00085h], al               ; 26 88 84 85 00
    12203     mov es, [bp-012h]                         ; 8e 46 ee
     12223    mov es, [bp-00ch]                         ; 8e 46 f4
    1220412224    mov ax, word [es:di+002h]                 ; 26 8b 45 02
    1220512225    mov es, [bp-00ah]                         ; 8e 46 f6
    1220612226    mov byte [es:si+00086h], al               ; 26 88 84 86 00
    1220712227    mov byte [es:si+00087h], 040h             ; 26 c6 84 87 00 40
    12208     mov es, [bp-012h]                         ; 8e 46 ee
     12228    mov es, [bp-00ch]                         ; 8e 46 f4
    1220912229    mov ax, word [es:di+002h]                 ; 26 8b 45 02
    1221012230    shr ax, 008h                              ; c1 e8 08
     
    1221312233    mov word [es:si+00089h], strict word 00000h ; 26 c7 84 89 00 00 00
    1221412234    mov byte [es:si+0008bh], 000h             ; 26 c6 84 8b 00 00
    12215     mov al, byte [bp-010h]                    ; 8a 46 f0
     12235    mov al, byte [bp-016h]                    ; 8a 46 ea
    1221612236    mov byte [es:si+0008ch], al               ; 26 88 84 8c 00
    12217     mov ax, word [bp-010h]                    ; 8b 46 f0
     12237    mov ax, word [bp-016h]                    ; 8b 46 ea
    1221812238    shr ax, 008h                              ; c1 e8 08
    1221912239    mov byte [es:si+0008dh], al               ; 26 88 84 8d 00
    1222012240    mov word [es:si+00276h], strict word 00010h ; 26 c7 84 76 02 10 00
    12221     mov ax, word [bp-010h]                    ; 8b 46 f0
     12241    mov ax, word [bp-016h]                    ; 8b 46 ea
    1222212242    xor dx, dx                                ; 31 d2
    12223     mov bx, word [bp-016h]                    ; 8b 5e ea
     12243    mov bx, word [bp-012h]                    ; 8b 5e ee
    1222412244    xor cx, cx                                ; 31 c9
    12225     call 09729h                               ; e8 41 13
     12245    call 09779h                               ; e8 66 13
    1222612246    push dx                                   ; 52
    1222712247    push ax                                   ; 50
    12228     mov es, [bp-012h]                         ; 8e 46 ee
     12248    mov es, [bp-00ch]                         ; 8e 46 f4
    1222912249    mov bx, word [es:di+004h]                 ; 26 8b 5d 04
    1223012250    mov cx, word [es:di+006h]                 ; 26 8b 4d 06
    1223112251    mov ax, 0026ah                            ; b8 6a 02
    1223212252    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12233     call 09642h                               ; e8 44 12
     12253    call 09688h                               ; e8 5f 12
    1223412254    mov es, [bp-00ah]                         ; 8e 46 f6
    1223512255    movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
     
    1224412264    mov dx, word [bp-014h]                    ; 8b 56 ec
    1224512265    mov word [es:bx+0010eh], dx               ; 26 89 97 0e 01
    12246     mov cx, word [es:si+0027ah]               ; 26 8b 8c 7a 02
    12247     mov dx, word [es:si+0027ch]               ; 26 8b 94 7c 02
    12248     mov word [es:bx+00100h], cx               ; 26 89 8f 00 01
    12249     mov word [es:bx+00102h], dx               ; 26 89 97 02 01
     12266    mov dx, word [es:si+0027ah]               ; 26 8b 94 7a 02
     12267    mov cx, word [es:si+0027ch]               ; 26 8b 8c 7c 02
     12268    mov word [es:bx+00100h], dx               ; 26 89 97 00 01
     12269    mov word [es:bx+00102h], cx               ; 26 89 8f 02 01
    1225012270    inc ax                                    ; 40
    12251     mov es, [bp-012h]                         ; 8e 46 ee
     12271    mov es, [bp-00ch]                         ; 8e 46 f4
    1225212272    cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
    12253     je short 08477h                           ; 74 2c
     12273    je short 084a2h                           ; 74 2c
    1225412274    mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
    1225512275    dec dx                                    ; 4a
    12256     mov di, ax                                ; 89 c7
    12257     sal di, 004h                              ; c1 e7 04
     12276    mov bx, ax                                ; 89 c3
     12277    sal bx, 004h                              ; c1 e3 04
    1225812278    mov es, [bp-00ah]                         ; 8e 46 f6
    12259     mov word [es:di+0010ch], dx               ; 26 89 95 0c 01
    12260     mov word [es:di+0010eh], si               ; 26 89 b5 0e 01
     12279    mov word [es:bx+0010ch], dx               ; 26 89 97 0c 01
     12280    mov word [es:bx+0010eh], si               ; 26 89 b7 0e 01
    1226112281    mov dx, word [es:si+00264h]               ; 26 8b 94 64 02
    12262     mov bx, word [es:si+00266h]               ; 26 8b 9c 66 02
    12263     mov word [es:di+00100h], dx               ; 26 89 95 00 01
    12264     mov word [es:di+00102h], bx               ; 26 89 9d 02 01
     12282    mov cx, word [es:si+00266h]               ; 26 8b 8c 66 02
     12283    mov word [es:bx+00100h], dx               ; 26 89 97 00 01
     12284    mov word [es:bx+00102h], cx               ; 26 89 8f 02 01
    1226512285    inc ax                                    ; 40
    12266     les bx, [bp-00eh]                         ; c4 5e f2
     12286    les bx, [bp-010h]                         ; c4 5e f0
    1226712287    mov byte [es:bx+00263h], al               ; 26 88 87 63 02
    1226812288    xor ax, ax                                ; 31 c0
    12269     les bx, [bp-00eh]                         ; c4 5e f2
     12289    les bx, [bp-010h]                         ; c4 5e f0
    1227012290    movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
    1227112291    cmp ax, dx                                ; 39 d0
    12272     jnc short 08491h                          ; 73 03
     12292    jnc short 084bch                          ; 73 03
    1227312293    inc ax                                    ; 40
    12274     jmp short 08481h                          ; eb f0
     12294    jmp short 084ach                          ; eb f0
    1227512295    mov al, byte [bp-008h]                    ; 8a 46 f8
    1227612296    cmp AL, strict byte 035h                  ; 3c 35
    12277     jne short 0849eh                          ; 75 06
     12297    jne short 084c9h                          ; 75 06
    1227812298    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    12279     jmp short 084b2h                          ; eb 14
     12299    jmp short 084ddh                          ; eb 14
    1228012300    cmp AL, strict byte 0a0h                  ; 3c a0
    12281     jne short 084aeh                          ; 75 0c
     12301    jne short 084d9h                          ; 75 0c
    1228212302    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1228312303    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    12284     jmp short 084b2h                          ; eb 04
     12304    jmp short 084ddh                          ; eb 04
    1228512305    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1228612306    or byte [bp-008h], 005h                   ; 80 4e f8 05
    1228712307    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    12288     mov ax, word [bp-00eh]                    ; 8b 46 f2
    12289     mov dx, word [bp-00ch]                    ; 8b 56 f4
    12290     call 08238h                               ; e8 75 fd
    12291     mov ax, word [bp-00eh]                    ; 8b 46 f2
     12308    mov ax, word [bp-010h]                    ; 8b 46 f0
     12309    mov dx, word [bp-00eh]                    ; 8b 56 f2
     12310    call 08263h                               ; e8 75 fd
     12311    mov cx, word [bp-00eh]                    ; 8b 4e f2
     12312    mov bx, word [bp-010h]                    ; 8b 5e f0
     12313    add bx, 00240h                            ; 81 c3 40 02
     12314    mov ax, word [bp-010h]                    ; 8b 46 f0
    1229212315    add ax, 0026ah                            ; 05 6a 02
    12293     mov dx, word [bp-00ch]                    ; 8b 56 f4
    12294     call 096bbh                               ; e8 ec 11
     12316    mov dx, cx                                ; 89 ca
     12317    call 09701h                               ; e8 fe 11
     12318    mov es, cx                                ; 8e c1
     12319    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     12320    test al, al                               ; 84 c0
     12321    je short 08512h                           ; 74 05
     12322    mov ax, strict word 00004h                ; b8 04 00
     12323    jmp short 08514h                          ; eb 02
     12324    xor ah, ah                                ; 30 e4
    1229512325    lea sp, [bp-006h]                         ; 8d 66 fa
    1229612326    pop di                                    ; 5f
     
    1229912329    pop bp                                    ; 5d
    1230012330    retn                                      ; c3
    12301 ahci_port_deinit_current_:                   ; 0xf84d7 LB 0x144
     12331ahci_port_deinit_current_:                   ; 0xf851c LB 0x144
    1230212332    push bp                                   ; 55
    1230312333    mov bp, sp                                ; 89 e5
     
    1231412344    mov byte [bp-00ah], al                    ; 88 46 f6
    1231512345    cmp AL, strict byte 0ffh                  ; 3c ff
    12316     je near 08612h                            ; 0f 84 17 01
     12346    je near 08657h                            ; 0f 84 17 01
    1231712347    movzx dx, al                              ; 0f b6 d0
    1231812348    sal dx, 007h                              ; c1 e2 07
     
    1232112351    xor cx, cx                                ; 31 c9
    1232212352    mov ax, si                                ; 89 f0
    12323     call 0817fh                               ; e8 70 fc
     12353    call 081aah                               ; e8 56 fc
    1232412354    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1232512355    sal ax, 007h                              ; c1 e0 07
     
    1233012360    xor cx, cx                                ; 31 c9
    1233112361    mov ax, si                                ; 89 f0
    12332     call 081c6h                               ; e8 9d fc
     12362    call 081f1h                               ; e8 83 fc
    1233312363    cmp AL, strict byte 001h                  ; 3c 01
    12334     je short 0850fh                           ; 74 e2
     12364    je short 08554h                           ; 74 e2
    1233512365    mov cx, strict word 00020h                ; b9 20 00
    1233612366    xor bx, bx                                ; 31 db
    1233712367    mov ax, di                                ; 89 f8
    1233812368    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12339     call 0975ah                               ; e8 20 12
     12369    call 097aah                               ; e8 2b 12
    1234012370    lea ax, [di+00080h]                       ; 8d 85 80 00
    1234112371    mov cx, strict word 00040h                ; b9 40 00
    1234212372    xor bx, bx                                ; 31 db
    1234312373    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12344     call 0975ah                               ; e8 11 12
     12374    call 097aah                               ; e8 1c 12
    1234512375    lea ax, [di+00200h]                       ; 8d 85 00 02
    1234612376    mov cx, strict word 00060h                ; b9 60 00
    1234712377    xor bx, bx                                ; 31 db
    1234812378    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12349     call 0975ah                               ; e8 02 12
     12379    call 097aah                               ; e8 0d 12
    1235012380    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1235112381    add ax, 00108h                            ; 05 08 01
     
    1244912479    pop bp                                    ; 5d
    1245012480    retn                                      ; c3
    12451 ahci_port_init_:                             ; 0xf861b LB 0x206
     12481ahci_port_init_:                             ; 0xf8660 LB 0x206
    1245212482    push bp                                   ; 55
    1245312483    mov bp, sp                                ; 89 e5
     
    1245912489    mov word [bp-00ah], dx                    ; 89 56 f6
    1246012490    mov byte [bp-008h], bl                    ; 88 5e f8
    12461     call 084d7h                               ; e8 a8 fe
     12491    call 0851ch                               ; e8 a8 fe
    1246212492    movzx dx, bl                              ; 0f b6 d3
    1246312493    sal dx, 007h                              ; c1 e2 07
     
    1246712497    mov bx, strict word 00011h                ; bb 11 00
    1246812498    xor cx, cx                                ; 31 c9
    12469     call 0817fh                               ; e8 36 fb
     12499    call 081aah                               ; e8 1c fb
    1247012500    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
    1247112501    sal di, 007h                              ; c1 e7 07
     
    1247512505    mov bx, 0c011h                            ; bb 11 c0
    1247612506    xor cx, cx                                ; 31 c9
    12477     call 081c6h                               ; e8 62 fb
     12507    call 081f1h                               ; e8 48 fb
    1247812508    cmp AL, strict byte 001h                  ; 3c 01
    12479     je short 08649h                           ; 74 e1
     12509    je short 0868eh                           ; 74 e1
    1248012510    mov cx, strict word 00020h                ; b9 20 00
    1248112511    xor bx, bx                                ; 31 db
    1248212512    mov ax, si                                ; 89 f0
    1248312513    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12484     call 0975ah                               ; e8 e5 10
     12514    call 097aah                               ; e8 f0 10
    1248512515    lea ax, [si+00080h]                       ; 8d 84 80 00
    1248612516    mov cx, strict word 00040h                ; b9 40 00
    1248712517    xor bx, bx                                ; 31 db
    1248812518    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12489     call 0975ah                               ; e8 d6 10
     12519    call 097aah                               ; e8 e1 10
    1249012520    mov ax, si                                ; 89 f0
    1249112521    add ah, 002h                              ; 80 c4 02
     
    1249412524    xor bx, bx                                ; 31 db
    1249512525    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12496     call 0975ah                               ; e8 c3 10
     12526    call 097aah                               ; e8 ce 10
    1249712527    lea ax, [di+00108h]                       ; 8d 85 08 01
    1249812528    cwd                                       ; 99
     
    1250812538    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1250912539    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12510     call 0821ah                               ; e8 60 fb
     12540    call 08245h                               ; e8 46 fb
    1251112541    mov es, [bp-00ah]                         ; 8e 46 f6
    1251212542    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1255312583    mov ax, si                                ; 89 f0
    1255412584    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12555     call 0821ah                               ; e8 f4 fa
     12585    call 08245h                               ; e8 da fa
    1255612586    mov es, [bp-00ah]                         ; 8e 46 f6
    1255712587    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1265812688    pop bp                                    ; 5d
    1265912689    retn                                      ; c3
    12660 @ahci_read_sectors:                          ; 0xf8821 LB 0x94
     12690@ahci_read_sectors:                          ; 0xf8866 LB 0x93
    1266112691    push bp                                   ; 55
    1266212692    mov bp, sp                                ; 89 e5
    1266312693    push si                                   ; 56
    1266412694    push di                                   ; 57
    12665     les di, [bp+004h]                         ; c4 7e 04
    12666     movzx di, byte [es:di+008h]               ; 26 0f b6 7d 08
    12667     sub di, strict byte 0000ch                ; 83 ef 0c
    12668     cmp di, strict byte 00004h                ; 83 ff 04
    12669     jbe short 08845h                          ; 76 0f
    12670     push di                                   ; 57
     12695    les bx, [bp+004h]                         ; c4 5e 04
     12696    movzx bx, byte [es:bx+008h]               ; 26 0f b6 5f 08
     12697    sub bx, strict byte 0000ch                ; 83 eb 0c
     12698    cmp bx, strict byte 00004h                ; 83 fb 04
     12699    jbe short 0888ah                          ; 76 0f
     12700    push bx                                   ; 53
    1267112701    push 00c66h                               ; 68 66 0c
    1267212702    push 00c78h                               ; 68 78 0c
    1267312703    push strict byte 00007h                   ; 6a 07
    12674     call 01972h                               ; e8 30 91
     12704    call 01972h                               ; e8 eb 90
    1267512705    add sp, strict byte 00008h                ; 83 c4 08
    12676     les bx, [bp+004h]                         ; c4 5e 04
    12677     mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
    12678     xor ax, ax                                ; 31 c0
    12679     call 0810eh                               ; e8 bc f8
    12680     mov es, [bp+006h]                         ; 8e 46 06
    12681     add di, bx                                ; 01 df
    12682     movzx bx, byte [es:di+001e9h]             ; 26 0f b6 9d e9 01
    12683     mov di, word [bp+004h]                    ; 8b 7e 04
     12706    les di, [bp+004h]                         ; c4 7e 04
    1268412707    mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
    1268512708    xor ax, ax                                ; 31 c0
    12686     call 0861bh                               ; e8 b1 fd
     12709    call 08139h                               ; e8 a2 f8
     12710    mov es, [bp+006h]                         ; 8e 46 06
     12711    add bx, di                                ; 01 fb
     12712    movzx bx, byte [es:bx+001e9h]             ; 26 0f b6 9f e9 01
     12713    mov si, di                                ; 89 fe
     12714    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
     12715    xor ax, ax                                ; 31 c0
     12716    call 08660h                               ; e8 b2 fd
    1268712717    mov bx, strict word 00025h                ; bb 25 00
    1268812718    mov ax, di                                ; 89 f8
    1268912719    mov dx, word [bp+006h]                    ; 8b 56 06
    12690     call 0830dh                               ; e8 98 fa
     12720    call 08338h                               ; e8 7f fa
     12721    mov bx, ax                                ; 89 c3
    1269112722    mov es, [bp+006h]                         ; 8e 46 06
    12692     mov bx, di                                ; 89 fb
    12693     mov ax, word [es:bx+00ah]                 ; 26 8b 47 0a
    12694     mov word [es:bx+014h], ax                 ; 26 89 47 14
     12723    mov ax, word [es:di+00ah]                 ; 26 8b 45 0a
     12724    mov word [es:si+014h], ax                 ; 26 89 44 14
    1269512725    mov cx, ax                                ; 89 c1
    1269612726    sal cx, 009h                              ; c1 e1 09
    1269712727    shr cx, 1                                 ; d1 e9
    1269812728    mov di, word [es:di+004h]                 ; 26 8b 7d 04
    12699     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     12729    mov ax, word [es:si+006h]                 ; 26 8b 44 06
    1270012730    mov si, di                                ; 89 fe
    1270112731    mov dx, ax                                ; 89 c2
     
    1270512735    rep movsw                                 ; f3 a5
    1270612736    pop DS                                    ; 1f
    12707     mov es, [bp+006h]                         ; 8e 46 06
    12708     mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
     12737    les si, [bp+004h]                         ; c4 76 04
     12738    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1270912739    xor ax, ax                                ; 31 c0
    12710     call 08125h                               ; e8 7b f8
    12711     xor ax, ax                                ; 31 c0
     12740    call 08150h                               ; e8 62 f8
     12741    mov ax, bx                                ; 89 d8
    1271212742    lea sp, [bp-004h]                         ; 8d 66 fc
    1271312743    pop di                                    ; 5f
     
    1271512745    pop bp                                    ; 5d
    1271612746    retn 00004h                               ; c2 04 00
    12717 @ahci_write_sectors:                         ; 0xf88b5 LB 0x70
     12747@ahci_write_sectors:                         ; 0xf88f9 LB 0x72
    1271812748    push bp                                   ; 55
    1271912749    mov bp, sp                                ; 89 e5
     
    1272512755    sub bx, strict byte 0000ch                ; 83 eb 0c
    1272612756    cmp bx, strict byte 00004h                ; 83 fb 04
    12727     jbe short 088ddh                          ; 76 0f
     12757    jbe short 08921h                          ; 76 0f
    1272812758    push bx                                   ; 53
    1272912759    push 00c97h                               ; 68 97 0c
    1273012760    push 00c78h                               ; 68 78 0c
    1273112761    push strict byte 00007h                   ; 6a 07
    12732     call 01972h                               ; e8 98 90
     12762    call 01972h                               ; e8 54 90
    1273312763    add sp, strict byte 00008h                ; 83 c4 08
    1273412764    mov es, cx                                ; 8e c1
    1273512765    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1273612766    xor ax, ax                                ; 31 c0
    12737     call 0810eh                               ; e8 25 f8
     12767    call 08139h                               ; e8 0c f8
    1273812768    mov es, cx                                ; 8e c1
    1273912769    add bx, si                                ; 01 f3
     
    1274112771    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1274212772    xor ax, ax                                ; 31 c0
    12743     call 0861bh                               ; e8 1e fd
     12773    call 08660h                               ; e8 1f fd
    1274412774    mov bx, strict word 00035h                ; bb 35 00
    1274512775    mov ax, si                                ; 89 f0
    1274612776    mov dx, cx                                ; 89 ca
    12747     call 0830dh                               ; e8 06 fa
     12777    call 08338h                               ; e8 ed f9
     12778    mov bx, ax                                ; 89 c3
    1274812779    mov es, cx                                ; 8e c1
    1274912780    mov dx, word [es:si+00ah]                 ; 26 8b 54 0a
     
    1275112782    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1275212783    xor ax, ax                                ; 31 c0
    12753     call 08125h                               ; e8 0a f8
    12754     xor ax, ax                                ; 31 c0
     12784    call 08150h                               ; e8 ef f7
     12785    mov ax, bx                                ; 89 d8
    1275512786    lea sp, [bp-002h]                         ; 8d 66 fe
    1275612787    pop si                                    ; 5e
    1275712788    pop bp                                    ; 5d
    1275812789    retn 00004h                               ; c2 04 00
    12759 ahci_cmd_packet_:                            ; 0xf8925 LB 0x173
     12790ahci_cmd_packet_:                            ; 0xf896b LB 0x173
    1276012791    push bp                                   ; 55
    1276112792    mov bp, sp                                ; 89 e5
     
    1276912800    mov dx, strict word 0000eh                ; ba 0e 00
    1277012801    mov ax, strict word 00040h                ; b8 40 00
    12771     call 0166ch                               ; e8 2c 8d
     12802    call 0166ch                               ; e8 e6 8c
    1277212803    mov si, 00122h                            ; be 22 01
    1277312804    mov word [bp-008h], ax                    ; 89 46 f8
    1277412805    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    12775     jne short 0896bh                          ; 75 1f
     12806    jne short 089b1h                          ; 75 1f
    1277612807    mov bx, 00da8h                            ; bb a8 0d
    1277712808    mov cx, ds                                ; 8c d9
    1277812809    mov ax, strict word 00004h                ; b8 04 00
    12779     call 01931h                               ; e8 da 8f
     12810    call 01931h                               ; e8 94 8f
    1278012811    push 00caah                               ; 68 aa 0c
    1278112812    push 00cbah                               ; 68 ba 0c
    1278212813    push strict byte 00004h                   ; 6a 04
    12783     call 01972h                               ; e8 10 90
     12814    call 01972h                               ; e8 ca 8f
    1278412815    add sp, strict byte 00006h                ; 83 c4 06
    1278512816    mov ax, strict word 00001h                ; b8 01 00
    12786     jmp near 08a8fh                           ; e9 24 01
     12817    jmp near 08ad5h                           ; e9 24 01
    1278712818    test byte [bp+004h], 001h                 ; f6 46 04 01
    12788     jne short 08965h                          ; 75 f4
     12819    jne short 089abh                          ; 75 f4
    1278912820    mov ax, word [bp+006h]                    ; 8b 46 06
    1279012821    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1279212823    sal ax, 1                                 ; d1 e0
    1279312824    rcl dx, 1                                 ; d1 d2
    12794     loop 0897ah                               ; e2 fa
     12825    loop 089c0h                               ; e2 fa
    1279512826    mov es, [bp-008h]                         ; 8e 46 f8
    1279612827    mov word [es:si], ax                      ; 26 89 04
     
    1280412835    mov dx, word [bp+008h]                    ; 8b 56 08
    1280512836    xor cx, cx                                ; 31 c9
    12806     call 096f0h                               ; e8 49 0d
     12837    call 09740h                               ; e8 53 0d
    1280712838    mov word [es:si+00ah], ax                 ; 26 89 44 0a
    1280812839    xor di, di                                ; 31 ff
     
    1281412845    xor ax, ax                                ; 31 c0
    1281512846    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12816     call 0810eh                               ; e8 47 f7
     12847    call 08139h                               ; e8 2c f7
    1281712848    mov es, [bp-008h]                         ; 8e 46 f8
    1281812849    mov bx, word [bp-014h]                    ; 8b 5e ec
     
    1282112852    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1282212853    xor ax, ax                                ; 31 c0
    12823     call 0861bh                               ; e8 3c fc
     12854    call 08660h                               ; e8 3b fc
    1282412855    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    1282512856    push ax                                   ; 50
     
    1282812859    mov ax, 000c0h                            ; b8 c0 00
    1282912860    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12830     call 09767h                               ; e8 74 0d
     12861    call 097b7h                               ; e8 7e 0d
    1283112862    mov es, [bp-008h]                         ; 8e 46 f8
    1283212863    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1283512866    mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
    1283612867    test ax, ax                               ; 85 c0
    12837     je short 08a31h                           ; 74 27
     12868    je short 08a77h                           ; 74 27
    1283812869    dec ax                                    ; 48
    1283912870    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1284812879    mov ax, si                                ; 89 f0
    1284912880    mov dx, word [bp-008h]                    ; 8b 56 f8
    12850     call 0830dh                               ; e8 d1 f8
     12881    call 08338h                               ; e8 b6 f8
    1285112882    les bx, [bp-00eh]                         ; c4 5e f2
    1285212883    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     
    1287112902    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1287212903    mov dx, word [bp-00ch]                    ; 8b 56 f4
    12873     call 08125h                               ; e8 aa f6
     12904    call 08150h                               ; e8 8f f6
    1287412905    les bx, [bp-00eh]                         ; c4 5e f2
    1287512906    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1287612907    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    12877     jne short 08a8dh                          ; 75 05
     12908    jne short 08ad3h                          ; 75 05
    1287812909    mov ax, strict word 00004h                ; b8 04 00
    12879     jmp short 08a8fh                          ; eb 02
     12910    jmp short 08ad5h                          ; eb 02
    1288012911    xor ax, ax                                ; 31 c0
    1288112912    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1288412915    pop bp                                    ; 5d
    1288512916    retn 0000ch                               ; c2 0c 00
    12886 ahci_port_detect_device_:                    ; 0xf8a98 LB 0x451
     12917ahci_port_detect_device_:                    ; 0xf8ade LB 0x451
    1288712918    push bp                                   ; 55
    1288812919    mov bp, sp                                ; 89 e5
     
    1289612927    movzx di, bl                              ; 0f b6 fb
    1289712928    mov bx, di                                ; 89 fb
    12898     call 0861bh                               ; e8 69 fb
     12929    call 08660h                               ; e8 68 fb
    1289912930    mov dx, strict word 0000eh                ; ba 0e 00
    1290012931    mov ax, strict word 00040h                ; b8 40 00
    12901     call 0166ch                               ; e8 b1 8b
     12932    call 0166ch                               ; e8 6b 8b
    1290212933    mov word [bp-010h], 00122h                ; c7 46 f0 22 01
    1290312934    mov word [bp-00eh], ax                    ; 89 46 f2
     
    1296812999    mov bx, strict word 0000fh                ; bb 0f 00
    1296913000    xor cx, cx                                ; 31 c9
    12970     call 081ffh                               ; e8 9a f6
     13001    call 0822ah                               ; e8 7f f6
    1297113002    test ax, ax                               ; 85 c0
    12972     je near 08ee1h                            ; 0f 84 76 03
     13003    je near 08f27h                            ; 0f 84 76 03
    1297313004    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1297413005    sal ax, 007h                              ; c1 e0 07
     
    1299813029    mov bx, strict word 0000fh                ; bb 0f 00
    1299913030    xor cx, cx                                ; 31 c9
    13000     call 081ffh                               ; e8 4e f6
     13031    call 0822ah                               ; e8 33 f6
    1300113032    cmp ax, strict word 00001h                ; 3d 01 00
    13002     je short 08b6bh                           ; 74 b5
     13033    je short 08bb1h                           ; 74 b5
    1300313034    push strict byte 00000h                   ; 6a 00
    1300413035    mov bx, strict word 0000fh                ; bb 0f 00
     
    1300613037    mov ax, di                                ; 89 f8
    1300713038    mov dx, word [bp-01ah]                    ; 8b 56 e6
    13008     call 081ffh                               ; e8 3a f6
     13039    call 0822ah                               ; e8 1f f6
    1300913040    cmp ax, strict word 00003h                ; 3d 03 00
    13010     jne near 08ee1h                           ; 0f 85 15 03
     13041    jne near 08f27h                           ; 0f 85 15 03
    1301113042    mov ax, word [bp-016h]                    ; 8b 46 ea
    1301213043    add ax, 00130h                            ; 05 30 01
     
    1303513066    mov byte [bp-00ch], al                    ; 88 46 f4
    1303613067    cmp AL, strict byte 004h                  ; 3c 04
    13037     jnc near 08ee1h                           ; 0f 83 cf 02
     13068    jnc near 08f27h                           ; 0f 83 cf 02
    1303813069    mov dx, word [bp-016h]                    ; 8b 56 ea
    1303913070    add dx, 00118h                            ; 81 c2 18 01
     
    1304213073    mov bx, strict word 00010h                ; bb 10 00
    1304313074    xor cx, cx                                ; 31 c9
    13044     call 0813ch                               ; e8 13 f5
     13075    call 08167h                               ; e8 f8 f4
    1304513076    mov ax, word [bp-016h]                    ; 8b 46 ea
    1304613077    add ax, 00124h                            ; 05 24 01
     
    1306613097    add cl, 00ch                              ; 80 c1 0c
    1306713098    test dx, dx                               ; 85 d2
    13068     jne near 08e3dh                           ; 0f 85 d8 01
     13099    jne near 08e83h                           ; 0f 85 d8 01
    1306913100    cmp ax, 00101h                            ; 3d 01 01
    13070     jne near 08e3dh                           ; 0f 85 d1 01
     13101    jne near 08e83h                           ; 0f 85 d1 01
    1307113102    les bx, [bp-010h]                         ; c4 5e f0
    1307213103    db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
     
    1308013111    mov ax, word [bp-010h]                    ; 8b 46 f0
    1308113112    mov dx, es                                ; 8c c2
    13082     call 0830dh                               ; e8 76 f6
     13113    call 08338h                               ; e8 5b f6
    1308313114    mov byte [bp-00ah], cl                    ; 88 4e f6
    1308413115    test byte [bp-00226h], 080h               ; f6 86 da fd 80
     
    1309713128    mov di, word [bp-001ach]                  ; 8b be 54 fe
    1309813129    cmp di, 00fffh                            ; 81 ff ff 0f
    13099     jne short 08cdch                          ; 75 10
     13130    jne short 08d22h                          ; 75 10
    1310013131    cmp ax, strict word 0ffffh                ; 3d ff ff
    13101     jne short 08cdch                          ; 75 0b
     13132    jne short 08d22h                          ; 75 0b
    1310213133    mov ax, word [bp-0015eh]                  ; 8b 86 a2 fe
    1310313134    mov word [bp-014h], ax                    ; 89 46 ec
     
    1312813159    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1312913160    cmp AL, strict byte 001h                  ; 3c 01
    13130     jc short 08d47h                           ; 72 0c
    13131     jbe short 08d4fh                          ; 76 12
     13161    jc short 08d8dh                           ; 72 0c
     13162    jbe short 08d95h                          ; 76 12
    1313213163    cmp AL, strict byte 003h                  ; 3c 03
    13133     je short 08d57h                           ; 74 16
     13164    je short 08d9dh                           ; 74 16
    1313413165    cmp AL, strict byte 002h                  ; 3c 02
    13135     je short 08d53h                           ; 74 0e
    13136     jmp short 08da0h                          ; eb 59
     13166    je short 08d99h                           ; 74 0e
     13167    jmp short 08de6h                          ; eb 59
    1313713168    test al, al                               ; 84 c0
    13138     jne short 08da0h                          ; 75 55
     13169    jne short 08de6h                          ; 75 55
    1313913170    mov DL, strict byte 040h                  ; b2 40
    13140     jmp short 08d59h                          ; eb 0a
     13171    jmp short 08d9fh                          ; eb 0a
    1314113172    mov DL, strict byte 048h                  ; b2 48
    13142     jmp short 08d59h                          ; eb 06
     13173    jmp short 08d9fh                          ; eb 06
    1314313174    mov DL, strict byte 050h                  ; b2 50
    13144     jmp short 08d59h                          ; eb 02
     13175    jmp short 08d9fh                          ; eb 02
    1314513176    mov DL, strict byte 058h                  ; b2 58
    1314613177    mov al, dl                                ; 88 d0
     
    1314813179    movzx bx, al                              ; 0f b6 d8
    1314913180    mov ax, bx                                ; 89 d8
    13150     call 016ach                               ; e8 47 89
     13181    call 016ach                               ; e8 01 89
    1315113182    test al, al                               ; 84 c0
    13152     je short 08da0h                           ; 74 37
     13183    je short 08de6h                           ; 74 37
    1315313184    mov al, dl                                ; 88 d0
    1315413185    db  0feh, 0c0h
    1315513186    ; inc al                                    ; fe c0
    1315613187    xor ah, ah                                ; 30 e4
    13157     call 016ach                               ; e8 3a 89
     13188    call 016ach                               ; e8 f4 88
    1315813189    xor ah, ah                                ; 30 e4
    1315913190    mov si, ax                                ; 89 c6
    1316013191    sal si, 008h                              ; c1 e6 08
    1316113192    movzx ax, dl                              ; 0f b6 c2
    13162     call 016ach                               ; e8 2d 89
     13193    call 016ach                               ; e8 e7 88
    1316313194    xor ah, ah                                ; 30 e4
    1316413195    add ax, si                                ; 01 f0
     
    1316713198    add AL, strict byte 002h                  ; 04 02
    1316813199    xor ah, ah                                ; 30 e4
    13169     call 016ach                               ; e8 1d 89
     13200    call 016ach                               ; e8 d7 88
    1317013201    xor ah, ah                                ; 30 e4
    1317113202    mov word [bp-026h], ax                    ; 89 46 da
    1317213203    mov ax, bx                                ; 89 d8
    13173     call 016ach                               ; e8 13 89
     13204    call 016ach                               ; e8 cd 88
    1317413205    xor ah, ah                                ; 30 e4
    1317513206    mov word [bp-022h], ax                    ; 89 46 de
    13176     jmp short 08dadh                          ; eb 0d
     13207    jmp short 08df3h                          ; eb 0d
    1317713208    mov bx, word [bp-014h]                    ; 8b 5e ec
    1317813209    mov cx, di                                ; 89 f9
    1317913210    mov dx, ss                                ; 8c d2
    1318013211    lea ax, [bp-026h]                         ; 8d 46 da
    13181     call 055b6h                               ; e8 09 c8
     13212    call 055b6h                               ; e8 c3 c7
    1318213213    mov bx, 00da8h                            ; bb a8 0d
    1318313214    mov cx, ds                                ; 8c d9
    1318413215    mov ax, strict word 00004h                ; b8 04 00
    13185     call 01931h                               ; e8 79 8b
     13216    call 01931h                               ; e8 33 8b
    1318613217    push di                                   ; 57
    1318713218    push word [bp-014h]                       ; ff 76 ec
     
    1320013231    push 00cdah                               ; 68 da 0c
    1320113232    push strict byte 00004h                   ; 6a 04
    13202     call 01972h                               ; e8 91 8b
     13233    call 01972h                               ; e8 4b 8b
    1320313234    add sp, strict byte 00018h                ; 83 c4 18
    1320413235    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     
    1322913260    mov dx, strict word 00075h                ; ba 75 00
    1323013261    mov ax, strict word 00040h                ; b8 40 00
    13231     call 01650h                               ; e8 24 88
     13262    call 01650h                               ; e8 de 87
    1323213263    db  0feh, 0c0h
    1323313264    ; inc al                                    ; fe c0
     
    1323513266    mov dx, strict word 00075h                ; ba 75 00
    1323613267    mov ax, strict word 00040h                ; b8 40 00
    13237     call 0165eh                               ; e8 24 88
    13238     jmp near 08ed3h                           ; e9 96 00
     13268    call 0165eh                               ; e8 de 87
     13269    jmp near 08f19h                           ; e9 96 00
    1323913270    cmp dx, 0eb14h                            ; 81 fa 14 eb
    13240     jne near 08ed3h                           ; 0f 85 8e 00
     13271    jne near 08f19h                           ; 0f 85 8e 00
    1324113272    cmp ax, 00101h                            ; 3d 01 01
    13242     jne near 08ed3h                           ; 0f 85 87 00
     13273    jne near 08f19h                           ; 0f 85 87 00
    1324313274    les bx, [bp-010h]                         ; c4 5e f0
    1324413275    db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
     
    1325213283    mov ax, word [bp-010h]                    ; 8b 46 f0
    1325313284    mov dx, es                                ; 8c c2
    13254     call 0830dh                               ; e8 96 f4
     13285    call 08338h                               ; e8 7b f4
    1325513286    test byte [bp-00226h], 080h               ; f6 86 da fd 80
    1325613287    db  00fh, 095h, 0c0h
     
    1329113322    pop bp                                    ; 5d
    1329213323    retn                                      ; c3
    13293 ahci_mem_alloc_:                             ; 0xf8ee9 LB 0x43
     13324ahci_mem_alloc_:                             ; 0xf8f2f LB 0x43
    1329413325    push bp                                   ; 55
    1329513326    mov bp, sp                                ; 89 e5
     
    1330113332    mov dx, 00413h                            ; ba 13 04
    1330213333    xor ax, ax                                ; 31 c0
    13303     call 0166ch                               ; e8 73 87
     13334    call 0166ch                               ; e8 2d 87
    1330413335    test ax, ax                               ; 85 c0
    13305     je short 08f22h                           ; 74 25
     13336    je short 08f68h                           ; 74 25
    1330613337    dec ax                                    ; 48
    1330713338    mov bx, ax                                ; 89 c3
     
    1331013341    sal ax, 1                                 ; d1 e0
    1331113342    rcl dx, 1                                 ; d1 d2
    13312     loop 08f05h                               ; e2 fa
     13343    loop 08f4bh                               ; e2 fa
    1331313344    mov si, ax                                ; 89 c6
    1331413345    mov di, dx                                ; 89 d7
     
    1331613347    shr di, 1                                 ; d1 ef
    1331713348    rcr si, 1                                 ; d1 de
    13318     loop 08f12h                               ; e2 fa
     13349    loop 08f58h                               ; e2 fa
    1331913350    mov dx, 00413h                            ; ba 13 04
    1332013351    xor ax, ax                                ; 31 c0
    13321     call 0167ah                               ; e8 5a 87
     13352    call 0167ah                               ; e8 14 87
    1332213353    mov ax, si                                ; 89 f0
    1332313354    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1332913360    pop bp                                    ; 5d
    1333013361    retn                                      ; c3
    13331 ahci_hba_init_:                              ; 0xf8f2c LB 0x125
     13362ahci_hba_init_:                              ; 0xf8f72 LB 0x125
    1333213363    push bp                                   ; 55
    1333313364    mov bp, sp                                ; 89 e5
     
    1334113372    mov dx, strict word 0000eh                ; ba 0e 00
    1334213373    mov ax, strict word 00040h                ; b8 40 00
    13343     call 0166ch                               ; e8 2a 87
     13374    call 0166ch                               ; e8 e4 86
    1334413375    mov bx, 00122h                            ; bb 22 01
    1334513376    mov word [bp-010h], ax                    ; 89 46 f0
     
    1335813389    shr eax, 010h                             ; 66 c1 e8 10
    1335913390    xchg dx, ax                               ; 92
    13360     call 08ee9h                               ; e8 82 ff
     13391    call 08f2fh                               ; e8 82 ff
    1336113392    mov di, ax                                ; 89 c7
    1336213393    test ax, ax                               ; 85 c0
    13363     je near 09030h                            ; 0f 84 c1 00
     13394    je near 09076h                            ; 0f 84 c1 00
    1336413395    mov es, [bp-010h]                         ; 8e 46 f0
    1336513396    mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
     
    1337513406    mov dx, strict word 00004h                ; ba 04 00
    1337613407    mov ax, si                                ; 89 f0
    13377     call 0813ch                               ; e8 99 f1
     13408    call 08167h                               ; e8 7e f1
    1337813409    mov ax, strict word 00004h                ; b8 04 00
    1337913410    xor cx, cx                                ; 31 c9
     
    1339213423    xchg dx, ax                               ; 92
    1339313424    test AL, strict byte 001h                 ; a8 01
    13394     jne short 08fa3h                          ; 75 de
     13425    jne short 08fe9h                          ; 75 de
    1339513426    xor ax, ax                                ; 31 c0
    1339613427    xor cx, cx                                ; 31 c9
     
    1341013441    mov bx, strict word 0001fh                ; bb 1f 00
    1341113442    xor cx, cx                                ; 31 c9
    13412     call 081ffh                               ; e8 16 f2
     13443    call 0822ah                               ; e8 fb f1
    1341313444    db  0feh, 0c0h
    1341413445    ; inc al                                    ; fe c0
    1341513446    mov byte [bp-00eh], al                    ; 88 46 f2
    1341613447    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    13417     jmp short 08ffdh                          ; eb 09
     13448    jmp short 09043h                          ; eb 09
    1341813449    inc byte [bp-00ch]                        ; fe 46 f4
    1341913450    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    13420     jnc short 0902eh                          ; 73 31
     13451    jnc short 09074h                          ; 73 31
    1342113452    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    1342213453    mov ax, strict word 00001h                ; b8 01 00
    1342313454    xor dx, dx                                ; 31 d2
    13424     jcxz 0900eh                               ; e3 06
     13455    jcxz 09054h                               ; e3 06
    1342513456    sal ax, 1                                 ; d1 e0
    1342613457    rcl dx, 1                                 ; d1 d2
    13427     loop 09008h                               ; e2 fa
     13458    loop 0904eh                               ; e2 fa
    1342813459    mov bx, ax                                ; 89 c3
    1342913460    mov cx, dx                                ; 89 d1
    1343013461    mov dx, strict word 0000ch                ; ba 0c 00
    1343113462    mov ax, si                                ; 89 f0
    13432     call 081c6h                               ; e8 ac f1
     13463    call 081f1h                               ; e8 91 f1
    1343313464    test al, al                               ; 84 c0
    13434     je short 08ff4h                           ; 74 d6
     13465    je short 0903ah                           ; 74 d6
    1343513466    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    1343613467    xor ax, ax                                ; 31 c0
    1343713468    mov dx, di                                ; 89 fa
    13438     call 08a98h                               ; e8 6f fa
     13469    call 08adeh                               ; e8 6f fa
    1343913470    dec byte [bp-00eh]                        ; fe 4e f2
    13440     jne short 08ff4h                          ; 75 c6
     13471    jne short 0903ah                          ; 75 c6
    1344113472    xor ax, ax                                ; 31 c0
    1344213473    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1344813479    pop bp                                    ; 5d
    1344913480    retn                                      ; c3
    13450     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 020h, 091h, 0feh, 090h, 004h, 091h, 00ah, 091h, 010h
    13451     db  091h, 016h, 091h, 01ch, 091h, 020h, 091h
    13452 _ahci_init:                                  ; 0xf9051 LB 0xfe
     13481    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 066h, 091h, 044h, 091h, 04ah, 091h, 050h, 091h, 056h
     13482    db  091h, 05ch, 091h, 062h, 091h, 066h, 091h
     13483_ahci_init:                                  ; 0xf9097 LB 0xfe
    1345313484    push bp                                   ; 55
    1345413485    mov bp, sp                                ; 89 e5
     
    1345813489    mov ax, 00601h                            ; b8 01 06
    1345913490    mov dx, strict word 00001h                ; ba 01 00
    13460     call 0956fh                               ; e8 0d 05
     13491    call 095b5h                               ; e8 0d 05
    1346113492    mov dx, ax                                ; 89 c2
    1346213493    cmp ax, strict word 0ffffh                ; 3d ff ff
    13463     je near 09148h                            ; 0f 84 dd 00
     13494    je near 0918eh                            ; 0f 84 dd 00
    1346413495    xor al, al                                ; 30 c0
    1346513496    shr ax, 008h                              ; c1 e8 08
     
    1346913500    xor ah, ah                                ; 30 e4
    1347013501    mov bx, strict word 00034h                ; bb 34 00
    13471     call 0959ah                               ; e8 1a 05
     13502    call 095e0h                               ; e8 1a 05
    1347213503    mov cl, al                                ; 88 c1
    1347313504    test cl, cl                               ; 84 c9
    13474     je short 090a9h                           ; 74 23
     13505    je short 090efh                           ; 74 23
    1347513506    movzx bx, cl                              ; 0f b6 d9
    1347613507    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1347813509    mov dx, di                                ; 89 fa
    1347913510    mov ax, si                                ; 89 f0
    13480     call 0959ah                               ; e8 02 05
     13511    call 095e0h                               ; e8 02 05
    1348113512    cmp AL, strict byte 012h                  ; 3c 12
    13482     je short 090a9h                           ; 74 0d
     13513    je short 090efh                           ; 74 0d
    1348313514    mov al, cl                                ; 88 c8
    1348413515    db  0feh, 0c0h
     
    1348713518    mov dx, di                                ; 89 fa
    1348813519    mov ax, si                                ; 89 f0
    13489     jmp short 0907dh                          ; eb d4
     13520    jmp short 090c3h                          ; eb d4
    1349013521    test cl, cl                               ; 84 c9
    13491     je near 09148h                            ; 0f 84 99 00
     13522    je near 0918eh                            ; 0f 84 99 00
    1349213523    add cl, 002h                              ; 80 c1 02
    1349313524    movzx bx, cl                              ; 0f b6 d9
     
    1349613527    mov dx, di                                ; 89 fa
    1349713528    mov ax, si                                ; 89 f0
    13498     call 0959ah                               ; e8 d6 04
     13529    call 095e0h                               ; e8 d6 04
    1349913530    cmp AL, strict byte 010h                  ; 3c 10
    13500     jne near 09148h                           ; 0f 85 7e 00
     13531    jne near 0918eh                           ; 0f 85 7e 00
    1350113532    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1350213533    mov al, cl                                ; 88 c8
     
    1350513536    mov dx, di                                ; 89 fa
    1350613537    mov ax, si                                ; 89 f0
    13507     call 095beh                               ; e8 e2 04
     13538    call 09604h                               ; e8 e2 04
    1350813539    mov dx, ax                                ; 89 c2
    1350913540    and ax, strict word 0000fh                ; 25 0f 00
    1351013541    sub ax, strict word 00004h                ; 2d 04 00
    1351113542    cmp ax, strict word 0000bh                ; 3d 0b 00
    13512     jnbe short 09120h                         ; 77 37
     13543    jnbe short 09166h                         ; 77 37
    1351313544    push CS                                   ; 0e
    1351413545    pop ES                                    ; 07
    1351513546    mov cx, strict word 00008h                ; b9 08 00
    13516     mov di, 0903ah                            ; bf 3a 90
     13547    mov di, 09080h                            ; bf 80 90
    1351713548    repne scasb                               ; f2 ae
    1351813549    sal cx, 1                                 ; d1 e1
    1351913550    mov di, cx                                ; 89 cf
    13520     mov ax, word [cs:di-06fbfh]               ; 2e 8b 85 41 90
     13551    mov ax, word [cs:di-06f79h]               ; 2e 8b 85 87 90
    1352113552    jmp ax                                    ; ff e0
    1352213553    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    13523     jmp short 09120h                          ; eb 1c
     13554    jmp short 09166h                          ; eb 1c
    1352413555    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    13525     jmp short 09120h                          ; eb 16
     13556    jmp short 09166h                          ; eb 16
    1352613557    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    13527     jmp short 09120h                          ; eb 10
     13558    jmp short 09166h                          ; eb 10
    1352813559    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    13529     jmp short 09120h                          ; eb 0a
     13560    jmp short 09166h                          ; eb 0a
    1353013561    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    13531     jmp short 09120h                          ; eb 04
     13562    jmp short 09166h                          ; eb 04
    1353213563    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1353313564    mov si, dx                                ; 89 d6
     
    1353613567    mov al, byte [bp-006h]                    ; 8a 46 fa
    1353713568    test al, al                               ; 84 c0
    13538     je short 09148h                           ; 74 19
     13569    je short 0918eh                           ; 74 19
    1353913570    movzx bx, al                              ; 0f b6 d8
    1354013571    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    1354113572    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    13542     call 095e0h                               ; e8 a3 04
     13573    call 09626h                               ; e8 a3 04
    1354313574    test AL, strict byte 001h                 ; a8 01
    13544     je short 09148h                           ; 74 07
     13575    je short 0918eh                           ; 74 07
    1354513576    and AL, strict byte 0f0h                  ; 24 f0
    1354613577    add ax, si                                ; 01 f0
    13547     call 08f2ch                               ; e8 e4 fd
     13578    call 08f72h                               ; e8 e4 fd
    1354813579    lea sp, [bp-004h]                         ; 8d 66 fc
    1354913580    pop di                                    ; 5f
     
    1355113582    pop bp                                    ; 5d
    1355213583    retn                                      ; c3
    13553 apm_out_str_:                                ; 0xf914f LB 0x39
     13584apm_out_str_:                                ; 0xf9195 LB 0x39
    1355413585    push bp                                   ; 55
    1355513586    mov bp, sp                                ; 89 e5
     
    1355713588    mov bx, ax                                ; 89 c3
    1355813589    cmp byte [bx], 000h                       ; 80 3f 00
    13559     je short 09164h                           ; 74 0a
     13590    je short 091aah                           ; 74 0a
    1356013591    mov al, byte [bx]                         ; 8a 07
    1356113592    out DX, AL                                ; ee
     
    1356413595    db  00ah, 0c0h
    1356513596    ; or al, al                                 ; 0a c0
    13566     jne short 0915ch                          ; 75 f8
     13597    jne short 091a2h                          ; 75 f8
    1356713598    lea sp, [bp-002h]                         ; 8d 66 fe
    1356813599    pop bx                                    ; 5b
    1356913600    pop bp                                    ; 5d
    1357013601    retn                                      ; c3
    13571     stosw                                     ; ab
     13602    db  0f1h
    1357213603    xchg cx, ax                               ; 91
    13573     jnbe short 09100h                         ; 77 92
    13574     mov bp, 0d891h                            ; bd 91 d8
    13575     xchg cx, ax                               ; 91
    13576     jnbe short 09106h                         ; 77 92
    13577     add dx, word [bp+si-06d89h]               ; 03 92 77 92
    13578     or byte [bp+si-06db4h], dl                ; 08 92 4c 92
    13579     dec sp                                    ; 4c
     13604    mov bp, 00392h                            ; bd 92 03
    1358013605    xchg dx, ax                               ; 92
    13581     dec sp                                    ; 4c
     13606    push DS                                   ; 1e
    1358213607    xchg dx, ax                               ; 92
    13583     inc di                                    ; 47
     13608    mov bp, 04992h                            ; bd 92 49
    1358413609    xchg dx, ax                               ; 92
    13585     dec sp                                    ; 4c
     13610    mov bp, 04e92h                            ; bd 92 4e
    1358613611    xchg dx, ax                               ; 92
    13587     dec sp                                    ; 4c
    1358813612    xchg dx, ax                               ; 92
    13589     inc ax                                    ; 40
    1359013613    xchg dx, ax                               ; 92
    13591 _apm_function:                               ; 0xf9188 LB 0xf5
     13614    xchg dx, ax                               ; 92
     13615    xchg dx, ax                               ; 92
     13616    xchg dx, ax                               ; 92
     13617    xchg dx, ax                               ; 92
     13618    lea dx, [bp+si-06d6eh]                    ; 8d 92 92 92
     13619    xchg dx, ax                               ; 92
     13620    xchg dx, ax                               ; 92
     13621    db  086h
     13622    xchg dx, ax                               ; 92
     13623_apm_function:                               ; 0xf91ce LB 0xf5
    1359213624    push bp                                   ; 55
    1359313625    mov bp, sp                                ; 89 e5
     
    1359713629    xor ah, ah                                ; 30 e4
    1359813630    cmp ax, strict word 0000eh                ; 3d 0e 00
    13599     jnbe near 0924ch                          ; 0f 87 b0 00
     13631    jnbe near 09292h                          ; 0f 87 b0 00
    1360013632    mov bx, ax                                ; 89 c3
    1360113633    add bx, ax                                ; 01 c3
    1360213634    mov dx, word [bp+018h]                    ; 8b 56 18
    1360313635    or dl, 001h                               ; 80 ca 01
    13604     jmp word [cs:bx-06e96h]                   ; 2e ff a7 6a 91
     13636    jmp word [cs:bx-06e50h]                   ; 2e ff a7 b0 91
    1360513637    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1360613638    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1360713639    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    13608     jmp near 09277h                           ; e9 ba 00
     13640    jmp near 092bdh                           ; e9 ba 00
    1360913641    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    13610     mov word [bp+00ch], 097d4h                ; c7 46 0c d4 97
     13642    mov word [bp+00ch], 09824h                ; c7 46 0c 24 98
    1361113643    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1361213644    mov ax, strict word 0fff0h                ; b8 f0 ff
    1361313645    mov word [bp+006h], ax                    ; 89 46 06
    1361413646    mov word [bp+004h], ax                    ; 89 46 04
    13615     jmp near 09277h                           ; e9 9f 00
     13647    jmp near 092bdh                           ; e9 9f 00
    1361613648    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1361713649    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1362613658    mov si, ax                                ; 89 c6
    1362713659    sal esi, 010h                             ; 66 c1 e6 10
    13628     jmp near 09277h                           ; e9 74 00
     13660    jmp near 092bdh                           ; e9 74 00
    1362913661    sti                                       ; fb
    1363013662    hlt                                       ; f4
    13631     jmp near 09277h                           ; e9 6f 00
     13663    jmp near 092bdh                           ; e9 6f 00
    1363213664    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    13633     je short 0922dh                           ; 74 1f
     13665    je short 09273h                           ; 74 1f
    1363413666    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    13635     je short 09225h                           ; 74 11
     13667    je short 0926bh                           ; 74 11
    1363613668    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    13637     jne short 09235h                          ; 75 1b
     13669    jne short 0927bh                          ; 75 1b
    1363813670    mov dx, 08900h                            ; ba 00 89
    1363913671    mov ax, 00d12h                            ; b8 12 0d
    13640     call 0914fh                               ; e8 2c ff
    13641     jmp short 09277h                          ; eb 52
     13672    call 09195h                               ; e8 2c ff
     13673    jmp short 092bdh                          ; eb 52
    1364213674    mov dx, 08900h                            ; ba 00 89
    1364313675    mov ax, 00d1ah                            ; b8 1a 0d
    13644     jmp short 09220h                          ; eb f3
     13676    jmp short 09266h                          ; eb f3
    1364513677    mov dx, 08900h                            ; ba 00 89
    1364613678    mov ax, 00d22h                            ; b8 22 0d
    13647     jmp short 09220h                          ; eb eb
     13679    jmp short 09266h                          ; eb eb
    1364813680    or ah, 00ah                               ; 80 cc 0a
    1364913681    mov word [bp+012h], ax                    ; 89 46 12
    1365013682    mov word [bp+018h], dx                    ; 89 56 18
    13651     jmp short 09277h                          ; eb 37
     13683    jmp short 092bdh                          ; eb 37
    1365213684    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    13653     jmp short 09277h                          ; eb 30
     13685    jmp short 092bdh                          ; eb 30
    1365413686    or ah, 080h                               ; 80 cc 80
    13655     jmp short 09238h                          ; eb ec
     13687    jmp short 0927eh                          ; eb ec
    1365613688    mov bx, 00da8h                            ; bb a8 0d
    1365713689    mov cx, ds                                ; 8c d9
    1365813690    mov ax, strict word 00004h                ; b8 04 00
    13659     call 01931h                               ; e8 da 86
     13691    call 01931h                               ; e8 94 86
    1366013692    push word [bp+00ch]                       ; ff 76 0c
    1366113693    push word [bp+012h]                       ; ff 76 12
    1366213694    push 00d2bh                               ; 68 2b 0d
    1366313695    push strict byte 00004h                   ; 6a 04
    13664     call 01972h                               ; e8 0d 87
     13696    call 01972h                               ; e8 c7 86
    1366513697    add sp, strict byte 00008h                ; 83 c4 08
    1366613698    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1367313705    pop bp                                    ; 5d
    1367413706    retn                                      ; c3
    13675 pci16_select_reg_:                           ; 0xf927d LB 0x24
     13707pci16_select_reg_:                           ; 0xf92c3 LB 0x24
    1367613708    push bp                                   ; 55
    1367713709    mov bp, sp                                ; 89 e5
     
    1369013722    pop bp                                    ; 5d
    1369113723    retn                                      ; c3
    13692 pci16_find_device_:                          ; 0xf92a1 LB 0xf7
     13724pci16_find_device_:                          ; 0xf92e7 LB 0xf7
    1369313725    push bp                                   ; 55
    1369413726    mov bp, sp                                ; 89 e5
     
    1370413736    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1370513737    test bl, 007h                             ; f6 c3 07
    13706     jne short 092e9h                          ; 75 2d
     13738    jne short 0932fh                          ; 75 2d
    1370713739    mov dx, strict word 0000eh                ; ba 0e 00
    1370813740    mov ax, bx                                ; 89 d8
    13709     call 0927dh                               ; e8 b9 ff
     13741    call 092c3h                               ; e8 b9 ff
    1371013742    mov dx, 00cfeh                            ; ba fe 0c
    1371113743    in AL, DX                                 ; ec
     
    1371413746    mov byte [bp-006h], al                    ; 88 46 fa
    1371513747    cmp AL, strict byte 0ffh                  ; 3c ff
    13716     jne short 092d7h                          ; 75 06
     13748    jne short 0931dh                          ; 75 06
    1371713749    add bx, strict byte 00008h                ; 83 c3 08
    13718     jmp near 0936ah                           ; e9 93 00
     13750    jmp near 093b0h                           ; e9 93 00
    1371913751    test byte [bp-006h], 080h                 ; f6 46 fa 80
    13720     je short 092e4h                           ; 74 07
     13752    je short 0932ah                           ; 74 07
    1372113753    mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
    13722     jmp short 092e9h                          ; eb 05
     13754    jmp short 0932fh                          ; eb 05
    1372313755    mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
    1372413756    mov al, byte [bp-006h]                    ; 8a 46 fa
    1372513757    and AL, strict byte 007h                  ; 24 07
    1372613758    cmp AL, strict byte 001h                  ; 3c 01
    13727     jne short 09311h                          ; 75 1f
     13759    jne short 09357h                          ; 75 1f
    1372813760    mov ax, bx                                ; 89 d8
    1372913761    shr ax, 008h                              ; c1 e8 08
    1373013762    test ax, ax                               ; 85 c0
    13731     jne short 09311h                          ; 75 16
     13763    jne short 09357h                          ; 75 16
    1373213764    mov dx, strict word 0001ah                ; ba 1a 00
    1373313765    mov ax, bx                                ; 89 d8
    13734     call 0927dh                               ; e8 7a ff
     13766    call 092c3h                               ; e8 7a ff
    1373513767    mov dx, 00cfeh                            ; ba fe 0c
    1373613768    in AL, DX                                 ; ec
     
    1373813770    ; sub ah, ah                                ; 2a e4
    1373913771    cmp al, byte [bp-008h]                    ; 3a 46 f8
    13740     jbe short 09311h                          ; 76 03
     13772    jbe short 09357h                          ; 76 03
    1374113773    mov byte [bp-008h], al                    ; 88 46 f8
    1374213774    test di, di                               ; 85 ff
    13743     je short 0931ah                           ; 74 05
     13775    je short 09360h                           ; 74 05
    1374413776    mov dx, strict word 00008h                ; ba 08 00
    13745     jmp short 0931ch                          ; eb 02
     13777    jmp short 09362h                          ; eb 02
    1374613778    xor dx, dx                                ; 31 d2
    1374713779    mov ax, bx                                ; 89 d8
    13748     call 0927dh                               ; e8 5c ff
     13780    call 092c3h                               ; e8 5c ff
    1374913781    mov dx, 00cfch                            ; ba fc 0c
    1375013782    in eax, DX                                ; 66 ed
     
    1375713789    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    1375813790    test di, di                               ; 85 ff
    13759     je short 0934bh                           ; 74 0f
     13791    je short 09391h                           ; 74 0f
    1376013792    mov cx, strict word 00008h                ; b9 08 00
    1376113793    shr dx, 1                                 ; d1 ea
    1376213794    rcr ax, 1                                 ; d1 d8
    13763     loop 0933fh                               ; e2 fa
     13795    loop 09385h                               ; e2 fa
    1376413796    mov word [bp-00eh], ax                    ; 89 46 f2
    1376513797    mov word [bp-00ch], dx                    ; 89 56 f4
    1376613798    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1376713799    cmp ax, word [bp-014h]                    ; 3b 46 ec
    13768     jne short 0935bh                          ; 75 08
     13800    jne short 093a1h                          ; 75 08
    1376913801    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1377013802    cmp ax, word [bp-012h]                    ; 3b 46 ee
    13771     je short 09361h                           ; 74 06
     13803    je short 093a7h                           ; 74 06
    1377213804    cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
    13773     je short 09367h                           ; 74 06
     13805    je short 093adh                           ; 74 06
    1377413806    dec si                                    ; 4e
    1377513807    cmp si, strict byte 0ffffh                ; 83 fe ff
    13776     je short 09379h                           ; 74 12
     13808    je short 093bfh                           ; 74 12
    1377713809    add bx, word [bp-00ah]                    ; 03 5e f6
    1377813810    mov dx, bx                                ; 89 da
     
    1378013812    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1378113813    cmp dx, ax                                ; 39 c2
    13782     jbe near 092b7h                           ; 0f 86 3e ff
     13814    jbe near 092fdh                           ; 0f 86 3e ff
    1378313815    cmp si, strict byte 0ffffh                ; 83 fe ff
    13784     jne short 09382h                          ; 75 04
     13816    jne short 093c8h                          ; 75 04
    1378513817    mov ax, bx                                ; 89 d8
    13786     jmp short 09385h                          ; eb 03
     13818    jmp short 093cbh                          ; eb 03
    1378713819    mov ax, strict word 0ffffh                ; b8 ff ff
    1378813820    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1379113823    pop bp                                    ; 5d
    1379213824    retn                                      ; c3
    13793     jp short 09322h                           ; 7a 94
     13825    rcl byte [si-06b26h], 0edh                ; c0 94 da 94 ed
    1379413826    xchg sp, ax                               ; 94
    13795     xchg sp, ax                               ; 94
    13796     cmpsw                                     ; a7
    13797     xchg sp, ax                               ; 94
    13798     mov sp, 0cf94h                            ; bc 94 cf
    13799     xchg sp, ax                               ; 94
    13800     loop 0932ch                               ; e2 94
    13801 _pci16_function:                             ; 0xf9398 LB 0x1d7
     13827    add dl, byte [di-06aebh]                  ; 02 95 15 95
     13828    db  028h
     13829    xchg bp, ax                               ; 95
     13830_pci16_function:                             ; 0xf93de LB 0x1d7
    1380213831    push bp                                   ; 55
    1380313832    mov bp, sp                                ; 89 e5
     
    1381313842    xor ah, ah                                ; 30 e4
    1381413843    cmp bx, strict byte 00003h                ; 83 fb 03
    13815     jc short 093d1h                           ; 72 1a
    13816     jbe short 09429h                          ; 76 70
     13844    jc short 09417h                           ; 72 1a
     13845    jbe short 0946fh                          ; 76 70
    1381713846    cmp bx, strict byte 0000eh                ; 83 fb 0e
    13818     je near 094f6h                            ; 0f 84 36 01
     13847    je near 0953ch                            ; 0f 84 36 01
    1381913848    cmp bx, strict byte 00008h                ; 83 fb 08
    13820     jc near 0953bh                            ; 0f 82 74 01
     13849    jc near 09581h                            ; 0f 82 74 01
    1382113850    cmp bx, strict byte 0000dh                ; 83 fb 0d
    13822     jbe near 0944eh                           ; 0f 86 80 00
    13823     jmp near 0953bh                           ; e9 6a 01
     13851    jbe near 09494h                           ; 0f 86 80 00
     13852    jmp near 09581h                           ; e9 6a 01
    1382413853    cmp bx, strict byte 00002h                ; 83 fb 02
    13825     je short 093f9h                           ; 74 23
     13854    je short 0943fh                           ; 74 23
    1382613855    cmp bx, strict byte 00001h                ; 83 fb 01
    13827     jne near 0953bh                           ; 0f 85 5e 01
     13856    jne near 09581h                           ; 0f 85 5e 01
    1382813857    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1382913858    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1383113860    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1383213861    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    13833     jmp near 09568h                           ; e9 6f 01
     13862    jmp near 095aeh                           ; e9 6f 01
    1383413863    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    13835     jne short 09405h                          ; 75 06
     13864    jne short 0944bh                          ; 75 06
    1383613865    or ah, 083h                               ; 80 cc 83
    13837     jmp near 09561h                           ; e9 5c 01
     13866    jmp near 095a7h                           ; e9 5c 01
    1383813867    mov bx, word [bp+008h]                    ; 8b 5e 08
    1383913868    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1384013869    mov ax, word [bp+018h]                    ; 8b 46 18
    1384113870    xor cx, cx                                ; 31 c9
    13842     call 092a1h                               ; e8 8e fe
     13871    call 092e7h                               ; e8 8e fe
    1384313872    cmp ax, strict word 0ffffh                ; 3d ff ff
    13844     jne short 09423h                          ; 75 0b
     13873    jne short 09469h                          ; 75 0b
    1384513874    mov ax, word [bp+020h]                    ; 8b 46 20
    1384613875    xor ah, ah                                ; 30 e4
    1384713876    or ah, 086h                               ; 80 cc 86
    13848     jmp near 09561h                           ; e9 3e 01
     13877    jmp near 095a7h                           ; e9 3e 01
    1384913878    mov word [bp+014h], ax                    ; 89 46 14
    13850     jmp near 09568h                           ; e9 3f 01
     13879    jmp near 095aeh                           ; e9 3f 01
    1385113880    mov bx, word [bp+008h]                    ; 8b 5e 08
    1385213881    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1385313882    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1385413883    mov cx, strict word 00001h                ; b9 01 00
    13855     call 092a1h                               ; e8 69 fe
     13884    call 092e7h                               ; e8 69 fe
    1385613885    cmp ax, strict word 0ffffh                ; 3d ff ff
    13857     jne short 09448h                          ; 75 0b
     13886    jne short 0948eh                          ; 75 0b
    1385813887    mov ax, word [bp+020h]                    ; 8b 46 20
    1385913888    xor ah, ah                                ; 30 e4
    1386013889    or ah, 086h                               ; 80 cc 86
    13861     jmp near 09561h                           ; e9 19 01
     13890    jmp near 095a7h                           ; e9 19 01
    1386213891    mov word [bp+014h], ax                    ; 89 46 14
    13863     jmp near 09568h                           ; e9 1a 01
     13892    jmp near 095aeh                           ; e9 1a 01
    1386413893    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    13865     jc short 0945bh                           ; 72 06
     13894    jc short 094a1h                           ; 72 06
    1386613895    or ah, 087h                               ; 80 cc 87
    13867     jmp near 09561h                           ; e9 06 01
     13896    jmp near 095a7h                           ; e9 06 01
    1386813897    mov dx, word [bp+004h]                    ; 8b 56 04
    1386913898    mov ax, word [bp+014h]                    ; 8b 46 14
    13870     call 0927dh                               ; e8 19 fe
     13899    call 092c3h                               ; e8 19 fe
    1387113900    mov bx, word [bp+020h]                    ; 8b 5e 20
    1387213901    xor bh, bh                                ; 30 ff
    1387313902    sub bx, strict byte 00008h                ; 83 eb 08
    1387413903    cmp bx, strict byte 00005h                ; 83 fb 05
    13875     jnbe near 09568h                          ; 0f 87 f5 00
     13904    jnbe near 095aeh                          ; 0f 87 f5 00
    1387613905    add bx, bx                                ; 01 db
    13877     jmp word [cs:bx-06c74h]                   ; 2e ff a7 8c 93
     13906    jmp word [cs:bx-06c2eh]                   ; 2e ff a7 d2 93
    1387813907    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1387913908    xor bl, bl                                ; 30 db
     
    1388613915    or bx, ax                                 ; 09 c3
    1388713916    mov word [bp+01ch], bx                    ; 89 5e 1c
    13888     jmp near 09568h                           ; e9 d4 00
     13917    jmp near 095aeh                           ; e9 d4 00
    1388913918    mov dx, word [bp+004h]                    ; 8b 56 04
    1389013919    xor dh, dh                                ; 30 f6
     
    1389313922    in ax, DX                                 ; ed
    1389413923    mov word [bp+01ch], ax                    ; 89 46 1c
    13895     jmp near 09568h                           ; e9 c1 00
     13924    jmp near 095aeh                           ; e9 c1 00
    1389613925    mov dx, 00cfch                            ; ba fc 0c
    1389713926    in eax, DX                                ; 66 ed
     
    1390213931    mov word [bp+01ch], ax                    ; 89 46 1c
    1390313932    mov word [bp+01eh], dx                    ; 89 56 1e
    13904     jmp near 09568h                           ; e9 ac 00
     13933    jmp near 095aeh                           ; e9 ac 00
    1390513934    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1390613935    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1390913938    add dx, 00cfch                            ; 81 c2 fc 0c
    1391013939    out DX, AL                                ; ee
    13911     jmp near 09568h                           ; e9 99 00
     13940    jmp near 095aeh                           ; e9 99 00
    1391213941    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1391313942    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1391613945    add dx, 00cfch                            ; 81 c2 fc 0c
    1391713946    out DX, ax                                ; ef
    13918     jmp near 09568h                           ; e9 86 00
     13947    jmp near 095aeh                           ; e9 86 00
    1391913948    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1392013949    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1392513954    ; mov ax, cx                                ; 8b c1
    1392613955    out DX, eax                               ; 66 ef
    13927     jmp short 09568h                          ; eb 72
     13956    jmp short 095aeh                          ; eb 72
    1392813957    mov bx, word [bp+004h]                    ; 8b 5e 04
    1392913958    mov es, [bp+026h]                         ; 8e 46 26
     
    1393213961    mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
    1393313962    cmp cx, word [es:bx]                      ; 26 3b 0f
    13934     jbe short 0951ch                          ; 76 11
     13963    jbe short 09562h                          ; 76 11
    1393513964    mov ax, word [bp+020h]                    ; 8b 46 20
    1393613965    xor ah, ah                                ; 30 e4
     
    1393813967    mov word [bp+020h], ax                    ; 89 46 20
    1393913968    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    13940     jmp short 09530h                          ; eb 14
     13969    jmp short 09576h                          ; eb 14
    1394113970    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1394213971    mov si, 0f2c0h                            ; be c0 f2
     
    1395013979    les bx, [bp-008h]                         ; c4 5e f8
    1395113980    mov word [es:bx], ax                      ; 26 89 07
    13952     jmp short 09568h                          ; eb 2d
     13981    jmp short 095aeh                          ; eb 2d
    1395313982    mov bx, 00da8h                            ; bb a8 0d
    1395413983    mov cx, ds                                ; 8c d9
    1395513984    mov ax, strict word 00004h                ; b8 04 00
    13956     call 01931h                               ; e8 eb 83
     13985    call 01931h                               ; e8 a5 83
    1395713986    mov ax, word [bp+014h]                    ; 8b 46 14
    1395813987    push ax                                   ; 50
     
    1396113990    push 00d5eh                               ; 68 5e 0d
    1396213991    push strict byte 00004h                   ; 6a 04
    13963     call 01972h                               ; e8 1c 84
     13992    call 01972h                               ; e8 d6 83
    1396413993    add sp, strict byte 00008h                ; 83 c4 08
    1396513994    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1397314002    pop bp                                    ; 5d
    1397414003    retn                                      ; c3
    13975 pci_find_classcode_:                         ; 0xf956f LB 0x2b
     14004pci_find_classcode_:                         ; 0xf95b5 LB 0x2b
    1397614005    push bp                                   ; 55
    1397714006    mov bp, sp                                ; 89 e5
     
    1398814017    int 01ah                                  ; cd 1a
    1398914018    cmp ah, 000h                              ; 80 fc 00
    13990     je near 09590h                            ; 0f 84 03 00
     14019    je near 095d6h                            ; 0f 84 03 00
    1399114020    mov bx, strict word 0ffffh                ; bb ff ff
    1399214021    mov ax, bx                                ; 89 d8
     
    1399714026    pop bp                                    ; 5d
    1399814027    retn                                      ; c3
    13999 pci_read_config_byte_:                       ; 0xf959a LB 0x24
     14028pci_read_config_byte_:                       ; 0xf95e0 LB 0x24
    1400014029    push bp                                   ; 55
    1400114030    mov bp, sp                                ; 89 e5
     
    1401614045    pop bp                                    ; 5d
    1401714046    retn                                      ; c3
    14018 pci_read_config_word_:                       ; 0xf95be LB 0x22
     14047pci_read_config_word_:                       ; 0xf9604 LB 0x22
    1401914048    push bp                                   ; 55
    1402014049    mov bp, sp                                ; 89 e5
     
    1403514064    pop bp                                    ; 5d
    1403614065    retn                                      ; c3
    14037 pci_read_config_dword_:                      ; 0xf95e0 LB 0x27
     14066pci_read_config_dword_:                      ; 0xf9626 LB 0x27
    1403814067    push bp                                   ; 55
    1403914068    mov bp, sp                                ; 89 e5
     
    1405614085    pop bp                                    ; 5d
    1405714086    retn                                      ; c3
    14058 vds_is_present_:                             ; 0xf9607 LB 0x1d
     14087vds_is_present_:                             ; 0xf964d LB 0x1d
    1405914088    push bx                                   ; 53
    1406014089    push bp                                   ; 55
     
    1406414093    mov es, ax                                ; 8e c0
    1406514094    test byte [es:bx], 020h                   ; 26 f6 07 20
    14066     je short 0961fh                           ; 74 06
     14095    je short 09665h                           ; 74 06
    1406714096    mov ax, strict word 00001h                ; b8 01 00
    1406814097    pop bp                                    ; 5d
     
    1407314102    pop bx                                    ; 5b
    1407414103    retn                                      ; c3
    14075 vds_real_to_lin_:                            ; 0xf9624 LB 0x1e
     14104vds_real_to_lin_:                            ; 0xf966a LB 0x1e
    1407614105    push bx                                   ; 53
    1407714106    push cx                                   ; 51
     
    1408414113    sal ax, 1                                 ; d1 e0
    1408514114    rcl dx, 1                                 ; d1 d2
    14086     loop 09632h                               ; e2 fa
     14115    loop 09678h                               ; e2 fa
    1408714116    xor cx, cx                                ; 31 c9
    1408814117    add ax, bx                                ; 01 d8
     
    1409214121    pop bx                                    ; 5b
    1409314122    retn                                      ; c3
    14094 vds_build_sg_list_:                          ; 0xf9642 LB 0x79
     14123vds_build_sg_list_:                          ; 0xf9688 LB 0x79
    1409514124    push bp                                   ; 55
    1409614125    mov bp, sp                                ; 89 e5
     
    1410614135    mov bx, word [bp+006h]                    ; 8b 5e 06
    1410714136    mov word [es:di+002h], bx                 ; 26 89 5d 02
    14108     call 09624h                               ; e8 c3 ff
     14137    call 0966ah                               ; e8 c3 ff
    1410914138    mov es, si                                ; 8e c6
    1411014139    mov word [es:di+004h], ax                 ; 26 89 45 04
    1411114140    mov word [es:di+006h], dx                 ; 26 89 55 06
    1411214141    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    14113     call 09607h                               ; e8 93 ff
     14142    call 0964dh                               ; e8 93 ff
    1411414143    test ax, ax                               ; 85 c0
    14115     je short 0968bh                           ; 74 13
     14144    je short 096d1h                           ; 74 13
    1411614145    mov es, si                                ; 8e c6
    1411714146    mov ax, 08105h                            ; b8 05 81
    1411814147    mov dx, strict word 00000h                ; ba 00 00
    1411914148    int 04bh                                  ; cd 4b
    14120     jc near 09688h                            ; 0f 82 02 00
     14149    jc near 096ceh                            ; 0f 82 02 00
    1412114150    db  032h, 0c0h
    1412214151    ; xor al, al                                ; 32 c0
    1412314152    cbw                                       ; 98
    14124     jmp short 096b2h                          ; eb 27
     14153    jmp short 096f8h                          ; eb 27
    1412514154    mov es, si                                ; 8e c6
    1412614155    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1413914168    pop bp                                    ; 5d
    1414014169    retn 00004h                               ; c2 04 00
    14141 vds_free_sg_list_:                           ; 0xf96bb LB 0x35
     14170vds_free_sg_list_:                           ; 0xf9701 LB 0x3f
    1414214171    push bp                                   ; 55
    1414314172    mov bp, sp                                ; 89 e5
     
    1414514174    push di                                   ; 57
    1414614175    mov bx, ax                                ; 89 c3
    14147     call 09607h                               ; e8 42 ff
     14176    call 0964dh                               ; e8 42 ff
    1414814177    test ax, ax                               ; 85 c0
    14149     je short 096dch                           ; 74 13
     14178    je short 09722h                           ; 74 13
    1415014179    mov di, bx                                ; 89 df
    1415114180    mov es, dx                                ; 8e c2
     
    1415314182    mov dx, strict word 00000h                ; ba 00 00
    1415414183    int 04bh                                  ; cd 4b
    14155     jc near 096dbh                            ; 0f 82 02 00
     14184    jc near 09721h                            ; 0f 82 02 00
    1415614185    db  032h, 0c0h
    1415714186    ; xor al, al                                ; 32 c0
     
    1416414193    pop bp                                    ; 5d
    1416514194    retn                                      ; c3
    14166     times 0x5 db 0
    14167 __U4D:                                       ; 0xf96f0 LB 0x39
     14195    times 0xf db 0
     14196__U4D:                                       ; 0xf9740 LB 0x39
    1416814197    pushfw                                    ; 9c
    1416914198    push eax                                  ; 66 50
     
    1419514224    popfw                                     ; 9d
    1419614225    retn                                      ; c3
    14197 __U4M:                                       ; 0xf9729 LB 0x31
     14226__U4M:                                       ; 0xf9779 LB 0x31
    1419814227    pushfw                                    ; 9c
    1419914228    push eax                                  ; 66 50
     
    1422014249    popfw                                     ; 9d
    1422114250    retn                                      ; c3
    14222 _fmemset_:                                   ; 0xf975a LB 0xd
     14251_fmemset_:                                   ; 0xf97aa LB 0xd
    1422314252    push di                                   ; 57
    1422414253    mov es, dx                                ; 8e c2
     
    1423014259    pop di                                    ; 5f
    1423114260    retn                                      ; c3
    14232 _fmemcpy_:                                   ; 0xf9767 LB 0x33
     14261_fmemcpy_:                                   ; 0xf97b7 LB 0x33
    1423314262    push bp                                   ; 55
    1423414263    db  08bh, 0ech
     
    1425014279    leave                                     ; c9
    1425114280    retn                                      ; c3
    14252     add byte [bx+si-04d69h], dh               ; 00 b0 97 b2
    14253     xchg di, ax                               ; 97
    14254     mov DH, strict byte 097h                  ; b6 97
    14255     mov DH, strict byte 097h                  ; b6 97
    14256     mov DH, strict byte 097h                  ; b6 97
    14257     mov ax, 0b897h                            ; b8 97 b8
    14258     xchg di, ax                               ; 97
    14259     mov dx, 0be97h                            ; ba 97 be
    14260     xchg di, ax                               ; 97
    14261     mov si, 0c097h                            ; be 97 c0
    14262     xchg di, ax                               ; 97
    14263     lds dx, [bx-06839h]                       ; c5 97 c7 97
    14264 apm_worker:                                  ; 0xf979a LB 0x3a
     14281    add byte [bx+si], al                      ; 00 00
     14282    cbw                                       ; 98
     14283    add bl, byte [bx+si-067fah]               ; 02 98 06 98
     14284    push ES                                   ; 06
     14285    cbw                                       ; 98
     14286    push ES                                   ; 06
     14287    cbw                                       ; 98
     14288    or byte [bx+si-067f8h], bl                ; 08 98 08 98
     14289    or bl, byte [bx+si-067f2h]                ; 0a 98 0e 98
     14290    push CS                                   ; 0e
     14291    cbw                                       ; 98
     14292    adc byte [bx+si-067ebh], bl               ; 10 98 15 98
     14293    pop SS                                    ; 17
     14294    cbw                                       ; 98
     14295apm_worker:                                  ; 0xf97ea LB 0x3a
    1426514296    sti                                       ; fb
    1426614297    push ax                                   ; 50
     
    1427414305    pop ax                                    ; 58
    1427514306    mov AH, strict byte 053h                  ; b4 53
    14276     jnc short 097d0h                          ; 73 25
    14277     jmp word [cs:bp-06880h]                   ; 2e ff a6 80 97
    14278     jmp short 097ceh                          ; eb 1c
     14307    jnc short 09820h                          ; 73 25
     14308    jmp word [cs:bp-06830h]                   ; 2e ff a6 d0 97
     14309    jmp short 0981eh                          ; eb 1c
    1427914310    sti                                       ; fb
    1428014311    hlt                                       ; f4
    14281     jmp short 097ceh                          ; eb 18
    14282     jmp short 097ceh                          ; eb 16
    14283     jmp short 097d0h                          ; eb 16
     14312    jmp short 0981eh                          ; eb 18
     14313    jmp short 0981eh                          ; eb 16
     14314    jmp short 09820h                          ; eb 16
    1428414315    mov AH, strict byte 080h                  ; b4 80
    14285     jmp short 097d2h                          ; eb 14
    14286     jmp short 097d0h                          ; eb 10
     14316    jmp short 09822h                          ; eb 14
     14317    jmp short 09820h                          ; eb 10
    1428714318    mov ax, 00102h                            ; b8 02 01
    14288     jmp short 097ceh                          ; eb 09
    14289     jmp short 097ceh                          ; eb 07
     14319    jmp short 0981eh                          ; eb 09
     14320    jmp short 0981eh                          ; eb 07
    1429014321    mov BL, strict byte 000h                  ; b3 00
    1429114322    mov cx, strict word 00000h                ; b9 00 00
    14292     jmp short 097ceh                          ; eb 00
     14323    jmp short 0981eh                          ; eb 00
    1429314324    clc                                       ; f8
    1429414325    retn                                      ; c3
     
    1429614327    stc                                       ; f9
    1429714328    retn                                      ; c3
    14298 apm_pm16_entry:                              ; 0xf97d4 LB 0x11
     14329apm_pm16_entry:                              ; 0xf9824 LB 0x11
    1429914330    mov AH, strict byte 002h                  ; b4 02
    1430014331    push DS                                   ; 1e
     
    1430414335    add bp, strict byte 00008h                ; 83 c5 08
    1430514336    mov ds, bp                                ; 8e dd
    14306     call 0979ah                               ; e8 b8 ff
     14337    call 097eah                               ; e8 b8 ff
    1430714338    pop bp                                    ; 5d
    1430814339    pop DS                                    ; 1f
    1430914340    retf                                      ; cb
    1431014341
    14311   ; Padding 0x421b bytes at 0xf97e5
    14312   times 16923 db 0
     14342  ; Padding 0x41cb bytes at 0xf9835
     14343  times 16843 db 0
    1431314344
    1431414345section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1435714388    add bp, strict byte 00008h                ; 83 c5 08
    1435814389    push ebp                                  ; 66 55
    14359     mov bp, 097d6h                            ; bd d6 97
     14390    mov bp, 09826h                            ; bd 26 98
    1436014391    add byte [bx+si], al                      ; 00 00
    1436114392    push ebp                                  ; 66 55
     
    1507915110    call 01badh                               ; e8 71 38
    1508015111    call 01fa7h                               ; e8 68 3c
    15081     call 09051h                               ; e8 0f ad
    15082     call 080a8h                               ; e8 63 9d
     15112    call 09097h                               ; e8 55 ad
     15113    call 080d3h                               ; e8 8e 9d
    1508315114    call 0ed2fh                               ; e8 e7 09
    1508415115    call 0e2d2h                               ; e8 87 ff
     
    1608016111    popfw                                     ; 9d
    1608116112    jmp short 0f895h                          ; eb 13
    16082     call 09188h                               ; e8 03 99
     16113    call 091ceh                               ; e8 49 99
    1608316114    jmp short 0f87ch                          ; eb f5
    1608416115int15_handler_mouse:                         ; 0xff887 LB 0x5
     
    1620916240    db  018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
    1621016241    db  076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
    16211     db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 01bh, 095h, 066h
     16242    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 061h, 095h, 066h
    1621216243    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 0cah, 06dh, 061h, 01fh, 007h
    1621316244    db  0cfh
     
    1631816349cpu_reset:                                   ; 0xffff0 LB 0x10
    1631916350    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    16320     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 05dh
     16351    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 03eh
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum

    r55078 r55260  
    1 52f20c4019f05d0a8b5d96985ecebb03 *VBoxPcBios.rom
     1dada536c6edc89409a8ebf3822aedeb9 *VBoxPcBios.rom
Note: See TracChangeset for help on using the changeset viewer.

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