VirtualBox

Changeset 68773 in vbox for trunk/src/VBox/Devices/PC


Ignore:
Timestamp:
Sep 15, 2017 1:16:01 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
118013
Message:

5.2 beta 3

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

Legend:

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

    r68421 r68773  
    11161116section CONST2 progbits vstart=0xd8e align=1 ; size=0x400 class=DATA group=DGROUP
    11171117_bios_cvs_version_string:                    ; 0xf0d8e LB 0x18
    1118     db  'VirtualBox 5.2.0_BETA2', 000h, 000h
     1118    db  'VirtualBox 5.2.0_BETA3', 000h, 000h
    11191119_bios_prefix_string:                         ; 0xf0da6 LB 0x8
    11201120    db  'BIOS: ', 000h, 000h
     
    11901190  times 1138 db 0
    11911191
    1192 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e08 class=CODE group=AUTO
     1192section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e18 class=CODE group=AUTO
    11931193rom_scan_:                                   ; 0xf1600 LB 0x50
    11941194    push bp                                   ; 55
     
    15851585    mov bx, strict word 0000ah                ; bb 0a 00
    15861586    xor cx, cx                                ; 31 c9
    1587     call 0a0a0h                               ; e8 d3 87
     1587    call 0a0b0h                               ; e8 e3 87
    15881588    mov word [bp-008h], ax                    ; 89 46 f8
    15891589    mov cx, dx                                ; 89 d1
     
    18151815    mov dx, word [bp-026h]                    ; 8b 56 da
    18161816    mov si, word [bp-01eh]                    ; 8b 76 e2
    1817     call 0a0d0h                               ; e8 d3 85
     1817    call 0a0e0h                               ; e8 e3 85
    18181818    mov ax, dx                                ; 89 d0
    18191819    xor ah, dh                                ; 30 f4
     
    22542254    mov dx, word [es:si]                      ; 26 8b 14
    22552255    mov si, strict word 00018h                ; be 18 00
    2256     call 0a0d0h                               ; e8 80 81
     2256    call 0a0e0h                               ; e8 90 81
    22572257    xor dh, dh                                ; 30 f6
    22582258    mov word [bp-014h], dx                    ; 89 56 ec
     
    22642264    mov dx, word [es:si]                      ; 26 8b 14
    22652265    mov si, strict word 00020h                ; be 20 00
    2266     call 0a0d0h                               ; e8 60 81
     2266    call 0a0e0h                               ; e8 70 81
    22672267    mov bx, dx                                ; 89 d3
    22682268    mov ax, word [bp-01ch]                    ; 8b 46 e4
     
    22952295    mov dx, word [es:si]                      ; 26 8b 14
    22962296    mov si, strict word 00008h                ; be 08 00
    2297     call 0a0d0h                               ; e8 0f 81
     2297    call 0a0e0h                               ; e8 1f 81
    22982298    mov word [bp-012h], dx                    ; 89 56 ee
    22992299    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23042304    mov dx, word [es:si]                      ; 26 8b 14
    23052305    mov si, strict word 00018h                ; be 18 00
    2306     call 0a0d0h                               ; e8 f1 80
     2306    call 0a0e0h                               ; e8 01 81
    23072307    mov ah, dl                                ; 88 d4
    23082308    and ah, 00fh                              ; 80 e4 0f
     
    28612861    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    28622862    mov si, strict word 0000bh                ; be 0b 00
    2863     call 0a0d0h                               ; e8 49 7b
     2863    call 0a0e0h                               ; e8 59 7b
    28642864    mov word [bp-024h], dx                    ; 89 56 dc
    28652865    mov word [bp-032h], cx                    ; 89 4e ce
     
    31373137    mov dx, word [bp-024h]                    ; 8b 56 dc
    31383138    mov si, strict word 00018h                ; be 18 00
    3139     call 0a0d0h                               ; e8 87 78
     3139    call 0a0e0h                               ; e8 97 78
    31403140    xor dh, dh                                ; 30 f6
    31413141    mov word [bp-014h], dx                    ; 89 56 ec
     
    31453145    mov dx, word [bp-024h]                    ; 8b 56 dc
    31463146    mov si, strict word 00020h                ; be 20 00
    3147     call 0a0d0h                               ; e8 70 78
     3147    call 0a0e0h                               ; e8 80 78
    31483148    mov bx, dx                                ; 89 d3
    31493149    mov ax, word [bp-022h]                    ; 8b 46 de
     
    31793179    mov dx, word [bp-024h]                    ; 8b 56 dc
    31803180    mov si, strict word 00008h                ; be 08 00
    3181     call 0a0d0h                               ; e8 1c 78
     3181    call 0a0e0h                               ; e8 2c 78
    31823182    mov word [bp-00ch], ax                    ; 89 46 f4
    31833183    mov word [bp-00eh], bx                    ; 89 5e f2
     
    31863186    mov word [bp-018h], dx                    ; 89 56 e8
    31873187    mov si, strict word 00010h                ; be 10 00
    3188     call 0a0d0h                               ; e8 07 78
     3188    call 0a0e0h                               ; e8 17 78
    31893189    mov word [bp-024h], dx                    ; 89 56 dc
    31903190    mov ax, dx                                ; 89 d0
     
    54685468    mov dx, ss                                ; 8c d2
    54695469    lea ax, [bp-026h]                         ; 8d 46 da
    5470     call 0a0f0h                               ; e8 39 63
     5470    call 0a100h                               ; e8 49 63
    54715471    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    54725472    mov ax, strict word 00011h                ; b8 11 00
     
    59415941    xor dl, dl                                ; 30 d2
    59425942    xor cx, cx                                ; 31 c9
    5943     call 0a080h                               ; e8 63 5d
     5943    call 0a090h                               ; e8 73 5d
    59445944    xor bx, bx                                ; 31 db
    59455945    add ax, si                                ; 01 f0
     
    59475947    mov bx, di                                ; 89 fb
    59485948    xor cx, cx                                ; 31 c9
    5949     call 0a080h                               ; e8 56 5d
     5949    call 0a090h                               ; e8 66 5d
    59505950    mov bx, ax                                ; 89 c3
    59515951    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    59825982    mov dx, ss                                ; 8c d2
    59835983    lea ax, [bp-02eh]                         ; 8d 46 d2
    5984     call 0a0f0h                               ; e8 6f 5d
     5984    call 0a100h                               ; e8 7f 5d
    59855985    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    59865986    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    63216321    mov dx, ss                                ; 8c d2
    63226322    lea ax, [bp-030h]                         ; 8d 46 d0
    6323     call 0a0f0h                               ; e8 92 59
     6323    call 0a100h                               ; e8 a2 59
    63246324    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    63256325    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    82548254    mov dx, word [bp+00ch]                    ; 8b 56 0c
    82558255    mov si, strict word 00020h                ; be 20 00
    8256     call 0a0d0h                               ; e8 a1 46
     8256    call 0a0e0h                               ; e8 b1 46
    82578257    test ax, ax                               ; 85 c0
    82588258    jne short 05a3fh                          ; 75 0c
     
    82928292    mov bx, strict word 0003fh                ; bb 3f 00
    82938293    xor cx, cx                                ; 31 c9
    8294     call 0a080h                               ; e8 f8 45
     8294    call 0a090h                               ; e8 08 46
    82958295    mov bx, ax                                ; 89 c3
    82968296    mov cx, dx                                ; 89 d1
    82978297    mov ax, word [bp-004h]                    ; 8b 46 fc
    82988298    mov dx, si                                ; 89 f2
    8299     call 0a0a0h                               ; e8 0c 46
     8299    call 0a0b0h                               ; e8 1c 46
    83008300    mov word [es:di+002h], ax                 ; 26 89 45 02
    83018301    cmp ax, 00400h                            ; 3d 00 04
     
    85118511    mov bx, cx                                ; 89 cb
    85128512    xor cx, cx                                ; 31 c9
    8513     call 0a080h                               ; e8 cd 43
     8513    call 0a090h                               ; e8 dd 43
    85148514    xor bx, bx                                ; 31 db
    85158515    add ax, word [bp-006h]                    ; 03 46 fa
     
    85178517    mov bx, word [bp-008h]                    ; 8b 5e f8
    85188518    xor cx, cx                                ; 31 c9
    8519     call 0a080h                               ; e8 be 43
     8519    call 0a090h                               ; e8 ce 43
    85208520    xor bx, bx                                ; 31 db
    85218521    add ax, word [bp-004h]                    ; 03 46 fc
     
    86858685    mov bx, word [bp-006h]                    ; 8b 5e fa
    86868686    xor cx, cx                                ; 31 c9
    8687     call 0a080h                               ; e8 e7 41
     8687    call 0a090h                               ; e8 f7 41
    86888688    mov bx, word [bp-004h]                    ; 8b 5e fc
    86898689    xor cx, cx                                ; 31 c9
    8690     call 0a080h                               ; e8 df 41
     8690    call 0a090h                               ; e8 ef 41
    86918691    mov word [bp-00eh], ax                    ; 89 46 f2
    86928692    mov word [bp-00ah], dx                    ; 89 56 f6
     
    88268826    xor bx, bx                                ; 31 db
    88278827    mov si, strict word 00020h                ; be 20 00
    8828     call 0a0e0h                               ; e8 a2 40
     8828    call 0a0f0h                               ; e8 b2 40
    88298829    mov si, ax                                ; 89 c6
    88308830    mov word [bp-00ch], bx                    ; 89 5e f4
     
    89838983    mov bx, word [bp-00ch]                    ; 8b 5e f4
    89848984    mov si, strict word 00020h                ; be 20 00
    8985     call 0a0d0h                               ; e8 ae 3e
     8985    call 0a0e0h                               ; e8 be 3e
    89868986    mov bx, di                                ; 89 fb
    89878987    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    93399339    mov bx, strict word 0000fh                ; bb 0f 00
    93409340    xor cx, cx                                ; 31 c9
    9341     call 0a0a0h                               ; e8 eb 3a
     9341    call 0a0b0h                               ; e8 fb 3a
    93429342    mov cx, ax                                ; 89 c1
    93439343    mov bx, dx                                ; 89 d3
     
    1244812448    mov dx, ss                                ; 8c d2
    1244912449    lea ax, [bp-046h]                         ; 8d 46 ba
    12450     call 0a0f0h                               ; e8 d0 1d
     12450    call 0a100h                               ; e8 e0 1d
    1245112451    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1245212452    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1257912579    mov dx, word [bp-014h]                    ; 8b 56 ec
    1258012580    mov si, strict word 0000ch                ; be 0c 00
    12581     call 0a0d0h                               ; e8 69 1c
     12581    call 0a0e0h                               ; e8 79 1c
    1258212582    mov word [bp-02ah], ax                    ; 89 46 d6
    1258312583    mov word [bp-016h], bx                    ; 89 5e ea
     
    1260112601    mov dx, word [bp-014h]                    ; 8b 56 ec
    1260212602    mov si, strict word 00006h                ; be 06 00
    12603     call 0a0d0h                               ; e8 28 1c
     12603    call 0a0e0h                               ; e8 38 1c
    1260412604    mov si, word [bp-01eh]                    ; 8b 76 e2
    1260512605    add si, dx                                ; 01 d6
     
    1261912619    mov dx, si                                ; 89 f2
    1262012620    mov si, strict word 00008h                ; be 08 00
    12621     call 0a0d0h                               ; e8 f8 1b
     12621    call 0a0e0h                               ; e8 08 1c
    1262212622    mov word [bp-02eh], bx                    ; 89 5e d2
    1262312623    mov word [bp-030h], cx                    ; 89 4e d0
     
    1262812628    mov dx, word [bp-036h]                    ; 8b 56 ca
    1262912629    mov si, strict word 00010h                ; be 10 00
    12630     call 0a0d0h                               ; e8 dd 1b
     12630    call 0a0e0h                               ; e8 ed 1b
    1263112631    mov si, word [bp-032h]                    ; 8b 76 ce
    1263212632    add si, dx                                ; 01 d6
     
    1265412654    mov dx, word [bp-014h]                    ; 8b 56 ec
    1265512655    mov si, strict word 0000bh                ; be 0b 00
    12656     call 0a0d0h                               ; e8 91 1b
     12656    call 0a0e0h                               ; e8 a1 1b
    1265712657    mov si, dx                                ; 89 d6
    1265812658    mov dx, cx                                ; 89 ca
     
    1286412864    push bx                                   ; 53
    1286512865    push cx                                   ; 51
    12866     call 09ea5h                               ; e8 0f 17
     12866    call 09eb5h                               ; e8 1f 17
    1286712867    mov bx, ax                                ; 89 c3
    1286812868    cmp ax, strict word 0ffffh                ; 3d ff ff
     
    1287512875    mov cx, strict word 00007h                ; b9 07 00
    1287612876    mov bx, strict word 00004h                ; bb 04 00
    12877     call 09f6eh                               ; e8 bd 17
     12877    call 09f7eh                               ; e8 cd 17
    1287812878    lea sp, [bp-004h]                         ; 8d 66 fc
    1287912879    pop cx                                    ; 59
     
    1315913159    mov ax, 00080h                            ; b8 80 00
    1316013160    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13161     call 0a0f0h                               ; e8 e9 16
     13161    call 0a100h                               ; e8 f9 16
    1316213162    mov es, [bp-00ah]                         ; 8e 46 f6
    1316313163    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1317713177    mov dx, word [es:si]                      ; 26 8b 14
    1317813178    mov si, strict word 00008h                ; be 08 00
    13179     call 0a0d0h                               ; e8 85 16
     13179    call 0a0e0h                               ; e8 95 16
    1318013180    mov es, [bp-00ah]                         ; 8e 46 f6
    1318113181    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1318813188    mov dx, word [es:si]                      ; 26 8b 14
    1318913189    mov si, strict word 00010h                ; be 10 00
    13190     call 0a0d0h                               ; e8 5f 16
     13190    call 0a0e0h                               ; e8 6f 16
    1319113191    mov es, [bp-00ah]                         ; 8e 46 f6
    1319213192    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1320013200    mov dx, word [es:si]                      ; 26 8b 14
    1320113201    mov si, strict word 00018h                ; be 18 00
    13202     call 0a0d0h                               ; e8 33 16
     13202    call 0a0e0h                               ; e8 43 16
    1320313203    mov es, [bp-00ah]                         ; 8e 46 f6
    1320413204    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1321113211    mov dx, word [es:si]                      ; 26 8b 14
    1321213212    mov si, strict word 00020h                ; be 20 00
    13213     call 0a0d0h                               ; e8 0d 16
     13213    call 0a0e0h                               ; e8 1d 16
    1321413214    mov es, [bp-00ah]                         ; 8e 46 f6
    1321513215    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1322213222    mov dx, word [es:si]                      ; 26 8b 14
    1322313223    mov si, strict word 00028h                ; be 28 00
    13224     call 0a0d0h                               ; e8 e7 15
     13224    call 0a0e0h                               ; e8 f7 15
    1322513225    mov es, [bp-00ah]                         ; 8e 46 f6
    1322613226    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1323613236    mov bx, word [bp-010h]                    ; 8b 5e f0
    1323713237    xor cx, cx                                ; 31 c9
    13238     call 0a080h                               ; e8 62 15
     13238    call 0a090h                               ; e8 72 15
    1323913239    push dx                                   ; 52
    1324013240    push ax                                   ; 50
     
    1324613246    mov ax, 0026ah                            ; b8 6a 02
    1324713247    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13248     call 09fceh                               ; e8 94 14
     13248    call 09fdeh                               ; e8 a4 14
    1324913249    mov es, [bp-00ah]                         ; 8e 46 f6
    1325013250    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1330913309    add ax, 0026ah                            ; 05 6a 02
    1331013310    mov dx, cx                                ; 89 ca
    13311     call 0a045h                               ; e8 2e 14
     13311    call 0a055h                               ; e8 3e 14
    1331213312    mov es, cx                                ; 8e c1
    1331313313    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     
    1339313393    mov ax, di                                ; 89 f8
    1339413394    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13395     call 0a0f0h                               ; e8 29 14
     13395    call 0a100h                               ; e8 39 14
    1339613396    lea ax, [di+00080h]                       ; 8d 85 80 00
    1339713397    mov cx, strict word 00040h                ; b9 40 00
    1339813398    xor bx, bx                                ; 31 db
    1339913399    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13400     call 0a0f0h                               ; e8 1a 14
     13400    call 0a100h                               ; e8 2a 14
    1340113401    lea ax, [di+00200h]                       ; 8d 85 00 02
    1340213402    mov cx, strict word 00060h                ; b9 60 00
    1340313403    xor bx, bx                                ; 31 db
    1340413404    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13405     call 0a0f0h                               ; e8 0b 14
     13405    call 0a100h                               ; e8 1b 14
    1340613406    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1340713407    xor ah, ah                                ; 30 e4
     
    1357713577    mov ax, si                                ; 89 f0
    1357813578    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13579     call 0a0f0h                               ; e8 a8 12
     13579    call 0a100h                               ; e8 b8 12
    1358013580    lea ax, [si+00080h]                       ; 8d 84 80 00
    1358113581    mov cx, strict word 00040h                ; b9 40 00
    1358213582    xor bx, bx                                ; 31 db
    1358313583    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13584     call 0a0f0h                               ; e8 99 12
     13584    call 0a100h                               ; e8 a9 12
    1358513585    lea di, [si+00200h]                       ; 8d bc 00 02
    1358613586    mov cx, strict word 00060h                ; b9 60 00
     
    1358813588    mov ax, di                                ; 89 f8
    1358913589    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13590     call 0a0f0h                               ; e8 88 12
     13590    call 0a100h                               ; e8 98 12
    1359113591    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1359213592    xor bh, bh                                ; 30 ff
     
    1392013920    mov dx, word [bp+008h]                    ; 8b 56 08
    1392113921    xor cx, cx                                ; 31 c9
    13922     call 0a0a0h                               ; e8 e7 0e
     13922    call 0a0b0h                               ; e8 f7 0e
    1392313923    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1392413924    xor di, di                                ; 31 ff
     
    1394713947    mov ax, 000c0h                            ; b8 c0 00
    1394813948    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13949     call 0a100h                               ; e8 f3 0e
     13949    call 0a110h                               ; e8 03 0f
    1395013950    mov es, [bp-008h]                         ; 8e 46 f8
    1395113951    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1400314003    pop bp                                    ; 5d
    1400414004    retn 0000ch                               ; c2 0c 00
    14005 ahci_port_detect_device_:                    ; 0xf92b5 LB 0x4e3
     14005wait_ticks_device_init_:                     ; 0xf92b5 LB 0x5
     14006    push bp                                   ; 55
     14007    mov bp, sp                                ; 89 e5
     14008    pop bp                                    ; 5d
     14009    retn                                      ; c3
     14010ahci_port_detect_device_:                    ; 0xf92ba LB 0x4ee
    1400614011    push bp                                   ; 55
    1400714012    mov bp, sp                                ; 89 e5
     
    1400914014    push si                                   ; 56
    1401014015    push di                                   ; 57
    14011     sub sp, 00224h                            ; 81 ec 24 02
     14016    sub sp, 0022ch                            ; 81 ec 2c 02
    1401214017    mov si, ax                                ; 89 c6
    14013     mov word [bp-010h], dx                    ; 89 56 f0
    14014     mov byte [bp-00ch], bl                    ; 88 5e f4
     14018    mov word [bp-018h], dx                    ; 89 56 e8
     14019    mov byte [bp-00ah], bl                    ; 88 5e f6
     14020    mov word [bp-01ch], strict word 00000h    ; c7 46 e4 00 00
    1401514021    mov cl, bl                                ; 88 d9
    1401614022    xor ch, ch                                ; 30 ed
    1401714023    mov bx, cx                                ; 89 cb
    14018     call 08db0h                               ; e8 e0 fa
     14024    call 08db0h                               ; e8 d6 fa
    1401914025    mov dx, strict word 0000eh                ; ba 0e 00
    1402014026    mov ax, strict word 00040h                ; b8 40 00
    14021     call 0166ch                               ; e8 93 83
    14022     mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
     14027    call 0166ch                               ; e8 89 83
     14028    mov word [bp-010h], 00122h                ; c7 46 f0 22 01
    1402314029    mov word [bp-016h], ax                    ; 89 46 ea
    14024     sal cx, 007h                              ; c1 e1 07
    14025     mov word [bp-024h], cx                    ; 89 4e dc
    1402614030    mov ax, cx                                ; 89 c8
     14031    sal ax, 007h                              ; c1 e0 07
    1402714032    add ax, 0012ch                            ; 05 2c 01
    1402814033    cwd                                       ; 99
    14029     mov bx, ax                                ; 89 c3
    14030     mov di, dx                                ; 89 d7
    14031     mov es, [bp-010h]                         ; 8e 46 f0
     14034    mov di, ax                                ; 89 c7
     14035    mov bx, dx                                ; 89 d3
     14036    mov es, [bp-018h]                         ; 8e 46 e8
    1403214037    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    14033     mov cx, di                                ; 89 f9
     14038    mov cx, bx                                ; 89 d9
    1403414039    xchg cx, ax                               ; 91
    1403514040    sal eax, 010h                             ; 66 c1 e0 10
     
    1403714042    ; mov ax, cx                                ; 8b c1
    1403814043    out DX, eax                               ; 66 ef
    14039     mov es, [bp-010h]                         ; 8e 46 f0
     14044    mov es, [bp-018h]                         ; 8e 46 e8
    1404014045    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1404114046    add dx, strict byte 00004h                ; 83 c2 04
     
    1404714052    ; mov ax, cx                                ; 8b c1
    1404814053    out DX, eax                               ; 66 ef
    14049     mov es, [bp-010h]                         ; 8e 46 f0
     14054    mov es, [bp-018h]                         ; 8e 46 e8
    1405014055    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    14051     mov ax, bx                                ; 89 d8
    14052     mov cx, di                                ; 89 f9
     14056    mov ax, di                                ; 89 f8
     14057    mov cx, bx                                ; 89 d9
    1405314058    xchg cx, ax                               ; 91
    1405414059    sal eax, 010h                             ; 66 c1 e0 10
     
    1405614061    ; mov ax, cx                                ; 8b c1
    1405714062    out DX, eax                               ; 66 ef
    14058     mov es, [bp-010h]                         ; 8e 46 f0
     14063    mov es, [bp-018h]                         ; 8e 46 e8
    1405914064    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1406014065    add dx, strict byte 00004h                ; 83 c2 04
     
    1406614071    ; mov ax, cx                                ; 8b c1
    1406714072    out DX, eax                               ; 66 ef
    14068     mov ax, word [bp-024h]                    ; 8b 46 dc
     14073    mov di, strict word 0006ch                ; bf 6c 00
     14074    mov ax, strict word 00040h                ; b8 40 00
     14075    mov word [bp-012h], ax                    ; 89 46 ee
     14076    mov es, ax                                ; 8e c0
     14077    mov ax, word [es:di]                      ; 26 8b 05
     14078    add ax, strict word 00003h                ; 05 03 00
     14079    mov word [bp-01ah], ax                    ; 89 46 e6
     14080    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     14081    adc ax, strict word 00000h                ; 15 00 00
     14082    mov word [bp-024h], ax                    ; 89 46 dc
     14083    mov es, [bp-012h]                         ; 8e 46 ee
     14084    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     14085    cmp ax, word [bp-024h]                    ; 3b 46 dc
     14086    jc short 0938ch                           ; 72 11
     14087    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     14088    cmp ax, word [bp-024h]                    ; 3b 46 dc
     14089    jne short 093d8h                          ; 75 54
     14090    mov ax, word [es:di]                      ; 26 8b 05
     14091    cmp ax, word [bp-01ah]                    ; 3b 46 e6
     14092    jnc short 093d8h                          ; 73 4c
     14093    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14094    xor ah, ah                                ; 30 e4
     14095    sal ax, 007h                              ; c1 e0 07
    1406914096    add ax, 00128h                            ; 05 28 01
    1407014097    cwd                                       ; 99
    14071     mov es, [bp-010h]                         ; 8e 46 f0
     14098    mov es, [bp-018h]                         ; 8e 46 e8
    1407214099    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1407314100    mov cx, dx                                ; 89 d1
     
    1407814105    ; mov ax, cx                                ; 8b c1
    1407914106    out DX, eax                               ; 66 ef
    14080     mov es, [bp-010h]                         ; 8e 46 f0
     14107    mov es, [bp-018h]                         ; 8e 46 e8
    1408114108    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1408214109    add dx, strict byte 00004h                ; 83 c2 04
     
    1408614113    shr eax, 010h                             ; 66 c1 e8 10
    1408714114    xchg dx, ax                               ; 92
     14115    mov word [bp-020h], ax                    ; 89 46 e0
     14116    mov word [bp-01eh], dx                    ; 89 56 e2
    1408814117    push strict byte 00000h                   ; 6a 00
    1408914118    mov bx, strict word 0000fh                ; bb 0f 00
    1409014119    xor cx, cx                                ; 31 c9
    14091     call 08839h                               ; e8 b5 f4
    14092     test ax, ax                               ; 85 c0
    14093     jne short 0938bh                          ; 75 03
    14094     jmp near 09790h                           ; e9 05 04
    14095     mov al, byte [bp-00ch]                    ; 8a 46 f4
    14096     xor ah, ah                                ; 30 e4
    14097     sal ax, 007h                              ; c1 e0 07
    14098     mov word [bp-01ch], ax                    ; 89 46 e4
    14099     add ax, 00128h                            ; 05 28 01
     14120    call 08839h                               ; e8 68 f4
     14121    cmp ax, strict word 00003h                ; 3d 03 00
     14122    jne short 0936fh                          ; 75 99
     14123    jmp short 093e1h                          ; eb 09
     14124    cmp word [bp-01ch], strict byte 00000h    ; 83 7e e4 00
     14125    jne short 093e1h                          ; 75 03
     14126    jmp near 097a0h                           ; e9 bf 03
     14127    push strict byte 00000h                   ; 6a 00
     14128    mov bx, strict word 0000fh                ; bb 0f 00
     14129    xor cx, cx                                ; 31 c9
     14130    mov ax, word [bp-020h]                    ; 8b 46 e0
     14131    mov dx, word [bp-01eh]                    ; 8b 56 e2
     14132    call 08839h                               ; e8 48 f4
     14133    cmp ax, strict word 00003h                ; 3d 03 00
     14134    jne short 093deh                          ; 75 e8
     14135    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14136    xor ah, ah                                ; 30 e4
     14137    mov di, ax                                ; 89 c7
     14138    sal di, 007h                              ; c1 e7 07
     14139    lea ax, [di+00130h]                       ; 8d 85 30 01
    1410014140    cwd                                       ; 99
    14101     mov es, [bp-010h]                         ; 8e 46 f0
     14141    mov es, [bp-018h]                         ; 8e 46 e8
    1410214142    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1410314143    mov cx, dx                                ; 89 d1
     
    1410814148    ; mov ax, cx                                ; 8b c1
    1410914149    out DX, eax                               ; 66 ef
    14110     mov es, [bp-010h]                         ; 8e 46 f0
    14111     mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    14112     add dx, strict byte 00004h                ; 83 c2 04
    14113     in eax, DX                                ; 66 ed
    14114     db  08bh, 0d0h
    14115     ; mov dx, ax                                ; 8b d0
    14116     shr eax, 010h                             ; 66 c1 e8 10
    14117     xchg dx, ax                               ; 92
    14118     mov word [bp-01ah], ax                    ; 89 46 e6
    14119     mov di, dx                                ; 89 d7
    14120     push strict byte 00000h                   ; 6a 00
    14121     mov bx, strict word 0000fh                ; bb 0f 00
    14122     xor cx, cx                                ; 31 c9
    14123     call 08839h                               ; e8 67 f4
    14124     cmp ax, strict word 00001h                ; 3d 01 00
    14125     je short 0938bh                           ; 74 b4
    14126     push strict byte 00000h                   ; 6a 00
    14127     mov bx, strict word 0000fh                ; bb 0f 00
    14128     xor cx, cx                                ; 31 c9
    14129     mov ax, word [bp-01ah]                    ; 8b 46 e6
    14130     mov dx, di                                ; 89 fa
    14131     call 08839h                               ; e8 53 f4
    14132     cmp ax, strict word 00003h                ; 3d 03 00
    14133     jne short 09388h                          ; 75 9d
    14134     mov ax, word [bp-01ch]                    ; 8b 46 e4
    14135     add ax, 00130h                            ; 05 30 01
    14136     cwd                                       ; 99
    14137     mov es, [bp-010h]                         ; 8e 46 f0
    14138     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    14139     mov cx, dx                                ; 89 d1
    14140     mov dx, bx                                ; 89 da
    14141     xchg cx, ax                               ; 91
    14142     sal eax, 010h                             ; 66 c1 e0 10
    14143     db  08bh, 0c1h
    14144     ; mov ax, cx                                ; 8b c1
    14145     out DX, eax                               ; 66 ef
    14146     mov es, [bp-010h]                         ; 8e 46 f0
     14150    mov es, [bp-018h]                         ; 8e 46 e8
    1414714151    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1414814152    add dx, strict byte 00004h                ; 83 c2 04
     
    1415514159    out DX, eax                               ; 66 ef
    1415614160    mov es, [bp-016h]                         ; 8e 46 ea
    14157     mov bx, word [bp-00eh]                    ; 8b 5e f2
     14161    mov bx, word [bp-010h]                    ; 8b 5e f0
    1415814162    mov al, byte [es:bx+00231h]               ; 26 8a 87 31 02
    1415914163    mov byte [bp-008h], al                    ; 88 46 f8
    1416014164    cmp AL, strict byte 004h                  ; 3c 04
    14161     jc short 09435h                           ; 72 03
    14162     jmp near 09790h                           ; e9 5b 03
    14163     mov ax, word [bp-01ch]                    ; 8b 46 e4
    14164     add ax, 00118h                            ; 05 18 01
    14165     mov es, [bp-010h]                         ; 8e 46 f0
     14165    jnc short 093deh                          ; 73 99
     14166    lea ax, [di+00118h]                       ; 8d 85 18 01
     14167    mov es, [bp-018h]                         ; 8e 46 e8
    1416614168    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1416714169    xor cx, cx                                ; 31 c9
     
    1418714189    ; mov ax, cx                                ; 8b c1
    1418814190    out DX, eax                               ; 66 ef
    14189     mov ax, word [bp-01ch]                    ; 8b 46 e4
    14190     add ax, 00124h                            ; 05 24 01
     14191    lea ax, [di+00124h]                       ; 8d 85 24 01
    1419114192    cwd                                       ; 99
    14192     mov es, [bp-010h]                         ; 8e 46 f0
     14193    mov es, [bp-018h]                         ; 8e 46 e8
    1419314194    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1419414195    mov cx, dx                                ; 89 d1
     
    1419914200    ; mov ax, cx                                ; 8b c1
    1420014201    out DX, eax                               ; 66 ef
    14201     mov es, [bp-010h]                         ; 8e 46 f0
     14202    mov es, [bp-018h]                         ; 8e 46 e8
    1420214203    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1420314204    add dx, strict byte 00004h                ; 83 c2 04
     
    1420714208    shr eax, 010h                             ; 66 c1 e8 10
    1420814209    xchg dx, ax                               ; 92
    14209     mov cl, byte [bp-008h]                    ; 8a 4e f8
    14210     add cl, 00ch                              ; 80 c1 0c
    14211     test dx, dx                               ; 85 d2
    14212     jne short 094fbh                          ; 75 54
     14210    mov bx, dx                                ; 89 d3
     14211    mov dl, byte [bp-008h]                    ; 8a 56 f8
     14212    add dl, 00ch                              ; 80 c2 0c
     14213    mov byte [bp-00eh], dl                    ; 88 56 f2
     14214    test bx, bx                               ; 85 db
     14215    jne short 0950fh                          ; 75 57
    1421314216    cmp ax, 00101h                            ; 3d 01 01
    14214     jne short 094fbh                          ; 75 4f
     14217    jne short 0950fh                          ; 75 52
    1421514218    mov es, [bp-016h]                         ; 8e 46 ea
    14216     mov bx, word [bp-00eh]                    ; 8b 5e f2
     14219    mov bx, word [bp-010h]                    ; 8b 5e f0
    1421714220    mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
    1421814221    mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00
    1421914222    mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00
    1422014223    mov word [es:bx], strict word 00000h      ; 26 c7 07 00 00
    14221     lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
     14224    lea dx, [bp-00232h]                       ; 8d 96 ce fd
    1422214225    mov word [es:bx+008h], dx                 ; 26 89 57 08
    1422314226    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
     
    1422514228    mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
    1422614229    mov bx, 000ech                            ; bb ec 00
    14227     mov ax, word [bp-00eh]                    ; 8b 46 f2
     14230    mov ax, word [bp-010h]                    ; 8b 46 f0
    1422814231    mov dx, es                                ; 8c c2
    14229     call 089c9h                               ; e8 dd f4
    14230     mov byte [bp-00ah], cl                    ; 88 4e f6
    14231     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14232     je short 094feh                           ; 74 08
     14232    call 089c9h                               ; e8 cc f4
     14233    mov al, byte [bp-00eh]                    ; 8a 46 f2
     14234    mov byte [bp-00ch], al                    ; 88 46 f4
     14235    test byte [bp-00232h], 080h               ; f6 86 ce fd 80
     14236    je short 09512h                           ; 74 08
    1423314237    mov ax, strict word 00001h                ; b8 01 00
    14234     jmp short 09500h                          ; eb 05
    14235     jmp near 096ceh                           ; e9 d0 01
     14238    jmp short 09514h                          ; eb 05
     14239    jmp near 096dbh                           ; e9 c9 01
    1423614240    xor ax, ax                                ; 31 c0
    1423714241    mov dl, al                                ; 88 c2
    14238     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
    14239     mov word [bp-018h], ax                    ; 89 46 e8
    14240     mov ax, word [bp-00224h]                  ; 8b 86 dc fd
     14242    mov ax, word [bp-00230h]                  ; 8b 86 d0 fd
     14243    mov word [bp-02ch], ax                    ; 89 46 d4
     14244    mov ax, word [bp-0022ch]                  ; 8b 86 d4 fd
     14245    mov word [bp-026h], ax                    ; 89 46 da
     14246    mov ax, word [bp-00226h]                  ; 8b 86 da fd
     14247    mov word [bp-028h], ax                    ; 89 46 d8
     14248    mov si, word [bp-001bah]                  ; 8b b6 46 fe
     14249    mov di, word [bp-001b8h]                  ; 8b be 48 fe
     14250    xor ax, ax                                ; 31 c0
     14251    mov word [bp-014h], ax                    ; 89 46 ec
    1424114252    mov word [bp-022h], ax                    ; 89 46 de
    14242     mov ax, word [bp-0021eh]                  ; 8b 86 e2 fd
    14243     mov word [bp-020h], ax                    ; 89 46 e0
    14244     mov di, word [bp-001b2h]                  ; 8b be 4e fe
    14245     mov ax, word [bp-001b0h]                  ; 8b 86 50 fe
     14253    cmp di, 00fffh                            ; 81 ff ff 0f
     14254    jne short 0955ch                          ; 75 1b
     14255    cmp si, strict byte 0ffffh                ; 83 fe ff
     14256    jne short 0955ch                          ; 75 16
     14257    mov ax, word [bp-00164h]                  ; 8b 86 9c fe
     14258    mov word [bp-022h], ax                    ; 89 46 de
     14259    mov ax, word [bp-00166h]                  ; 8b 86 9a fe
    1424614260    mov word [bp-014h], ax                    ; 89 46 ec
    14247     xor ax, ax                                ; 31 c0
    14248     mov word [bp-012h], ax                    ; 89 46 ee
    14249     mov word [bp-01eh], ax                    ; 89 46 e2
    14250     cmp word [bp-014h], 00fffh                ; 81 7e ec ff 0f
    14251     jne short 0954fh                          ; 75 1e
    14252     cmp di, strict byte 0ffffh                ; 83 ff ff
    14253     jne short 0954fh                          ; 75 19
    14254     mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
    14255     mov word [bp-01eh], ax                    ; 89 46 e2
    14256     mov ax, word [bp-0015eh]                  ; 8b 86 a2 fe
    14257     mov word [bp-012h], ax                    ; 89 46 ee
    14258     mov ax, word [bp-00160h]                  ; 8b 86 a0 fe
    14259     mov word [bp-014h], ax                    ; 89 46 ec
    14260     mov di, word [bp-00162h]                  ; 8b be 9e fe
     14261    mov di, word [bp-00168h]                  ; 8b be 98 fe
     14262    mov si, word [bp-0016ah]                  ; 8b b6 96 fe
    1426114263    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1426214264    xor bh, bh                                ; 30 ff
    1426314265    mov es, [bp-016h]                         ; 8e 46 ea
    14264     add bx, word [bp-00eh]                    ; 03 5e f2
     14266    add bx, word [bp-010h]                    ; 03 5e f0
     14267    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14268    mov byte [es:bx+0022dh], al               ; 26 88 87 2d 02
    1426514269    mov al, byte [bp-00ch]                    ; 8a 46 f4
    14266     mov byte [es:bx+0022dh], al               ; 26 88 87 2d 02
    14267     mov al, byte [bp-00ah]                    ; 8a 46 f6
    1426814270    xor ah, ah                                ; 30 e4
    1426914271    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
    14270     mov si, word [bp-00eh]                    ; 8b 76 f2
    14271     add si, ax                                ; 01 c6
    14272     mov word [es:si+022h], 0ff05h             ; 26 c7 44 22 05 ff
    14273     mov byte [es:si+024h], dl                 ; 26 88 54 24
    14274     mov byte [es:si+025h], 000h               ; 26 c6 44 25 00
    14275     mov word [es:si+028h], 00200h             ; 26 c7 44 28 00 02
    14276     mov byte [es:si+027h], 001h               ; 26 c6 44 27 01
    14277     mov ax, word [bp-01eh]                    ; 8b 46 e2
    14278     mov word [es:si+03ch], ax                 ; 26 89 44 3c
    14279     mov ax, word [bp-012h]                    ; 8b 46 ee
    14280     mov word [es:si+03ah], ax                 ; 26 89 44 3a
     14272    mov bx, word [bp-010h]                    ; 8b 5e f0
     14273    add bx, ax                                ; 01 c3
     14274    mov word [es:bx+022h], 0ff05h             ; 26 c7 47 22 05 ff
     14275    mov byte [es:bx+024h], dl                 ; 26 88 57 24
     14276    mov byte [es:bx+025h], 000h               ; 26 c6 47 25 00
     14277    mov word [es:bx+028h], 00200h             ; 26 c7 47 28 00 02
     14278    mov byte [es:bx+027h], 001h               ; 26 c6 47 27 01
     14279    mov ax, word [bp-022h]                    ; 8b 46 de
     14280    mov word [es:bx+03ch], ax                 ; 26 89 47 3c
    1428114281    mov ax, word [bp-014h]                    ; 8b 46 ec
    14282     mov word [es:si+038h], ax                 ; 26 89 44 38
    14283     mov word [es:si+036h], di                 ; 26 89 7c 36
    14284     mov ax, word [bp-022h]                    ; 8b 46 de
    14285     mov word [es:si+030h], ax                 ; 26 89 44 30
    14286     mov ax, word [bp-018h]                    ; 8b 46 e8
    14287     mov word [es:si+032h], ax                 ; 26 89 44 32
    14288     mov ax, word [bp-020h]                    ; 8b 46 e0
    14289     mov word [es:si+034h], ax                 ; 26 89 44 34
     14282    mov word [es:bx+03ah], ax                 ; 26 89 47 3a
     14283    mov word [es:bx+038h], di                 ; 26 89 7f 38
     14284    mov word [es:bx+036h], si                 ; 26 89 77 36
     14285    mov ax, word [bp-026h]                    ; 8b 46 da
     14286    mov word [es:bx+030h], ax                 ; 26 89 47 30
     14287    mov ax, word [bp-02ch]                    ; 8b 46 d4
     14288    mov word [es:bx+032h], ax                 ; 26 89 47 32
     14289    mov ax, word [bp-028h]                    ; 8b 46 d8
     14290    mov word [es:bx+034h], ax                 ; 26 89 47 34
    1429014291    mov al, byte [bp-008h]                    ; 8a 46 f8
    1429114292    cmp AL, strict byte 001h                  ; 3c 01
    14292     jc short 095cah                           ; 72 0c
    14293     jbe short 095d2h                          ; 76 12
     14293    jc short 095d4h                           ; 72 0c
     14294    jbe short 095dch                          ; 76 12
    1429414295    cmp AL, strict byte 003h                  ; 3c 03
    14295     je short 095dah                           ; 74 16
     14296    je short 095e4h                           ; 74 16
    1429614297    cmp AL, strict byte 002h                  ; 3c 02
    14297     je short 095d6h                           ; 74 0e
    14298     jmp short 09622h                          ; eb 58
     14298    je short 095e0h                           ; 74 0e
     14299    jmp short 09630h                          ; eb 5c
    1429914300    test al, al                               ; 84 c0
    14300     jne short 09622h                          ; 75 54
    14301     mov DL, strict byte 040h                  ; b2 40
    14302     jmp short 095dch                          ; eb 0a
    14303     mov DL, strict byte 048h                  ; b2 48
    14304     jmp short 095dch                          ; eb 06
    14305     mov DL, strict byte 050h                  ; b2 50
    14306     jmp short 095dch                          ; eb 02
    14307     mov DL, strict byte 058h                  ; b2 58
    14308     mov bl, dl                                ; 88 d3
    14309     add bl, 007h                              ; 80 c3 07
    14310     xor bh, bh                                ; 30 ff
    14311     mov ax, bx                                ; 89 d8
    14312     call 016ach                               ; e8 c4 80
     14301    jne short 09630h                          ; 75 58
     14302    mov BL, strict byte 040h                  ; b3 40
     14303    jmp short 095e6h                          ; eb 0a
     14304    mov BL, strict byte 048h                  ; b3 48
     14305    jmp short 095e6h                          ; eb 06
     14306    mov BL, strict byte 050h                  ; b3 50
     14307    jmp short 095e6h                          ; eb 02
     14308    mov BL, strict byte 058h                  ; b3 58
     14309    mov dl, bl                                ; 88 da
     14310    add dl, 007h                              ; 80 c2 07
     14311    xor dh, dh                                ; 30 f6
     14312    mov ax, dx                                ; 89 d0
     14313    call 016ach                               ; e8 ba 80
    1431314314    test al, al                               ; 84 c0
    14314     je short 09622h                           ; 74 36
    14315     mov al, dl                                ; 88 d0
     14315    je short 09630h                           ; 74 3a
     14316    mov al, bl                                ; 88 d8
    1431614317    db  0feh, 0c0h
    1431714318    ; inc al                                    ; fe c0
    1431814319    xor ah, ah                                ; 30 e4
    14319     call 016ach                               ; e8 b7 80
    14320     xor ah, ah                                ; 30 e4
    14321     mov cx, ax                                ; 89 c1
    14322     sal cx, 008h                              ; c1 e1 08
    14323     mov al, dl                                ; 88 d0
    14324     call 016ach                               ; e8 ab 80
    14325     xor ah, ah                                ; 30 e4
    14326     add ax, cx                                ; 01 c8
    14327     mov word [bp-028h], ax                    ; 89 46 d8
    14328     mov al, dl                                ; 88 d0
     14320    call 016ach                               ; e8 ad 80
     14321    xor ah, ah                                ; 30 e4
     14322    sal ax, 008h                              ; c1 e0 08
     14323    mov word [bp-02ah], ax                    ; 89 46 d6
     14324    mov al, bl                                ; 88 d8
     14325    xor ah, ah                                ; 30 e4
     14326    call 016ach                               ; e8 9e 80
     14327    xor ah, ah                                ; 30 e4
     14328    mov cx, word [bp-02ah]                    ; 8b 4e d6
     14329    add cx, ax                                ; 01 c1
     14330    mov word [bp-030h], cx                    ; 89 4e d0
     14331    mov al, bl                                ; 88 d8
    1432914332    add AL, strict byte 002h                  ; 04 02
    14330     xor ah, ah                                ; 30 e4
    14331     call 016ach                               ; e8 9b 80
    14332     xor ah, ah                                ; 30 e4
    14333     mov word [bp-02ah], ax                    ; 89 46 d6
    14334     mov ax, bx                                ; 89 d8
    14335     call 016ach                               ; e8 91 80
    14336     xor ah, ah                                ; 30 e4
    14337     mov word [bp-026h], ax                    ; 89 46 da
    14338     jmp short 09634h                          ; eb 12
    14339     push word [bp-01eh]                       ; ff 76 e2
    14340     push word [bp-012h]                       ; ff 76 ee
     14333    call 016ach                               ; e8 8d 80
     14334    xor ah, ah                                ; 30 e4
     14335    mov word [bp-032h], ax                    ; 89 46 ce
     14336    mov ax, dx                                ; 89 d0
     14337    call 016ach                               ; e8 83 80
     14338    xor ah, ah                                ; 30 e4
     14339    mov word [bp-02eh], ax                    ; 89 46 d2
     14340    jmp short 09640h                          ; eb 10
     14341    push word [bp-022h]                       ; ff 76 de
    1434114342    push word [bp-014h]                       ; ff 76 ec
    1434214343    push di                                   ; 57
     14344    push si                                   ; 56
    1434314345    mov dx, ss                                ; 8c d2
    14344     lea ax, [bp-02ah]                         ; 8d 46 d6
    14345     call 05a02h                               ; e8 ce c3
     14346    lea ax, [bp-032h]                         ; 8d 46 ce
     14347    call 05a02h                               ; e8 c2 c3
    1434614348    mov bx, 00da6h                            ; bb a6 0d
    1434714349    mov cx, ds                                ; 8c d9
    1434814350    mov ax, strict word 00004h                ; b8 04 00
    14349     call 01923h                               ; e8 e4 82
    14350     push word [bp-01eh]                       ; ff 76 e2
    14351     push word [bp-012h]                       ; ff 76 ee
     14351    call 01923h                               ; e8 d8 82
     14352    push word [bp-022h]                       ; ff 76 de
    1435214353    push word [bp-014h]                       ; ff 76 ec
    1435314354    push di                                   ; 57
    14354     mov ax, word [bp-026h]                    ; 8b 46 da
     14355    push si                                   ; 56
     14356    mov ax, word [bp-02eh]                    ; 8b 46 d2
    1435514357    push ax                                   ; 50
    14356     mov ax, word [bp-02ah]                    ; 8b 46 d6
     14358    mov ax, word [bp-032h]                    ; 8b 46 ce
    1435714359    push ax                                   ; 50
    14358     mov ax, word [bp-028h]                    ; 8b 46 d8
     14360    mov ax, word [bp-030h]                    ; 8b 46 d0
    1435914361    push ax                                   ; 50
    14360     push word [bp-020h]                       ; ff 76 e0
    14361     push word [bp-022h]                       ; ff 76 de
    14362     push word [bp-018h]                       ; ff 76 e8
    14363     mov al, byte [bp-00ch]                    ; 8a 46 f4
     14362    push word [bp-028h]                       ; ff 76 d8
     14363    push word [bp-026h]                       ; ff 76 da
     14364    push word [bp-02ch]                       ; ff 76 d4
     14365    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1436414366    xor ah, ah                                ; 30 e4
    1436514367    push ax                                   ; 50
     
    1436814370    push 00cd6h                               ; 68 d6 0c
    1436914371    push strict byte 00004h                   ; 6a 04
    14370     call 01966h                               ; e8 f6 82
     14372    call 01966h                               ; e8 ec 82
    1437114373    add sp, strict byte 0001ch                ; 83 c4 1c
    14372     mov al, byte [bp-00ah]                    ; 8a 46 f6
     14374    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1437314375    xor ah, ah                                ; 30 e4
    1437414376    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
    14375     mov di, word [bp-00eh]                    ; 8b 7e f2
     14377    mov di, word [bp-010h]                    ; 8b 7e f0
    1437614378    add di, ax                                ; 01 c7
    1437714379    mov es, [bp-016h]                         ; 8e 46 ea
     
    1438014382    push SS                                   ; 16
    1438114383    pop DS                                    ; 1f
    14382     lea si, [bp-02ah]                         ; 8d 76 d6
     14384    lea si, [bp-032h]                         ; 8d 76 ce
    1438314385    movsw                                     ; a5
    1438414386    movsw                                     ; a5
    1438514387    movsw                                     ; a5
    1438614388    pop DS                                    ; 1f
    14387     mov bx, word [bp-00eh]                    ; 8b 5e f2
    14388     mov dl, byte [es:bx+001e2h]               ; 26 8a 97 e2 01
    14389     mov al, byte [bp-008h]                    ; 8a 46 f8
    14390     add AL, strict byte 00ch                  ; 04 0c
    14391     mov bl, dl                                ; 88 d3
    14392     xor bh, bh                                ; 30 ff
    14393     add bx, word [bp-00eh]                    ; 03 5e f2
    14394     mov byte [es:bx+001e3h], al               ; 26 88 87 e3 01
    14395     db  0feh, 0c2h
    14396     ; inc dl                                    ; fe c2
    14397     mov bx, word [bp-00eh]                    ; 8b 5e f2
    14398     mov byte [es:bx+001e2h], dl               ; 26 88 97 e2 01
     14389    mov bx, word [bp-010h]                    ; 8b 5e f0
     14390    mov bl, byte [es:bx+001e2h]               ; 26 8a 9f e2 01
     14391    mov dl, byte [bp-008h]                    ; 8a 56 f8
     14392    add dl, 00ch                              ; 80 c2 0c
     14393    mov al, bl                                ; 88 d8
     14394    xor ah, ah                                ; 30 e4
     14395    mov si, word [bp-010h]                    ; 8b 76 f0
     14396    add si, ax                                ; 01 c6
     14397    mov byte [es:si+001e3h], dl               ; 26 88 94 e3 01
     14398    db  0feh, 0c3h
     14399    ; inc bl                                    ; fe c3
     14400    mov si, word [bp-010h]                    ; 8b 76 f0
     14401    mov byte [es:si+001e2h], bl               ; 26 88 9c e2 01
    1439914402    mov dx, strict word 00075h                ; ba 75 00
    1440014403    mov ax, strict word 00040h                ; b8 40 00
    14401     call 01650h                               ; e8 94 7f
     14404    call 01650h                               ; e8 87 7f
    1440214405    mov bl, al                                ; 88 c3
    1440314406    db  0feh, 0c3h
     
    1440614409    mov dx, strict word 00075h                ; ba 75 00
    1440714410    mov ax, strict word 00040h                ; b8 40 00
    14408     call 0165eh                               ; e8 93 7f
    14409     jmp near 0977fh                           ; e9 b1 00
    14410     cmp dx, 0eb14h                            ; 81 fa 14 eb
    14411     jne short 09728h                          ; 75 54
     14411    call 0165eh                               ; e8 86 7f
     14412    jmp near 0978fh                           ; e9 b4 00
     14413    cmp bx, 0eb14h                            ; 81 fb 14 eb
     14414    jne short 09738h                          ; 75 57
    1441214415    cmp ax, 00101h                            ; 3d 01 01
    14413     jne short 09728h                          ; 75 4f
     14416    jne short 09738h                          ; 75 52
    1441414417    mov es, [bp-016h]                         ; 8e 46 ea
    14415     mov bx, word [bp-00eh]                    ; 8b 5e f2
     14418    mov bx, word [bp-010h]                    ; 8b 5e f0
    1441614419    mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
    1441714420    mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00
    1441814421    mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00
    1441914422    mov word [es:bx], strict word 00000h      ; 26 c7 07 00 00
    14420     lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
     14423    lea dx, [bp-00232h]                       ; 8d 96 ce fd
    1442114424    mov word [es:bx+008h], dx                 ; 26 89 57 08
    1442214425    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
     
    1442414427    mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
    1442514428    mov bx, 000a1h                            ; bb a1 00
    14426     mov ax, word [bp-00eh]                    ; 8b 46 f2
     14429    mov ax, word [bp-010h]                    ; 8b 46 f0
    1442714430    mov dx, es                                ; 8c c2
    14428     call 089c9h                               ; e8 b0 f2
    14429     mov byte [bp-00ah], cl                    ; 88 4e f6
    14430     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14431     je short 0972ah                           ; 74 07
     14431    call 089c9h                               ; e8 a3 f2
     14432    mov al, byte [bp-00eh]                    ; 8a 46 f2
     14433    mov byte [bp-00ch], al                    ; 88 46 f4
     14434    test byte [bp-00232h], 080h               ; f6 86 ce fd 80
     14435    je short 0973ah                           ; 74 07
    1443214436    mov dx, strict word 00001h                ; ba 01 00
    14433     jmp short 0972ch                          ; eb 04
    14434     jmp short 0977fh                          ; eb 55
     14437    jmp short 0973ch                          ; eb 04
     14438    jmp short 0978fh                          ; eb 55
    1443514439    xor dx, dx                                ; 31 d2
    1443614440    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1443714441    xor bh, bh                                ; 30 ff
    1443814442    mov es, [bp-016h]                         ; 8e 46 ea
    14439     add bx, word [bp-00eh]                    ; 03 5e f2
     14443    add bx, word [bp-010h]                    ; 03 5e f0
     14444    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14445    mov byte [es:bx+0022dh], al               ; 26 88 87 2d 02
    1444014446    mov al, byte [bp-00ch]                    ; 8a 46 f4
    14441     mov byte [es:bx+0022dh], al               ; 26 88 87 2d 02
    14442     mov al, byte [bp-00ah]                    ; 8a 46 f6
    1444314447    xor ah, ah                                ; 30 e4
    1444414448    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
    14445     mov si, word [bp-00eh]                    ; 8b 76 f2
    14446     add si, ax                                ; 01 c6
    14447     mov word [es:si+022h], 00505h             ; 26 c7 44 22 05 05
    14448     mov byte [es:si+024h], dl                 ; 26 88 54 24
    14449     mov word [es:si+028h], 00800h             ; 26 c7 44 28 00 08
    14450     mov bx, word [bp-00eh]                    ; 8b 5e f2
     14449    mov bx, word [bp-010h]                    ; 8b 5e f0
     14450    add bx, ax                                ; 01 c3
     14451    mov word [es:bx+022h], 00505h             ; 26 c7 47 22 05 05
     14452    mov byte [es:bx+024h], dl                 ; 26 88 57 24
     14453    mov word [es:bx+028h], 00800h             ; 26 c7 47 28 00 08
     14454    mov bx, word [bp-010h]                    ; 8b 5e f0
    1445114455    mov dl, byte [es:bx+001f3h]               ; 26 8a 97 f3 01
    1445214456    mov al, byte [bp-008h]                    ; 8a 46 f8
     
    1445414458    mov bl, dl                                ; 88 d3
    1445514459    xor bh, bh                                ; 30 ff
    14456     add bx, word [bp-00eh]                    ; 03 5e f2
     14460    add bx, word [bp-010h]                    ; 03 5e f0
    1445714461    mov byte [es:bx+001f4h], al               ; 26 88 87 f4 01
    1445814462    db  0feh, 0c2h
    1445914463    ; inc dl                                    ; fe c2
    14460     mov bx, word [bp-00eh]                    ; 8b 5e f2
     14464    mov bx, word [bp-010h]                    ; 8b 5e f0
    1446114465    mov byte [es:bx+001f3h], dl               ; 26 88 97 f3 01
    1446214466    inc byte [bp-008h]                        ; fe 46 f8
    1446314467    mov al, byte [bp-008h]                    ; 8a 46 f8
    1446414468    mov es, [bp-016h]                         ; 8e 46 ea
    14465     mov bx, word [bp-00eh]                    ; 8b 5e f2
     14469    mov bx, word [bp-010h]                    ; 8b 5e f0
    1446614470    mov byte [es:bx+00231h], al               ; 26 88 87 31 02
    1446714471    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1447114475    pop bp                                    ; 5d
    1447214476    retn                                      ; c3
    14473 ahci_mem_alloc_:                             ; 0xf9798 LB 0x43
     14477ahci_mem_alloc_:                             ; 0xf97a8 LB 0x43
    1447414478    push bp                                   ; 55
    1447514479    mov bp, sp                                ; 89 e5
     
    1448114485    mov dx, 00413h                            ; ba 13 04
    1448214486    xor ax, ax                                ; 31 c0
    14483     call 0166ch                               ; e8 c4 7e
     14487    call 0166ch                               ; e8 b4 7e
    1448414488    test ax, ax                               ; 85 c0
    14485     je short 097d1h                           ; 74 25
     14489    je short 097e1h                           ; 74 25
    1448614490    dec ax                                    ; 48
    1448714491    mov bx, ax                                ; 89 c3
     
    1449014494    sal ax, 1                                 ; d1 e0
    1449114495    rcl dx, 1                                 ; d1 d2
    14492     loop 097b4h                               ; e2 fa
     14496    loop 097c4h                               ; e2 fa
    1449314497    mov si, ax                                ; 89 c6
    1449414498    mov di, dx                                ; 89 d7
     
    1449614500    shr di, 1                                 ; d1 ef
    1449714501    rcr si, 1                                 ; d1 de
    14498     loop 097c1h                               ; e2 fa
     14502    loop 097d1h                               ; e2 fa
    1449914503    mov dx, 00413h                            ; ba 13 04
    1450014504    xor ax, ax                                ; 31 c0
    14501     call 0167ah                               ; e8 ab 7e
     14505    call 0167ah                               ; e8 9b 7e
    1450214506    mov ax, si                                ; 89 f0
    1450314507    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1450914513    pop bp                                    ; 5d
    1451014514    retn                                      ; c3
    14511 ahci_hba_init_:                              ; 0xf97db LB 0x16d
     14515ahci_hba_init_:                              ; 0xf97eb LB 0x16d
    1451214516    push bp                                   ; 55
    1451314517    mov bp, sp                                ; 89 e5
     
    1452114525    mov dx, strict word 0000eh                ; ba 0e 00
    1452214526    mov ax, strict word 00040h                ; b8 40 00
    14523     call 0166ch                               ; e8 7b 7e
     14527    call 0166ch                               ; e8 6b 7e
    1452414528    mov bx, 00122h                            ; bb 22 01
    1452514529    mov di, ax                                ; 89 c7
     
    1453814542    shr eax, 010h                             ; 66 c1 e8 10
    1453914543    xchg dx, ax                               ; 92
    14540     call 09798h                               ; e8 83 ff
     14544    call 097a8h                               ; e8 83 ff
    1454114545    mov word [bp-010h], ax                    ; 89 46 f0
    1454214546    test ax, ax                               ; 85 c0
    14543     jne short 0981fh                          ; 75 03
    14544     jmp near 09927h                           ; e9 08 01
     14547    jne short 0982fh                          ; 75 03
     14548    jmp near 09937h                           ; e9 08 01
    1454514549    mov ax, word [bp-010h]                    ; 8b 46 f0
    1454614550    mov es, di                                ; 8e c7
     
    1459214596    xchg dx, ax                               ; 92
    1459314597    test AL, strict byte 001h                 ; a8 01
    14594     jne short 09879h                          ; 75 de
     14598    jne short 09889h                          ; 75 de
    1459514599    xor ax, ax                                ; 31 c0
    1459614600    xor cx, cx                                ; 31 c9
     
    1461014614    mov bx, strict word 0001fh                ; bb 1f 00
    1461114615    xor cx, cx                                ; 31 c9
    14612     call 08839h                               ; e8 7a ef
     14616    call 08839h                               ; e8 6a ef
    1461314617    db  0feh, 0c0h
    1461414618    ; inc al                                    ; fe c0
    1461514619    mov byte [bp-00ch], al                    ; 88 46 f4
    1461614620    mov byte [bp-00eh], 000h                  ; c6 46 f2 00
    14617     jmp short 098ebh                          ; eb 21
     14621    jmp short 098fbh                          ; eb 21
    1461814622    xor al, al                                ; 30 c0
    1461914623    test al, al                               ; 84 c0
    14620     je short 098e2h                           ; 74 12
     14624    je short 098f2h                           ; 74 12
    1462114625    mov bl, byte [bp-00eh]                    ; 8a 5e f2
    1462214626    xor bh, bh                                ; 30 ff
    1462314627    xor ax, ax                                ; 31 c0
    1462414628    mov dx, word [bp-010h]                    ; 8b 56 f0
    14625     call 092b5h                               ; e8 d8 f9
     14629    call 092bah                               ; e8 cd f9
    1462614630    dec byte [bp-00ch]                        ; fe 4e f4
    14627     je short 09925h                           ; 74 43
     14631    je short 09935h                           ; 74 43
    1462814632    inc byte [bp-00eh]                        ; fe 46 f2
    1462914633    cmp byte [bp-00eh], 020h                  ; 80 7e f2 20
    14630     jnc short 09925h                          ; 73 3a
     14634    jnc short 09935h                          ; 73 3a
    1463114635    mov cl, byte [bp-00eh]                    ; 8a 4e f2
    1463214636    xor ch, ch                                ; 30 ed
    1463314637    mov bx, strict word 00001h                ; bb 01 00
    1463414638    xor di, di                                ; 31 ff
    14635     jcxz 098fdh                               ; e3 06
     14639    jcxz 0990dh                               ; e3 06
    1463614640    sal bx, 1                                 ; d1 e3
    1463714641    rcl di, 1                                 ; d1 d7
    14638     loop 098f7h                               ; e2 fa
     14642    loop 09907h                               ; e2 fa
    1463914643    mov ax, strict word 0000ch                ; b8 0c 00
    1464014644    xor cx, cx                                ; 31 c9
     
    1465214656    xchg dx, ax                               ; 92
    1465314657    test dx, di                               ; 85 fa
    14654     jne short 09921h                          ; 75 04
     14658    jne short 09931h                          ; 75 04
    1465514659    test ax, bx                               ; 85 d8
    14656     je short 098cah                           ; 74 a9
     14660    je short 098dah                           ; 74 a9
    1465714661    mov AL, strict byte 001h                  ; b0 01
    14658     jmp short 098cch                          ; eb a7
     14662    jmp short 098dch                          ; eb a7
    1465914663    xor ax, ax                                ; 31 c0
    1466014664    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1466614670    pop bp                                    ; 5d
    1466714671    retn                                      ; c3
    14668     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 031h, 09ah, 00fh, 09ah, 015h, 09ah, 01bh, 09ah, 021h
    14669     db  09ah, 027h, 09ah, 02dh, 09ah, 031h, 09ah
    14670 _ahci_init:                                  ; 0xf9948 LB 0x13a
     14672    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 041h, 09ah, 01fh, 09ah, 025h, 09ah, 02bh, 09ah, 031h
     14673    db  09ah, 037h, 09ah, 03dh, 09ah, 041h, 09ah
     14674_ahci_init:                                  ; 0xf9958 LB 0x13a
    1467114675    push bp                                   ; 55
    1467214676    mov bp, sp                                ; 89 e5
     
    1467614680    mov ax, 00601h                            ; b8 01 06
    1467714681    mov dx, strict word 00001h                ; ba 01 00
    14678     call 09e9dh                               ; e8 44 05
     14682    call 09eadh                               ; e8 44 05
    1467914683    mov dx, ax                                ; 89 c2
    1468014684    cmp ax, strict word 0ffffh                ; 3d ff ff
    14681     je short 099ach                           ; 74 4c
     14685    je short 099bch                           ; 74 4c
    1468214686    xor al, al                                ; 30 c0
    1468314687    shr ax, 008h                              ; c1 e8 08
     
    1468714691    xor ah, ah                                ; 30 e4
    1468814692    mov bx, strict word 00034h                ; bb 34 00
    14689     call 09ec8h                               ; e8 53 05
     14693    call 09ed8h                               ; e8 53 05
    1469014694    mov cl, al                                ; 88 c1
    1469114695    test cl, cl                               ; 84 c9
    14692     je short 099afh                           ; 74 34
     14696    je short 099bfh                           ; 74 34
    1469314697    mov bl, cl                                ; 88 cb
    1469414698    xor bh, bh                                ; 30 ff
     
    1470114705    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1470214706    mov ax, word [bp-014h]                    ; 8b 46 ec
    14703     call 09ec8h                               ; e8 2e 05
     14707    call 09ed8h                               ; e8 2e 05
    1470414708    cmp AL, strict byte 012h                  ; 3c 12
    14705     je short 099afh                           ; 74 11
     14709    je short 099bfh                           ; 74 11
    1470614710    mov bl, cl                                ; 88 cb
    1470714711    db  0feh, 0c3h
     
    1471014714    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1471114715    mov ax, word [bp-014h]                    ; 8b 46 ec
    14712     jmp short 09972h                          ; eb c6
    14713     jmp near 09a7bh                           ; e9 cc 00
     14716    jmp short 09982h                          ; eb c6
     14717    jmp near 09a8bh                           ; e9 cc 00
    1471414718    test cl, cl                               ; 84 c9
    14715     je short 099ach                           ; 74 f9
     14719    je short 099bch                           ; 74 f9
    1471614720    add cl, 002h                              ; 80 c1 02
    1471714721    mov bl, cl                                ; 88 cb
     
    1472514729    mov dx, word [bp-012h]                    ; 8b 56 ee
    1472614730    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14727     call 09ec8h                               ; e8 f3 04
     14731    call 09ed8h                               ; e8 f3 04
    1472814732    cmp AL, strict byte 010h                  ; 3c 10
    14729     jne short 099ach                          ; 75 d3
     14733    jne short 099bch                          ; 75 d3
    1473014734    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1473114735    mov bl, cl                                ; 88 cb
     
    1473414738    mov dx, word [bp-012h]                    ; 8b 56 ee
    1473514739    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14736     call 09ef6h                               ; e8 09 05
     14740    call 09f06h                               ; e8 09 05
    1473714741    mov dx, ax                                ; 89 c2
    1473814742    and ax, strict word 0000fh                ; 25 0f 00
    1473914743    sub ax, strict word 00004h                ; 2d 04 00
    1474014744    cmp ax, strict word 0000bh                ; 3d 0b 00
    14741     jnbe short 09a31h                         ; 77 37
     14745    jnbe short 09a41h                         ; 77 37
    1474214746    push CS                                   ; 0e
    1474314747    pop ES                                    ; 07
    1474414748    mov cx, strict word 00008h                ; b9 08 00
    14745     mov di, 09931h                            ; bf 31 99
     14749    mov di, 09941h                            ; bf 41 99
    1474614750    repne scasb                               ; f2 ae
    1474714751    sal cx, 1                                 ; d1 e1
    1474814752    mov di, cx                                ; 89 cf
    14749     mov ax, word [cs:di-066c8h]               ; 2e 8b 85 38 99
     14753    mov ax, word [cs:di-066b8h]               ; 2e 8b 85 48 99
    1475014754    jmp ax                                    ; ff e0
    1475114755    mov byte [bp-008h], 010h                  ; c6 46 f8 10
    14752     jmp short 09a31h                          ; eb 1c
     14756    jmp short 09a41h                          ; eb 1c
    1475314757    mov byte [bp-008h], 014h                  ; c6 46 f8 14
    14754     jmp short 09a31h                          ; eb 16
     14758    jmp short 09a41h                          ; eb 16
    1475514759    mov byte [bp-008h], 018h                  ; c6 46 f8 18
    14756     jmp short 09a31h                          ; eb 10
     14760    jmp short 09a41h                          ; eb 10
    1475714761    mov byte [bp-008h], 01ch                  ; c6 46 f8 1c
    14758     jmp short 09a31h                          ; eb 0a
     14762    jmp short 09a41h                          ; eb 0a
    1475914763    mov byte [bp-008h], 020h                  ; c6 46 f8 20
    14760     jmp short 09a31h                          ; eb 04
     14764    jmp short 09a41h                          ; eb 04
    1476114765    mov byte [bp-008h], 024h                  ; c6 46 f8 24
    1476214766    mov si, dx                                ; 89 d6
     
    1476514769    mov al, byte [bp-008h]                    ; 8a 46 f8
    1476614770    test al, al                               ; 84 c0
    14767     je short 09a7bh                           ; 74 3b
     14771    je short 09a8bh                           ; 74 3b
    1476814772    mov bl, al                                ; 88 c3
    1476914773    xor bh, bh                                ; 30 ff
     
    1477614780    mov dx, word [bp-010h]                    ; 8b 56 f0
    1477714781    mov ax, word [bp-016h]                    ; 8b 46 ea
    14778     call 09f20h                               ; e8 c1 04
     14782    call 09f30h                               ; e8 c1 04
    1477914783    test AL, strict byte 001h                 ; a8 01
    14780     je short 09a7bh                           ; 74 18
     14784    je short 09a8bh                           ; 74 18
    1478114785    and AL, strict byte 0f0h                  ; 24 f0
    1478214786    add si, ax                                ; 01 c6
     
    1478514789    mov dx, word [bp-010h]                    ; 8b 56 f0
    1478614790    mov ax, word [bp-016h]                    ; 8b 46 ea
    14787     call 09f6eh                               ; e8 f8 04
     14791    call 09f7eh                               ; e8 f8 04
    1478814792    mov ax, si                                ; 89 f0
    14789     call 097dbh                               ; e8 60 fd
     14793    call 097ebh                               ; e8 60 fd
    1479014794    lea sp, [bp-004h]                         ; 8d 66 fc
    1479114795    pop di                                    ; 5f
     
    1479314797    pop bp                                    ; 5d
    1479414798    retn                                      ; c3
    14795 apm_out_str_:                                ; 0xf9a82 LB 0x39
     14799apm_out_str_:                                ; 0xf9a92 LB 0x39
    1479614800    push bp                                   ; 55
    1479714801    mov bp, sp                                ; 89 e5
     
    1479914803    mov bx, ax                                ; 89 c3
    1480014804    cmp byte [bx], 000h                       ; 80 3f 00
    14801     je short 09a97h                           ; 74 0a
     14805    je short 09aa7h                           ; 74 0a
    1480214806    mov al, byte [bx]                         ; 8a 07
    1480314807    out DX, AL                                ; ee
     
    1480614810    db  00ah, 0c0h
    1480714811    ; or al, al                                 ; 0a c0
    14808     jne short 09a8fh                          ; 75 f8
     14812    jne short 09a9fh                          ; 75 f8
    1480914813    lea sp, [bp-002h]                         ; 8d 66 fe
    1481014814    pop bx                                    ; 5b
    1481114815    pop bp                                    ; 5d
    1481214816    retn                                      ; c3
    14813     fcomp qword [bp+si-0649ch]                ; dc 9a 64 9b
    14814     out DX, AL                                ; ee
    14815     call far 09b64h:09b09h                    ; 9a 09 9b 64 9b
    14816     xor AL, strict byte 09bh                  ; 34 9b
    14817     db  064h, 09bh
    14818     ; fs wait                                   ; 64 9b
    14819     push strict byte 0ff9bh                   ; 6a 9b
    14820     cmp word [bp+di-064c7h], bx               ; 39 9b 39 9b
    14821     cmp word [bp+di-06457h], bx               ; 39 9b a9 9b
    14822     cmp word [bp+di-064c7h], bx               ; 39 9b 39 9b
    14823     db  0a2h
     14817    in AL, DX                                 ; ec
     14818    call far 09afeh:09b74h                    ; 9a 74 9b fe 9a
     14819    sbb word [bp+di-0648ch], bx               ; 19 9b 74 9b
     14820    inc sp                                    ; 44
    1482414821    wait                                      ; 9b
    14825 _apm_function:                               ; 0xf9abb LB 0xf3
     14822    je short 09a56h                           ; 74 9b
     14823    jp short 09a58h                           ; 7a 9b
     14824    dec cx                                    ; 49
     14825    wait                                      ; 9b
     14826    dec cx                                    ; 49
     14827    wait                                      ; 9b
     14828    dec cx                                    ; 49
     14829    wait                                      ; 9b
     14830    mov cx, 0499bh                            ; b9 9b 49
     14831    wait                                      ; 9b
     14832    dec cx                                    ; 49
     14833    wait                                      ; 9b
     14834    mov DL, strict byte 09bh                  ; b2 9b
     14835_apm_function:                               ; 0xf9acb LB 0xf3
    1482614836    push bp                                   ; 55
    1482714837    mov bp, sp                                ; 89 e5
     
    1483114841    xor ah, ah                                ; 30 e4
    1483214842    cmp ax, strict word 0000eh                ; 3d 0e 00
    14833     jnbe short 09b39h                         ; 77 6c
     14843    jnbe short 09b49h                         ; 77 6c
    1483414844    mov bx, ax                                ; 89 c3
    1483514845    add bx, ax                                ; 01 c3
    1483614846    mov dx, word [bp+018h]                    ; 8b 56 18
    1483714847    or dl, 001h                               ; 80 ca 01
    14838     jmp word [cs:bx-06563h]                   ; 2e ff a7 9d 9a
     14848    jmp word [cs:bx-06553h]                   ; 2e ff a7 ad 9a
    1483914849    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1484014850    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1484114851    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14842     jmp near 09b64h                           ; e9 76 00
     14852    jmp near 09b74h                           ; e9 76 00
    1484314853    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14844     mov word [bp+00ch], 0a174h                ; c7 46 0c 74 a1
     14854    mov word [bp+00ch], 0a184h                ; c7 46 0c 84 a1
    1484514855    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1484614856    mov ax, strict word 0fff0h                ; b8 f0 ff
    1484714857    mov word [bp+006h], ax                    ; 89 46 06
    1484814858    mov word [bp+004h], ax                    ; 89 46 04
    14849     jmp near 09b64h                           ; e9 5b 00
     14859    jmp near 09b74h                           ; e9 5b 00
    1485014860    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1485114861    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1486014870    mov si, ax                                ; 89 c6
    1486114871    sal esi, 010h                             ; 66 c1 e6 10
    14862     jmp near 09b64h                           ; e9 30 00
     14872    jmp near 09b74h                           ; e9 30 00
    1486314873    sti                                       ; fb
    1486414874    hlt                                       ; f4
    14865     jmp near 09b64h                           ; e9 2b 00
     14875    jmp near 09b74h                           ; e9 2b 00
    1486614876    mov bx, 00da6h                            ; bb a6 0d
    1486714877    mov cx, ds                                ; 8c d9
    1486814878    mov ax, strict word 00004h                ; b8 04 00
    14869     call 01923h                               ; e8 df 7d
     14879    call 01923h                               ; e8 cf 7d
    1487014880    push word [bp+00ch]                       ; ff 76 0c
    1487114881    push word [bp+012h]                       ; ff 76 12
    1487214882    push 00d29h                               ; 68 29 0d
    1487314883    push strict byte 00004h                   ; 6a 04
    14874     call 01966h                               ; e8 14 7e
     14884    call 01966h                               ; e8 04 7e
    1487514885    add sp, strict byte 00008h                ; 83 c4 08
    1487614886    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1488414894    retn                                      ; c3
    1488514895    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14886     je short 09b8fh                           ; 74 1f
     14896    je short 09b9fh                           ; 74 1f
    1488714897    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14888     je short 09b87h                           ; 74 11
     14898    je short 09b97h                           ; 74 11
    1488914899    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14890     jne short 09b97h                          ; 75 1b
     14900    jne short 09ba7h                          ; 75 1b
    1489114901    mov dx, 0040fh                            ; ba 0f 04
    1489214902    mov ax, 00d10h                            ; b8 10 0d
    14893     call 09a82h                               ; e8 fd fe
    14894     jmp short 09b64h                          ; eb dd
     14903    call 09a92h                               ; e8 fd fe
     14904    jmp short 09b74h                          ; eb dd
    1489514905    mov dx, 0040fh                            ; ba 0f 04
    1489614906    mov ax, 00d18h                            ; b8 18 0d
    14897     jmp short 09b82h                          ; eb f3
     14907    jmp short 09b92h                          ; eb f3
    1489814908    mov dx, 0040fh                            ; ba 0f 04
    1489914909    mov ax, 00d20h                            ; b8 20 0d
    14900     jmp short 09b82h                          ; eb eb
     14910    jmp short 09b92h                          ; eb eb
    1490114911    or ah, 00ah                               ; 80 cc 0a
    1490214912    mov word [bp+012h], ax                    ; 89 46 12
    1490314913    mov word [bp+018h], dx                    ; 89 56 18
    14904     jmp short 09b64h                          ; eb c2
     14914    jmp short 09b74h                          ; eb c2
    1490514915    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14906     jmp short 09b64h                          ; eb bb
     14916    jmp short 09b74h                          ; eb bb
    1490714917    or ah, 080h                               ; 80 cc 80
    14908     jmp short 09b9ah                          ; eb ec
    14909 pci16_select_reg_:                           ; 0xf9bae LB 0x24
     14918    jmp short 09baah                          ; eb ec
     14919pci16_select_reg_:                           ; 0xf9bbe LB 0x24
    1491014920    push bp                                   ; 55
    1491114921    mov bp, sp                                ; 89 e5
     
    1492414934    pop bp                                    ; 5d
    1492514935    retn                                      ; c3
    14926 pci16_find_device_:                          ; 0xf9bd2 LB 0xf9
     14936pci16_find_device_:                          ; 0xf9be2 LB 0xf9
    1492714937    push bp                                   ; 55
    1492814938    mov bp, sp                                ; 89 e5
     
    1493814948    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1493914949    test bl, 007h                             ; f6 c3 07
    14940     jne short 09c1ah                          ; 75 2d
     14950    jne short 09c2ah                          ; 75 2d
    1494114951    mov dx, strict word 0000eh                ; ba 0e 00
    1494214952    mov ax, bx                                ; 89 d8
    14943     call 09baeh                               ; e8 b9 ff
     14953    call 09bbeh                               ; e8 b9 ff
    1494414954    mov dx, 00cfeh                            ; ba fe 0c
    1494514955    in AL, DX                                 ; ec
     
    1494814958    mov byte [bp-006h], al                    ; 88 46 fa
    1494914959    cmp AL, strict byte 0ffh                  ; 3c ff
    14950     jne short 09c08h                          ; 75 06
     14960    jne short 09c18h                          ; 75 06
    1495114961    add bx, strict byte 00008h                ; 83 c3 08
    14952     jmp near 09c9bh                           ; e9 93 00
     14962    jmp near 09cabh                           ; e9 93 00
    1495314963    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14954     je short 09c15h                           ; 74 07
     14964    je short 09c25h                           ; 74 07
    1495514965    mov word [bp-010h], strict word 00001h    ; c7 46 f0 01 00
    14956     jmp short 09c1ah                          ; eb 05
     14966    jmp short 09c2ah                          ; eb 05
    1495714967    mov word [bp-010h], strict word 00008h    ; c7 46 f0 08 00
    1495814968    mov al, byte [bp-006h]                    ; 8a 46 fa
    1495914969    and AL, strict byte 007h                  ; 24 07
    1496014970    cmp AL, strict byte 001h                  ; 3c 01
    14961     jne short 09c42h                          ; 75 1f
     14971    jne short 09c52h                          ; 75 1f
    1496214972    mov ax, bx                                ; 89 d8
    1496314973    shr ax, 008h                              ; c1 e8 08
    1496414974    test ax, ax                               ; 85 c0
    14965     jne short 09c42h                          ; 75 16
     14975    jne short 09c52h                          ; 75 16
    1496614976    mov dx, strict word 0001ah                ; ba 1a 00
    1496714977    mov ax, bx                                ; 89 d8
    14968     call 09baeh                               ; e8 7a ff
     14978    call 09bbeh                               ; e8 7a ff
    1496914979    mov dx, 00cfeh                            ; ba fe 0c
    1497014980    in AL, DX                                 ; ec
     
    1497214982    ; sub ah, ah                                ; 2a e4
    1497314983    cmp al, byte [bp-008h]                    ; 3a 46 f8
    14974     jbe short 09c42h                          ; 76 03
     14984    jbe short 09c52h                          ; 76 03
    1497514985    mov byte [bp-008h], al                    ; 88 46 f8
    1497614986    test di, di                               ; 85 ff
    14977     je short 09c4bh                           ; 74 05
     14987    je short 09c5bh                           ; 74 05
    1497814988    mov dx, strict word 00008h                ; ba 08 00
    14979     jmp short 09c4dh                          ; eb 02
     14989    jmp short 09c5dh                          ; eb 02
    1498014990    xor dx, dx                                ; 31 d2
    1498114991    mov ax, bx                                ; 89 d8
    14982     call 09baeh                               ; e8 5c ff
     14992    call 09bbeh                               ; e8 5c ff
    1498314993    mov dx, 00cfch                            ; ba fc 0c
    1498414994    in eax, DX                                ; 66 ed
     
    1499115001    mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
    1499215002    test di, di                               ; 85 ff
    14993     je short 09c7ch                           ; 74 0f
     15003    je short 09c8ch                           ; 74 0f
    1499415004    mov cx, strict word 00008h                ; b9 08 00
    1499515005    shr dx, 1                                 ; d1 ea
    1499615006    rcr ax, 1                                 ; d1 d8
    14997     loop 09c70h                               ; e2 fa
     15007    loop 09c80h                               ; e2 fa
    1499815008    mov word [bp-00ah], ax                    ; 89 46 f6
    1499915009    mov word [bp-00ch], dx                    ; 89 56 f4
    1500015010    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1500115011    cmp ax, word [bp-014h]                    ; 3b 46 ec
    15002     jne short 09c8ch                          ; 75 08
     15012    jne short 09c9ch                          ; 75 08
    1500315013    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1500415014    cmp ax, word [bp-012h]                    ; 3b 46 ee
    15005     je short 09c92h                           ; 74 06
     15015    je short 09ca2h                           ; 74 06
    1500615016    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    15007     je short 09c98h                           ; 74 06
     15017    je short 09ca8h                           ; 74 06
    1500815018    dec si                                    ; 4e
    1500915019    cmp si, strict byte 0ffffh                ; 83 fe ff
    15010     je short 09cach                           ; 74 14
     15020    je short 09cbch                           ; 74 14
    1501115021    add bx, word [bp-010h]                    ; 03 5e f0
    1501215022    mov dx, bx                                ; 89 da
     
    1501515025    xor ah, ah                                ; 30 e4
    1501615026    cmp dx, ax                                ; 39 c2
    15017     jnbe short 09cach                         ; 77 03
    15018     jmp near 09be8h                           ; e9 3c ff
     15027    jnbe short 09cbch                         ; 77 03
     15028    jmp near 09bf8h                           ; e9 3c ff
    1501915029    cmp si, strict byte 0ffffh                ; 83 fe ff
    15020     jne short 09cb5h                          ; 75 04
     15030    jne short 09cc5h                          ; 75 04
    1502115031    mov ax, bx                                ; 89 d8
    15022     jmp short 09cb8h                          ; eb 03
     15032    jmp short 09cc8h                          ; eb 03
    1502315033    mov ax, strict word 0ffffh                ; b8 ff ff
    1502415034    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1502715037    pop bp                                    ; 5d
    1502815038    retn                                      ; c3
    15029     lodsb                                     ; ac
     15039    mov sp, 0d59dh                            ; bc 9d d5
    1503015040    popfw                                     ; 9d
    15031     lds bx, [di-06229h]                       ; c5 9d d7 9d
    15032     jmp short 09c64h                          ; eb 9d
    15033     std                                       ; fd
     15041    out 09dh, ax                              ; e7 9d
     15042    sti                                       ; fb
    1503415043    popfw                                     ; 9d
    15035     db  010h
     15044    or ax, 0209eh                             ; 0d 9e 20
    1503615045    sahf                                      ; 9e
    15037 _pci16_function:                             ; 0xf9ccb LB 0x1d2
     15046_pci16_function:                             ; 0xf9cdb LB 0x1d2
    1503815047    push bp                                   ; 55
    1503915048    mov bp, sp                                ; 89 e5
     
    1504915058    xor ah, ah                                ; 30 e4
    1505015059    cmp bx, strict byte 00003h                ; 83 fb 03
    15051     jc short 09cfdh                           ; 72 13
    15052     jbe short 09d50h                          ; 76 64
     15060    jc short 09d0dh                           ; 72 13
     15061    jbe short 09d60h                          ; 76 64
    1505315062    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15054     je short 09d58h                           ; 74 67
     15063    je short 09d68h                           ; 74 67
    1505515064    cmp bx, strict byte 00008h                ; 83 fb 08
    15056     jc short 09d07h                           ; 72 11
     15065    jc short 09d17h                           ; 72 11
    1505715066    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15058     jbe short 09d5bh                          ; 76 60
    15059     jmp short 09d07h                          ; eb 0a
     15067    jbe short 09d6bh                          ; 76 60
     15068    jmp short 09d17h                          ; eb 0a
    1506015069    cmp bx, strict byte 00002h                ; 83 fb 02
    15061     je short 09d26h                           ; 74 24
     15070    je short 09d36h                           ; 74 24
    1506215071    cmp bx, strict byte 00001h                ; 83 fb 01
    15063     je short 09d0ah                           ; 74 03
    15064     jmp near 09e69h                           ; e9 5f 01
     15072    je short 09d1ah                           ; 74 03
     15073    jmp near 09e79h                           ; e9 5f 01
    1506515074    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1506615075    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1506815077    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1506915078    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15070     jmp near 09e96h                           ; e9 70 01
     15079    jmp near 09ea6h                           ; e9 70 01
    1507115080    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15072     jne short 09d32h                          ; 75 06
     15081    jne short 09d42h                          ; 75 06
    1507315082    or ah, 083h                               ; 80 cc 83
    15074     jmp near 09e8fh                           ; e9 5d 01
     15083    jmp near 09e9fh                           ; e9 5d 01
    1507515084    mov bx, word [bp+008h]                    ; 8b 5e 08
    1507615085    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1507715086    mov ax, word [bp+018h]                    ; 8b 46 18
    1507815087    xor cx, cx                                ; 31 c9
    15079     call 09bd2h                               ; e8 92 fe
     15088    call 09be2h                               ; e8 92 fe
    1508015089    cmp ax, strict word 0ffffh                ; 3d ff ff
    15081     jne short 09d52h                          ; 75 0d
     15090    jne short 09d62h                          ; 75 0d
    1508215091    mov ax, word [bp+020h]                    ; 8b 46 20
    1508315092    xor ah, ah                                ; 30 e4
    1508415093    or ah, 086h                               ; 80 cc 86
    15085     jmp near 09e8fh                           ; e9 3f 01
    15086     jmp short 09d5dh                          ; eb 0b
     15094    jmp near 09e9fh                           ; e9 3f 01
     15095    jmp short 09d6dh                          ; eb 0b
    1508715096    mov word [bp+014h], ax                    ; 89 46 14
    15088     jmp near 09e96h                           ; e9 3e 01
    15089     jmp near 09e24h                           ; e9 c9 00
    15090     jmp short 09d82h                          ; eb 25
     15097    jmp near 09ea6h                           ; e9 3e 01
     15098    jmp near 09e34h                           ; e9 c9 00
     15099    jmp short 09d92h                          ; eb 25
    1509115100    mov bx, word [bp+008h]                    ; 8b 5e 08
    1509215101    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1509315102    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1509415103    mov cx, strict word 00001h                ; b9 01 00
    15095     call 09bd2h                               ; e8 66 fe
     15104    call 09be2h                               ; e8 66 fe
    1509615105    cmp ax, strict word 0ffffh                ; 3d ff ff
    15097     jne short 09d7ch                          ; 75 0b
     15106    jne short 09d8ch                          ; 75 0b
    1509815107    mov ax, word [bp+020h]                    ; 8b 46 20
    1509915108    xor ah, ah                                ; 30 e4
    1510015109    or ah, 086h                               ; 80 cc 86
    15101     jmp near 09e8fh                           ; e9 13 01
     15110    jmp near 09e9fh                           ; e9 13 01
    1510215111    mov word [bp+014h], ax                    ; 89 46 14
    15103     jmp near 09e96h                           ; e9 14 01
     15112    jmp near 09ea6h                           ; e9 14 01
    1510415113    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15105     jc short 09d8fh                           ; 72 06
     15114    jc short 09d9fh                           ; 72 06
    1510615115    or ah, 087h                               ; 80 cc 87
    15107     jmp near 09e8fh                           ; e9 00 01
     15116    jmp near 09e9fh                           ; e9 00 01
    1510815117    mov dx, word [bp+004h]                    ; 8b 56 04
    1510915118    mov ax, word [bp+014h]                    ; 8b 46 14
    15110     call 09baeh                               ; e8 16 fe
     15119    call 09bbeh                               ; e8 16 fe
    1511115120    mov bx, word [bp+020h]                    ; 8b 5e 20
    1511215121    xor bh, bh                                ; 30 ff
    1511315122    sub bx, strict byte 00008h                ; 83 eb 08
    1511415123    cmp bx, strict byte 00005h                ; 83 fb 05
    15115     jnbe short 09e0dh                         ; 77 68
     15124    jnbe short 09e1dh                         ; 77 68
    1511615125    add bx, bx                                ; 01 db
    15117     jmp word [cs:bx-06341h]                   ; 2e ff a7 bf 9c
     15126    jmp word [cs:bx-06331h]                   ; 2e ff a7 cf 9c
    1511815127    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1511915128    xor bl, bl                                ; 30 db
     
    1512615135    or bx, ax                                 ; 09 c3
    1512715136    mov word [bp+01ch], bx                    ; 89 5e 1c
    15128     jmp short 09e0dh                          ; eb 48
     15137    jmp short 09e1dh                          ; eb 48
    1512915138    mov dx, word [bp+004h]                    ; 8b 56 04
    1513015139    xor dh, dh                                ; 30 f6
     
    1513315142    in ax, DX                                 ; ed
    1513415143    mov word [bp+01ch], ax                    ; 89 46 1c
    15135     jmp short 09e0dh                          ; eb 36
     15144    jmp short 09e1dh                          ; eb 36
    1513615145    mov dx, 00cfch                            ; ba fc 0c
    1513715146    in eax, DX                                ; 66 ed
     
    1514215151    mov word [bp+01ch], ax                    ; 89 46 1c
    1514315152    mov word [bp+01eh], dx                    ; 89 56 1e
    15144     jmp short 09e0dh                          ; eb 22
     15153    jmp short 09e1dh                          ; eb 22
    1514515154    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1514615155    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1514915158    add dx, 00cfch                            ; 81 c2 fc 0c
    1515015159    out DX, AL                                ; ee
    15151     jmp short 09e0dh                          ; eb 10
     15160    jmp short 09e1dh                          ; eb 10
    1515215161    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1515315162    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1515615165    add dx, 00cfch                            ; 81 c2 fc 0c
    1515715166    out DX, ax                                ; ef
    15158     jmp near 09e96h                           ; e9 86 00
     15167    jmp near 09ea6h                           ; e9 86 00
    1515915168    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1516015169    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1516515174    ; mov ax, cx                                ; 8b c1
    1516615175    out DX, eax                               ; 66 ef
    15167     jmp short 09e96h                          ; eb 72
     15176    jmp short 09ea6h                          ; eb 72
    1516815177    mov bx, word [bp+004h]                    ; 8b 5e 04
    1516915178    mov es, [bp+026h]                         ; 8e 46 26
     
    1517215181    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1517315182    cmp cx, word [es:bx]                      ; 26 3b 0f
    15174     jbe short 09e4ah                          ; 76 11
     15183    jbe short 09e5ah                          ; 76 11
    1517515184    mov ax, word [bp+020h]                    ; 8b 46 20
    1517615185    xor ah, ah                                ; 30 e4
     
    1517815187    mov word [bp+020h], ax                    ; 89 46 20
    1517915188    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15180     jmp short 09e5eh                          ; eb 14
     15189    jmp short 09e6eh                          ; eb 14
    1518115190    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1518215191    mov si, 0f1a0h                            ; be a0 f1
     
    1519015199    les bx, [bp-008h]                         ; c4 5e f8
    1519115200    mov word [es:bx], ax                      ; 26 89 07
    15192     jmp short 09e96h                          ; eb 2d
     15201    jmp short 09ea6h                          ; eb 2d
    1519315202    mov bx, 00da6h                            ; bb a6 0d
    1519415203    mov cx, ds                                ; 8c d9
    1519515204    mov ax, strict word 00004h                ; b8 04 00
    15196     call 01923h                               ; e8 af 7a
     15205    call 01923h                               ; e8 9f 7a
    1519715206    mov ax, word [bp+014h]                    ; 8b 46 14
    1519815207    push ax                                   ; 50
     
    1520115210    push 00d5ch                               ; 68 5c 0d
    1520215211    push strict byte 00004h                   ; 6a 04
    15203     call 01966h                               ; e8 e2 7a
     15212    call 01966h                               ; e8 d2 7a
    1520415213    add sp, strict byte 00008h                ; 83 c4 08
    1520515214    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1521315222    pop bp                                    ; 5d
    1521415223    retn                                      ; c3
    15215 pci_find_classcode_:                         ; 0xf9e9d LB 0x8
     15224pci_find_classcode_:                         ; 0xf9ead LB 0x8
    1521615225    push bp                                   ; 55
    1521715226    mov bp, sp                                ; 89 e5
     
    1521915228    pop bp                                    ; 5d
    1522015229    retn                                      ; c3
    15221 pci_find_device_:                            ; 0xf9ea5 LB 0x23
     15230pci_find_device_:                            ; 0xf9eb5 LB 0x23
    1522215231    push bp                                   ; 55
    1522315232    mov bp, sp                                ; 89 e5
     
    1523115240    int 01ah                                  ; cd 1a
    1523215241    cmp ah, 000h                              ; 80 fc 00
    15233     je short 09ebeh                           ; 74 03
     15242    je short 09eceh                           ; 74 03
    1523415243    mov bx, strict word 0ffffh                ; bb ff ff
    1523515244    mov ax, bx                                ; 89 d8
     
    1524015249    pop bp                                    ; 5d
    1524115250    retn                                      ; c3
    15242 pci_read_config_byte_:                       ; 0xf9ec8 LB 0x2e
     15251pci_read_config_byte_:                       ; 0xf9ed8 LB 0x2e
    1524315252    push bp                                   ; 55
    1524415253    mov bp, sp                                ; 89 e5
     
    1526615275    pop bp                                    ; 5d
    1526715276    retn                                      ; c3
    15268 pci_read_config_word_:                       ; 0xf9ef6 LB 0x2a
     15277pci_read_config_word_:                       ; 0xf9f06 LB 0x2a
    1526915278    push bp                                   ; 55
    1527015279    mov bp, sp                                ; 89 e5
     
    1529015299    pop bp                                    ; 5d
    1529115300    retn                                      ; c3
    15292 pci_read_config_dword_:                      ; 0xf9f20 LB 0x4e
     15301pci_read_config_dword_:                      ; 0xf9f30 LB 0x4e
    1529315302    push bp                                   ; 55
    1529415303    mov bp, sp                                ; 89 e5
     
    1531215321    int 01ah                                  ; cd 1a
    1531315322    test cx, cx                               ; 85 c9
    15314     jne short 09f5fh                          ; 75 14
     15323    jne short 09f6fh                          ; 75 14
    1531515324    mov al, byte [bp-006h]                    ; 8a 46 fa
    1531615325    xor ah, ah                                ; 30 e4
     
    1532215331    int 01ah                                  ; cd 1a
    1532315332    test cx, cx                               ; 85 c9
    15324     je short 09f64h                           ; 74 05
     15333    je short 09f74h                           ; 74 05
    1532515334    mov ax, strict word 00001h                ; b8 01 00
    15326     jmp short 09f66h                          ; eb 02
     15335    jmp short 09f76h                          ; eb 02
    1532715336    xor ax, ax                                ; 31 c0
    1532815337    cwd                                       ; 99
     
    1533215341    pop bp                                    ; 5d
    1533315342    retn                                      ; c3
    15334 pci_write_config_word_:                      ; 0xf9f6e LB 0x25
     15343pci_write_config_word_:                      ; 0xf9f7e LB 0x25
    1533515344    push bp                                   ; 55
    1533615345    mov bp, sp                                ; 89 e5
     
    1535215361    pop bp                                    ; 5d
    1535315362    retn                                      ; c3
    15354 vds_is_present_:                             ; 0xf9f93 LB 0x1d
     15363vds_is_present_:                             ; 0xf9fa3 LB 0x1d
    1535515364    push bx                                   ; 53
    1535615365    push bp                                   ; 55
     
    1536015369    mov es, ax                                ; 8e c0
    1536115370    test byte [es:bx], 020h                   ; 26 f6 07 20
    15362     je short 09fabh                           ; 74 06
     15371    je short 09fbbh                           ; 74 06
    1536315372    mov ax, strict word 00001h                ; b8 01 00
    1536415373    pop bp                                    ; 5d
     
    1536915378    pop bx                                    ; 5b
    1537015379    retn                                      ; c3
    15371 vds_real_to_lin_:                            ; 0xf9fb0 LB 0x1e
     15380vds_real_to_lin_:                            ; 0xf9fc0 LB 0x1e
    1537215381    push bx                                   ; 53
    1537315382    push cx                                   ; 51
     
    1538015389    sal ax, 1                                 ; d1 e0
    1538115390    rcl dx, 1                                 ; d1 d2
    15382     loop 09fbeh                               ; e2 fa
     15391    loop 09fceh                               ; e2 fa
    1538315392    xor cx, cx                                ; 31 c9
    1538415393    add ax, bx                                ; 01 d8
     
    1538815397    pop bx                                    ; 5b
    1538915398    retn                                      ; c3
    15390 vds_build_sg_list_:                          ; 0xf9fce LB 0x77
     15399vds_build_sg_list_:                          ; 0xf9fde LB 0x77
    1539115400    push bp                                   ; 55
    1539215401    mov bp, sp                                ; 89 e5
     
    1540215411    mov bx, word [bp+006h]                    ; 8b 5e 06
    1540315412    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15404     call 09fb0h                               ; e8 c3 ff
     15413    call 09fc0h                               ; e8 c3 ff
    1540515414    mov es, si                                ; 8e c6
    1540615415    mov word [es:di+004h], ax                 ; 26 89 45 04
    1540715416    mov word [es:di+006h], dx                 ; 26 89 55 06
    1540815417    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15409     call 09f93h                               ; e8 93 ff
     15418    call 09fa3h                               ; e8 93 ff
    1541015419    test ax, ax                               ; 85 c0
    15411     je short 0a015h                           ; 74 11
     15420    je short 0a025h                           ; 74 11
    1541215421    mov es, si                                ; 8e c6
    1541315422    mov ax, 08105h                            ; b8 05 81
    1541415423    mov dx, strict word 00000h                ; ba 00 00
    1541515424    int 04bh                                  ; cd 4b
    15416     jc short 0a012h                           ; 72 02
     15425    jc short 0a022h                           ; 72 02
    1541715426    db  032h, 0c0h
    1541815427    ; xor al, al                                ; 32 c0
    1541915428    cbw                                       ; 98
    15420     jmp short 0a03ch                          ; eb 27
     15429    jmp short 0a04ch                          ; eb 27
    1542115430    mov es, si                                ; 8e c6
    1542215431    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1543515444    pop bp                                    ; 5d
    1543615445    retn 00004h                               ; c2 04 00
    15437 vds_free_sg_list_:                           ; 0xfa045 LB 0x3b
     15446vds_free_sg_list_:                           ; 0xfa055 LB 0x3b
    1543815447    push bp                                   ; 55
    1543915448    mov bp, sp                                ; 89 e5
     
    1544115450    push di                                   ; 57
    1544215451    mov bx, ax                                ; 89 c3
    15443     call 09f93h                               ; e8 44 ff
     15452    call 09fa3h                               ; e8 44 ff
    1544415453    test ax, ax                               ; 85 c0
    15445     je short 0a064h                           ; 74 11
     15454    je short 0a074h                           ; 74 11
    1544615455    mov di, bx                                ; 89 df
    1544715456    mov es, dx                                ; 8e c2
     
    1544915458    mov dx, strict word 00000h                ; ba 00 00
    1545015459    int 04bh                                  ; cd 4b
    15451     jc short 0a063h                           ; 72 02
     15460    jc short 0a073h                           ; 72 02
    1545215461    db  032h, 0c0h
    1545315462    ; xor al, al                                ; 32 c0
     
    1546115470    retn                                      ; c3
    1546215471    times 0xd db 0
    15463 __U4M:                                       ; 0xfa080 LB 0x20
     15472__U4M:                                       ; 0xfa090 LB 0x20
    1546415473    pushfw                                    ; 9c
    1546515474    push si                                   ; 56
     
    1548815497    retn                                      ; c3
    1548915498    times 0x4 db 0
    15490 __U4D:                                       ; 0xfa0a0 LB 0x30
     15499__U4D:                                       ; 0xfa0b0 LB 0x30
    1549115500    pushfw                                    ; 9c
    1549215501    push DS                                   ; 1e
     
    1550315512    push dx                                   ; 52
    1550415513    push ax                                   ; 50
    15505     call 0a185h                               ; e8 d0 00
     15514    call 0a195h                               ; e8 d0 00
    1550615515    mov cx, word [bp-002h]                    ; 8b 4e fe
    1550715516    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1551415523    retn                                      ; c3
    1551515524    times 0xe db 0
    15516 __U8RS:                                      ; 0xfa0d0 LB 0x10
     15525__U8RS:                                      ; 0xfa0e0 LB 0x10
    1551715526    test si, si                               ; 85 f6
    15518     je short 0a0dfh                           ; 74 0b
     15527    je short 0a0efh                           ; 74 0b
    1551915528    shr ax, 1                                 ; d1 e8
    1552015529    rcr bx, 1                                 ; d1 db
     
    1552215531    rcr dx, 1                                 ; d1 da
    1552315532    dec si                                    ; 4e
    15524     jne short 0a0d4h                          ; 75 f5
     15533    jne short 0a0e4h                          ; 75 f5
    1552515534    retn                                      ; c3
    15526 __U8LS:                                      ; 0xfa0e0 LB 0x10
     15535__U8LS:                                      ; 0xfa0f0 LB 0x10
    1552715536    test si, si                               ; 85 f6
    15528     je short 0a0efh                           ; 74 0b
     15537    je short 0a0ffh                           ; 74 0b
    1552915538    sal dx, 1                                 ; d1 e2
    1553015539    rcl cx, 1                                 ; d1 d1
     
    1553215541    rcl ax, 1                                 ; d1 d0
    1553315542    dec si                                    ; 4e
    15534     jne short 0a0e4h                          ; 75 f5
     15543    jne short 0a0f4h                          ; 75 f5
    1553515544    retn                                      ; c3
    15536 _fmemset_:                                   ; 0xfa0f0 LB 0x10
     15545_fmemset_:                                   ; 0xfa100 LB 0x10
    1553715546    push di                                   ; 57
    1553815547    mov es, dx                                ; 8e c2
     
    1554515554    retn                                      ; c3
    1554615555    times 0x3 db 0
    15547 _fmemcpy_:                                   ; 0xfa100 LB 0x3a
     15556_fmemcpy_:                                   ; 0xfa110 LB 0x3a
    1554815557    push bp                                   ; 55
    1554915558    db  08bh, 0ech
     
    1557015579    add byte [bx+si], al                      ; 00 00
    1557115580    add byte [bx+si], al                      ; 00 00
    15572     push ax                                   ; 50
    15573     mov ax, word [0a152h]                     ; a1 52 a1
    15574     push si                                   ; 56
    15575     mov ax, word [0a156h]                     ; a1 56 a1
    15576     push si                                   ; 56
    15577     mov ax, word [0a158h]                     ; a1 58 a1
    15578     pop ax                                    ; 58
    15579     mov ax, word [0a15ah]                     ; a1 5a a1
    15580     pop si                                    ; 5e
    15581     mov ax, word [0a15eh]                     ; a1 5e a1
    1558215581    pushaw                                    ; 60
    15583     mov ax, word [0a165h]                     ; a1 65 a1
    15584     db  067h
    15585     db  0a1h
    15586 apm_worker:                                  ; 0xfa13a LB 0x3a
     15582    mov ax, word [0a162h]                     ; a1 62 a1
     15583    mov eax, dword [0a166h]                   ; 66 a1 66 a1
     15584    mov eax, dword [0a168h]                   ; 66 a1 68 a1
     15585    push 06aa1h                               ; 68 a1 6a
     15586    mov ax, word [0a16eh]                     ; a1 6e a1
     15587    outsb                                     ; 6e
     15588    mov ax, word [0a170h]                     ; a1 70 a1
     15589    jne short 0a0e9h                          ; 75 a1
     15590    jnbe short 0a0ebh                         ; 77 a1
     15591apm_worker:                                  ; 0xfa14a LB 0x3a
    1558715592    sti                                       ; fb
    1558815593    push ax                                   ; 50
     
    1559615601    pop ax                                    ; 58
    1559715602    mov AH, strict byte 053h                  ; b4 53
    15598     jnc short 0a170h                          ; 73 25
    15599     jmp word [cs:bp-05ee0h]                   ; 2e ff a6 20 a1
    15600     jmp short 0a16eh                          ; eb 1c
     15603    jnc short 0a180h                          ; 73 25
     15604    jmp word [cs:bp-05ed0h]                   ; 2e ff a6 30 a1
     15605    jmp short 0a17eh                          ; eb 1c
    1560115606    sti                                       ; fb
    1560215607    hlt                                       ; f4
    15603     jmp short 0a16eh                          ; eb 18
    15604     jmp short 0a16eh                          ; eb 16
    15605     jmp short 0a170h                          ; eb 16
     15608    jmp short 0a17eh                          ; eb 18
     15609    jmp short 0a17eh                          ; eb 16
     15610    jmp short 0a180h                          ; eb 16
    1560615611    mov AH, strict byte 080h                  ; b4 80
    15607     jmp short 0a172h                          ; eb 14
    15608     jmp short 0a170h                          ; eb 10
     15612    jmp short 0a182h                          ; eb 14
     15613    jmp short 0a180h                          ; eb 10
    1560915614    mov ax, 00102h                            ; b8 02 01
    15610     jmp short 0a16eh                          ; eb 09
    15611     jmp short 0a16eh                          ; eb 07
     15615    jmp short 0a17eh                          ; eb 09
     15616    jmp short 0a17eh                          ; eb 07
    1561215617    mov BL, strict byte 000h                  ; b3 00
    1561315618    mov cx, strict word 00000h                ; b9 00 00
    15614     jmp short 0a16eh                          ; eb 00
     15619    jmp short 0a17eh                          ; eb 00
    1561515620    clc                                       ; f8
    1561615621    retn                                      ; c3
     
    1561815623    stc                                       ; f9
    1561915624    retn                                      ; c3
    15620 apm_pm16_entry:                              ; 0xfa174 LB 0x11
     15625apm_pm16_entry:                              ; 0xfa184 LB 0x11
    1562115626    mov AH, strict byte 002h                  ; b4 02
    1562215627    push DS                                   ; 1e
     
    1562615631    add bp, strict byte 00008h                ; 83 c5 08
    1562715632    mov ds, bp                                ; 8e dd
    15628     call 0a13ah                               ; e8 b8 ff
     15633    call 0a14ah                               ; e8 b8 ff
    1562915634    pop bp                                    ; 5d
    1563015635    pop DS                                    ; 1f
    1563115636    retf                                      ; cb
    15632 _DoUInt32Div:                                ; 0xfa185 LB 0x26b
     15637_DoUInt32Div:                                ; 0xfa195 LB 0x26b
    1563315638    push bp                                   ; 55
    1563415639    mov bp, sp                                ; 89 e5
     
    1564815653    mov [bp-006h], ds                         ; 8c 5e fa
    1564915654    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15650     jne short 0a1d5h                          ; 75 22
     15655    jne short 0a1e5h                          ; 75 22
    1565115656    mov ax, word [bx]                         ; 8b 07
    1565215657    test ax, ax                               ; 85 c0
    15653     je short 0a1d2h                           ; 74 19
     15658    je short 0a1e2h                           ; 74 19
    1565415659    cmp ax, strict word 00001h                ; 3d 01 00
    15655     jne short 0a1d5h                          ; 75 17
     15660    jne short 0a1e5h                          ; 75 17
    1565615661    xor ax, ax                                ; 31 c0
    1565715662    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1566115666    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1566215667    mov word [bp+006h], ax                    ; 89 46 06
    15663     jmp near 0a3ddh                           ; e9 08 02
     15668    jmp near 0a3edh                           ; e9 08 02
    1566415669    lds bx, [bp-00ch]                         ; c5 5e f4
    1566515670    mov ax, word [bx+002h]                    ; 8b 47 02
    1566615671    mov ds, [bp-006h]                         ; 8e 5e fa
    1566715672    cmp ax, word [si+002h]                    ; 3b 44 02
    15668     je short 0a1fbh                           ; 74 18
     15673    je short 0a20bh                           ; 74 18
    1566915674    mov ds, [bp-00ah]                         ; 8e 5e f6
    1567015675    mov ax, word [bx+002h]                    ; 8b 47 02
    1567115676    mov ds, [bp-006h]                         ; 8e 5e fa
    1567215677    cmp ax, word [si+002h]                    ; 3b 44 02
    15673     jbe short 0a1f6h                          ; 76 05
     15678    jbe short 0a206h                          ; 76 05
    1567415679    mov ax, strict word 00001h                ; b8 01 00
    15675     jmp short 0a21ch                          ; eb 26
     15680    jmp short 0a22ch                          ; eb 26
    1567615681    mov ax, strict word 0ffffh                ; b8 ff ff
    15677     jmp short 0a21ch                          ; eb 21
     15682    jmp short 0a22ch                          ; eb 21
    1567815683    mov ds, [bp-00ah]                         ; 8e 5e f6
    1567915684    mov ax, word [bx]                         ; 8b 07
    1568015685    mov ds, [bp-006h]                         ; 8e 5e fa
    1568115686    cmp ax, word [si]                         ; 3b 04
    15682     je short 0a21ah                           ; 74 13
     15687    je short 0a22ah                           ; 74 13
    1568315688    mov ds, [bp-00ah]                         ; 8e 5e f6
    1568415689    mov ax, word [bx]                         ; 8b 07
    1568515690    mov ds, [bp-006h]                         ; 8e 5e fa
    1568615691    cmp ax, word [si]                         ; 3b 04
    15687     jbe short 0a215h                          ; 76 02
    15688     jmp short 0a1f1h                          ; eb dc
     15692    jbe short 0a225h                          ; 76 02
     15693    jmp short 0a201h                          ; eb dc
    1568915694    mov ax, strict word 0ffffh                ; b8 ff ff
    15690     jmp short 0a21ch                          ; eb 02
     15695    jmp short 0a22ch                          ; eb 02
    1569115696    xor ax, ax                                ; 31 c0
    1569215697    test ax, ax                               ; 85 c0
    15693     jnl short 0a23eh                          ; 7d 1e
     15698    jnl short 0a24eh                          ; 7d 1e
    1569415699    lds bx, [bp-00ch]                         ; c5 5e f4
    1569515700    mov ax, word [bx]                         ; 8b 07
     
    1570115706    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1570215707    mov word [bx], strict word 00000h         ; c7 07 00 00
    15703     jmp short 0a1d2h                          ; eb 94
    15704     jne short 0a255h                          ; 75 15
     15708    jmp short 0a1e2h                          ; eb 94
     15709    jne short 0a265h                          ; 75 15
    1570515710    mov ds, [bp-008h]                         ; 8e 5e f8
    1570615711    mov word [di+002h], ax                    ; 89 45 02
     
    1570915714    mov word [bx], strict word 00001h         ; c7 07 01 00
    1571015715    mov word [bx+002h], ax                    ; 89 47 02
    15711     jmp near 0a3ddh                           ; e9 88 01
     15716    jmp near 0a3edh                           ; e9 88 01
    1571215717    lds bx, [bp-00ch]                         ; c5 5e f4
    1571315718    mov ax, word [bx+002h]                    ; 8b 47 02
    1571415719    test ax, ax                               ; 85 c0
    15715     je short 0a270h                           ; 74 11
     15720    je short 0a280h                           ; 74 11
    1571615721    push ax                                   ; 50
    1571715722    mov ax, 0f000h                            ; b8 00 f0
    1571815723    mov ds, ax                                ; 8e d8
    15719     call 0a3f0h                               ; e8 88 01
     15724    call 0a400h                               ; e8 88 01
    1572015725    add sp, strict byte 00002h                ; 83 c4 02
    1572115726    add ax, strict word 00010h                ; 05 10 00
    15722     jmp short 0a27dh                          ; eb 0d
     15727    jmp short 0a28dh                          ; eb 0d
    1572315728    push word [bx]                            ; ff 37
    1572415729    mov ax, 0f000h                            ; b8 00 f0
    1572515730    mov ds, ax                                ; 8e d8
    15726     call 0a3f0h                               ; e8 76 01
     15731    call 0a400h                               ; e8 76 01
    1572715732    add sp, strict byte 00002h                ; 83 c4 02
    1572815733    mov word [bp-014h], ax                    ; 89 46 ec
     
    1573015735    mov ax, word [si+002h]                    ; 8b 44 02
    1573115736    test ax, ax                               ; 85 c0
    15732     je short 0a29bh                           ; 74 11
     15737    je short 0a2abh                           ; 74 11
    1573315738    push ax                                   ; 50
    1573415739    mov ax, 0f000h                            ; b8 00 f0
    1573515740    mov ds, ax                                ; 8e d8
    15736     call 0a3f0h                               ; e8 5d 01
     15741    call 0a400h                               ; e8 5d 01
    1573715742    add sp, strict byte 00002h                ; 83 c4 02
    1573815743    add ax, strict word 00010h                ; 05 10 00
    15739     jmp short 0a2a8h                          ; eb 0d
     15744    jmp short 0a2b8h                          ; eb 0d
    1574015745    push word [si]                            ; ff 34
    1574115746    mov ax, 0f000h                            ; b8 00 f0
    1574215747    mov ds, ax                                ; 8e d8
    15743     call 0a3f0h                               ; e8 4b 01
     15748    call 0a400h                               ; e8 4b 01
    1574415749    add sp, strict byte 00002h                ; 83 c4 02
    1574515750    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1575215757    mov word [bp-016h], ax                    ; 89 46 ea
    1575315758    test dx, dx                               ; 85 d2
    15754     je short 0a318h                           ; 74 56
     15759    je short 0a328h                           ; 74 56
    1575515760    mov cx, dx                                ; 89 d1
    1575615761    xor ch, dh                                ; 30 f5
     
    1575815763    mov ax, word [si]                         ; 8b 04
    1575915764    mov dx, word [si+002h]                    ; 8b 54 02
    15760     jcxz 0a2d6h                               ; e3 06
     15765    jcxz 0a2e6h                               ; e3 06
    1576115766    sal ax, 1                                 ; d1 e0
    1576215767    rcl dx, 1                                 ; d1 d2
    15763     loop 0a2d0h                               ; e2 fa
     15768    loop 0a2e0h                               ; e2 fa
    1576415769    mov word [bp-018h], ax                    ; 89 46 e8
    1576515770    mov word [bp-016h], dx                    ; 89 56 ea
     
    1576715772    lds bx, [bp-00ch]                         ; c5 5e f4
    1576815773    cmp ax, word [bx+002h]                    ; 3b 47 02
    15769     jnbe short 0a2f6h                         ; 77 0f
     15774    jnbe short 0a306h                         ; 77 0f
    1577015775    mov ax, word [bp-016h]                    ; 8b 46 ea
    1577115776    cmp ax, word [bx+002h]                    ; 3b 47 02
    15772     jne short 0a2fah                          ; 75 0b
     15777    jne short 0a30ah                          ; 75 0b
    1577315778    mov ax, word [bp-018h]                    ; 8b 46 e8
    1577415779    cmp ax, word [bx]                         ; 3b 07
    15775     jbe short 0a2fah                          ; 76 04
     15780    jbe short 0a30ah                          ; 76 04
    1577615781    mov AL, strict byte 001h                  ; b0 01
    15777     jmp short 0a2fch                          ; eb 02
     15782    jmp short 0a30ch                          ; eb 02
    1577815783    xor al, al                                ; 30 c0
    1577915784    test al, al                               ; 84 c0
    15780     je short 0a323h                           ; 74 23
     15785    je short 0a333h                           ; 74 23
    1578115786    shr word [bp-016h], 1                     ; d1 6e ea
    1578215787    rcr word [bp-018h], 1                     ; d1 5e e8
    1578315788    dec word [bp-012h]                        ; ff 4e ee
    15784     jmp short 0a323h                          ; eb 18
     15789    jmp short 0a333h                          ; eb 18
    1578515790    mov cx, strict word 0001fh                ; b9 1f 00
    1578615791    sal word [bp-018h], 1                     ; d1 66 e8
    1578715792    rcl word [bp-016h], 1                     ; d1 56 ea
    15788     loop 0a30eh                               ; e2 f8
    15789     jmp short 0a306h                          ; eb ee
     15793    loop 0a31eh                               ; e2 f8
     15794    jmp short 0a316h                          ; eb ee
    1579015795    mov ax, word [si]                         ; 8b 04
    1579115796    mov word [bp-018h], ax                    ; 89 46 e8
     
    1580415809    mov ds, [bp-006h]                         ; 8e 5e fa
    1580515810    cmp ax, word [si+002h]                    ; 3b 44 02
    15806     jnbe short 0a34fh                         ; 77 06
    15807     jne short 0a353h                          ; 75 08
     15811    jnbe short 0a35fh                         ; 77 06
     15812    jne short 0a363h                          ; 75 08
    1580815813    cmp dx, word [si]                         ; 3b 14
    15809     jc short 0a353h                           ; 72 04
     15814    jc short 0a363h                           ; 72 04
    1581015815    mov AL, strict byte 001h                  ; b0 01
    15811     jmp short 0a355h                          ; eb 02
     15816    jmp short 0a365h                          ; eb 02
    1581215817    xor al, al                                ; 30 c0
    1581315818    test al, al                               ; 84 c0
    15814     je short 0a3bah                           ; 74 61
     15819    je short 0a3cah                           ; 74 61
    1581515820    mov ds, [bp-008h]                         ; 8e 5e f8
    1581615821    mov ax, word [di+002h]                    ; 8b 45 02
    1581715822    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15818     jnbe short 0a370h                         ; 77 0c
     15823    jnbe short 0a380h                         ; 77 0c
    1581915824    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15820     jne short 0a374h                          ; 75 0b
     15825    jne short 0a384h                          ; 75 0b
    1582115826    mov ax, word [di]                         ; 8b 05
    1582215827    cmp ax, word [bp-018h]                    ; 3b 46 e8
    15823     jc short 0a374h                           ; 72 04
     15828    jc short 0a384h                           ; 72 04
    1582415829    mov AL, strict byte 001h                  ; b0 01
    15825     jmp short 0a376h                          ; eb 02
     15830    jmp short 0a386h                          ; eb 02
    1582615831    xor al, al                                ; 30 c0
    1582715832    test al, al                               ; 84 c0
    15828     je short 0a3a0h                           ; 74 26
     15833    je short 0a3b0h                           ; 74 26
    1582915834    mov ax, word [bp-018h]                    ; 8b 46 e8
    1583015835    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1583515840    xor dx, dx                                ; 31 d2
    1583615841    mov cx, word [bp-012h]                    ; 8b 4e ee
    15837     jcxz 0a398h                               ; e3 06
     15842    jcxz 0a3a8h                               ; e3 06
    1583815843    sal ax, 1                                 ; d1 e0
    1583915844    rcl dx, 1                                 ; d1 d2
    15840     loop 0a392h                               ; e2 fa
     15845    loop 0a3a2h                               ; e2 fa
    1584115846    lds bx, [bp-010h]                         ; c5 5e f0
    1584215847    or word [bx], ax                          ; 09 07
     
    1584715852    mov ds, [bp-006h]                         ; 8e 5e fa
    1584815853    cmp ax, word [si+002h]                    ; 3b 44 02
    15849     jc short 0a3b6h                           ; 72 06
    15850     jne short 0a3bch                          ; 75 0a
     15854    jc short 0a3c6h                           ; 72 06
     15855    jne short 0a3cch                          ; 75 0a
    1585115856    cmp dx, word [si]                         ; 3b 14
    15852     jnc short 0a3bch                          ; 73 06
     15857    jnc short 0a3cch                          ; 73 06
    1585315858    mov AL, strict byte 001h                  ; b0 01
    15854     jmp short 0a3beh                          ; eb 04
    15855     jmp short 0a3ddh                          ; eb 21
     15859    jmp short 0a3ceh                          ; eb 04
     15860    jmp short 0a3edh                          ; eb 21
    1585615861    xor al, al                                ; 30 c0
    1585715862    test al, al                               ; 84 c0
    15858     je short 0a3d1h                           ; 74 0f
    15859     jmp short 0a3ddh                          ; eb 19
     15863    je short 0a3e1h                           ; 74 0f
     15864    jmp short 0a3edh                          ; eb 19
    1586015865    mov cx, strict word 0001fh                ; b9 1f 00
    1586115866    sal word [bp-018h], 1                     ; d1 66 e8
    1586215867    rcl word [bp-016h], 1                     ; d1 56 ea
    15863     loop 0a3c7h                               ; e2 f8
    15864     jmp short 0a3d7h                          ; eb 06
     15868    loop 0a3d7h                               ; e2 f8
     15869    jmp short 0a3e7h                          ; eb 06
    1586515870    shr word [bp-016h], 1                     ; d1 6e ea
    1586615871    rcr word [bp-018h], 1                     ; d1 5e e8
    1586715872    dec word [bp-012h]                        ; ff 4e ee
    15868     jmp near 0a359h                           ; e9 7c ff
     15873    jmp near 0a369h                           ; e9 7c ff
    1586915874    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1587015875    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1587515880    retn                                      ; c3
    1587615881    times 0x6 db 0
    15877 _ASMBitLastSetU16:                           ; 0xfa3f0 LB 0x18
     15882_ASMBitLastSetU16:                           ; 0xfa400 LB 0x18
    1587815883    push bp                                   ; 55
    1587915884    db  08bh, 0ech
     
    1588115886    mov cx, word [bp+004h]                    ; 8b 4e 04
    1588215887    test cx, cx                               ; 85 c9
    15883     je short 0a404h                           ; 74 0a
     15888    je short 0a414h                           ; 74 0a
    1588415889    mov ax, strict word 00010h                ; b8 10 00
    1588515890    sal cx, 1                                 ; d1 e1
    15886     jc short 0a406h                           ; 72 05
     15891    jc short 0a416h                           ; 72 05
    1588715892    dec ax                                    ; 48
    15888     jmp short 0a3fdh                          ; eb f9
     15893    jmp short 0a40dh                          ; eb f9
    1588915894    db  033h, 0c0h
    1589015895    ; xor ax, ax                                ; 33 c0
     
    1589215897    retn                                      ; c3
    1589315898
    15894   ; Padding 0x35f8 bytes at 0xfa408
    15895   times 13816 db 0
     15899  ; Padding 0x35e8 bytes at 0xfa418
     15900  times 13800 db 0
    1589615901
    1589715902section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1594015945    add bp, strict byte 00008h                ; 83 c5 08
    1594115946    push ebp                                  ; 66 55
    15942     mov bp, 0a176h                            ; bd 76 a1
     15947    mov bp, 0a186h                            ; bd 86 a1
    1594315948    add byte [bx+si], al                      ; 00 00
    1594415949    push ebp                                  ; 66 55
     
    1640616411    cmp AL, strict byte 009h                  ; 3c 09
    1640716412    jne short 0e0bch                          ; 75 03
    16408     jmp near 0e366h                           ; e9 aa 02
     16413    jmp near 0e368h                           ; e9 ac 02
    1640916414    cmp AL, strict byte 005h                  ; 3c 05
    1641016415    je short 0e044h                           ; 74 84
     
    1662416629    int 002h                                  ; cd 02
    1662516630    iret                                      ; cf
    16626 hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     16631hard_drive_post:                             ; 0xfe2d2 LB 0xbf
    1662716632    db  033h, 0c0h
    1662816633    ; xor ax, ax                                ; 33 c0
     
    1666616671    call 01c9fh                               ; e8 63 39
    1666716672    call 02118h                               ; e8 d9 3d
    16668     call 09948h                               ; e8 06 b6
    16669     call 087b8h                               ; e8 73 a4
    16670     call 0ed2fh                               ; e8 e7 09
    16671     call 0e2d2h                               ; e8 87 ff
     16673    sti                                       ; fb
     16674    call 09958h                               ; e8 15 b6
     16675    cli                                       ; fa
     16676    call 087b8h                               ; e8 71 a4
     16677    call 0ed2fh                               ; e8 e5 09
     16678    call 0e2d2h                               ; e8 85 ff
    1667216679    push CS                                   ; 0e
    1667316680    pop DS                                    ; 1f
     
    1667516682    mov ax, 0c800h                            ; b8 00 c8
    1667616683    mov dx, 0f000h                            ; ba 00 f0
    16677     call 01600h                               ; e8 a9 32
    16678     call 0178dh                               ; e8 33 34
    16679     call 03b54h                               ; e8 f7 57
     16684    call 01600h                               ; e8 a7 32
     16685    call 0178dh                               ; e8 31 34
     16686    call 03b54h                               ; e8 f5 57
    1668016687    sti                                       ; fb
    1668116688    int 019h                                  ; cd 19
    1668216689    sti                                       ; fb
    1668316690    hlt                                       ; f4
    16684     jmp short 0e361h                          ; eb fd
     16691    jmp short 0e363h                          ; eb fd
    1668516692    cli                                       ; fa
    1668616693    hlt                                       ; f4
     
    1670416711    sti                                       ; fb
    1670516712    retf 00002h                               ; ca 02 00
    16706 biosorg_check_before_or_at_0E3FCh:           ; 0xfe38f LB 0x6f
    16707     times 0x6d db 0
     16713biosorg_check_before_or_at_0E3FCh:           ; 0xfe391 LB 0x6d
     16714    times 0x6b db 0
    1670816715    db  'XM'
    1670916716int13_handler:                               ; 0xfe3fe LB 0x3
     
    1750417511    popfw                                     ; 9d
    1750517512    jmp short 0f8a5h                          ; eb 11
    17506     call 09abbh                               ; e8 24 a2
     17513    call 09acbh                               ; e8 34 a2
    1750717514    jmp short 0f88eh                          ; eb f5
    1750817515int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1777017777cpu_reset:                                   ; 0xffff0 LB 0x10
    1777117778    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17772     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 03ch
     17779    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 097h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum

    r68421 r68773  
    1 38ab8a791e08812ddd515cba69fbc2ca *VBoxPcBios286.rom
     1d0db18f557ac555b6ec57638702f1e83 *VBoxPcBios286.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm

    r68421 r68773  
    10801080section CONST2 progbits vstart=0xda0 align=1 ; size=0x400 class=DATA group=DGROUP
    10811081_bios_cvs_version_string:                    ; 0xf0da0 LB 0x18
    1082     db  'VirtualBox 5.2.0_BETA2', 000h, 000h
     1082    db  'VirtualBox 5.2.0_BETA3', 000h, 000h
    10831083_bios_prefix_string:                         ; 0xf0db8 LB 0x8
    10841084    db  'BIOS: ', 000h, 000h
     
    11541154  times 1120 db 0
    11551155
    1156 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8b95 class=CODE group=AUTO
     1156section _TEXT progbits vstart=0x1600 align=1 ; size=0x8ba5 class=CODE group=AUTO
    11571157rom_scan_:                                   ; 0xf1600 LB 0x50
    11581158    push bp                                   ; 55
     
    16761676    mov bx, strict word 0000ah                ; bb 0a 00
    16771677    xor cx, cx                                ; 31 c9
    1678     call 0a0a0h                               ; e8 ce 86
     1678    call 0a0b0h                               ; e8 de 86
    16791679    mov word [bp-008h], ax                    ; 89 46 f8
    16801680    mov cx, dx                                ; 89 d1
     
    19021902    mov dx, word [bp-026h]                    ; 8b 56 da
    19031903    mov si, word [bp-01eh]                    ; 8b 76 e2
    1904     call 0a0e0h                               ; e8 dc 84
     1904    call 0a0f0h                               ; e8 ec 84
    19051905    mov ax, dx                                ; 89 d0
    19061906    xor ah, dh                                ; 30 f4
     
    23442344    mov dx, word [es:si]                      ; 26 8b 14
    23452345    mov si, strict word 00018h                ; be 18 00
    2346     call 0a0e0h                               ; e8 80 80
     2346    call 0a0f0h                               ; e8 90 80
    23472347    xor dh, dh                                ; 30 f6
    23482348    mov word [bp-016h], dx                    ; 89 56 ea
     
    23542354    mov dx, word [es:si]                      ; 26 8b 14
    23552355    mov si, strict word 00020h                ; be 20 00
    2356     call 0a0e0h                               ; e8 60 80
     2356    call 0a0f0h                               ; e8 70 80
    23572357    mov bx, dx                                ; 89 d3
    23582358    mov ax, word [bp-01eh]                    ; 8b 46 e2
     
    23852385    mov dx, word [es:si]                      ; 26 8b 14
    23862386    mov si, strict word 00008h                ; be 08 00
    2387     call 0a0e0h                               ; e8 0f 80
     2387    call 0a0f0h                               ; e8 1f 80
    23882388    mov word [bp-014h], dx                    ; 89 56 ec
    23892389    mov bx, word [bp-018h]                    ; 8b 5e e8
     
    23942394    mov dx, word [es:si]                      ; 26 8b 14
    23952395    mov si, strict word 00018h                ; be 18 00
    2396     call 0a0e0h                               ; e8 f1 7f
     2396    call 0a0f0h                               ; e8 01 80
    23972397    and dx, strict byte 0000fh                ; 83 e2 0f
    23982398    or dl, 040h                               ; 80 ca 40
     
    29502950    mov dx, word [es:si+036h]                 ; 26 8b 54 36
    29512951    mov si, strict word 0000bh                ; be 0b 00
    2952     call 0a0e0h                               ; e8 29 7a
     2952    call 0a0f0h                               ; e8 39 7a
    29532953    mov word [bp-030h], dx                    ; 89 56 d0
    29542954    mov word [bp-02eh], cx                    ; 89 4e d2
     
    32213221    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32223222    mov si, strict word 00018h                ; be 18 00
    3223     call 0a0e0h                               ; e8 53 77
     3223    call 0a0f0h                               ; e8 63 77
    32243224    xor dh, dh                                ; 30 f6
    32253225    mov word [bp-01ch], dx                    ; 89 56 e4
     
    32293229    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32303230    mov si, strict word 00020h                ; be 20 00
    3231     call 0a0e0h                               ; e8 3c 77
     3231    call 0a0f0h                               ; e8 4c 77
    32323232    mov bx, dx                                ; 89 d3
    32333233    mov ax, word [bp-01ah]                    ; 8b 46 e6
     
    32633263    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32643264    mov si, strict word 00008h                ; be 08 00
    3265     call 0a0e0h                               ; e8 e8 76
     3265    call 0a0f0h                               ; e8 f8 76
    32663266    mov word [bp-010h], ax                    ; 89 46 f0
    32673267    mov word [bp-014h], bx                    ; 89 5e ec
     
    32703270    mov word [bp-026h], dx                    ; 89 56 da
    32713271    mov si, strict word 00010h                ; be 10 00
    3272     call 0a0e0h                               ; e8 d3 76
     3272    call 0a0f0h                               ; e8 e3 76
    32733273    mov word [bp-01eh], dx                    ; 89 56 e2
    32743274    mov ax, dx                                ; 89 d0
     
    55285528    mov dx, ss                                ; 8c d2
    55295529    lea ax, [bp-026h]                         ; 8d 46 da
    5530     call 0a100h                               ; e8 e8 61
     5530    call 0a110h                               ; e8 f8 61
    55315531    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    55325532    mov ax, strict word 00011h                ; b8 11 00
     
    59885988    xor dl, dl                                ; 30 d2
    59895989    xor cx, cx                                ; 31 c9
    5990     call 0a060h                               ; e8 e6 5b
     5990    call 0a070h                               ; e8 f6 5b
    59915991    xor bx, bx                                ; 31 db
    59925992    add ax, si                                ; 01 f0
     
    59945994    mov bx, di                                ; 89 fb
    59955995    xor cx, cx                                ; 31 c9
    5996     call 0a060h                               ; e8 d9 5b
     5996    call 0a070h                               ; e8 e9 5b
    59975997    mov bx, ax                                ; 89 c3
    59985998    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    60296029    mov dx, ss                                ; 8c d2
    60306030    lea ax, [bp-02eh]                         ; 8d 46 d2
    6031     call 0a100h                               ; e8 22 5c
     6031    call 0a110h                               ; e8 32 5c
    60326032    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    60336033    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    63366336    mov dx, ss                                ; 8c d2
    63376337    lea ax, [bp-02ch]                         ; 8d 46 d4
    6338     call 0a100h                               ; e8 87 58
     6338    call 0a110h                               ; e8 97 58
    63396339    mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
    63406340    mov ax, word [bp-018h]                    ; 8b 46 e8
     
    81858185    mov dx, word [bp+00ch]                    ; 8b 56 0c
    81868186    mov si, strict word 00020h                ; be 20 00
    8187     call 0a0e0h                               ; e8 e5 45
     8187    call 0a0f0h                               ; e8 f5 45
    81888188    test ax, ax                               ; 85 c0
    81898189    jne short 05b0bh                          ; 75 0c
     
    82238223    mov bx, strict word 0003fh                ; bb 3f 00
    82248224    xor cx, cx                                ; 31 c9
    8225     call 0a060h                               ; e8 0c 45
     8225    call 0a070h                               ; e8 1c 45
    82268226    mov bx, ax                                ; 89 c3
    82278227    mov cx, dx                                ; 89 d1
    82288228    mov ax, word [bp-004h]                    ; 8b 46 fc
    82298229    mov dx, si                                ; 89 f2
    8230     call 0a0a0h                               ; e8 40 45
     8230    call 0a0b0h                               ; e8 50 45
    82318231    mov word [es:di+002h], ax                 ; 26 89 45 02
    82328232    cmp ax, 00400h                            ; 3d 00 04
     
    84528452    mov bx, cx                                ; 89 cb
    84538453    xor cx, cx                                ; 31 c9
    8454     call 0a060h                               ; e8 d7 42
     8454    call 0a070h                               ; e8 e7 42
    84558455    xor bx, bx                                ; 31 db
    84568456    add ax, word [bp-008h]                    ; 03 46 f8
     
    84588458    mov bx, word [bp-00ah]                    ; 8b 5e f6
    84598459    xor cx, cx                                ; 31 c9
    8460     call 0a060h                               ; e8 c8 42
     8460    call 0a070h                               ; e8 d8 42
    84618461    xor bx, bx                                ; 31 db
    84628462    add ax, word [bp-006h]                    ; 03 46 fa
     
    86188618    mov bx, word [bp-008h]                    ; 8b 5e f8
    86198619    xor cx, cx                                ; 31 c9
    8620     call 0a060h                               ; e8 00 41
     8620    call 0a070h                               ; e8 10 41
    86218621    mov bx, word [bp-006h]                    ; 8b 5e fa
    86228622    xor cx, cx                                ; 31 c9
    8623     call 0a060h                               ; e8 f8 40
     8623    call 0a070h                               ; e8 08 41
    86248624    mov word [bp-010h], ax                    ; 89 46 f0
    86258625    mov word [bp-00eh], dx                    ; 89 56 f2
     
    87588758    xor bx, bx                                ; 31 db
    87598759    mov si, strict word 00020h                ; be 20 00
    8760     call 0a0f0h                               ; e8 04 40
     8760    call 0a100h                               ; e8 14 40
    87618761    mov word [bp-00eh], bx                    ; 89 5e f2
    87628762    mov bx, word [es:di+008h]                 ; 26 8b 5d 08
     
    89098909    mov bx, word [bp-00eh]                    ; 8b 5e f2
    89108910    mov si, strict word 00020h                ; be 20 00
    8911     call 0a0e0h                               ; e8 1a 3e
     8911    call 0a0f0h                               ; e8 2a 3e
    89128912    mov bx, di                                ; 89 fb
    89138913    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    92669266    mov bx, strict word 0000fh                ; bb 0f 00
    92679267    xor cx, cx                                ; 31 c9
    9268     call 0a0a0h                               ; e8 41 3a
     9268    call 0a0b0h                               ; e8 51 3a
    92699269    mov cx, ax                                ; 89 c1
    92709270    mov bx, dx                                ; 89 d3
     
    1227612276    mov dx, ss                                ; 8c d2
    1227712277    lea ax, [bp-046h]                         ; 8d 46 ba
    12278     call 0a100h                               ; e8 49 1d
     12278    call 0a110h                               ; e8 59 1d
    1227912279    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1228012280    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1240112401    mov dx, word [bp-016h]                    ; 8b 56 ea
    1240212402    mov si, strict word 0000ch                ; be 0c 00
    12403     call 0a0e0h                               ; e8 e6 1b
     12403    call 0a0f0h                               ; e8 f6 1b
    1240412404    mov word [bp-018h], ax                    ; 89 46 e8
    1240512405    mov word [bp-014h], bx                    ; 89 5e ec
     
    1242112421    mov dx, word [bp-016h]                    ; 8b 56 ea
    1242212422    mov si, strict word 00006h                ; be 06 00
    12423     call 0a0e0h                               ; e8 a6 1b
     12423    call 0a0f0h                               ; e8 b6 1b
    1242412424    mov si, word [bp-020h]                    ; 8b 76 e0
    1242512425    add si, dx                                ; 01 d6
     
    1243912439    mov dx, si                                ; 89 f2
    1244012440    mov si, strict word 00008h                ; be 08 00
    12441     call 0a0e0h                               ; e8 76 1b
     12441    call 0a0f0h                               ; e8 86 1b
    1244212442    mov word [bp-022h], bx                    ; 89 5e de
    1244312443    mov word [bp-02ch], cx                    ; 89 4e d4
     
    1244812448    mov dx, word [bp-02ah]                    ; 8b 56 d6
    1244912449    mov si, strict word 00010h                ; be 10 00
    12450     call 0a0e0h                               ; e8 5b 1b
     12450    call 0a0f0h                               ; e8 6b 1b
    1245112451    mov si, word [bp-01ah]                    ; 8b 76 e6
    1245212452    add si, dx                                ; 01 d6
     
    1247212472    mov dx, word [bp-016h]                    ; 8b 56 ea
    1247312473    mov si, strict word 0000bh                ; be 0b 00
    12474     call 0a0e0h                               ; e8 13 1b
     12474    call 0a0f0h                               ; e8 23 1b
    1247512475    mov si, dx                                ; 89 d6
    1247612476    mov dx, cx                                ; 89 ca
     
    1266612666    push cx                                   ; 51
    1266712667    push si                                   ; 56
    12668     call 09ec7h                               ; e8 bc 16
     12668    call 09ed3h                               ; e8 c8 16
    1266912669    mov dx, ax                                ; 89 c2
    1267012670    cmp ax, strict word 0ffffh                ; 3d ff ff
     
    1267712677    mov bx, strict word 00004h                ; bb 04 00
    1267812678    mov dx, si                                ; 89 f2
    12679     call 09f59h                               ; e8 32 17
     12679    call 09f65h                               ; e8 3e 17
    1268012680    lea sp, [bp-006h]                         ; 8d 66 fa
    1268112681    pop si                                    ; 5e
     
    1295412954    mov ax, 00080h                            ; b8 80 00
    1295512955    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12956     call 0a100h                               ; e8 8e 16
     12956    call 0a110h                               ; e8 9e 16
    1295712957    mov es, [bp-00ah]                         ; 8e 46 f6
    1295812958    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1297212972    mov dx, word [es:si]                      ; 26 8b 14
    1297312973    mov si, strict word 00008h                ; be 08 00
    12974     call 0a0e0h                               ; e8 2a 16
     12974    call 0a0f0h                               ; e8 3a 16
    1297512975    mov es, [bp-00ah]                         ; 8e 46 f6
    1297612976    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1298312983    mov dx, word [es:si]                      ; 26 8b 14
    1298412984    mov si, strict word 00010h                ; be 10 00
    12985     call 0a0e0h                               ; e8 04 16
     12985    call 0a0f0h                               ; e8 14 16
    1298612986    mov es, [bp-00ah]                         ; 8e 46 f6
    1298712987    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1299512995    mov dx, word [es:si]                      ; 26 8b 14
    1299612996    mov si, strict word 00018h                ; be 18 00
    12997     call 0a0e0h                               ; e8 d8 15
     12997    call 0a0f0h                               ; e8 e8 15
    1299812998    mov es, [bp-00ah]                         ; 8e 46 f6
    1299912999    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1300613006    mov dx, word [es:si]                      ; 26 8b 14
    1300713007    mov si, strict word 00020h                ; be 20 00
    13008     call 0a0e0h                               ; e8 b2 15
     13008    call 0a0f0h                               ; e8 c2 15
    1300913009    mov es, [bp-00ah]                         ; 8e 46 f6
    1301013010    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1301713017    mov dx, word [es:si]                      ; 26 8b 14
    1301813018    mov si, strict word 00028h                ; be 28 00
    13019     call 0a0e0h                               ; e8 8c 15
     13019    call 0a0f0h                               ; e8 9c 15
    1302013020    mov es, [bp-00ah]                         ; 8e 46 f6
    1302113021    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1303113031    mov bx, word [bp-010h]                    ; 8b 5e f0
    1303213032    xor cx, cx                                ; 31 c9
    13033     call 0a060h                               ; e8 d7 14
     13033    call 0a070h                               ; e8 e7 14
    1303413034    push dx                                   ; 52
    1303513035    push ax                                   ; 50
     
    1304113041    mov ax, 0026ah                            ; b8 6a 02
    1304213042    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13043     call 09fb0h                               ; e8 0b 14
     13043    call 09fbch                               ; e8 17 14
    1304413044    mov es, [bp-00ah]                         ; 8e 46 f6
    1304513045    mov ax, word [es:di+0027eh]               ; 26 8b 85 7e 02
     
    1309913099    add ax, 0026ah                            ; 05 6a 02
    1310013100    mov dx, cx                                ; 89 ca
    13101     call 0a029h                               ; e8 ac 13
     13101    call 0a035h                               ; e8 b8 13
    1310213102    mov es, cx                                ; 8e c1
    1310313103    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     
    1318113181    mov ax, di                                ; 89 f8
    1318213182    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13183     call 0a100h                               ; e8 d3 13
     13183    call 0a110h                               ; e8 e3 13
    1318413184    lea ax, [di+00080h]                       ; 8d 85 80 00
    1318513185    mov cx, strict word 00040h                ; b9 40 00
    1318613186    xor bx, bx                                ; 31 db
    1318713187    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13188     call 0a100h                               ; e8 c4 13
     13188    call 0a110h                               ; e8 d4 13
    1318913189    lea ax, [di+00200h]                       ; 8d 85 00 02
    1319013190    mov cx, strict word 00060h                ; b9 60 00
    1319113191    xor bx, bx                                ; 31 db
    1319213192    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13193     call 0a100h                               ; e8 b5 13
     13193    call 0a110h                               ; e8 c5 13
    1319413194    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1319513195    sal ax, 007h                              ; c1 e0 07
     
    1336213362    mov ax, si                                ; 89 f0
    1336313363    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13364     call 0a100h                               ; e8 55 12
     13364    call 0a110h                               ; e8 65 12
    1336513365    lea ax, [si+00080h]                       ; 8d 84 80 00
    1336613366    mov cx, strict word 00040h                ; b9 40 00
    1336713367    xor bx, bx                                ; 31 db
    1336813368    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13369     call 0a100h                               ; e8 46 12
     13369    call 0a110h                               ; e8 56 12
    1337013370    lea di, [si+00200h]                       ; 8d bc 00 02
    1337113371    mov cx, strict word 00060h                ; b9 60 00
     
    1337313373    mov ax, di                                ; 89 f8
    1337413374    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13375     call 0a100h                               ; e8 35 12
     13375    call 0a110h                               ; e8 45 12
    1337613376    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    1337713377    sal bx, 007h                              ; c1 e3 07
     
    1370013700    mov dx, word [bp+008h]                    ; 8b 56 08
    1370113701    xor cx, cx                                ; 31 c9
    13702     call 0a0a0h                               ; e8 8c 0e
     13702    call 0a0b0h                               ; e8 9c 0e
    1370313703    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1370413704    xor di, di                                ; 31 ff
     
    1372413724    mov ax, 000c0h                            ; b8 c0 00
    1372513725    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13726     call 0a110h                               ; e8 ac 0e
     13726    call 0a120h                               ; e8 bc 0e
    1372713727    mov es, [bp-008h]                         ; 8e 46 f8
    1372813728    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1378013780    pop bp                                    ; 5d
    1378113781    retn 0000ch                               ; c2 0c 00
    13782 ahci_port_detect_device_:                    ; 0xf930c LB 0x4b1
     13782wait_ticks_device_init_:                     ; 0xf930c LB 0x5
     13783    push bp                                   ; 55
     13784    mov bp, sp                                ; 89 e5
     13785    pop bp                                    ; 5d
     13786    retn                                      ; c3
     13787ahci_port_detect_device_:                    ; 0xf9311 LB 0x4b8
    1378313788    push bp                                   ; 55
    1378413789    mov bp, sp                                ; 89 e5
     
    1378613791    push si                                   ; 56
    1378713792    push di                                   ; 57
    13788     sub sp, 00224h                            ; 81 ec 24 02
     13793    sub sp, 0022ch                            ; 81 ec 2c 02
    1378913794    mov si, ax                                ; 89 c6
    13790     mov word [bp-012h], dx                    ; 89 56 ee
    13791     mov byte [bp-00ah], bl                    ; 88 5e f6
     13795    mov word [bp-02ah], dx                    ; 89 56 d6
     13796    mov byte [bp-008h], bl                    ; 88 5e f8
     13797    mov word [bp-026h], strict word 00000h    ; c7 46 da 00 00
    1379213798    movzx di, bl                              ; 0f b6 fb
    1379313799    mov bx, di                                ; 89 fb
    13794     call 08e15h                               ; e8 ef fa
     13800    call 08e15h                               ; e8 e5 fa
    1379513801    mov dx, strict word 0000eh                ; ba 0e 00
    1379613802    mov ax, strict word 00040h                ; b8 40 00
    13797     call 01765h                               ; e8 36 84
    13798     mov word [bp-010h], 00122h                ; c7 46 f0 22 01
    13799     mov word [bp-00eh], ax                    ; 89 46 f2
    13800     sal di, 007h                              ; c1 e7 07
    13801     mov word [bp-024h], di                    ; 89 7e dc
    13802     lea ax, [di+0012ch]                       ; 8d 85 2c 01
     13803    call 01765h                               ; e8 2c 84
     13804    mov word [bp-012h], 00122h                ; c7 46 ee 22 01
     13805    mov word [bp-010h], ax                    ; 89 46 f0
     13806    mov ax, di                                ; 89 f8
     13807    sal ax, 007h                              ; c1 e0 07
     13808    add ax, 0012ch                            ; 05 2c 01
    1380313809    cwd                                       ; 99
    13804     mov bx, ax                                ; 89 c3
    13805     mov di, dx                                ; 89 d7
    13806     mov es, [bp-012h]                         ; 8e 46 ee
     13810    mov di, ax                                ; 89 c7
     13811    mov bx, dx                                ; 89 d3
     13812    mov es, [bp-02ah]                         ; 8e 46 d6
    1380713813    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    13808     mov cx, di                                ; 89 f9
     13814    mov cx, bx                                ; 89 d9
    1380913815    xchg cx, ax                               ; 91
    1381013816    sal eax, 010h                             ; 66 c1 e0 10
     
    1381213818    ; mov ax, cx                                ; 8b c1
    1381313819    out DX, eax                               ; 66 ef
    13814     mov es, [bp-012h]                         ; 8e 46 ee
     13820    mov es, [bp-02ah]                         ; 8e 46 d6
    1381513821    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1381613822    add dx, strict byte 00004h                ; 83 c2 04
     
    1382213828    ; mov ax, cx                                ; 8b c1
    1382313829    out DX, eax                               ; 66 ef
    13824     mov es, [bp-012h]                         ; 8e 46 ee
     13830    mov es, [bp-02ah]                         ; 8e 46 d6
    1382513831    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    13826     mov ax, bx                                ; 89 d8
    13827     mov cx, di                                ; 89 f9
     13832    mov ax, di                                ; 89 f8
     13833    mov cx, bx                                ; 89 d9
    1382813834    xchg cx, ax                               ; 91
    1382913835    sal eax, 010h                             ; 66 c1 e0 10
     
    1383113837    ; mov ax, cx                                ; 8b c1
    1383213838    out DX, eax                               ; 66 ef
    13833     mov es, [bp-012h]                         ; 8e 46 ee
     13839    mov es, [bp-02ah]                         ; 8e 46 d6
    1383413840    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1383513841    add dx, strict byte 00004h                ; 83 c2 04
     
    1384113847    ; mov ax, cx                                ; 8b c1
    1384213848    out DX, eax                               ; 66 ef
    13843     mov ax, word [bp-024h]                    ; 8b 46 dc
     13849    mov di, strict word 0006ch                ; bf 6c 00
     13850    mov ax, strict word 00040h                ; b8 40 00
     13851    mov word [bp-014h], ax                    ; 89 46 ec
     13852    mov es, ax                                ; 8e c0
     13853    mov ax, word [es:di]                      ; 26 8b 05
     13854    add ax, strict word 00003h                ; 05 03 00
     13855    mov word [bp-024h], ax                    ; 89 46 dc
     13856    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     13857    adc ax, strict word 00000h                ; 15 00 00
     13858    mov word [bp-01ch], ax                    ; 89 46 e4
     13859    mov es, [bp-014h]                         ; 8e 46 ec
     13860    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     13861    cmp ax, word [bp-01ch]                    ; 3b 46 e4
     13862    jc short 093e2h                           ; 72 11
     13863    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     13864    cmp ax, word [bp-01ch]                    ; 3b 46 e4
     13865    jne short 0942dh                          ; 75 53
     13866    mov ax, word [es:di]                      ; 26 8b 05
     13867    cmp ax, word [bp-024h]                    ; 3b 46 dc
     13868    jnc short 0942dh                          ; 73 4b
     13869    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     13870    sal ax, 007h                              ; c1 e0 07
    1384413871    add ax, 00128h                            ; 05 28 01
    1384513872    cwd                                       ; 99
    13846     mov es, [bp-012h]                         ; 8e 46 ee
     13873    mov es, [bp-02ah]                         ; 8e 46 d6
    1384713874    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1384813875    mov cx, dx                                ; 89 d1
     
    1385313880    ; mov ax, cx                                ; 8b c1
    1385413881    out DX, eax                               ; 66 ef
    13855     mov es, [bp-012h]                         ; 8e 46 ee
     13882    mov es, [bp-02ah]                         ; 8e 46 d6
    1385613883    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1385713884    add dx, strict byte 00004h                ; 83 c2 04
     
    1386113888    shr eax, 010h                             ; 66 c1 e8 10
    1386213889    xchg dx, ax                               ; 92
     13890    mov word [bp-028h], ax                    ; 89 46 d8
     13891    mov word [bp-022h], dx                    ; 89 56 de
    1386313892    push strict byte 00000h                   ; 6a 00
    1386413893    mov bx, strict word 0000fh                ; bb 0f 00
    1386513894    xor cx, cx                                ; 31 c9
    13866     call 088b0h                               ; e8 d7 f4
    13867     test ax, ax                               ; 85 c0
    13868     je near 097b5h                            ; 0f 84 d6 03
    13869     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    13870     sal ax, 007h                              ; c1 e0 07
    13871     mov word [bp-018h], ax                    ; 89 46 e8
    13872     add ax, 00128h                            ; 05 28 01
     13895    call 088b0h                               ; e8 8a f4
     13896    cmp ax, strict word 00003h                ; 3d 03 00
     13897    jne short 093c5h                          ; 75 9a
     13898    jmp short 09435h                          ; eb 08
     13899    cmp word [bp-026h], strict byte 00000h    ; 83 7e da 00
     13900    je near 097c1h                            ; 0f 84 8c 03
     13901    push strict byte 00000h                   ; 6a 00
     13902    mov bx, strict word 0000fh                ; bb 0f 00
     13903    xor cx, cx                                ; 31 c9
     13904    mov ax, word [bp-028h]                    ; 8b 46 d8
     13905    mov dx, word [bp-022h]                    ; 8b 56 de
     13906    call 088b0h                               ; e8 6b f4
     13907    cmp ax, strict word 00003h                ; 3d 03 00
     13908    jne near 097c1h                           ; 0f 85 75 03
     13909    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     13910    sal di, 007h                              ; c1 e7 07
     13911    lea ax, [di+00130h]                       ; 8d 85 30 01
    1387313912    cwd                                       ; 99
    13874     mov es, [bp-012h]                         ; 8e 46 ee
     13913    mov es, [bp-02ah]                         ; 8e 46 d6
    1387513914    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1387613915    mov cx, dx                                ; 89 d1
     
    1388113920    ; mov ax, cx                                ; 8b c1
    1388213921    out DX, eax                               ; 66 ef
    13883     mov es, [bp-012h]                         ; 8e 46 ee
    13884     mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    13885     add dx, strict byte 00004h                ; 83 c2 04
    13886     in eax, DX                                ; 66 ed
    13887     db  08bh, 0d0h
    13888     ; mov dx, ax                                ; 8b d0
    13889     shr eax, 010h                             ; 66 c1 e8 10
    13890     xchg dx, ax                               ; 92
    13891     mov di, ax                                ; 89 c7
    13892     mov word [bp-022h], dx                    ; 89 56 de
    13893     push strict byte 00000h                   ; 6a 00
    13894     mov bx, strict word 0000fh                ; bb 0f 00
    13895     xor cx, cx                                ; 31 c9
    13896     call 088b0h                               ; e8 8b f4
    13897     cmp ax, strict word 00001h                ; 3d 01 00
    13898     je short 093dfh                           ; 74 b5
    13899     push strict byte 00000h                   ; 6a 00
    13900     mov bx, strict word 0000fh                ; bb 0f 00
    13901     xor cx, cx                                ; 31 c9
    13902     mov ax, di                                ; 89 f8
    13903     mov dx, word [bp-022h]                    ; 8b 56 de
    13904     call 088b0h                               ; e8 77 f4
    13905     cmp ax, strict word 00003h                ; 3d 03 00
    13906     jne near 097b5h                           ; 0f 85 75 03
    13907     mov ax, word [bp-018h]                    ; 8b 46 e8
    13908     add ax, 00130h                            ; 05 30 01
    13909     cwd                                       ; 99
    13910     mov es, [bp-012h]                         ; 8e 46 ee
    13911     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    13912     mov cx, dx                                ; 89 d1
    13913     mov dx, bx                                ; 89 da
    13914     xchg cx, ax                               ; 91
    13915     sal eax, 010h                             ; 66 c1 e0 10
    13916     db  08bh, 0c1h
    13917     ; mov ax, cx                                ; 8b c1
    13918     out DX, eax                               ; 66 ef
    13919     mov es, [bp-012h]                         ; 8e 46 ee
     13922    mov es, [bp-02ah]                         ; 8e 46 d6
    1392013923    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1392113924    add dx, strict byte 00004h                ; 83 c2 04
     
    1392713930    ; mov ax, cx                                ; 8b c1
    1392813931    out DX, eax                               ; 66 ef
    13929     les bx, [bp-010h]                         ; c4 5e f0
     13932    les bx, [bp-012h]                         ; c4 5e ee
    1393013933    mov al, byte [es:bx+00231h]               ; 26 8a 87 31 02
    13931     mov byte [bp-008h], al                    ; 88 46 f8
     13934    mov byte [bp-00ah], al                    ; 88 46 f6
    1393213935    cmp AL, strict byte 004h                  ; 3c 04
    13933     jnc near 097b5h                           ; 0f 83 2f 03
    13934     mov ax, word [bp-018h]                    ; 8b 46 e8
    13935     add ax, 00118h                            ; 05 18 01
    13936     mov es, [bp-012h]                         ; 8e 46 ee
     13936    jnc near 097c1h                           ; 0f 83 2a 03
     13937    lea ax, [di+00118h]                       ; 8d 85 18 01
     13938    mov es, [bp-02ah]                         ; 8e 46 d6
    1393713939    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1393813940    xor cx, cx                                ; 31 c9
     
    1395813960    ; mov ax, cx                                ; 8b c1
    1395913961    out DX, eax                               ; 66 ef
    13960     mov ax, word [bp-018h]                    ; 8b 46 e8
    13961     add ax, 00124h                            ; 05 24 01
     13962    lea ax, [di+00124h]                       ; 8d 85 24 01
    1396213963    cwd                                       ; 99
    13963     mov es, [bp-012h]                         ; 8e 46 ee
     13964    mov es, [bp-02ah]                         ; 8e 46 d6
    1396413965    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1396513966    mov cx, dx                                ; 89 d1
     
    1397013971    ; mov ax, cx                                ; 8b c1
    1397113972    out DX, eax                               ; 66 ef
    13972     mov es, [bp-012h]                         ; 8e 46 ee
     13973    mov es, [bp-02ah]                         ; 8e 46 d6
    1397313974    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1397413975    add dx, strict byte 00004h                ; 83 c2 04
     
    1397813979    shr eax, 010h                             ; 66 c1 e8 10
    1397913980    xchg dx, ax                               ; 92
    13980     mov di, ax                                ; 89 c7
     13981    mov bx, ax                                ; 89 c3
    1398113982    mov ax, dx                                ; 89 d0
    13982     mov cl, byte [bp-008h]                    ; 8a 4e f8
    13983     add cl, 00ch                              ; 80 c1 0c
    13984     test dx, dx                               ; 85 d2
    13985     jne near 0970bh                           ; 0f 85 0d 02
    13986     cmp di, 00101h                            ; 81 ff 01 01
    13987     jne near 0970bh                           ; 0f 85 05 02
    13988     les bx, [bp-010h]                         ; c4 5e f0
     13983    mov dl, byte [bp-00ah]                    ; 8a 56 f6
     13984    add dl, 00ch                              ; 80 c2 0c
     13985    mov byte [bp-00eh], dl                    ; 88 56 f2
     13986    test ax, ax                               ; 85 c0
     13987    jne near 09713h                           ; 0f 85 05 02
     13988    cmp bx, 00101h                            ; 81 fb 01 01
     13989    jne near 09713h                           ; 0f 85 fd 01
     13990    les bx, [bp-012h]                         ; c4 5e ee
    1398913991    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
    1399013992    ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00
    1399113993    db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
    1399213994    ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00
    13993     lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
     13995    lea dx, [bp-00232h]                       ; 8d 96 ce fd
    1399413996    mov word [es:bx+008h], dx                 ; 26 89 57 08
    1399513997    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
     
    1399713999    ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02
    1399814000    mov bx, 000ech                            ; bb ec 00
    13999     mov ax, word [bp-010h]                    ; 8b 46 f0
     14001    mov ax, word [bp-012h]                    ; 8b 46 ee
    1400014002    mov dx, es                                ; 8c c2
    14001     call 08a34h                               ; e8 fa f4
    14002     mov byte [bp-00ch], cl                    ; 88 4e f4
    14003     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     14003    call 08a34h                               ; e8 ea f4
     14004    mov al, byte [bp-00eh]                    ; 8a 46 f2
     14005    mov byte [bp-00ch], al                    ; 88 46 f4
     14006    test byte [bp-00232h], 080h               ; f6 86 ce fd 80
    1400414007    db  00fh, 095h, 0c0h
    1400514008    ; setne al                                  ; 0f 95 c0
    1400614009    xor ah, ah                                ; 30 e4
    14007     mov dx, word [bp-00228h]                  ; 8b 96 d8 fd
     14010    mov dx, word [bp-00230h]                  ; 8b 96 d0 fd
     14011    mov word [bp-01eh], dx                    ; 89 56 e2
     14012    mov dx, word [bp-0022ch]                  ; 8b 96 d4 fd
    1400814013    mov word [bp-020h], dx                    ; 89 56 e0
    14009     mov dx, word [bp-00224h]                  ; 8b 96 dc fd
    14010     mov word [bp-01ch], dx                    ; 89 56 e4
    14011     mov dx, word [bp-0021eh]                  ; 8b 96 e2 fd
    14012     mov word [bp-01eh], dx                    ; 89 56 e2
    14013     mov dx, word [bp-001b2h]                  ; 8b 96 4e fe
     14014    mov dx, word [bp-00226h]                  ; 8b 96 da fd
    1401414015    mov word [bp-01ah], dx                    ; 89 56 e6
    14015     mov di, word [bp-001b0h]                  ; 8b be 50 fe
    14016     mov dword [bp-016h], strict dword 000000000h ; 66 c7 46 ea 00 00 00 00
    14017     cmp di, 00fffh                            ; 81 ff ff 0f
    14018     jne short 09593h                          ; 75 1e
    14019     cmp dx, strict byte 0ffffh                ; 83 fa ff
    14020     jne short 09593h                          ; 75 19
    14021     mov dx, word [bp-0015ch]                  ; 8b 96 a4 fe
    14022     mov word [bp-014h], dx                    ; 89 56 ec
    14023     mov dx, word [bp-0015eh]                  ; 8b 96 a2 fe
     14016    mov di, word [bp-001bah]                  ; 8b be 46 fe
     14017    mov si, word [bp-001b8h]                  ; 8b b6 48 fe
     14018    mov dword [bp-018h], strict dword 000000000h ; 66 c7 46 e8 00 00 00 00
     14019    cmp si, 00fffh                            ; 81 fe ff 0f
     14020    jne short 095a0h                          ; 75 1b
     14021    cmp di, strict byte 0ffffh                ; 83 ff ff
     14022    jne short 095a0h                          ; 75 16
     14023    mov dx, word [bp-00164h]                  ; 8b 96 9c fe
    1402414024    mov word [bp-016h], dx                    ; 89 56 ea
    14025     mov di, word [bp-00160h]                  ; 8b be a0 fe
    14026     mov dx, word [bp-00162h]                  ; 8b 96 9e fe
    14027     mov word [bp-01ah], dx                    ; 89 56 e6
    14028     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    14029     mov es, [bp-00eh]                         ; 8e 46 f2
    14030     add bx, word [bp-010h]                    ; 03 5e f0
    14031     mov ah, byte [bp-00ah]                    ; 8a 66 f6
     14025    mov dx, word [bp-00166h]                  ; 8b 96 9a fe
     14026    mov word [bp-018h], dx                    ; 89 56 e8
     14027    mov si, word [bp-00168h]                  ; 8b b6 98 fe
     14028    mov di, word [bp-0016ah]                  ; 8b be 96 fe
     14029    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     14030    mov es, [bp-010h]                         ; 8e 46 f0
     14031    add bx, word [bp-012h]                    ; 03 5e ee
     14032    mov ah, byte [bp-008h]                    ; 8a 66 f8
    1403214033    mov byte [es:bx+0022dh], ah               ; 26 88 a7 2d 02
    1403314034    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
    1403414035    imul dx, dx, strict byte 0001ch           ; 6b d2 1c
    14035     mov si, word [bp-010h]                    ; 8b 76 f0
    14036     add si, dx                                ; 01 d6
    14037     mov word [es:si+022h], 0ff05h             ; 26 c7 44 22 05 ff
    14038     mov byte [es:si+024h], al                 ; 26 88 44 24
    14039     mov byte [es:si+025h], 000h               ; 26 c6 44 25 00
    14040     mov word [es:si+028h], 00200h             ; 26 c7 44 28 00 02
    14041     mov byte [es:si+027h], 001h               ; 26 c6 44 27 01
    14042     mov ax, word [bp-014h]                    ; 8b 46 ec
    14043     mov word [es:si+03ch], ax                 ; 26 89 44 3c
     14036    mov bx, word [bp-012h]                    ; 8b 5e ee
     14037    add bx, dx                                ; 01 d3
     14038    mov word [es:bx+022h], 0ff05h             ; 26 c7 47 22 05 ff
     14039    mov byte [es:bx+024h], al                 ; 26 88 47 24
     14040    mov byte [es:bx+025h], 000h               ; 26 c6 47 25 00
     14041    mov word [es:bx+028h], 00200h             ; 26 c7 47 28 00 02
     14042    mov byte [es:bx+027h], 001h               ; 26 c6 47 27 01
    1404414043    mov ax, word [bp-016h]                    ; 8b 46 ea
    14045     mov word [es:si+03ah], ax                 ; 26 89 44 3a
    14046     mov word [es:si+038h], di                 ; 26 89 7c 38
     14044    mov word [es:bx+03ch], ax                 ; 26 89 47 3c
     14045    mov ax, word [bp-018h]                    ; 8b 46 e8
     14046    mov word [es:bx+03ah], ax                 ; 26 89 47 3a
     14047    mov word [es:bx+038h], si                 ; 26 89 77 38
     14048    mov word [es:bx+036h], di                 ; 26 89 7f 36
     14049    mov ax, word [bp-020h]                    ; 8b 46 e0
     14050    mov word [es:bx+030h], ax                 ; 26 89 47 30
     14051    mov ax, word [bp-01eh]                    ; 8b 46 e2
     14052    mov word [es:bx+032h], ax                 ; 26 89 47 32
    1404714053    mov ax, word [bp-01ah]                    ; 8b 46 e6
    14048     mov word [es:si+036h], ax                 ; 26 89 44 36
    14049     mov ax, word [bp-01ch]                    ; 8b 46 e4
    14050     mov word [es:si+030h], ax                 ; 26 89 44 30
    14051     mov ax, word [bp-020h]                    ; 8b 46 e0
    14052     mov word [es:si+032h], ax                 ; 26 89 44 32
    14053     mov ax, word [bp-01eh]                    ; 8b 46 e2
    14054     mov word [es:si+034h], ax                 ; 26 89 44 34
    14055     mov al, byte [bp-008h]                    ; 8a 46 f8
     14054    mov word [es:bx+034h], ax                 ; 26 89 47 34
     14055    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1405614056    cmp AL, strict byte 001h                  ; 3c 01
    14057     jc short 0960ch                           ; 72 0c
    14058     jbe short 09614h                          ; 76 12
     14057    jc short 09616h                           ; 72 0c
     14058    jbe short 0961eh                          ; 76 12
    1405914059    cmp AL, strict byte 003h                  ; 3c 03
    14060     je short 0961ch                           ; 74 16
     14060    je short 09626h                           ; 74 16
    1406114061    cmp AL, strict byte 002h                  ; 3c 02
    14062     je short 09618h                           ; 74 0e
    14063     jmp short 09665h                          ; eb 59
     14062    je short 09622h                           ; 74 0e
     14063    jmp short 09673h                          ; eb 5d
    1406414064    test al, al                               ; 84 c0
    14065     jne short 09665h                          ; 75 55
    14066     mov DL, strict byte 040h                  ; b2 40
    14067     jmp short 0961eh                          ; eb 0a
    14068     mov DL, strict byte 048h                  ; b2 48
    14069     jmp short 0961eh                          ; eb 06
    14070     mov DL, strict byte 050h                  ; b2 50
    14071     jmp short 0961eh                          ; eb 02
    14072     mov DL, strict byte 058h                  ; b2 58
    14073     mov al, dl                                ; 88 d0
     14065    jne short 09673h                          ; 75 59
     14066    mov BL, strict byte 040h                  ; b3 40
     14067    jmp short 09628h                          ; eb 0a
     14068    mov BL, strict byte 048h                  ; b3 48
     14069    jmp short 09628h                          ; eb 06
     14070    mov BL, strict byte 050h                  ; b3 50
     14071    jmp short 09628h                          ; eb 02
     14072    mov BL, strict byte 058h                  ; b3 58
     14073    mov al, bl                                ; 88 d8
    1407414074    add AL, strict byte 007h                  ; 04 07
    14075     movzx bx, al                              ; 0f b6 d8
    14076     mov ax, bx                                ; 89 d8
    14077     call 017a5h                               ; e8 7b 81
     14075    movzx dx, al                              ; 0f b6 d0
     14076    mov ax, dx                                ; 89 d0
     14077    call 017a5h                               ; e8 71 81
    1407814078    test al, al                               ; 84 c0
    14079     je short 09665h                           ; 74 37
    14080     mov al, dl                                ; 88 d0
     14079    je short 09673h                           ; 74 3b
     14080    mov al, bl                                ; 88 d8
    1408114081    db  0feh, 0c0h
    1408214082    ; inc al                                    ; fe c0
    1408314083    xor ah, ah                                ; 30 e4
    14084     call 017a5h                               ; e8 6e 81
     14084    call 017a5h                               ; e8 64 81
    1408514085    xor ah, ah                                ; 30 e4
    14086     mov si, ax                                ; 89 c6
    14087     sal si, 008h                              ; c1 e6 08
    14088     movzx ax, dl                              ; 0f b6 c2
    14089     call 017a5h                               ; e8 61 81
     14086    sal ax, 008h                              ; c1 e0 08
     14087    mov word [bp-02ch], ax                    ; 89 46 d4
     14088    movzx ax, bl                              ; 0f b6 c3
     14089    call 017a5h                               ; e8 56 81
    1409014090    xor ah, ah                                ; 30 e4
    14091     add ax, si                                ; 01 f0
    14092     mov word [bp-028h], ax                    ; 89 46 d8
    14093     mov al, dl                                ; 88 d0
     14091    mov cx, word [bp-02ch]                    ; 8b 4e d4
     14092    add cx, ax                                ; 01 c1
     14093    mov word [bp-030h], cx                    ; 89 4e d0
     14094    mov al, bl                                ; 88 d8
    1409414095    add AL, strict byte 002h                  ; 04 02
    1409514096    xor ah, ah                                ; 30 e4
    14096     call 017a5h                               ; e8 51 81
     14097    call 017a5h                               ; e8 43 81
    1409714098    xor ah, ah                                ; 30 e4
    14098     mov word [bp-02ah], ax                    ; 89 46 d6
    14099     mov ax, bx                                ; 89 d8
    14100     call 017a5h                               ; e8 47 81
     14099    mov word [bp-032h], ax                    ; 89 46 ce
     14100    mov ax, dx                                ; 89 d0
     14101    call 017a5h                               ; e8 39 81
    1410114102    xor ah, ah                                ; 30 e4
    14102     mov word [bp-026h], ax                    ; 89 46 da
    14103     jmp short 09675h                          ; eb 10
    14104     push dword [bp-016h]                      ; 66 ff 76 ea
     14103    mov word [bp-02eh], ax                    ; 89 46 d2
     14104    jmp short 09681h                          ; eb 0e
     14105    push dword [bp-018h]                      ; 66 ff 76 e8
     14106    push si                                   ; 56
    1410514107    push di                                   ; 57
    14106     push word [bp-01ah]                       ; ff 76 e6
    1410714108    mov dx, ss                                ; 8c d2
    14108     lea ax, [bp-02ah]                         ; 8d 46 d6
    14109     call 05ad0h                               ; e8 5b c4
     14109    lea ax, [bp-032h]                         ; 8d 46 ce
     14110    call 05ad0h                               ; e8 4f c4
    1411014111    mov bx, 00db8h                            ; bb b8 0d
    1411114112    mov cx, ds                                ; 8c d9
    1411214113    mov ax, strict word 00004h                ; b8 04 00
    14113     call 01a2ah                               ; e8 aa 83
    14114     push dword [bp-016h]                      ; 66 ff 76 ea
     14114    call 01a2ah                               ; e8 9e 83
     14115    push dword [bp-018h]                      ; 66 ff 76 e8
     14116    push si                                   ; 56
    1411514117    push di                                   ; 57
     14118    mov ax, word [bp-02eh]                    ; 8b 46 d2
     14119    push ax                                   ; 50
     14120    mov ax, word [bp-032h]                    ; 8b 46 ce
     14121    push ax                                   ; 50
     14122    mov ax, word [bp-030h]                    ; 8b 46 d0
     14123    push ax                                   ; 50
    1411614124    push word [bp-01ah]                       ; ff 76 e6
    14117     mov ax, word [bp-026h]                    ; 8b 46 da
     14125    push word [bp-020h]                       ; ff 76 e0
     14126    push word [bp-01eh]                       ; ff 76 e2
     14127    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1411814128    push ax                                   ; 50
    14119     mov ax, word [bp-02ah]                    ; 8b 46 d6
    14120     push ax                                   ; 50
    14121     mov ax, word [bp-028h]                    ; 8b 46 d8
    14122     push ax                                   ; 50
    14123     push word [bp-01eh]                       ; ff 76 e2
    14124     push word [bp-01ch]                       ; ff 76 e4
    14125     push word [bp-020h]                       ; ff 76 e0
    1412614129    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    14127     push ax                                   ; 50
    14128     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1412914130    push ax                                   ; 50
    1413014131    push 00ce8h                               ; 68 e8 0c
    1413114132    push strict byte 00004h                   ; 6a 04
    14132     call 01a6bh                               ; e8 bc 83
     14133    call 01a6bh                               ; e8 b2 83
    1413314134    add sp, strict byte 0001ch                ; 83 c4 1c
    14134     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
    14135     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
    14136     mov di, word [bp-010h]                    ; 8b 7e f0
    14137     add di, ax                                ; 01 c7
    14138     mov es, [bp-00eh]                         ; 8e 46 f2
     14135    movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
     14136    imul di, di, strict byte 0001ch           ; 6b ff 1c
     14137    add di, word [bp-012h]                    ; 03 7e ee
     14138    mov es, [bp-010h]                         ; 8e 46 f0
    1413914139    lea di, [di+02ah]                         ; 8d 7d 2a
    1414014140    push DS                                   ; 1e
    1414114141    push SS                                   ; 16
    1414214142    pop DS                                    ; 1f
    14143     lea si, [bp-02ah]                         ; 8d 76 d6
     14143    lea si, [bp-032h]                         ; 8d 76 ce
    1414414144    movsw                                     ; a5
    1414514145    movsw                                     ; a5
    1414614146    movsw                                     ; a5
    1414714147    pop DS                                    ; 1f
    14148     mov bx, word [bp-010h]                    ; 8b 5e f0
     14148    mov bx, word [bp-012h]                    ; 8b 5e ee
    1414914149    mov al, byte [es:bx+001e2h]               ; 26 8a 87 e2 01
    14150     mov ah, byte [bp-008h]                    ; 8a 66 f8
     14150    mov ah, byte [bp-00ah]                    ; 8a 66 f6
    1415114151    add ah, 00ch                              ; 80 c4 0c
    1415214152    movzx bx, al                              ; 0f b6 d8
    14153     add bx, word [bp-010h]                    ; 03 5e f0
     14153    add bx, word [bp-012h]                    ; 03 5e ee
    1415414154    mov byte [es:bx+001e3h], ah               ; 26 88 a7 e3 01
    1415514155    db  0feh, 0c0h
    1415614156    ; inc al                                    ; fe c0
    14157     mov bx, word [bp-010h]                    ; 8b 5e f0
     14157    mov bx, word [bp-012h]                    ; 8b 5e ee
    1415814158    mov byte [es:bx+001e2h], al               ; 26 88 87 e2 01
    1415914159    mov dx, strict word 00075h                ; ba 75 00
    1416014160    mov ax, strict word 00040h                ; b8 40 00
    14161     call 01749h                               ; e8 4f 80
     14161    call 01749h                               ; e8 47 80
    1416214162    db  0feh, 0c0h
    1416314163    ; inc al                                    ; fe c0
     
    1416514165    mov dx, strict word 00075h                ; ba 75 00
    1416614166    mov ax, strict word 00040h                ; b8 40 00
    14167     call 01757h                               ; e8 4f 80
    14168     jmp near 097a7h                           ; e9 9c 00
    14169     cmp dx, 0eb14h                            ; 81 fa 14 eb
    14170     jne near 097a7h                           ; 0f 85 94 00
    14171     cmp di, 00101h                            ; 81 ff 01 01
    14172     jne near 097a7h                           ; 0f 85 8c 00
    14173     les bx, [bp-010h]                         ; c4 5e f0
     14167    call 01757h                               ; e8 47 80
     14168    jmp near 097b3h                           ; e9 a0 00
     14169    cmp ax, 0eb14h                            ; 3d 14 eb
     14170    jne near 097b3h                           ; 0f 85 99 00
     14171    cmp bx, 00101h                            ; 81 fb 01 01
     14172    jne near 097b3h                           ; 0f 85 91 00
     14173    les bx, [bp-012h]                         ; c4 5e ee
    1417414174    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
    1417514175    ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00
    1417614176    db  066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
    1417714177    ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00
    14178     lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
     14178    lea dx, [bp-00232h]                       ; 8d 96 ce fd
    1417914179    mov word [es:bx+008h], dx                 ; 26 89 57 08
    1418014180    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
     
    1418214182    ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02
    1418314183    mov bx, 000a1h                            ; bb a1 00
    14184     mov ax, word [bp-010h]                    ; 8b 46 f0
     14184    mov ax, word [bp-012h]                    ; 8b 46 ee
    1418514185    mov dx, es                                ; 8c c2
    14186     call 08a34h                               ; e8 e5 f2
    14187     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     14186    call 08a34h                               ; e8 de f2
     14187    test byte [bp-00232h], 080h               ; f6 86 ce fd 80
    1418814188    db  00fh, 095h, 0c0h
    1418914189    ; setne al                                  ; 0f 95 c0
    1419014190    xor ah, ah                                ; 30 e4
    14191     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    14192     mov es, [bp-00eh]                         ; 8e 46 f2
    14193     add bx, word [bp-010h]                    ; 03 5e f0
     14191    mov dx, ax                                ; 89 c2
     14192    movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     14193    mov es, [bp-010h]                         ; 8e 46 f0
     14194    add bx, word [bp-012h]                    ; 03 5e ee
     14195    mov al, byte [bp-008h]                    ; 8a 46 f8
     14196    mov byte [es:bx+0022dh], al               ; 26 88 87 2d 02
     14197    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
     14198    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     14199    mov bx, word [bp-012h]                    ; 8b 5e ee
     14200    add bx, ax                                ; 01 c3
     14201    mov word [es:bx+022h], 00505h             ; 26 c7 47 22 05 05
     14202    mov byte [es:bx+024h], dl                 ; 26 88 57 24
     14203    mov word [es:bx+028h], 00800h             ; 26 c7 47 28 00 08
     14204    mov bx, word [bp-012h]                    ; 8b 5e ee
     14205    mov al, byte [es:bx+001f3h]               ; 26 8a 87 f3 01
    1419414206    mov ah, byte [bp-00ah]                    ; 8a 66 f6
    14195     mov byte [es:bx+0022dh], ah               ; 26 88 a7 2d 02
    14196     movzx si, cl                              ; 0f b6 f1
    14197     imul si, si, strict byte 0001ch           ; 6b f6 1c
    14198     add si, word [bp-010h]                    ; 03 76 f0
    14199     mov word [es:si+022h], 00505h             ; 26 c7 44 22 05 05
    14200     mov byte [es:si+024h], al                 ; 26 88 44 24
    14201     mov word [es:si+028h], 00800h             ; 26 c7 44 28 00 08
    14202     mov bx, word [bp-010h]                    ; 8b 5e f0
    14203     mov al, byte [es:bx+001f3h]               ; 26 8a 87 f3 01
    14204     mov ah, byte [bp-008h]                    ; 8a 66 f8
    1420514207    add ah, 00ch                              ; 80 c4 0c
    1420614208    movzx bx, al                              ; 0f b6 d8
    14207     add bx, word [bp-010h]                    ; 03 5e f0
     14209    add bx, word [bp-012h]                    ; 03 5e ee
    1420814210    mov byte [es:bx+001f4h], ah               ; 26 88 a7 f4 01
    1420914211    db  0feh, 0c0h
    1421014212    ; inc al                                    ; fe c0
    14211     mov bx, word [bp-010h]                    ; 8b 5e f0
     14213    mov bx, word [bp-012h]                    ; 8b 5e ee
    1421214214    mov byte [es:bx+001f3h], al               ; 26 88 87 f3 01
    14213     inc byte [bp-008h]                        ; fe 46 f8
    14214     mov al, byte [bp-008h]                    ; 8a 46 f8
    14215     les bx, [bp-010h]                         ; c4 5e f0
     14215    inc byte [bp-00ah]                        ; fe 46 f6
     14216    mov al, byte [bp-00ah]                    ; 8a 46 f6
     14217    les bx, [bp-012h]                         ; c4 5e ee
    1421614218    mov byte [es:bx+00231h], al               ; 26 88 87 31 02
    1421714219    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1422114223    pop bp                                    ; 5d
    1422214224    retn                                      ; c3
    14223 ahci_mem_alloc_:                             ; 0xf97bd LB 0x43
     14225ahci_mem_alloc_:                             ; 0xf97c9 LB 0x43
    1422414226    push bp                                   ; 55
    1422514227    mov bp, sp                                ; 89 e5
     
    1423114233    mov dx, 00413h                            ; ba 13 04
    1423214234    xor ax, ax                                ; 31 c0
    14233     call 01765h                               ; e8 98 7f
     14235    call 01765h                               ; e8 8c 7f
    1423414236    test ax, ax                               ; 85 c0
    14235     je short 097f6h                           ; 74 25
     14237    je short 09802h                           ; 74 25
    1423614238    dec ax                                    ; 48
    1423714239    mov bx, ax                                ; 89 c3
     
    1424014242    sal ax, 1                                 ; d1 e0
    1424114243    rcl dx, 1                                 ; d1 d2
    14242     loop 097d9h                               ; e2 fa
     14244    loop 097e5h                               ; e2 fa
    1424314245    mov si, ax                                ; 89 c6
    1424414246    mov di, dx                                ; 89 d7
     
    1424614248    shr di, 1                                 ; d1 ef
    1424714249    rcr si, 1                                 ; d1 de
    14248     loop 097e6h                               ; e2 fa
     14250    loop 097f2h                               ; e2 fa
    1424914251    mov dx, 00413h                            ; ba 13 04
    1425014252    xor ax, ax                                ; 31 c0
    14251     call 01773h                               ; e8 7f 7f
     14253    call 01773h                               ; e8 73 7f
    1425214254    mov ax, si                                ; 89 f0
    1425314255    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1425914261    pop bp                                    ; 5d
    1426014262    retn                                      ; c3
    14261 ahci_hba_init_:                              ; 0xf9800 LB 0x166
     14263ahci_hba_init_:                              ; 0xf980c LB 0x166
    1426214264    push bp                                   ; 55
    1426314265    mov bp, sp                                ; 89 e5
     
    1427114273    mov dx, strict word 0000eh                ; ba 0e 00
    1427214274    mov ax, strict word 00040h                ; b8 40 00
    14273     call 01765h                               ; e8 4f 7f
     14275    call 01765h                               ; e8 43 7f
    1427414276    mov bx, 00122h                            ; bb 22 01
    1427514277    mov di, ax                                ; 89 c7
     
    1428814290    shr eax, 010h                             ; 66 c1 e8 10
    1428914291    xchg dx, ax                               ; 92
    14290     call 097bdh                               ; e8 83 ff
     14292    call 097c9h                               ; e8 83 ff
    1429114293    mov word [bp-010h], ax                    ; 89 46 f0
    1429214294    test ax, ax                               ; 85 c0
    14293     je near 09945h                            ; 0f 84 02 01
     14295    je near 09951h                            ; 0f 84 02 01
    1429414296    mov ax, word [bp-010h]                    ; 8b 46 f0
    1429514297    mov es, di                                ; 8e c7
     
    1434114343    xchg dx, ax                               ; 92
    1434214344    test AL, strict byte 001h                 ; a8 01
    14343     jne short 09899h                          ; 75 de
     14345    jne short 098a5h                          ; 75 de
    1434414346    xor ax, ax                                ; 31 c0
    1434514347    xor cx, cx                                ; 31 c9
     
    1435914361    mov bx, strict word 0001fh                ; bb 1f 00
    1436014362    xor cx, cx                                ; 31 c9
    14361     call 088b0h                               ; e8 d1 ef
     14363    call 088b0h                               ; e8 c5 ef
    1436214364    db  0feh, 0c0h
    1436314365    ; inc al                                    ; fe c0
    1436414366    mov byte [bp-00eh], al                    ; 88 46 f2
    1436514367    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    14366     jmp short 0990ah                          ; eb 20
     14368    jmp short 09916h                          ; eb 20
    1436714369    xor al, al                                ; 30 c0
    1436814370    test al, al                               ; 84 c0
    14369     je short 09901h                           ; 74 11
     14371    je short 0990dh                           ; 74 11
    1437014372    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    1437114373    xor ax, ax                                ; 31 c0
    1437214374    mov dx, word [bp-010h]                    ; 8b 56 f0
    14373     call 0930ch                               ; e8 10 fa
     14375    call 09311h                               ; e8 09 fa
    1437414376    dec byte [bp-00eh]                        ; fe 4e f2
    14375     je short 09943h                           ; 74 42
     14377    je short 0994fh                           ; 74 42
    1437614378    inc byte [bp-00ch]                        ; fe 46 f4
    1437714379    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    14378     jnc short 09943h                          ; 73 39
     14380    jnc short 0994fh                          ; 73 39
    1437914381    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    1438014382    mov bx, strict word 00001h                ; bb 01 00
    1438114383    xor di, di                                ; 31 ff
    14382     jcxz 0991bh                               ; e3 06
     14384    jcxz 09927h                               ; e3 06
    1438314385    sal bx, 1                                 ; d1 e3
    1438414386    rcl di, 1                                 ; d1 d7
    14385     loop 09915h                               ; e2 fa
     14387    loop 09921h                               ; e2 fa
    1438614388    mov ax, strict word 0000ch                ; b8 0c 00
    1438714389    xor cx, cx                                ; 31 c9
     
    1439914401    xchg dx, ax                               ; 92
    1440014402    test dx, di                               ; 85 fa
    14401     jne short 0993fh                          ; 75 04
     14403    jne short 0994bh                          ; 75 04
    1440214404    test ax, bx                               ; 85 d8
    14403     je short 098eah                           ; 74 ab
     14405    je short 098f6h                           ; 74 ab
    1440414406    mov AL, strict byte 001h                  ; b0 01
    14405     jmp short 098ech                          ; eb a9
     14407    jmp short 098f8h                          ; eb a9
    1440614408    xor ax, ax                                ; 31 c0
    1440714409    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1441314415    pop bp                                    ; 5d
    1441414416    retn                                      ; c3
    14415     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 036h, 09ah, 014h, 09ah, 01ah, 09ah, 020h, 09ah, 026h
    14416     db  09ah, 02ch, 09ah, 032h, 09ah, 036h, 09ah
    14417 _ahci_init:                                  ; 0xf9966 LB 0x116
     14417    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 042h, 09ah, 020h, 09ah, 026h, 09ah, 02ch, 09ah, 032h
     14418    db  09ah, 038h, 09ah, 03eh, 09ah, 042h, 09ah
     14419_ahci_init:                                  ; 0xf9972 LB 0x116
    1441814420    push bp                                   ; 55
    1441914421    mov bp, sp                                ; 89 e5
     
    1442314425    mov ax, 00601h                            ; b8 01 06
    1442414426    mov dx, strict word 00001h                ; ba 01 00
    14425     call 09e9ch                               ; e8 25 05
     14427    call 09ea8h                               ; e8 25 05
    1442614428    mov bx, ax                                ; 89 c3
    1442714429    cmp ax, strict word 0ffffh                ; 3d ff ff
    14428     je near 09a75h                            ; 0f 84 f5 00
     14430    je near 09a81h                            ; 0f 84 f5 00
    1442914431    xor al, al                                ; 30 c0
    1443014432    shr ax, 008h                              ; c1 e8 08
     
    1443414436    xor ah, ah                                ; 30 e4
    1443514437    mov bx, strict word 00034h                ; bb 34 00
    14436     call 09eech                               ; e8 56 05
     14438    call 09ef8h                               ; e8 56 05
    1443714439    mov cl, al                                ; 88 c1
    1443814440    test cl, cl                               ; 84 c9
    14439     je short 099bfh                           ; 74 23
     14441    je short 099cbh                           ; 74 23
    1444014442    movzx bx, cl                              ; 0f b6 d9
    1444114443    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1444314445    mov dx, di                                ; 89 fa
    1444414446    mov ax, si                                ; 89 f0
    14445     call 09eech                               ; e8 3e 05
     14447    call 09ef8h                               ; e8 3e 05
    1444614448    cmp AL, strict byte 012h                  ; 3c 12
    14447     je short 099bfh                           ; 74 0d
     14449    je short 099cbh                           ; 74 0d
    1444814450    mov al, cl                                ; 88 c8
    1444914451    db  0feh, 0c0h
     
    1445214454    mov dx, di                                ; 89 fa
    1445314455    mov ax, si                                ; 89 f0
    14454     jmp short 09993h                          ; eb d4
     14456    jmp short 0999fh                          ; eb d4
    1445514457    test cl, cl                               ; 84 c9
    14456     je near 09a75h                            ; 0f 84 b0 00
     14458    je near 09a81h                            ; 0f 84 b0 00
    1445714459    add cl, 002h                              ; 80 c1 02
    1445814460    movzx bx, cl                              ; 0f b6 d9
     
    1446114463    mov dx, si                                ; 89 f2
    1446214464    mov ax, di                                ; 89 f8
    14463     call 09eech                               ; e8 12 05
     14465    call 09ef8h                               ; e8 12 05
    1446414466    cmp AL, strict byte 010h                  ; 3c 10
    14465     jne near 09a75h                           ; 0f 85 95 00
     14467    jne near 09a81h                           ; 0f 85 95 00
    1446614468    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1446714469    mov al, cl                                ; 88 c8
     
    1447014472    mov dx, si                                ; 89 f2
    1447114473    mov ax, di                                ; 89 f8
    14472     call 09f10h                               ; e8 1e 05
     14474    call 09f1ch                               ; e8 1e 05
    1447314475    mov dx, ax                                ; 89 c2
    1447414476    and ax, strict word 0000fh                ; 25 0f 00
    1447514477    sub ax, strict word 00004h                ; 2d 04 00
    1447614478    cmp ax, strict word 0000bh                ; 3d 0b 00
    14477     jnbe short 09a36h                         ; 77 37
     14479    jnbe short 09a42h                         ; 77 37
    1447814480    push CS                                   ; 0e
    1447914481    pop ES                                    ; 07
    1448014482    mov cx, strict word 00008h                ; b9 08 00
    14481     mov di, 0994fh                            ; bf 4f 99
     14483    mov di, 0995bh                            ; bf 5b 99
    1448214484    repne scasb                               ; f2 ae
    1448314485    sal cx, 1                                 ; d1 e1
    1448414486    mov di, cx                                ; 89 cf
    14485     mov ax, word [cs:di-066aah]               ; 2e 8b 85 56 99
     14487    mov ax, word [cs:di-0669eh]               ; 2e 8b 85 62 99
    1448614488    jmp ax                                    ; ff e0
    1448714489    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    14488     jmp short 09a36h                          ; eb 1c
     14490    jmp short 09a42h                          ; eb 1c
    1448914491    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    14490     jmp short 09a36h                          ; eb 16
     14492    jmp short 09a42h                          ; eb 16
    1449114493    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    14492     jmp short 09a36h                          ; eb 10
     14494    jmp short 09a42h                          ; eb 10
    1449314495    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    14494     jmp short 09a36h                          ; eb 0a
     14496    jmp short 09a42h                          ; eb 0a
    1449514497    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    14496     jmp short 09a36h                          ; eb 04
     14498    jmp short 09a42h                          ; eb 04
    1449714499    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1449814500    mov cx, dx                                ; 89 d1
     
    1450114503    mov al, byte [bp-006h]                    ; 8a 46 fa
    1450214504    test al, al                               ; 84 c0
    14503     je short 09a75h                           ; 74 30
     14505    je short 09a81h                           ; 74 30
    1450414506    movzx bx, al                              ; 0f b6 d8
    1450514507    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1450714509    mov dx, di                                ; 89 fa
    1450814510    mov ax, si                                ; 89 f0
    14509     call 09f32h                               ; e8 db 04
     14511    call 09f3eh                               ; e8 db 04
    1451014512    test AL, strict byte 001h                 ; a8 01
    14511     je short 09a75h                           ; 74 1a
     14513    je short 09a81h                           ; 74 1a
    1451214514    and AL, strict byte 0f0h                  ; 24 f0
    1451314515    add ax, cx                                ; 01 c8
     
    1451714519    mov dx, di                                ; 89 fa
    1451814520    mov ax, si                                ; 89 f0
    14519     call 09f59h                               ; e8 ea 04
     14521    call 09f65h                               ; e8 ea 04
    1452014522    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14521     call 09800h                               ; e8 8b fd
     14523    call 0980ch                               ; e8 8b fd
    1452214524    lea sp, [bp-004h]                         ; 8d 66 fc
    1452314525    pop di                                    ; 5f
     
    1452514527    pop bp                                    ; 5d
    1452614528    retn                                      ; c3
    14527 apm_out_str_:                                ; 0xf9a7c LB 0x39
     14529apm_out_str_:                                ; 0xf9a88 LB 0x39
    1452814530    push bp                                   ; 55
    1452914531    mov bp, sp                                ; 89 e5
     
    1453114533    mov bx, ax                                ; 89 c3
    1453214534    cmp byte [bx], 000h                       ; 80 3f 00
    14533     je short 09a91h                           ; 74 0a
     14535    je short 09a9dh                           ; 74 0a
    1453414536    mov al, byte [bx]                         ; 8a 07
    1453514537    out DX, AL                                ; ee
     
    1453814540    db  00ah, 0c0h
    1453914541    ; or al, al                                 ; 0a c0
    14540     jne short 09a89h                          ; 75 f8
     14542    jne short 09a95h                          ; 75 f8
    1454114543    lea sp, [bp-002h]                         ; 8d 66 fe
    1454214544    pop bx                                    ; 5b
    1454314545    pop bp                                    ; 5d
    1454414546    retn                                      ; c3
    14545     fcomp dword [bp+si-0645ch]                ; d8 9a a4 9b
    14546     jmp far 0a49bh:0059ah                     ; ea 9a 05 9b a4
     14547    in AL, strict byte 09ah                   ; e4 9a
     14548    mov AL, strict byte 09bh                  ; b0 9b
     14549    neg byte [bp+si-064efh]                   ; f6 9a 11 9b
     14550    mov AL, strict byte 09bh                  ; b0 9b
     14551    cmp AL, strict byte 09bh                  ; 3c 9b
     14552    mov AL, strict byte 09bh                  ; b0 9b
     14553    inc cx                                    ; 41
    1454714554    wait                                      ; 9b
    14548     xor byte [bp+di-0645ch], bl               ; 30 9b a4 9b
    14549     xor ax, 0799bh                            ; 35 9b 79
    14550     wait                                      ; 9b
    14551     jns short 09a46h                          ; 79 9b
    14552     jns short 09a48h                          ; 79 9b
    14553     je short 09a4ah                           ; 74 9b
    14554     jns short 09a4ch                          ; 79 9b
    14555     jns short 09a4eh                          ; 79 9b
    14556     insw                                      ; 6d
    14557     wait                                      ; 9b
    14558 _apm_function:                               ; 0xf9ab5 LB 0xf5
     14555    test word [bp+di-0647bh], bx              ; 85 9b 85 9b
     14556    test word [bp+di-06480h], bx              ; 85 9b 80 9b
     14557    test word [bp+di-0647bh], bx              ; 85 9b 85 9b
     14558    jns short 09a5ch                          ; 79 9b
     14559_apm_function:                               ; 0xf9ac1 LB 0xf5
    1455914560    push bp                                   ; 55
    1456014561    mov bp, sp                                ; 89 e5
     
    1456414565    xor ah, ah                                ; 30 e4
    1456514566    cmp ax, strict word 0000eh                ; 3d 0e 00
    14566     jnbe near 09b79h                          ; 0f 87 b0 00
     14567    jnbe near 09b85h                          ; 0f 87 b0 00
    1456714568    mov bx, ax                                ; 89 c3
    1456814569    add bx, ax                                ; 01 c3
    1456914570    mov dx, word [bp+018h]                    ; 8b 56 18
    1457014571    or dl, 001h                               ; 80 ca 01
    14571     jmp word [cs:bx-06569h]                   ; 2e ff a7 97 9a
     14572    jmp word [cs:bx-0655dh]                   ; 2e ff a7 a3 9a
    1457214573    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1457314574    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1457414575    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14575     jmp near 09ba4h                           ; e9 ba 00
     14576    jmp near 09bb0h                           ; e9 ba 00
    1457614577    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14577     mov word [bp+00ch], 0a184h                ; c7 46 0c 84 a1
     14578    mov word [bp+00ch], 0a194h                ; c7 46 0c 94 a1
    1457814579    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1457914580    mov ax, strict word 0fff0h                ; b8 f0 ff
    1458014581    mov word [bp+006h], ax                    ; 89 46 06
    1458114582    mov word [bp+004h], ax                    ; 89 46 04
    14582     jmp near 09ba4h                           ; e9 9f 00
     14583    jmp near 09bb0h                           ; e9 9f 00
    1458314584    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1458414585    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1459314594    mov si, ax                                ; 89 c6
    1459414595    sal esi, 010h                             ; 66 c1 e6 10
    14595     jmp near 09ba4h                           ; e9 74 00
     14596    jmp near 09bb0h                           ; e9 74 00
    1459614597    sti                                       ; fb
    1459714598    hlt                                       ; f4
    14598     jmp near 09ba4h                           ; e9 6f 00
     14599    jmp near 09bb0h                           ; e9 6f 00
    1459914600    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14600     je short 09b5ah                           ; 74 1f
     14601    je short 09b66h                           ; 74 1f
    1460114602    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14602     je short 09b52h                           ; 74 11
     14603    je short 09b5eh                           ; 74 11
    1460314604    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14604     jne short 09b62h                          ; 75 1b
     14605    jne short 09b6eh                          ; 75 1b
    1460514606    mov dx, 0040fh                            ; ba 0f 04
    1460614607    mov ax, 00d22h                            ; b8 22 0d
    14607     call 09a7ch                               ; e8 2c ff
    14608     jmp short 09ba4h                          ; eb 52
     14608    call 09a88h                               ; e8 2c ff
     14609    jmp short 09bb0h                          ; eb 52
    1460914610    mov dx, 0040fh                            ; ba 0f 04
    1461014611    mov ax, 00d2ah                            ; b8 2a 0d
    14611     jmp short 09b4dh                          ; eb f3
     14612    jmp short 09b59h                          ; eb f3
    1461214613    mov dx, 0040fh                            ; ba 0f 04
    1461314614    mov ax, 00d32h                            ; b8 32 0d
    14614     jmp short 09b4dh                          ; eb eb
     14615    jmp short 09b59h                          ; eb eb
    1461514616    or ah, 00ah                               ; 80 cc 0a
    1461614617    mov word [bp+012h], ax                    ; 89 46 12
    1461714618    mov word [bp+018h], dx                    ; 89 56 18
    14618     jmp short 09ba4h                          ; eb 37
     14619    jmp short 09bb0h                          ; eb 37
    1461914620    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14620     jmp short 09ba4h                          ; eb 30
     14621    jmp short 09bb0h                          ; eb 30
    1462114622    or ah, 080h                               ; 80 cc 80
    14622     jmp short 09b65h                          ; eb ec
     14623    jmp short 09b71h                          ; eb ec
    1462314624    mov bx, 00db8h                            ; bb b8 0d
    1462414625    mov cx, ds                                ; 8c d9
    1462514626    mov ax, strict word 00004h                ; b8 04 00
    14626     call 01a2ah                               ; e8 a6 7e
     14627    call 01a2ah                               ; e8 9a 7e
    1462714628    push word [bp+00ch]                       ; ff 76 0c
    1462814629    push word [bp+012h]                       ; ff 76 12
    1462914630    push 00d3bh                               ; 68 3b 0d
    1463014631    push strict byte 00004h                   ; 6a 04
    14631     call 01a6bh                               ; e8 d9 7e
     14632    call 01a6bh                               ; e8 cd 7e
    1463214633    add sp, strict byte 00008h                ; 83 c4 08
    1463314634    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1464014641    pop bp                                    ; 5d
    1464114642    retn                                      ; c3
    14642 pci16_select_reg_:                           ; 0xf9baa LB 0x24
     14643pci16_select_reg_:                           ; 0xf9bb6 LB 0x24
    1464314644    push bp                                   ; 55
    1464414645    mov bp, sp                                ; 89 e5
     
    1465714658    pop bp                                    ; 5d
    1465814659    retn                                      ; c3
    14659 pci16_find_device_:                          ; 0xf9bce LB 0xf7
     14660pci16_find_device_:                          ; 0xf9bda LB 0xf7
    1466014661    push bp                                   ; 55
    1466114662    mov bp, sp                                ; 89 e5
     
    1467114672    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1467214673    test bl, 007h                             ; f6 c3 07
    14673     jne short 09c16h                          ; 75 2d
     14674    jne short 09c22h                          ; 75 2d
    1467414675    mov dx, strict word 0000eh                ; ba 0e 00
    1467514676    mov ax, bx                                ; 89 d8
    14676     call 09baah                               ; e8 b9 ff
     14677    call 09bb6h                               ; e8 b9 ff
    1467714678    mov dx, 00cfeh                            ; ba fe 0c
    1467814679    in AL, DX                                 ; ec
     
    1468114682    mov byte [bp-006h], al                    ; 88 46 fa
    1468214683    cmp AL, strict byte 0ffh                  ; 3c ff
    14683     jne short 09c04h                          ; 75 06
     14684    jne short 09c10h                          ; 75 06
    1468414685    add bx, strict byte 00008h                ; 83 c3 08
    14685     jmp near 09c97h                           ; e9 93 00
     14686    jmp near 09ca3h                           ; e9 93 00
    1468614687    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14687     je short 09c11h                           ; 74 07
     14688    je short 09c1dh                           ; 74 07
    1468814689    mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
    14689     jmp short 09c16h                          ; eb 05
     14690    jmp short 09c22h                          ; eb 05
    1469014691    mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
    1469114692    mov al, byte [bp-006h]                    ; 8a 46 fa
    1469214693    and AL, strict byte 007h                  ; 24 07
    1469314694    cmp AL, strict byte 001h                  ; 3c 01
    14694     jne short 09c3eh                          ; 75 1f
     14695    jne short 09c4ah                          ; 75 1f
    1469514696    mov ax, bx                                ; 89 d8
    1469614697    shr ax, 008h                              ; c1 e8 08
    1469714698    test ax, ax                               ; 85 c0
    14698     jne short 09c3eh                          ; 75 16
     14699    jne short 09c4ah                          ; 75 16
    1469914700    mov dx, strict word 0001ah                ; ba 1a 00
    1470014701    mov ax, bx                                ; 89 d8
    14701     call 09baah                               ; e8 7a ff
     14702    call 09bb6h                               ; e8 7a ff
    1470214703    mov dx, 00cfeh                            ; ba fe 0c
    1470314704    in AL, DX                                 ; ec
     
    1470514706    ; sub ah, ah                                ; 2a e4
    1470614707    cmp al, byte [bp-008h]                    ; 3a 46 f8
    14707     jbe short 09c3eh                          ; 76 03
     14708    jbe short 09c4ah                          ; 76 03
    1470814709    mov byte [bp-008h], al                    ; 88 46 f8
    1470914710    test di, di                               ; 85 ff
    14710     je short 09c47h                           ; 74 05
     14711    je short 09c53h                           ; 74 05
    1471114712    mov dx, strict word 00008h                ; ba 08 00
    14712     jmp short 09c49h                          ; eb 02
     14713    jmp short 09c55h                          ; eb 02
    1471314714    xor dx, dx                                ; 31 d2
    1471414715    mov ax, bx                                ; 89 d8
    14715     call 09baah                               ; e8 5c ff
     14716    call 09bb6h                               ; e8 5c ff
    1471614717    mov dx, 00cfch                            ; ba fc 0c
    1471714718    in eax, DX                                ; 66 ed
     
    1472414725    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    1472514726    test di, di                               ; 85 ff
    14726     je short 09c78h                           ; 74 0f
     14727    je short 09c84h                           ; 74 0f
    1472714728    mov cx, strict word 00008h                ; b9 08 00
    1472814729    shr dx, 1                                 ; d1 ea
    1472914730    rcr ax, 1                                 ; d1 d8
    14730     loop 09c6ch                               ; e2 fa
     14731    loop 09c78h                               ; e2 fa
    1473114732    mov word [bp-00eh], ax                    ; 89 46 f2
    1473214733    mov word [bp-00ch], dx                    ; 89 56 f4
    1473314734    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1473414735    cmp ax, word [bp-014h]                    ; 3b 46 ec
    14735     jne short 09c88h                          ; 75 08
     14736    jne short 09c94h                          ; 75 08
    1473614737    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1473714738    cmp ax, word [bp-012h]                    ; 3b 46 ee
    14738     je short 09c8eh                           ; 74 06
     14739    je short 09c9ah                           ; 74 06
    1473914740    cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
    14740     je short 09c94h                           ; 74 06
     14741    je short 09ca0h                           ; 74 06
    1474114742    dec si                                    ; 4e
    1474214743    cmp si, strict byte 0ffffh                ; 83 fe ff
    14743     je short 09ca6h                           ; 74 12
     14744    je short 09cb2h                           ; 74 12
    1474414745    add bx, word [bp-00ah]                    ; 03 5e f6
    1474514746    mov dx, bx                                ; 89 da
     
    1474714748    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1474814749    cmp dx, ax                                ; 39 c2
    14749     jbe near 09be4h                           ; 0f 86 3e ff
     14750    jbe near 09bf0h                           ; 0f 86 3e ff
    1475014751    cmp si, strict byte 0ffffh                ; 83 fe ff
    14751     jne short 09cafh                          ; 75 04
     14752    jne short 09cbbh                          ; 75 04
    1475214753    mov ax, bx                                ; 89 d8
    14753     jmp short 09cb2h                          ; eb 03
     14754    jmp short 09cbeh                          ; eb 03
    1475414755    mov ax, strict word 0ffffh                ; b8 ff ff
    1475514756    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1475814759    pop bp                                    ; 5d
    1475914760    retn                                      ; c3
    14760     cmpsw                                     ; a7
     14761    mov BL, strict byte 09dh                  ; b3 9d
     14762    int 09dh                                  ; cd 9d
     14763    loopne 09c68h                             ; e0 9d
     14764    cmc                                       ; f5
    1476114765    popfw                                     ; 9d
    14762     rcr word [di-0622ch], 0e9h                ; c1 9d d4 9d e9
    14763     popfw                                     ; 9d
    14764     cld                                       ; fc
    14765     popfw                                     ; 9d
    14766     db  00fh
    14767     sahf                                      ; 9e
    14768 _pci16_function:                             ; 0xf9cc5 LB 0x1d7
     14766    or byte [bp-061e5h], bl                   ; 08 9e 1b 9e
     14767_pci16_function:                             ; 0xf9cd1 LB 0x1d7
    1476914768    push bp                                   ; 55
    1477014769    mov bp, sp                                ; 89 e5
     
    1478014779    xor ah, ah                                ; 30 e4
    1478114780    cmp bx, strict byte 00003h                ; 83 fb 03
    14782     jc short 09cfeh                           ; 72 1a
    14783     jbe short 09d56h                          ; 76 70
     14781    jc short 09d0ah                           ; 72 1a
     14782    jbe short 09d62h                          ; 76 70
    1478414783    cmp bx, strict byte 0000eh                ; 83 fb 0e
    14785     je near 09e23h                            ; 0f 84 36 01
     14784    je near 09e2fh                            ; 0f 84 36 01
    1478614785    cmp bx, strict byte 00008h                ; 83 fb 08
    14787     jc near 09e68h                            ; 0f 82 74 01
     14786    jc near 09e74h                            ; 0f 82 74 01
    1478814787    cmp bx, strict byte 0000dh                ; 83 fb 0d
    14789     jbe near 09d7bh                           ; 0f 86 80 00
    14790     jmp near 09e68h                           ; e9 6a 01
     14788    jbe near 09d87h                           ; 0f 86 80 00
     14789    jmp near 09e74h                           ; e9 6a 01
    1479114790    cmp bx, strict byte 00002h                ; 83 fb 02
    14792     je short 09d26h                           ; 74 23
     14791    je short 09d32h                           ; 74 23
    1479314792    cmp bx, strict byte 00001h                ; 83 fb 01
    14794     jne near 09e68h                           ; 0f 85 5e 01
     14793    jne near 09e74h                           ; 0f 85 5e 01
    1479514794    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1479614795    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1479814797    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1479914798    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    14800     jmp near 09e95h                           ; e9 6f 01
     14799    jmp near 09ea1h                           ; e9 6f 01
    1480114800    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    14802     jne short 09d32h                          ; 75 06
     14801    jne short 09d3eh                          ; 75 06
    1480314802    or ah, 083h                               ; 80 cc 83
    14804     jmp near 09e8eh                           ; e9 5c 01
     14803    jmp near 09e9ah                           ; e9 5c 01
    1480514804    mov bx, word [bp+008h]                    ; 8b 5e 08
    1480614805    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1480714806    mov ax, word [bp+018h]                    ; 8b 46 18
    1480814807    xor cx, cx                                ; 31 c9
    14809     call 09bceh                               ; e8 8e fe
     14808    call 09bdah                               ; e8 8e fe
    1481014809    cmp ax, strict word 0ffffh                ; 3d ff ff
    14811     jne short 09d50h                          ; 75 0b
     14810    jne short 09d5ch                          ; 75 0b
    1481214811    mov ax, word [bp+020h]                    ; 8b 46 20
    1481314812    xor ah, ah                                ; 30 e4
    1481414813    or ah, 086h                               ; 80 cc 86
    14815     jmp near 09e8eh                           ; e9 3e 01
     14814    jmp near 09e9ah                           ; e9 3e 01
    1481614815    mov word [bp+014h], ax                    ; 89 46 14
    14817     jmp near 09e95h                           ; e9 3f 01
     14816    jmp near 09ea1h                           ; e9 3f 01
    1481814817    mov bx, word [bp+008h]                    ; 8b 5e 08
    1481914818    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1482014819    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1482114820    mov cx, strict word 00001h                ; b9 01 00
    14822     call 09bceh                               ; e8 69 fe
     14821    call 09bdah                               ; e8 69 fe
    1482314822    cmp ax, strict word 0ffffh                ; 3d ff ff
    14824     jne short 09d75h                          ; 75 0b
     14823    jne short 09d81h                          ; 75 0b
    1482514824    mov ax, word [bp+020h]                    ; 8b 46 20
    1482614825    xor ah, ah                                ; 30 e4
    1482714826    or ah, 086h                               ; 80 cc 86
    14828     jmp near 09e8eh                           ; e9 19 01
     14827    jmp near 09e9ah                           ; e9 19 01
    1482914828    mov word [bp+014h], ax                    ; 89 46 14
    14830     jmp near 09e95h                           ; e9 1a 01
     14829    jmp near 09ea1h                           ; e9 1a 01
    1483114830    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    14832     jc short 09d88h                           ; 72 06
     14831    jc short 09d94h                           ; 72 06
    1483314832    or ah, 087h                               ; 80 cc 87
    14834     jmp near 09e8eh                           ; e9 06 01
     14833    jmp near 09e9ah                           ; e9 06 01
    1483514834    mov dx, word [bp+004h]                    ; 8b 56 04
    1483614835    mov ax, word [bp+014h]                    ; 8b 46 14
    14837     call 09baah                               ; e8 19 fe
     14836    call 09bb6h                               ; e8 19 fe
    1483814837    mov bx, word [bp+020h]                    ; 8b 5e 20
    1483914838    xor bh, bh                                ; 30 ff
    1484014839    sub bx, strict byte 00008h                ; 83 eb 08
    1484114840    cmp bx, strict byte 00005h                ; 83 fb 05
    14842     jnbe near 09e95h                          ; 0f 87 f5 00
     14841    jnbe near 09ea1h                          ; 0f 87 f5 00
    1484314842    add bx, bx                                ; 01 db
    14844     jmp word [cs:bx-06347h]                   ; 2e ff a7 b9 9c
     14843    jmp word [cs:bx-0633bh]                   ; 2e ff a7 c5 9c
    1484514844    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1484614845    xor bl, bl                                ; 30 db
     
    1485314852    or bx, ax                                 ; 09 c3
    1485414853    mov word [bp+01ch], bx                    ; 89 5e 1c
    14855     jmp near 09e95h                           ; e9 d4 00
     14854    jmp near 09ea1h                           ; e9 d4 00
    1485614855    mov dx, word [bp+004h]                    ; 8b 56 04
    1485714856    xor dh, dh                                ; 30 f6
     
    1486014859    in ax, DX                                 ; ed
    1486114860    mov word [bp+01ch], ax                    ; 89 46 1c
    14862     jmp near 09e95h                           ; e9 c1 00
     14861    jmp near 09ea1h                           ; e9 c1 00
    1486314862    mov dx, 00cfch                            ; ba fc 0c
    1486414863    in eax, DX                                ; 66 ed
     
    1486914868    mov word [bp+01ch], ax                    ; 89 46 1c
    1487014869    mov word [bp+01eh], dx                    ; 89 56 1e
    14871     jmp near 09e95h                           ; e9 ac 00
     14870    jmp near 09ea1h                           ; e9 ac 00
    1487214871    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1487314872    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1487614875    add dx, 00cfch                            ; 81 c2 fc 0c
    1487714876    out DX, AL                                ; ee
    14878     jmp near 09e95h                           ; e9 99 00
     14877    jmp near 09ea1h                           ; e9 99 00
    1487914878    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1488014879    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1488314882    add dx, 00cfch                            ; 81 c2 fc 0c
    1488414883    out DX, ax                                ; ef
    14885     jmp near 09e95h                           ; e9 86 00
     14884    jmp near 09ea1h                           ; e9 86 00
    1488614885    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1488714886    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1489214891    ; mov ax, cx                                ; 8b c1
    1489314892    out DX, eax                               ; 66 ef
    14894     jmp short 09e95h                          ; eb 72
     14893    jmp short 09ea1h                          ; eb 72
    1489514894    mov bx, word [bp+004h]                    ; 8b 5e 04
    1489614895    mov es, [bp+026h]                         ; 8e 46 26
     
    1489914898    mov cx, word [0f370h]                     ; 8b 0e 70 f3
    1490014899    cmp cx, word [es:bx]                      ; 26 3b 0f
    14901     jbe short 09e49h                          ; 76 11
     14900    jbe short 09e55h                          ; 76 11
    1490214901    mov ax, word [bp+020h]                    ; 8b 46 20
    1490314902    xor ah, ah                                ; 30 e4
     
    1490514904    mov word [bp+020h], ax                    ; 89 46 20
    1490614905    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    14907     jmp short 09e5dh                          ; eb 14
     14906    jmp short 09e69h                          ; eb 14
    1490814907    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1490914908    mov si, 0f190h                            ; be 90 f1
     
    1491714916    les bx, [bp-008h]                         ; c4 5e f8
    1491814917    mov word [es:bx], ax                      ; 26 89 07
    14919     jmp short 09e95h                          ; eb 2d
     14918    jmp short 09ea1h                          ; eb 2d
    1492014919    mov bx, 00db8h                            ; bb b8 0d
    1492114920    mov cx, ds                                ; 8c d9
    1492214921    mov ax, strict word 00004h                ; b8 04 00
    14923     call 01a2ah                               ; e8 b7 7b
     14922    call 01a2ah                               ; e8 ab 7b
    1492414923    mov ax, word [bp+014h]                    ; 8b 46 14
    1492514924    push ax                                   ; 50
     
    1492814927    push 00d6eh                               ; 68 6e 0d
    1492914928    push strict byte 00004h                   ; 6a 04
    14930     call 01a6bh                               ; e8 e8 7b
     14929    call 01a6bh                               ; e8 dc 7b
    1493114930    add sp, strict byte 00008h                ; 83 c4 08
    1493214931    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1494014939    pop bp                                    ; 5d
    1494114940    retn                                      ; c3
    14942 pci_find_classcode_:                         ; 0xf9e9c LB 0x2b
     14941pci_find_classcode_:                         ; 0xf9ea8 LB 0x2b
    1494314942    push bp                                   ; 55
    1494414943    mov bp, sp                                ; 89 e5
     
    1495514954    int 01ah                                  ; cd 1a
    1495614955    cmp ah, 000h                              ; 80 fc 00
    14957     je near 09ebdh                            ; 0f 84 03 00
     14956    je near 09ec9h                            ; 0f 84 03 00
    1495814957    mov bx, strict word 0ffffh                ; bb ff ff
    1495914958    mov ax, bx                                ; 89 d8
     
    1496414963    pop bp                                    ; 5d
    1496514964    retn                                      ; c3
    14966 pci_find_device_:                            ; 0xf9ec7 LB 0x25
     14965pci_find_device_:                            ; 0xf9ed3 LB 0x25
    1496714966    push bp                                   ; 55
    1496814967    mov bp, sp                                ; 89 e5
     
    1497614975    int 01ah                                  ; cd 1a
    1497714976    cmp ah, 000h                              ; 80 fc 00
    14978     je near 09ee2h                            ; 0f 84 03 00
     14977    je near 09eeeh                            ; 0f 84 03 00
    1497914978    mov bx, strict word 0ffffh                ; bb ff ff
    1498014979    mov ax, bx                                ; 89 d8
     
    1498514984    pop bp                                    ; 5d
    1498614985    retn                                      ; c3
    14987 pci_read_config_byte_:                       ; 0xf9eec LB 0x24
     14986pci_read_config_byte_:                       ; 0xf9ef8 LB 0x24
    1498814987    push bp                                   ; 55
    1498914988    mov bp, sp                                ; 89 e5
     
    1500415003    pop bp                                    ; 5d
    1500515004    retn                                      ; c3
    15006 pci_read_config_word_:                       ; 0xf9f10 LB 0x22
     15005pci_read_config_word_:                       ; 0xf9f1c LB 0x22
    1500715006    push bp                                   ; 55
    1500815007    mov bp, sp                                ; 89 e5
     
    1502315022    pop bp                                    ; 5d
    1502415023    retn                                      ; c3
    15025 pci_read_config_dword_:                      ; 0xf9f32 LB 0x27
     15024pci_read_config_dword_:                      ; 0xf9f3e LB 0x27
    1502615025    push bp                                   ; 55
    1502715026    mov bp, sp                                ; 89 e5
     
    1504415043    pop bp                                    ; 5d
    1504515044    retn                                      ; c3
    15046 pci_write_config_word_:                      ; 0xf9f59 LB 0x1c
     15045pci_write_config_word_:                      ; 0xf9f65 LB 0x1c
    1504715046    push bp                                   ; 55
    1504815047    mov bp, sp                                ; 89 e5
     
    1505915058    pop bp                                    ; 5d
    1506015059    retn                                      ; c3
    15061 vds_is_present_:                             ; 0xf9f75 LB 0x1d
     15060vds_is_present_:                             ; 0xf9f81 LB 0x1d
    1506215061    push bx                                   ; 53
    1506315062    push bp                                   ; 55
     
    1506715066    mov es, ax                                ; 8e c0
    1506815067    test byte [es:bx], 020h                   ; 26 f6 07 20
    15069     je short 09f8dh                           ; 74 06
     15068    je short 09f99h                           ; 74 06
    1507015069    mov ax, strict word 00001h                ; b8 01 00
    1507115070    pop bp                                    ; 5d
     
    1507615075    pop bx                                    ; 5b
    1507715076    retn                                      ; c3
    15078 vds_real_to_lin_:                            ; 0xf9f92 LB 0x1e
     15077vds_real_to_lin_:                            ; 0xf9f9e LB 0x1e
    1507915078    push bx                                   ; 53
    1508015079    push cx                                   ; 51
     
    1508715086    sal ax, 1                                 ; d1 e0
    1508815087    rcl dx, 1                                 ; d1 d2
    15089     loop 09fa0h                               ; e2 fa
     15088    loop 09fach                               ; e2 fa
    1509015089    xor cx, cx                                ; 31 c9
    1509115090    add ax, bx                                ; 01 d8
     
    1509515094    pop bx                                    ; 5b
    1509615095    retn                                      ; c3
    15097 vds_build_sg_list_:                          ; 0xf9fb0 LB 0x79
     15096vds_build_sg_list_:                          ; 0xf9fbc LB 0x79
    1509815097    push bp                                   ; 55
    1509915098    mov bp, sp                                ; 89 e5
     
    1510915108    mov bx, word [bp+006h]                    ; 8b 5e 06
    1511015109    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15111     call 09f92h                               ; e8 c3 ff
     15110    call 09f9eh                               ; e8 c3 ff
    1511215111    mov es, si                                ; 8e c6
    1511315112    mov word [es:di+004h], ax                 ; 26 89 45 04
    1511415113    mov word [es:di+006h], dx                 ; 26 89 55 06
    1511515114    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15116     call 09f75h                               ; e8 93 ff
     15115    call 09f81h                               ; e8 93 ff
    1511715116    test ax, ax                               ; 85 c0
    15118     je short 09ff9h                           ; 74 13
     15117    je short 0a005h                           ; 74 13
    1511915118    mov es, si                                ; 8e c6
    1512015119    mov ax, 08105h                            ; b8 05 81
    1512115120    mov dx, strict word 00000h                ; ba 00 00
    1512215121    int 04bh                                  ; cd 4b
    15123     jc near 09ff6h                            ; 0f 82 02 00
     15122    jc near 0a002h                            ; 0f 82 02 00
    1512415123    db  032h, 0c0h
    1512515124    ; xor al, al                                ; 32 c0
    1512615125    cbw                                       ; 98
    15127     jmp short 0a020h                          ; eb 27
     15126    jmp short 0a02ch                          ; eb 27
    1512815127    mov es, si                                ; 8e c6
    1512915128    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1514215141    pop bp                                    ; 5d
    1514315142    retn 00004h                               ; c2 04 00
    15144 vds_free_sg_list_:                           ; 0xfa029 LB 0x37
     15143vds_free_sg_list_:                           ; 0xfa035 LB 0x3b
    1514515144    push bp                                   ; 55
    1514615145    mov bp, sp                                ; 89 e5
     
    1514815147    push di                                   ; 57
    1514915148    mov bx, ax                                ; 89 c3
    15150     call 09f75h                               ; e8 42 ff
     15149    call 09f81h                               ; e8 42 ff
    1515115150    test ax, ax                               ; 85 c0
    15152     je short 0a04ah                           ; 74 13
     15151    je short 0a056h                           ; 74 13
    1515315152    mov di, bx                                ; 89 df
    1515415153    mov es, dx                                ; 8e c2
     
    1515615155    mov dx, strict word 00000h                ; ba 00 00
    1515715156    int 04bh                                  ; cd 4b
    15158     jc near 0a049h                            ; 0f 82 02 00
     15157    jc near 0a055h                            ; 0f 82 02 00
    1515915158    db  032h, 0c0h
    1516015159    ; xor al, al                                ; 32 c0
     
    1516715166    pop bp                                    ; 5d
    1516815167    retn                                      ; c3
    15169     times 0x7 db 0
    15170 __U4M:                                       ; 0xfa060 LB 0x40
     15168    times 0xb db 0
     15169__U4M:                                       ; 0xfa070 LB 0x40
    1517115170    pushfw                                    ; 9c
    1517215171    push eax                                  ; 66 50
     
    1519415193    retn                                      ; c3
    1519515194    times 0xf db 0
    15196 __U4D:                                       ; 0xfa0a0 LB 0x40
     15195__U4D:                                       ; 0xfa0b0 LB 0x40
    1519715196    pushfw                                    ; 9c
    1519815197    push eax                                  ; 66 50
     
    1522515224    retn                                      ; c3
    1522615225    times 0x7 db 0
    15227 __U8RS:                                      ; 0xfa0e0 LB 0x10
     15226__U8RS:                                      ; 0xfa0f0 LB 0x10
    1522815227    test si, si                               ; 85 f6
    15229     je short 0a0efh                           ; 74 0b
     15228    je short 0a0ffh                           ; 74 0b
    1523015229    shr ax, 1                                 ; d1 e8
    1523115230    rcr bx, 1                                 ; d1 db
     
    1523315232    rcr dx, 1                                 ; d1 da
    1523415233    dec si                                    ; 4e
    15235     jne short 0a0e4h                          ; 75 f5
     15234    jne short 0a0f4h                          ; 75 f5
    1523615235    retn                                      ; c3
    15237 __U8LS:                                      ; 0xfa0f0 LB 0x10
     15236__U8LS:                                      ; 0xfa100 LB 0x10
    1523815237    test si, si                               ; 85 f6
    15239     je short 0a0ffh                           ; 74 0b
     15238    je short 0a10fh                           ; 74 0b
    1524015239    sal dx, 1                                 ; d1 e2
    1524115240    rcl cx, 1                                 ; d1 d1
     
    1524315242    rcl ax, 1                                 ; d1 d0
    1524415243    dec si                                    ; 4e
    15245     jne short 0a0f4h                          ; 75 f5
     15244    jne short 0a104h                          ; 75 f5
    1524615245    retn                                      ; c3
    15247 _fmemset_:                                   ; 0xfa100 LB 0x10
     15246_fmemset_:                                   ; 0xfa110 LB 0x10
    1524815247    push di                                   ; 57
    1524915248    mov es, dx                                ; 8e c2
     
    1525615255    retn                                      ; c3
    1525715256    times 0x3 db 0
    15258 _fmemcpy_:                                   ; 0xfa110 LB 0x3a
     15257_fmemcpy_:                                   ; 0xfa120 LB 0x3a
    1525915258    push bp                                   ; 55
    1526015259    db  08bh, 0ech
     
    1528115280    add byte [bx+si], al                      ; 00 00
    1528215281    add byte [bx+si], al                      ; 00 00
    15283     pushaw                                    ; 60
    15284     mov ax, word [0a162h]                     ; a1 62 a1
    15285     mov eax, dword [0a166h]                   ; 66 a1 66 a1
    15286     mov eax, dword [0a168h]                   ; 66 a1 68 a1
    15287     push 06aa1h                               ; 68 a1 6a
    15288     mov ax, word [0a16eh]                     ; a1 6e a1
    15289     outsb                                     ; 6e
    15290     mov ax, word [0a170h]                     ; a1 70 a1
    15291     jne short 0a0e9h                          ; 75 a1
    15292     jnbe short 0a0ebh                         ; 77 a1
    15293 apm_worker:                                  ; 0xfa14a LB 0x3a
     15282    jo short 0a0e3h                           ; 70 a1
     15283    jc short 0a0e5h                           ; 72 a1
     15284    jbe short 0a0e7h                          ; 76 a1
     15285    jbe short 0a0e9h                          ; 76 a1
     15286    jbe short 0a0ebh                          ; 76 a1
     15287    js short 0a0edh                           ; 78 a1
     15288    js short 0a0efh                           ; 78 a1
     15289    jp short 0a0f1h                           ; 7a a1
     15290    jle short 0a0f3h                          ; 7e a1
     15291    jle short 0a0f5h                          ; 7e a1
     15292    and byte [bx+di-05e7bh], 087h             ; 80 a1 85 a1 87
     15293    db  0a1h
     15294apm_worker:                                  ; 0xfa15a LB 0x3a
    1529415295    sti                                       ; fb
    1529515296    push ax                                   ; 50
     
    1530315304    pop ax                                    ; 58
    1530415305    mov AH, strict byte 053h                  ; b4 53
    15305     jnc short 0a180h                          ; 73 25
    15306     jmp word [cs:bp-05ed0h]                   ; 2e ff a6 30 a1
    15307     jmp short 0a17eh                          ; eb 1c
     15306    jnc short 0a190h                          ; 73 25
     15307    jmp word [cs:bp-05ec0h]                   ; 2e ff a6 40 a1
     15308    jmp short 0a18eh                          ; eb 1c
    1530815309    sti                                       ; fb
    1530915310    hlt                                       ; f4
    15310     jmp short 0a17eh                          ; eb 18
    15311     jmp short 0a17eh                          ; eb 16
    15312     jmp short 0a180h                          ; eb 16
     15311    jmp short 0a18eh                          ; eb 18
     15312    jmp short 0a18eh                          ; eb 16
     15313    jmp short 0a190h                          ; eb 16
    1531315314    mov AH, strict byte 080h                  ; b4 80
    15314     jmp short 0a182h                          ; eb 14
    15315     jmp short 0a180h                          ; eb 10
     15315    jmp short 0a192h                          ; eb 14
     15316    jmp short 0a190h                          ; eb 10
    1531615317    mov ax, 00102h                            ; b8 02 01
    15317     jmp short 0a17eh                          ; eb 09
    15318     jmp short 0a17eh                          ; eb 07
     15318    jmp short 0a18eh                          ; eb 09
     15319    jmp short 0a18eh                          ; eb 07
    1531915320    mov BL, strict byte 000h                  ; b3 00
    1532015321    mov cx, strict word 00000h                ; b9 00 00
    15321     jmp short 0a17eh                          ; eb 00
     15322    jmp short 0a18eh                          ; eb 00
    1532215323    clc                                       ; f8
    1532315324    retn                                      ; c3
     
    1532515326    stc                                       ; f9
    1532615327    retn                                      ; c3
    15327 apm_pm16_entry:                              ; 0xfa184 LB 0x11
     15328apm_pm16_entry:                              ; 0xfa194 LB 0x11
    1532815329    mov AH, strict byte 002h                  ; b4 02
    1532915330    push DS                                   ; 1e
     
    1533315334    add bp, strict byte 00008h                ; 83 c5 08
    1533415335    mov ds, bp                                ; 8e dd
    15335     call 0a14ah                               ; e8 b8 ff
     15336    call 0a15ah                               ; e8 b8 ff
    1533615337    pop bp                                    ; 5d
    1533715338    pop DS                                    ; 1f
    1533815339    retf                                      ; cb
    1533915340
    15340   ; Padding 0x386b bytes at 0xfa195
    15341   times 14443 db 0
     15341  ; Padding 0x385b bytes at 0xfa1a5
     15342  times 14427 db 0
    1534215343
    1534315344section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1538615387    add bp, strict byte 00008h                ; 83 c5 08
    1538715388    push ebp                                  ; 66 55
    15388     mov bp, 0a186h                            ; bd 86 a1
     15389    mov bp, 0a196h                            ; bd 96 a1
    1538915390    add byte [bx+si], al                      ; 00 00
    1539015391    push ebp                                  ; 66 55
     
    1585415855    cmp AL, strict byte 009h                  ; 3c 09
    1585515856    jne short 0e0bch                          ; 75 03
    15856     jmp near 0e379h                           ; e9 bd 02
     15857    jmp near 0e37bh                           ; e9 bf 02
    1585715858    cmp AL, strict byte 005h                  ; 3c 05
    1585815859    je short 0e044h                           ; 74 84
     
    1607616077    int 002h                                  ; cd 02
    1607716078    iret                                      ; cf
    16078 hard_drive_post:                             ; 0xfe2d2 LB 0xd0
     16079hard_drive_post:                             ; 0xfe2d2 LB 0xd2
    1607916080    db  033h, 0c0h
    1608016081    ; xor ax, ax                                ; 33 c0
     
    1612116122    call 01da8h                               ; e8 65 3a
    1612216123    call 02235h                               ; e8 ef 3e
    16123     call 09966h                               ; e8 1d b6
    16124     call 0882fh                               ; e8 e3 a4
    16125     call 0ed2fh                               ; e8 e0 09
    16126     call 0e2d2h                               ; e8 80 ff
     16124    sti                                       ; fb
     16125    call 09972h                               ; e8 28 b6
     16126    cli                                       ; fa
     16127    call 0882fh                               ; e8 e1 a4
     16128    call 0ed2fh                               ; e8 de 09
     16129    call 0e2d2h                               ; e8 7e ff
    1612716130    push CS                                   ; 0e
    1612816131    pop DS                                    ; 1f
     
    1613016133    mov ax, 0c800h                            ; b8 00 c8
    1613116134    mov dx, 0f000h                            ; ba 00 f0
    16132     call 01600h                               ; e8 a2 32
     16135    call 01600h                               ; e8 a0 32
    1613316136    db  066h, 033h, 0c0h
    1613416137    ; xor eax, eax                              ; 66 33 c0
     
    1613916142    db  066h, 033h, 0d2h
    1614016143    ; xor edx, edx                              ; 66 33 d2
    16141     call 01890h                               ; e8 23 35
    16142     call 03cbdh                               ; e8 4d 59
     16144    call 01890h                               ; e8 21 35
     16145    call 03cbdh                               ; e8 4b 59
    1614316146    sti                                       ; fb
    1614416147    int 019h                                  ; cd 19
    1614516148    sti                                       ; fb
    1614616149    hlt                                       ; f4
    16147     jmp short 0e374h                          ; eb fd
     16150    jmp short 0e376h                          ; eb fd
    1614816151    cli                                       ; fa
    1614916152    hlt                                       ; f4
     
    1616716170    sti                                       ; fb
    1616816171    retf 00002h                               ; ca 02 00
    16169 biosorg_check_before_or_at_0E3FCh:           ; 0xfe3a2 LB 0x5c
    16170     times 0x5a db 0
     16172biosorg_check_before_or_at_0E3FCh:           ; 0xfe3a4 LB 0x5a
     16173    times 0x58 db 0
    1617116174    db  'XM'
    1617216175int13_handler:                               ; 0xfe3fe LB 0x3
     
    1701417017    popfw                                     ; 9d
    1701517018    jmp short 0f8a7h                          ; eb 13
    17016     call 09ab5h                               ; e8 1e a2
     17019    call 09ac1h                               ; e8 2a a2
    1701717020    jmp short 0f88eh                          ; eb f5
    1701817021int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1716817171    cld                                       ; fc
    1716917172    pushad                                    ; 66 60
    17170     call 09cc5h                               ; e8 48 9e
     17173    call 09cd1h                               ; e8 54 9e
    1717117174    popad                                     ; 66 61
    1717217175    pop DS                                    ; 1f
     
    1728217285cpu_reset:                                   ; 0xffff0 LB 0x10
    1728317286    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17284     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 01fh
     17287    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 086h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum

    r68421 r68773  
    1 bb36e6b39714445178c921cdba41c93c *VBoxPcBios386.rom
     112344f307a821a81850f54d5c3279967 *VBoxPcBios386.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm

    r68421 r68773  
    11161116section CONST2 progbits vstart=0xd8e align=1 ; size=0x400 class=DATA group=DGROUP
    11171117_bios_cvs_version_string:                    ; 0xf0d8e LB 0x18
    1118     db  'VirtualBox 5.2.0_BETA2', 000h, 000h
     1118    db  'VirtualBox 5.2.0_BETA3', 000h, 000h
    11191119_bios_prefix_string:                         ; 0xf0da6 LB 0x8
    11201120    db  'BIOS: ', 000h, 000h
     
    11901190  times 1138 db 0
    11911191
    1192 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8ec8 class=CODE group=AUTO
     1192section _TEXT progbits vstart=0x1600 align=1 ; size=0x8eb8 class=CODE group=AUTO
    11931193rom_scan_:                                   ; 0xf1600 LB 0x52
    11941194    push bp                                   ; 55
     
    15961596    mov bx, strict word 0000ah                ; bb 0a 00
    15971597    xor cx, cx                                ; 31 c9
    1598     call 0a160h                               ; e8 83 88
     1598    call 0a150h                               ; e8 73 88
    15991599    mov word [bp-008h], ax                    ; 89 46 f8
    16001600    mov cx, dx                                ; 89 d1
     
    18331833    mov dx, word [bp-026h]                    ; 8b 56 da
    18341834    mov si, word [bp-01eh]                    ; 8b 76 e2
    1835     call 0a190h                               ; e8 78 86
     1835    call 0a180h                               ; e8 68 86
    18361836    mov ax, dx                                ; 89 d0
    18371837    xor ah, dh                                ; 30 f4
     
    22942294    mov dx, word [es:si]                      ; 26 8b 14
    22952295    mov si, strict word 00018h                ; be 18 00
    2296     call 0a190h                               ; e8 fe 81
     2296    call 0a180h                               ; e8 ee 81
    22972297    xor dh, dh                                ; 30 f6
    22982298    mov word [bp-014h], dx                    ; 89 56 ec
     
    23042304    mov dx, word [es:si]                      ; 26 8b 14
    23052305    mov si, strict word 00020h                ; be 20 00
    2306     call 0a190h                               ; e8 de 81
     2306    call 0a180h                               ; e8 ce 81
    23072307    mov bx, dx                                ; 89 d3
    23082308    mov word [bp-010h], dx                    ; 89 56 f0
     
    23362336    mov dx, word [es:si]                      ; 26 8b 14
    23372337    mov si, strict word 00008h                ; be 08 00
    2338     call 0a190h                               ; e8 8b 81
     2338    call 0a180h                               ; e8 7b 81
    23392339    mov word [bp-010h], dx                    ; 89 56 f0
    23402340    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23452345    mov dx, word [es:si]                      ; 26 8b 14
    23462346    mov si, strict word 00018h                ; be 18 00
    2347     call 0a190h                               ; e8 6d 81
     2347    call 0a180h                               ; e8 5d 81
    23482348    mov bl, dl                                ; 88 d3
    23492349    and bl, 00fh                              ; 80 e3 0f
     
    29232923    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    29242924    mov si, strict word 0000bh                ; be 0b 00
    2925     call 0a190h                               ; e8 91 7b
     2925    call 0a180h                               ; e8 81 7b
    29262926    mov word [bp-02ah], dx                    ; 89 56 d6
    29272927    mov word [bp-026h], cx                    ; 89 4e da
     
    32153215    mov dx, word [bp-022h]                    ; 8b 56 de
    32163216    mov si, strict word 00018h                ; be 18 00
    3217     call 0a190h                               ; e8 b4 78
     3217    call 0a180h                               ; e8 a4 78
    32183218    xor dh, dh                                ; 30 f6
    32193219    mov word [bp-014h], dx                    ; 89 56 ec
     
    32233223    mov dx, word [bp-022h]                    ; 8b 56 de
    32243224    mov si, strict word 00020h                ; be 20 00
    3225     call 0a190h                               ; e8 9d 78
     3225    call 0a180h                               ; e8 8d 78
    32263226    mov bx, dx                                ; 89 d3
    32273227    mov word [bp-024h], dx                    ; 89 56 dc
     
    32573257    mov dx, word [bp-022h]                    ; 8b 56 de
    32583258    mov si, strict word 00008h                ; be 08 00
    3259     call 0a190h                               ; e8 49 78
     3259    call 0a180h                               ; e8 39 78
    32603260    mov word [bp-00ch], ax                    ; 89 46 f4
    32613261    mov word [bp-020h], bx                    ; 89 5e e0
     
    32643264    mov word [bp-024h], dx                    ; 89 56 dc
    32653265    mov si, strict word 00010h                ; be 10 00
    3266     call 0a190h                               ; e8 34 78
     3266    call 0a180h                               ; e8 24 78
    32673267    mov word [bp-022h], dx                    ; 89 56 de
    32683268    mov ax, dx                                ; 89 d0
     
    56135613    mov dx, ss                                ; 8c d2
    56145614    lea ax, [bp-026h]                         ; 8d 46 da
    5615     call 0a1b0h                               ; e8 0d 63
     5615    call 0a1a0h                               ; e8 fd 62
    56165616    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    56175617    mov ax, strict word 00011h                ; b8 11 00
     
    61056105    xor dl, dl                                ; 30 d2
    61066106    xor cx, cx                                ; 31 c9
    6107     call 0a140h                               ; e8 28 5d
     6107    call 0a130h                               ; e8 18 5d
    61086108    xor bx, bx                                ; 31 db
    61096109    add ax, si                                ; 01 f0
     
    61116111    mov bx, di                                ; 89 fb
    61126112    xor cx, cx                                ; 31 c9
    6113     call 0a140h                               ; e8 1b 5d
     6113    call 0a130h                               ; e8 0b 5d
    61146114    mov bx, ax                                ; 89 c3
    61156115    mov ax, word [bp-00ah]                    ; 8b 46 f6
     
    61466146    mov dx, ss                                ; 8c d2
    61476147    lea ax, [bp-030h]                         ; 8d 46 d0
    6148     call 0a1b0h                               ; e8 34 5d
     6148    call 0a1a0h                               ; e8 24 5d
    61496149    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    61506150    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    65006500    mov dx, ss                                ; 8c d2
    65016501    lea ax, [bp-02eh]                         ; 8d 46 d2
    6502     call 0a1b0h                               ; e8 4c 59
     6502    call 0a1a0h                               ; e8 3c 59
    65036503    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    65046504    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    85018501    mov dx, word [bp+00ch]                    ; 8b 56 0c
    85028502    mov si, strict word 00020h                ; be 20 00
    8503     call 0a190h                               ; e8 e2 45
     8503    call 0a180h                               ; e8 d2 45
    85048504    test ax, ax                               ; 85 c0
    85058505    jne short 05bbeh                          ; 75 0c
     
    85398539    mov bx, strict word 0003fh                ; bb 3f 00
    85408540    xor cx, cx                                ; 31 c9
    8541     call 0a140h                               ; e8 39 45
     8541    call 0a130h                               ; e8 29 45
    85428542    mov bx, ax                                ; 89 c3
    85438543    mov cx, dx                                ; 89 d1
    85448544    mov ax, word [bp-004h]                    ; 8b 46 fc
    85458545    mov dx, si                                ; 89 f2
    8546     call 0a160h                               ; e8 4d 45
     8546    call 0a150h                               ; e8 3d 45
    85478547    mov word [es:di+002h], ax                 ; 26 89 45 02
    85488548    cmp ax, 00400h                            ; 3d 00 04
     
    87738773    mov bx, cx                                ; 89 cb
    87748774    xor cx, cx                                ; 31 c9
    8775     call 0a140h                               ; e8 14 43
     8775    call 0a130h                               ; e8 04 43
    87768776    xor bx, bx                                ; 31 db
    87778777    add ax, word [bp-008h]                    ; 03 46 f8
     
    87798779    mov bx, word [bp-00eh]                    ; 8b 5e f2
    87808780    xor cx, cx                                ; 31 c9
    8781     call 0a140h                               ; e8 05 43
     8781    call 0a130h                               ; e8 f5 42
    87828782    xor bx, bx                                ; 31 db
    87838783    add ax, di                                ; 01 f8
     
    89538953    mov bx, word [bp-008h]                    ; 8b 5e f8
    89548954    xor cx, cx                                ; 31 c9
    8955     call 0a140h                               ; e8 2e 41
     8955    call 0a130h                               ; e8 1e 41
    89568956    mov bx, di                                ; 89 fb
    89578957    xor cx, cx                                ; 31 c9
    8958     call 0a140h                               ; e8 27 41
     8958    call 0a130h                               ; e8 17 41
    89598959    mov word [bp-010h], ax                    ; 89 46 f0
    89608960    mov word [bp-004h], dx                    ; 89 56 fc
     
    91159115    xor bx, bx                                ; 31 db
    91169116    mov si, strict word 00020h                ; be 20 00
    9117     call 0a1a0h                               ; e8 ec 3f
     9117    call 0a190h                               ; e8 dc 3f
    91189118    mov word [bp-00eh], ax                    ; 89 46 f2
    91199119    mov word [bp-010h], bx                    ; 89 5e f0
     
    92809280    mov dx, si                                ; 89 f2
    92819281    mov si, strict word 00020h                ; be 20 00
    9282     call 0a190h                               ; e8 e5 3d
     9282    call 0a180h                               ; e8 d5 3d
    92839283    mov bx, di                                ; 89 fb
    92849284    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    96449644    mov bx, strict word 0000fh                ; bb 0f 00
    96459645    xor cx, cx                                ; 31 c9
    9646     call 0a160h                               ; e8 17 3a
     9646    call 0a150h                               ; e8 07 3a
    96479647    mov cx, ax                                ; 89 c1
    96489648    mov bx, dx                                ; 89 d3
     
    1268912689    mov dx, ss                                ; 8c d2
    1269012690    lea ax, [bp-048h]                         ; 8d 46 b8
    12691     call 0a1b0h                               ; e8 fd 1d
     12691    call 0a1a0h                               ; e8 ed 1d
    1269212692    mov byte [bp-048h], 09eh                  ; c6 46 b8 9e
    1269312693    mov byte [bp-047h], 010h                  ; c6 46 b9 10
     
    1282712827    mov dx, word [bp-024h]                    ; 8b 56 dc
    1282812828    mov si, strict word 0000ch                ; be 0c 00
    12829     call 0a190h                               ; e8 8d 1c
     12829    call 0a180h                               ; e8 7d 1c
    1283012830    mov word [bp-02ah], ax                    ; 89 46 d6
    1283112831    mov word [bp-02ch], bx                    ; 89 5e d4
     
    1284912849    mov dx, word [bp-024h]                    ; 8b 56 dc
    1285012850    mov si, strict word 00006h                ; be 06 00
    12851     call 0a190h                               ; e8 4c 1c
     12851    call 0a180h                               ; e8 3c 1c
    1285212852    mov si, word [bp-018h]                    ; 8b 76 e8
    1285312853    add si, dx                                ; 01 d6
     
    1286712867    mov dx, si                                ; 89 f2
    1286812868    mov si, strict word 00008h                ; be 08 00
    12869     call 0a190h                               ; e8 1c 1c
     12869    call 0a180h                               ; e8 0c 1c
    1287012870    mov word [bp-02eh], bx                    ; 89 5e d2
    1287112871    mov word [bp-030h], cx                    ; 89 4e d0
     
    1287612876    mov dx, word [bp-01eh]                    ; 8b 56 e2
    1287712877    mov si, strict word 00010h                ; be 10 00
    12878     call 0a190h                               ; e8 01 1c
     12878    call 0a180h                               ; e8 f1 1b
    1287912879    mov si, word [bp-032h]                    ; 8b 76 ce
    1288012880    add si, dx                                ; 01 d6
     
    1290112901    mov dx, word [bp-024h]                    ; 8b 56 dc
    1290212902    mov si, strict word 0000bh                ; be 0b 00
    12903     call 0a190h                               ; e8 b7 1b
     12903    call 0a180h                               ; e8 a7 1b
    1290412904    mov si, dx                                ; 89 d6
    1290512905    mov word [bp-026h], cx                    ; 89 4e da
     
    1312813128    push cx                                   ; 51
    1312913129    push si                                   ; 56
    13130     call 09f87h                               ; e8 38 17
     13130    call 09f84h                               ; e8 35 17
    1313113131    mov dx, ax                                ; 89 c2
    1313213132    cmp ax, strict word 0ffffh                ; 3d ff ff
     
    1313913139    mov bx, strict word 00004h                ; bb 04 00
    1314013140    mov dx, si                                ; 89 f2
    13141     call 0a035h                               ; e8 cc 17
     13141    call 0a032h                               ; e8 c9 17
    1314213142    lea sp, [bp-006h]                         ; 8d 66 fa
    1314313143    pop si                                    ; 5e
     
    1342713427    mov ax, 00080h                            ; b8 80 00
    1342813428    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13429     call 0a1b0h                               ; e8 ed 16
     13429    call 0a1a0h                               ; e8 dd 16
    1343013430    mov es, [bp-00ah]                         ; 8e 46 f6
    1343113431    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1344513445    mov dx, word [es:si]                      ; 26 8b 14
    1344613446    mov si, strict word 00008h                ; be 08 00
    13447     call 0a190h                               ; e8 89 16
     13447    call 0a180h                               ; e8 79 16
    1344813448    mov es, [bp-00ah]                         ; 8e 46 f6
    1344913449    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1345613456    mov dx, word [es:si]                      ; 26 8b 14
    1345713457    mov si, strict word 00010h                ; be 10 00
    13458     call 0a190h                               ; e8 63 16
     13458    call 0a180h                               ; e8 53 16
    1345913459    mov es, [bp-00ah]                         ; 8e 46 f6
    1346013460    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1346813468    mov dx, word [es:si]                      ; 26 8b 14
    1346913469    mov si, strict word 00018h                ; be 18 00
    13470     call 0a190h                               ; e8 37 16
     13470    call 0a180h                               ; e8 27 16
    1347113471    mov es, [bp-00ah]                         ; 8e 46 f6
    1347213472    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1347913479    mov dx, word [es:si]                      ; 26 8b 14
    1348013480    mov si, strict word 00020h                ; be 20 00
    13481     call 0a190h                               ; e8 11 16
     13481    call 0a180h                               ; e8 01 16
    1348213482    mov es, [bp-00ah]                         ; 8e 46 f6
    1348313483    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1349013490    mov dx, word [es:si]                      ; 26 8b 14
    1349113491    mov si, strict word 00028h                ; be 28 00
    13492     call 0a190h                               ; e8 eb 15
     13492    call 0a180h                               ; e8 db 15
    1349313493    mov es, [bp-00ah]                         ; 8e 46 f6
    1349413494    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1350313503    mov bx, word [bp-012h]                    ; 8b 5e ee
    1350413504    xor cx, cx                                ; 31 c9
    13505     call 0a140h                               ; e8 69 15
     13505    call 0a130h                               ; e8 59 15
    1350613506    push dx                                   ; 52
    1350713507    push ax                                   ; 50
     
    1351313513    mov ax, 0026ah                            ; b8 6a 02
    1351413514    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13515     call 0a08eh                               ; e8 9b 14
     13515    call 0a08bh                               ; e8 98 14
    1351613516    mov es, [bp-00ah]                         ; 8e 46 f6
    1351713517    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1357713577    add ax, 0026ah                            ; 05 6a 02
    1357813578    mov dx, cx                                ; 89 ca
    13579     call 0a105h                               ; e8 37 14
     13579    call 0a102h                               ; e8 34 14
    1358013580    mov es, cx                                ; 8e c1
    1358113581    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     
    1366313663    mov ax, di                                ; 89 f8
    1366413664    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13665     call 0a1b0h                               ; e8 30 14
     13665    call 0a1a0h                               ; e8 20 14
    1366613666    lea ax, [di+00080h]                       ; 8d 85 80 00
    1366713667    mov cx, strict word 00040h                ; b9 40 00
    1366813668    xor bx, bx                                ; 31 db
    1366913669    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13670     call 0a1b0h                               ; e8 21 14
     13670    call 0a1a0h                               ; e8 11 14
    1367113671    lea ax, [di+00200h]                       ; 8d 85 00 02
    1367213672    mov cx, strict word 00060h                ; b9 60 00
    1367313673    xor bx, bx                                ; 31 db
    1367413674    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13675     call 0a1b0h                               ; e8 12 14
     13675    call 0a1a0h                               ; e8 02 14
    1367613676    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1367713677    xor ah, ah                                ; 30 e4
     
    1385013850    mov ax, si                                ; 89 f0
    1385113851    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13852     call 0a1b0h                               ; e8 ac 12
     13852    call 0a1a0h                               ; e8 9c 12
    1385313853    lea ax, [si+00080h]                       ; 8d 84 80 00
    1385413854    mov cx, strict word 00040h                ; b9 40 00
    1385513855    xor bx, bx                                ; 31 db
    1385613856    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13857     call 0a1b0h                               ; e8 9d 12
     13857    call 0a1a0h                               ; e8 8d 12
    1385813858    lea di, [si+00200h]                       ; 8d bc 00 02
    1385913859    mov cx, strict word 00060h                ; b9 60 00
     
    1386113861    mov ax, di                                ; 89 f8
    1386213862    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13863     call 0a1b0h                               ; e8 8c 12
     13863    call 0a1a0h                               ; e8 7c 12
    1386413864    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1386513865    xor bh, bh                                ; 30 ff
     
    1420214202    mov dx, word [bp+008h]                    ; 8b 56 08
    1420314203    xor cx, cx                                ; 31 c9
    14204     call 0a160h                               ; e8 e2 0e
     14204    call 0a150h                               ; e8 d2 0e
    1420514205    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1420614206    xor di, di                                ; 31 ff
     
    1422814228    mov ax, 000c0h                            ; b8 c0 00
    1422914229    mov dx, word [bp-00ah]                    ; 8b 56 f6
    14230     call 0a1c0h                               ; e8 f0 0e
     14230    call 0a1b0h                               ; e8 e0 0e
    1423114231    mov es, [bp-008h]                         ; 8e 46 f8
    1423214232    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1428414284    pop bp                                    ; 5d
    1428514285    retn 0000ch                               ; c2 0c 00
    14286 ahci_port_detect_device_:                    ; 0xf9378 LB 0x4fe
     14286wait_ticks_device_init_:                     ; 0xf9378 LB 0x5
     14287    push bp                                   ; 55
     14288    mov bp, sp                                ; 89 e5
     14289    pop bp                                    ; 5d
     14290    retn                                      ; c3
     14291ahci_port_detect_device_:                    ; 0xf937d LB 0x4f6
    1428714292    push bp                                   ; 55
    1428814293    mov bp, sp                                ; 89 e5
     
    1429014295    push si                                   ; 56
    1429114296    push di                                   ; 57
    14292     sub sp, 00224h                            ; 81 ec 24 02
     14297    sub sp, 0022ch                            ; 81 ec 2c 02
    1429314298    mov si, ax                                ; 89 c6
    14294     mov word [bp-010h], dx                    ; 89 56 f0
     14299    mov word [bp-01ah], dx                    ; 89 56 e6
    1429514300    mov byte [bp-008h], bl                    ; 88 5e f8
     14301    mov word [bp-01eh], strict word 00000h    ; c7 46 e2 00 00
    1429614302    mov al, bl                                ; 88 d8
    14297     mov byte [bp-020h], bl                    ; 88 5e e0
     14303    mov byte [bp-02ah], bl                    ; 88 5e d6
    1429814304    xor al, bl                                ; 30 d8
    14299     mov byte [bp-01fh], al                    ; 88 46 e1
    14300     mov bx, word [bp-020h]                    ; 8b 5e e0
     14305    mov byte [bp-029h], al                    ; 88 46 d7
     14306    mov bx, word [bp-02ah]                    ; 8b 5e d6
    1430114307    mov ax, si                                ; 89 f0
    14302     call 08e6ah                               ; e8 ce fa
     14308    call 08e6ah                               ; e8 c4 fa
    1430314309    mov dx, strict word 0000eh                ; ba 0e 00
    1430414310    mov ax, strict word 00040h                ; b8 40 00
    14305     call 0166eh                               ; e8 c9 82
    14306     mov word [bp-01ah], 00122h                ; c7 46 e6 22 01
    14307     mov word [bp-00eh], ax                    ; 89 46 f2
     14311    call 0166eh                               ; e8 bf 82
     14312    mov word [bp-026h], 00122h                ; c7 46 da 22 01
     14313    mov word [bp-024h], ax                    ; 89 46 dc
    1430814314    mov CL, strict byte 007h                  ; b1 07
    14309     mov ax, word [bp-020h]                    ; 8b 46 e0
     14315    mov ax, word [bp-02ah]                    ; 8b 46 d6
    1431014316    sal ax, CL                                ; d3 e0
    14311     mov word [bp-020h], ax                    ; 89 46 e0
    1431214317    add ax, 0012ch                            ; 05 2c 01
    1431314318    cwd                                       ; 99
    14314     mov bx, ax                                ; 89 c3
    14315     mov di, dx                                ; 89 d7
    14316     mov es, [bp-010h]                         ; 8e 46 f0
     14319    mov di, ax                                ; 89 c7
     14320    mov bx, dx                                ; 89 d3
     14321    mov es, [bp-01ah]                         ; 8e 46 e6
    1431714322    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    14318     mov cx, di                                ; 89 f9
     14323    mov cx, bx                                ; 89 d9
    1431914324    xchg cx, ax                               ; 91
    1432014325    sal eax, 010h                             ; 66 c1 e0 10
     
    1432214327    ; mov ax, cx                                ; 8b c1
    1432314328    out DX, eax                               ; 66 ef
    14324     mov es, [bp-010h]                         ; 8e 46 f0
     14329    mov es, [bp-01ah]                         ; 8e 46 e6
    1432514330    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1432614331    add dx, strict byte 00004h                ; 83 c2 04
     
    1433214337    ; mov ax, cx                                ; 8b c1
    1433314338    out DX, eax                               ; 66 ef
    14334     mov es, [bp-010h]                         ; 8e 46 f0
     14339    mov es, [bp-01ah]                         ; 8e 46 e6
    1433514340    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    14336     mov ax, bx                                ; 89 d8
    14337     mov cx, di                                ; 89 f9
     14341    mov ax, di                                ; 89 f8
     14342    mov cx, bx                                ; 89 d9
    1433814343    xchg cx, ax                               ; 91
    1433914344    sal eax, 010h                             ; 66 c1 e0 10
     
    1434114346    ; mov ax, cx                                ; 8b c1
    1434214347    out DX, eax                               ; 66 ef
    14343     mov es, [bp-010h]                         ; 8e 46 f0
     14348    mov es, [bp-01ah]                         ; 8e 46 e6
    1434414349    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1434514350    add dx, strict byte 00004h                ; 83 c2 04
     
    1435114356    ; mov ax, cx                                ; 8b c1
    1435214357    out DX, eax                               ; 66 ef
    14353     mov ax, word [bp-020h]                    ; 8b 46 e0
     14358    mov di, strict word 0006ch                ; bf 6c 00
     14359    mov ax, strict word 00040h                ; b8 40 00
     14360    mov word [bp-014h], ax                    ; 89 46 ec
     14361    mov es, ax                                ; 8e c0
     14362    mov ax, word [es:di]                      ; 26 8b 05
     14363    add ax, strict word 00003h                ; 05 03 00
     14364    mov word [bp-01ch], ax                    ; 89 46 e4
     14365    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     14366    adc ax, strict word 00000h                ; 15 00 00
     14367    mov word [bp-028h], ax                    ; 89 46 d8
     14368    mov es, [bp-014h]                         ; 8e 46 ec
     14369    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     14370    cmp ax, word [bp-028h]                    ; 3b 46 d8
     14371    jc short 0945ah                           ; 72 11
     14372    mov ax, word [es:di+002h]                 ; 26 8b 45 02
     14373    cmp ax, word [bp-028h]                    ; 3b 46 d8
     14374    jne short 094a8h                          ; 75 56
     14375    mov ax, word [es:di]                      ; 26 8b 05
     14376    cmp ax, word [bp-01ch]                    ; 3b 46 e4
     14377    jnc short 094a8h                          ; 73 4e
     14378    mov al, byte [bp-008h]                    ; 8a 46 f8
     14379    xor ah, ah                                ; 30 e4
     14380    mov CL, strict byte 007h                  ; b1 07
     14381    sal ax, CL                                ; d3 e0
    1435414382    add ax, 00128h                            ; 05 28 01
    1435514383    cwd                                       ; 99
    14356     mov es, [bp-010h]                         ; 8e 46 f0
     14384    mov es, [bp-01ah]                         ; 8e 46 e6
    1435714385    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1435814386    mov cx, dx                                ; 89 d1
     
    1436314391    ; mov ax, cx                                ; 8b c1
    1436414392    out DX, eax                               ; 66 ef
    14365     mov es, [bp-010h]                         ; 8e 46 f0
     14393    mov es, [bp-01ah]                         ; 8e 46 e6
    1436614394    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1436714395    add dx, strict byte 00004h                ; 83 c2 04
     
    1437114399    shr eax, 010h                             ; 66 c1 e8 10
    1437214400    xchg dx, ax                               ; 92
     14401    mov word [bp-022h], ax                    ; 89 46 de
     14402    mov word [bp-020h], dx                    ; 89 56 e0
    1437314403    xor bx, bx                                ; 31 db
    1437414404    push bx                                   ; 53
    1437514405    mov bx, strict word 0000fh                ; bb 0f 00
    1437614406    xor cx, cx                                ; 31 c9
    14377     call 088f2h                               ; e8 9f f4
    14378     test ax, ax                               ; 85 c0
    14379     jne short 0945ah                          ; 75 03
    14380     jmp near 0986eh                           ; e9 14 04
     14407    call 088f2h                               ; e8 51 f4
     14408    cmp ax, strict word 00003h                ; 3d 03 00
     14409    jne short 0943dh                          ; 75 97
     14410    jmp short 094b1h                          ; eb 09
     14411    cmp word [bp-01eh], strict byte 00000h    ; 83 7e e2 00
     14412    jne short 094b1h                          ; 75 03
     14413    jmp near 0986bh                           ; e9 ba 03
     14414    xor ax, ax                                ; 31 c0
     14415    push ax                                   ; 50
     14416    mov bx, strict word 0000fh                ; bb 0f 00
     14417    xor cx, cx                                ; 31 c9
     14418    mov ax, word [bp-022h]                    ; 8b 46 de
     14419    mov dx, word [bp-020h]                    ; 8b 56 e0
     14420    call 088f2h                               ; e8 30 f4
     14421    cmp ax, strict word 00003h                ; 3d 03 00
     14422    jne short 094aeh                          ; 75 e7
    1438114423    mov al, byte [bp-008h]                    ; 8a 46 f8
    1438214424    xor ah, ah                                ; 30 e4
    1438314425    mov CL, strict byte 007h                  ; b1 07
    14384     sal ax, CL                                ; d3 e0
    14385     mov word [bp-016h], ax                    ; 89 46 ea
    14386     add ax, 00128h                            ; 05 28 01
     14426    mov di, ax                                ; 89 c7
     14427    sal di, CL                                ; d3 e7
     14428    lea ax, [di+00130h]                       ; 8d 85 30 01
    1438714429    cwd                                       ; 99
    14388     mov es, [bp-010h]                         ; 8e 46 f0
     14430    mov es, [bp-01ah]                         ; 8e 46 e6
    1438914431    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1439014432    mov cx, dx                                ; 89 d1
     
    1439514437    ; mov ax, cx                                ; 8b c1
    1439614438    out DX, eax                               ; 66 ef
    14397     mov es, [bp-010h]                         ; 8e 46 f0
    14398     mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    14399     add dx, strict byte 00004h                ; 83 c2 04
    14400     in eax, DX                                ; 66 ed
    14401     db  08bh, 0d0h
    14402     ; mov dx, ax                                ; 8b d0
    14403     shr eax, 010h                             ; 66 c1 e8 10
    14404     xchg dx, ax                               ; 92
    14405     mov di, ax                                ; 89 c7
    14406     mov word [bp-01ch], dx                    ; 89 56 e4
    14407     xor ax, ax                                ; 31 c0
    14408     push ax                                   ; 50
    14409     mov bx, strict word 0000fh                ; bb 0f 00
    14410     xor cx, cx                                ; 31 c9
    14411     mov ax, di                                ; 89 f8
    14412     call 088f2h                               ; e8 4d f4
    14413     cmp ax, strict word 00001h                ; 3d 01 00
    14414     je short 0945ah                           ; 74 b0
    14415     xor ax, ax                                ; 31 c0
    14416     push ax                                   ; 50
    14417     mov bx, strict word 0000fh                ; bb 0f 00
    14418     xor cx, cx                                ; 31 c9
    14419     mov ax, di                                ; 89 f8
    14420     mov dx, word [bp-01ch]                    ; 8b 56 e4
    14421     call 088f2h                               ; e8 38 f4
    14422     cmp ax, strict word 00003h                ; 3d 03 00
    14423     jne short 09457h                          ; 75 98
    14424     mov ax, word [bp-016h]                    ; 8b 46 ea
    14425     add ax, 00130h                            ; 05 30 01
    14426     cwd                                       ; 99
    14427     mov es, [bp-010h]                         ; 8e 46 f0
    14428     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    14429     mov cx, dx                                ; 89 d1
    14430     mov dx, bx                                ; 89 da
    14431     xchg cx, ax                               ; 91
    14432     sal eax, 010h                             ; 66 c1 e0 10
    14433     db  08bh, 0c1h
    14434     ; mov ax, cx                                ; 8b c1
    14435     out DX, eax                               ; 66 ef
    14436     mov es, [bp-010h]                         ; 8e 46 f0
     14439    mov es, [bp-01ah]                         ; 8e 46 e6
    1443714440    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1443814441    add dx, strict byte 00004h                ; 83 c2 04
     
    1444414447    ; mov ax, cx                                ; 8b c1
    1444514448    out DX, eax                               ; 66 ef
    14446     mov es, [bp-00eh]                         ; 8e 46 f2
    14447     mov bx, word [bp-01ah]                    ; 8b 5e e6
     14449    les bx, [bp-026h]                         ; c4 5e da
    1444814450    mov al, byte [es:bx+00231h]               ; 26 8a 87 31 02
    1444914451    mov byte [bp-00ch], al                    ; 88 46 f4
    1445014452    cmp AL, strict byte 004h                  ; 3c 04
    14451     jc short 09509h                           ; 72 03
    14452     jmp near 0986eh                           ; e9 65 03
    14453     mov ax, word [bp-016h]                    ; 8b 46 ea
    14454     add ax, 00118h                            ; 05 18 01
    14455     mov es, [bp-010h]                         ; 8e 46 f0
     14453    jnc short 094aeh                          ; 73 9a
     14454    lea ax, [di+00118h]                       ; 8d 85 18 01
     14455    mov es, [bp-01ah]                         ; 8e 46 e6
    1445614456    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1445714457    xor cx, cx                                ; 31 c9
     
    1447714477    ; mov ax, cx                                ; 8b c1
    1447814478    out DX, eax                               ; 66 ef
    14479     mov ax, word [bp-016h]                    ; 8b 46 ea
    14480     add ax, 00124h                            ; 05 24 01
     14479    lea ax, [di+00124h]                       ; 8d 85 24 01
    1448114480    cwd                                       ; 99
    14482     mov es, [bp-010h]                         ; 8e 46 f0
     14481    mov es, [bp-01ah]                         ; 8e 46 e6
    1448314482    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1448414483    mov cx, dx                                ; 89 d1
     
    1448914488    ; mov ax, cx                                ; 8b c1
    1449014489    out DX, eax                               ; 66 ef
    14491     mov es, [bp-010h]                         ; 8e 46 f0
     14490    mov es, [bp-01ah]                         ; 8e 46 e6
    1449214491    mov dx, word [es:si+00260h]               ; 26 8b 94 60 02
    1449314492    add dx, strict byte 00004h                ; 83 c2 04
     
    1449714496    shr eax, 010h                             ; 66 c1 e8 10
    1449814497    xchg dx, ax                               ; 92
    14499     mov bx, ax                                ; 89 c3
    14500     mov ax, dx                                ; 89 d0
    14501     mov cl, byte [bp-00ch]                    ; 8a 4e f4
    14502     add cl, 00ch                              ; 80 c1 0c
     14498    mov bl, byte [bp-00ch]                    ; 8a 5e f4
     14499    add bl, 00ch                              ; 80 c3 0c
     14500    mov byte [bp-00eh], bl                    ; 88 5e f2
    1450314501    test dx, dx                               ; 85 d2
    14504     jne short 095d4h                          ; 75 55
    14505     cmp bx, 00101h                            ; 81 fb 01 01
    14506     jne short 095d4h                          ; 75 4f
    14507     mov es, [bp-00eh]                         ; 8e 46 f2
    14508     mov bx, word [bp-01ah]                    ; 8b 5e e6
     14502    jne short 095d9h                          ; 75 54
     14503    cmp ax, 00101h                            ; 3d 01 01
     14504    jne short 095d9h                          ; 75 4f
     14505    les bx, [bp-026h]                         ; c4 5e da
    1450914506    mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
    1451014507    mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00
    1451114508    mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00
    1451214509    mov word [es:bx], strict word 00000h      ; 26 c7 07 00 00
    14513     lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
     14510    lea dx, [bp-00232h]                       ; 8d 96 ce fd
    1451414511    mov word [es:bx+008h], dx                 ; 26 89 57 08
    1451514512    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
     
    1451714514    mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
    1451814515    mov bx, 000ech                            ; bb ec 00
    14519     mov ax, word [bp-01ah]                    ; 8b 46 e6
     14516    mov ax, word [bp-026h]                    ; 8b 46 da
    1452014517    mov dx, es                                ; 8c c2
    14521     call 08a85h                               ; e8 c0 f4
    14522     mov byte [bp-00ah], cl                    ; 88 4e f6
    14523     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14524     je short 095d7h                           ; 74 08
     14518    call 08a85h                               ; e8 be f4
     14519    mov al, byte [bp-00eh]                    ; 8a 46 f2
     14520    mov byte [bp-00ah], al                    ; 88 46 f6
     14521    test byte [bp-00232h], 080h               ; f6 86 ce fd 80
     14522    je short 095dch                           ; 74 08
    1452514523    mov ax, strict word 00001h                ; b8 01 00
    14526     jmp short 095d9h                          ; eb 05
    14527     jmp near 097a9h                           ; e9 d2 01
     14524    jmp short 095deh                          ; eb 05
     14525    jmp near 097aah                           ; e9 ce 01
    1452814526    xor ax, ax                                ; 31 c0
    1452914527    mov cl, al                                ; 88 c1
    14530     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
     14528    mov ax, word [bp-00230h]                  ; 8b 86 d0 fd
    1453114529    mov word [bp-018h], ax                    ; 89 46 e8
    14532     mov ax, word [bp-00224h]                  ; 8b 86 dc fd
    14533     mov word [bp-022h], ax                    ; 89 46 de
    14534     mov ax, word [bp-0021eh]                  ; 8b 86 e2 fd
    14535     mov word [bp-024h], ax                    ; 89 46 dc
    14536     mov ax, word [bp-001b2h]                  ; 8b 86 4e fe
    14537     mov word [bp-014h], ax                    ; 89 46 ec
    14538     mov di, word [bp-001b0h]                  ; 8b be 50 fe
     14530    mov ax, word [bp-0022ch]                  ; 8b 86 d4 fd
     14531    mov word [bp-016h], ax                    ; 89 46 ea
     14532    mov ax, word [bp-00226h]                  ; 8b 86 da fd
     14533    mov word [bp-02ch], ax                    ; 89 46 d4
     14534    mov di, word [bp-001bah]                  ; 8b be 46 fe
     14535    mov si, word [bp-001b8h]                  ; 8b b6 48 fe
    1453914536    xor ax, ax                                ; 31 c0
    14540     mov word [bp-01eh], ax                    ; 89 46 e2
    1454114537    mov word [bp-012h], ax                    ; 89 46 ee
    14542     cmp di, 00fffh                            ; 81 ff ff 0f
    14543     jne short 09628h                          ; 75 1f
    14544     cmp word [bp-014h], strict byte 0ffffh    ; 83 7e ec ff
    14545     jne short 09628h                          ; 75 19
    14546     mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
     14538    mov word [bp-010h], ax                    ; 89 46 f0
     14539    cmp si, 00fffh                            ; 81 fe ff 0f
     14540    jne short 09626h                          ; 75 1b
     14541    cmp di, strict byte 0ffffh                ; 83 ff ff
     14542    jne short 09626h                          ; 75 16
     14543    mov ax, word [bp-00164h]                  ; 8b 86 9c fe
     14544    mov word [bp-010h], ax                    ; 89 46 f0
     14545    mov ax, word [bp-00166h]                  ; 8b 86 9a fe
    1454714546    mov word [bp-012h], ax                    ; 89 46 ee
    14548     mov ax, word [bp-0015eh]                  ; 8b 86 a2 fe
    14549     mov word [bp-01eh], ax                    ; 89 46 e2
    14550     mov di, word [bp-00160h]                  ; 8b be a0 fe
    14551     mov ax, word [bp-00162h]                  ; 8b 86 9e fe
    14552     mov word [bp-014h], ax                    ; 89 46 ec
     14547    mov si, word [bp-00168h]                  ; 8b b6 98 fe
     14548    mov di, word [bp-0016ah]                  ; 8b be 96 fe
    1455314549    mov bl, byte [bp-00ch]                    ; 8a 5e f4
    1455414550    xor bh, bh                                ; 30 ff
    14555     mov es, [bp-00eh]                         ; 8e 46 f2
    14556     add bx, word [bp-01ah]                    ; 03 5e e6
     14551    mov es, [bp-024h]                         ; 8e 46 dc
     14552    add bx, word [bp-026h]                    ; 03 5e da
    1455714553    mov al, byte [bp-008h]                    ; 8a 46 f8
    1455814554    mov byte [es:bx+0022dh], al               ; 26 88 87 2d 02
     
    1456114557    mov dx, strict word 0001ch                ; ba 1c 00
    1456214558    imul dx                                   ; f7 ea
    14563     mov si, word [bp-01ah]                    ; 8b 76 e6
    14564     add si, ax                                ; 01 c6
    14565     mov word [es:si+022h], 0ff05h             ; 26 c7 44 22 05 ff
    14566     mov byte [es:si+024h], cl                 ; 26 88 4c 24
    14567     mov byte [es:si+025h], 000h               ; 26 c6 44 25 00
    14568     mov word [es:si+028h], 00200h             ; 26 c7 44 28 00 02
    14569     mov byte [es:si+027h], 001h               ; 26 c6 44 27 01
     14559    mov bx, word [bp-026h]                    ; 8b 5e da
     14560    add bx, ax                                ; 01 c3
     14561    mov word [es:bx+022h], 0ff05h             ; 26 c7 47 22 05 ff
     14562    mov byte [es:bx+024h], cl                 ; 26 88 4f 24
     14563    mov byte [es:bx+025h], 000h               ; 26 c6 47 25 00
     14564    mov word [es:bx+028h], 00200h             ; 26 c7 47 28 00 02
     14565    mov byte [es:bx+027h], 001h               ; 26 c6 47 27 01
     14566    mov ax, word [bp-010h]                    ; 8b 46 f0
     14567    mov word [es:bx+03ch], ax                 ; 26 89 47 3c
    1457014568    mov ax, word [bp-012h]                    ; 8b 46 ee
    14571     mov word [es:si+03ch], ax                 ; 26 89 44 3c
    14572     mov ax, word [bp-01eh]                    ; 8b 46 e2
    14573     mov word [es:si+03ah], ax                 ; 26 89 44 3a
    14574     mov word [es:si+038h], di                 ; 26 89 7c 38
    14575     mov ax, word [bp-014h]                    ; 8b 46 ec
    14576     mov word [es:si+036h], ax                 ; 26 89 44 36
    14577     mov ax, word [bp-022h]                    ; 8b 46 de
    14578     mov word [es:si+030h], ax                 ; 26 89 44 30
     14569    mov word [es:bx+03ah], ax                 ; 26 89 47 3a
     14570    mov word [es:bx+038h], si                 ; 26 89 77 38
     14571    mov word [es:bx+036h], di                 ; 26 89 7f 36
     14572    mov ax, word [bp-016h]                    ; 8b 46 ea
     14573    mov word [es:bx+030h], ax                 ; 26 89 47 30
    1457914574    mov ax, word [bp-018h]                    ; 8b 46 e8
    14580     mov word [es:si+032h], ax                 ; 26 89 44 32
    14581     mov ax, word [bp-024h]                    ; 8b 46 dc
    14582     mov word [es:si+034h], ax                 ; 26 89 44 34
     14575    mov word [es:bx+032h], ax                 ; 26 89 47 32
     14576    mov ax, word [bp-02ch]                    ; 8b 46 d4
     14577    mov word [es:bx+034h], ax                 ; 26 89 47 34
    1458314578    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1458414579    cmp AL, strict byte 001h                  ; 3c 01
    14585     jc short 096a5h                           ; 72 0c
    14586     jbe short 096adh                          ; 76 12
     14580    jc short 096a0h                           ; 72 0c
     14581    jbe short 096a8h                          ; 76 12
    1458714582    cmp AL, strict byte 003h                  ; 3c 03
    14588     je short 096b5h                           ; 74 16
     14583    je short 096b0h                           ; 74 16
    1458914584    cmp AL, strict byte 002h                  ; 3c 02
    14590     je short 096b1h                           ; 74 0e
    14591     jmp short 096f8h                          ; eb 53
     14585    je short 096ach                           ; 74 0e
     14586    jmp short 096fah                          ; eb 5a
    1459214587    test al, al                               ; 84 c0
    14593     jne short 096f8h                          ; 75 4f
    14594     mov DL, strict byte 040h                  ; b2 40
    14595     jmp short 096b7h                          ; eb 0a
    14596     mov DL, strict byte 048h                  ; b2 48
    14597     jmp short 096b7h                          ; eb 06
    14598     mov DL, strict byte 050h                  ; b2 50
    14599     jmp short 096b7h                          ; eb 02
    14600     mov DL, strict byte 058h                  ; b2 58
    14601     mov bl, dl                                ; 88 d3
    14602     add bl, 007h                              ; 80 c3 07
    14603     xor bh, bh                                ; 30 ff
    14604     mov ax, bx                                ; 89 d8
    14605     call 016aeh                               ; e8 eb 7f
     14588    jne short 096fah                          ; 75 56
     14589    mov BL, strict byte 040h                  ; b3 40
     14590    jmp short 096b2h                          ; eb 0a
     14591    mov BL, strict byte 048h                  ; b3 48
     14592    jmp short 096b2h                          ; eb 06
     14593    mov BL, strict byte 050h                  ; b3 50
     14594    jmp short 096b2h                          ; eb 02
     14595    mov BL, strict byte 058h                  ; b3 58
     14596    mov dl, bl                                ; 88 da
     14597    add dl, 007h                              ; 80 c2 07
     14598    xor dh, dh                                ; 30 f6
     14599    mov ax, dx                                ; 89 d0
     14600    call 016aeh                               ; e8 f0 7f
    1460614601    test al, al                               ; 84 c0
    14607     je short 096f8h                           ; 74 31
    14608     mov al, dl                                ; 88 d0
     14602    je short 096fah                           ; 74 38
     14603    mov al, bl                                ; 88 d8
    1460914604    db  0feh, 0c0h
    1461014605    ; inc al                                    ; fe c0
    1461114606    xor ah, ah                                ; 30 e4
    14612     call 016aeh                               ; e8 de 7f
    14613     mov ch, al                                ; 88 c5
    14614     mov al, dl                                ; 88 d0
    14615     xor ah, ah                                ; 30 e4
    14616     call 016aeh                               ; e8 d5 7f
    14617     mov ah, ch                                ; 88 ec
    14618     mov word [bp-028h], ax                    ; 89 46 d8
    14619     mov al, dl                                ; 88 d0
     14607    call 016aeh                               ; e8 e3 7f
     14608    mov byte [bp-029h], al                    ; 88 46 d7
     14609    mov byte [bp-02ah], dh                    ; 88 76 d6
     14610    mov al, bl                                ; 88 d8
     14611    xor ah, ah                                ; 30 e4
     14612    call 016aeh                               ; e8 d6 7f
     14613    xor ah, ah                                ; 30 e4
     14614    mov cx, word [bp-02ah]                    ; 8b 4e d6
     14615    add cx, ax                                ; 01 c1
     14616    mov word [bp-030h], cx                    ; 89 4e d0
     14617    mov al, bl                                ; 88 d8
    1462014618    add AL, strict byte 002h                  ; 04 02
    14621     xor ah, ah                                ; 30 e4
    14622     call 016aeh                               ; e8 c7 7f
    14623     xor ah, ah                                ; 30 e4
    14624     mov word [bp-02ah], ax                    ; 89 46 d6
    14625     mov ax, bx                                ; 89 d8
    14626     call 016aeh                               ; e8 bd 7f
    14627     xor ah, ah                                ; 30 e4
    14628     mov word [bp-026h], ax                    ; 89 46 da
    14629     jmp short 0970ah                          ; eb 12
     14619    call 016aeh                               ; e8 c5 7f
     14620    xor ah, ah                                ; 30 e4
     14621    mov word [bp-032h], ax                    ; 89 46 ce
     14622    mov ax, dx                                ; 89 d0
     14623    call 016aeh                               ; e8 bb 7f
     14624    xor ah, ah                                ; 30 e4
     14625    mov word [bp-02eh], ax                    ; 89 46 d2
     14626    jmp short 0970ah                          ; eb 10
     14627    push word [bp-010h]                       ; ff 76 f0
    1463014628    push word [bp-012h]                       ; ff 76 ee
    14631     push word [bp-01eh]                       ; ff 76 e2
     14629    push si                                   ; 56
    1463214630    push di                                   ; 57
    14633     push word [bp-014h]                       ; ff 76 ec
    1463414631    mov dx, ss                                ; 8c d2
    14635     lea ax, [bp-02ah]                         ; 8d 46 d6
     14632    lea ax, [bp-032h]                         ; 8d 46 ce
    1463614633    call 05b7fh                               ; e8 75 c4
    1463714634    mov bx, 00da6h                            ; bb a6 0d
     
    1463914636    mov ax, strict word 00004h                ; b8 04 00
    1464014637    call 01933h                               ; e8 1e 82
     14638    push word [bp-010h]                       ; ff 76 f0
    1464114639    push word [bp-012h]                       ; ff 76 ee
    14642     push word [bp-01eh]                       ; ff 76 e2
     14640    push si                                   ; 56
    1464314641    push di                                   ; 57
    14644     push word [bp-014h]                       ; ff 76 ec
    14645     mov ax, word [bp-026h]                    ; 8b 46 da
    14646     push ax                                   ; 50
    14647     mov ax, word [bp-02ah]                    ; 8b 46 d6
    14648     push ax                                   ; 50
    14649     mov ax, word [bp-028h]                    ; 8b 46 d8
    14650     push ax                                   ; 50
    14651     push word [bp-024h]                       ; ff 76 dc
    14652     push word [bp-022h]                       ; ff 76 de
     14642    mov ax, word [bp-02eh]                    ; 8b 46 d2
     14643    push ax                                   ; 50
     14644    mov ax, word [bp-032h]                    ; 8b 46 ce
     14645    push ax                                   ; 50
     14646    mov ax, word [bp-030h]                    ; 8b 46 d0
     14647    push ax                                   ; 50
     14648    push word [bp-02ch]                       ; ff 76 d4
     14649    push word [bp-016h]                       ; ff 76 ea
    1465314650    push word [bp-018h]                       ; ff 76 e8
    1465414651    mov al, byte [bp-008h]                    ; 8a 46 f8
     
    1466114658    mov ax, strict word 00004h                ; b8 04 00
    1466214659    push ax                                   ; 50
    14663     call 01976h                               ; e8 2d 82
     14660    call 01976h                               ; e8 2f 82
    1466414661    add sp, strict byte 0001ch                ; 83 c4 1c
    1466514662    mov al, byte [bp-00ah]                    ; 8a 46 f6
     
    1466714664    mov dx, strict word 0001ch                ; ba 1c 00
    1466814665    imul dx                                   ; f7 ea
    14669     mov di, word [bp-01ah]                    ; 8b 7e e6
     14666    mov di, word [bp-026h]                    ; 8b 7e da
    1467014667    add di, ax                                ; 01 c7
    14671     mov es, [bp-00eh]                         ; 8e 46 f2
     14668    mov es, [bp-024h]                         ; 8e 46 dc
    1467214669    lea di, [di+02ah]                         ; 8d 7d 2a
    1467314670    push DS                                   ; 1e
    1467414671    push SS                                   ; 16
    1467514672    pop DS                                    ; 1f
    14676     lea si, [bp-02ah]                         ; 8d 76 d6
     14673    lea si, [bp-032h]                         ; 8d 76 ce
    1467714674    movsw                                     ; a5
    1467814675    movsw                                     ; a5
    1467914676    movsw                                     ; a5
    1468014677    pop DS                                    ; 1f
    14681     mov bx, word [bp-01ah]                    ; 8b 5e e6
    14682     mov dl, byte [es:bx+001e2h]               ; 26 8a 97 e2 01
    14683     mov al, byte [bp-00ch]                    ; 8a 46 f4
    14684     add AL, strict byte 00ch                  ; 04 0c
    14685     mov bl, dl                                ; 88 d3
    14686     xor bh, bh                                ; 30 ff
    14687     add bx, word [bp-01ah]                    ; 03 5e e6
    14688     mov byte [es:bx+001e3h], al               ; 26 88 87 e3 01
    14689     db  0feh, 0c2h
    14690     ; inc dl                                    ; fe c2
    14691     mov bx, word [bp-01ah]                    ; 8b 5e e6
    14692     mov byte [es:bx+001e2h], dl               ; 26 88 97 e2 01
     14678    mov bx, word [bp-026h]                    ; 8b 5e da
     14679    mov bl, byte [es:bx+001e2h]               ; 26 8a 9f e2 01
     14680    mov dl, byte [bp-00ch]                    ; 8a 56 f4
     14681    add dl, 00ch                              ; 80 c2 0c
     14682    mov al, bl                                ; 88 d8
     14683    xor ah, ah                                ; 30 e4
     14684    mov si, word [bp-026h]                    ; 8b 76 da
     14685    add si, ax                                ; 01 c6
     14686    mov byte [es:si+001e3h], dl               ; 26 88 94 e3 01
     14687    db  0feh, 0c3h
     14688    ; inc bl                                    ; fe c3
     14689    mov si, word [bp-026h]                    ; 8b 76 da
     14690    mov byte [es:si+001e2h], bl               ; 26 88 9c e2 01
    1469314691    mov dx, strict word 00075h                ; ba 75 00
    1469414692    mov ax, strict word 00040h                ; b8 40 00
    14695     call 01652h                               ; e8 bb 7e
     14693    call 01652h                               ; e8 ba 7e
    1469614694    mov bl, al                                ; 88 c3
    1469714695    db  0feh, 0c3h
     
    1470014698    mov dx, strict word 00075h                ; ba 75 00
    1470114699    mov ax, strict word 00040h                ; b8 40 00
    14702     call 01660h                               ; e8 ba 7e
    14703     jmp near 0985dh                           ; e9 b4 00
     14700    call 01660h                               ; e8 b9 7e
     14701    jmp near 0985dh                           ; e9 b3 00
    1470414702    cmp dx, 0eb14h                            ; 81 fa 14 eb
    14705     jne short 09804h                          ; 75 55
    14706     cmp bx, 00101h                            ; 81 fb 01 01
     14703    jne short 09804h                          ; 75 54
     14704    cmp ax, 00101h                            ; 3d 01 01
    1470714705    jne short 09804h                          ; 75 4f
    14708     mov es, [bp-00eh]                         ; 8e 46 f2
    14709     mov bx, word [bp-01ah]                    ; 8b 5e e6
     14706    les bx, [bp-026h]                         ; c4 5e da
    1471014707    mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
    1471114708    mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00
    1471214709    mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00
    1471314710    mov word [es:bx], strict word 00000h      ; 26 c7 07 00 00
    14714     lea dx, [bp-0022ah]                       ; 8d 96 d6 fd
     14711    lea dx, [bp-00232h]                       ; 8d 96 ce fd
    1471514712    mov word [es:bx+008h], dx                 ; 26 89 57 08
    1471614713    mov [es:bx+00ah], ss                      ; 26 8c 57 0a
     
    1471814715    mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
    1471914716    mov bx, 000a1h                            ; bb a1 00
    14720     mov ax, word [bp-01ah]                    ; 8b 46 e6
     14717    mov ax, word [bp-026h]                    ; 8b 46 da
    1472114718    mov dx, es                                ; 8c c2
    14722     call 08a85h                               ; e8 90 f2
    14723     mov byte [bp-00ah], cl                    ; 88 4e f6
    14724     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     14719    call 08a85h                               ; e8 93 f2
     14720    mov al, byte [bp-00eh]                    ; 8a 46 f2
     14721    mov byte [bp-00ah], al                    ; 88 46 f6
     14722    test byte [bp-00232h], 080h               ; f6 86 ce fd 80
    1472514723    je short 09806h                           ; 74 07
    1472614724    mov cx, strict word 00001h                ; b9 01 00
     
    1473014728    mov bl, byte [bp-00ch]                    ; 8a 5e f4
    1473114729    xor bh, bh                                ; 30 ff
    14732     mov es, [bp-00eh]                         ; 8e 46 f2
    14733     add bx, word [bp-01ah]                    ; 03 5e e6
     14730    mov es, [bp-024h]                         ; 8e 46 dc
     14731    add bx, word [bp-026h]                    ; 03 5e da
    1473414732    mov al, byte [bp-008h]                    ; 8a 46 f8
    1473514733    mov byte [es:bx+0022dh], al               ; 26 88 87 2d 02
     
    1473814736    mov dx, strict word 0001ch                ; ba 1c 00
    1473914737    imul dx                                   ; f7 ea
    14740     mov si, word [bp-01ah]                    ; 8b 76 e6
    14741     add si, ax                                ; 01 c6
    14742     mov word [es:si+022h], 00505h             ; 26 c7 44 22 05 05
    14743     mov byte [es:si+024h], cl                 ; 26 88 4c 24
    14744     mov word [es:si+028h], 00800h             ; 26 c7 44 28 00 08
    14745     mov bx, word [bp-01ah]                    ; 8b 5e e6
     14738    mov bx, word [bp-026h]                    ; 8b 5e da
     14739    add bx, ax                                ; 01 c3
     14740    mov word [es:bx+022h], 00505h             ; 26 c7 47 22 05 05
     14741    mov byte [es:bx+024h], cl                 ; 26 88 4f 24
     14742    mov word [es:bx+028h], 00800h             ; 26 c7 47 28 00 08
     14743    mov bx, word [bp-026h]                    ; 8b 5e da
    1474614744    mov dl, byte [es:bx+001f3h]               ; 26 8a 97 f3 01
    1474714745    mov al, byte [bp-00ch]                    ; 8a 46 f4
     
    1474914747    mov bl, dl                                ; 88 d3
    1475014748    xor bh, bh                                ; 30 ff
    14751     add bx, word [bp-01ah]                    ; 03 5e e6
     14749    add bx, word [bp-026h]                    ; 03 5e da
    1475214750    mov byte [es:bx+001f4h], al               ; 26 88 87 f4 01
    1475314751    db  0feh, 0c2h
    1475414752    ; inc dl                                    ; fe c2
    14755     mov bx, word [bp-01ah]                    ; 8b 5e e6
     14753    mov bx, word [bp-026h]                    ; 8b 5e da
    1475614754    mov byte [es:bx+001f3h], dl               ; 26 88 97 f3 01
    1475714755    inc byte [bp-00ch]                        ; fe 46 f4
    1475814756    mov al, byte [bp-00ch]                    ; 8a 46 f4
    14759     mov es, [bp-00eh]                         ; 8e 46 f2
    14760     mov bx, word [bp-01ah]                    ; 8b 5e e6
     14757    les bx, [bp-026h]                         ; c4 5e da
    1476114758    mov byte [es:bx+00231h], al               ; 26 88 87 31 02
    1476214759    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1476614763    pop bp                                    ; 5d
    1476714764    retn                                      ; c3
    14768 ahci_mem_alloc_:                             ; 0xf9876 LB 0x43
     14765ahci_mem_alloc_:                             ; 0xf9873 LB 0x43
    1476914766    push bp                                   ; 55
    1477014767    mov bp, sp                                ; 89 e5
     
    1477614773    mov dx, 00413h                            ; ba 13 04
    1477714774    xor ax, ax                                ; 31 c0
    14778     call 0166eh                               ; e8 e8 7d
     14775    call 0166eh                               ; e8 eb 7d
    1477914776    test ax, ax                               ; 85 c0
    14780     je short 098afh                           ; 74 25
     14777    je short 098ach                           ; 74 25
    1478114778    dec ax                                    ; 48
    1478214779    mov bx, ax                                ; 89 c3
     
    1478514782    sal ax, 1                                 ; d1 e0
    1478614783    rcl dx, 1                                 ; d1 d2
    14787     loop 09892h                               ; e2 fa
     14784    loop 0988fh                               ; e2 fa
    1478814785    mov si, ax                                ; 89 c6
    1478914786    mov di, dx                                ; 89 d7
     
    1479114788    shr di, 1                                 ; d1 ef
    1479214789    rcr si, 1                                 ; d1 de
    14793     loop 0989fh                               ; e2 fa
     14790    loop 0989ch                               ; e2 fa
    1479414791    mov dx, 00413h                            ; ba 13 04
    1479514792    xor ax, ax                                ; 31 c0
    14796     call 0167ch                               ; e8 cf 7d
     14793    call 0167ch                               ; e8 d2 7d
    1479714794    mov ax, si                                ; 89 f0
    1479814795    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1480414801    pop bp                                    ; 5d
    1480514802    retn                                      ; c3
    14806 ahci_hba_init_:                              ; 0xf98b9 LB 0x16e
     14803ahci_hba_init_:                              ; 0xf98b6 LB 0x16e
    1480714804    push bp                                   ; 55
    1480814805    mov bp, sp                                ; 89 e5
     
    1481614813    mov dx, strict word 0000eh                ; ba 0e 00
    1481714814    mov ax, strict word 00040h                ; b8 40 00
    14818     call 0166eh                               ; e8 9f 7d
     14815    call 0166eh                               ; e8 a2 7d
    1481914816    mov bx, 00122h                            ; bb 22 01
    1482014817    mov di, ax                                ; 89 c7
     
    1483314830    shr eax, 010h                             ; 66 c1 e8 10
    1483414831    xchg dx, ax                               ; 92
    14835     call 09876h                               ; e8 83 ff
     14832    call 09873h                               ; e8 83 ff
    1483614833    mov word [bp-010h], ax                    ; 89 46 f0
    1483714834    test ax, ax                               ; 85 c0
    14838     jne short 098fdh                          ; 75 03
    14839     jmp near 09a06h                           ; e9 09 01
     14835    jne short 098fah                          ; 75 03
     14836    jmp near 09a03h                           ; e9 09 01
    1484014837    mov ax, word [bp-010h]                    ; 8b 46 f0
    1484114838    mov es, di                                ; 8e c7
     
    1488714884    xchg dx, ax                               ; 92
    1488814885    test AL, strict byte 001h                 ; a8 01
    14889     jne short 09957h                          ; 75 de
     14886    jne short 09954h                          ; 75 de
    1489014887    xor ax, ax                                ; 31 c0
    1489114888    xor cx, cx                                ; 31 c9
     
    1490614903    mov bx, strict word 0001fh                ; bb 1f 00
    1490714904    xor cx, cx                                ; 31 c9
    14908     call 088f2h                               ; e8 54 ef
     14905    call 088f2h                               ; e8 57 ef
    1490914906    db  0feh, 0c0h
    1491014907    ; inc al                                    ; fe c0
    1491114908    mov byte [bp-00eh], al                    ; 88 46 f2
    1491214909    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    14913     jmp short 099cah                          ; eb 21
     14910    jmp short 099c7h                          ; eb 21
    1491414911    xor al, al                                ; 30 c0
    1491514912    test al, al                               ; 84 c0
    14916     je short 099c1h                           ; 74 12
     14913    je short 099beh                           ; 74 12
    1491714914    mov bl, byte [bp-00ch]                    ; 8a 5e f4
    1491814915    xor bh, bh                                ; 30 ff
    1491914916    xor ax, ax                                ; 31 c0
    1492014917    mov dx, word [bp-010h]                    ; 8b 56 f0
    14921     call 09378h                               ; e8 bc f9
     14918    call 0937dh                               ; e8 c4 f9
    1492214919    dec byte [bp-00eh]                        ; fe 4e f2
    14923     je short 09a04h                           ; 74 43
     14920    je short 09a01h                           ; 74 43
    1492414921    inc byte [bp-00ch]                        ; fe 46 f4
    1492514922    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    14926     jnc short 09a04h                          ; 73 3a
     14923    jnc short 09a01h                          ; 73 3a
    1492714924    mov cl, byte [bp-00ch]                    ; 8a 4e f4
    1492814925    xor ch, ch                                ; 30 ed
    1492914926    mov bx, strict word 00001h                ; bb 01 00
    1493014927    xor di, di                                ; 31 ff
    14931     jcxz 099dch                               ; e3 06
     14928    jcxz 099d9h                               ; e3 06
    1493214929    sal bx, 1                                 ; d1 e3
    1493314930    rcl di, 1                                 ; d1 d7
    14934     loop 099d6h                               ; e2 fa
     14931    loop 099d3h                               ; e2 fa
    1493514932    mov ax, strict word 0000ch                ; b8 0c 00
    1493614933    xor cx, cx                                ; 31 c9
     
    1494814945    xchg dx, ax                               ; 92
    1494914946    test dx, di                               ; 85 fa
    14950     jne short 09a00h                          ; 75 04
     14947    jne short 099fdh                          ; 75 04
    1495114948    test ax, bx                               ; 85 d8
    14952     je short 099a9h                           ; 74 a9
     14949    je short 099a6h                           ; 74 a9
    1495314950    mov AL, strict byte 001h                  ; b0 01
    14954     jmp short 099abh                          ; eb a7
     14951    jmp short 099a8h                          ; eb a7
    1495514952    xor ax, ax                                ; 31 c0
    1495614953    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1496214959    pop bp                                    ; 5d
    1496314960    retn                                      ; c3
    14964     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 00dh, 09bh, 0ebh, 09ah, 0f1h, 09ah, 0f7h, 09ah, 0fdh
    14965     db  09ah, 003h, 09bh, 009h, 09bh, 00dh, 09bh
    14966 _ahci_init:                                  ; 0xf9a27 LB 0x139
     14961    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 00ah, 09bh, 0e8h, 09ah, 0eeh, 09ah, 0f4h, 09ah, 0fah
     14962    db  09ah, 000h, 09bh, 006h, 09bh, 00ah, 09bh
     14963_ahci_init:                                  ; 0xf9a24 LB 0x139
    1496714964    push bp                                   ; 55
    1496814965    mov bp, sp                                ; 89 e5
     
    1497214969    mov ax, 00601h                            ; b8 01 06
    1497314970    mov dx, strict word 00001h                ; ba 01 00
    14974     call 09f7fh                               ; e8 47 05
     14971    call 09f7ch                               ; e8 47 05
    1497514972    mov dx, ax                                ; 89 c2
    1497614973    cmp ax, strict word 0ffffh                ; 3d ff ff
    14977     je short 09a88h                           ; 74 49
     14974    je short 09a85h                           ; 74 49
    1497814975    mov al, ah                                ; 88 e0
    1497914976    mov byte [bp-008h], ah                    ; 88 66 f8
     
    1498214979    xor ah, ah                                ; 30 e4
    1498314980    mov bx, strict word 00034h                ; bb 34 00
    14984     call 09faah                               ; e8 59 05
     14981    call 09fa7h                               ; e8 59 05
    1498514982    mov cl, al                                ; 88 c1
    1498614983    test cl, cl                               ; 84 c9
    14987     je short 09a8bh                           ; 74 34
     14984    je short 09a88h                           ; 74 34
    1498814985    mov bl, cl                                ; 88 cb
    1498914986    xor bh, bh                                ; 30 ff
     
    1499614993    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1499714994    mov ax, word [bp-012h]                    ; 8b 46 ee
    14998     call 09faah                               ; e8 34 05
     14995    call 09fa7h                               ; e8 34 05
    1499914996    cmp AL, strict byte 012h                  ; 3c 12
    15000     je short 09a8bh                           ; 74 11
     14997    je short 09a88h                           ; 74 11
    1500114998    mov bl, cl                                ; 88 cb
    1500214999    db  0feh, 0c3h
     
    1500515002    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1500615003    mov ax, word [bp-012h]                    ; 8b 46 ee
    15007     jmp short 09a4eh                          ; eb c6
    15008     jmp near 09b59h                           ; e9 ce 00
     15004    jmp short 09a4bh                          ; eb c6
     15005    jmp near 09b56h                           ; e9 ce 00
    1500915006    test cl, cl                               ; 84 c9
    15010     je short 09a88h                           ; 74 f9
     15007    je short 09a85h                           ; 74 f9
    1501115008    add cl, 002h                              ; 80 c1 02
    1501215009    mov bl, cl                                ; 88 cb
     
    1502015017    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1502115018    mov ax, word [bp-014h]                    ; 8b 46 ec
    15022     call 09faah                               ; e8 f9 04
     15019    call 09fa7h                               ; e8 f9 04
    1502315020    cmp AL, strict byte 010h                  ; 3c 10
    15024     jne short 09a88h                          ; 75 d3
     15021    jne short 09a85h                          ; 75 d3
    1502515022    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1502615023    mov bl, cl                                ; 88 cb
     
    1502915026    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1503015027    mov ax, word [bp-014h]                    ; 8b 46 ec
    15031     call 09fd1h                               ; e8 08 05
     15028    call 09fceh                               ; e8 08 05
    1503215029    mov dx, ax                                ; 89 c2
    1503315030    and ax, strict word 0000fh                ; 25 0f 00
    1503415031    sub ax, strict word 00004h                ; 2d 04 00
    1503515032    cmp ax, strict word 0000bh                ; 3d 0b 00
    15036     jnbe short 09b0dh                         ; 77 37
     15033    jnbe short 09b0ah                         ; 77 37
    1503715034    push CS                                   ; 0e
    1503815035    pop ES                                    ; 07
    1503915036    mov cx, strict word 00008h                ; b9 08 00
    15040     mov di, 09a10h                            ; bf 10 9a
     15037    mov di, 09a0dh                            ; bf 0d 9a
    1504115038    repne scasb                               ; f2 ae
    1504215039    sal cx, 1                                 ; d1 e1
    1504315040    mov di, cx                                ; 89 cf
    15044     mov ax, word [cs:di-065e9h]               ; 2e 8b 85 17 9a
     15041    mov ax, word [cs:di-065ech]               ; 2e 8b 85 14 9a
    1504515042    jmp ax                                    ; ff e0
    1504615043    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    15047     jmp short 09b0dh                          ; eb 1c
     15044    jmp short 09b0ah                          ; eb 1c
    1504815045    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    15049     jmp short 09b0dh                          ; eb 16
     15046    jmp short 09b0ah                          ; eb 16
    1505015047    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    15051     jmp short 09b0dh                          ; eb 10
     15048    jmp short 09b0ah                          ; eb 10
    1505215049    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    15053     jmp short 09b0dh                          ; eb 0a
     15050    jmp short 09b0ah                          ; eb 0a
    1505415051    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    15055     jmp short 09b0dh                          ; eb 04
     15052    jmp short 09b0ah                          ; eb 04
    1505615053    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1505715054    mov CL, strict byte 004h                  ; b1 04
     
    1506215059    mov al, byte [bp-006h]                    ; 8a 46 fa
    1506315060    test al, al                               ; 84 c0
    15064     je short 09b59h                           ; 74 3b
     15061    je short 09b56h                           ; 74 3b
    1506515062    mov bl, al                                ; 88 c3
    1506615063    xor bh, bh                                ; 30 ff
     
    1507315070    mov dx, word [bp-010h]                    ; 8b 56 f0
    1507415071    mov ax, word [bp-016h]                    ; 8b 46 ea
    15075     call 09ff6h                               ; e8 b9 04
     15072    call 09ff3h                               ; e8 b9 04
    1507615073    test AL, strict byte 001h                 ; a8 01
    15077     je short 09b59h                           ; 74 18
     15074    je short 09b56h                           ; 74 18
    1507815075    and AL, strict byte 0f0h                  ; 24 f0
    1507915076    add si, ax                                ; 01 c6
     
    1508215079    mov dx, word [bp-010h]                    ; 8b 56 f0
    1508315080    mov ax, word [bp-016h]                    ; 8b 46 ea
    15084     call 0a035h                               ; e8 e1 04
     15081    call 0a032h                               ; e8 e1 04
    1508515082    mov ax, si                                ; 89 f0
    15086     call 098b9h                               ; e8 60 fd
     15083    call 098b6h                               ; e8 60 fd
    1508715084    lea sp, [bp-004h]                         ; 8d 66 fc
    1508815085    pop di                                    ; 5f
     
    1509015087    pop bp                                    ; 5d
    1509115088    retn                                      ; c3
    15092 apm_out_str_:                                ; 0xf9b60 LB 0x39
     15089apm_out_str_:                                ; 0xf9b5d LB 0x39
    1509315090    push bp                                   ; 55
    1509415091    mov bp, sp                                ; 89 e5
     
    1509615093    mov bx, ax                                ; 89 c3
    1509715094    cmp byte [bx], 000h                       ; 80 3f 00
    15098     je short 09b75h                           ; 74 0a
     15095    je short 09b72h                           ; 74 0a
    1509915096    mov al, byte [bx]                         ; 8a 07
    1510015097    out DX, AL                                ; ee
     
    1510315100    db  00ah, 0c0h
    1510415101    ; or al, al                                 ; 0a c0
    15105     jne short 09b6dh                          ; 75 f8
     15102    jne short 09b6ah                          ; 75 f8
    1510615103    lea sp, [bp-002h]                         ; 8d 66 fe
    1510715104    pop bx                                    ; 5b
    1510815105    pop bp                                    ; 5d
    1510915106    retn                                      ; c3
    15110     mov dx, 0459bh                            ; ba 9b 45
     15107    mov BH, strict byte 09bh                  ; b7 9b
     15108    inc dx                                    ; 42
    1511115109    pushfw                                    ; 9c
    15112     int3                                      ; cc
     15110    leave                                     ; c9
    1511315111    wait                                      ; 9b
    15114     out 09bh, ax                              ; e7 9b
    15115     inc bp                                    ; 45
     15112    in AL, strict byte 09bh                   ; e4 9b
     15113    inc dx                                    ; 42
    1511615114    pushfw                                    ; 9c
    15117     adc bl, byte [si-063bbh]                  ; 12 9c 45 9c
    15118     dec bx                                    ; 4b
     15115    db  00fh, 09ch, 042h, 09ch
     15116    ; setl byte [bp+si-064h]                    ; 0f 9c 42 9c
     15117    dec ax                                    ; 48
    1511915118    pushfw                                    ; 9c
    15120     pop SS                                    ; 17
     15119    adc AL, strict byte 09ch                  ; 14 9c
     15120    adc AL, strict byte 09ch                  ; 14 9c
     15121    adc AL, strict byte 09ch                  ; 14 9c
     15122    xchg word [si-063ech], bx                 ; 87 9c 14 9c
     15123    adc AL, strict byte 09ch                  ; 14 9c
     15124    db  080h
    1512115125    pushfw                                    ; 9c
    15122     pop SS                                    ; 17
    15123     pushfw                                    ; 9c
    15124     pop SS                                    ; 17
    15125     pushfw                                    ; 9c
    15126     mov bl, byte [si-063e9h]                  ; 8a 9c 17 9c
    15127     pop SS                                    ; 17
    15128     pushfw                                    ; 9c
    15129     db  083h
    15130     pushfw                                    ; 9c
    15131 _apm_function:                               ; 0xf9b99 LB 0xf6
     15126_apm_function:                               ; 0xf9b96 LB 0xf6
    1513215127    push bp                                   ; 55
    1513315128    mov bp, sp                                ; 89 e5
     
    1513715132    xor ah, ah                                ; 30 e4
    1513815133    cmp ax, strict word 0000eh                ; 3d 0e 00
    15139     jnbe short 09c17h                         ; 77 6c
     15134    jnbe short 09c14h                         ; 77 6c
    1514015135    mov bx, ax                                ; 89 c3
    1514115136    sal bx, 1                                 ; d1 e3
    1514215137    mov dx, word [bp+018h]                    ; 8b 56 18
    1514315138    or dl, 001h                               ; 80 ca 01
    15144     jmp word [cs:bx-06485h]                   ; 2e ff a7 7b 9b
     15139    jmp word [cs:bx-06488h]                   ; 2e ff a7 78 9b
    1514515140    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1514615141    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1514715142    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    15148     jmp near 09c45h                           ; e9 79 00
     15143    jmp near 09c42h                           ; e9 79 00
    1514915144    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    15150     mov word [bp+00ch], 0a234h                ; c7 46 0c 34 a2
     15145    mov word [bp+00ch], 0a224h                ; c7 46 0c 24 a2
    1515115146    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1515215147    mov ax, strict word 0fff0h                ; b8 f0 ff
    1515315148    mov word [bp+006h], ax                    ; 89 46 06
    1515415149    mov word [bp+004h], ax                    ; 89 46 04
    15155     jmp near 09c45h                           ; e9 5e 00
     15150    jmp near 09c42h                           ; e9 5e 00
    1515615151    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1515715152    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1516615161    mov si, ax                                ; 89 c6
    1516715162    sal esi, 010h                             ; 66 c1 e6 10
    15168     jmp near 09c45h                           ; e9 33 00
     15163    jmp near 09c42h                           ; e9 33 00
    1516915164    sti                                       ; fb
    1517015165    hlt                                       ; f4
    15171     jmp near 09c45h                           ; e9 2e 00
     15166    jmp near 09c42h                           ; e9 2e 00
    1517215167    mov bx, 00da6h                            ; bb a6 0d
    1517315168    mov cx, ds                                ; 8c d9
    1517415169    mov ax, strict word 00004h                ; b8 04 00
    15175     call 01933h                               ; e8 11 7d
     15170    call 01933h                               ; e8 14 7d
    1517615171    push word [bp+00ch]                       ; ff 76 0c
    1517715172    push word [bp+012h]                       ; ff 76 12
     
    1518015175    mov ax, strict word 00004h                ; b8 04 00
    1518115176    push ax                                   ; 50
    15182     call 01976h                               ; e8 43 7d
     15177    call 01976h                               ; e8 46 7d
    1518315178    add sp, strict byte 00008h                ; 83 c4 08
    1518415179    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1519215187    retn                                      ; c3
    1519315188    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    15194     je short 09c70h                           ; 74 1f
     15189    je short 09c6dh                           ; 74 1f
    1519515190    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    15196     je short 09c68h                           ; 74 11
     15191    je short 09c65h                           ; 74 11
    1519715192    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    15198     jne short 09c78h                          ; 75 1b
     15193    jne short 09c75h                          ; 75 1b
    1519915194    mov dx, 0040fh                            ; ba 0f 04
    1520015195    mov ax, 00d10h                            ; b8 10 0d
    15201     call 09b60h                               ; e8 fa fe
    15202     jmp short 09c45h                          ; eb dd
     15196    call 09b5dh                               ; e8 fa fe
     15197    jmp short 09c42h                          ; eb dd
    1520315198    mov dx, 0040fh                            ; ba 0f 04
    1520415199    mov ax, 00d18h                            ; b8 18 0d
    15205     jmp short 09c63h                          ; eb f3
     15200    jmp short 09c60h                          ; eb f3
    1520615201    mov dx, 0040fh                            ; ba 0f 04
    1520715202    mov ax, 00d20h                            ; b8 20 0d
    15208     jmp short 09c63h                          ; eb eb
     15203    jmp short 09c60h                          ; eb eb
    1520915204    or ah, 00ah                               ; 80 cc 0a
    1521015205    mov word [bp+012h], ax                    ; 89 46 12
    1521115206    mov word [bp+018h], dx                    ; 89 56 18
    15212     jmp short 09c45h                          ; eb c2
     15207    jmp short 09c42h                          ; eb c2
    1521315208    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    15214     jmp short 09c45h                          ; eb bb
     15209    jmp short 09c42h                          ; eb bb
    1521515210    or ah, 080h                               ; 80 cc 80
    15216     jmp short 09c7bh                          ; eb ec
    15217 pci16_select_reg_:                           ; 0xf9c8f LB 0x24
     15211    jmp short 09c78h                          ; eb ec
     15212pci16_select_reg_:                           ; 0xf9c8c LB 0x24
    1521815213    push bp                                   ; 55
    1521915214    mov bp, sp                                ; 89 e5
     
    1523215227    pop bp                                    ; 5d
    1523315228    retn                                      ; c3
    15234 pci16_find_device_:                          ; 0xf9cb3 LB 0xf7
     15229pci16_find_device_:                          ; 0xf9cb0 LB 0xf7
    1523515230    push bp                                   ; 55
    1523615231    mov bp, sp                                ; 89 e5
     
    1524615241    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1524715242    test bl, 007h                             ; f6 c3 07
    15248     jne short 09cfbh                          ; 75 2d
     15243    jne short 09cf8h                          ; 75 2d
    1524915244    mov dx, strict word 0000eh                ; ba 0e 00
    1525015245    mov ax, bx                                ; 89 d8
    15251     call 09c8fh                               ; e8 b9 ff
     15246    call 09c8ch                               ; e8 b9 ff
    1525215247    mov dx, 00cfeh                            ; ba fe 0c
    1525315248    in AL, DX                                 ; ec
     
    1525615251    mov byte [bp-008h], al                    ; 88 46 f8
    1525715252    cmp AL, strict byte 0ffh                  ; 3c ff
    15258     jne short 09ce9h                          ; 75 06
     15253    jne short 09ce6h                          ; 75 06
    1525915254    add bx, strict byte 00008h                ; 83 c3 08
    15260     jmp near 09d7bh                           ; e9 92 00
     15255    jmp near 09d78h                           ; e9 92 00
    1526115256    test byte [bp-008h], 080h                 ; f6 46 f8 80
    15262     je short 09cf6h                           ; 74 07
     15257    je short 09cf3h                           ; 74 07
    1526315258    mov word [bp-00eh], strict word 00001h    ; c7 46 f2 01 00
    15264     jmp short 09cfbh                          ; eb 05
     15259    jmp short 09cf8h                          ; eb 05
    1526515260    mov word [bp-00eh], strict word 00008h    ; c7 46 f2 08 00
    1526615261    mov al, byte [bp-008h]                    ; 8a 46 f8
    1526715262    and AL, strict byte 007h                  ; 24 07
    1526815263    cmp AL, strict byte 001h                  ; 3c 01
    15269     jne short 09d22h                          ; 75 1e
     15264    jne short 09d1fh                          ; 75 1e
    1527015265    mov al, bh                                ; 88 f8
    1527115266    xor ah, ah                                ; 30 e4
    1527215267    test ax, ax                               ; 85 c0
    15273     jne short 09d22h                          ; 75 16
     15268    jne short 09d1fh                          ; 75 16
    1527415269    mov dx, strict word 0001ah                ; ba 1a 00
    1527515270    mov ax, bx                                ; 89 d8
    15276     call 09c8fh                               ; e8 7b ff
     15271    call 09c8ch                               ; e8 7b ff
    1527715272    mov dx, 00cfeh                            ; ba fe 0c
    1527815273    in AL, DX                                 ; ec
     
    1528015275    ; sub ah, ah                                ; 2a e4
    1528115276    cmp al, byte [bp-006h]                    ; 3a 46 fa
    15282     jbe short 09d22h                          ; 76 03
     15277    jbe short 09d1fh                          ; 76 03
    1528315278    mov byte [bp-006h], al                    ; 88 46 fa
    1528415279    test di, di                               ; 85 ff
    15285     je short 09d2bh                           ; 74 05
     15280    je short 09d28h                           ; 74 05
    1528615281    mov dx, strict word 00008h                ; ba 08 00
    15287     jmp short 09d2dh                          ; eb 02
     15282    jmp short 09d2ah                          ; eb 02
    1528815283    xor dx, dx                                ; 31 d2
    1528915284    mov ax, bx                                ; 89 d8
    15290     call 09c8fh                               ; e8 5d ff
     15285    call 09c8ch                               ; e8 5d ff
    1529115286    mov dx, 00cfch                            ; ba fc 0c
    1529215287    in eax, DX                                ; 66 ed
     
    1529915294    mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
    1530015295    test di, di                               ; 85 ff
    15301     je short 09d5ch                           ; 74 0f
     15296    je short 09d59h                           ; 74 0f
    1530215297    mov cx, strict word 00008h                ; b9 08 00
    1530315298    shr dx, 1                                 ; d1 ea
    1530415299    rcr ax, 1                                 ; d1 d8
    15305     loop 09d50h                               ; e2 fa
     15300    loop 09d4dh                               ; e2 fa
    1530615301    mov word [bp-00ah], ax                    ; 89 46 f6
    1530715302    mov word [bp-010h], dx                    ; 89 56 f0
    1530815303    mov ax, word [bp-010h]                    ; 8b 46 f0
    1530915304    cmp ax, word [bp-014h]                    ; 3b 46 ec
    15310     jne short 09d6ch                          ; 75 08
     15305    jne short 09d69h                          ; 75 08
    1531115306    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1531215307    cmp ax, word [bp-012h]                    ; 3b 46 ee
    15313     je short 09d72h                           ; 74 06
     15308    je short 09d6fh                           ; 74 06
    1531415309    cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
    15315     je short 09d78h                           ; 74 06
     15310    je short 09d75h                           ; 74 06
    1531615311    dec si                                    ; 4e
    1531715312    cmp si, strict byte 0ffffh                ; 83 fe ff
    15318     je short 09d8bh                           ; 74 13
     15313    je short 09d88h                           ; 74 13
    1531915314    add bx, word [bp-00eh]                    ; 03 5e f2
    1532015315    mov al, bh                                ; 88 f8
     
    1532315318    xor dh, dh                                ; 30 f6
    1532415319    cmp ax, dx                                ; 39 d0
    15325     jnbe short 09d8bh                         ; 77 03
    15326     jmp near 09cc9h                           ; e9 3e ff
     15320    jnbe short 09d88h                         ; 77 03
     15321    jmp near 09cc6h                           ; e9 3e ff
    1532715322    cmp si, strict byte 0ffffh                ; 83 fe ff
    15328     jne short 09d94h                          ; 75 04
     15323    jne short 09d91h                          ; 75 04
    1532915324    mov ax, bx                                ; 89 d8
    15330     jmp short 09d97h                          ; eb 03
     15325    jmp short 09d94h                          ; eb 03
    1533115326    mov ax, strict word 0ffffh                ; b8 ff ff
    1533215327    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1533515330    pop bp                                    ; 5d
    1533615331    retn                                      ; c3
    15337     mov bx, word [bp-0615ch]                  ; 8b 9e a4 9e
    15338     mov DH, strict byte 09eh                  ; b6 9e
    15339     retf 0dc9eh                               ; ca 9e dc
    15340     sahf                                      ; 9e
    15341     out DX, ax                                ; ef
    15342     sahf                                      ; 9e
    15343 _pci16_function:                             ; 0xf9daa LB 0x1d5
     15332    mov byte [bp-0615fh], bl                  ; 88 9e a1 9e
     15333    mov BL, strict byte 09eh                  ; b3 9e
     15334    db  0c7h, 09eh, 0d9h, 09eh, 0ech, 09eh
     15335    ; mov word [bp-06127h], 09eech              ; c7 9e d9 9e ec 9e
     15336_pci16_function:                             ; 0xf9da7 LB 0x1d5
    1534415337    push bp                                   ; 55
    1534515338    mov bp, sp                                ; 89 e5
     
    1535515348    xor ah, ah                                ; 30 e4
    1535615349    cmp bx, strict byte 00003h                ; 83 fb 03
    15357     jc short 09ddch                           ; 72 13
    15358     jbe short 09e2fh                          ; 76 64
     15350    jc short 09dd9h                           ; 72 13
     15351    jbe short 09e2ch                          ; 76 64
    1535915352    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15360     je short 09e37h                           ; 74 67
     15353    je short 09e34h                           ; 74 67
    1536115354    cmp bx, strict byte 00008h                ; 83 fb 08
    15362     jc short 09de6h                           ; 72 11
     15355    jc short 09de3h                           ; 72 11
    1536315356    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15364     jbe short 09e3ah                          ; 76 60
    15365     jmp short 09de6h                          ; eb 0a
     15357    jbe short 09e37h                          ; 76 60
     15358    jmp short 09de3h                          ; eb 0a
    1536615359    cmp bx, strict byte 00002h                ; 83 fb 02
    15367     je short 09e05h                           ; 74 24
     15360    je short 09e02h                           ; 74 24
    1536815361    cmp bx, strict byte 00001h                ; 83 fb 01
    15369     je short 09de9h                           ; 74 03
    15370     jmp near 09f48h                           ; e9 5f 01
     15362    je short 09de6h                           ; 74 03
     15363    jmp near 09f45h                           ; e9 5f 01
    1537115364    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1537215365    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1537415367    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1537515368    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15376     jmp near 09f78h                           ; e9 73 01
     15369    jmp near 09f75h                           ; e9 73 01
    1537715370    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15378     jne short 09e11h                          ; 75 06
     15371    jne short 09e0eh                          ; 75 06
    1537915372    or ah, 083h                               ; 80 cc 83
    15380     jmp near 09f71h                           ; e9 60 01
     15373    jmp near 09f6eh                           ; e9 60 01
    1538115374    mov bx, word [bp+008h]                    ; 8b 5e 08
    1538215375    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1538315376    mov ax, word [bp+018h]                    ; 8b 46 18
    1538415377    xor cx, cx                                ; 31 c9
    15385     call 09cb3h                               ; e8 94 fe
     15378    call 09cb0h                               ; e8 94 fe
    1538615379    cmp ax, strict word 0ffffh                ; 3d ff ff
    15387     jne short 09e31h                          ; 75 0d
     15380    jne short 09e2eh                          ; 75 0d
    1538815381    mov ax, word [bp+020h]                    ; 8b 46 20
    1538915382    xor ah, ah                                ; 30 e4
    1539015383    or ah, 086h                               ; 80 cc 86
    15391     jmp near 09f71h                           ; e9 42 01
    15392     jmp short 09e3ch                          ; eb 0b
     15384    jmp near 09f6eh                           ; e9 42 01
     15385    jmp short 09e39h                          ; eb 0b
    1539315386    mov word [bp+014h], ax                    ; 89 46 14
    15394     jmp near 09f78h                           ; e9 41 01
    15395     jmp near 09f03h                           ; e9 c9 00
    15396     jmp short 09e61h                          ; eb 25
     15387    jmp near 09f75h                           ; e9 41 01
     15388    jmp near 09f00h                           ; e9 c9 00
     15389    jmp short 09e5eh                          ; eb 25
    1539715390    mov bx, word [bp+008h]                    ; 8b 5e 08
    1539815391    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1539915392    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1540015393    mov cx, strict word 00001h                ; b9 01 00
    15401     call 09cb3h                               ; e8 68 fe
     15394    call 09cb0h                               ; e8 68 fe
    1540215395    cmp ax, strict word 0ffffh                ; 3d ff ff
    15403     jne short 09e5bh                          ; 75 0b
     15396    jne short 09e58h                          ; 75 0b
    1540415397    mov ax, word [bp+020h]                    ; 8b 46 20
    1540515398    xor ah, ah                                ; 30 e4
    1540615399    or ah, 086h                               ; 80 cc 86
    15407     jmp near 09f71h                           ; e9 16 01
     15400    jmp near 09f6eh                           ; e9 16 01
    1540815401    mov word [bp+014h], ax                    ; 89 46 14
    15409     jmp near 09f78h                           ; e9 17 01
     15402    jmp near 09f75h                           ; e9 17 01
    1541015403    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15411     jc short 09e6eh                           ; 72 06
     15404    jc short 09e6bh                           ; 72 06
    1541215405    or ah, 087h                               ; 80 cc 87
    15413     jmp near 09f71h                           ; e9 03 01
     15406    jmp near 09f6eh                           ; e9 03 01
    1541415407    mov dx, word [bp+004h]                    ; 8b 56 04
    1541515408    mov ax, word [bp+014h]                    ; 8b 46 14
    15416     call 09c8fh                               ; e8 18 fe
     15409    call 09c8ch                               ; e8 18 fe
    1541715410    mov bx, word [bp+020h]                    ; 8b 5e 20
    1541815411    xor bh, bh                                ; 30 ff
    1541915412    sub bx, strict byte 00008h                ; 83 eb 08
    1542015413    cmp bx, strict byte 00005h                ; 83 fb 05
    15421     jnbe short 09eech                         ; 77 68
     15414    jnbe short 09ee9h                         ; 77 68
    1542215415    sal bx, 1                                 ; d1 e3
    15423     jmp word [cs:bx-06262h]                   ; 2e ff a7 9e 9d
     15416    jmp word [cs:bx-06265h]                   ; 2e ff a7 9b 9d
    1542415417    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1542515418    xor bl, bl                                ; 30 db
     
    1543215425    or bx, ax                                 ; 09 c3
    1543315426    mov word [bp+01ch], bx                    ; 89 5e 1c
    15434     jmp short 09eech                          ; eb 48
     15427    jmp short 09ee9h                          ; eb 48
    1543515428    mov dx, word [bp+004h]                    ; 8b 56 04
    1543615429    xor dh, dh                                ; 30 f6
     
    1543915432    in ax, DX                                 ; ed
    1544015433    mov word [bp+01ch], ax                    ; 89 46 1c
    15441     jmp short 09eech                          ; eb 36
     15434    jmp short 09ee9h                          ; eb 36
    1544215435    mov dx, 00cfch                            ; ba fc 0c
    1544315436    in eax, DX                                ; 66 ed
     
    1544815441    mov word [bp+01ch], ax                    ; 89 46 1c
    1544915442    mov word [bp+01eh], dx                    ; 89 56 1e
    15450     jmp short 09eech                          ; eb 22
     15443    jmp short 09ee9h                          ; eb 22
    1545115444    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1545215445    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1545515448    add dx, 00cfch                            ; 81 c2 fc 0c
    1545615449    out DX, AL                                ; ee
    15457     jmp short 09eech                          ; eb 10
     15450    jmp short 09ee9h                          ; eb 10
    1545815451    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1545915452    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1546215455    add dx, 00cfch                            ; 81 c2 fc 0c
    1546315456    out DX, ax                                ; ef
    15464     jmp near 09f78h                           ; e9 89 00
     15457    jmp near 09f75h                           ; e9 89 00
    1546515458    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1546615459    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1547115464    ; mov ax, cx                                ; 8b c1
    1547215465    out DX, eax                               ; 66 ef
    15473     jmp short 09f78h                          ; eb 75
     15466    jmp short 09f75h                          ; eb 75
    1547415467    mov bx, word [bp+004h]                    ; 8b 5e 04
    1547515468    mov es, [bp+026h]                         ; 8e 46 26
     
    1547815471    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1547915472    cmp cx, word [es:bx]                      ; 26 3b 0f
    15480     jbe short 09f29h                          ; 76 11
     15473    jbe short 09f26h                          ; 76 11
    1548115474    mov ax, word [bp+020h]                    ; 8b 46 20
    1548215475    xor ah, ah                                ; 30 e4
     
    1548415477    mov word [bp+020h], ax                    ; 89 46 20
    1548515478    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15486     jmp short 09f3dh                          ; eb 14
     15479    jmp short 09f3ah                          ; eb 14
    1548715480    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1548815481    mov si, 0f1a0h                            ; be a0 f1
     
    1549615489    les bx, [bp-008h]                         ; c4 5e f8
    1549715490    mov word [es:bx], ax                      ; 26 89 07
    15498     jmp short 09f78h                          ; eb 30
     15491    jmp short 09f75h                          ; eb 30
    1549915492    mov bx, 00da6h                            ; bb a6 0d
    1550015493    mov cx, ds                                ; 8c d9
    1550115494    mov ax, strict word 00004h                ; b8 04 00
    15502     call 01933h                               ; e8 e0 79
     15495    call 01933h                               ; e8 e3 79
    1550315496    mov ax, word [bp+014h]                    ; 8b 46 14
    1550415497    push ax                                   ; 50
     
    1550915502    mov ax, strict word 00004h                ; b8 04 00
    1551015503    push ax                                   ; 50
    15511     call 01976h                               ; e8 10 7a
     15504    call 01976h                               ; e8 13 7a
    1551215505    add sp, strict byte 00008h                ; 83 c4 08
    1551315506    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1552115514    pop bp                                    ; 5d
    1552215515    retn                                      ; c3
    15523 pci_find_classcode_:                         ; 0xf9f7f LB 0x8
     15516pci_find_classcode_:                         ; 0xf9f7c LB 0x8
    1552415517    push bp                                   ; 55
    1552515518    mov bp, sp                                ; 89 e5
     
    1552715520    pop bp                                    ; 5d
    1552815521    retn                                      ; c3
    15529 pci_find_device_:                            ; 0xf9f87 LB 0x23
     15522pci_find_device_:                            ; 0xf9f84 LB 0x23
    1553015523    push bp                                   ; 55
    1553115524    mov bp, sp                                ; 89 e5
     
    1553915532    int 01ah                                  ; cd 1a
    1554015533    cmp ah, 000h                              ; 80 fc 00
    15541     je short 09fa0h                           ; 74 03
     15534    je short 09f9dh                           ; 74 03
    1554215535    mov bx, strict word 0ffffh                ; bb ff ff
    1554315536    mov ax, bx                                ; 89 d8
     
    1554815541    pop bp                                    ; 5d
    1554915542    retn                                      ; c3
    15550 pci_read_config_byte_:                       ; 0xf9faa LB 0x27
     15543pci_read_config_byte_:                       ; 0xf9fa7 LB 0x27
    1555115544    push bp                                   ; 55
    1555215545    mov bp, sp                                ; 89 e5
     
    1557115564    pop bp                                    ; 5d
    1557215565    retn                                      ; c3
    15573 pci_read_config_word_:                       ; 0xf9fd1 LB 0x25
     15566pci_read_config_word_:                       ; 0xf9fce LB 0x25
    1557415567    push bp                                   ; 55
    1557515568    mov bp, sp                                ; 89 e5
     
    1559315586    pop bp                                    ; 5d
    1559415587    retn                                      ; c3
    15595 pci_read_config_dword_:                      ; 0xf9ff6 LB 0x3f
     15588pci_read_config_dword_:                      ; 0xf9ff3 LB 0x3f
    1559615589    push bp                                   ; 55
    1559715590    mov bp, sp                                ; 89 e5
     
    1560815601    int 01ah                                  ; cd 1a
    1560915602    test cx, cx                               ; 85 c9
    15610     jne short 0a026h                          ; 75 14
     15603    jne short 0a023h                          ; 75 14
    1561115604    mov al, byte [bp-006h]                    ; 8a 46 fa
    1561215605    xor ah, ah                                ; 30 e4
     
    1561815611    int 01ah                                  ; cd 1a
    1561915612    test cx, cx                               ; 85 c9
    15620     je short 0a02bh                           ; 74 05
     15613    je short 0a028h                           ; 74 05
    1562115614    mov ax, strict word 00001h                ; b8 01 00
    15622     jmp short 0a02dh                          ; eb 02
     15615    jmp short 0a02ah                          ; eb 02
    1562315616    xor ax, ax                                ; 31 c0
    1562415617    cwd                                       ; 99
     
    1562815621    pop bp                                    ; 5d
    1562915622    retn                                      ; c3
    15630 pci_write_config_word_:                      ; 0xfa035 LB 0x1e
     15623pci_write_config_word_:                      ; 0xfa032 LB 0x1e
    1563115624    push bp                                   ; 55
    1563215625    mov bp, sp                                ; 89 e5
     
    1564515638    pop bp                                    ; 5d
    1564615639    retn                                      ; c3
    15647 vds_is_present_:                             ; 0xfa053 LB 0x1d
     15640vds_is_present_:                             ; 0xfa050 LB 0x1d
    1564815641    push bx                                   ; 53
    1564915642    push bp                                   ; 55
     
    1565315646    mov es, ax                                ; 8e c0
    1565415647    test byte [es:bx], 020h                   ; 26 f6 07 20
    15655     je short 0a06bh                           ; 74 06
     15648    je short 0a068h                           ; 74 06
    1565615649    mov ax, strict word 00001h                ; b8 01 00
    1565715650    pop bp                                    ; 5d
     
    1566215655    pop bx                                    ; 5b
    1566315656    retn                                      ; c3
    15664 vds_real_to_lin_:                            ; 0xfa070 LB 0x1e
     15657vds_real_to_lin_:                            ; 0xfa06d LB 0x1e
    1566515658    push bx                                   ; 53
    1566615659    push cx                                   ; 51
     
    1567315666    sal ax, 1                                 ; d1 e0
    1567415667    rcl dx, 1                                 ; d1 d2
    15675     loop 0a07eh                               ; e2 fa
     15668    loop 0a07bh                               ; e2 fa
    1567615669    xor cx, cx                                ; 31 c9
    1567715670    add ax, bx                                ; 01 d8
     
    1568115674    pop bx                                    ; 5b
    1568215675    retn                                      ; c3
    15683 vds_build_sg_list_:                          ; 0xfa08e LB 0x77
     15676vds_build_sg_list_:                          ; 0xfa08b LB 0x77
    1568415677    push bp                                   ; 55
    1568515678    mov bp, sp                                ; 89 e5
     
    1569515688    mov bx, word [bp+006h]                    ; 8b 5e 06
    1569615689    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15697     call 0a070h                               ; e8 c3 ff
     15690    call 0a06dh                               ; e8 c3 ff
    1569815691    mov es, si                                ; 8e c6
    1569915692    mov word [es:di+004h], ax                 ; 26 89 45 04
    1570015693    mov word [es:di+006h], dx                 ; 26 89 55 06
    1570115694    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15702     call 0a053h                               ; e8 93 ff
     15695    call 0a050h                               ; e8 93 ff
    1570315696    test ax, ax                               ; 85 c0
    15704     je short 0a0d5h                           ; 74 11
     15697    je short 0a0d2h                           ; 74 11
    1570515698    mov es, si                                ; 8e c6
    1570615699    mov ax, 08105h                            ; b8 05 81
    1570715700    mov dx, strict word 00000h                ; ba 00 00
    1570815701    int 04bh                                  ; cd 4b
    15709     jc short 0a0d2h                           ; 72 02
     15702    jc short 0a0cfh                           ; 72 02
    1571015703    db  032h, 0c0h
    1571115704    ; xor al, al                                ; 32 c0
    1571215705    cbw                                       ; 98
    15713     jmp short 0a0fch                          ; eb 27
     15706    jmp short 0a0f9h                          ; eb 27
    1571415707    mov es, si                                ; 8e c6
    1571515708    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1572815721    pop bp                                    ; 5d
    1572915722    retn 00004h                               ; c2 04 00
    15730 vds_free_sg_list_:                           ; 0xfa105 LB 0x3b
     15723vds_free_sg_list_:                           ; 0xfa102 LB 0x2e
    1573115724    push bp                                   ; 55
    1573215725    mov bp, sp                                ; 89 e5
     
    1573415727    push di                                   ; 57
    1573515728    mov bx, ax                                ; 89 c3
    15736     call 0a053h                               ; e8 44 ff
     15729    call 0a050h                               ; e8 44 ff
    1573715730    test ax, ax                               ; 85 c0
    15738     je short 0a124h                           ; 74 11
     15731    je short 0a121h                           ; 74 11
    1573915732    mov di, bx                                ; 89 df
    1574015733    mov es, dx                                ; 8e c2
     
    1574215735    mov dx, strict word 00000h                ; ba 00 00
    1574315736    int 04bh                                  ; cd 4b
    15744     jc short 0a123h                           ; 72 02
     15737    jc short 0a120h                           ; 72 02
    1574515738    db  032h, 0c0h
    1574615739    ; xor al, al                                ; 32 c0
     
    1575315746    pop bp                                    ; 5d
    1575415747    retn                                      ; c3
    15755     times 0xd db 0
    15756 __U4M:                                       ; 0xfa140 LB 0x20
     15748__U4M:                                       ; 0xfa130 LB 0x20
    1575715749    pushfw                                    ; 9c
    1575815750    push si                                   ; 56
     
    1578115773    retn                                      ; c3
    1578215774    times 0x4 db 0
    15783 __U4D:                                       ; 0xfa160 LB 0x30
     15775__U4D:                                       ; 0xfa150 LB 0x30
    1578415776    pushfw                                    ; 9c
    1578515777    push DS                                   ; 1e
     
    1579615788    push dx                                   ; 52
    1579715789    push ax                                   ; 50
    15798     call 0a245h                               ; e8 d0 00
     15790    call 0a235h                               ; e8 d0 00
    1579915791    mov cx, word [bp-002h]                    ; 8b 4e fe
    1580015792    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1580715799    retn                                      ; c3
    1580815800    times 0xe db 0
    15809 __U8RS:                                      ; 0xfa190 LB 0x10
     15801__U8RS:                                      ; 0xfa180 LB 0x10
    1581015802    test si, si                               ; 85 f6
    15811     je short 0a19fh                           ; 74 0b
     15803    je short 0a18fh                           ; 74 0b
    1581215804    shr ax, 1                                 ; d1 e8
    1581315805    rcr bx, 1                                 ; d1 db
     
    1581515807    rcr dx, 1                                 ; d1 da
    1581615808    dec si                                    ; 4e
    15817     jne short 0a194h                          ; 75 f5
     15809    jne short 0a184h                          ; 75 f5
    1581815810    retn                                      ; c3
    15819 __U8LS:                                      ; 0xfa1a0 LB 0x10
     15811__U8LS:                                      ; 0xfa190 LB 0x10
    1582015812    test si, si                               ; 85 f6
    15821     je short 0a1afh                           ; 74 0b
     15813    je short 0a19fh                           ; 74 0b
    1582215814    sal dx, 1                                 ; d1 e2
    1582315815    rcl cx, 1                                 ; d1 d1
     
    1582515817    rcl ax, 1                                 ; d1 d0
    1582615818    dec si                                    ; 4e
    15827     jne short 0a1a4h                          ; 75 f5
     15819    jne short 0a194h                          ; 75 f5
    1582815820    retn                                      ; c3
    15829 _fmemset_:                                   ; 0xfa1b0 LB 0x10
     15821_fmemset_:                                   ; 0xfa1a0 LB 0x10
    1583015822    push di                                   ; 57
    1583115823    mov es, dx                                ; 8e c2
     
    1583815830    retn                                      ; c3
    1583915831    times 0x3 db 0
    15840 _fmemcpy_:                                   ; 0xfa1c0 LB 0x3a
     15832_fmemcpy_:                                   ; 0xfa1b0 LB 0x3a
    1584115833    push bp                                   ; 55
    1584215834    db  08bh, 0ech
     
    1586315855    add byte [bx+si], al                      ; 00 00
    1586415856    add byte [bx+si], al                      ; 00 00
    15865     adc byte [bp+si-05deeh], ah               ; 10 a2 12 a2
    15866     push SS                                   ; 16
    15867     mov byte [0a216h], AL                     ; a2 16 a2
    15868     push SS                                   ; 16
    15869     mov byte [0a218h], AL                     ; a2 18 a2
    15870     sbb byte [bp+si-05de6h], ah               ; 18 a2 1a a2
    15871     push DS                                   ; 1e
    15872     mov byte [0a21eh], AL                     ; a2 1e a2
    15873     and byte [bp+si-05ddbh], ah               ; 20 a2 25 a2
    15874     daa                                       ; 27
     15857    add byte [bp+si-05dfeh], ah               ; 00 a2 02 a2
     15858    push ES                                   ; 06
     15859    mov byte [0a206h], AL                     ; a2 06 a2
     15860    push ES                                   ; 06
     15861    mov byte [0a208h], AL                     ; a2 08 a2
     15862    or byte [bp+si-05df6h], ah                ; 08 a2 0a a2
     15863    push CS                                   ; 0e
     15864    mov byte [0a20eh], AL                     ; a2 0e a2
     15865    adc byte [bp+si-05debh], ah               ; 10 a2 15 a2
     15866    pop SS                                    ; 17
    1587515867    db  0a2h
    15876 apm_worker:                                  ; 0xfa1fa LB 0x3a
     15868apm_worker:                                  ; 0xfa1ea LB 0x3a
    1587715869    sti                                       ; fb
    1587815870    push ax                                   ; 50
     
    1588615878    pop ax                                    ; 58
    1588715879    mov AH, strict byte 053h                  ; b4 53
    15888     jnc short 0a230h                          ; 73 25
    15889     jmp word [cs:bp-05e20h]                   ; 2e ff a6 e0 a1
    15890     jmp short 0a22eh                          ; eb 1c
     15880    jnc short 0a220h                          ; 73 25
     15881    jmp word [cs:bp-05e30h]                   ; 2e ff a6 d0 a1
     15882    jmp short 0a21eh                          ; eb 1c
    1589115883    sti                                       ; fb
    1589215884    hlt                                       ; f4
    15893     jmp short 0a22eh                          ; eb 18
    15894     jmp short 0a22eh                          ; eb 16
    15895     jmp short 0a230h                          ; eb 16
     15885    jmp short 0a21eh                          ; eb 18
     15886    jmp short 0a21eh                          ; eb 16
     15887    jmp short 0a220h                          ; eb 16
    1589615888    mov AH, strict byte 080h                  ; b4 80
    15897     jmp short 0a232h                          ; eb 14
    15898     jmp short 0a230h                          ; eb 10
     15889    jmp short 0a222h                          ; eb 14
     15890    jmp short 0a220h                          ; eb 10
    1589915891    mov ax, 00102h                            ; b8 02 01
    15900     jmp short 0a22eh                          ; eb 09
    15901     jmp short 0a22eh                          ; eb 07
     15892    jmp short 0a21eh                          ; eb 09
     15893    jmp short 0a21eh                          ; eb 07
    1590215894    mov BL, strict byte 000h                  ; b3 00
    1590315895    mov cx, strict word 00000h                ; b9 00 00
    15904     jmp short 0a22eh                          ; eb 00
     15896    jmp short 0a21eh                          ; eb 00
    1590515897    clc                                       ; f8
    1590615898    retn                                      ; c3
     
    1590815900    stc                                       ; f9
    1590915901    retn                                      ; c3
    15910 apm_pm16_entry:                              ; 0xfa234 LB 0x11
     15902apm_pm16_entry:                              ; 0xfa224 LB 0x11
    1591115903    mov AH, strict byte 002h                  ; b4 02
    1591215904    push DS                                   ; 1e
     
    1591615908    add bp, strict byte 00008h                ; 83 c5 08
    1591715909    mov ds, bp                                ; 8e dd
    15918     call 0a1fah                               ; e8 b8 ff
     15910    call 0a1eah                               ; e8 b8 ff
    1591915911    pop bp                                    ; 5d
    1592015912    pop DS                                    ; 1f
    1592115913    retf                                      ; cb
    15922 _DoUInt32Div:                                ; 0xfa245 LB 0x26b
     15914_DoUInt32Div:                                ; 0xfa235 LB 0x26b
    1592315915    push bp                                   ; 55
    1592415916    mov bp, sp                                ; 89 e5
     
    1593815930    mov [bp-006h], ds                         ; 8c 5e fa
    1593915931    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15940     jne short 0a295h                          ; 75 22
     15932    jne short 0a285h                          ; 75 22
    1594115933    mov ax, word [bx]                         ; 8b 07
    1594215934    test ax, ax                               ; 85 c0
    15943     je short 0a292h                           ; 74 19
     15935    je short 0a282h                           ; 74 19
    1594415936    cmp ax, strict word 00001h                ; 3d 01 00
    15945     jne short 0a295h                          ; 75 17
     15937    jne short 0a285h                          ; 75 17
    1594615938    xor ax, ax                                ; 31 c0
    1594715939    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1595115943    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1595215944    mov word [bp+006h], ax                    ; 89 46 06
    15953     jmp near 0a49dh                           ; e9 08 02
     15945    jmp near 0a48dh                           ; e9 08 02
    1595415946    lds bx, [bp-00ch]                         ; c5 5e f4
    1595515947    mov ax, word [bx+002h]                    ; 8b 47 02
    1595615948    mov ds, [bp-006h]                         ; 8e 5e fa
    1595715949    cmp ax, word [si+002h]                    ; 3b 44 02
    15958     je short 0a2bbh                           ; 74 18
     15950    je short 0a2abh                           ; 74 18
    1595915951    mov ds, [bp-00ah]                         ; 8e 5e f6
    1596015952    mov ax, word [bx+002h]                    ; 8b 47 02
    1596115953    mov ds, [bp-006h]                         ; 8e 5e fa
    1596215954    cmp ax, word [si+002h]                    ; 3b 44 02
    15963     jbe short 0a2b6h                          ; 76 05
     15955    jbe short 0a2a6h                          ; 76 05
    1596415956    mov ax, strict word 00001h                ; b8 01 00
    15965     jmp short 0a2dch                          ; eb 26
     15957    jmp short 0a2cch                          ; eb 26
    1596615958    mov ax, strict word 0ffffh                ; b8 ff ff
    15967     jmp short 0a2dch                          ; eb 21
     15959    jmp short 0a2cch                          ; eb 21
    1596815960    mov ds, [bp-00ah]                         ; 8e 5e f6
    1596915961    mov ax, word [bx]                         ; 8b 07
    1597015962    mov ds, [bp-006h]                         ; 8e 5e fa
    1597115963    cmp ax, word [si]                         ; 3b 04
    15972     je short 0a2dah                           ; 74 13
     15964    je short 0a2cah                           ; 74 13
    1597315965    mov ds, [bp-00ah]                         ; 8e 5e f6
    1597415966    mov ax, word [bx]                         ; 8b 07
    1597515967    mov ds, [bp-006h]                         ; 8e 5e fa
    1597615968    cmp ax, word [si]                         ; 3b 04
    15977     jbe short 0a2d5h                          ; 76 02
    15978     jmp short 0a2b1h                          ; eb dc
     15969    jbe short 0a2c5h                          ; 76 02
     15970    jmp short 0a2a1h                          ; eb dc
    1597915971    mov ax, strict word 0ffffh                ; b8 ff ff
    15980     jmp short 0a2dch                          ; eb 02
     15972    jmp short 0a2cch                          ; eb 02
    1598115973    xor ax, ax                                ; 31 c0
    1598215974    test ax, ax                               ; 85 c0
    15983     jnl short 0a2feh                          ; 7d 1e
     15975    jnl short 0a2eeh                          ; 7d 1e
    1598415976    lds bx, [bp-00ch]                         ; c5 5e f4
    1598515977    mov ax, word [bx]                         ; 8b 07
     
    1599115983    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1599215984    mov word [bx], strict word 00000h         ; c7 07 00 00
    15993     jmp short 0a292h                          ; eb 94
    15994     jne short 0a315h                          ; 75 15
     15985    jmp short 0a282h                          ; eb 94
     15986    jne short 0a305h                          ; 75 15
    1599515987    mov ds, [bp-008h]                         ; 8e 5e f8
    1599615988    mov word [di+002h], ax                    ; 89 45 02
     
    1599915991    mov word [bx], strict word 00001h         ; c7 07 01 00
    1600015992    mov word [bx+002h], ax                    ; 89 47 02
    16001     jmp near 0a49dh                           ; e9 88 01
     15993    jmp near 0a48dh                           ; e9 88 01
    1600215994    lds bx, [bp-00ch]                         ; c5 5e f4
    1600315995    mov ax, word [bx+002h]                    ; 8b 47 02
    1600415996    test ax, ax                               ; 85 c0
    16005     je short 0a330h                           ; 74 11
     15997    je short 0a320h                           ; 74 11
    1600615998    push ax                                   ; 50
    1600715999    mov ax, 0f000h                            ; b8 00 f0
    1600816000    mov ds, ax                                ; 8e d8
    16009     call 0a4b0h                               ; e8 88 01
     16001    call 0a4a0h                               ; e8 88 01
    1601016002    add sp, strict byte 00002h                ; 83 c4 02
    1601116003    add ax, strict word 00010h                ; 05 10 00
    16012     jmp short 0a33dh                          ; eb 0d
     16004    jmp short 0a32dh                          ; eb 0d
    1601316005    push word [bx]                            ; ff 37
    1601416006    mov ax, 0f000h                            ; b8 00 f0
    1601516007    mov ds, ax                                ; 8e d8
    16016     call 0a4b0h                               ; e8 76 01
     16008    call 0a4a0h                               ; e8 76 01
    1601716009    add sp, strict byte 00002h                ; 83 c4 02
    1601816010    mov word [bp-014h], ax                    ; 89 46 ec
     
    1602016012    mov ax, word [si+002h]                    ; 8b 44 02
    1602116013    test ax, ax                               ; 85 c0
    16022     je short 0a35bh                           ; 74 11
     16014    je short 0a34bh                           ; 74 11
    1602316015    push ax                                   ; 50
    1602416016    mov ax, 0f000h                            ; b8 00 f0
    1602516017    mov ds, ax                                ; 8e d8
    16026     call 0a4b0h                               ; e8 5d 01
     16018    call 0a4a0h                               ; e8 5d 01
    1602716019    add sp, strict byte 00002h                ; 83 c4 02
    1602816020    add ax, strict word 00010h                ; 05 10 00
    16029     jmp short 0a368h                          ; eb 0d
     16021    jmp short 0a358h                          ; eb 0d
    1603016022    push word [si]                            ; ff 34
    1603116023    mov ax, 0f000h                            ; b8 00 f0
    1603216024    mov ds, ax                                ; 8e d8
    16033     call 0a4b0h                               ; e8 4b 01
     16025    call 0a4a0h                               ; e8 4b 01
    1603416026    add sp, strict byte 00002h                ; 83 c4 02
    1603516027    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1604216034    mov word [bp-016h], ax                    ; 89 46 ea
    1604316035    test dx, dx                               ; 85 d2
    16044     je short 0a3d8h                           ; 74 56
     16036    je short 0a3c8h                           ; 74 56
    1604516037    mov cx, dx                                ; 89 d1
    1604616038    xor ch, dh                                ; 30 f5
     
    1604816040    mov ax, word [si]                         ; 8b 04
    1604916041    mov dx, word [si+002h]                    ; 8b 54 02
    16050     jcxz 0a396h                               ; e3 06
     16042    jcxz 0a386h                               ; e3 06
    1605116043    sal ax, 1                                 ; d1 e0
    1605216044    rcl dx, 1                                 ; d1 d2
    16053     loop 0a390h                               ; e2 fa
     16045    loop 0a380h                               ; e2 fa
    1605416046    mov word [bp-018h], ax                    ; 89 46 e8
    1605516047    mov word [bp-016h], dx                    ; 89 56 ea
     
    1605716049    lds bx, [bp-00ch]                         ; c5 5e f4
    1605816050    cmp ax, word [bx+002h]                    ; 3b 47 02
    16059     jnbe short 0a3b6h                         ; 77 0f
     16051    jnbe short 0a3a6h                         ; 77 0f
    1606016052    mov ax, word [bp-016h]                    ; 8b 46 ea
    1606116053    cmp ax, word [bx+002h]                    ; 3b 47 02
    16062     jne short 0a3bah                          ; 75 0b
     16054    jne short 0a3aah                          ; 75 0b
    1606316055    mov ax, word [bp-018h]                    ; 8b 46 e8
    1606416056    cmp ax, word [bx]                         ; 3b 07
    16065     jbe short 0a3bah                          ; 76 04
     16057    jbe short 0a3aah                          ; 76 04
    1606616058    mov AL, strict byte 001h                  ; b0 01
    16067     jmp short 0a3bch                          ; eb 02
     16059    jmp short 0a3ach                          ; eb 02
    1606816060    xor al, al                                ; 30 c0
    1606916061    test al, al                               ; 84 c0
    16070     je short 0a3e3h                           ; 74 23
     16062    je short 0a3d3h                           ; 74 23
    1607116063    shr word [bp-016h], 1                     ; d1 6e ea
    1607216064    rcr word [bp-018h], 1                     ; d1 5e e8
    1607316065    dec word [bp-012h]                        ; ff 4e ee
    16074     jmp short 0a3e3h                          ; eb 18
     16066    jmp short 0a3d3h                          ; eb 18
    1607516067    mov cx, strict word 0001fh                ; b9 1f 00
    1607616068    sal word [bp-018h], 1                     ; d1 66 e8
    1607716069    rcl word [bp-016h], 1                     ; d1 56 ea
    16078     loop 0a3ceh                               ; e2 f8
    16079     jmp short 0a3c6h                          ; eb ee
     16070    loop 0a3beh                               ; e2 f8
     16071    jmp short 0a3b6h                          ; eb ee
    1608016072    mov ax, word [si]                         ; 8b 04
    1608116073    mov word [bp-018h], ax                    ; 89 46 e8
     
    1609416086    mov ds, [bp-006h]                         ; 8e 5e fa
    1609516087    cmp ax, word [si+002h]                    ; 3b 44 02
    16096     jnbe short 0a40fh                         ; 77 06
    16097     jne short 0a413h                          ; 75 08
     16088    jnbe short 0a3ffh                         ; 77 06
     16089    jne short 0a403h                          ; 75 08
    1609816090    cmp dx, word [si]                         ; 3b 14
    16099     jc short 0a413h                           ; 72 04
     16091    jc short 0a403h                           ; 72 04
    1610016092    mov AL, strict byte 001h                  ; b0 01
    16101     jmp short 0a415h                          ; eb 02
     16093    jmp short 0a405h                          ; eb 02
    1610216094    xor al, al                                ; 30 c0
    1610316095    test al, al                               ; 84 c0
    16104     je short 0a47ah                           ; 74 61
     16096    je short 0a46ah                           ; 74 61
    1610516097    mov ds, [bp-008h]                         ; 8e 5e f8
    1610616098    mov ax, word [di+002h]                    ; 8b 45 02
    1610716099    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16108     jnbe short 0a430h                         ; 77 0c
     16100    jnbe short 0a420h                         ; 77 0c
    1610916101    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16110     jne short 0a434h                          ; 75 0b
     16102    jne short 0a424h                          ; 75 0b
    1611116103    mov ax, word [di]                         ; 8b 05
    1611216104    cmp ax, word [bp-018h]                    ; 3b 46 e8
    16113     jc short 0a434h                           ; 72 04
     16105    jc short 0a424h                           ; 72 04
    1611416106    mov AL, strict byte 001h                  ; b0 01
    16115     jmp short 0a436h                          ; eb 02
     16107    jmp short 0a426h                          ; eb 02
    1611616108    xor al, al                                ; 30 c0
    1611716109    test al, al                               ; 84 c0
    16118     je short 0a460h                           ; 74 26
     16110    je short 0a450h                           ; 74 26
    1611916111    mov ax, word [bp-018h]                    ; 8b 46 e8
    1612016112    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1612516117    xor dx, dx                                ; 31 d2
    1612616118    mov cx, word [bp-012h]                    ; 8b 4e ee
    16127     jcxz 0a458h                               ; e3 06
     16119    jcxz 0a448h                               ; e3 06
    1612816120    sal ax, 1                                 ; d1 e0
    1612916121    rcl dx, 1                                 ; d1 d2
    16130     loop 0a452h                               ; e2 fa
     16122    loop 0a442h                               ; e2 fa
    1613116123    lds bx, [bp-010h]                         ; c5 5e f0
    1613216124    or word [bx], ax                          ; 09 07
     
    1613716129    mov ds, [bp-006h]                         ; 8e 5e fa
    1613816130    cmp ax, word [si+002h]                    ; 3b 44 02
    16139     jc short 0a476h                           ; 72 06
    16140     jne short 0a47ch                          ; 75 0a
     16131    jc short 0a466h                           ; 72 06
     16132    jne short 0a46ch                          ; 75 0a
    1614116133    cmp dx, word [si]                         ; 3b 14
    16142     jnc short 0a47ch                          ; 73 06
     16134    jnc short 0a46ch                          ; 73 06
    1614316135    mov AL, strict byte 001h                  ; b0 01
    16144     jmp short 0a47eh                          ; eb 04
    16145     jmp short 0a49dh                          ; eb 21
     16136    jmp short 0a46eh                          ; eb 04
     16137    jmp short 0a48dh                          ; eb 21
    1614616138    xor al, al                                ; 30 c0
    1614716139    test al, al                               ; 84 c0
    16148     je short 0a491h                           ; 74 0f
    16149     jmp short 0a49dh                          ; eb 19
     16140    je short 0a481h                           ; 74 0f
     16141    jmp short 0a48dh                          ; eb 19
    1615016142    mov cx, strict word 0001fh                ; b9 1f 00
    1615116143    sal word [bp-018h], 1                     ; d1 66 e8
    1615216144    rcl word [bp-016h], 1                     ; d1 56 ea
    16153     loop 0a487h                               ; e2 f8
    16154     jmp short 0a497h                          ; eb 06
     16145    loop 0a477h                               ; e2 f8
     16146    jmp short 0a487h                          ; eb 06
    1615516147    shr word [bp-016h], 1                     ; d1 6e ea
    1615616148    rcr word [bp-018h], 1                     ; d1 5e e8
    1615716149    dec word [bp-012h]                        ; ff 4e ee
    16158     jmp near 0a419h                           ; e9 7c ff
     16150    jmp near 0a409h                           ; e9 7c ff
    1615916151    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1616016152    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1616516157    retn                                      ; c3
    1616616158    times 0x6 db 0
    16167 _ASMBitLastSetU16:                           ; 0xfa4b0 LB 0x18
     16159_ASMBitLastSetU16:                           ; 0xfa4a0 LB 0x18
    1616816160    push bp                                   ; 55
    1616916161    db  08bh, 0ech
     
    1617116163    mov cx, word [bp+004h]                    ; 8b 4e 04
    1617216164    test cx, cx                               ; 85 c9
    16173     je short 0a4c4h                           ; 74 0a
     16165    je short 0a4b4h                           ; 74 0a
    1617416166    mov ax, strict word 00010h                ; b8 10 00
    1617516167    sal cx, 1                                 ; d1 e1
    16176     jc short 0a4c6h                           ; 72 05
     16168    jc short 0a4b6h                           ; 72 05
    1617716169    dec ax                                    ; 48
    16178     jmp short 0a4bdh                          ; eb f9
     16170    jmp short 0a4adh                          ; eb f9
    1617916171    db  033h, 0c0h
    1618016172    ; xor ax, ax                                ; 33 c0
     
    1618216174    retn                                      ; c3
    1618316175
    16184   ; Padding 0x3538 bytes at 0xfa4c8
    16185   times 13624 db 0
     16176  ; Padding 0x3548 bytes at 0xfa4b8
     16177  times 13640 db 0
    1618616178
    1618716179section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1623016222    add bp, strict byte 00008h                ; 83 c5 08
    1623116223    push ebp                                  ; 66 55
    16232     mov bp, 0a236h                            ; bd 36 a2
     16224    mov bp, 0a226h                            ; bd 26 a2
    1623316225    add byte [bx+si], al                      ; 00 00
    1623416226    push ebp                                  ; 66 55
     
    1669416686    cmp AL, strict byte 009h                  ; 3c 09
    1669516687    jne short 0e0b6h                          ; 75 03
    16696     jmp near 0e366h                           ; e9 b0 02
     16688    jmp near 0e368h                           ; e9 b2 02
    1669716689    cmp AL, strict byte 005h                  ; 3c 05
    1669816690    je short 0e044h                           ; 74 8a
     
    1691816910    int 002h                                  ; cd 02
    1691916911    iret                                      ; cf
    16920 hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     16912hard_drive_post:                             ; 0xfe2d2 LB 0xbf
    1692116913    db  033h, 0c0h
    1692216914    ; xor ax, ax                                ; 33 c0
     
    1696016952    call 01cc5h                               ; e8 89 39
    1696116953    call 02154h                               ; e8 15 3e
    16962     call 09a27h                               ; e8 e5 b6
    16963     call 08871h                               ; e8 2c a5
    16964     call 0ed4ch                               ; e8 04 0a
    16965     call 0e2d2h                               ; e8 87 ff
     16954    sti                                       ; fb
     16955    call 09a24h                               ; e8 e1 b6
     16956    cli                                       ; fa
     16957    call 08871h                               ; e8 2a a5
     16958    call 0ed4ch                               ; e8 02 0a
     16959    call 0e2d2h                               ; e8 85 ff
    1696616960    push CS                                   ; 0e
    1696716961    pop DS                                    ; 1f
     
    1696916963    mov ax, 0c800h                            ; b8 00 c8
    1697016964    mov dx, 0f000h                            ; ba 00 f0
    16971     call 01600h                               ; e8 a9 32
    16972     call 01799h                               ; e8 3f 34
    16973     call 03c35h                               ; e8 d8 58
     16965    call 01600h                               ; e8 a7 32
     16966    call 01799h                               ; e8 3d 34
     16967    call 03c35h                               ; e8 d6 58
    1697416968    sti                                       ; fb
    1697516969    int 019h                                  ; cd 19
    1697616970    sti                                       ; fb
    1697716971    hlt                                       ; f4
    16978     jmp short 0e361h                          ; eb fd
     16972    jmp short 0e363h                          ; eb fd
    1697916973    cli                                       ; fa
    1698016974    hlt                                       ; f4
     
    1699816992    sti                                       ; fb
    1699916993    retf 00002h                               ; ca 02 00
    17000 biosorg_check_before_or_at_0E3FCh:           ; 0xfe38f LB 0x6f
    17001     times 0x6d db 0
     16994biosorg_check_before_or_at_0E3FCh:           ; 0xfe391 LB 0x6d
     16995    times 0x6b db 0
    1700216996    db  'XM'
    1700316997int13_handler:                               ; 0xfe3fe LB 0x3
     
    1792017914    popfw                                     ; 9d
    1792117915    jmp short 0f8afh                          ; eb 1f
    17922     call 09b99h                               ; e8 06 a3
     17916    call 09b96h                               ; e8 03 a3
    1792317917    jmp short 0f883h                          ; eb ee
    1792417918int15_handler_mouse:                         ; 0xff895 LB 0x5
     
    1824418238cpu_reset:                                   ; 0xffff0 LB 0x10
    1824518239    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    18246     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0f8h
     18240    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0a9h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum

    r68421 r68773  
    1 7b0984c1dd5256095d590debedcd6744 *VBoxPcBios8086.rom
     1a7045e967764393f3f2e415494394823 *VBoxPcBios8086.rom
Note: See TracChangeset for help on using the changeset viewer.

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