VirtualBox

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


Ignore:
Timestamp:
Jul 5, 2017 4:04:39 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
116732
Message:

Devices/PC/BIOS: updated alternative sources

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

Legend:

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

    r67789 r67807  
    988988    db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
    989989_pktacc:                                     ; 0xf006a LB 0xc
    990     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 080h, 081h, 0e6h, 090h
     990    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 080h, 081h, 06eh, 091h
    991991_softrst:                                    ; 0xf0076 LB 0xc
    992992    db  000h, 000h, 000h, 000h, 000h, 000h, 089h, 02dh, 04dh, 03bh, 04dh, 03bh
    993993_dskacc:                                     ; 0xf0082 LB 0x2e
    994994    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0f0h, 029h, 0a5h, 02ah, 000h, 000h, 000h, 000h
    995     db  0c0h, 07fh, 0a0h, 080h, 0b8h, 08fh, 060h, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     995    db  0c0h, 07fh, 0a0h, 080h, 040h, 090h, 0e8h, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
    996996    db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
    997997
    998 section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
     998section CONST progbits vstart=0xb0 align=1 ; size=0xd40 class=DATA group=DGROUP
    999999    db   'NMI Handler called', 00ah, 000h
    10001000    db   'INT18: BOOT FAILURE', 00ah, 000h
     
    11011101    db   'Disk %d has an unsupported sector size of %u', 00ah, 000h
    11021102    db   'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
    1103     db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
     1103    db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h
     1104    db   'scsi_pci_init', 000h
     1105    db   '%s: Adapter %x:%x not found, how come?!', 00ah, 000h
     1106    db   '%s: Adapter %x:%x found at %x, enabling BM', 00ah, 000h
    11041107    db   'ahci_read_sectors', 000h
    11051108    db   '%s: device_id out of range %d', 00ah, 000h
     
    11141117    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    11151118
    1116 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
    1117 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
     1119section CONST2 progbits vstart=0xdf0 align=1 ; size=0x3fa class=DATA group=DGROUP
     1120_bios_cvs_version_string:                    ; 0xf0df0 LB 0x12
    11181121    db  'VirtualBox 5.1.51', 000h
    1119 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     1122_bios_prefix_string:                         ; 0xf0e02 LB 0x8
    11201123    db  'BIOS: ', 000h, 000h
    1121 _isotag:                                     ; 0xf0da8 LB 0x6
     1124_isotag:                                     ; 0xf0e0a LB 0x6
    11221125    db  'CD001', 000h
    1123 _eltorito:                                   ; 0xf0dae LB 0x18
     1126_eltorito:                                   ; 0xf0e10 LB 0x18
    11241127    db  'EL TORITO SPECIFICATION', 000h
    1125 _drivetypes:                                 ; 0xf0dc6 LB 0x28
     1128_drivetypes:                                 ; 0xf0e28 LB 0x28
    11261129    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    11271130    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    11281131    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    1129 _scan_to_scanascii:                          ; 0xf0dee LB 0x37a
     1132_scan_to_scanascii:                          ; 0xf0e50 LB 0x37a
    11301133    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    11311134    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    11841187    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    11851188    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    1186 _panic_msg_keyb_buffer_full:                 ; 0xf1168 LB 0x20
     1189_panic_msg_keyb_buffer_full:                 ; 0xf11ca LB 0x20
    11871190    db  '%s: keyboard input buffer full', 00ah, 000h
    11881191
    1189   ; Padding 0x478 bytes at 0xf1188
    1190   times 1144 db 0
     1192  ; Padding 0x416 bytes at 0xf11ea
     1193  times 1046 db 0
    11911194
    1192 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8d98 class=CODE group=AUTO
     1195section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e48 class=CODE group=AUTO
    11931196rom_scan_:                                   ; 0xf1600 LB 0x50
    11941197    push bp                                   ; 55
     
    14111414    push bp                                   ; 55
    14121415    mov bp, sp                                ; 89 e5
    1413     mov bx, 00da0h                            ; bb a0 0d
     1416    mov bx, 00e02h                            ; bb 02 0e
    14141417    mov cx, ds                                ; 8c d9
    14151418    mov ax, strict word 00004h                ; b8 04 00
    14161419    call 01923h                               ; e8 a8 01
    1417     push 00d8eh                               ; 68 8e 0d
     1420    push 00df0h                               ; 68 f0 0d
    14181421    push 000d9h                               ; 68 d9 00
    14191422    push strict byte 00004h                   ; 6a 04
     
    15851588    mov bx, strict word 0000ah                ; bb 0a 00
    15861589    xor cx, cx                                ; 31 c9
    1587     call 0a030h                               ; e8 63 87
     1590    call 0a0e0h                               ; e8 13 88
    15881591    mov word [bp-008h], ax                    ; 89 46 f8
    15891592    mov cx, dx                                ; 89 d1
     
    18151818    mov dx, word [bp-026h]                    ; 8b 56 da
    18161819    mov si, word [bp-01eh]                    ; 8b 76 e2
    1817     call 0a060h                               ; e8 63 85
     1820    call 0a110h                               ; e8 13 86
    18181821    mov ax, dx                                ; 89 d0
    18191822    xor ah, dh                                ; 30 f4
     
    22542257    mov dx, word [es:si]                      ; 26 8b 14
    22552258    mov si, strict word 00018h                ; be 18 00
    2256     call 0a060h                               ; e8 10 81
     2259    call 0a110h                               ; e8 c0 81
    22572260    xor dh, dh                                ; 30 f6
    22582261    mov word [bp-014h], dx                    ; 89 56 ec
     
    22642267    mov dx, word [es:si]                      ; 26 8b 14
    22652268    mov si, strict word 00020h                ; be 20 00
    2266     call 0a060h                               ; e8 f0 80
     2269    call 0a110h                               ; e8 a0 81
    22672270    mov bx, dx                                ; 89 d3
    22682271    mov ax, word [bp-01ch]                    ; 8b 46 e4
     
    22952298    mov dx, word [es:si]                      ; 26 8b 14
    22962299    mov si, strict word 00008h                ; be 08 00
    2297     call 0a060h                               ; e8 9f 80
     2300    call 0a110h                               ; e8 4f 81
    22982301    mov word [bp-012h], dx                    ; 89 56 ee
    22992302    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23042307    mov dx, word [es:si]                      ; 26 8b 14
    23052308    mov si, strict word 00018h                ; be 18 00
    2306     call 0a060h                               ; e8 81 80
     2309    call 0a110h                               ; e8 31 81
    23072310    mov ah, dl                                ; 88 d4
    23082311    and ah, 00fh                              ; 80 e4 0f
     
    26952698    lea ax, [bp-03ah]                         ; 8d 46 c6
    26962699    call 05a02h                               ; e8 58 36
    2697     mov bx, 00da0h                            ; bb a0 0d
     2700    mov bx, 00e02h                            ; bb 02 0e
    26982701    mov cx, ds                                ; 8c d9
    26992702    mov ax, strict word 00004h                ; b8 04 00
     
    28612864    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    28622865    mov si, strict word 0000bh                ; be 0b 00
    2863     call 0a060h                               ; e8 d9 7a
     2866    call 0a110h                               ; e8 89 7b
    28642867    mov word [bp-024h], dx                    ; 89 56 dc
    28652868    mov word [bp-032h], cx                    ; 89 4e ce
     
    31373140    mov dx, word [bp-024h]                    ; 8b 56 dc
    31383141    mov si, strict word 00018h                ; be 18 00
    3139     call 0a060h                               ; e8 17 78
     3142    call 0a110h                               ; e8 c7 78
    31403143    xor dh, dh                                ; 30 f6
    31413144    mov word [bp-014h], dx                    ; 89 56 ec
     
    31453148    mov dx, word [bp-024h]                    ; 8b 56 dc
    31463149    mov si, strict word 00020h                ; be 20 00
    3147     call 0a060h                               ; e8 00 78
     3150    call 0a110h                               ; e8 b0 78
    31483151    mov bx, dx                                ; 89 d3
    31493152    mov ax, word [bp-022h]                    ; 8b 46 de
     
    31793182    mov dx, word [bp-024h]                    ; 8b 56 dc
    31803183    mov si, strict word 00008h                ; be 08 00
    3181     call 0a060h                               ; e8 ac 77
     3184    call 0a110h                               ; e8 5c 78
    31823185    mov word [bp-00ch], ax                    ; 89 46 f4
    31833186    mov word [bp-00eh], bx                    ; 89 5e f2
     
    31863189    mov word [bp-018h], dx                    ; 89 56 e8
    31873190    mov si, strict word 00010h                ; be 10 00
    3188     call 0a060h                               ; e8 97 77
     3191    call 0a110h                               ; e8 47 78
    31893192    mov word [bp-024h], dx                    ; 89 56 dc
    31903193    mov ax, dx                                ; 89 d0
     
    34463449    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    34473450    jne short 02b52h                          ; 75 1f
    3448     mov bx, 00da0h                            ; bb a0 0d
     3451    mov bx, 00e02h                            ; bb 02 0e
    34493452    mov cx, ds                                ; 8c d9
    34503453    mov ax, strict word 00004h                ; b8 04 00
     
    42804283    cmp bh, 048h                              ; 80 ff 48
    42814284    jbe short 03292h                          ; 76 33
    4282     mov bx, 00da0h                            ; bb a0 0d
     4285    mov bx, 00e02h                            ; bb 02 0e
    42834286    mov cx, ds                                ; 8c d9
    42844287    mov ax, strict word 00004h                ; b8 04 00
     
    51835186    mov byte [es:bx], 000h                    ; 26 c6 07 00
    51845187    jmp near 0348ch                           ; e9 92 f9
    5185     mov bx, 00da0h                            ; bb a0 0d
     5188    mov bx, 00e02h                            ; bb 02 0e
    51865189    mov cx, ds                                ; 8c d9
    51875190    mov ax, strict word 00004h                ; b8 04 00
     
    52815284    cmp ax, strict word 0004ah                ; 3d 4a 00
    52825285    jne short 03be4h                          ; 75 1f
    5283     mov bx, 00da0h                            ; bb a0 0d
     5286    mov bx, 00e02h                            ; bb 02 0e
    52845287    mov cx, ds                                ; 8c d9
    52855288    mov ax, strict word 00004h                ; b8 04 00
     
    53865389    pop bp                                    ; 5d
    53875390    retn                                      ; c3
    5388     mov bx, 00da0h                            ; bb a0 0d
     5391    mov bx, 00e02h                            ; bb 02 0e
    53895392    mov cx, ds                                ; 8c d9
    53905393    mov ax, strict word 00004h                ; b8 04 00
     
    54685471    mov dx, ss                                ; 8c d2
    54695472    lea ax, [bp-026h]                         ; 8d 46 da
    5470     call 0a080h                               ; e8 c9 62
     5473    call 0a130h                               ; e8 79 63
    54715474    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    54725475    mov ax, strict word 00011h                ; b8 11 00
     
    55275530    jnc short 03e62h                          ; 73 10
    55285531    mov al, byte [bp+di-00825h]               ; 8a 83 db f7
    5529     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
     5532    cmp al, byte [di+00e0ah]                  ; 3a 85 0a 0e
    55305533    je short 03e4ch                           ; 74 f0
    55315534    mov ax, strict word 00005h                ; b8 05 00
     
    55375540    jnc short 03e7ch                          ; 73 10
    55385541    mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
    5539     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
     5542    cmp al, byte [di+00e10h]                  ; 3a 85 10 0e
    55405543    je short 03e66h                           ; 74 f0
    55415544    mov ax, strict word 00006h                ; b8 06 00
     
    58295832    cmp ax, dx                                ; 39 d0
    58305833    je short 04212h                           ; 74 29
    5831     mov bx, 00da0h                            ; bb a0 0d
     5834    mov bx, 00e02h                            ; bb 02 0e
    58325835    mov cx, ds                                ; 8c d9
    58335836    mov ax, strict word 00004h                ; b8 04 00
     
    59415944    xor dl, dl                                ; 30 d2
    59425945    xor cx, cx                                ; 31 c9
    5943     call 0a010h                               ; e8 f3 5c
     5946    call 0a0c0h                               ; e8 a3 5d
    59445947    xor bx, bx                                ; 31 db
    59455948    add ax, si                                ; 01 f0
     
    59475950    mov bx, di                                ; 89 fb
    59485951    xor cx, cx                                ; 31 c9
    5949     call 0a010h                               ; e8 e6 5c
     5952    call 0a0c0h                               ; e8 96 5d
    59505953    mov bx, ax                                ; 89 c3
    59515954    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    59825985    mov dx, ss                                ; 8c d2
    59835986    lea ax, [bp-02eh]                         ; 8d 46 d2
    5984     call 0a080h                               ; e8 ff 5c
     5987    call 0a130h                               ; e8 af 5d
    59855988    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    59865989    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    60496052    test al, al                               ; 84 c0
    60506053    je short 0446ch                           ; 74 37
    6051     mov bx, 00da0h                            ; bb a0 0d
     6054    mov bx, 00e02h                            ; bb 02 0e
    60526055    mov cx, ds                                ; 8c d9
    60536056    mov ax, strict word 00004h                ; b8 04 00
     
    61466149    mov word [bp+016h], bx                    ; 89 5e 16
    61476150    jmp near 04470h                           ; e9 38 ff
    6148     mov bx, 00da0h                            ; bb a0 0d
     6151    mov bx, 00e02h                            ; bb 02 0e
    61496152    mov cx, ds                                ; 8c d9
    61506153    mov ax, strict word 00004h                ; b8 04 00
     
    62686271    mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
    62696272    jmp near 04afbh                           ; e9 39 04
    6270     mov bx, 00da0h                            ; bb a0 0d
     6273    mov bx, 00e02h                            ; bb 02 0e
    62716274    mov cx, ds                                ; 8c d9
    62726275    mov ax, strict word 00004h                ; b8 04 00
     
    63216324    mov dx, ss                                ; 8c d2
    63226325    lea ax, [bp-030h]                         ; 8d 46 d0
    6323     call 0a080h                               ; e8 22 59
     6326    call 0a130h                               ; e8 d2 59
    63246327    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    63256328    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    63776380    cmp byte [bp-018h], 000h                  ; 80 7e e8 00
    63786381    je short 04846h                           ; 74 53
    6379     mov bx, 00da0h                            ; bb a0 0d
     6382    mov bx, 00e02h                            ; bb 02 0e
    63806383    mov cx, ds                                ; 8c d9
    63816384    mov ax, strict word 00004h                ; b8 04 00
     
    66826685    je short 04b96h                           ; 74 21
    66836686    mov dx, strict word 00001h                ; ba 01 00
    6684     mov bx, 00da0h                            ; bb a0 0d
     6687    mov bx, 00e02h                            ; bb 02 0e
    66856688    mov cx, ds                                ; 8c d9
    66866689    mov ax, strict word 00004h                ; b8 04 00
    66876690    call 01923h                               ; e8 a0 cd
    66886691    imul dx, dx, strict byte 0000ah           ; 6b d2 0a
    6689     add dx, 00dc6h                            ; 81 c2 c6 0d
     6692    add dx, 00e28h                            ; 81 c2 28 0e
    66906693    push dx                                   ; 52
    66916694    push 00494h                               ; 68 94 04
     
    67096712    test al, al                               ; 84 c0
    67106713    je short 04bcch                           ; 74 1b
    6711     mov bx, 00da0h                            ; bb a0 0d
     6714    mov bx, 00e02h                            ; bb 02 0e
    67126715    mov cx, ds                                ; 8c d9
    67136716    mov ax, strict word 00004h                ; b8 04 00
    67146717    call 01923h                               ; e8 67 cd
    6715     push 00ddah                               ; 68 da 0d
     6718    push 00e3ch                               ; 68 3c 0e
    67166719    push 004a8h                               ; 68 a8 04
    67176720    push strict byte 00004h                   ; 6a 04
     
    67216724    test ah, ah                               ; 84 e4
    67226725    je short 04be0h                           ; 74 10
    6723     mov bx, 00da0h                            ; bb a0 0d
     6726    mov bx, 00e02h                            ; bb 02 0e
    67246727    mov cx, ds                                ; 8c d9
    67256728    mov ax, strict word 00004h                ; b8 04 00
    67266729    call 01923h                               ; e8 48 cd
    6727     push 00de4h                               ; 68 e4 0d
     6730    push 00e46h                               ; 68 46 0e
    67286731    jmp short 04bbfh                          ; eb df
    67296732    test bl, 080h                             ; f6 c3 80
    67306733    je short 04bf6h                           ; 74 11
    6731     mov bx, 00da0h                            ; bb a0 0d
     6734    mov bx, 00e02h                            ; bb 02 0e
    67326735    mov cx, ds                                ; 8c d9
    67336736    mov ax, strict word 00004h                ; b8 04 00
    67346737    call 01923h                               ; e8 33 cd
    67356738    push si                                   ; 56
    6736     push 00dd0h                               ; 68 d0 0d
     6739    push 00e32h                               ; 68 32 0e
    67376740    jmp short 04c05h                          ; eb 0f
    6738     mov bx, 00da0h                            ; bb a0 0d
     6741    mov bx, 00e02h                            ; bb 02 0e
    67396742    mov cx, ds                                ; 8c d9
    67406743    mov ax, strict word 00004h                ; b8 04 00
    67416744    call 01923h                               ; e8 22 cd
    67426745    push si                                   ; 56
    6743     push 00dc6h                               ; 68 c6 0d
     6746    push 00e28h                               ; 68 28 0e
    67446747    push 004bdh                               ; 68 bd 04
    67456748    push strict byte 00004h                   ; 6a 04
     
    67676770    push dx                                   ; 52
    67686771    mov dx, ax                                ; 89 c2
    6769     mov bx, 00da0h                            ; bb a0 0d
     6772    mov bx, 00e02h                            ; bb 02 0e
    67706773    mov cx, ds                                ; 8c d9
    67716774    mov ax, strict word 00004h                ; b8 04 00
     
    68456848    mov byte [bp-008h], al                    ; 88 46 f8
    68466849    mov byte [bp-00ah], al                    ; 88 46 f6
    6847     mov bx, 00da0h                            ; bb a0 0d
     6850    mov bx, 00e02h                            ; bb 02 0e
    68486851    mov cx, ds                                ; 8c d9
    68496852    mov ax, strict word 00004h                ; b8 04 00
     
    74097412    test al, al                               ; 84 c0
    74107413    jne short 0520fh                          ; 75 19
    7411     mov bx, 00da0h                            ; bb a0 0d
     7414    mov bx, 00e02h                            ; bb 02 0e
    74127415    mov cx, ds                                ; 8c d9
    74137416    mov ax, strict word 00004h                ; b8 04 00
     
    77557758    cmp byte [bp-00ah], 058h                  ; 80 7e f6 58
    77567759    jbe short 0559bh                          ; 76 1f
    7757     mov bx, 00da0h                            ; bb a0 0d
     7760    mov bx, 00e02h                            ; bb 02 0e
    77587761    mov cx, ds                                ; 8c d9
    77597762    mov ax, strict word 00004h                ; b8 04 00
     
    77737776    xor ah, ah                                ; 30 e4
    77747777    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7775     mov dl, byte [bx+00df4h]                  ; 8a 97 f4 0d
    7776     mov ax, word [bx+00df4h]                  ; 8b 87 f4 0d
     7778    mov dl, byte [bx+00e56h]                  ; 8a 97 56 0e
     7779    mov ax, word [bx+00e56h]                  ; 8b 87 56 0e
    77777780    jmp near 05645h                           ; e9 90 00
    77787781    test AL, strict byte 004h                 ; a8 04
     
    77817784    xor ah, ah                                ; 30 e4
    77827785    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7783     mov dl, byte [bx+00df2h]                  ; 8a 97 f2 0d
    7784     mov ax, word [bx+00df2h]                  ; 8b 87 f2 0d
     7786    mov dl, byte [bx+00e54h]                  ; 8a 97 54 0e
     7787    mov ax, word [bx+00e54h]                  ; 8b 87 54 0e
    77857788    jmp near 05645h                           ; e9 79 00
    77867789    mov al, byte [bp-00ch]                    ; 8a 46 f4
     
    78027805    xor ah, ah                                ; 30 e4
    78037806    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7804     mov al, byte [bx+00df6h]                  ; 8a 87 f6 0d
     7807    mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
    78057808    mov dx, ax                                ; 89 c2
    78067809    mov al, byte [bp-00eh]                    ; 8a 46 f2
    78077810    test ax, dx                               ; 85 d0
    78087811    je short 0560eh                           ; 74 0a
    7809     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
    7810     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
     7812    mov dl, byte [bx+00e50h]                  ; 8a 97 50 0e
     7813    mov ax, word [bx+00e50h]                  ; 8b 87 50 0e
    78117814    jmp short 05616h                          ; eb 08
    7812     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
    7813     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
     7815    mov dl, byte [bx+00e52h]                  ; 8a 97 52 0e
     7816    mov ax, word [bx+00e52h]                  ; 8b 87 52 0e
    78147817    shr ax, 008h                              ; c1 e8 08
    78157818    mov byte [bp-00ah], al                    ; 88 46 f6
     
    78187821    xor ah, ah                                ; 30 e4
    78197822    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7820     mov al, byte [bx+00df6h]                  ; 8a 87 f6 0d
     7823    mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
    78217824    mov dx, ax                                ; 89 c2
    78227825    mov al, byte [bp-00eh]                    ; 8a 46 f2
    78237826    test ax, dx                               ; 85 d0
    78247827    je short 0563dh                           ; 74 0a
    7825     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
    7826     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
     7828    mov dl, byte [bx+00e52h]                  ; 8a 97 52 0e
     7829    mov ax, word [bx+00e52h]                  ; 8b 87 52 0e
    78277830    jmp short 05645h                          ; eb 08
    7828     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
    7829     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
     7831    mov dl, byte [bx+00e50h]                  ; 8a 97 50 0e
     7832    mov ax, word [bx+00e50h]                  ; 8b 87 50 0e
    78307833    shr ax, 008h                              ; c1 e8 08
    78317834    mov byte [bp-00ah], al                    ; 88 46 f6
     
    78347837    test dl, dl                               ; 84 d2
    78357838    jne short 0566bh                          ; 75 16
    7836     mov bx, 00da0h                            ; bb a0 0d
     7839    mov bx, 00e02h                            ; bb 02 0e
    78377840    mov cx, ds                                ; 8c d9
    78387841    mov ax, strict word 00004h                ; b8 04 00
     
    80348037    mov word [bp+012h], dx                    ; 89 56 12
    80358038    jmp near 05855h                           ; e9 43 00
    8036     mov bx, 00da0h                            ; bb a0 0d
     8039    mov bx, 00e02h                            ; bb 02 0e
    80378040    mov cx, ds                                ; 8c d9
    80388041    mov ax, strict word 00004h                ; b8 04 00
     
    80458048    call 01966h                               ; e8 3a c1
    80468049    add sp, strict byte 00006h                ; 83 c4 06
    8047     mov bx, 00da0h                            ; bb a0 0d
     8050    mov bx, 00e02h                            ; bb 02 0e
    80488051    mov cx, ds                                ; 8c d9
    80498052    mov ax, strict word 00004h                ; b8 04 00
     
    82548257    mov dx, word [bp+00ch]                    ; 8b 56 0c
    82558258    mov si, strict word 00020h                ; be 20 00
    8256     call 0a060h                               ; e8 31 46
     8259    call 0a110h                               ; e8 e1 46
    82578260    test ax, ax                               ; 85 c0
    82588261    jne short 05a3fh                          ; 75 0c
     
    82928295    mov bx, strict word 0003fh                ; bb 3f 00
    82938296    xor cx, cx                                ; 31 c9
    8294     call 0a010h                               ; e8 88 45
     8297    call 0a0c0h                               ; e8 38 46
    82958298    mov bx, ax                                ; 89 c3
    82968299    mov cx, dx                                ; 89 d1
    82978300    mov ax, word [bp-004h]                    ; 8b 46 fc
    82988301    mov dx, si                                ; 89 f2
    8299     call 0a030h                               ; e8 9c 45
     8302    call 0a0e0h                               ; e8 4c 46
    83008303    mov word [es:di+002h], ax                 ; 26 89 45 02
    83018304    cmp ax, 00400h                            ; 3d 00 04
     
    84388441    test ax, ax                               ; 85 c0
    84398442    jne short 05c16h                          ; 75 26
    8440     mov bx, 00da0h                            ; bb a0 0d
     8443    mov bx, 00e02h                            ; bb 02 0e
    84418444    mov cx, ds                                ; 8c d9
    84428445    mov ax, strict word 00004h                ; b8 04 00
     
    84698472    cmp ax, dx                                ; 39 d0
    84708473    jbe short 05c74h                          ; 76 30
    8471     mov bx, 00da0h                            ; bb a0 0d
     8474    mov bx, 00e02h                            ; bb 02 0e
    84728475    mov cx, ds                                ; 8c d9
    84738476    mov ax, strict word 00004h                ; b8 04 00
     
    85118514    mov bx, cx                                ; 89 cb
    85128515    xor cx, cx                                ; 31 c9
    8513     call 0a010h                               ; e8 5d 43
     8516    call 0a0c0h                               ; e8 0d 44
    85148517    xor bx, bx                                ; 31 db
    85158518    add ax, word [bp-006h]                    ; 03 46 fa
     
    85178520    mov bx, word [bp-008h]                    ; 8b 5e f8
    85188521    xor cx, cx                                ; 31 c9
    8519     call 0a010h                               ; e8 4e 43
     8522    call 0a0c0h                               ; e8 fe 43
    85208523    xor bx, bx                                ; 31 db
    85218524    add ax, word [bp-004h]                    ; 03 46 fc
     
    85748577    test dl, dl                               ; 84 d2
    85758578    je short 05dbbh                           ; 74 46
    8576     mov bx, 00da0h                            ; bb a0 0d
     8579    mov bx, 00e02h                            ; bb 02 0e
    85778580    mov cx, ds                                ; 8c d9
    85788581    mov ax, strict word 00004h                ; b8 04 00
     
    85938596    or ah, 00ch                               ; 80 cc 0c
    85948597    jmp near 05f01h                           ; e9 5c 01
    8595     mov bx, 00da0h                            ; bb a0 0d
     8598    mov bx, 00e02h                            ; bb 02 0e
    85968599    mov cx, ds                                ; 8c d9
    85978600    mov ax, strict word 00004h                ; b8 04 00
     
    86858688    mov bx, word [bp-006h]                    ; 8b 5e fa
    86868689    xor cx, cx                                ; 31 c9
    8687     call 0a010h                               ; e8 77 41
     8690    call 0a0c0h                               ; e8 27 42
    86888691    mov bx, word [bp-004h]                    ; 8b 5e fc
    86898692    xor cx, cx                                ; 31 c9
    8690     call 0a010h                               ; e8 6f 41
     8693    call 0a0c0h                               ; e8 1f 42
    86918694    mov word [bp-00eh], ax                    ; 89 46 f2
    86928695    mov word [bp-00ah], dx                    ; 89 56 f6
     
    86988701    mov word [bp+016h], ax                    ; 89 46 16
    86998702    jmp near 05dbfh                           ; e9 04 ff
    8700     mov bx, 00da0h                            ; bb a0 0d
     8703    mov bx, 00e02h                            ; bb 02 0e
    87018704    mov cx, ds                                ; 8c d9
    87028705    mov ax, strict word 00004h                ; b8 04 00
     
    87118714    add sp, strict byte 00008h                ; 83 c4 08
    87128715    jmp near 05dbbh                           ; e9 dd fe
    8713     mov bx, 00da0h                            ; bb a0 0d
     8716    mov bx, 00e02h                            ; bb 02 0e
    87148717    mov cx, ds                                ; 8c d9
    87158718    mov ax, strict word 00004h                ; b8 04 00
     
    88018804    mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
    88028805    jmp near 06400h                           ; e9 10 04
    8803     mov bx, 00da0h                            ; bb a0 0d
     8806    mov bx, 00e02h                            ; bb 02 0e
    88048807    mov cx, ds                                ; 8c d9
    88058808    mov ax, strict word 00004h                ; b8 04 00
     
    88268829    xor bx, bx                                ; 31 db
    88278830    mov si, strict word 00020h                ; be 20 00
    8828     call 0a070h                               ; e8 32 40
     8831    call 0a120h                               ; e8 e2 40
    88298832    mov si, ax                                ; 89 c6
    88308833    mov word [bp-00ch], bx                    ; 89 5e f4
     
    88538856    cmp dx, word [es:bx+036h]                 ; 26 3b 57 36
    88548857    jc short 060abh                           ; 72 23
    8855     mov bx, 00da0h                            ; bb a0 0d
     8858    mov bx, 00e02h                            ; bb 02 0e
    88568859    mov cx, ds                                ; 8c d9
    88578860    mov ax, strict word 00004h                ; b8 04 00
     
    89118914    test dl, dl                               ; 84 d2
    89128915    je short 0618dh                           ; 74 51
    8913     mov bx, 00da0h                            ; bb a0 0d
     8916    mov bx, 00e02h                            ; bb 02 0e
    89148917    mov cx, ds                                ; 8c d9
    89158918    mov ax, strict word 00004h                ; b8 04 00
     
    89838986    mov bx, word [bp-00ch]                    ; 8b 5e f4
    89848987    mov si, strict word 00020h                ; be 20 00
    8985     call 0a060h                               ; e8 3e 3e
     8988    call 0a110h                               ; e8 ee 3e
    89868989    mov bx, di                                ; 89 fb
    89878990    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    93399342    mov bx, strict word 0000fh                ; bb 0f 00
    93409343    xor cx, cx                                ; 31 c9
    9341     call 0a030h                               ; e8 7b 3a
     9344    call 0a0e0h                               ; e8 2b 3b
    93429345    mov cx, ax                                ; 89 c1
    93439346    mov bx, dx                                ; 89 d3
     
    95009503    mov word [bp+00ch], ax                    ; 89 46 0c
    95019504    jmp near 0677fh                           ; e9 2b 00
    9502     mov bx, 00da0h                            ; bb a0 0d
     9505    mov bx, 00e02h                            ; bb 02 0e
    95039506    mov cx, ds                                ; 8c d9
    95049507    mov ax, strict word 00004h                ; b8 04 00
     
    96919694    retf                                      ; cb
    96929695    jmp near 0677fh                           ; e9 49 fe
    9693     mov bx, 00da0h                            ; bb a0 0d
     9696    mov bx, 00e02h                            ; bb 02 0e
    96949697    mov cx, ds                                ; 8c d9
    96959698    mov ax, strict word 00004h                ; b8 04 00
     
    97319734    or byte [bp+018h], 001h                   ; 80 4e 18 01
    97329735    jmp near 0677fh                           ; e9 d3 fd
    9733     mov bx, 00da0h                            ; bb a0 0d
     9736    mov bx, 00e02h                            ; bb 02 0e
    97349737    mov cx, ds                                ; 8c d9
    97359738    mov ax, strict word 00004h                ; b8 04 00
     
    99249927    mov word [bp+014h], strict word 00003h    ; c7 46 14 03 00
    99259928    jmp short 06b65h                          ; eb b9
    9926     mov bx, 00da0h                            ; bb a0 0d
     9929    mov bx, 00e02h                            ; bb 02 0e
    99279930    mov cx, ds                                ; 8c d9
    99289931    mov ax, strict word 00004h                ; b8 04 00
     
    1070010703    je short 0738dh                           ; 74 0e
    1070110704    push 008eeh                               ; 68 ee 08
    10702     push 01168h                               ; 68 68 11
     10705    push 011cah                               ; 68 ca 11
    1070310706    push strict byte 00007h                   ; 6a 07
    1070410707    call 01966h                               ; e8 dc a5
     
    1078110784    je short 0741eh                           ; 74 0e
    1078210785    push 008f8h                               ; 68 f8 08
    10783     push 01168h                               ; 68 68 11
     10786    push 011cah                               ; 68 ca 11
    1078410787    push strict byte 00007h                   ; 6a 07
    1078510788    call 01966h                               ; e8 4b a5
     
    1229012293    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    1229112294    jne short 081c7h                          ; 75 1f
    12292     mov bx, 00da0h                            ; bb a0 0d
     12295    mov bx, 00e02h                            ; bb 02 0e
    1229312296    mov cx, ds                                ; 8c d9
    1229412297    mov ax, strict word 00004h                ; b8 04 00
     
    1244812451    mov dx, ss                                ; 8c d2
    1244912452    lea ax, [bp-046h]                         ; 8d 46 ba
    12450     call 0a080h                               ; e8 60 1d
     12453    call 0a130h                               ; e8 10 1e
    1245112454    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1245212455    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1251212515    cmp bx, 00200h                            ; 81 fb 00 02
    1251312516    je short 083e9h                           ; 74 20
    12514     mov bx, 00da0h                            ; bb a0 0d
     12517    mov bx, 00e02h                            ; bb 02 0e
    1251512518    mov cx, ds                                ; 8c d9
    1251612519    mov ax, strict word 00004h                ; b8 04 00
     
    1257912582    mov dx, word [bp-014h]                    ; 8b 56 ec
    1258012583    mov si, strict word 0000ch                ; be 0c 00
    12581     call 0a060h                               ; e8 f9 1b
     12584    call 0a110h                               ; e8 a9 1c
    1258212585    mov word [bp-02ah], ax                    ; 89 46 d6
    1258312586    mov word [bp-016h], bx                    ; 89 5e ea
     
    1260112604    mov dx, word [bp-014h]                    ; 8b 56 ec
    1260212605    mov si, strict word 00006h                ; be 06 00
    12603     call 0a060h                               ; e8 b8 1b
     12606    call 0a110h                               ; e8 68 1c
    1260412607    mov si, word [bp-01eh]                    ; 8b 76 e2
    1260512608    add si, dx                                ; 01 d6
     
    1261912622    mov dx, si                                ; 89 f2
    1262012623    mov si, strict word 00008h                ; be 08 00
    12621     call 0a060h                               ; e8 88 1b
     12624    call 0a110h                               ; e8 38 1c
    1262212625    mov word [bp-02eh], bx                    ; 89 5e d2
    1262312626    mov word [bp-030h], cx                    ; 89 4e d0
     
    1262812631    mov dx, word [bp-036h]                    ; 8b 56 ca
    1262912632    mov si, strict word 00010h                ; be 10 00
    12630     call 0a060h                               ; e8 6d 1b
     12633    call 0a110h                               ; e8 1d 1c
    1263112634    mov si, word [bp-032h]                    ; 8b 76 ce
    1263212635    add si, dx                                ; 01 d6
     
    1265412657    mov dx, word [bp-014h]                    ; 8b 56 ec
    1265512658    mov si, strict word 0000bh                ; be 0b 00
    12656     call 0a060h                               ; e8 21 1b
     12659    call 0a110h                               ; e8 d1 1b
    1265712660    mov si, dx                                ; 89 d6
    1265812661    mov dx, cx                                ; 89 ca
     
    1269712700    mov word [es:bx+02ch], si                 ; 26 89 77 2c
    1269812701    mov word [es:bx+032h], si                 ; 26 89 77 32
    12699     mov bx, 00da0h                            ; bb a0 0d
     12702    mov bx, 00e02h                            ; bb 02 0e
    1270012703    mov cx, ds                                ; 8c d9
    1270112704    mov ax, strict word 00004h                ; b8 04 00
     
    1275312756    inc byte [bp-00ch]                        ; fe 46 f4
    1275412757    jmp near 086f5h                           ; e9 91 00
    12755     mov bx, 00da0h                            ; bb a0 0d
     12758    mov bx, 00e02h                            ; bb 02 0e
    1275612759    mov cx, ds                                ; 8c d9
    1275712760    mov ax, strict word 00004h                ; b8 04 00
     
    1285912862    pop bp                                    ; 5d
    1286012863    retn                                      ; c3
    12861 _scsi_init:                                  ; 0xf878e LB 0x66
     12864scsi_pci_init_:                              ; 0xf878e LB 0x6d
     12865    push bp                                   ; 55
     12866    mov bp, sp                                ; 89 e5
     12867    push bx                                   ; 53
     12868    push cx                                   ; 51
     12869    push si                                   ; 56
     12870    push di                                   ; 57
     12871    mov di, ax                                ; 89 c7
     12872    mov si, dx                                ; 89 d6
     12873    call 09ee8h                               ; e8 4c 17
     12874    mov dx, ax                                ; 89 c2
     12875    cmp ax, strict word 0ffffh                ; 3d ff ff
     12876    jne short 087c0h                          ; 75 1d
     12877    mov bx, 00e02h                            ; bb 02 0e
     12878    mov cx, ds                                ; 8c d9
     12879    mov ax, strict word 00004h                ; b8 04 00
     12880    call 01923h                               ; e8 75 91
     12881    push si                                   ; 56
     12882    push di                                   ; 57
     12883    push 00c61h                               ; 68 61 0c
     12884    push 00c6fh                               ; 68 6f 0c
     12885    push strict byte 00004h                   ; 6a 04
     12886    call 01966h                               ; e8 ab 91
     12887    add sp, strict byte 0000ah                ; 83 c4 0a
     12888    jmp short 087f2h                          ; eb 32
     12889    mov bx, 00e02h                            ; bb 02 0e
     12890    mov cx, ds                                ; 8c d9
     12891    mov ax, strict word 00004h                ; b8 04 00
     12892    call 01923h                               ; e8 58 91
     12893    push dx                                   ; 52
     12894    push si                                   ; 56
     12895    push di                                   ; 57
     12896    push 00c61h                               ; 68 61 0c
     12897    push 00c98h                               ; 68 98 0c
     12898    push strict byte 00004h                   ; 6a 04
     12899    call 01966h                               ; e8 8d 91
     12900    add sp, strict byte 0000ch                ; 83 c4 0c
     12901    mov al, dl                                ; 88 d0
     12902    xor ah, ah                                ; 30 e4
     12903    mov si, ax                                ; 89 c6
     12904    shr dx, 008h                              ; c1 ea 08
     12905    mov al, dl                                ; 88 d0
     12906    mov cx, strict word 00007h                ; b9 07 00
     12907    mov bx, strict word 00004h                ; bb 04 00
     12908    mov dx, si                                ; 89 f2
     12909    call 09fb1h                               ; e8 bf 17
     12910    lea sp, [bp-008h]                         ; 8d 66 f8
     12911    pop di                                    ; 5f
     12912    pop si                                    ; 5e
     12913    pop cx                                    ; 59
     12914    pop bx                                    ; 5b
     12915    pop bp                                    ; 5d
     12916    retn                                      ; c3
     12917_scsi_init:                                  ; 0xf87fb LB 0x81
    1286212918    push bp                                   ; 55
    1286312919    mov bp, sp                                ; 89 e5
    1286412920    mov dx, strict word 0000eh                ; ba 0e 00
    1286512921    mov ax, strict word 00040h                ; b8 40 00
    12866     call 0166ch                               ; e8 d2 8e
     12922    call 0166ch                               ; e8 65 8e
    1286712923    mov bx, 00122h                            ; bb 22 01
    1286812924    mov es, ax                                ; 8e c0
     
    1287512931    ; sub ah, ah                                ; 2a e4
    1287612932    cmp AL, strict byte 055h                  ; 3c 55
    12877     jne short 087beh                          ; 75 0c
     12933    jne short 08834h                          ; 75 15
    1287812934    xor al, al                                ; 30 c0
    1287912935    mov dx, 00433h                            ; ba 33 04
    1288012936    out DX, AL                                ; ee
    1288112937    mov ax, 00430h                            ; b8 30 04
    12882     call 082e8h                               ; e8 2a fb
     12938    call 082e8h                               ; e8 bd fa
     12939    mov dx, 01040h                            ; ba 40 10
     12940    mov ax, 0104bh                            ; b8 4b 10
     12941    call 0878eh                               ; e8 5a ff
    1288312942    mov AL, strict byte 055h                  ; b0 55
    1288412943    mov dx, 00436h                            ; ba 36 04
     
    1288812947    ; sub ah, ah                                ; 2a e4
    1288912948    cmp AL, strict byte 055h                  ; 3c 55
    12890     jne short 087d7h                          ; 75 0c
     12949    jne short 08856h                          ; 75 15
    1289112950    xor al, al                                ; 30 c0
    1289212951    mov dx, 00437h                            ; ba 37 04
    1289312952    out DX, AL                                ; ee
    1289412953    mov ax, 00434h                            ; b8 34 04
    12895     call 082e8h                               ; e8 11 fb
     12954    call 082e8h                               ; e8 9b fa
     12955    mov dx, strict word 00030h                ; ba 30 00
     12956    mov ax, 01000h                            ; b8 00 10
     12957    call 0878eh                               ; e8 38 ff
    1289612958    mov AL, strict byte 055h                  ; b0 55
    1289712959    mov dx, 0043ah                            ; ba 3a 04
     
    1290112963    ; sub ah, ah                                ; 2a e4
    1290212964    cmp AL, strict byte 055h                  ; 3c 55
    12903     jne short 087f0h                          ; 75 0c
     12965    jne short 08878h                          ; 75 15
    1290412966    xor al, al                                ; 30 c0
    1290512967    mov dx, 0043bh                            ; ba 3b 04
    1290612968    out DX, AL                                ; ee
    1290712969    mov ax, 00438h                            ; b8 38 04
    12908     call 082e8h                               ; e8 f8 fa
     12970    call 082e8h                               ; e8 79 fa
     12971    mov dx, strict word 00054h                ; ba 54 00
     12972    mov ax, 01000h                            ; b8 00 10
     12973    call 0878eh                               ; e8 16 ff
    1290912974    mov sp, bp                                ; 89 ec
    1291012975    pop bp                                    ; 5d
    1291112976    retn                                      ; c3
    12912 ahci_ctrl_extract_bits_:                     ; 0xf87f4 LB 0x1c
     12977ahci_ctrl_extract_bits_:                     ; 0xf887c LB 0x1c
    1291312978    push si                                   ; 56
    1291412979    push bp                                   ; 55
     
    1291912984    mov cl, byte [bp+006h]                    ; 8a 4e 06
    1292012985    xor ch, ch                                ; 30 ed
    12921     jcxz 0880bh                               ; e3 06
     12986    jcxz 08893h                               ; e3 06
    1292212987    shr dx, 1                                 ; d1 ea
    1292312988    rcr ax, 1                                 ; d1 d8
    12924     loop 08805h                               ; e2 fa
     12989    loop 0888dh                               ; e2 fa
    1292512990    pop bp                                    ; 5d
    1292612991    pop si                                    ; 5e
    1292712992    retn 00002h                               ; c2 02 00
    12928 ahci_addr_to_phys_:                          ; 0xf8810 LB 0x1e
     12993ahci_addr_to_phys_:                          ; 0xf8898 LB 0x1e
    1292912994    push bx                                   ; 53
    1293012995    push cx                                   ; 51
     
    1293713002    sal ax, 1                                 ; d1 e0
    1293813003    rcl dx, 1                                 ; d1 d2
    12939     loop 0881eh                               ; e2 fa
     13004    loop 088a6h                               ; e2 fa
    1294013005    xor cx, cx                                ; 31 c9
    1294113006    add ax, bx                                ; 01 d8
     
    1294513010    pop bx                                    ; 5b
    1294613011    retn                                      ; c3
    12947 ahci_port_cmd_sync_:                         ; 0xf882e LB 0x156
     13012ahci_port_cmd_sync_:                         ; 0xf88b6 LB 0x156
    1294813013    push bp                                   ; 55
    1294913014    mov bp, sp                                ; 89 e5
     
    1296013025    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1296113026    cmp AL, strict byte 0ffh                  ; 3c ff
    12962     jne short 08851h                          ; 75 03
    12963     jmp near 0897ch                           ; e9 2b 01
     13027    jne short 088d9h                          ; 75 03
     13028    jmp near 08a04h                           ; e9 2b 01
    1296413029    mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
    1296513030    xor ah, ah                                ; 30 e4
     
    1297413039    lea ax, [si+00080h]                       ; 8d 84 80 00
    1297513040    mov dx, cx                                ; 89 ca
    12976     call 08810h                               ; e8 92 ff
     13041    call 08898h                               ; e8 92 ff
    1297713042    mov es, cx                                ; 8e c1
    1297813043    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1304013105    xchg dx, ax                               ; 92
    1304113106    test dh, 040h                             ; f6 c6 40
    13042     jne short 0890fh                          ; 75 04
     13107    jne short 08997h                          ; 75 04
    1304313108    test AL, strict byte 001h                 ; a8 01
    13044     je short 08913h                           ; 74 04
     13109    je short 0899bh                           ; 74 04
    1304513110    mov AL, strict byte 001h                  ; b0 01
    13046     jmp short 08915h                          ; eb 02
     13111    jmp short 0899dh                          ; eb 02
    1304713112    xor al, al                                ; 30 c0
    1304813113    test al, al                               ; 84 c0
    13049     je short 088e2h                           ; 74 c9
     13114    je short 0896ah                           ; 74 c9
    1305013115    mov al, byte [bp-008h]                    ; 8a 46 f8
    1305113116    xor ah, ah                                ; 30 e4
     
    1310313168    pop bp                                    ; 5d
    1310413169    retn                                      ; c3
    13105 ahci_cmd_data_:                              ; 0xf8984 LB 0x267
     13170ahci_cmd_data_:                              ; 0xf8a0c LB 0x267
    1310613171    push bp                                   ; 55
    1310713172    mov bp, sp                                ; 89 e5
     
    1312813193    mov ax, 00080h                            ; b8 80 00
    1312913194    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13130     call 0a080h                               ; e8 be 16
     13195    call 0a130h                               ; e8 e6 16
    1313113196    mov es, [bp-00ah]                         ; 8e 46 f6
    1313213197    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1314613211    mov dx, word [es:si]                      ; 26 8b 14
    1314713212    mov si, strict word 00008h                ; be 08 00
    13148     call 0a060h                               ; e8 5a 16
     13213    call 0a110h                               ; e8 82 16
    1314913214    mov es, [bp-00ah]                         ; 8e 46 f6
    1315013215    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1315713222    mov dx, word [es:si]                      ; 26 8b 14
    1315813223    mov si, strict word 00010h                ; be 10 00
    13159     call 0a060h                               ; e8 34 16
     13224    call 0a110h                               ; e8 5c 16
    1316013225    mov es, [bp-00ah]                         ; 8e 46 f6
    1316113226    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1316913234    mov dx, word [es:si]                      ; 26 8b 14
    1317013235    mov si, strict word 00018h                ; be 18 00
    13171     call 0a060h                               ; e8 08 16
     13236    call 0a110h                               ; e8 30 16
    1317213237    mov es, [bp-00ah]                         ; 8e 46 f6
    1317313238    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1318013245    mov dx, word [es:si]                      ; 26 8b 14
    1318113246    mov si, strict word 00020h                ; be 20 00
    13182     call 0a060h                               ; e8 e2 15
     13247    call 0a110h                               ; e8 0a 16
    1318313248    mov es, [bp-00ah]                         ; 8e 46 f6
    1318413249    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1319113256    mov dx, word [es:si]                      ; 26 8b 14
    1319213257    mov si, strict word 00028h                ; be 28 00
    13193     call 0a060h                               ; e8 bc 15
     13258    call 0a110h                               ; e8 e4 15
    1319413259    mov es, [bp-00ah]                         ; 8e 46 f6
    1319513260    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1320513270    mov bx, word [bp-010h]                    ; 8b 5e f0
    1320613271    xor cx, cx                                ; 31 c9
    13207     call 0a010h                               ; e8 37 15
     13272    call 0a0c0h                               ; e8 5f 15
    1320813273    push dx                                   ; 52
    1320913274    push ax                                   ; 50
     
    1321513280    mov ax, 0026ah                            ; b8 6a 02
    1321613281    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13217     call 09f66h                               ; e8 71 14
     13282    call 0a011h                               ; e8 94 14
    1321813283    mov es, [bp-00ah]                         ; 8e 46 f6
    1321913284    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1323813303    mov ax, word [es:bx+020h]                 ; 26 8b 47 20
    1323913304    test ax, ax                               ; 85 c0
    13240     je short 08b87h                           ; 74 3b
     13305    je short 08c0fh                           ; 74 3b
    1324113306    dec ax                                    ; 48
    1324213307    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1325613321    mov al, byte [bp-008h]                    ; 8a 46 f8
    1325713322    cmp AL, strict byte 035h                  ; 3c 35
    13258     jne short 08b94h                          ; 75 06
     13323    jne short 08c1ch                          ; 75 06
    1325913324    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    13260     jmp short 08babh                          ; eb 17
     13325    jmp short 08c33h                          ; eb 17
    1326113326    cmp AL, strict byte 0a0h                  ; 3c a0
    13262     jne short 08ba7h                          ; 75 0f
     13327    jne short 08c2fh                          ; 75 0f
    1326313328    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1326413329    les bx, [bp-00eh]                         ; c4 5e f2
    1326513330    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    13266     jmp short 08babh                          ; eb 04
     13331    jmp short 08c33h                          ; eb 04
    1326713332    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1326813333    or byte [bp-008h], 005h                   ; 80 4e f8 05
     
    1327113336    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1327213337    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13273     call 0882eh                               ; e8 71 fc
     13338    call 088b6h                               ; e8 71 fc
    1327413339    mov cx, word [bp-00ch]                    ; 8b 4e f4
    1327513340    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1327813343    add ax, 0026ah                            ; 05 6a 02
    1327913344    mov dx, cx                                ; 89 ca
    13280     call 09fddh                               ; e8 0b 14
     13345    call 0a088h                               ; e8 2e 14
    1328113346    mov es, cx                                ; 8e c1
    1328213347    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
    1328313348    test al, al                               ; 84 c0
    13284     je short 08be1h                           ; 74 05
     13349    je short 08c69h                           ; 74 05
    1328513350    mov ax, strict word 00004h                ; b8 04 00
    13286     jmp short 08be3h                          ; eb 02
     13351    jmp short 08c6bh                          ; eb 02
    1328713352    xor ah, ah                                ; 30 e4
    1328813353    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1329213357    pop bp                                    ; 5d
    1329313358    retn                                      ; c3
    13294 ahci_port_deinit_current_:                   ; 0xf8beb LB 0x180
     13359ahci_port_deinit_current_:                   ; 0xf8c73 LB 0x180
    1329513360    push bp                                   ; 55
    1329613361    mov bp, sp                                ; 89 e5
     
    1330713372    mov byte [bp-00ah], al                    ; 88 46 f6
    1330813373    cmp AL, strict byte 0ffh                  ; 3c ff
    13309     je short 08c6ch                           ; 74 5f
     13374    je short 08cf4h                           ; 74 5f
    1331013375    xor ah, ah                                ; 30 e4
    1331113376    sal ax, 007h                              ; c1 e0 07
     
    1335113416    xchg dx, ax                               ; 92
    1335213417    test ax, 0c011h                           ; a9 11 c0
    13353     je short 08c6fh                           ; 74 07
     13418    je short 08cf7h                           ; 74 07
    1335413419    mov AL, strict byte 001h                  ; b0 01
    13355     jmp short 08c71h                          ; eb 05
    13356     jmp near 08d62h                           ; e9 f3 00
     13420    jmp short 08cf9h                          ; eb 05
     13421    jmp near 08deah                           ; e9 f3 00
    1335713422    xor al, al                                ; 30 c0
    1335813423    cmp AL, strict byte 001h                  ; 3c 01
    13359     je short 08c3fh                           ; 74 ca
     13424    je short 08cc7h                           ; 74 ca
    1336013425    mov cx, strict word 00020h                ; b9 20 00
    1336113426    xor bx, bx                                ; 31 db
    1336213427    mov ax, di                                ; 89 f8
    1336313428    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13364     call 0a080h                               ; e8 fe 13
     13429    call 0a130h                               ; e8 26 14
    1336513430    lea ax, [di+00080h]                       ; 8d 85 80 00
    1336613431    mov cx, strict word 00040h                ; b9 40 00
    1336713432    xor bx, bx                                ; 31 db
    1336813433    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13369     call 0a080h                               ; e8 ef 13
     13434    call 0a130h                               ; e8 17 14
    1337013435    lea ax, [di+00200h]                       ; 8d 85 00 02
    1337113436    mov cx, strict word 00060h                ; b9 60 00
    1337213437    xor bx, bx                                ; 31 db
    1337313438    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13374     call 0a080h                               ; e8 e0 13
     13439    call 0a130h                               ; e8 08 14
    1337513440    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1337613441    xor ah, ah                                ; 30 e4
     
    1347713542    pop bp                                    ; 5d
    1347813543    retn                                      ; c3
    13479 ahci_port_init_:                             ; 0xf8d6b LB 0x24d
     13544ahci_port_init_:                             ; 0xf8df3 LB 0x24d
    1348013545    push bp                                   ; 55
    1348113546    mov bp, sp                                ; 89 e5
     
    1348713552    mov word [bp-00ah], dx                    ; 89 56 f6
    1348813553    mov byte [bp-008h], bl                    ; 88 5e f8
    13489     call 08bebh                               ; e8 6c fe
     13554    call 08c73h                               ; e8 6c fe
    1349013555    mov al, bl                                ; 88 d8
    1349113556    xor ah, ah                                ; 30 e4
     
    1353613601    xchg dx, ax                               ; 92
    1353713602    test ax, 0c011h                           ; a9 11 c0
    13538     je short 08df0h                           ; 74 04
     13603    je short 08e78h                           ; 74 04
    1353913604    mov AL, strict byte 001h                  ; b0 01
    13540     jmp short 08df2h                          ; eb 02
     13605    jmp short 08e7ah                          ; eb 02
    1354113606    xor al, al                                ; 30 c0
    1354213607    cmp AL, strict byte 001h                  ; 3c 01
    13543     je short 08dbbh                           ; 74 c5
     13608    je short 08e43h                           ; 74 c5
    1354413609    mov cx, strict word 00020h                ; b9 20 00
    1354513610    xor bx, bx                                ; 31 db
    1354613611    mov ax, si                                ; 89 f0
    1354713612    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13548     call 0a080h                               ; e8 7d 12
     13613    call 0a130h                               ; e8 a5 12
    1354913614    lea ax, [si+00080h]                       ; 8d 84 80 00
    1355013615    mov cx, strict word 00040h                ; b9 40 00
    1355113616    xor bx, bx                                ; 31 db
    1355213617    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13553     call 0a080h                               ; e8 6e 12
     13618    call 0a130h                               ; e8 96 12
    1355413619    lea di, [si+00200h]                       ; 8d bc 00 02
    1355513620    mov cx, strict word 00060h                ; b9 60 00
     
    1355713622    mov ax, di                                ; 89 f8
    1355813623    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13559     call 0a080h                               ; e8 5d 12
     13624    call 0a130h                               ; e8 85 12
    1356013625    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1356113626    xor bh, bh                                ; 30 ff
     
    1357513640    mov ax, di                                ; 89 f8
    1357613641    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13577     call 08810h                               ; e8 bf f9
     13642    call 08898h                               ; e8 bf f9
    1357813643    mov es, [bp-00ah]                         ; 8e 46 f6
    1357913644    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1362013685    mov ax, si                                ; 89 f0
    1362113686    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13622     call 08810h                               ; e8 53 f9
     13687    call 08898h                               ; e8 53 f9
    1362313688    mov es, [bp-00ah]                         ; 8e 46 f6
    1362413689    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1372513790    pop bp                                    ; 5d
    1372613791    retn                                      ; c3
    13727 @ahci_read_sectors:                          ; 0xf8fb8 LB 0xa8
     13792@ahci_read_sectors:                          ; 0xf9040 LB 0xa8
    1372813793    push bp                                   ; 55
    1372913794    mov bp, sp                                ; 89 e5
     
    1373613801    sub bx, strict byte 0000ch                ; 83 eb 0c
    1373713802    cmp bx, strict byte 00004h                ; 83 fb 04
    13738     jbe short 08fdeh                          ; 76 0f
     13803    jbe short 09066h                          ; 76 0f
    1373913804    push bx                                   ; 53
    13740     push 00c62h                               ; 68 62 0c
    13741     push 00c74h                               ; 68 74 0c
     13805    push 00cc4h                               ; 68 c4 0c
     13806    push 00cd6h                               ; 68 d6 0c
    1374213807    push strict byte 00007h                   ; 6a 07
    13743     call 01966h                               ; e8 8b 89
     13808    call 01966h                               ; e8 03 89
    1374413809    add sp, strict byte 00008h                ; 83 c4 08
    1374513810    xor di, di                                ; 31 ff
     
    1375613821    mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
    1375713822    xor ax, ax                                ; 31 c0
    13758     call 08d6bh                               ; e8 60 fd
     13823    call 08df3h                               ; e8 60 fd
    1375913824    mov bx, strict word 00025h                ; bb 25 00
    1376013825    mov ax, si                                ; 89 f0
    1376113826    mov dx, word [bp+006h]                    ; 8b 56 06
    13762     call 08984h                               ; e8 6e f9
     13827    call 08a0ch                               ; e8 6e f9
    1376313828    mov word [bp-006h], ax                    ; 89 46 fa
    1376413829    mov es, [bp+006h]                         ; 8e 46 06
     
    1378913854    pop bp                                    ; 5d
    1379013855    retn 00004h                               ; c2 04 00
    13791 @ahci_write_sectors:                         ; 0xf9060 LB 0x86
     13856@ahci_write_sectors:                         ; 0xf90e8 LB 0x86
    1379213857    push bp                                   ; 55
    1379313858    mov bp, sp                                ; 89 e5
     
    1380113866    sub dx, strict byte 0000ch                ; 83 ea 0c
    1380213867    cmp dx, strict byte 00004h                ; 83 fa 04
    13803     jbe short 0908ah                          ; 76 0f
     13868    jbe short 09112h                          ; 76 0f
    1380413869    push dx                                   ; 52
    13805     push 00c93h                               ; 68 93 0c
    13806     push 00c74h                               ; 68 74 0c
     13870    push 00cf5h                               ; 68 f5 0c
     13871    push 00cd6h                               ; 68 d6 0c
    1380713872    push strict byte 00007h                   ; 6a 07
    13808     call 01966h                               ; e8 df 88
     13873    call 01966h                               ; e8 57 88
    1380913874    add sp, strict byte 00008h                ; 83 c4 08
    1381013875    xor bx, bx                                ; 31 db
     
    1382113886    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1382213887    xor ax, ax                                ; 31 c0
    13823     call 08d6bh                               ; e8 b6 fc
     13888    call 08df3h                               ; e8 b6 fc
    1382413889    mov bx, strict word 00035h                ; bb 35 00
    1382513890    mov ax, si                                ; 89 f0
    1382613891    mov dx, cx                                ; 89 ca
    13827     call 08984h                               ; e8 c5 f8
     13892    call 08a0ch                               ; e8 c5 f8
    1382813893    mov dx, ax                                ; 89 c2
    1382913894    mov es, cx                                ; 8e c1
     
    1384013905    pop bp                                    ; 5d
    1384113906    retn 00004h                               ; c2 04 00
    13842 ahci_cmd_packet_:                            ; 0xf90e6 LB 0x18a
     13907ahci_cmd_packet_:                            ; 0xf916e LB 0x18a
    1384313908    push bp                                   ; 55
    1384413909    mov bp, sp                                ; 89 e5
     
    1385213917    mov dx, strict word 0000eh                ; ba 0e 00
    1385313918    mov ax, strict word 00040h                ; b8 40 00
    13854     call 0166ch                               ; e8 6b 85
     13919    call 0166ch                               ; e8 e3 84
    1385513920    mov si, 00122h                            ; be 22 01
    1385613921    mov word [bp-008h], ax                    ; 89 46 f8
    1385713922    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    13858     jne short 0912ch                          ; 75 1f
    13859     mov bx, 00da0h                            ; bb a0 0d
     13923    jne short 091b4h                          ; 75 1f
     13924    mov bx, 00e02h                            ; bb 02 0e
    1386013925    mov cx, ds                                ; 8c d9
    1386113926    mov ax, strict word 00004h                ; b8 04 00
    13862     call 01923h                               ; e8 0b 88
    13863     push 00ca6h                               ; 68 a6 0c
    13864     push 00cb6h                               ; 68 b6 0c
     13927    call 01923h                               ; e8 83 87
     13928    push 00d08h                               ; 68 08 0d
     13929    push 00d18h                               ; 68 18 0d
    1386513930    push strict byte 00004h                   ; 6a 04
    13866     call 01966h                               ; e8 43 88
     13931    call 01966h                               ; e8 bb 87
    1386713932    add sp, strict byte 00006h                ; 83 c4 06
    1386813933    mov ax, strict word 00001h                ; b8 01 00
    13869     jmp near 09267h                           ; e9 3b 01
     13934    jmp near 092efh                           ; e9 3b 01
    1387013935    test byte [bp+004h], 001h                 ; f6 46 04 01
    13871     jne short 09126h                          ; 75 f4
     13936    jne short 091aeh                          ; 75 f4
    1387213937    mov ax, word [bp+006h]                    ; 8b 46 06
    1387313938    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1387513940    sal ax, 1                                 ; d1 e0
    1387613941    rcl dx, 1                                 ; d1 d2
    13877     loop 0913bh                               ; e2 fa
     13942    loop 091c3h                               ; e2 fa
    1387813943    mov es, [bp-008h]                         ; 8e 46 f8
    1387913944    mov word [es:si], ax                      ; 26 89 04
     
    1388913954    mov dx, word [bp+008h]                    ; 8b 56 08
    1389013955    xor cx, cx                                ; 31 c9
    13891     call 0a030h                               ; e8 bc 0e
     13956    call 0a0e0h                               ; e8 e4 0e
    1389213957    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1389313958    xor di, di                                ; 31 ff
     
    1390813973    mov bx, ax                                ; 89 c3
    1390913974    xor al, al                                ; 30 c0
    13910     call 08d6bh                               ; e8 b8 fb
     13975    call 08df3h                               ; e8 b8 fb
    1391113976    mov al, byte [bp-006h]                    ; 8a 46 fa
    1391213977    xor ah, ah                                ; 30 e4
     
    1391613981    mov ax, 000c0h                            ; b8 c0 00
    1391713982    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13918     call 0a090h                               ; e8 c8 0e
     13983    call 0a140h                               ; e8 f0 0e
    1391913984    mov es, [bp-008h]                         ; 8e 46 f8
    1392013985    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1392313988    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
    1392413989    test ax, ax                               ; 85 c0
    13925     je short 09206h                           ; 74 27
     13990    je short 0928eh                           ; 74 27
    1392613991    dec ax                                    ; 48
    1392713992    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1393614001    mov ax, si                                ; 89 f0
    1393714002    mov dx, word [bp-008h]                    ; 8b 56 f8
    13938     call 08984h                               ; e8 73 f7
     14003    call 08a0ch                               ; e8 73 f7
    1393914004    les bx, [bp-00eh]                         ; c4 5e f2
    1394014005    mov dx, word [es:bx+004h]                 ; 26 8b 57 04
     
    1396314028    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1396414029    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    13965     jne short 09265h                          ; 75 05
     14030    jne short 092edh                          ; 75 05
    1396614031    mov ax, strict word 00004h                ; b8 04 00
    13967     jmp short 09267h                          ; eb 02
     14032    jmp short 092efh                          ; eb 02
    1396814033    xor ax, ax                                ; 31 c0
    1396914034    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1397214037    pop bp                                    ; 5d
    1397314038    retn 0000ch                               ; c2 0c 00
    13974 ahci_port_detect_device_:                    ; 0xf9270 LB 0x4e3
     14039ahci_port_detect_device_:                    ; 0xf92f8 LB 0x4e3
    1397514040    push bp                                   ; 55
    1397614041    mov bp, sp                                ; 89 e5
     
    1398514050    xor ch, ch                                ; 30 ed
    1398614051    mov bx, cx                                ; 89 cb
    13987     call 08d6bh                               ; e8 e0 fa
     14052    call 08df3h                               ; e8 e0 fa
    1398814053    mov dx, strict word 0000eh                ; ba 0e 00
    1398914054    mov ax, strict word 00040h                ; b8 40 00
    13990     call 0166ch                               ; e8 d8 83
     14055    call 0166ch                               ; e8 50 83
    1399114056    mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
    1399214057    mov word [bp-016h], ax                    ; 89 46 ea
     
    1405814123    mov bx, strict word 0000fh                ; bb 0f 00
    1405914124    xor cx, cx                                ; 31 c9
    14060     call 087f4h                               ; e8 b5 f4
     14125    call 0887ch                               ; e8 b5 f4
    1406114126    test ax, ax                               ; 85 c0
    14062     jne short 09346h                          ; 75 03
    14063     jmp near 0974bh                           ; e9 05 04
     14127    jne short 093ceh                          ; 75 03
     14128    jmp near 097d3h                           ; e9 05 04
    1406414129    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1406514130    xor ah, ah                                ; 30 e4
     
    1409014155    mov bx, strict word 0000fh                ; bb 0f 00
    1409114156    xor cx, cx                                ; 31 c9
    14092     call 087f4h                               ; e8 67 f4
     14157    call 0887ch                               ; e8 67 f4
    1409314158    cmp ax, strict word 00001h                ; 3d 01 00
    14094     je short 09346h                           ; 74 b4
     14159    je short 093ceh                           ; 74 b4
    1409514160    push strict byte 00000h                   ; 6a 00
    1409614161    mov bx, strict word 0000fh                ; bb 0f 00
     
    1409814163    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1409914164    mov dx, di                                ; 89 fa
    14100     call 087f4h                               ; e8 53 f4
     14165    call 0887ch                               ; e8 53 f4
    1410114166    cmp ax, strict word 00003h                ; 3d 03 00
    14102     jne short 09343h                          ; 75 9d
     14167    jne short 093cbh                          ; 75 9d
    1410314168    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1410414169    add ax, 00130h                            ; 05 30 01
     
    1412814193    mov byte [bp-008h], al                    ; 88 46 f8
    1412914194    cmp AL, strict byte 004h                  ; 3c 04
    14130     jc short 093f0h                           ; 72 03
    14131     jmp near 0974bh                           ; e9 5b 03
     14195    jc short 09478h                           ; 72 03
     14196    jmp near 097d3h                           ; e9 5b 03
    1413214197    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1413314198    add ax, 00118h                            ; 05 18 01
     
    1417914244    add cl, 00ch                              ; 80 c1 0c
    1418014245    test dx, dx                               ; 85 d2
    14181     jne short 094b6h                          ; 75 54
     14246    jne short 0953eh                          ; 75 54
    1418214247    cmp ax, 00101h                            ; 3d 01 01
    14183     jne short 094b6h                          ; 75 4f
     14248    jne short 0953eh                          ; 75 4f
    1418414249    mov es, [bp-016h]                         ; 8e 46 ea
    1418514250    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1419614261    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1419714262    mov dx, es                                ; 8c c2
    14198     call 08984h                               ; e8 dd f4
     14263    call 08a0ch                               ; e8 dd f4
    1419914264    mov byte [bp-00ah], cl                    ; 88 4e f6
    1420014265    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14201     je short 094b9h                           ; 74 08
     14266    je short 09541h                           ; 74 08
    1420214267    mov ax, strict word 00001h                ; b8 01 00
    14203     jmp short 094bbh                          ; eb 05
    14204     jmp near 09689h                           ; e9 d0 01
     14268    jmp short 09543h                          ; eb 05
     14269    jmp near 09711h                           ; e9 d0 01
    1420514270    xor ax, ax                                ; 31 c0
    1420614271    mov dl, al                                ; 88 c2
     
    1421814283    mov word [bp-01eh], ax                    ; 89 46 e2
    1421914284    cmp word [bp-014h], 00fffh                ; 81 7e ec ff 0f
    14220     jne short 0950ah                          ; 75 1e
     14285    jne short 09592h                          ; 75 1e
    1422114286    cmp di, strict byte 0ffffh                ; 83 ff ff
    14222     jne short 0950ah                          ; 75 19
     14287    jne short 09592h                          ; 75 19
    1422314288    mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
    1422414289    mov word [bp-01eh], ax                    ; 89 46 e2
     
    1425914324    mov al, byte [bp-008h]                    ; 8a 46 f8
    1426014325    cmp AL, strict byte 001h                  ; 3c 01
    14261     jc short 09585h                           ; 72 0c
    14262     jbe short 0958dh                          ; 76 12
     14326    jc short 0960dh                           ; 72 0c
     14327    jbe short 09615h                          ; 76 12
    1426314328    cmp AL, strict byte 003h                  ; 3c 03
    14264     je short 09595h                           ; 74 16
     14329    je short 0961dh                           ; 74 16
    1426514330    cmp AL, strict byte 002h                  ; 3c 02
    14266     je short 09591h                           ; 74 0e
    14267     jmp short 095ddh                          ; eb 58
     14331    je short 09619h                           ; 74 0e
     14332    jmp short 09665h                          ; eb 58
    1426814333    test al, al                               ; 84 c0
    14269     jne short 095ddh                          ; 75 54
     14334    jne short 09665h                          ; 75 54
    1427014335    mov DL, strict byte 040h                  ; b2 40
    14271     jmp short 09597h                          ; eb 0a
     14336    jmp short 0961fh                          ; eb 0a
    1427214337    mov DL, strict byte 048h                  ; b2 48
    14273     jmp short 09597h                          ; eb 06
     14338    jmp short 0961fh                          ; eb 06
    1427414339    mov DL, strict byte 050h                  ; b2 50
    14275     jmp short 09597h                          ; eb 02
     14340    jmp short 0961fh                          ; eb 02
    1427614341    mov DL, strict byte 058h                  ; b2 58
    1427714342    mov bl, dl                                ; 88 d3
     
    1427914344    xor bh, bh                                ; 30 ff
    1428014345    mov ax, bx                                ; 89 d8
    14281     call 016ach                               ; e8 09 81
     14346    call 016ach                               ; e8 81 80
    1428214347    test al, al                               ; 84 c0
    14283     je short 095ddh                           ; 74 36
     14348    je short 09665h                           ; 74 36
    1428414349    mov al, dl                                ; 88 d0
    1428514350    db  0feh, 0c0h
    1428614351    ; inc al                                    ; fe c0
    1428714352    xor ah, ah                                ; 30 e4
    14288     call 016ach                               ; e8 fc 80
     14353    call 016ach                               ; e8 74 80
    1428914354    xor ah, ah                                ; 30 e4
    1429014355    mov cx, ax                                ; 89 c1
    1429114356    sal cx, 008h                              ; c1 e1 08
    1429214357    mov al, dl                                ; 88 d0
    14293     call 016ach                               ; e8 f0 80
     14358    call 016ach                               ; e8 68 80
    1429414359    xor ah, ah                                ; 30 e4
    1429514360    add ax, cx                                ; 01 c8
     
    1429814363    add AL, strict byte 002h                  ; 04 02
    1429914364    xor ah, ah                                ; 30 e4
    14300     call 016ach                               ; e8 e0 80
     14365    call 016ach                               ; e8 58 80
    1430114366    xor ah, ah                                ; 30 e4
    1430214367    mov word [bp-02ah], ax                    ; 89 46 d6
    1430314368    mov ax, bx                                ; 89 d8
    14304     call 016ach                               ; e8 d6 80
     14369    call 016ach                               ; e8 4e 80
    1430514370    xor ah, ah                                ; 30 e4
    1430614371    mov word [bp-026h], ax                    ; 89 46 da
    14307     jmp short 095efh                          ; eb 12
     14372    jmp short 09677h                          ; eb 12
    1430814373    push word [bp-01eh]                       ; ff 76 e2
    1430914374    push word [bp-012h]                       ; ff 76 ee
     
    1431214377    mov dx, ss                                ; 8c d2
    1431314378    lea ax, [bp-02ah]                         ; 8d 46 d6
    14314     call 05a02h                               ; e8 13 c4
    14315     mov bx, 00da0h                            ; bb a0 0d
     14379    call 05a02h                               ; e8 8b c3
     14380    mov bx, 00e02h                            ; bb 02 0e
    1431614381    mov cx, ds                                ; 8c d9
    1431714382    mov ax, strict word 00004h                ; b8 04 00
    14318     call 01923h                               ; e8 29 83
     14383    call 01923h                               ; e8 a1 82
    1431914384    push word [bp-01eh]                       ; ff 76 e2
    1432014385    push word [bp-012h]                       ; ff 76 ee
     
    1433514400    mov al, byte [bp-008h]                    ; 8a 46 f8
    1433614401    push ax                                   ; 50
    14337     push 00cd6h                               ; 68 d6 0c
     14402    push 00d38h                               ; 68 38 0d
    1433814403    push strict byte 00004h                   ; 6a 04
    14339     call 01966h                               ; e8 3b 83
     14404    call 01966h                               ; e8 b3 82
    1434014405    add sp, strict byte 0001ch                ; 83 c4 1c
    1434114406    mov al, byte [bp-00ah]                    ; 8a 46 f6
     
    1436814433    mov dx, strict word 00075h                ; ba 75 00
    1436914434    mov ax, strict word 00040h                ; b8 40 00
    14370     call 01650h                               ; e8 d9 7f
     14435    call 01650h                               ; e8 51 7f
    1437114436    mov bl, al                                ; 88 c3
    1437214437    db  0feh, 0c3h
     
    1437514440    mov dx, strict word 00075h                ; ba 75 00
    1437614441    mov ax, strict word 00040h                ; b8 40 00
    14377     call 0165eh                               ; e8 d8 7f
    14378     jmp near 0973ah                           ; e9 b1 00
     14442    call 0165eh                               ; e8 50 7f
     14443    jmp near 097c2h                           ; e9 b1 00
    1437914444    cmp dx, 0eb14h                            ; 81 fa 14 eb
    14380     jne short 096e3h                          ; 75 54
     14445    jne short 0976bh                          ; 75 54
    1438114446    cmp ax, 00101h                            ; 3d 01 01
    14382     jne short 096e3h                          ; 75 4f
     14447    jne short 0976bh                          ; 75 4f
    1438314448    mov es, [bp-016h]                         ; 8e 46 ea
    1438414449    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1439514460    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1439614461    mov dx, es                                ; 8c c2
    14397     call 08984h                               ; e8 b0 f2
     14462    call 08a0ch                               ; e8 b0 f2
    1439814463    mov byte [bp-00ah], cl                    ; 88 4e f6
    1439914464    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14400     je short 096e5h                           ; 74 07
     14465    je short 0976dh                           ; 74 07
    1440114466    mov dx, strict word 00001h                ; ba 01 00
    14402     jmp short 096e7h                          ; eb 04
    14403     jmp short 0973ah                          ; eb 55
     14467    jmp short 0976fh                          ; eb 04
     14468    jmp short 097c2h                          ; eb 55
    1440414469    xor dx, dx                                ; 31 d2
    1440514470    mov bl, byte [bp-008h]                    ; 8a 5e f8
     
    1444014505    pop bp                                    ; 5d
    1444114506    retn                                      ; c3
    14442 ahci_mem_alloc_:                             ; 0xf9753 LB 0x43
     14507ahci_mem_alloc_:                             ; 0xf97db LB 0x43
    1444314508    push bp                                   ; 55
    1444414509    mov bp, sp                                ; 89 e5
     
    1445014515    mov dx, 00413h                            ; ba 13 04
    1445114516    xor ax, ax                                ; 31 c0
    14452     call 0166ch                               ; e8 09 7f
     14517    call 0166ch                               ; e8 81 7e
    1445314518    test ax, ax                               ; 85 c0
    14454     je short 0978ch                           ; 74 25
     14519    je short 09814h                           ; 74 25
    1445514520    dec ax                                    ; 48
    1445614521    mov bx, ax                                ; 89 c3
     
    1445914524    sal ax, 1                                 ; d1 e0
    1446014525    rcl dx, 1                                 ; d1 d2
    14461     loop 0976fh                               ; e2 fa
     14526    loop 097f7h                               ; e2 fa
    1446214527    mov si, ax                                ; 89 c6
    1446314528    mov di, dx                                ; 89 d7
     
    1446514530    shr di, 1                                 ; d1 ef
    1446614531    rcr si, 1                                 ; d1 de
    14467     loop 0977ch                               ; e2 fa
     14532    loop 09804h                               ; e2 fa
    1446814533    mov dx, 00413h                            ; ba 13 04
    1446914534    xor ax, ax                                ; 31 c0
    14470     call 0167ah                               ; e8 f0 7e
     14535    call 0167ah                               ; e8 68 7e
    1447114536    mov ax, si                                ; 89 f0
    1447214537    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1447814543    pop bp                                    ; 5d
    1447914544    retn                                      ; c3
    14480 ahci_hba_init_:                              ; 0xf9796 LB 0x16d
     14545ahci_hba_init_:                              ; 0xf981e LB 0x16d
    1448114546    push bp                                   ; 55
    1448214547    mov bp, sp                                ; 89 e5
     
    1449014555    mov dx, strict word 0000eh                ; ba 0e 00
    1449114556    mov ax, strict word 00040h                ; b8 40 00
    14492     call 0166ch                               ; e8 c0 7e
     14557    call 0166ch                               ; e8 38 7e
    1449314558    mov bx, 00122h                            ; bb 22 01
    1449414559    mov di, ax                                ; 89 c7
     
    1450714572    shr eax, 010h                             ; 66 c1 e8 10
    1450814573    xchg dx, ax                               ; 92
    14509     call 09753h                               ; e8 83 ff
     14574    call 097dbh                               ; e8 83 ff
    1451014575    mov word [bp-010h], ax                    ; 89 46 f0
    1451114576    test ax, ax                               ; 85 c0
    14512     jne short 097dah                          ; 75 03
    14513     jmp near 098e2h                           ; e9 08 01
     14577    jne short 09862h                          ; 75 03
     14578    jmp near 0996ah                           ; e9 08 01
    1451414579    mov ax, word [bp-010h]                    ; 8b 46 f0
    1451514580    mov es, di                                ; 8e c7
     
    1456114626    xchg dx, ax                               ; 92
    1456214627    test AL, strict byte 001h                 ; a8 01
    14563     jne short 09834h                          ; 75 de
     14628    jne short 098bch                          ; 75 de
    1456414629    xor ax, ax                                ; 31 c0
    1456514630    xor cx, cx                                ; 31 c9
     
    1457914644    mov bx, strict word 0001fh                ; bb 1f 00
    1458014645    xor cx, cx                                ; 31 c9
    14581     call 087f4h                               ; e8 7a ef
     14646    call 0887ch                               ; e8 7a ef
    1458214647    db  0feh, 0c0h
    1458314648    ; inc al                                    ; fe c0
    1458414649    mov byte [bp-00ch], al                    ; 88 46 f4
    1458514650    mov byte [bp-00eh], 000h                  ; c6 46 f2 00
    14586     jmp short 098a6h                          ; eb 21
     14651    jmp short 0992eh                          ; eb 21
    1458714652    xor al, al                                ; 30 c0
    1458814653    test al, al                               ; 84 c0
    14589     je short 0989dh                           ; 74 12
     14654    je short 09925h                           ; 74 12
    1459014655    mov bl, byte [bp-00eh]                    ; 8a 5e f2
    1459114656    xor bh, bh                                ; 30 ff
    1459214657    xor ax, ax                                ; 31 c0
    1459314658    mov dx, word [bp-010h]                    ; 8b 56 f0
    14594     call 09270h                               ; e8 d8 f9
     14659    call 092f8h                               ; e8 d8 f9
    1459514660    dec byte [bp-00ch]                        ; fe 4e f4
    14596     je short 098e0h                           ; 74 43
     14661    je short 09968h                           ; 74 43
    1459714662    inc byte [bp-00eh]                        ; fe 46 f2
    1459814663    cmp byte [bp-00eh], 020h                  ; 80 7e f2 20
    14599     jnc short 098e0h                          ; 73 3a
     14664    jnc short 09968h                          ; 73 3a
    1460014665    mov cl, byte [bp-00eh]                    ; 8a 4e f2
    1460114666    xor ch, ch                                ; 30 ed
    1460214667    mov bx, strict word 00001h                ; bb 01 00
    1460314668    xor di, di                                ; 31 ff
    14604     jcxz 098b8h                               ; e3 06
     14669    jcxz 09940h                               ; e3 06
    1460514670    sal bx, 1                                 ; d1 e3
    1460614671    rcl di, 1                                 ; d1 d7
    14607     loop 098b2h                               ; e2 fa
     14672    loop 0993ah                               ; e2 fa
    1460814673    mov ax, strict word 0000ch                ; b8 0c 00
    1460914674    xor cx, cx                                ; 31 c9
     
    1462114686    xchg dx, ax                               ; 92
    1462214687    test dx, di                               ; 85 fa
    14623     jne short 098dch                          ; 75 04
     14688    jne short 09964h                          ; 75 04
    1462414689    test ax, bx                               ; 85 d8
    14625     je short 09885h                           ; 74 a9
     14690    je short 0990dh                           ; 74 a9
    1462614691    mov AL, strict byte 001h                  ; b0 01
    14627     jmp short 09887h                          ; eb a7
     14692    jmp short 0990fh                          ; eb a7
    1462814693    xor ax, ax                                ; 31 c0
    1462914694    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1463514700    pop bp                                    ; 5d
    1463614701    retn                                      ; c3
    14637     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0ech, 099h, 0cah, 099h, 0d0h, 099h, 0d6h, 099h, 0dch
    14638     db  099h, 0e2h, 099h, 0e8h, 099h, 0ech, 099h
    14639 _ahci_init:                                  ; 0xf9903 LB 0x13a
     14702    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 074h, 09ah, 052h, 09ah, 058h, 09ah, 05eh, 09ah, 064h
     14703    db  09ah, 06ah, 09ah, 070h, 09ah, 074h, 09ah
     14704_ahci_init:                                  ; 0xf998b LB 0x13a
    1464014705    push bp                                   ; 55
    1464114706    mov bp, sp                                ; 89 e5
     
    1464514710    mov ax, 00601h                            ; b8 01 06
    1464614711    mov dx, strict word 00001h                ; ba 01 00
    14647     call 09e58h                               ; e8 44 05
     14712    call 09ee0h                               ; e8 44 05
    1464814713    mov dx, ax                                ; 89 c2
    1464914714    cmp ax, strict word 0ffffh                ; 3d ff ff
    14650     je short 09967h                           ; 74 4c
     14715    je short 099efh                           ; 74 4c
    1465114716    xor al, al                                ; 30 c0
    1465214717    shr ax, 008h                              ; c1 e8 08
     
    1465614721    xor ah, ah                                ; 30 e4
    1465714722    mov bx, strict word 00034h                ; bb 34 00
    14658     call 09e60h                               ; e8 30 05
     14723    call 09f0bh                               ; e8 53 05
    1465914724    mov cl, al                                ; 88 c1
    1466014725    test cl, cl                               ; 84 c9
    14661     je short 0996ah                           ; 74 34
     14726    je short 099f2h                           ; 74 34
    1466214727    mov bl, cl                                ; 88 cb
    1466314728    xor bh, bh                                ; 30 ff
     
    1467014735    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1467114736    mov ax, word [bp-014h]                    ; 8b 46 ec
    14672     call 09e60h                               ; e8 0b 05
     14737    call 09f0bh                               ; e8 2e 05
    1467314738    cmp AL, strict byte 012h                  ; 3c 12
    14674     je short 0996ah                           ; 74 11
     14739    je short 099f2h                           ; 74 11
    1467514740    mov bl, cl                                ; 88 cb
    1467614741    db  0feh, 0c3h
     
    1467914744    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1468014745    mov ax, word [bp-014h]                    ; 8b 46 ec
    14681     jmp short 0992dh                          ; eb c6
    14682     jmp near 09a36h                           ; e9 cc 00
     14746    jmp short 099b5h                          ; eb c6
     14747    jmp near 09abeh                           ; e9 cc 00
    1468314748    test cl, cl                               ; 84 c9
    14684     je short 09967h                           ; 74 f9
     14749    je short 099efh                           ; 74 f9
    1468514750    add cl, 002h                              ; 80 c1 02
    1468614751    mov bl, cl                                ; 88 cb
     
    1469414759    mov dx, word [bp-012h]                    ; 8b 56 ee
    1469514760    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14696     call 09e60h                               ; e8 d0 04
     14761    call 09f0bh                               ; e8 f3 04
    1469714762    cmp AL, strict byte 010h                  ; 3c 10
    14698     jne short 09967h                          ; 75 d3
     14763    jne short 099efh                          ; 75 d3
    1469914764    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1470014765    mov bl, cl                                ; 88 cb
     
    1470314768    mov dx, word [bp-012h]                    ; 8b 56 ee
    1470414769    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14705     call 09e8eh                               ; e8 e6 04
     14770    call 09f39h                               ; e8 09 05
    1470614771    mov dx, ax                                ; 89 c2
    1470714772    and ax, strict word 0000fh                ; 25 0f 00
    1470814773    sub ax, strict word 00004h                ; 2d 04 00
    1470914774    cmp ax, strict word 0000bh                ; 3d 0b 00
    14710     jnbe short 099ech                         ; 77 37
     14775    jnbe short 09a74h                         ; 77 37
    1471114776    push CS                                   ; 0e
    1471214777    pop ES                                    ; 07
    1471314778    mov cx, strict word 00008h                ; b9 08 00
    14714     mov di, 098ech                            ; bf ec 98
     14779    mov di, 09974h                            ; bf 74 99
    1471514780    repne scasb                               ; f2 ae
    1471614781    sal cx, 1                                 ; d1 e1
    1471714782    mov di, cx                                ; 89 cf
    14718     mov ax, word [cs:di-0670dh]               ; 2e 8b 85 f3 98
     14783    mov ax, word [cs:di-06685h]               ; 2e 8b 85 7b 99
    1471914784    jmp ax                                    ; ff e0
    1472014785    mov byte [bp-008h], 010h                  ; c6 46 f8 10
    14721     jmp short 099ech                          ; eb 1c
     14786    jmp short 09a74h                          ; eb 1c
    1472214787    mov byte [bp-008h], 014h                  ; c6 46 f8 14
    14723     jmp short 099ech                          ; eb 16
     14788    jmp short 09a74h                          ; eb 16
    1472414789    mov byte [bp-008h], 018h                  ; c6 46 f8 18
    14725     jmp short 099ech                          ; eb 10
     14790    jmp short 09a74h                          ; eb 10
    1472614791    mov byte [bp-008h], 01ch                  ; c6 46 f8 1c
    14727     jmp short 099ech                          ; eb 0a
     14792    jmp short 09a74h                          ; eb 0a
    1472814793    mov byte [bp-008h], 020h                  ; c6 46 f8 20
    14729     jmp short 099ech                          ; eb 04
     14794    jmp short 09a74h                          ; eb 04
    1473014795    mov byte [bp-008h], 024h                  ; c6 46 f8 24
    1473114796    mov si, dx                                ; 89 d6
     
    1473414799    mov al, byte [bp-008h]                    ; 8a 46 f8
    1473514800    test al, al                               ; 84 c0
    14736     je short 09a36h                           ; 74 3b
     14801    je short 09abeh                           ; 74 3b
    1473714802    mov bl, al                                ; 88 c3
    1473814803    xor bh, bh                                ; 30 ff
     
    1474514810    mov dx, word [bp-010h]                    ; 8b 56 f0
    1474614811    mov ax, word [bp-016h]                    ; 8b 46 ea
    14747     call 09eb8h                               ; e8 9e 04
     14812    call 09f63h                               ; e8 c1 04
    1474814813    test AL, strict byte 001h                 ; a8 01
    14749     je short 09a36h                           ; 74 18
     14814    je short 09abeh                           ; 74 18
    1475014815    and AL, strict byte 0f0h                  ; 24 f0
    1475114816    add si, ax                                ; 01 c6
     
    1475414819    mov dx, word [bp-010h]                    ; 8b 56 f0
    1475514820    mov ax, word [bp-016h]                    ; 8b 46 ea
    14756     call 09f06h                               ; e8 d5 04
     14821    call 09fb1h                               ; e8 f8 04
    1475714822    mov ax, si                                ; 89 f0
    14758     call 09796h                               ; e8 60 fd
     14823    call 0981eh                               ; e8 60 fd
    1475914824    lea sp, [bp-004h]                         ; 8d 66 fc
    1476014825    pop di                                    ; 5f
     
    1476214827    pop bp                                    ; 5d
    1476314828    retn                                      ; c3
    14764 apm_out_str_:                                ; 0xf9a3d LB 0x39
     14829apm_out_str_:                                ; 0xf9ac5 LB 0x39
    1476514830    push bp                                   ; 55
    1476614831    mov bp, sp                                ; 89 e5
     
    1476814833    mov bx, ax                                ; 89 c3
    1476914834    cmp byte [bx], 000h                       ; 80 3f 00
    14770     je short 09a52h                           ; 74 0a
     14835    je short 09adah                           ; 74 0a
    1477114836    mov al, byte [bx]                         ; 8a 07
    1477214837    out DX, AL                                ; ee
     
    1477514840    db  00ah, 0c0h
    1477614841    ; or al, al                                 ; 0a c0
    14777     jne short 09a4ah                          ; 75 f8
     14842    jne short 09ad2h                          ; 75 f8
    1477814843    lea sp, [bp-002h]                         ; 8d 66 fe
    1477914844    pop bx                                    ; 5b
    1478014845    pop bp                                    ; 5d
    1478114846    retn                                      ; c3
    14782     xchg di, ax                               ; 97
    14783     call far 09aa9h:09b1fh                    ; 9a 1f 9b a9 9a
    14784     les bx, [bp+si-064e1h]                    ; c4 9a 1f 9b
    14785     out DX, ax                                ; ef
    14786     call far 09b25h:09b1fh                    ; 9a 1f 9b 25 9b
    14787     hlt                                       ; f4
    14788     call far 09af4h:09af4h                    ; 9a f4 9a f4 9a
    14789     db  064h, 09bh
    14790     ; fs wait                                   ; 64 9b
    14791     hlt                                       ; f4
    14792     call far 09b5dh:09af4h                    ; 9a f4 9a 5d 9b
    14793 _apm_function:                               ; 0xf9a76 LB 0xf3
     14847    pop DS                                    ; 1f
     14848    wait                                      ; 9b
     14849    cmpsw                                     ; a7
     14850    wait                                      ; 9b
     14851    xor word [bp+di-064b4h], bx               ; 31 9b 4c 9b
     14852    cmpsw                                     ; a7
     14853    wait                                      ; 9b
     14854    jnbe short 09a87h                         ; 77 9b
     14855    cmpsw                                     ; a7
     14856    wait                                      ; 9b
     14857    lodsw                                     ; ad
     14858    wait                                      ; 9b
     14859    jl short 09a8dh                           ; 7c 9b
     14860    jl short 09a8fh                           ; 7c 9b
     14861    jl short 09a91h                           ; 7c 9b
     14862    in AL, DX                                 ; ec
     14863    wait                                      ; 9b
     14864    jl short 09a95h                           ; 7c 9b
     14865    jl short 09a97h                           ; 7c 9b
     14866    in ax, 09bh                               ; e5 9b
     14867_apm_function:                               ; 0xf9afe LB 0xf3
    1479414868    push bp                                   ; 55
    1479514869    mov bp, sp                                ; 89 e5
     
    1479914873    xor ah, ah                                ; 30 e4
    1480014874    cmp ax, strict word 0000eh                ; 3d 0e 00
    14801     jnbe short 09af4h                         ; 77 6c
     14875    jnbe short 09b7ch                         ; 77 6c
    1480214876    mov bx, ax                                ; 89 c3
    1480314877    add bx, ax                                ; 01 c3
    1480414878    mov dx, word [bp+018h]                    ; 8b 56 18
    1480514879    or dl, 001h                               ; 80 ca 01
    14806     jmp word [cs:bx-065a8h]                   ; 2e ff a7 58 9a
     14880    jmp word [cs:bx-06520h]                   ; 2e ff a7 e0 9a
    1480714881    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1480814882    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1480914883    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14810     jmp near 09b1fh                           ; e9 76 00
     14884    jmp near 09ba7h                           ; e9 76 00
    1481114885    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14812     mov word [bp+00ch], 0a104h                ; c7 46 0c 04 a1
     14886    mov word [bp+00ch], 0a1b4h                ; c7 46 0c b4 a1
    1481314887    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1481414888    mov ax, strict word 0fff0h                ; b8 f0 ff
    1481514889    mov word [bp+006h], ax                    ; 89 46 06
    1481614890    mov word [bp+004h], ax                    ; 89 46 04
    14817     jmp near 09b1fh                           ; e9 5b 00
     14891    jmp near 09ba7h                           ; e9 5b 00
    1481814892    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1481914893    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1482814902    mov si, ax                                ; 89 c6
    1482914903    sal esi, 010h                             ; 66 c1 e6 10
    14830     jmp near 09b1fh                           ; e9 30 00
     14904    jmp near 09ba7h                           ; e9 30 00
    1483114905    sti                                       ; fb
    1483214906    hlt                                       ; f4
    14833     jmp near 09b1fh                           ; e9 2b 00
    14834     mov bx, 00da0h                            ; bb a0 0d
     14907    jmp near 09ba7h                           ; e9 2b 00
     14908    mov bx, 00e02h                            ; bb 02 0e
    1483514909    mov cx, ds                                ; 8c d9
    1483614910    mov ax, strict word 00004h                ; b8 04 00
    14837     call 01923h                               ; e8 24 7e
     14911    call 01923h                               ; e8 9c 7d
    1483814912    push word [bp+00ch]                       ; ff 76 0c
    1483914913    push word [bp+012h]                       ; ff 76 12
    14840     push 00d29h                               ; 68 29 0d
     14914    push 00d8bh                               ; 68 8b 0d
    1484114915    push strict byte 00004h                   ; 6a 04
    14842     call 01966h                               ; e8 59 7e
     14916    call 01966h                               ; e8 d1 7d
    1484314917    add sp, strict byte 00008h                ; 83 c4 08
    1484414918    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1485214926    retn                                      ; c3
    1485314927    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14854     je short 09b4ah                           ; 74 1f
     14928    je short 09bd2h                           ; 74 1f
    1485514929    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14856     je short 09b42h                           ; 74 11
     14930    je short 09bcah                           ; 74 11
    1485714931    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14858     jne short 09b52h                          ; 75 1b
     14932    jne short 09bdah                          ; 75 1b
    1485914933    mov dx, 0040fh                            ; ba 0f 04
    14860     mov ax, 00d10h                            ; b8 10 0d
    14861     call 09a3dh                               ; e8 fd fe
    14862     jmp short 09b1fh                          ; eb dd
     14934    mov ax, 00d72h                            ; b8 72 0d
     14935    call 09ac5h                               ; e8 fd fe
     14936    jmp short 09ba7h                          ; eb dd
    1486314937    mov dx, 0040fh                            ; ba 0f 04
    14864     mov ax, 00d18h                            ; b8 18 0d
    14865     jmp short 09b3dh                          ; eb f3
     14938    mov ax, 00d7ah                            ; b8 7a 0d
     14939    jmp short 09bc5h                          ; eb f3
    1486614940    mov dx, 0040fh                            ; ba 0f 04
    14867     mov ax, 00d20h                            ; b8 20 0d
    14868     jmp short 09b3dh                          ; eb eb
     14941    mov ax, 00d82h                            ; b8 82 0d
     14942    jmp short 09bc5h                          ; eb eb
    1486914943    or ah, 00ah                               ; 80 cc 0a
    1487014944    mov word [bp+012h], ax                    ; 89 46 12
    1487114945    mov word [bp+018h], dx                    ; 89 56 18
    14872     jmp short 09b1fh                          ; eb c2
     14946    jmp short 09ba7h                          ; eb c2
    1487314947    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14874     jmp short 09b1fh                          ; eb bb
     14948    jmp short 09ba7h                          ; eb bb
    1487514949    or ah, 080h                               ; 80 cc 80
    14876     jmp short 09b55h                          ; eb ec
    14877 pci16_select_reg_:                           ; 0xf9b69 LB 0x24
     14950    jmp short 09bddh                          ; eb ec
     14951pci16_select_reg_:                           ; 0xf9bf1 LB 0x24
    1487814952    push bp                                   ; 55
    1487914953    mov bp, sp                                ; 89 e5
     
    1489214966    pop bp                                    ; 5d
    1489314967    retn                                      ; c3
    14894 pci16_find_device_:                          ; 0xf9b8d LB 0xf9
     14968pci16_find_device_:                          ; 0xf9c15 LB 0xf9
    1489514969    push bp                                   ; 55
    1489614970    mov bp, sp                                ; 89 e5
     
    1490614980    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1490714981    test bl, 007h                             ; f6 c3 07
    14908     jne short 09bd5h                          ; 75 2d
     14982    jne short 09c5dh                          ; 75 2d
    1490914983    mov dx, strict word 0000eh                ; ba 0e 00
    1491014984    mov ax, bx                                ; 89 d8
    14911     call 09b69h                               ; e8 b9 ff
     14985    call 09bf1h                               ; e8 b9 ff
    1491214986    mov dx, 00cfeh                            ; ba fe 0c
    1491314987    in AL, DX                                 ; ec
     
    1491614990    mov byte [bp-006h], al                    ; 88 46 fa
    1491714991    cmp AL, strict byte 0ffh                  ; 3c ff
    14918     jne short 09bc3h                          ; 75 06
     14992    jne short 09c4bh                          ; 75 06
    1491914993    add bx, strict byte 00008h                ; 83 c3 08
    14920     jmp near 09c56h                           ; e9 93 00
     14994    jmp near 09cdeh                           ; e9 93 00
    1492114995    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14922     je short 09bd0h                           ; 74 07
     14996    je short 09c58h                           ; 74 07
    1492314997    mov word [bp-010h], strict word 00001h    ; c7 46 f0 01 00
    14924     jmp short 09bd5h                          ; eb 05
     14998    jmp short 09c5dh                          ; eb 05
    1492514999    mov word [bp-010h], strict word 00008h    ; c7 46 f0 08 00
    1492615000    mov al, byte [bp-006h]                    ; 8a 46 fa
    1492715001    and AL, strict byte 007h                  ; 24 07
    1492815002    cmp AL, strict byte 001h                  ; 3c 01
    14929     jne short 09bfdh                          ; 75 1f
     15003    jne short 09c85h                          ; 75 1f
    1493015004    mov ax, bx                                ; 89 d8
    1493115005    shr ax, 008h                              ; c1 e8 08
    1493215006    test ax, ax                               ; 85 c0
    14933     jne short 09bfdh                          ; 75 16
     15007    jne short 09c85h                          ; 75 16
    1493415008    mov dx, strict word 0001ah                ; ba 1a 00
    1493515009    mov ax, bx                                ; 89 d8
    14936     call 09b69h                               ; e8 7a ff
     15010    call 09bf1h                               ; e8 7a ff
    1493715011    mov dx, 00cfeh                            ; ba fe 0c
    1493815012    in AL, DX                                 ; ec
     
    1494015014    ; sub ah, ah                                ; 2a e4
    1494115015    cmp al, byte [bp-008h]                    ; 3a 46 f8
    14942     jbe short 09bfdh                          ; 76 03
     15016    jbe short 09c85h                          ; 76 03
    1494315017    mov byte [bp-008h], al                    ; 88 46 f8
    1494415018    test di, di                               ; 85 ff
    14945     je short 09c06h                           ; 74 05
     15019    je short 09c8eh                           ; 74 05
    1494615020    mov dx, strict word 00008h                ; ba 08 00
    14947     jmp short 09c08h                          ; eb 02
     15021    jmp short 09c90h                          ; eb 02
    1494815022    xor dx, dx                                ; 31 d2
    1494915023    mov ax, bx                                ; 89 d8
    14950     call 09b69h                               ; e8 5c ff
     15024    call 09bf1h                               ; e8 5c ff
    1495115025    mov dx, 00cfch                            ; ba fc 0c
    1495215026    in eax, DX                                ; 66 ed
     
    1495915033    mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
    1496015034    test di, di                               ; 85 ff
    14961     je short 09c37h                           ; 74 0f
     15035    je short 09cbfh                           ; 74 0f
    1496215036    mov cx, strict word 00008h                ; b9 08 00
    1496315037    shr dx, 1                                 ; d1 ea
    1496415038    rcr ax, 1                                 ; d1 d8
    14965     loop 09c2bh                               ; e2 fa
     15039    loop 09cb3h                               ; e2 fa
    1496615040    mov word [bp-00ah], ax                    ; 89 46 f6
    1496715041    mov word [bp-00ch], dx                    ; 89 56 f4
    1496815042    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1496915043    cmp ax, word [bp-014h]                    ; 3b 46 ec
    14970     jne short 09c47h                          ; 75 08
     15044    jne short 09ccfh                          ; 75 08
    1497115045    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1497215046    cmp ax, word [bp-012h]                    ; 3b 46 ee
    14973     je short 09c4dh                           ; 74 06
     15047    je short 09cd5h                           ; 74 06
    1497415048    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    14975     je short 09c53h                           ; 74 06
     15049    je short 09cdbh                           ; 74 06
    1497615050    dec si                                    ; 4e
    1497715051    cmp si, strict byte 0ffffh                ; 83 fe ff
    14978     je short 09c67h                           ; 74 14
     15052    je short 09cefh                           ; 74 14
    1497915053    add bx, word [bp-010h]                    ; 03 5e f0
    1498015054    mov dx, bx                                ; 89 da
     
    1498315057    xor ah, ah                                ; 30 e4
    1498415058    cmp dx, ax                                ; 39 c2
    14985     jnbe short 09c67h                         ; 77 03
    14986     jmp near 09ba3h                           ; e9 3c ff
     15059    jnbe short 09cefh                         ; 77 03
     15060    jmp near 09c2bh                           ; e9 3c ff
    1498715061    cmp si, strict byte 0ffffh                ; 83 fe ff
    14988     jne short 09c70h                          ; 75 04
     15062    jne short 09cf8h                          ; 75 04
    1498915063    mov ax, bx                                ; 89 d8
    14990     jmp short 09c73h                          ; eb 03
     15064    jmp short 09cfbh                          ; eb 03
    1499115065    mov ax, strict word 0ffffh                ; b8 ff ff
    1499215066    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1499515069    pop bp                                    ; 5d
    1499615070    retn                                      ; c3
    14997     db  067h, 09dh
    14998     ; popfw                                     ; 67 9d
    14999     sbb byte [di-0626eh], 0a6h                ; 80 9d 92 9d a6
     15071    out DX, ax                                ; ef
    1500015072    popfw                                     ; 9d
    15001     mov ax, 0cb9dh                            ; b8 9d cb
    15002     popfw                                     ; 9d
    15003 _pci16_function:                             ; 0xf9c86 LB 0x1d2
     15073    or byte [bp-061e6h], bl                   ; 08 9e 1a 9e
     15074    db  02eh, 09eh
     15075    ; cs sahf                                   ; 2e 9e
     15076    inc ax                                    ; 40
     15077    sahf                                      ; 9e
     15078    push bx                                   ; 53
     15079    sahf                                      ; 9e
     15080_pci16_function:                             ; 0xf9d0e LB 0x1d2
    1500415081    push bp                                   ; 55
    1500515082    mov bp, sp                                ; 89 e5
     
    1501515092    xor ah, ah                                ; 30 e4
    1501615093    cmp bx, strict byte 00003h                ; 83 fb 03
    15017     jc short 09cb8h                           ; 72 13
    15018     jbe short 09d0bh                          ; 76 64
     15094    jc short 09d40h                           ; 72 13
     15095    jbe short 09d93h                          ; 76 64
    1501915096    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15020     je short 09d13h                           ; 74 67
     15097    je short 09d9bh                           ; 74 67
    1502115098    cmp bx, strict byte 00008h                ; 83 fb 08
    15022     jc short 09cc2h                           ; 72 11
     15099    jc short 09d4ah                           ; 72 11
    1502315100    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15024     jbe short 09d16h                          ; 76 60
    15025     jmp short 09cc2h                          ; eb 0a
     15101    jbe short 09d9eh                          ; 76 60
     15102    jmp short 09d4ah                          ; eb 0a
    1502615103    cmp bx, strict byte 00002h                ; 83 fb 02
    15027     je short 09ce1h                           ; 74 24
     15104    je short 09d69h                           ; 74 24
    1502815105    cmp bx, strict byte 00001h                ; 83 fb 01
    15029     je short 09cc5h                           ; 74 03
    15030     jmp near 09e24h                           ; e9 5f 01
     15106    je short 09d4dh                           ; 74 03
     15107    jmp near 09each                           ; e9 5f 01
    1503115108    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1503215109    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1503415111    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1503515112    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15036     jmp near 09e51h                           ; e9 70 01
     15113    jmp near 09ed9h                           ; e9 70 01
    1503715114    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15038     jne short 09cedh                          ; 75 06
     15115    jne short 09d75h                          ; 75 06
    1503915116    or ah, 083h                               ; 80 cc 83
    15040     jmp near 09e4ah                           ; e9 5d 01
     15117    jmp near 09ed2h                           ; e9 5d 01
    1504115118    mov bx, word [bp+008h]                    ; 8b 5e 08
    1504215119    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1504315120    mov ax, word [bp+018h]                    ; 8b 46 18
    1504415121    xor cx, cx                                ; 31 c9
    15045     call 09b8dh                               ; e8 92 fe
     15122    call 09c15h                               ; e8 92 fe
    1504615123    cmp ax, strict word 0ffffh                ; 3d ff ff
    15047     jne short 09d0dh                          ; 75 0d
     15124    jne short 09d95h                          ; 75 0d
    1504815125    mov ax, word [bp+020h]                    ; 8b 46 20
    1504915126    xor ah, ah                                ; 30 e4
    1505015127    or ah, 086h                               ; 80 cc 86
    15051     jmp near 09e4ah                           ; e9 3f 01
    15052     jmp short 09d18h                          ; eb 0b
     15128    jmp near 09ed2h                           ; e9 3f 01
     15129    jmp short 09da0h                          ; eb 0b
    1505315130    mov word [bp+014h], ax                    ; 89 46 14
    15054     jmp near 09e51h                           ; e9 3e 01
    15055     jmp near 09ddfh                           ; e9 c9 00
    15056     jmp short 09d3dh                          ; eb 25
     15131    jmp near 09ed9h                           ; e9 3e 01
     15132    jmp near 09e67h                           ; e9 c9 00
     15133    jmp short 09dc5h                          ; eb 25
    1505715134    mov bx, word [bp+008h]                    ; 8b 5e 08
    1505815135    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1505915136    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1506015137    mov cx, strict word 00001h                ; b9 01 00
    15061     call 09b8dh                               ; e8 66 fe
     15138    call 09c15h                               ; e8 66 fe
    1506215139    cmp ax, strict word 0ffffh                ; 3d ff ff
    15063     jne short 09d37h                          ; 75 0b
     15140    jne short 09dbfh                          ; 75 0b
    1506415141    mov ax, word [bp+020h]                    ; 8b 46 20
    1506515142    xor ah, ah                                ; 30 e4
    1506615143    or ah, 086h                               ; 80 cc 86
    15067     jmp near 09e4ah                           ; e9 13 01
     15144    jmp near 09ed2h                           ; e9 13 01
    1506815145    mov word [bp+014h], ax                    ; 89 46 14
    15069     jmp near 09e51h                           ; e9 14 01
     15146    jmp near 09ed9h                           ; e9 14 01
    1507015147    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15071     jc short 09d4ah                           ; 72 06
     15148    jc short 09dd2h                           ; 72 06
    1507215149    or ah, 087h                               ; 80 cc 87
    15073     jmp near 09e4ah                           ; e9 00 01
     15150    jmp near 09ed2h                           ; e9 00 01
    1507415151    mov dx, word [bp+004h]                    ; 8b 56 04
    1507515152    mov ax, word [bp+014h]                    ; 8b 46 14
    15076     call 09b69h                               ; e8 16 fe
     15153    call 09bf1h                               ; e8 16 fe
    1507715154    mov bx, word [bp+020h]                    ; 8b 5e 20
    1507815155    xor bh, bh                                ; 30 ff
    1507915156    sub bx, strict byte 00008h                ; 83 eb 08
    1508015157    cmp bx, strict byte 00005h                ; 83 fb 05
    15081     jnbe short 09dc8h                         ; 77 68
     15158    jnbe short 09e50h                         ; 77 68
    1508215159    add bx, bx                                ; 01 db
    15083     jmp word [cs:bx-06386h]                   ; 2e ff a7 7a 9c
     15160    jmp word [cs:bx-062feh]                   ; 2e ff a7 02 9d
    1508415161    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1508515162    xor bl, bl                                ; 30 db
     
    1509215169    or bx, ax                                 ; 09 c3
    1509315170    mov word [bp+01ch], bx                    ; 89 5e 1c
    15094     jmp short 09dc8h                          ; eb 48
     15171    jmp short 09e50h                          ; eb 48
    1509515172    mov dx, word [bp+004h]                    ; 8b 56 04
    1509615173    xor dh, dh                                ; 30 f6
     
    1509915176    in ax, DX                                 ; ed
    1510015177    mov word [bp+01ch], ax                    ; 89 46 1c
    15101     jmp short 09dc8h                          ; eb 36
     15178    jmp short 09e50h                          ; eb 36
    1510215179    mov dx, 00cfch                            ; ba fc 0c
    1510315180    in eax, DX                                ; 66 ed
     
    1510815185    mov word [bp+01ch], ax                    ; 89 46 1c
    1510915186    mov word [bp+01eh], dx                    ; 89 56 1e
    15110     jmp short 09dc8h                          ; eb 22
     15187    jmp short 09e50h                          ; eb 22
    1511115188    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1511215189    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1511515192    add dx, 00cfch                            ; 81 c2 fc 0c
    1511615193    out DX, AL                                ; ee
    15117     jmp short 09dc8h                          ; eb 10
     15194    jmp short 09e50h                          ; eb 10
    1511815195    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1511915196    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1512215199    add dx, 00cfch                            ; 81 c2 fc 0c
    1512315200    out DX, ax                                ; ef
    15124     jmp near 09e51h                           ; e9 86 00
     15201    jmp near 09ed9h                           ; e9 86 00
    1512515202    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1512615203    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1513115208    ; mov ax, cx                                ; 8b c1
    1513215209    out DX, eax                               ; 66 ef
    15133     jmp short 09e51h                          ; eb 72
     15210    jmp short 09ed9h                          ; eb 72
    1513415211    mov bx, word [bp+004h]                    ; 8b 5e 04
    1513515212    mov es, [bp+026h]                         ; 8e 46 26
     
    1513815215    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1513915216    cmp cx, word [es:bx]                      ; 26 3b 0f
    15140     jbe short 09e05h                          ; 76 11
     15217    jbe short 09e8dh                          ; 76 11
    1514115218    mov ax, word [bp+020h]                    ; 8b 46 20
    1514215219    xor ah, ah                                ; 30 e4
     
    1514415221    mov word [bp+020h], ax                    ; 89 46 20
    1514515222    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15146     jmp short 09e19h                          ; eb 14
     15223    jmp short 09ea1h                          ; eb 14
    1514715224    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1514815225    mov si, 0f1a0h                            ; be a0 f1
     
    1515615233    les bx, [bp-008h]                         ; c4 5e f8
    1515715234    mov word [es:bx], ax                      ; 26 89 07
    15158     jmp short 09e51h                          ; eb 2d
    15159     mov bx, 00da0h                            ; bb a0 0d
     15235    jmp short 09ed9h                          ; eb 2d
     15236    mov bx, 00e02h                            ; bb 02 0e
    1516015237    mov cx, ds                                ; 8c d9
    1516115238    mov ax, strict word 00004h                ; b8 04 00
    15162     call 01923h                               ; e8 f4 7a
     15239    call 01923h                               ; e8 6c 7a
    1516315240    mov ax, word [bp+014h]                    ; 8b 46 14
    1516415241    push ax                                   ; 50
    1516515242    mov ax, word [bp+020h]                    ; 8b 46 20
    1516615243    push ax                                   ; 50
    15167     push 00d5ch                               ; 68 5c 0d
     15244    push 00dbeh                               ; 68 be 0d
    1516815245    push strict byte 00004h                   ; 6a 04
    15169     call 01966h                               ; e8 27 7b
     15246    call 01966h                               ; e8 9f 7a
    1517015247    add sp, strict byte 00008h                ; 83 c4 08
    1517115248    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1517915256    pop bp                                    ; 5d
    1518015257    retn                                      ; c3
    15181 pci_find_classcode_:                         ; 0xf9e58 LB 0x8
     15258pci_find_classcode_:                         ; 0xf9ee0 LB 0x8
    1518215259    push bp                                   ; 55
    1518315260    mov bp, sp                                ; 89 e5
     
    1518515262    pop bp                                    ; 5d
    1518615263    retn                                      ; c3
    15187 pci_read_config_byte_:                       ; 0xf9e60 LB 0x2e
     15264pci_find_device_:                            ; 0xf9ee8 LB 0x23
     15265    push bp                                   ; 55
     15266    mov bp, sp                                ; 89 e5
     15267    push bx                                   ; 53
     15268    push cx                                   ; 51
     15269    push si                                   ; 56
     15270    mov cx, dx                                ; 89 d1
     15271    xor si, si                                ; 31 f6
     15272    mov dx, ax                                ; 89 c2
     15273    mov ax, 0b102h                            ; b8 02 b1
     15274    int 01ah                                  ; cd 1a
     15275    cmp ah, 000h                              ; 80 fc 00
     15276    je short 09f01h                           ; 74 03
     15277    mov bx, strict word 0ffffh                ; bb ff ff
     15278    mov ax, bx                                ; 89 d8
     15279    lea sp, [bp-006h]                         ; 8d 66 fa
     15280    pop si                                    ; 5e
     15281    pop cx                                    ; 59
     15282    pop bx                                    ; 5b
     15283    pop bp                                    ; 5d
     15284    retn                                      ; c3
     15285pci_read_config_byte_:                       ; 0xf9f0b LB 0x2e
    1518815286    push bp                                   ; 55
    1518915287    mov bp, sp                                ; 89 e5
     
    1521115309    pop bp                                    ; 5d
    1521215310    retn                                      ; c3
    15213 pci_read_config_word_:                       ; 0xf9e8e LB 0x2a
     15311pci_read_config_word_:                       ; 0xf9f39 LB 0x2a
    1521415312    push bp                                   ; 55
    1521515313    mov bp, sp                                ; 89 e5
     
    1523515333    pop bp                                    ; 5d
    1523615334    retn                                      ; c3
    15237 pci_read_config_dword_:                      ; 0xf9eb8 LB 0x4e
     15335pci_read_config_dword_:                      ; 0xf9f63 LB 0x4e
    1523815336    push bp                                   ; 55
    1523915337    mov bp, sp                                ; 89 e5
     
    1525715355    int 01ah                                  ; cd 1a
    1525815356    test cx, cx                               ; 85 c9
    15259     jne short 09ef7h                          ; 75 14
     15357    jne short 09fa2h                          ; 75 14
    1526015358    mov al, byte [bp-006h]                    ; 8a 46 fa
    1526115359    xor ah, ah                                ; 30 e4
     
    1526715365    int 01ah                                  ; cd 1a
    1526815366    test cx, cx                               ; 85 c9
    15269     je short 09efch                           ; 74 05
     15367    je short 09fa7h                           ; 74 05
    1527015368    mov ax, strict word 00001h                ; b8 01 00
    15271     jmp short 09efeh                          ; eb 02
     15369    jmp short 09fa9h                          ; eb 02
    1527215370    xor ax, ax                                ; 31 c0
    1527315371    cwd                                       ; 99
     
    1527715375    pop bp                                    ; 5d
    1527815376    retn                                      ; c3
    15279 pci_write_config_word_:                      ; 0xf9f06 LB 0x25
     15377pci_write_config_word_:                      ; 0xf9fb1 LB 0x25
    1528015378    push bp                                   ; 55
    1528115379    mov bp, sp                                ; 89 e5
     
    1529715395    pop bp                                    ; 5d
    1529815396    retn                                      ; c3
    15299 vds_is_present_:                             ; 0xf9f2b LB 0x1d
     15397vds_is_present_:                             ; 0xf9fd6 LB 0x1d
    1530015398    push bx                                   ; 53
    1530115399    push bp                                   ; 55
     
    1530515403    mov es, ax                                ; 8e c0
    1530615404    test byte [es:bx], 020h                   ; 26 f6 07 20
    15307     je short 09f43h                           ; 74 06
     15405    je short 09feeh                           ; 74 06
    1530815406    mov ax, strict word 00001h                ; b8 01 00
    1530915407    pop bp                                    ; 5d
     
    1531415412    pop bx                                    ; 5b
    1531515413    retn                                      ; c3
    15316 vds_real_to_lin_:                            ; 0xf9f48 LB 0x1e
     15414vds_real_to_lin_:                            ; 0xf9ff3 LB 0x1e
    1531715415    push bx                                   ; 53
    1531815416    push cx                                   ; 51
     
    1532515423    sal ax, 1                                 ; d1 e0
    1532615424    rcl dx, 1                                 ; d1 d2
    15327     loop 09f56h                               ; e2 fa
     15425    loop 0a001h                               ; e2 fa
    1532815426    xor cx, cx                                ; 31 c9
    1532915427    add ax, bx                                ; 01 d8
     
    1533315431    pop bx                                    ; 5b
    1533415432    retn                                      ; c3
    15335 vds_build_sg_list_:                          ; 0xf9f66 LB 0x77
     15433vds_build_sg_list_:                          ; 0xfa011 LB 0x77
    1533615434    push bp                                   ; 55
    1533715435    mov bp, sp                                ; 89 e5
     
    1534715445    mov bx, word [bp+006h]                    ; 8b 5e 06
    1534815446    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15349     call 09f48h                               ; e8 c3 ff
     15447    call 09ff3h                               ; e8 c3 ff
    1535015448    mov es, si                                ; 8e c6
    1535115449    mov word [es:di+004h], ax                 ; 26 89 45 04
    1535215450    mov word [es:di+006h], dx                 ; 26 89 55 06
    1535315451    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15354     call 09f2bh                               ; e8 93 ff
     15452    call 09fd6h                               ; e8 93 ff
    1535515453    test ax, ax                               ; 85 c0
    15356     je short 09fadh                           ; 74 11
     15454    je short 0a058h                           ; 74 11
    1535715455    mov es, si                                ; 8e c6
    1535815456    mov ax, 08105h                            ; b8 05 81
    1535915457    mov dx, strict word 00000h                ; ba 00 00
    1536015458    int 04bh                                  ; cd 4b
    15361     jc short 09faah                           ; 72 02
     15459    jc short 0a055h                           ; 72 02
    1536215460    db  032h, 0c0h
    1536315461    ; xor al, al                                ; 32 c0
    1536415462    cbw                                       ; 98
    15365     jmp short 09fd4h                          ; eb 27
     15463    jmp short 0a07fh                          ; eb 27
    1536615464    mov es, si                                ; 8e c6
    1536715465    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1538015478    pop bp                                    ; 5d
    1538115479    retn 00004h                               ; c2 04 00
    15382 vds_free_sg_list_:                           ; 0xf9fdd LB 0x33
     15480vds_free_sg_list_:                           ; 0xfa088 LB 0x38
    1538315481    push bp                                   ; 55
    1538415482    mov bp, sp                                ; 89 e5
     
    1538615484    push di                                   ; 57
    1538715485    mov bx, ax                                ; 89 c3
    15388     call 09f2bh                               ; e8 44 ff
     15486    call 09fd6h                               ; e8 44 ff
    1538915487    test ax, ax                               ; 85 c0
    15390     je short 09ffch                           ; 74 11
     15488    je short 0a0a7h                           ; 74 11
    1539115489    mov di, bx                                ; 89 df
    1539215490    mov es, dx                                ; 8e c2
     
    1539415492    mov dx, strict word 00000h                ; ba 00 00
    1539515493    int 04bh                                  ; cd 4b
    15396     jc short 09ffbh                           ; 72 02
     15494    jc short 0a0a6h                           ; 72 02
    1539715495    db  032h, 0c0h
    1539815496    ; xor al, al                                ; 32 c0
     
    1540515503    pop bp                                    ; 5d
    1540615504    retn                                      ; c3
    15407     times 0x5 db 0
    15408 __U4M:                                       ; 0xfa010 LB 0x20
     15505    times 0xa db 0
     15506__U4M:                                       ; 0xfa0c0 LB 0x20
    1540915507    pushfw                                    ; 9c
    1541015508    push si                                   ; 56
     
    1543315531    retn                                      ; c3
    1543415532    times 0x4 db 0
    15435 __U4D:                                       ; 0xfa030 LB 0x30
     15533__U4D:                                       ; 0xfa0e0 LB 0x30
    1543615534    pushfw                                    ; 9c
    1543715535    push DS                                   ; 1e
     
    1544815546    push dx                                   ; 52
    1544915547    push ax                                   ; 50
    15450     call 0a115h                               ; e8 d0 00
     15548    call 0a1c5h                               ; e8 d0 00
    1545115549    mov cx, word [bp-002h]                    ; 8b 4e fe
    1545215550    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1545915557    retn                                      ; c3
    1546015558    times 0xe db 0
    15461 __U8RS:                                      ; 0xfa060 LB 0x10
     15559__U8RS:                                      ; 0xfa110 LB 0x10
    1546215560    test si, si                               ; 85 f6
    15463     je short 0a06fh                           ; 74 0b
     15561    je short 0a11fh                           ; 74 0b
    1546415562    shr ax, 1                                 ; d1 e8
    1546515563    rcr bx, 1                                 ; d1 db
     
    1546715565    rcr dx, 1                                 ; d1 da
    1546815566    dec si                                    ; 4e
    15469     jne short 0a064h                          ; 75 f5
     15567    jne short 0a114h                          ; 75 f5
    1547015568    retn                                      ; c3
    15471 __U8LS:                                      ; 0xfa070 LB 0x10
     15569__U8LS:                                      ; 0xfa120 LB 0x10
    1547215570    test si, si                               ; 85 f6
    15473     je short 0a07fh                           ; 74 0b
     15571    je short 0a12fh                           ; 74 0b
    1547415572    sal dx, 1                                 ; d1 e2
    1547515573    rcl cx, 1                                 ; d1 d1
     
    1547715575    rcl ax, 1                                 ; d1 d0
    1547815576    dec si                                    ; 4e
    15479     jne short 0a074h                          ; 75 f5
     15577    jne short 0a124h                          ; 75 f5
    1548015578    retn                                      ; c3
    15481 _fmemset_:                                   ; 0xfa080 LB 0x10
     15579_fmemset_:                                   ; 0xfa130 LB 0x10
    1548215580    push di                                   ; 57
    1548315581    mov es, dx                                ; 8e c2
     
    1549015588    retn                                      ; c3
    1549115589    times 0x3 db 0
    15492 _fmemcpy_:                                   ; 0xfa090 LB 0x3a
     15590_fmemcpy_:                                   ; 0xfa140 LB 0x3a
    1549315591    push bp                                   ; 55
    1549415592    db  08bh, 0ech
     
    1551215610    pop bp                                    ; 5d
    1551315611    retn                                      ; c3
    15514     db  000h, 000h, 000h, 000h, 000h, 000h, 0e0h, 0a0h, 0e2h, 0a0h, 0e6h, 0a0h, 0e6h, 0a0h, 0e6h, 0a0h
    15515     db  0e8h, 0a0h, 0e8h, 0a0h, 0eah, 0a0h, 0eeh, 0a0h, 0eeh, 0a0h, 0f0h, 0a0h, 0f5h, 0a0h, 0f7h, 0a0h
    15516 apm_worker:                                  ; 0xfa0ca LB 0x3a
     15612    add byte [bx+si], al                      ; 00 00
     15613    add byte [bx+si], al                      ; 00 00
     15614    add byte [bx+si], al                      ; 00 00
     15615    nop                                       ; 90
     15616    mov ax, word [0a192h]                     ; a1 92 a1
     15617    xchg si, ax                               ; 96
     15618    mov ax, word [0a196h]                     ; a1 96 a1
     15619    xchg si, ax                               ; 96
     15620    mov ax, word [0a198h]                     ; a1 98 a1
     15621    cbw                                       ; 98
     15622    mov ax, word [0a19ah]                     ; a1 9a a1
     15623    sahf                                      ; 9e
     15624    mov ax, word [0a19eh]                     ; a1 9e a1
     15625    mov AL, byte [0a5a1h]                     ; a0 a1 a5
     15626    mov ax, word [0a1a7h]                     ; a1 a7 a1
     15627apm_worker:                                  ; 0xfa17a LB 0x3a
    1551715628    sti                                       ; fb
    1551815629    push ax                                   ; 50
     
    1552615637    pop ax                                    ; 58
    1552715638    mov AH, strict byte 053h                  ; b4 53
    15528     jnc short 0a100h                          ; 73 25
    15529     jmp word [cs:bp-05f50h]                   ; 2e ff a6 b0 a0
    15530     jmp short 0a0feh                          ; eb 1c
     15639    jnc short 0a1b0h                          ; 73 25
     15640    jmp word [cs:bp-05ea0h]                   ; 2e ff a6 60 a1
     15641    jmp short 0a1aeh                          ; eb 1c
    1553115642    sti                                       ; fb
    1553215643    hlt                                       ; f4
    15533     jmp short 0a0feh                          ; eb 18
    15534     jmp short 0a0feh                          ; eb 16
    15535     jmp short 0a100h                          ; eb 16
     15644    jmp short 0a1aeh                          ; eb 18
     15645    jmp short 0a1aeh                          ; eb 16
     15646    jmp short 0a1b0h                          ; eb 16
    1553615647    mov AH, strict byte 080h                  ; b4 80
    15537     jmp short 0a102h                          ; eb 14
    15538     jmp short 0a100h                          ; eb 10
     15648    jmp short 0a1b2h                          ; eb 14
     15649    jmp short 0a1b0h                          ; eb 10
    1553915650    mov ax, 00102h                            ; b8 02 01
    15540     jmp short 0a0feh                          ; eb 09
    15541     jmp short 0a0feh                          ; eb 07
     15651    jmp short 0a1aeh                          ; eb 09
     15652    jmp short 0a1aeh                          ; eb 07
    1554215653    mov BL, strict byte 000h                  ; b3 00
    1554315654    mov cx, strict word 00000h                ; b9 00 00
    15544     jmp short 0a0feh                          ; eb 00
     15655    jmp short 0a1aeh                          ; eb 00
    1554515656    clc                                       ; f8
    1554615657    retn                                      ; c3
     
    1554815659    stc                                       ; f9
    1554915660    retn                                      ; c3
    15550 apm_pm16_entry:                              ; 0xfa104 LB 0x11
     15661apm_pm16_entry:                              ; 0xfa1b4 LB 0x11
    1555115662    mov AH, strict byte 002h                  ; b4 02
    1555215663    push DS                                   ; 1e
     
    1555615667    add bp, strict byte 00008h                ; 83 c5 08
    1555715668    mov ds, bp                                ; 8e dd
    15558     call 0a0cah                               ; e8 b8 ff
     15669    call 0a17ah                               ; e8 b8 ff
    1555915670    pop bp                                    ; 5d
    1556015671    pop DS                                    ; 1f
    1556115672    retf                                      ; cb
    15562 _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     15673_DoUInt32Div:                                ; 0xfa1c5 LB 0x26b
    1556315674    push bp                                   ; 55
    1556415675    mov bp, sp                                ; 89 e5
     
    1557815689    mov [bp-006h], ds                         ; 8c 5e fa
    1557915690    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15580     jne short 0a165h                          ; 75 22
     15691    jne short 0a215h                          ; 75 22
    1558115692    mov ax, word [bx]                         ; 8b 07
    1558215693    test ax, ax                               ; 85 c0
    15583     je short 0a162h                           ; 74 19
     15694    je short 0a212h                           ; 74 19
    1558415695    cmp ax, strict word 00001h                ; 3d 01 00
    15585     jne short 0a165h                          ; 75 17
     15696    jne short 0a215h                          ; 75 17
    1558615697    xor ax, ax                                ; 31 c0
    1558715698    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1559115702    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1559215703    mov word [bp+006h], ax                    ; 89 46 06
    15593     jmp near 0a36dh                           ; e9 08 02
     15704    jmp near 0a41dh                           ; e9 08 02
    1559415705    lds bx, [bp-00ch]                         ; c5 5e f4
    1559515706    mov ax, word [bx+002h]                    ; 8b 47 02
    1559615707    mov ds, [bp-006h]                         ; 8e 5e fa
    1559715708    cmp ax, word [si+002h]                    ; 3b 44 02
    15598     je short 0a18bh                           ; 74 18
     15709    je short 0a23bh                           ; 74 18
    1559915710    mov ds, [bp-00ah]                         ; 8e 5e f6
    1560015711    mov ax, word [bx+002h]                    ; 8b 47 02
    1560115712    mov ds, [bp-006h]                         ; 8e 5e fa
    1560215713    cmp ax, word [si+002h]                    ; 3b 44 02
    15603     jbe short 0a186h                          ; 76 05
     15714    jbe short 0a236h                          ; 76 05
    1560415715    mov ax, strict word 00001h                ; b8 01 00
    15605     jmp short 0a1ach                          ; eb 26
     15716    jmp short 0a25ch                          ; eb 26
    1560615717    mov ax, strict word 0ffffh                ; b8 ff ff
    15607     jmp short 0a1ach                          ; eb 21
     15718    jmp short 0a25ch                          ; eb 21
    1560815719    mov ds, [bp-00ah]                         ; 8e 5e f6
    1560915720    mov ax, word [bx]                         ; 8b 07
    1561015721    mov ds, [bp-006h]                         ; 8e 5e fa
    1561115722    cmp ax, word [si]                         ; 3b 04
    15612     je short 0a1aah                           ; 74 13
     15723    je short 0a25ah                           ; 74 13
    1561315724    mov ds, [bp-00ah]                         ; 8e 5e f6
    1561415725    mov ax, word [bx]                         ; 8b 07
    1561515726    mov ds, [bp-006h]                         ; 8e 5e fa
    1561615727    cmp ax, word [si]                         ; 3b 04
    15617     jbe short 0a1a5h                          ; 76 02
    15618     jmp short 0a181h                          ; eb dc
     15728    jbe short 0a255h                          ; 76 02
     15729    jmp short 0a231h                          ; eb dc
    1561915730    mov ax, strict word 0ffffh                ; b8 ff ff
    15620     jmp short 0a1ach                          ; eb 02
     15731    jmp short 0a25ch                          ; eb 02
    1562115732    xor ax, ax                                ; 31 c0
    1562215733    test ax, ax                               ; 85 c0
    15623     jnl short 0a1ceh                          ; 7d 1e
     15734    jnl short 0a27eh                          ; 7d 1e
    1562415735    lds bx, [bp-00ch]                         ; c5 5e f4
    1562515736    mov ax, word [bx]                         ; 8b 07
     
    1563115742    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1563215743    mov word [bx], strict word 00000h         ; c7 07 00 00
    15633     jmp short 0a162h                          ; eb 94
    15634     jne short 0a1e5h                          ; 75 15
     15744    jmp short 0a212h                          ; eb 94
     15745    jne short 0a295h                          ; 75 15
    1563515746    mov ds, [bp-008h]                         ; 8e 5e f8
    1563615747    mov word [di+002h], ax                    ; 89 45 02
     
    1563915750    mov word [bx], strict word 00001h         ; c7 07 01 00
    1564015751    mov word [bx+002h], ax                    ; 89 47 02
    15641     jmp near 0a36dh                           ; e9 88 01
     15752    jmp near 0a41dh                           ; e9 88 01
    1564215753    lds bx, [bp-00ch]                         ; c5 5e f4
    1564315754    mov ax, word [bx+002h]                    ; 8b 47 02
    1564415755    test ax, ax                               ; 85 c0
    15645     je short 0a200h                           ; 74 11
     15756    je short 0a2b0h                           ; 74 11
    1564615757    push ax                                   ; 50
    1564715758    mov ax, 0f000h                            ; b8 00 f0
    1564815759    mov ds, ax                                ; 8e d8
    15649     call 0a380h                               ; e8 88 01
     15760    call 0a430h                               ; e8 88 01
    1565015761    add sp, strict byte 00002h                ; 83 c4 02
    1565115762    add ax, strict word 00010h                ; 05 10 00
    15652     jmp short 0a20dh                          ; eb 0d
     15763    jmp short 0a2bdh                          ; eb 0d
    1565315764    push word [bx]                            ; ff 37
    1565415765    mov ax, 0f000h                            ; b8 00 f0
    1565515766    mov ds, ax                                ; 8e d8
    15656     call 0a380h                               ; e8 76 01
     15767    call 0a430h                               ; e8 76 01
    1565715768    add sp, strict byte 00002h                ; 83 c4 02
    1565815769    mov word [bp-014h], ax                    ; 89 46 ec
     
    1566015771    mov ax, word [si+002h]                    ; 8b 44 02
    1566115772    test ax, ax                               ; 85 c0
    15662     je short 0a22bh                           ; 74 11
     15773    je short 0a2dbh                           ; 74 11
    1566315774    push ax                                   ; 50
    1566415775    mov ax, 0f000h                            ; b8 00 f0
    1566515776    mov ds, ax                                ; 8e d8
    15666     call 0a380h                               ; e8 5d 01
     15777    call 0a430h                               ; e8 5d 01
    1566715778    add sp, strict byte 00002h                ; 83 c4 02
    1566815779    add ax, strict word 00010h                ; 05 10 00
    15669     jmp short 0a238h                          ; eb 0d
     15780    jmp short 0a2e8h                          ; eb 0d
    1567015781    push word [si]                            ; ff 34
    1567115782    mov ax, 0f000h                            ; b8 00 f0
    1567215783    mov ds, ax                                ; 8e d8
    15673     call 0a380h                               ; e8 4b 01
     15784    call 0a430h                               ; e8 4b 01
    1567415785    add sp, strict byte 00002h                ; 83 c4 02
    1567515786    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1568215793    mov word [bp-016h], ax                    ; 89 46 ea
    1568315794    test dx, dx                               ; 85 d2
    15684     je short 0a2a8h                           ; 74 56
     15795    je short 0a358h                           ; 74 56
    1568515796    mov cx, dx                                ; 89 d1
    1568615797    xor ch, dh                                ; 30 f5
     
    1568815799    mov ax, word [si]                         ; 8b 04
    1568915800    mov dx, word [si+002h]                    ; 8b 54 02
    15690     jcxz 0a266h                               ; e3 06
     15801    jcxz 0a316h                               ; e3 06
    1569115802    sal ax, 1                                 ; d1 e0
    1569215803    rcl dx, 1                                 ; d1 d2
    15693     loop 0a260h                               ; e2 fa
     15804    loop 0a310h                               ; e2 fa
    1569415805    mov word [bp-018h], ax                    ; 89 46 e8
    1569515806    mov word [bp-016h], dx                    ; 89 56 ea
     
    1569715808    lds bx, [bp-00ch]                         ; c5 5e f4
    1569815809    cmp ax, word [bx+002h]                    ; 3b 47 02
    15699     jnbe short 0a286h                         ; 77 0f
     15810    jnbe short 0a336h                         ; 77 0f
    1570015811    mov ax, word [bp-016h]                    ; 8b 46 ea
    1570115812    cmp ax, word [bx+002h]                    ; 3b 47 02
    15702     jne short 0a28ah                          ; 75 0b
     15813    jne short 0a33ah                          ; 75 0b
    1570315814    mov ax, word [bp-018h]                    ; 8b 46 e8
    1570415815    cmp ax, word [bx]                         ; 3b 07
    15705     jbe short 0a28ah                          ; 76 04
     15816    jbe short 0a33ah                          ; 76 04
    1570615817    mov AL, strict byte 001h                  ; b0 01
    15707     jmp short 0a28ch                          ; eb 02
     15818    jmp short 0a33ch                          ; eb 02
    1570815819    xor al, al                                ; 30 c0
    1570915820    test al, al                               ; 84 c0
    15710     je short 0a2b3h                           ; 74 23
     15821    je short 0a363h                           ; 74 23
    1571115822    shr word [bp-016h], 1                     ; d1 6e ea
    1571215823    rcr word [bp-018h], 1                     ; d1 5e e8
    1571315824    dec word [bp-012h]                        ; ff 4e ee
    15714     jmp short 0a2b3h                          ; eb 18
     15825    jmp short 0a363h                          ; eb 18
    1571515826    mov cx, strict word 0001fh                ; b9 1f 00
    1571615827    sal word [bp-018h], 1                     ; d1 66 e8
    1571715828    rcl word [bp-016h], 1                     ; d1 56 ea
    15718     loop 0a29eh                               ; e2 f8
    15719     jmp short 0a296h                          ; eb ee
     15829    loop 0a34eh                               ; e2 f8
     15830    jmp short 0a346h                          ; eb ee
    1572015831    mov ax, word [si]                         ; 8b 04
    1572115832    mov word [bp-018h], ax                    ; 89 46 e8
     
    1573415845    mov ds, [bp-006h]                         ; 8e 5e fa
    1573515846    cmp ax, word [si+002h]                    ; 3b 44 02
    15736     jnbe short 0a2dfh                         ; 77 06
    15737     jne short 0a2e3h                          ; 75 08
     15847    jnbe short 0a38fh                         ; 77 06
     15848    jne short 0a393h                          ; 75 08
    1573815849    cmp dx, word [si]                         ; 3b 14
    15739     jc short 0a2e3h                           ; 72 04
     15850    jc short 0a393h                           ; 72 04
    1574015851    mov AL, strict byte 001h                  ; b0 01
    15741     jmp short 0a2e5h                          ; eb 02
     15852    jmp short 0a395h                          ; eb 02
    1574215853    xor al, al                                ; 30 c0
    1574315854    test al, al                               ; 84 c0
    15744     je short 0a34ah                           ; 74 61
     15855    je short 0a3fah                           ; 74 61
    1574515856    mov ds, [bp-008h]                         ; 8e 5e f8
    1574615857    mov ax, word [di+002h]                    ; 8b 45 02
    1574715858    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15748     jnbe short 0a300h                         ; 77 0c
     15859    jnbe short 0a3b0h                         ; 77 0c
    1574915860    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15750     jne short 0a304h                          ; 75 0b
     15861    jne short 0a3b4h                          ; 75 0b
    1575115862    mov ax, word [di]                         ; 8b 05
    1575215863    cmp ax, word [bp-018h]                    ; 3b 46 e8
    15753     jc short 0a304h                           ; 72 04
     15864    jc short 0a3b4h                           ; 72 04
    1575415865    mov AL, strict byte 001h                  ; b0 01
    15755     jmp short 0a306h                          ; eb 02
     15866    jmp short 0a3b6h                          ; eb 02
    1575615867    xor al, al                                ; 30 c0
    1575715868    test al, al                               ; 84 c0
    15758     je short 0a330h                           ; 74 26
     15869    je short 0a3e0h                           ; 74 26
    1575915870    mov ax, word [bp-018h]                    ; 8b 46 e8
    1576015871    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1576515876    xor dx, dx                                ; 31 d2
    1576615877    mov cx, word [bp-012h]                    ; 8b 4e ee
    15767     jcxz 0a328h                               ; e3 06
     15878    jcxz 0a3d8h                               ; e3 06
    1576815879    sal ax, 1                                 ; d1 e0
    1576915880    rcl dx, 1                                 ; d1 d2
    15770     loop 0a322h                               ; e2 fa
     15881    loop 0a3d2h                               ; e2 fa
    1577115882    lds bx, [bp-010h]                         ; c5 5e f0
    1577215883    or word [bx], ax                          ; 09 07
     
    1577715888    mov ds, [bp-006h]                         ; 8e 5e fa
    1577815889    cmp ax, word [si+002h]                    ; 3b 44 02
    15779     jc short 0a346h                           ; 72 06
    15780     jne short 0a34ch                          ; 75 0a
     15890    jc short 0a3f6h                           ; 72 06
     15891    jne short 0a3fch                          ; 75 0a
    1578115892    cmp dx, word [si]                         ; 3b 14
    15782     jnc short 0a34ch                          ; 73 06
     15893    jnc short 0a3fch                          ; 73 06
    1578315894    mov AL, strict byte 001h                  ; b0 01
    15784     jmp short 0a34eh                          ; eb 04
    15785     jmp short 0a36dh                          ; eb 21
     15895    jmp short 0a3feh                          ; eb 04
     15896    jmp short 0a41dh                          ; eb 21
    1578615897    xor al, al                                ; 30 c0
    1578715898    test al, al                               ; 84 c0
    15788     je short 0a361h                           ; 74 0f
    15789     jmp short 0a36dh                          ; eb 19
     15899    je short 0a411h                           ; 74 0f
     15900    jmp short 0a41dh                          ; eb 19
    1579015901    mov cx, strict word 0001fh                ; b9 1f 00
    1579115902    sal word [bp-018h], 1                     ; d1 66 e8
    1579215903    rcl word [bp-016h], 1                     ; d1 56 ea
    15793     loop 0a357h                               ; e2 f8
    15794     jmp short 0a367h                          ; eb 06
     15904    loop 0a407h                               ; e2 f8
     15905    jmp short 0a417h                          ; eb 06
    1579515906    shr word [bp-016h], 1                     ; d1 6e ea
    1579615907    rcr word [bp-018h], 1                     ; d1 5e e8
    1579715908    dec word [bp-012h]                        ; ff 4e ee
    15798     jmp near 0a2e9h                           ; e9 7c ff
     15909    jmp near 0a399h                           ; e9 7c ff
    1579915910    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1580015911    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1580515916    retn                                      ; c3
    1580615917    times 0x6 db 0
    15807 _ASMBitLastSetU16:                           ; 0xfa380 LB 0x18
     15918_ASMBitLastSetU16:                           ; 0xfa430 LB 0x18
    1580815919    push bp                                   ; 55
    1580915920    db  08bh, 0ech
     
    1581115922    mov cx, word [bp+004h]                    ; 8b 4e 04
    1581215923    test cx, cx                               ; 85 c9
    15813     je short 0a394h                           ; 74 0a
     15924    je short 0a444h                           ; 74 0a
    1581415925    mov ax, strict word 00010h                ; b8 10 00
    1581515926    sal cx, 1                                 ; d1 e1
    15816     jc short 0a396h                           ; 72 05
     15927    jc short 0a446h                           ; 72 05
    1581715928    dec ax                                    ; 48
    15818     jmp short 0a38dh                          ; eb f9
     15929    jmp short 0a43dh                          ; eb f9
    1581915930    db  033h, 0c0h
    1582015931    ; xor ax, ax                                ; 33 c0
     
    1582215933    retn                                      ; c3
    1582315934
    15824   ; Padding 0x3668 bytes at 0xfa398
    15825   times 13928 db 0
     15935  ; Padding 0x35b8 bytes at 0xfa448
     15936  times 13752 db 0
    1582615937
    1582715938section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1587015981    add bp, strict byte 00008h                ; 83 c5 08
    1587115982    push ebp                                  ; 66 55
    15872     mov bp, 0a106h                            ; bd 06 a1
     15983    mov bp, 0a1b6h                            ; bd b6 a1
    1587315984    add byte [bx+si], al                      ; 00 00
    1587415985    push ebp                                  ; 66 55
     
    1659616707    call 01c9fh                               ; e8 63 39
    1659716708    call 02118h                               ; e8 d9 3d
    16598     call 09903h                               ; e8 c1 b5
    16599     call 0878eh                               ; e8 49 a4
     16709    call 0998bh                               ; e8 49 b6
     16710    call 087fbh                               ; e8 b6 a4
    1660016711    call 0ed2fh                               ; e8 e7 09
    1660116712    call 0e2d2h                               ; e8 87 ff
     
    1743017541    popfw                                     ; 9d
    1743117542    jmp short 0f8a5h                          ; eb 11
    17432     call 09a76h                               ; e8 df a1
     17543    call 09afeh                               ; e8 67 a2
    1743317544    jmp short 0f88eh                          ; eb f5
    1743417545int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1769617807cpu_reset:                                   ; 0xffff0 LB 0x10
    1769717808    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17698     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 013h
     17809    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 00fh
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum

    r67789 r67807  
    1 d3d502baf2c64ff733ee5125cf3b3e97 *VBoxPcBios286.rom
     10aa9c82df689a029ef3c0dd6eb7cfba6 *VBoxPcBios286.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm

    r67789 r67807  
    951951    db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
    952952_pktacc:                                     ; 0xf006a LB 0xc
    953     db  000h, 000h, 000h, 000h, 000h, 000h, 05dh, 02ch, 01ah, 082h, 041h, 091h
     953    db  000h, 000h, 000h, 000h, 000h, 000h, 05dh, 02ch, 01ah, 082h, 0c8h, 091h
    954954_softrst:                                    ; 0xf0076 LB 0xc
    955955    db  000h, 000h, 000h, 000h, 000h, 000h, 045h, 02fh, 0b6h, 03ch, 0b6h, 03ch
    956956_dskacc:                                     ; 0xf0082 LB 0x2e
    957957    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04dh, 02bh, 002h, 02ch, 000h, 000h, 000h, 000h
    958     db  064h, 080h, 03fh, 081h, 017h, 090h, 0bdh, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     958    db  064h, 080h, 03fh, 081h, 09eh, 090h, 044h, 091h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
    959959    db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
    960960
    961 section CONST progbits vstart=0xb0 align=1 ; size=0xcf0 class=DATA group=DGROUP
     961section CONST progbits vstart=0xb0 align=1 ; size=0xd52 class=DATA group=DGROUP
    962962    db   'CPUID EDX: 0x%lx', 00ah, 000h
    963963    db   'NMI Handler called', 00ah, 000h
     
    10651065    db   'Disk %d has an unsupported sector size of %u', 00ah, 000h
    10661066    db   'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
    1067     db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
     1067    db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h
     1068    db   'scsi_pci_init', 000h
     1069    db   '%s: Adapter %x:%x not found, how come?!', 00ah, 000h
     1070    db   '%s: Adapter %x:%x found at %x, enabling BM', 00ah, 000h
    10681071    db   'ahci_read_sectors', 000h
    10691072    db   '%s: device_id out of range %d', 00ah, 000h
     
    10781081    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    10791082
    1080 section CONST2 progbits vstart=0xda0 align=1 ; size=0x3fa class=DATA group=DGROUP
    1081 _bios_cvs_version_string:                    ; 0xf0da0 LB 0x12
     1083section CONST2 progbits vstart=0xe02 align=1 ; size=0x3fa class=DATA group=DGROUP
     1084_bios_cvs_version_string:                    ; 0xf0e02 LB 0x12
    10821085    db  'VirtualBox 5.1.51', 000h
    1083 _bios_prefix_string:                         ; 0xf0db2 LB 0x8
     1086_bios_prefix_string:                         ; 0xf0e14 LB 0x8
    10841087    db  'BIOS: ', 000h, 000h
    1085 _isotag:                                     ; 0xf0dba LB 0x6
     1088_isotag:                                     ; 0xf0e1c LB 0x6
    10861089    db  'CD001', 000h
    1087 _eltorito:                                   ; 0xf0dc0 LB 0x18
     1090_eltorito:                                   ; 0xf0e22 LB 0x18
    10881091    db  'EL TORITO SPECIFICATION', 000h
    1089 _drivetypes:                                 ; 0xf0dd8 LB 0x28
     1092_drivetypes:                                 ; 0xf0e3a LB 0x28
    10901093    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    10911094    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    10921095    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    1093 _scan_to_scanascii:                          ; 0xf0e00 LB 0x37a
     1096_scan_to_scanascii:                          ; 0xf0e62 LB 0x37a
    10941097    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    10951098    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    11481151    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    11491152    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    1150 _panic_msg_keyb_buffer_full:                 ; 0xf117a LB 0x20
     1153_panic_msg_keyb_buffer_full:                 ; 0xf11dc LB 0x20
    11511154    db  '%s: keyboard input buffer full', 00ah, 000h
    11521155
    1153   ; Padding 0x466 bytes at 0xf119a
    1154   times 1126 db 0
     1156  ; Padding 0x404 bytes at 0xf11fc
     1157  times 1028 db 0
    11551158
    1156 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8b25 class=CODE group=AUTO
     1159section _TEXT progbits vstart=0x1600 align=1 ; size=0x8bd5 class=CODE group=AUTO
    11571160rom_scan_:                                   ; 0xf1600 LB 0x50
    11581161    push bp                                   ; 55
     
    15011504    push bp                                   ; 55
    15021505    mov bp, sp                                ; 89 e5
    1503     mov bx, 00db2h                            ; bb b2 0d
     1506    mov bx, 00e14h                            ; bb 14 0e
    15041507    mov cx, ds                                ; 8c d9
    15051508    mov ax, strict word 00004h                ; b8 04 00
    15061509    call 01a2ah                               ; e8 ac 01
    1507     push 00da0h                               ; 68 a0 0d
     1510    push 00e02h                               ; 68 02 0e
    15081511    push 000ebh                               ; 68 eb 00
    15091512    push strict byte 00004h                   ; 6a 04
     
    16761679    mov bx, strict word 0000ah                ; bb 0a 00
    16771680    xor cx, cx                                ; 31 c9
    1678     call 0a030h                               ; e8 5e 86
     1681    call 0a0e0h                               ; e8 0e 87
    16791682    mov word [bp-008h], ax                    ; 89 46 f8
    16801683    mov cx, dx                                ; 89 d1
     
    19021905    mov dx, word [bp-026h]                    ; 8b 56 da
    19031906    mov si, word [bp-01eh]                    ; 8b 76 e2
    1904     call 0a070h                               ; e8 6c 84
     1907    call 0a120h                               ; e8 1c 85
    19051908    mov ax, dx                                ; 89 d0
    19061909    xor ah, dh                                ; 30 f4
     
    23442347    mov dx, word [es:si]                      ; 26 8b 14
    23452348    mov si, strict word 00018h                ; be 18 00
    2346     call 0a070h                               ; e8 10 80
     2349    call 0a120h                               ; e8 c0 80
    23472350    xor dh, dh                                ; 30 f6
    23482351    mov word [bp-016h], dx                    ; 89 56 ea
     
    23542357    mov dx, word [es:si]                      ; 26 8b 14
    23552358    mov si, strict word 00020h                ; be 20 00
    2356     call 0a070h                               ; e8 f0 7f
     2359    call 0a120h                               ; e8 a0 80
    23572360    mov bx, dx                                ; 89 d3
    23582361    mov ax, word [bp-01eh]                    ; 8b 46 e2
     
    23852388    mov dx, word [es:si]                      ; 26 8b 14
    23862389    mov si, strict word 00008h                ; be 08 00
    2387     call 0a070h                               ; e8 9f 7f
     2390    call 0a120h                               ; e8 4f 80
    23882391    mov word [bp-014h], dx                    ; 89 56 ec
    23892392    mov bx, word [bp-018h]                    ; 8b 5e e8
     
    23942397    mov dx, word [es:si]                      ; 26 8b 14
    23952398    mov si, strict word 00018h                ; be 18 00
    2396     call 0a070h                               ; e8 81 7f
     2399    call 0a120h                               ; e8 31 80
    23972400    and dx, strict byte 0000fh                ; 83 e2 0f
    23982401    or dl, 040h                               ; 80 ca 40
     
    27882791    lea ax, [bp-03ah]                         ; 8d 46 c6
    27892792    call 05ad0h                               ; e8 ff 35
    2790     mov bx, 00db2h                            ; bb b2 0d
     2793    mov bx, 00e14h                            ; bb 14 0e
    27912794    mov cx, ds                                ; 8c d9
    27922795    mov ax, strict word 00004h                ; b8 04 00
     
    29502953    mov dx, word [es:si+036h]                 ; 26 8b 54 36
    29512954    mov si, strict word 0000bh                ; be 0b 00
    2952     call 0a070h                               ; e8 b9 79
     2955    call 0a120h                               ; e8 69 7a
    29532956    mov word [bp-030h], dx                    ; 89 56 d0
    29542957    mov word [bp-02eh], cx                    ; 89 4e d2
     
    32213224    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32223225    mov si, strict word 00018h                ; be 18 00
    3223     call 0a070h                               ; e8 e3 76
     3226    call 0a120h                               ; e8 93 77
    32243227    xor dh, dh                                ; 30 f6
    32253228    mov word [bp-01ch], dx                    ; 89 56 e4
     
    32293232    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32303233    mov si, strict word 00020h                ; be 20 00
    3231     call 0a070h                               ; e8 cc 76
     3234    call 0a120h                               ; e8 7c 77
    32323235    mov bx, dx                                ; 89 d3
    32333236    mov ax, word [bp-01ah]                    ; 8b 46 e6
     
    32633266    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32643267    mov si, strict word 00008h                ; be 08 00
    3265     call 0a070h                               ; e8 78 76
     3268    call 0a120h                               ; e8 28 77
    32663269    mov word [bp-010h], ax                    ; 89 46 f0
    32673270    mov word [bp-014h], bx                    ; 89 5e ec
     
    32703273    mov word [bp-026h], dx                    ; 89 56 da
    32713274    mov si, strict word 00010h                ; be 10 00
    3272     call 0a070h                               ; e8 63 76
     3275    call 0a120h                               ; e8 13 77
    32733276    mov word [bp-01eh], dx                    ; 89 56 e2
    32743277    mov ax, dx                                ; 89 d0
     
    35393542    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    35403543    jne short 02cafh                          ; 75 1f
    3541     mov bx, 00db2h                            ; bb b2 0d
     3544    mov bx, 00e14h                            ; bb 14 0e
    35423545    mov cx, ds                                ; 8c d9
    35433546    mov ax, strict word 00004h                ; b8 04 00
     
    44104413    cmp bh, 048h                              ; 80 ff 48
    44114414    jbe short 03443h                          ; 76 33
    4412     mov bx, 00db2h                            ; bb b2 0d
     4415    mov bx, 00e14h                            ; bb 14 0e
    44134416    mov cx, ds                                ; 8c d9
    44144417    mov ax, strict word 00004h                ; b8 04 00
     
    52525255    mov byte [es:bx], 000h                    ; 26 c6 07 00
    52535256    jmp near 03612h                           ; e9 ae f9
    5254     mov bx, 00db2h                            ; bb b2 0d
     5257    mov bx, 00e14h                            ; bb 14 0e
    52555258    mov cx, ds                                ; 8c d9
    52565259    mov ax, strict word 00004h                ; b8 04 00
     
    53495352    cmp ax, strict word 0004ah                ; 3d 4a 00
    53505353    jne near 03e4eh                           ; 0f 85 1e 01
    5351     mov bx, 00db2h                            ; bb b2 0d
     5354    mov bx, 00e14h                            ; bb 14 0e
    53525355    mov cx, ds                                ; 8c d9
    53535356    mov ax, strict word 00004h                ; b8 04 00
     
    54475450    pop bp                                    ; 5d
    54485451    retn                                      ; c3
    5449     mov bx, 00db2h                            ; bb b2 0d
     5452    mov bx, 00e14h                            ; bb 14 0e
    54505453    mov cx, ds                                ; 8c d9
    54515454    mov ax, strict word 00004h                ; b8 04 00
     
    55285531    mov dx, ss                                ; 8c d2
    55295532    lea ax, [bp-026h]                         ; 8d 46 da
    5530     call 0a090h                               ; e8 78 61
     5533    call 0a140h                               ; e8 28 62
    55315534    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    55325535    mov ax, strict word 00011h                ; b8 11 00
     
    55825585    jnc short 03fb7h                          ; 73 10
    55835586    mov al, byte [bp+di-00825h]               ; 8a 83 db f7
    5584     cmp al, byte [di+00dbah]                  ; 3a 85 ba 0d
     5587    cmp al, byte [di+00e1ch]                  ; 3a 85 1c 0e
    55855588    je short 03fa1h                           ; 74 f0
    55865589    mov ax, strict word 00005h                ; b8 05 00
     
    55925595    jnc short 03fd1h                          ; 73 10
    55935596    mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
    5594     cmp al, byte [di+00dc0h]                  ; 3a 85 c0 0d
     5597    cmp al, byte [di+00e22h]                  ; 3a 85 22 0e
    55955598    je short 03fbbh                           ; 74 f0
    55965599    mov ax, strict word 00006h                ; b8 06 00
     
    58715874    cmp dx, ax                                ; 39 c2
    58725875    je short 04355h                           ; 74 29
    5873     mov bx, 00db2h                            ; bb b2 0d
     5876    mov bx, 00e14h                            ; bb 14 0e
    58745877    mov cx, ds                                ; 8c d9
    58755878    mov ax, strict word 00004h                ; b8 04 00
     
    59885991    xor dl, dl                                ; 30 d2
    59895992    xor cx, cx                                ; 31 c9
    5990     call 09ff0h                               ; e8 76 5b
     5993    call 0a0a0h                               ; e8 26 5c
    59915994    xor bx, bx                                ; 31 db
    59925995    add ax, si                                ; 01 f0
     
    59945997    mov bx, di                                ; 89 fb
    59955998    xor cx, cx                                ; 31 c9
    5996     call 09ff0h                               ; e8 69 5b
     5999    call 0a0a0h                               ; e8 19 5c
    59976000    mov bx, ax                                ; 89 c3
    59986001    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    60296032    mov dx, ss                                ; 8c d2
    60306033    lea ax, [bp-02eh]                         ; 8d 46 d2
    6031     call 0a090h                               ; e8 b2 5b
     6034    call 0a140h                               ; e8 62 5c
    60326035    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    60336036    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    60936096    test al, al                               ; 84 c0
    60946097    je near 043a1h                            ; 0f 84 13 fe
    6095     mov bx, 00db2h                            ; bb b2 0d
     6098    mov bx, 00e14h                            ; bb 14 0e
    60966099    mov cx, ds                                ; 8c d9
    60976100    mov ax, strict word 00004h                ; b8 04 00
     
    61746177    mov word [bp+016h], bx                    ; 89 5e 16
    61756178    jmp near 043a5h                           ; e9 37 fd
    6176     mov bx, 00db2h                            ; bb b2 0d
     6179    mov bx, 00e14h                            ; bb 14 0e
    61776180    mov cx, ds                                ; 8c d9
    61786181    mov ax, strict word 00004h                ; b8 04 00
     
    63366339    mov dx, ss                                ; 8c d2
    63376340    lea ax, [bp-02ch]                         ; 8d 46 d4
    6338     call 0a090h                               ; e8 17 58
     6341    call 0a140h                               ; e8 c7 58
    63396342    mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
    63406343    mov ax, word [bp-018h]                    ; 8b 46 e8
     
    63856388    test dl, dl                               ; 84 d2
    63866389    je near 049cbh                            ; 0f 84 cb 00
    6387     mov bx, 00db2h                            ; bb b2 0d
     6390    mov bx, 00e14h                            ; bb 14 0e
    63886391    mov cx, ds                                ; 8c d9
    63896392    mov ax, strict word 00004h                ; b8 04 00
     
    66696672    or byte [bp+01eh], 001h                   ; 80 4e 1e 01
    66706673    jmp near 049deh                           ; e9 8f fd
    6671     mov bx, 00db2h                            ; bb b2 0d
     6674    mov bx, 00e14h                            ; bb 14 0e
    66726675    mov cx, ds                                ; 8c d9
    66736676    mov ax, strict word 00004h                ; b8 04 00
     
    66996702    je short 04cb1h                           ; 74 21
    67006703    mov dx, strict word 00001h                ; ba 01 00
    6701     mov bx, 00db2h                            ; bb b2 0d
     6704    mov bx, 00e14h                            ; bb 14 0e
    67026705    mov cx, ds                                ; 8c d9
    67036706    mov ax, strict word 00004h                ; b8 04 00
    67046707    call 01a2ah                               ; e8 8c cd
    67056708    imul dx, dx, strict byte 0000ah           ; 6b d2 0a
    6706     add dx, 00dd8h                            ; 81 c2 d8 0d
     6709    add dx, 00e3ah                            ; 81 c2 3a 0e
    67076710    push dx                                   ; 52
    67086711    push 004a6h                               ; 68 a6 04
     
    67246727    test al, al                               ; 84 c0
    67256728    je short 04ce4h                           ; 74 1b
    6726     mov bx, 00db2h                            ; bb b2 0d
     6729    mov bx, 00e14h                            ; bb 14 0e
    67276730    mov cx, ds                                ; 8c d9
    67286731    mov ax, strict word 00004h                ; b8 04 00
    67296732    call 01a2ah                               ; e8 56 cd
    6730     push 00dech                               ; 68 ec 0d
     6733    push 00e4eh                               ; 68 4e 0e
    67316734    push 004bah                               ; 68 ba 04
    67326735    push strict byte 00004h                   ; 6a 04
     
    67366739    test dl, dl                               ; 84 d2
    67376740    je short 04cf8h                           ; 74 10
    6738     mov bx, 00db2h                            ; bb b2 0d
     6741    mov bx, 00e14h                            ; bb 14 0e
    67396742    mov cx, ds                                ; 8c d9
    67406743    mov ax, strict word 00004h                ; b8 04 00
    67416744    call 01a2ah                               ; e8 37 cd
    6742     push 00df6h                               ; 68 f6 0d
     6745    push 00e58h                               ; 68 58 0e
    67436746    jmp short 04cd7h                          ; eb df
    67446747    test bl, 080h                             ; f6 c3 80
    67456748    je short 04d0eh                           ; 74 11
    6746     mov bx, 00db2h                            ; bb b2 0d
     6749    mov bx, 00e14h                            ; bb 14 0e
    67476750    mov cx, ds                                ; 8c d9
    67486751    mov ax, strict word 00004h                ; b8 04 00
    67496752    call 01a2ah                               ; e8 22 cd
    67506753    push si                                   ; 56
    6751     push 00de2h                               ; 68 e2 0d
     6754    push 00e44h                               ; 68 44 0e
    67526755    jmp short 04d1dh                          ; eb 0f
    6753     mov bx, 00db2h                            ; bb b2 0d
     6756    mov bx, 00e14h                            ; bb 14 0e
    67546757    mov cx, ds                                ; 8c d9
    67556758    mov ax, strict word 00004h                ; b8 04 00
    67566759    call 01a2ah                               ; e8 11 cd
    67576760    push si                                   ; 56
    6758     push 00dd8h                               ; 68 d8 0d
     6761    push 00e3ah                               ; 68 3a 0e
    67596762    push 004cfh                               ; 68 cf 04
    67606763    push strict byte 00004h                   ; 6a 04
     
    67826785    push dx                                   ; 52
    67836786    mov dx, ax                                ; 89 c2
    6784     mov bx, 00db2h                            ; bb b2 0d
     6787    mov bx, 00e14h                            ; bb 14 0e
    67856788    mov cx, ds                                ; 8c d9
    67866789    mov ax, strict word 00004h                ; b8 04 00
     
    68576860    mov byte [bp-00ah], al                    ; 88 46 f6
    68586861    mov byte [bp-00ch], al                    ; 88 46 f4
    6859     mov bx, 00db2h                            ; bb b2 0d
     6862    mov bx, 00e14h                            ; bb 14 0e
    68606863    mov cx, ds                                ; 8c d9
    68616864    mov ax, strict word 00004h                ; b8 04 00
     
    73967399    test al, al                               ; 84 c0
    73977400    jne short 05307h                          ; 75 19
    7398     mov bx, 00db2h                            ; bb b2 0d
     7401    mov bx, 00e14h                            ; bb 14 0e
    73997402    mov cx, ds                                ; 8c d9
    74007403    mov ax, strict word 00004h                ; b8 04 00
     
    77137716    cmp byte [bp-00ch], 058h                  ; 80 7e f4 58
    77147717    jbe short 0567bh                          ; 76 1e
    7715     mov bx, 00db2h                            ; bb b2 0d
     7718    mov bx, 00e14h                            ; bb 14 0e
    77167719    mov cx, ds                                ; 8c d9
    77177720    mov ax, strict word 00004h                ; b8 04 00
     
    77297732    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77307733    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7731     mov dl, byte [bx+00e06h]                  ; 8a 97 06 0e
    7732     mov ax, word [bx+00e06h]                  ; 8b 87 06 0e
     7734    mov dl, byte [bx+00e68h]                  ; 8a 97 68 0e
     7735    mov ax, word [bx+00e68h]                  ; 8b 87 68 0e
    77337736    jmp near 05722h                           ; e9 8e 00
    77347737    test AL, strict byte 004h                 ; a8 04
     
    77367739    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77377740    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7738     mov dl, byte [bx+00e04h]                  ; 8a 97 04 0e
    7739     mov ax, word [bx+00e04h]                  ; 8b 87 04 0e
     7741    mov dl, byte [bx+00e66h]                  ; 8a 97 66 0e
     7742    mov ax, word [bx+00e66h]                  ; 8b 87 66 0e
    77407743    jmp near 05722h                           ; e9 78 00
    77417744    mov al, byte [bp-004h]                    ; 8a 46 fc
     
    77567759    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77577760    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7758     movzx ax, byte [bx+00e08h]                ; 0f b6 87 08 0e
     7761    movzx ax, byte [bx+00e6ah]                ; 0f b6 87 6a 0e
    77597762    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    77607763    test dx, ax                               ; 85 c2
    77617764    je short 056ech                           ; 74 0a
    7762     mov dl, byte [bx+00e00h]                  ; 8a 97 00 0e
    7763     mov ax, word [bx+00e00h]                  ; 8b 87 00 0e
     7765    mov dl, byte [bx+00e62h]                  ; 8a 97 62 0e
     7766    mov ax, word [bx+00e62h]                  ; 8b 87 62 0e
    77647767    jmp short 056f4h                          ; eb 08
    7765     mov dl, byte [bx+00e02h]                  ; 8a 97 02 0e
    7766     mov ax, word [bx+00e02h]                  ; 8b 87 02 0e
     7768    mov dl, byte [bx+00e64h]                  ; 8a 97 64 0e
     7769    mov ax, word [bx+00e64h]                  ; 8b 87 64 0e
    77677770    shr ax, 008h                              ; c1 e8 08
    77687771    mov byte [bp-00ch], al                    ; 88 46 f4
     
    77707773    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77717774    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7772     movzx ax, byte [bx+00e08h]                ; 0f b6 87 08 0e
     7775    movzx ax, byte [bx+00e6ah]                ; 0f b6 87 6a 0e
    77737776    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    77747777    test dx, ax                               ; 85 c2
    77757778    je short 0571ah                           ; 74 0a
    7776     mov dl, byte [bx+00e02h]                  ; 8a 97 02 0e
    7777     mov ax, word [bx+00e02h]                  ; 8b 87 02 0e
     7779    mov dl, byte [bx+00e64h]                  ; 8a 97 64 0e
     7780    mov ax, word [bx+00e64h]                  ; 8b 87 64 0e
    77787781    jmp short 05722h                          ; eb 08
    7779     mov dl, byte [bx+00e00h]                  ; 8a 97 00 0e
    7780     mov ax, word [bx+00e00h]                  ; 8b 87 00 0e
     7782    mov dl, byte [bx+00e62h]                  ; 8a 97 62 0e
     7783    mov ax, word [bx+00e62h]                  ; 8b 87 62 0e
    77817784    shr ax, 008h                              ; c1 e8 08
    77827785    mov byte [bp-00ch], al                    ; 88 46 f4
     
    77857788    test dl, dl                               ; 84 d2
    77867789    jne short 05748h                          ; 75 16
    7787     mov bx, 00db2h                            ; bb b2 0d
     7790    mov bx, 00e14h                            ; bb 14 0e
    77887791    mov cx, ds                                ; 8c d9
    77897792    mov ax, strict word 00004h                ; b8 04 00
     
    81398142    or ah, 080h                               ; 80 cc 80
    81408143    jmp near 0595bh                           ; e9 d4 fe
    8141     mov bx, 00db2h                            ; bb b2 0d
     8144    mov bx, 00e14h                            ; bb 14 0e
    81428145    mov cx, ds                                ; 8c d9
    81438146    mov ax, strict word 00004h                ; b8 04 00
     
    81508153    call 01a6bh                               ; e8 ca bf
    81518154    add sp, strict byte 00006h                ; 83 c4 06
    8152     mov bx, 00db2h                            ; bb b2 0d
     8155    mov bx, 00e14h                            ; bb 14 0e
    81538156    mov cx, ds                                ; 8c d9
    81548157    mov ax, strict word 00004h                ; b8 04 00
     
    81858188    mov dx, word [bp+00ch]                    ; 8b 56 0c
    81868189    mov si, strict word 00020h                ; be 20 00
    8187     call 0a070h                               ; e8 75 45
     8190    call 0a120h                               ; e8 25 46
    81888191    test ax, ax                               ; 85 c0
    81898192    jne short 05b0bh                          ; 75 0c
     
    82238226    mov bx, strict word 0003fh                ; bb 3f 00
    82248227    xor cx, cx                                ; 31 c9
    8225     call 09ff0h                               ; e8 9c 44
     8228    call 0a0a0h                               ; e8 4c 45
    82268229    mov bx, ax                                ; 89 c3
    82278230    mov cx, dx                                ; 89 d1
    82288231    mov ax, word [bp-004h]                    ; 8b 46 fc
    82298232    mov dx, si                                ; 89 f2
    8230     call 0a030h                               ; e8 d0 44
     8233    call 0a0e0h                               ; e8 80 45
    82318234    mov word [es:di+002h], ax                 ; 26 89 45 02
    82328235    cmp ax, 00400h                            ; 3d 00 04
     
    83858388    test ax, ax                               ; 85 c0
    83868389    jne short 05cf4h                          ; 75 23
    8387     mov bx, 00db2h                            ; bb b2 0d
     8390    mov bx, 00e14h                            ; bb 14 0e
    83888391    mov cx, ds                                ; 8c d9
    83898392    mov ax, strict word 00004h                ; b8 04 00
     
    84148417    cmp ax, dx                                ; 39 d0
    84158418    jbe short 05d4fh                          ; 76 2e
    8416     mov bx, 00db2h                            ; bb b2 0d
     8419    mov bx, 00e14h                            ; bb 14 0e
    84178420    mov cx, ds                                ; 8c d9
    84188421    mov ax, strict word 00004h                ; b8 04 00
     
    84528455    mov bx, cx                                ; 89 cb
    84538456    xor cx, cx                                ; 31 c9
    8454     call 09ff0h                               ; e8 67 42
     8457    call 0a0a0h                               ; e8 17 43
    84558458    xor bx, bx                                ; 31 db
    84568459    add ax, word [bp-008h]                    ; 03 46 f8
     
    84588461    mov bx, word [bp-00ah]                    ; 8b 5e f6
    84598462    xor cx, cx                                ; 31 c9
    8460     call 09ff0h                               ; e8 58 42
     8463    call 0a0a0h                               ; e8 08 43
    84618464    xor bx, bx                                ; 31 db
    84628465    add ax, word [bp-006h]                    ; 03 46 fa
     
    85148517    test dl, dl                               ; 84 d2
    85158518    je near 05c52h                            ; 0f 84 0a fe
    8516     mov bx, 00db2h                            ; bb b2 0d
     8519    mov bx, 00e14h                            ; bb 14 0e
    85178520    mov cx, ds                                ; 8c d9
    85188521    mov ax, strict word 00004h                ; b8 04 00
     
    85328535    or ah, 00ch                               ; 80 cc 0c
    85338536    jmp near 05fc8h                           ; e9 51 01
    8534     mov bx, 00db2h                            ; bb b2 0d
     8537    mov bx, 00e14h                            ; bb 14 0e
    85358538    mov cx, ds                                ; 8c d9
    85368539    mov ax, strict word 00004h                ; b8 04 00
     
    86188621    mov bx, word [bp-008h]                    ; 8b 5e f8
    86198622    xor cx, cx                                ; 31 c9
    8620     call 09ff0h                               ; e8 90 40
     8623    call 0a0a0h                               ; e8 40 41
    86218624    mov bx, word [bp-006h]                    ; 8b 5e fa
    86228625    xor cx, cx                                ; 31 c9
    8623     call 09ff0h                               ; e8 88 40
     8626    call 0a0a0h                               ; e8 38 41
    86248627    mov word [bp-010h], ax                    ; 89 46 f0
    86258628    mov word [bp-00eh], dx                    ; 89 56 f2
     
    86318634    mov word [bp+016h], ax                    ; 89 46 16
    86328635    jmp near 05c56h                           ; e9 d4 fc
    8633     mov bx, 00db2h                            ; bb b2 0d
     8636    mov bx, 00e14h                            ; bb 14 0e
    86348637    mov cx, ds                                ; 8c d9
    86358638    mov ax, strict word 00004h                ; b8 04 00
     
    86448647    add sp, strict byte 00008h                ; 83 c4 08
    86458648    jmp near 05c52h                           ; e9 ad fc
    8646     mov bx, 00db2h                            ; bb b2 0d
     8649    mov bx, 00e14h                            ; bb 14 0e
    86478650    mov cx, ds                                ; 8c d9
    86488651    mov ax, strict word 00004h                ; b8 04 00
     
    87588761    xor bx, bx                                ; 31 db
    87598762    mov si, strict word 00020h                ; be 20 00
    8760     call 0a080h                               ; e8 94 3f
     8763    call 0a130h                               ; e8 44 40
    87618764    mov word [bp-00eh], bx                    ; 89 5e f2
    87628765    mov bx, word [es:di+008h]                 ; 26 8b 5d 08
     
    87838786    cmp dx, word [es:di+036h]                 ; 26 3b 55 36
    87848787    jc short 06156h                           ; 72 23
    8785     mov bx, 00db2h                            ; bb b2 0d
     8788    mov bx, 00e14h                            ; bb 14 0e
    87868789    mov cx, ds                                ; 8c d9
    87878790    mov ax, strict word 00004h                ; b8 04 00
     
    88398842    test dl, dl                               ; 84 d2
    88408843    je near 0648dh                            ; 0f 84 a8 02
    8841     mov bx, 00db2h                            ; bb b2 0d
     8844    mov bx, 00e14h                            ; bb 14 0e
    88428845    mov cx, ds                                ; 8c d9
    88438846    mov ax, strict word 00004h                ; b8 04 00
     
    89098912    mov bx, word [bp-00eh]                    ; 8b 5e f2
    89108913    mov si, strict word 00020h                ; be 20 00
    8911     call 0a070h                               ; e8 aa 3d
     8914    call 0a120h                               ; e8 5a 3e
    89128915    mov bx, di                                ; 89 fb
    89138916    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    90859088    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
    90869089    jmp short 064a0h                          ; eb c4
    9087     mov bx, 00db2h                            ; bb b2 0d
     9090    mov bx, 00e14h                            ; bb 14 0e
    90889091    mov cx, ds                                ; 8c d9
    90899092    mov ax, strict word 00004h                ; b8 04 00
     
    92669269    mov bx, strict word 0000fh                ; bb 0f 00
    92679270    xor cx, cx                                ; 31 c9
    9268     call 0a030h                               ; e8 d1 39
     9271    call 0a0e0h                               ; e8 81 3a
    92699272    mov cx, ax                                ; 89 c1
    92709273    mov bx, dx                                ; 89 d3
     
    94249427    mov word [bp+00ch], ax                    ; 89 46 0c
    94259428    jmp near 06827h                           ; e9 2b 00
    9426     mov bx, 00db2h                            ; bb b2 0d
     9429    mov bx, 00e14h                            ; bb 14 0e
    94279430    mov cx, ds                                ; 8c d9
    94289431    mov ax, strict word 00004h                ; b8 04 00
     
    96119614    retf                                      ; cb
    96129615    jmp near 06827h                           ; e9 50 fe
    9613     mov bx, 00db2h                            ; bb b2 0d
     9616    mov bx, 00e14h                            ; bb 14 0e
    96149617    mov cx, ds                                ; 8c d9
    96159618    mov ax, strict word 00004h                ; b8 04 00
     
    96519654    or byte [bp+018h], 001h                   ; 80 4e 18 01
    96529655    jmp near 06827h                           ; e9 da fd
    9653     mov bx, 00db2h                            ; bb b2 0d
     9656    mov bx, 00e14h                            ; bb 14 0e
    96549657    mov cx, ds                                ; 8c d9
    96559658    mov ax, strict word 00004h                ; b8 04 00
     
    99679970    mov word [bp+014h], dx                    ; 89 56 14
    99689971    jmp short 06e0fh                          ; eb 2a
    9969     mov bx, 00db2h                            ; bb b2 0d
     9972    mov bx, 00e14h                            ; bb 14 0e
    99709973    mov cx, ds                                ; 8c d9
    99719974    mov ax, strict word 00004h                ; b8 04 00
     
    1058710590    je short 07443h                           ; 74 0e
    1058810591    push 00900h                               ; 68 00 09
    10589     push 0117ah                               ; 68 7a 11
     10592    push 011dch                               ; 68 dc 11
    1059010593    push strict byte 00007h                   ; 6a 07
    1059110594    call 01a6bh                               ; e8 2b a6
     
    1066710670    je short 074d3h                           ; 74 0e
    1066810671    push 0090ah                               ; 68 0a 09
    10669     push 0117ah                               ; 68 7a 11
     10672    push 011dch                               ; 68 dc 11
    1067010673    push strict byte 00007h                   ; 6a 07
    1067110674    call 01a6bh                               ; e8 9b a5
     
    1212112124    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    1212212125    jne short 08261h                          ; 75 1f
    12123     mov bx, 00db2h                            ; bb b2 0d
     12126    mov bx, 00e14h                            ; bb 14 0e
    1212412127    mov cx, ds                                ; 8c d9
    1212512128    mov ax, strict word 00004h                ; b8 04 00
     
    1227612279    mov dx, ss                                ; 8c d2
    1227712280    lea ax, [bp-046h]                         ; 8d 46 ba
    12278     call 0a090h                               ; e8 d9 1c
     12281    call 0a140h                               ; e8 89 1d
    1227912282    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1228012283    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1233512338    cmp bx, 00200h                            ; 81 fb 00 02
    1233612339    je short 0847ch                           ; 74 20
    12337     mov bx, 00db2h                            ; bb b2 0d
     12340    mov bx, 00e14h                            ; bb 14 0e
    1233812341    mov cx, ds                                ; 8c d9
    1233912342    mov ax, strict word 00004h                ; b8 04 00
     
    1240112404    mov dx, word [bp-016h]                    ; 8b 56 ea
    1240212405    mov si, strict word 0000ch                ; be 0c 00
    12403     call 0a070h                               ; e8 76 1b
     12406    call 0a120h                               ; e8 26 1c
    1240412407    mov word [bp-018h], ax                    ; 89 46 e8
    1240512408    mov word [bp-014h], bx                    ; 89 5e ec
     
    1242112424    mov dx, word [bp-016h]                    ; 8b 56 ea
    1242212425    mov si, strict word 00006h                ; be 06 00
    12423     call 0a070h                               ; e8 36 1b
     12426    call 0a120h                               ; e8 e6 1b
    1242412427    mov si, word [bp-020h]                    ; 8b 76 e0
    1242512428    add si, dx                                ; 01 d6
     
    1243912442    mov dx, si                                ; 89 f2
    1244012443    mov si, strict word 00008h                ; be 08 00
    12441     call 0a070h                               ; e8 06 1b
     12444    call 0a120h                               ; e8 b6 1b
    1244212445    mov word [bp-022h], bx                    ; 89 5e de
    1244312446    mov word [bp-02ch], cx                    ; 89 4e d4
     
    1244812451    mov dx, word [bp-02ah]                    ; 8b 56 d6
    1244912452    mov si, strict word 00010h                ; be 10 00
    12450     call 0a070h                               ; e8 eb 1a
     12453    call 0a120h                               ; e8 9b 1b
    1245112454    mov si, word [bp-01ah]                    ; 8b 76 e6
    1245212455    add si, dx                                ; 01 d6
     
    1247212475    mov dx, word [bp-016h]                    ; 8b 56 ea
    1247312476    mov si, strict word 0000bh                ; be 0b 00
    12474     call 0a070h                               ; e8 a3 1a
     12477    call 0a120h                               ; e8 53 1b
    1247512478    mov si, dx                                ; 89 d6
    1247612479    mov dx, cx                                ; 89 ca
     
    1251312516    mov word [es:bx+02ch], si                 ; 26 89 77 2c
    1251412517    mov word [es:bx+032h], si                 ; 26 89 77 32
    12515     mov bx, 00db2h                            ; bb b2 0d
     12518    mov bx, 00e14h                            ; bb 14 0e
    1251612519    mov cx, ds                                ; 8c d9
    1251712520    mov ax, strict word 00004h                ; b8 04 00
     
    1256312566    inc byte [bp-00ch]                        ; fe 46 f4
    1256412567    jmp near 08770h                           ; e9 8b 00
    12565     mov bx, 00db2h                            ; bb b2 0d
     12568    mov bx, 00e14h                            ; bb 14 0e
    1256612569    mov cx, ds                                ; 8c d9
    1256712570    mov ax, strict word 00004h                ; b8 04 00
     
    1266012663    pop bp                                    ; 5d
    1266112664    retn                                      ; c3
    12662 _scsi_init:                                  ; 0xf8802 LB 0x66
     12665scsi_pci_init_:                              ; 0xf8802 LB 0x6c
     12666    push bp                                   ; 55
     12667    mov bp, sp                                ; 89 e5
     12668    push bx                                   ; 53
     12669    push cx                                   ; 51
     12670    push si                                   ; 56
     12671    push di                                   ; 57
     12672    mov si, ax                                ; 89 c6
     12673    mov di, dx                                ; 89 d7
     12674    call 09f06h                               ; e8 f6 16
     12675    mov dx, ax                                ; 89 c2
     12676    cmp ax, strict word 0ffffh                ; 3d ff ff
     12677    jne short 08834h                          ; 75 1d
     12678    mov bx, 00e14h                            ; bb 14 0e
     12679    mov cx, ds                                ; 8c d9
     12680    mov ax, strict word 00004h                ; b8 04 00
     12681    call 01a2ah                               ; e8 08 92
     12682    push di                                   ; 57
     12683    push si                                   ; 56
     12684    push 00c73h                               ; 68 73 0c
     12685    push 00c81h                               ; 68 81 0c
     12686    push strict byte 00004h                   ; 6a 04
     12687    call 01a6bh                               ; e8 3c 92
     12688    add sp, strict byte 0000ah                ; 83 c4 0a
     12689    jmp short 08865h                          ; eb 31
     12690    mov bx, 00e14h                            ; bb 14 0e
     12691    mov cx, ds                                ; 8c d9
     12692    mov ax, strict word 00004h                ; b8 04 00
     12693    call 01a2ah                               ; e8 eb 91
     12694    push dx                                   ; 52
     12695    push di                                   ; 57
     12696    push si                                   ; 56
     12697    push 00c73h                               ; 68 73 0c
     12698    push 00caah                               ; 68 aa 0c
     12699    push strict byte 00004h                   ; 6a 04
     12700    call 01a6bh                               ; e8 1e 92
     12701    add sp, strict byte 0000ch                ; 83 c4 0c
     12702    movzx si, dl                              ; 0f b6 f2
     12703    mov ax, dx                                ; 89 d0
     12704    shr ax, 008h                              ; c1 e8 08
     12705    xor ah, ah                                ; 30 e4
     12706    mov cx, strict word 00007h                ; b9 07 00
     12707    mov bx, strict word 00004h                ; bb 04 00
     12708    mov dx, si                                ; 89 f2
     12709    call 09f98h                               ; e8 33 17
     12710    lea sp, [bp-008h]                         ; 8d 66 f8
     12711    pop di                                    ; 5f
     12712    pop si                                    ; 5e
     12713    pop cx                                    ; 59
     12714    pop bx                                    ; 5b
     12715    pop bp                                    ; 5d
     12716    retn                                      ; c3
     12717_scsi_init:                                  ; 0xf886e LB 0x81
    1266312718    push bp                                   ; 55
    1266412719    mov bp, sp                                ; 89 e5
    1266512720    mov dx, strict word 0000eh                ; ba 0e 00
    1266612721    mov ax, strict word 00040h                ; b8 40 00
    12667     call 01765h                               ; e8 57 8f
     12722    call 01765h                               ; e8 eb 8e
    1266812723    mov bx, 00122h                            ; bb 22 01
    1266912724    mov es, ax                                ; 8e c0
     
    1267612731    ; sub ah, ah                                ; 2a e4
    1267712732    cmp AL, strict byte 055h                  ; 3c 55
    12678     jne short 08832h                          ; 75 0c
     12733    jne short 088a7h                          ; 75 15
    1267912734    xor al, al                                ; 30 c0
    1268012735    mov dx, 00433h                            ; ba 33 04
    1268112736    out DX, AL                                ; ee
    1268212737    mov ax, 00430h                            ; b8 30 04
    12683     call 08380h                               ; e8 4e fb
     12738    call 08380h                               ; e8 e2 fa
     12739    mov dx, 01040h                            ; ba 40 10
     12740    mov ax, 0104bh                            ; b8 4b 10
     12741    call 08802h                               ; e8 5b ff
    1268412742    mov AL, strict byte 055h                  ; b0 55
    1268512743    mov dx, 00436h                            ; ba 36 04
     
    1268912747    ; sub ah, ah                                ; 2a e4
    1269012748    cmp AL, strict byte 055h                  ; 3c 55
    12691     jne short 0884bh                          ; 75 0c
     12749    jne short 088c9h                          ; 75 15
    1269212750    xor al, al                                ; 30 c0
    1269312751    mov dx, 00437h                            ; ba 37 04
    1269412752    out DX, AL                                ; ee
    1269512753    mov ax, 00434h                            ; b8 34 04
    12696     call 08380h                               ; e8 35 fb
     12754    call 08380h                               ; e8 c0 fa
     12755    mov dx, strict word 00030h                ; ba 30 00
     12756    mov ax, 01000h                            ; b8 00 10
     12757    call 08802h                               ; e8 39 ff
    1269712758    mov AL, strict byte 055h                  ; b0 55
    1269812759    mov dx, 0043ah                            ; ba 3a 04
     
    1270212763    ; sub ah, ah                                ; 2a e4
    1270312764    cmp AL, strict byte 055h                  ; 3c 55
    12704     jne short 08864h                          ; 75 0c
     12765    jne short 088ebh                          ; 75 15
    1270512766    xor al, al                                ; 30 c0
    1270612767    mov dx, 0043bh                            ; ba 3b 04
    1270712768    out DX, AL                                ; ee
    1270812769    mov ax, 00438h                            ; b8 38 04
    12709     call 08380h                               ; e8 1c fb
     12770    call 08380h                               ; e8 9e fa
     12771    mov dx, strict word 00054h                ; ba 54 00
     12772    mov ax, 01000h                            ; b8 00 10
     12773    call 08802h                               ; e8 17 ff
    1271012774    mov sp, bp                                ; 89 ec
    1271112775    pop bp                                    ; 5d
    1271212776    retn                                      ; c3
    12713 ahci_ctrl_extract_bits_:                     ; 0xf8868 LB 0x1b
     12777ahci_ctrl_extract_bits_:                     ; 0xf88ef LB 0x1b
    1271412778    push si                                   ; 56
    1271512779    push bp                                   ; 55
     
    1271912783    and dx, cx                                ; 21 ca
    1272012784    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
    12721     jcxz 0887eh                               ; e3 06
     12785    jcxz 08905h                               ; e3 06
    1272212786    shr dx, 1                                 ; d1 ea
    1272312787    rcr ax, 1                                 ; d1 d8
    12724     loop 08878h                               ; e2 fa
     12788    loop 088ffh                               ; e2 fa
    1272512789    pop bp                                    ; 5d
    1272612790    pop si                                    ; 5e
    1272712791    retn 00002h                               ; c2 02 00
    12728 ahci_addr_to_phys_:                          ; 0xf8883 LB 0x1e
     12792ahci_addr_to_phys_:                          ; 0xf890a LB 0x1e
    1272912793    push bx                                   ; 53
    1273012794    push cx                                   ; 51
     
    1273712801    sal ax, 1                                 ; d1 e0
    1273812802    rcl dx, 1                                 ; d1 d2
    12739     loop 08891h                               ; e2 fa
     12803    loop 08918h                               ; e2 fa
    1274012804    xor cx, cx                                ; 31 c9
    1274112805    add ax, bx                                ; 01 d8
     
    1274512809    pop bx                                    ; 5b
    1274612810    retn                                      ; c3
    12747 ahci_port_cmd_sync_:                         ; 0xf88a1 LB 0x14b
     12811ahci_port_cmd_sync_:                         ; 0xf8928 LB 0x14b
    1274812812    push bp                                   ; 55
    1274912813    mov bp, sp                                ; 89 e5
     
    1276012824    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1276112825    cmp ah, 0ffh                              ; 80 fc ff
    12762     je near 089e4h                            ; 0f 84 20 01
     12826    je near 08a6bh                            ; 0f 84 20 01
    1276312827    movzx dx, byte [es:si+00263h]             ; 26 0f b6 94 63 02
    1276412828    xor di, di                                ; 31 ff
     
    1277212836    lea ax, [si+00080h]                       ; 8d 84 80 00
    1277312837    mov dx, cx                                ; 89 ca
    12774     call 08883h                               ; e8 96 ff
     12838    call 0890ah                               ; e8 96 ff
    1277512839    mov es, cx                                ; 8e c1
    1277612840    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1283512899    xchg dx, ax                               ; 92
    1283612900    test dh, 040h                             ; f6 c6 40
    12837     jne short 0897ah                          ; 75 04
     12901    jne short 08a01h                          ; 75 04
    1283812902    test AL, strict byte 001h                 ; a8 01
    12839     je short 0897eh                           ; 74 04
     12903    je short 08a05h                           ; 74 04
    1284012904    mov AL, strict byte 001h                  ; b0 01
    12841     jmp short 08980h                          ; eb 02
     12905    jmp short 08a07h                          ; eb 02
    1284212906    xor al, al                                ; 30 c0
    1284312907    test al, al                               ; 84 c0
    12844     je short 0894eh                           ; 74 ca
     12908    je short 089d5h                           ; 74 ca
    1284512909    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
    1284612910    sal di, 007h                              ; c1 e7 07
     
    1289612960    pop bp                                    ; 5d
    1289712961    retn                                      ; c3
    12898 ahci_cmd_data_:                              ; 0xf89ec LB 0x262
     12962ahci_cmd_data_:                              ; 0xf8a73 LB 0x262
    1289912963    push bp                                   ; 55
    1290012964    mov bp, sp                                ; 89 e5
     
    1292112985    mov ax, 00080h                            ; b8 80 00
    1292212986    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12923     call 0a090h                               ; e8 66 16
     12987    call 0a140h                               ; e8 8f 16
    1292412988    mov es, [bp-00ah]                         ; 8e 46 f6
    1292512989    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1293913003    mov dx, word [es:si]                      ; 26 8b 14
    1294013004    mov si, strict word 00008h                ; be 08 00
    12941     call 0a070h                               ; e8 02 16
     13005    call 0a120h                               ; e8 2b 16
    1294213006    mov es, [bp-00ah]                         ; 8e 46 f6
    1294313007    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1295013014    mov dx, word [es:si]                      ; 26 8b 14
    1295113015    mov si, strict word 00010h                ; be 10 00
    12952     call 0a070h                               ; e8 dc 15
     13016    call 0a120h                               ; e8 05 16
    1295313017    mov es, [bp-00ah]                         ; 8e 46 f6
    1295413018    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1296213026    mov dx, word [es:si]                      ; 26 8b 14
    1296313027    mov si, strict word 00018h                ; be 18 00
    12964     call 0a070h                               ; e8 b0 15
     13028    call 0a120h                               ; e8 d9 15
    1296513029    mov es, [bp-00ah]                         ; 8e 46 f6
    1296613030    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1297313037    mov dx, word [es:si]                      ; 26 8b 14
    1297413038    mov si, strict word 00020h                ; be 20 00
    12975     call 0a070h                               ; e8 8a 15
     13039    call 0a120h                               ; e8 b3 15
    1297613040    mov es, [bp-00ah]                         ; 8e 46 f6
    1297713041    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1298413048    mov dx, word [es:si]                      ; 26 8b 14
    1298513049    mov si, strict word 00028h                ; be 28 00
    12986     call 0a070h                               ; e8 64 15
     13050    call 0a120h                               ; e8 8d 15
    1298713051    mov es, [bp-00ah]                         ; 8e 46 f6
    1298813052    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1299813062    mov bx, word [bp-010h]                    ; 8b 5e f0
    1299913063    xor cx, cx                                ; 31 c9
    13000     call 09ff0h                               ; e8 af 14
     13064    call 0a0a0h                               ; e8 d8 14
    1300113065    push dx                                   ; 52
    1300213066    push ax                                   ; 50
     
    1300813072    mov ax, 0026ah                            ; b8 6a 02
    1300913073    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13010     call 09f43h                               ; e8 e6 13
     13074    call 09fefh                               ; e8 0b 14
    1301113075    mov es, [bp-00ah]                         ; 8e 46 f6
    1301213076    mov ax, word [es:di+0027eh]               ; 26 8b 85 7e 02
     
    1302913093    mov ax, word [es:bx+020h]                 ; 26 8b 47 20
    1303013094    test ax, ax                               ; 85 c0
    13031     je short 08bebh                           ; 74 39
     13095    je short 08c72h                           ; 74 39
    1303213096    dec ax                                    ; 48
    1303313097    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1304513109    mov al, byte [bp-008h]                    ; 8a 46 f8
    1304613110    cmp AL, strict byte 035h                  ; 3c 35
    13047     jne short 08bf8h                          ; 75 06
     13111    jne short 08c7fh                          ; 75 06
    1304813112    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    13049     jmp short 08c0fh                          ; eb 17
     13113    jmp short 08c96h                          ; eb 17
    1305013114    cmp AL, strict byte 0a0h                  ; 3c a0
    13051     jne short 08c0bh                          ; 75 0f
     13115    jne short 08c92h                          ; 75 0f
    1305213116    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1305313117    les bx, [bp-00eh]                         ; c4 5e f2
    1305413118    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    13055     jmp short 08c0fh                          ; eb 04
     13119    jmp short 08c96h                          ; eb 04
    1305613120    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1305713121    or byte [bp-008h], 005h                   ; 80 4e f8 05
     
    1305913123    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1306013124    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13061     call 088a1h                               ; e8 81 fc
     13125    call 08928h                               ; e8 81 fc
    1306213126    mov cx, word [bp-00ch]                    ; 8b 4e f4
    1306313127    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1306613130    add ax, 0026ah                            ; 05 6a 02
    1306713131    mov dx, cx                                ; 89 ca
    13068     call 09fbch                               ; e8 87 13
     13132    call 0a068h                               ; e8 ac 13
    1306913133    mov es, cx                                ; 8e c1
    1307013134    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
    1307113135    test al, al                               ; 84 c0
    13072     je short 08c44h                           ; 74 05
     13136    je short 08ccbh                           ; 74 05
    1307313137    mov ax, strict word 00004h                ; b8 04 00
    13074     jmp short 08c46h                          ; eb 02
     13138    jmp short 08ccdh                          ; eb 02
    1307513139    xor ah, ah                                ; 30 e4
    1307613140    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1308013144    pop bp                                    ; 5d
    1308113145    retn                                      ; c3
    13082 ahci_port_deinit_current_:                   ; 0xf8c4e LB 0x17f
     13146ahci_port_deinit_current_:                   ; 0xf8cd5 LB 0x17f
    1308313147    push bp                                   ; 55
    1308413148    mov bp, sp                                ; 89 e5
     
    1309513159    mov byte [bp-00ah], al                    ; 88 46 f6
    1309613160    cmp AL, strict byte 0ffh                  ; 3c ff
    13097     je near 08dc4h                            ; 0f 84 52 01
     13161    je near 08e4bh                            ; 0f 84 52 01
    1309813162    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1309913163    sal ax, 007h                              ; c1 e0 07
     
    1313813202    xchg dx, ax                               ; 92
    1313913203    test ax, 0c011h                           ; a9 11 c0
    13140     je short 08cd2h                           ; 74 04
     13204    je short 08d59h                           ; 74 04
    1314113205    mov AL, strict byte 001h                  ; b0 01
    13142     jmp short 08cd4h                          ; eb 02
     13206    jmp short 08d5bh                          ; eb 02
    1314313207    xor al, al                                ; 30 c0
    1314413208    cmp AL, strict byte 001h                  ; 3c 01
    13145     je short 08ca6h                           ; 74 ce
     13209    je short 08d2dh                           ; 74 ce
    1314613210    mov cx, strict word 00020h                ; b9 20 00
    1314713211    xor bx, bx                                ; 31 db
    1314813212    mov ax, di                                ; 89 f8
    1314913213    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13150     call 0a090h                               ; e8 ab 13
     13214    call 0a140h                               ; e8 d4 13
    1315113215    lea ax, [di+00080h]                       ; 8d 85 80 00
    1315213216    mov cx, strict word 00040h                ; b9 40 00
    1315313217    xor bx, bx                                ; 31 db
    1315413218    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13155     call 0a090h                               ; e8 9c 13
     13219    call 0a140h                               ; e8 c5 13
    1315613220    lea ax, [di+00200h]                       ; 8d 85 00 02
    1315713221    mov cx, strict word 00060h                ; b9 60 00
    1315813222    xor bx, bx                                ; 31 db
    1315913223    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13160     call 0a090h                               ; e8 8d 13
     13224    call 0a140h                               ; e8 b6 13
    1316113225    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1316213226    sal ax, 007h                              ; c1 e0 07
     
    1326213326    pop bp                                    ; 5d
    1326313327    retn                                      ; c3
    13264 ahci_port_init_:                             ; 0xf8dcd LB 0x24a
     13328ahci_port_init_:                             ; 0xf8e54 LB 0x24a
    1326513329    push bp                                   ; 55
    1326613330    mov bp, sp                                ; 89 e5
     
    1327213336    mov word [bp-00ah], dx                    ; 89 56 f6
    1327313337    mov byte [bp-008h], bl                    ; 88 5e f8
    13274     call 08c4eh                               ; e8 6d fe
     13338    call 08cd5h                               ; e8 6d fe
    1327513339    movzx ax, bl                              ; 0f b6 c3
    1327613340    sal ax, 007h                              ; c1 e0 07
     
    1331913383    xchg dx, ax                               ; 92
    1332013384    test ax, 0c011h                           ; a9 11 c0
    13321     je short 08e50h                           ; 74 04
     13385    je short 08ed7h                           ; 74 04
    1332213386    mov AL, strict byte 001h                  ; b0 01
    13323     jmp short 08e52h                          ; eb 02
     13387    jmp short 08ed9h                          ; eb 02
    1332413388    xor al, al                                ; 30 c0
    1332513389    cmp AL, strict byte 001h                  ; 3c 01
    13326     je short 08e1ch                           ; 74 c6
     13390    je short 08ea3h                           ; 74 c6
    1332713391    mov cx, strict word 00020h                ; b9 20 00
    1332813392    xor bx, bx                                ; 31 db
    1332913393    mov ax, si                                ; 89 f0
    1333013394    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13331     call 0a090h                               ; e8 2d 12
     13395    call 0a140h                               ; e8 56 12
    1333213396    lea ax, [si+00080h]                       ; 8d 84 80 00
    1333313397    mov cx, strict word 00040h                ; b9 40 00
    1333413398    xor bx, bx                                ; 31 db
    1333513399    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13336     call 0a090h                               ; e8 1e 12
     13400    call 0a140h                               ; e8 47 12
    1333713401    lea di, [si+00200h]                       ; 8d bc 00 02
    1333813402    mov cx, strict word 00060h                ; b9 60 00
     
    1334013404    mov ax, di                                ; 89 f8
    1334113405    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13342     call 0a090h                               ; e8 0d 12
     13406    call 0a140h                               ; e8 36 12
    1334313407    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    1334413408    sal bx, 007h                              ; c1 e3 07
     
    1335713421    mov ax, di                                ; 89 f8
    1335813422    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13359     call 08883h                               ; e8 d3 f9
     13423    call 0890ah                               ; e8 d3 f9
    1336013424    mov es, [bp-00ah]                         ; 8e 46 f6
    1336113425    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1340213466    mov ax, si                                ; 89 f0
    1340313467    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13404     call 08883h                               ; e8 67 f9
     13468    call 0890ah                               ; e8 67 f9
    1340513469    mov es, [bp-00ah]                         ; 8e 46 f6
    1340613470    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1350713571    pop bp                                    ; 5d
    1350813572    retn                                      ; c3
    13509 @ahci_read_sectors:                          ; 0xf9017 LB 0xa6
     13573@ahci_read_sectors:                          ; 0xf909e LB 0xa6
    1351013574    push bp                                   ; 55
    1351113575    mov bp, sp                                ; 89 e5
     
    1351713581    sub di, strict byte 0000ch                ; 83 ef 0c
    1351813582    cmp di, strict byte 00004h                ; 83 ff 04
    13519     jbe short 0903ch                          ; 76 0f
     13583    jbe short 090c3h                          ; 76 0f
    1352013584    push di                                   ; 57
    13521     push 00c74h                               ; 68 74 0c
    13522     push 00c86h                               ; 68 86 0c
     13585    push 00cd6h                               ; 68 d6 0c
     13586    push 00ce8h                               ; 68 e8 0c
    1352313587    push strict byte 00007h                   ; 6a 07
    13524     call 01a6bh                               ; e8 32 8a
     13588    call 01a6bh                               ; e8 ab 89
    1352513589    add sp, strict byte 00008h                ; 83 c4 08
    1352613590    xor bx, bx                                ; 31 db
     
    1353613600    mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
    1353713601    xor ax, ax                                ; 31 c0
    13538     call 08dcdh                               ; e8 65 fd
     13602    call 08e54h                               ; e8 65 fd
    1353913603    mov bx, strict word 00025h                ; bb 25 00
    1354013604    mov ax, si                                ; 89 f0
    1354113605    mov dx, word [bp+006h]                    ; 8b 56 06
    13542     call 089ech                               ; e8 79 f9
     13606    call 08a73h                               ; e8 79 f9
    1354313607    mov word [bp-006h], ax                    ; 89 46 fa
    1354413608    mov es, [bp+006h]                         ; 8e 46 06
     
    1356913633    pop bp                                    ; 5d
    1357013634    retn 00004h                               ; c2 04 00
    13571 @ahci_write_sectors:                         ; 0xf90bd LB 0x84
     13635@ahci_write_sectors:                         ; 0xf9144 LB 0x84
    1357213636    push bp                                   ; 55
    1357313637    mov bp, sp                                ; 89 e5
     
    1358013644    sub dx, strict byte 0000ch                ; 83 ea 0c
    1358113645    cmp dx, strict byte 00004h                ; 83 fa 04
    13582     jbe short 090e6h                          ; 76 0f
     13646    jbe short 0916dh                          ; 76 0f
    1358313647    push dx                                   ; 52
    13584     push 00ca5h                               ; 68 a5 0c
    13585     push 00c86h                               ; 68 86 0c
     13648    push 00d07h                               ; 68 07 0d
     13649    push 00ce8h                               ; 68 e8 0c
    1358613650    push strict byte 00007h                   ; 6a 07
    13587     call 01a6bh                               ; e8 88 89
     13651    call 01a6bh                               ; e8 01 89
    1358813652    add sp, strict byte 00008h                ; 83 c4 08
    1358913653    xor bx, bx                                ; 31 db
     
    1359913663    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1360013664    xor ax, ax                                ; 31 c0
    13601     call 08dcdh                               ; e8 bd fc
     13665    call 08e54h                               ; e8 bd fc
    1360213666    mov bx, strict word 00035h                ; bb 35 00
    1360313667    mov ax, si                                ; 89 f0
    1360413668    mov dx, cx                                ; 89 ca
    13605     call 089ech                               ; e8 d2 f8
     13669    call 08a73h                               ; e8 d2 f8
    1360613670    mov dx, ax                                ; 89 c2
    1360713671    mov es, cx                                ; 8e c1
     
    1361813682    pop bp                                    ; 5d
    1361913683    retn 00004h                               ; c2 04 00
    13620 ahci_cmd_packet_:                            ; 0xf9141 LB 0x183
     13684ahci_cmd_packet_:                            ; 0xf91c8 LB 0x183
    1362113685    push bp                                   ; 55
    1362213686    mov bp, sp                                ; 89 e5
     
    1363013694    mov dx, strict word 0000eh                ; ba 0e 00
    1363113695    mov ax, strict word 00040h                ; b8 40 00
    13632     call 01765h                               ; e8 09 86
     13696    call 01765h                               ; e8 82 85
    1363313697    mov si, 00122h                            ; be 22 01
    1363413698    mov word [bp-008h], ax                    ; 89 46 f8
    1363513699    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    13636     jne short 09187h                          ; 75 1f
    13637     mov bx, 00db2h                            ; bb b2 0d
     13700    jne short 0920eh                          ; 75 1f
     13701    mov bx, 00e14h                            ; bb 14 0e
    1363813702    mov cx, ds                                ; 8c d9
    1363913703    mov ax, strict word 00004h                ; b8 04 00
    13640     call 01a2ah                               ; e8 b7 88
    13641     push 00cb8h                               ; 68 b8 0c
    13642     push 00cc8h                               ; 68 c8 0c
     13704    call 01a2ah                               ; e8 30 88
     13705    push 00d1ah                               ; 68 1a 0d
     13706    push 00d2ah                               ; 68 2a 0d
    1364313707    push strict byte 00004h                   ; 6a 04
    13644     call 01a6bh                               ; e8 ed 88
     13708    call 01a6bh                               ; e8 66 88
    1364513709    add sp, strict byte 00006h                ; 83 c4 06
    1364613710    mov ax, strict word 00001h                ; b8 01 00
    13647     jmp near 092bbh                           ; e9 34 01
     13711    jmp near 09342h                           ; e9 34 01
    1364813712    test byte [bp+004h], 001h                 ; f6 46 04 01
    13649     jne short 09181h                          ; 75 f4
     13713    jne short 09208h                          ; 75 f4
    1365013714    mov ax, word [bp+006h]                    ; 8b 46 06
    1365113715    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1365313717    sal ax, 1                                 ; d1 e0
    1365413718    rcl dx, 1                                 ; d1 d2
    13655     loop 09196h                               ; e2 fa
     13719    loop 0921dh                               ; e2 fa
    1365613720    mov es, [bp-008h]                         ; 8e 46 f8
    1365713721    mov word [es:si], ax                      ; 26 89 04
     
    1366713731    mov dx, word [bp+008h]                    ; 8b 56 08
    1366813732    xor cx, cx                                ; 31 c9
    13669     call 0a030h                               ; e8 64 0e
     13733    call 0a0e0h                               ; e8 8d 0e
    1367013734    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1367113735    xor di, di                                ; 31 ff
     
    1368413748    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1368513749    xor ax, ax                                ; 31 c0
    13686     call 08dcdh                               ; e8 c5 fb
     13750    call 08e54h                               ; e8 c5 fb
    1368713751    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    1368813752    push ax                                   ; 50
     
    1369113755    mov ax, 000c0h                            ; b8 c0 00
    1369213756    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13693     call 0a0a0h                               ; e8 84 0e
     13757    call 0a150h                               ; e8 ad 0e
    1369413758    mov es, [bp-008h]                         ; 8e 46 f8
    1369513759    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1369813762    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
    1369913763    test ax, ax                               ; 85 c0
    13700     je short 0925ah                           ; 74 27
     13764    je short 092e1h                           ; 74 27
    1370113765    dec ax                                    ; 48
    1370213766    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1371113775    mov ax, si                                ; 89 f0
    1371213776    mov dx, word [bp-008h]                    ; 8b 56 f8
    13713     call 089ech                               ; e8 87 f7
     13777    call 08a73h                               ; e8 87 f7
    1371413778    les bx, [bp-00eh]                         ; c4 5e f2
    1371513779    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     
    1373813802    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1373913803    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    13740     jne short 092b9h                          ; 75 05
     13804    jne short 09340h                          ; 75 05
    1374113805    mov ax, strict word 00004h                ; b8 04 00
    13742     jmp short 092bbh                          ; eb 02
     13806    jmp short 09342h                          ; eb 02
    1374313807    xor ax, ax                                ; 31 c0
    1374413808    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1374713811    pop bp                                    ; 5d
    1374813812    retn 0000ch                               ; c2 0c 00
    13749 ahci_port_detect_device_:                    ; 0xf92c4 LB 0x4b1
     13813ahci_port_detect_device_:                    ; 0xf934b LB 0x4b1
    1375013814    push bp                                   ; 55
    1375113815    mov bp, sp                                ; 89 e5
     
    1375913823    movzx di, bl                              ; 0f b6 fb
    1376013824    mov bx, di                                ; 89 fb
    13761     call 08dcdh                               ; e8 ef fa
     13825    call 08e54h                               ; e8 ef fa
    1376213826    mov dx, strict word 0000eh                ; ba 0e 00
    1376313827    mov ax, strict word 00040h                ; b8 40 00
    13764     call 01765h                               ; e8 7e 84
     13828    call 01765h                               ; e8 f7 83
    1376513829    mov word [bp-010h], 00122h                ; c7 46 f0 22 01
    1376613830    mov word [bp-00eh], ax                    ; 89 46 f2
     
    1383113895    mov bx, strict word 0000fh                ; bb 0f 00
    1383213896    xor cx, cx                                ; 31 c9
    13833     call 08868h                               ; e8 d7 f4
     13897    call 088efh                               ; e8 d7 f4
    1383413898    test ax, ax                               ; 85 c0
    13835     je near 0976dh                            ; 0f 84 d6 03
     13899    je near 097f4h                            ; 0f 84 d6 03
    1383613900    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1383713901    sal ax, 007h                              ; c1 e0 07
     
    1386113925    mov bx, strict word 0000fh                ; bb 0f 00
    1386213926    xor cx, cx                                ; 31 c9
    13863     call 08868h                               ; e8 8b f4
     13927    call 088efh                               ; e8 8b f4
    1386413928    cmp ax, strict word 00001h                ; 3d 01 00
    13865     je short 09397h                           ; 74 b5
     13929    je short 0941eh                           ; 74 b5
    1386613930    push strict byte 00000h                   ; 6a 00
    1386713931    mov bx, strict word 0000fh                ; bb 0f 00
     
    1386913933    mov ax, di                                ; 89 f8
    1387013934    mov dx, word [bp-022h]                    ; 8b 56 de
    13871     call 08868h                               ; e8 77 f4
     13935    call 088efh                               ; e8 77 f4
    1387213936    cmp ax, strict word 00003h                ; 3d 03 00
    13873     jne near 0976dh                           ; 0f 85 75 03
     13937    jne near 097f4h                           ; 0f 85 75 03
    1387413938    mov ax, word [bp-018h]                    ; 8b 46 e8
    1387513939    add ax, 00130h                            ; 05 30 01
     
    1389813962    mov byte [bp-008h], al                    ; 88 46 f8
    1389913963    cmp AL, strict byte 004h                  ; 3c 04
    13900     jnc near 0976dh                           ; 0f 83 2f 03
     13964    jnc near 097f4h                           ; 0f 83 2f 03
    1390113965    mov ax, word [bp-018h]                    ; 8b 46 e8
    1390213966    add ax, 00118h                            ; 05 18 01
     
    1395014014    add cl, 00ch                              ; 80 c1 0c
    1395114015    test dx, dx                               ; 85 d2
    13952     jne near 096c3h                           ; 0f 85 0d 02
     14016    jne near 0974ah                           ; 0f 85 0d 02
    1395314017    cmp di, 00101h                            ; 81 ff 01 01
    13954     jne near 096c3h                           ; 0f 85 05 02
     14018    jne near 0974ah                           ; 0f 85 05 02
    1395514019    les bx, [bp-010h]                         ; c4 5e f0
    1395614020    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
     
    1396614030    mov ax, word [bp-010h]                    ; 8b 46 f0
    1396714031    mov dx, es                                ; 8c c2
    13968     call 089ech                               ; e8 fa f4
     14032    call 08a73h                               ; e8 fa f4
    1396914033    mov byte [bp-00ch], cl                    ; 88 4e f4
    1397014034    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     
    1398314047    mov dword [bp-016h], strict dword 000000000h ; 66 c7 46 ea 00 00 00 00
    1398414048    cmp di, 00fffh                            ; 81 ff ff 0f
    13985     jne short 0954bh                          ; 75 1e
     14049    jne short 095d2h                          ; 75 1e
    1398614050    cmp dx, strict byte 0ffffh                ; 83 fa ff
    13987     jne short 0954bh                          ; 75 19
     14051    jne short 095d2h                          ; 75 19
    1398814052    mov dx, word [bp-0015ch]                  ; 8b 96 a4 fe
    1398914053    mov word [bp-014h], dx                    ; 89 56 ec
     
    1402214086    mov al, byte [bp-008h]                    ; 8a 46 f8
    1402314087    cmp AL, strict byte 001h                  ; 3c 01
    14024     jc short 095c4h                           ; 72 0c
    14025     jbe short 095cch                          ; 76 12
     14088    jc short 0964bh                           ; 72 0c
     14089    jbe short 09653h                          ; 76 12
    1402614090    cmp AL, strict byte 003h                  ; 3c 03
    14027     je short 095d4h                           ; 74 16
     14091    je short 0965bh                           ; 74 16
    1402814092    cmp AL, strict byte 002h                  ; 3c 02
    14029     je short 095d0h                           ; 74 0e
    14030     jmp short 0961dh                          ; eb 59
     14093    je short 09657h                           ; 74 0e
     14094    jmp short 096a4h                          ; eb 59
    1403114095    test al, al                               ; 84 c0
    14032     jne short 0961dh                          ; 75 55
     14096    jne short 096a4h                          ; 75 55
    1403314097    mov DL, strict byte 040h                  ; b2 40
    14034     jmp short 095d6h                          ; eb 0a
     14098    jmp short 0965dh                          ; eb 0a
    1403514099    mov DL, strict byte 048h                  ; b2 48
    14036     jmp short 095d6h                          ; eb 06
     14100    jmp short 0965dh                          ; eb 06
    1403714101    mov DL, strict byte 050h                  ; b2 50
    14038     jmp short 095d6h                          ; eb 02
     14102    jmp short 0965dh                          ; eb 02
    1403914103    mov DL, strict byte 058h                  ; b2 58
    1404014104    mov al, dl                                ; 88 d0
     
    1404214106    movzx bx, al                              ; 0f b6 d8
    1404314107    mov ax, bx                                ; 89 d8
    14044     call 017a5h                               ; e8 c3 81
     14108    call 017a5h                               ; e8 3c 81
    1404514109    test al, al                               ; 84 c0
    14046     je short 0961dh                           ; 74 37
     14110    je short 096a4h                           ; 74 37
    1404714111    mov al, dl                                ; 88 d0
    1404814112    db  0feh, 0c0h
    1404914113    ; inc al                                    ; fe c0
    1405014114    xor ah, ah                                ; 30 e4
    14051     call 017a5h                               ; e8 b6 81
     14115    call 017a5h                               ; e8 2f 81
    1405214116    xor ah, ah                                ; 30 e4
    1405314117    mov si, ax                                ; 89 c6
    1405414118    sal si, 008h                              ; c1 e6 08
    1405514119    movzx ax, dl                              ; 0f b6 c2
    14056     call 017a5h                               ; e8 a9 81
     14120    call 017a5h                               ; e8 22 81
    1405714121    xor ah, ah                                ; 30 e4
    1405814122    add ax, si                                ; 01 f0
     
    1406114125    add AL, strict byte 002h                  ; 04 02
    1406214126    xor ah, ah                                ; 30 e4
    14063     call 017a5h                               ; e8 99 81
     14127    call 017a5h                               ; e8 12 81
    1406414128    xor ah, ah                                ; 30 e4
    1406514129    mov word [bp-02ah], ax                    ; 89 46 d6
    1406614130    mov ax, bx                                ; 89 d8
    14067     call 017a5h                               ; e8 8f 81
     14131    call 017a5h                               ; e8 08 81
    1406814132    xor ah, ah                                ; 30 e4
    1406914133    mov word [bp-026h], ax                    ; 89 46 da
    14070     jmp short 0962dh                          ; eb 10
     14134    jmp short 096b4h                          ; eb 10
    1407114135    push dword [bp-016h]                      ; 66 ff 76 ea
    1407214136    push di                                   ; 57
     
    1407414138    mov dx, ss                                ; 8c d2
    1407514139    lea ax, [bp-02ah]                         ; 8d 46 d6
    14076     call 05ad0h                               ; e8 a3 c4
    14077     mov bx, 00db2h                            ; bb b2 0d
     14140    call 05ad0h                               ; e8 1c c4
     14141    mov bx, 00e14h                            ; bb 14 0e
    1407814142    mov cx, ds                                ; 8c d9
    1407914143    mov ax, strict word 00004h                ; b8 04 00
    14080     call 01a2ah                               ; e8 f2 83
     14144    call 01a2ah                               ; e8 6b 83
    1408114145    push dword [bp-016h]                      ; 66 ff 76 ea
    1408214146    push di                                   ; 57
     
    1409514159    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1409614160    push ax                                   ; 50
    14097     push 00ce8h                               ; 68 e8 0c
     14161    push 00d4ah                               ; 68 4a 0d
    1409814162    push strict byte 00004h                   ; 6a 04
    14099     call 01a6bh                               ; e8 04 84
     14163    call 01a6bh                               ; e8 7d 83
    1410014164    add sp, strict byte 0001ch                ; 83 c4 1c
    1410114165    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     
    1412614190    mov dx, strict word 00075h                ; ba 75 00
    1412714191    mov ax, strict word 00040h                ; b8 40 00
    14128     call 01749h                               ; e8 97 80
     14192    call 01749h                               ; e8 10 80
    1412914193    db  0feh, 0c0h
    1413014194    ; inc al                                    ; fe c0
     
    1413214196    mov dx, strict word 00075h                ; ba 75 00
    1413314197    mov ax, strict word 00040h                ; b8 40 00
    14134     call 01757h                               ; e8 97 80
    14135     jmp near 0975fh                           ; e9 9c 00
     14198    call 01757h                               ; e8 10 80
     14199    jmp near 097e6h                           ; e9 9c 00
    1413614200    cmp dx, 0eb14h                            ; 81 fa 14 eb
    14137     jne near 0975fh                           ; 0f 85 94 00
     14201    jne near 097e6h                           ; 0f 85 94 00
    1413814202    cmp di, 00101h                            ; 81 ff 01 01
    14139     jne near 0975fh                           ; 0f 85 8c 00
     14203    jne near 097e6h                           ; 0f 85 8c 00
    1414014204    les bx, [bp-010h]                         ; c4 5e f0
    1414114205    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
     
    1415114215    mov ax, word [bp-010h]                    ; 8b 46 f0
    1415214216    mov dx, es                                ; 8c c2
    14153     call 089ech                               ; e8 e5 f2
     14217    call 08a73h                               ; e8 e5 f2
    1415414218    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    1415514219    db  00fh, 095h, 0c0h
     
    1418814252    pop bp                                    ; 5d
    1418914253    retn                                      ; c3
    14190 ahci_mem_alloc_:                             ; 0xf9775 LB 0x43
     14254ahci_mem_alloc_:                             ; 0xf97fc LB 0x43
    1419114255    push bp                                   ; 55
    1419214256    mov bp, sp                                ; 89 e5
     
    1419814262    mov dx, 00413h                            ; ba 13 04
    1419914263    xor ax, ax                                ; 31 c0
    14200     call 01765h                               ; e8 e0 7f
     14264    call 01765h                               ; e8 59 7f
    1420114265    test ax, ax                               ; 85 c0
    14202     je short 097aeh                           ; 74 25
     14266    je short 09835h                           ; 74 25
    1420314267    dec ax                                    ; 48
    1420414268    mov bx, ax                                ; 89 c3
     
    1420714271    sal ax, 1                                 ; d1 e0
    1420814272    rcl dx, 1                                 ; d1 d2
    14209     loop 09791h                               ; e2 fa
     14273    loop 09818h                               ; e2 fa
    1421014274    mov si, ax                                ; 89 c6
    1421114275    mov di, dx                                ; 89 d7
     
    1421314277    shr di, 1                                 ; d1 ef
    1421414278    rcr si, 1                                 ; d1 de
    14215     loop 0979eh                               ; e2 fa
     14279    loop 09825h                               ; e2 fa
    1421614280    mov dx, 00413h                            ; ba 13 04
    1421714281    xor ax, ax                                ; 31 c0
    14218     call 01773h                               ; e8 c7 7f
     14282    call 01773h                               ; e8 40 7f
    1421914283    mov ax, si                                ; 89 f0
    1422014284    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1422614290    pop bp                                    ; 5d
    1422714291    retn                                      ; c3
    14228 ahci_hba_init_:                              ; 0xf97b8 LB 0x166
     14292ahci_hba_init_:                              ; 0xf983f LB 0x166
    1422914293    push bp                                   ; 55
    1423014294    mov bp, sp                                ; 89 e5
     
    1423814302    mov dx, strict word 0000eh                ; ba 0e 00
    1423914303    mov ax, strict word 00040h                ; b8 40 00
    14240     call 01765h                               ; e8 97 7f
     14304    call 01765h                               ; e8 10 7f
    1424114305    mov bx, 00122h                            ; bb 22 01
    1424214306    mov di, ax                                ; 89 c7
     
    1425514319    shr eax, 010h                             ; 66 c1 e8 10
    1425614320    xchg dx, ax                               ; 92
    14257     call 09775h                               ; e8 83 ff
     14321    call 097fch                               ; e8 83 ff
    1425814322    mov word [bp-010h], ax                    ; 89 46 f0
    1425914323    test ax, ax                               ; 85 c0
    14260     je near 098fdh                            ; 0f 84 02 01
     14324    je near 09984h                            ; 0f 84 02 01
    1426114325    mov ax, word [bp-010h]                    ; 8b 46 f0
    1426214326    mov es, di                                ; 8e c7
     
    1430814372    xchg dx, ax                               ; 92
    1430914373    test AL, strict byte 001h                 ; a8 01
    14310     jne short 09851h                          ; 75 de
     14374    jne short 098d8h                          ; 75 de
    1431114375    xor ax, ax                                ; 31 c0
    1431214376    xor cx, cx                                ; 31 c9
     
    1432614390    mov bx, strict word 0001fh                ; bb 1f 00
    1432714391    xor cx, cx                                ; 31 c9
    14328     call 08868h                               ; e8 d1 ef
     14392    call 088efh                               ; e8 d1 ef
    1432914393    db  0feh, 0c0h
    1433014394    ; inc al                                    ; fe c0
    1433114395    mov byte [bp-00eh], al                    ; 88 46 f2
    1433214396    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    14333     jmp short 098c2h                          ; eb 20
     14397    jmp short 09949h                          ; eb 20
    1433414398    xor al, al                                ; 30 c0
    1433514399    test al, al                               ; 84 c0
    14336     je short 098b9h                           ; 74 11
     14400    je short 09940h                           ; 74 11
    1433714401    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    1433814402    xor ax, ax                                ; 31 c0
    1433914403    mov dx, word [bp-010h]                    ; 8b 56 f0
    14340     call 092c4h                               ; e8 10 fa
     14404    call 0934bh                               ; e8 10 fa
    1434114405    dec byte [bp-00eh]                        ; fe 4e f2
    14342     je short 098fbh                           ; 74 42
     14406    je short 09982h                           ; 74 42
    1434314407    inc byte [bp-00ch]                        ; fe 46 f4
    1434414408    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    14345     jnc short 098fbh                          ; 73 39
     14409    jnc short 09982h                          ; 73 39
    1434614410    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    1434714411    mov bx, strict word 00001h                ; bb 01 00
    1434814412    xor di, di                                ; 31 ff
    14349     jcxz 098d3h                               ; e3 06
     14413    jcxz 0995ah                               ; e3 06
    1435014414    sal bx, 1                                 ; d1 e3
    1435114415    rcl di, 1                                 ; d1 d7
    14352     loop 098cdh                               ; e2 fa
     14416    loop 09954h                               ; e2 fa
    1435314417    mov ax, strict word 0000ch                ; b8 0c 00
    1435414418    xor cx, cx                                ; 31 c9
     
    1436614430    xchg dx, ax                               ; 92
    1436714431    test dx, di                               ; 85 fa
    14368     jne short 098f7h                          ; 75 04
     14432    jne short 0997eh                          ; 75 04
    1436914433    test ax, bx                               ; 85 d8
    14370     je short 098a2h                           ; 74 ab
     14434    je short 09929h                           ; 74 ab
    1437114435    mov AL, strict byte 001h                  ; b0 01
    14372     jmp short 098a4h                          ; eb a9
     14436    jmp short 0992bh                          ; eb a9
    1437314437    xor ax, ax                                ; 31 c0
    1437414438    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1438014444    pop bp                                    ; 5d
    1438114445    retn                                      ; c3
    14382     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0eeh, 099h, 0cch, 099h, 0d2h, 099h, 0d8h, 099h, 0deh
    14383     db  099h, 0e4h, 099h, 0eah, 099h, 0eeh, 099h
    14384 _ahci_init:                                  ; 0xf991e LB 0x116
     14446    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 075h, 09ah, 053h, 09ah, 059h, 09ah, 05fh, 09ah, 065h
     14447    db  09ah, 06bh, 09ah, 071h, 09ah, 075h, 09ah
     14448_ahci_init:                                  ; 0xf99a5 LB 0x116
    1438514449    push bp                                   ; 55
    1438614450    mov bp, sp                                ; 89 e5
     
    1439014454    mov ax, 00601h                            ; b8 01 06
    1439114455    mov dx, strict word 00001h                ; ba 01 00
    14392     call 09e54h                               ; e8 25 05
     14456    call 09edbh                               ; e8 25 05
    1439314457    mov bx, ax                                ; 89 c3
    1439414458    cmp ax, strict word 0ffffh                ; 3d ff ff
    14395     je near 09a2dh                            ; 0f 84 f5 00
     14459    je near 09ab4h                            ; 0f 84 f5 00
    1439614460    xor al, al                                ; 30 c0
    1439714461    shr ax, 008h                              ; c1 e8 08
     
    1440114465    xor ah, ah                                ; 30 e4
    1440214466    mov bx, strict word 00034h                ; bb 34 00
    14403     call 09e7fh                               ; e8 31 05
     14467    call 09f2bh                               ; e8 56 05
    1440414468    mov cl, al                                ; 88 c1
    1440514469    test cl, cl                               ; 84 c9
    14406     je short 09977h                           ; 74 23
     14470    je short 099feh                           ; 74 23
    1440714471    movzx bx, cl                              ; 0f b6 d9
    1440814472    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1441014474    mov dx, di                                ; 89 fa
    1441114475    mov ax, si                                ; 89 f0
    14412     call 09e7fh                               ; e8 19 05
     14476    call 09f2bh                               ; e8 3e 05
    1441314477    cmp AL, strict byte 012h                  ; 3c 12
    14414     je short 09977h                           ; 74 0d
     14478    je short 099feh                           ; 74 0d
    1441514479    mov al, cl                                ; 88 c8
    1441614480    db  0feh, 0c0h
     
    1441914483    mov dx, di                                ; 89 fa
    1442014484    mov ax, si                                ; 89 f0
    14421     jmp short 0994bh                          ; eb d4
     14485    jmp short 099d2h                          ; eb d4
    1442214486    test cl, cl                               ; 84 c9
    14423     je near 09a2dh                            ; 0f 84 b0 00
     14487    je near 09ab4h                            ; 0f 84 b0 00
    1442414488    add cl, 002h                              ; 80 c1 02
    1442514489    movzx bx, cl                              ; 0f b6 d9
     
    1442814492    mov dx, si                                ; 89 f2
    1442914493    mov ax, di                                ; 89 f8
    14430     call 09e7fh                               ; e8 ed 04
     14494    call 09f2bh                               ; e8 12 05
    1443114495    cmp AL, strict byte 010h                  ; 3c 10
    14432     jne near 09a2dh                           ; 0f 85 95 00
     14496    jne near 09ab4h                           ; 0f 85 95 00
    1443314497    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1443414498    mov al, cl                                ; 88 c8
     
    1443714501    mov dx, si                                ; 89 f2
    1443814502    mov ax, di                                ; 89 f8
    14439     call 09ea3h                               ; e8 f9 04
     14503    call 09f4fh                               ; e8 1e 05
    1444014504    mov dx, ax                                ; 89 c2
    1444114505    and ax, strict word 0000fh                ; 25 0f 00
    1444214506    sub ax, strict word 00004h                ; 2d 04 00
    1444314507    cmp ax, strict word 0000bh                ; 3d 0b 00
    14444     jnbe short 099eeh                         ; 77 37
     14508    jnbe short 09a75h                         ; 77 37
    1444514509    push CS                                   ; 0e
    1444614510    pop ES                                    ; 07
    1444714511    mov cx, strict word 00008h                ; b9 08 00
    14448     mov di, 09907h                            ; bf 07 99
     14512    mov di, 0998eh                            ; bf 8e 99
    1444914513    repne scasb                               ; f2 ae
    1445014514    sal cx, 1                                 ; d1 e1
    1445114515    mov di, cx                                ; 89 cf
    14452     mov ax, word [cs:di-066f2h]               ; 2e 8b 85 0e 99
     14516    mov ax, word [cs:di-0666bh]               ; 2e 8b 85 95 99
    1445314517    jmp ax                                    ; ff e0
    1445414518    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    14455     jmp short 099eeh                          ; eb 1c
     14519    jmp short 09a75h                          ; eb 1c
    1445614520    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    14457     jmp short 099eeh                          ; eb 16
     14521    jmp short 09a75h                          ; eb 16
    1445814522    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    14459     jmp short 099eeh                          ; eb 10
     14523    jmp short 09a75h                          ; eb 10
    1446014524    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    14461     jmp short 099eeh                          ; eb 0a
     14525    jmp short 09a75h                          ; eb 0a
    1446214526    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    14463     jmp short 099eeh                          ; eb 04
     14527    jmp short 09a75h                          ; eb 04
    1446414528    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1446514529    mov cx, dx                                ; 89 d1
     
    1446814532    mov al, byte [bp-006h]                    ; 8a 46 fa
    1446914533    test al, al                               ; 84 c0
    14470     je short 09a2dh                           ; 74 30
     14534    je short 09ab4h                           ; 74 30
    1447114535    movzx bx, al                              ; 0f b6 d8
    1447214536    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1447414538    mov dx, di                                ; 89 fa
    1447514539    mov ax, si                                ; 89 f0
    14476     call 09ec5h                               ; e8 b6 04
     14540    call 09f71h                               ; e8 db 04
    1447714541    test AL, strict byte 001h                 ; a8 01
    14478     je short 09a2dh                           ; 74 1a
     14542    je short 09ab4h                           ; 74 1a
    1447914543    and AL, strict byte 0f0h                  ; 24 f0
    1448014544    add ax, cx                                ; 01 c8
     
    1448414548    mov dx, di                                ; 89 fa
    1448514549    mov ax, si                                ; 89 f0
    14486     call 09eech                               ; e8 c5 04
     14550    call 09f98h                               ; e8 ea 04
    1448714551    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14488     call 097b8h                               ; e8 8b fd
     14552    call 0983fh                               ; e8 8b fd
    1448914553    lea sp, [bp-004h]                         ; 8d 66 fc
    1449014554    pop di                                    ; 5f
     
    1449214556    pop bp                                    ; 5d
    1449314557    retn                                      ; c3
    14494 apm_out_str_:                                ; 0xf9a34 LB 0x39
     14558apm_out_str_:                                ; 0xf9abb LB 0x39
    1449514559    push bp                                   ; 55
    1449614560    mov bp, sp                                ; 89 e5
     
    1449814562    mov bx, ax                                ; 89 c3
    1449914563    cmp byte [bx], 000h                       ; 80 3f 00
    14500     je short 09a49h                           ; 74 0a
     14564    je short 09ad0h                           ; 74 0a
    1450114565    mov al, byte [bx]                         ; 8a 07
    1450214566    out DX, AL                                ; ee
     
    1450514569    db  00ah, 0c0h
    1450614570    ; or al, al                                 ; 0a c0
    14507     jne short 09a41h                          ; 75 f8
     14571    jne short 09ac8h                          ; 75 f8
    1450814572    lea sp, [bp-002h]                         ; 8d 66 fe
    1450914573    pop bx                                    ; 5b
    1451014574    pop bp                                    ; 5d
    1451114575    retn                                      ; c3
    14512     nop                                       ; 90
    14513     call far 09aa2h:09b5ch                    ; 9a 5c 9b a2 9a
    14514     mov bp, 05c9ah                            ; bd 9a 5c
     14576    pop SS                                    ; 17
    1451514577    wait                                      ; 9b
    14516     call 0f6f6h                               ; e8 9a 5c
     14578    jcxz 09a75h                               ; e3 9b
     14579    sub word [bp+di-064bch], bx               ; 29 9b 44 9b
     14580    jcxz 09a7bh                               ; e3 9b
     14581    outsw                                     ; 6f
    1451714582    wait                                      ; 9b
    14518     in ax, DX                                 ; ed
    14519     call far 09b31h:09b31h                    ; 9a 31 9b 31 9b
    14520     xor word [bp+di-064d4h], bx               ; 31 9b 2c 9b
    14521     xor word [bp+di-064cfh], bx               ; 31 9b 31 9b
    14522     db  025h
     14583    jcxz 09a7fh                               ; e3 9b
     14584    je short 09a81h                           ; 74 9b
     14585    mov ax, 0b89bh                            ; b8 9b b8
    1452314586    wait                                      ; 9b
    14524 _apm_function:                               ; 0xf9a6d LB 0xf5
     14587    mov ax, 0b39bh                            ; b8 9b b3
     14588    wait                                      ; 9b
     14589    mov ax, 0b89bh                            ; b8 9b b8
     14590    wait                                      ; 9b
     14591    lodsb                                     ; ac
     14592    wait                                      ; 9b
     14593_apm_function:                               ; 0xf9af4 LB 0xf5
    1452514594    push bp                                   ; 55
    1452614595    mov bp, sp                                ; 89 e5
     
    1453014599    xor ah, ah                                ; 30 e4
    1453114600    cmp ax, strict word 0000eh                ; 3d 0e 00
    14532     jnbe near 09b31h                          ; 0f 87 b0 00
     14601    jnbe near 09bb8h                          ; 0f 87 b0 00
    1453314602    mov bx, ax                                ; 89 c3
    1453414603    add bx, ax                                ; 01 c3
    1453514604    mov dx, word [bp+018h]                    ; 8b 56 18
    1453614605    or dl, 001h                               ; 80 ca 01
    14537     jmp word [cs:bx-065b1h]                   ; 2e ff a7 4f 9a
     14606    jmp word [cs:bx-0652ah]                   ; 2e ff a7 d6 9a
    1453814607    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1453914608    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1454014609    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14541     jmp near 09b5ch                           ; e9 ba 00
     14610    jmp near 09be3h                           ; e9 ba 00
    1454214611    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14543     mov word [bp+00ch], 0a114h                ; c7 46 0c 14 a1
     14612    mov word [bp+00ch], 0a1c4h                ; c7 46 0c c4 a1
    1454414613    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1454514614    mov ax, strict word 0fff0h                ; b8 f0 ff
    1454614615    mov word [bp+006h], ax                    ; 89 46 06
    1454714616    mov word [bp+004h], ax                    ; 89 46 04
    14548     jmp near 09b5ch                           ; e9 9f 00
     14617    jmp near 09be3h                           ; e9 9f 00
    1454914618    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1455014619    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1455914628    mov si, ax                                ; 89 c6
    1456014629    sal esi, 010h                             ; 66 c1 e6 10
    14561     jmp near 09b5ch                           ; e9 74 00
     14630    jmp near 09be3h                           ; e9 74 00
    1456214631    sti                                       ; fb
    1456314632    hlt                                       ; f4
    14564     jmp near 09b5ch                           ; e9 6f 00
     14633    jmp near 09be3h                           ; e9 6f 00
    1456514634    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14566     je short 09b12h                           ; 74 1f
     14635    je short 09b99h                           ; 74 1f
    1456714636    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14568     je short 09b0ah                           ; 74 11
     14637    je short 09b91h                           ; 74 11
    1456914638    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14570     jne short 09b1ah                          ; 75 1b
     14639    jne short 09ba1h                          ; 75 1b
    1457114640    mov dx, 0040fh                            ; ba 0f 04
    14572     mov ax, 00d22h                            ; b8 22 0d
    14573     call 09a34h                               ; e8 2c ff
    14574     jmp short 09b5ch                          ; eb 52
     14641    mov ax, 00d84h                            ; b8 84 0d
     14642    call 09abbh                               ; e8 2c ff
     14643    jmp short 09be3h                          ; eb 52
    1457514644    mov dx, 0040fh                            ; ba 0f 04
    14576     mov ax, 00d2ah                            ; b8 2a 0d
    14577     jmp short 09b05h                          ; eb f3
     14645    mov ax, 00d8ch                            ; b8 8c 0d
     14646    jmp short 09b8ch                          ; eb f3
    1457814647    mov dx, 0040fh                            ; ba 0f 04
    14579     mov ax, 00d32h                            ; b8 32 0d
    14580     jmp short 09b05h                          ; eb eb
     14648    mov ax, 00d94h                            ; b8 94 0d
     14649    jmp short 09b8ch                          ; eb eb
    1458114650    or ah, 00ah                               ; 80 cc 0a
    1458214651    mov word [bp+012h], ax                    ; 89 46 12
    1458314652    mov word [bp+018h], dx                    ; 89 56 18
    14584     jmp short 09b5ch                          ; eb 37
     14653    jmp short 09be3h                          ; eb 37
    1458514654    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14586     jmp short 09b5ch                          ; eb 30
     14655    jmp short 09be3h                          ; eb 30
    1458714656    or ah, 080h                               ; 80 cc 80
    14588     jmp short 09b1dh                          ; eb ec
    14589     mov bx, 00db2h                            ; bb b2 0d
     14657    jmp short 09ba4h                          ; eb ec
     14658    mov bx, 00e14h                            ; bb 14 0e
    1459014659    mov cx, ds                                ; 8c d9
    1459114660    mov ax, strict word 00004h                ; b8 04 00
    14592     call 01a2ah                               ; e8 ee 7e
     14661    call 01a2ah                               ; e8 67 7e
    1459314662    push word [bp+00ch]                       ; ff 76 0c
    1459414663    push word [bp+012h]                       ; ff 76 12
    14595     push 00d3bh                               ; 68 3b 0d
     14664    push 00d9dh                               ; 68 9d 0d
    1459614665    push strict byte 00004h                   ; 6a 04
    14597     call 01a6bh                               ; e8 21 7f
     14666    call 01a6bh                               ; e8 9a 7e
    1459814667    add sp, strict byte 00008h                ; 83 c4 08
    1459914668    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1460614675    pop bp                                    ; 5d
    1460714676    retn                                      ; c3
    14608 pci16_select_reg_:                           ; 0xf9b62 LB 0x24
     14677pci16_select_reg_:                           ; 0xf9be9 LB 0x24
    1460914678    push bp                                   ; 55
    1461014679    mov bp, sp                                ; 89 e5
     
    1462314692    pop bp                                    ; 5d
    1462414693    retn                                      ; c3
    14625 pci16_find_device_:                          ; 0xf9b86 LB 0xf7
     14694pci16_find_device_:                          ; 0xf9c0d LB 0xf7
    1462614695    push bp                                   ; 55
    1462714696    mov bp, sp                                ; 89 e5
     
    1463714706    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1463814707    test bl, 007h                             ; f6 c3 07
    14639     jne short 09bceh                          ; 75 2d
     14708    jne short 09c55h                          ; 75 2d
    1464014709    mov dx, strict word 0000eh                ; ba 0e 00
    1464114710    mov ax, bx                                ; 89 d8
    14642     call 09b62h                               ; e8 b9 ff
     14711    call 09be9h                               ; e8 b9 ff
    1464314712    mov dx, 00cfeh                            ; ba fe 0c
    1464414713    in AL, DX                                 ; ec
     
    1464714716    mov byte [bp-006h], al                    ; 88 46 fa
    1464814717    cmp AL, strict byte 0ffh                  ; 3c ff
    14649     jne short 09bbch                          ; 75 06
     14718    jne short 09c43h                          ; 75 06
    1465014719    add bx, strict byte 00008h                ; 83 c3 08
    14651     jmp near 09c4fh                           ; e9 93 00
     14720    jmp near 09cd6h                           ; e9 93 00
    1465214721    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14653     je short 09bc9h                           ; 74 07
     14722    je short 09c50h                           ; 74 07
    1465414723    mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
    14655     jmp short 09bceh                          ; eb 05
     14724    jmp short 09c55h                          ; eb 05
    1465614725    mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
    1465714726    mov al, byte [bp-006h]                    ; 8a 46 fa
    1465814727    and AL, strict byte 007h                  ; 24 07
    1465914728    cmp AL, strict byte 001h                  ; 3c 01
    14660     jne short 09bf6h                          ; 75 1f
     14729    jne short 09c7dh                          ; 75 1f
    1466114730    mov ax, bx                                ; 89 d8
    1466214731    shr ax, 008h                              ; c1 e8 08
    1466314732    test ax, ax                               ; 85 c0
    14664     jne short 09bf6h                          ; 75 16
     14733    jne short 09c7dh                          ; 75 16
    1466514734    mov dx, strict word 0001ah                ; ba 1a 00
    1466614735    mov ax, bx                                ; 89 d8
    14667     call 09b62h                               ; e8 7a ff
     14736    call 09be9h                               ; e8 7a ff
    1466814737    mov dx, 00cfeh                            ; ba fe 0c
    1466914738    in AL, DX                                 ; ec
     
    1467114740    ; sub ah, ah                                ; 2a e4
    1467214741    cmp al, byte [bp-008h]                    ; 3a 46 f8
    14673     jbe short 09bf6h                          ; 76 03
     14742    jbe short 09c7dh                          ; 76 03
    1467414743    mov byte [bp-008h], al                    ; 88 46 f8
    1467514744    test di, di                               ; 85 ff
    14676     je short 09bffh                           ; 74 05
     14745    je short 09c86h                           ; 74 05
    1467714746    mov dx, strict word 00008h                ; ba 08 00
    14678     jmp short 09c01h                          ; eb 02
     14747    jmp short 09c88h                          ; eb 02
    1467914748    xor dx, dx                                ; 31 d2
    1468014749    mov ax, bx                                ; 89 d8
    14681     call 09b62h                               ; e8 5c ff
     14750    call 09be9h                               ; e8 5c ff
    1468214751    mov dx, 00cfch                            ; ba fc 0c
    1468314752    in eax, DX                                ; 66 ed
     
    1469014759    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    1469114760    test di, di                               ; 85 ff
    14692     je short 09c30h                           ; 74 0f
     14761    je short 09cb7h                           ; 74 0f
    1469314762    mov cx, strict word 00008h                ; b9 08 00
    1469414763    shr dx, 1                                 ; d1 ea
    1469514764    rcr ax, 1                                 ; d1 d8
    14696     loop 09c24h                               ; e2 fa
     14765    loop 09cabh                               ; e2 fa
    1469714766    mov word [bp-00eh], ax                    ; 89 46 f2
    1469814767    mov word [bp-00ch], dx                    ; 89 56 f4
    1469914768    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1470014769    cmp ax, word [bp-014h]                    ; 3b 46 ec
    14701     jne short 09c40h                          ; 75 08
     14770    jne short 09cc7h                          ; 75 08
    1470214771    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1470314772    cmp ax, word [bp-012h]                    ; 3b 46 ee
    14704     je short 09c46h                           ; 74 06
     14773    je short 09ccdh                           ; 74 06
    1470514774    cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
    14706     je short 09c4ch                           ; 74 06
     14775    je short 09cd3h                           ; 74 06
    1470714776    dec si                                    ; 4e
    1470814777    cmp si, strict byte 0ffffh                ; 83 fe ff
    14709     je short 09c5eh                           ; 74 12
     14778    je short 09ce5h                           ; 74 12
    1471014779    add bx, word [bp-00ah]                    ; 03 5e f6
    1471114780    mov dx, bx                                ; 89 da
     
    1471314782    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1471414783    cmp dx, ax                                ; 39 c2
    14715     jbe near 09b9ch                           ; 0f 86 3e ff
     14784    jbe near 09c23h                           ; 0f 86 3e ff
    1471614785    cmp si, strict byte 0ffffh                ; 83 fe ff
    14717     jne short 09c67h                          ; 75 04
     14786    jne short 09ceeh                          ; 75 04
    1471814787    mov ax, bx                                ; 89 d8
    14719     jmp short 09c6ah                          ; eb 03
     14788    jmp short 09cf1h                          ; eb 03
    1472014789    mov ax, strict word 0ffffh                ; b8 ff ff
    1472114790    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1472414793    pop bp                                    ; 5d
    1472514794    retn                                      ; c3
    14726     pop di                                    ; 5f
    14727     popfw                                     ; 9d
    14728     jns short 09c12h                          ; 79 9d
    14729     mov [di-0625fh], ds                       ; 8c 9d a1 9d
    14730     mov AH, strict byte 09dh                  ; b4 9d
    14731     db  0c7h
    14732     popfw                                     ; 9d
    14733 _pci16_function:                             ; 0xf9c7d LB 0x1d7
     14795    out strict byte 09dh, AL                  ; e6 9d
     14796    add byte [bp-061edh], bl                  ; 00 9e 13 9e
     14797    sub byte [bp-061c5h], bl                  ; 28 9e 3b 9e
     14798    dec si                                    ; 4e
     14799    sahf                                      ; 9e
     14800_pci16_function:                             ; 0xf9d04 LB 0x1d7
    1473414801    push bp                                   ; 55
    1473514802    mov bp, sp                                ; 89 e5
     
    1474514812    xor ah, ah                                ; 30 e4
    1474614813    cmp bx, strict byte 00003h                ; 83 fb 03
    14747     jc short 09cb6h                           ; 72 1a
    14748     jbe short 09d0eh                          ; 76 70
     14814    jc short 09d3dh                           ; 72 1a
     14815    jbe short 09d95h                          ; 76 70
    1474914816    cmp bx, strict byte 0000eh                ; 83 fb 0e
    14750     je near 09ddbh                            ; 0f 84 36 01
     14817    je near 09e62h                            ; 0f 84 36 01
    1475114818    cmp bx, strict byte 00008h                ; 83 fb 08
    14752     jc near 09e20h                            ; 0f 82 74 01
     14819    jc near 09ea7h                            ; 0f 82 74 01
    1475314820    cmp bx, strict byte 0000dh                ; 83 fb 0d
    14754     jbe near 09d33h                           ; 0f 86 80 00
    14755     jmp near 09e20h                           ; e9 6a 01
     14821    jbe near 09dbah                           ; 0f 86 80 00
     14822    jmp near 09ea7h                           ; e9 6a 01
    1475614823    cmp bx, strict byte 00002h                ; 83 fb 02
    14757     je short 09cdeh                           ; 74 23
     14824    je short 09d65h                           ; 74 23
    1475814825    cmp bx, strict byte 00001h                ; 83 fb 01
    14759     jne near 09e20h                           ; 0f 85 5e 01
     14826    jne near 09ea7h                           ; 0f 85 5e 01
    1476014827    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1476114828    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1476314830    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1476414831    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    14765     jmp near 09e4dh                           ; e9 6f 01
     14832    jmp near 09ed4h                           ; e9 6f 01
    1476614833    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    14767     jne short 09ceah                          ; 75 06
     14834    jne short 09d71h                          ; 75 06
    1476814835    or ah, 083h                               ; 80 cc 83
    14769     jmp near 09e46h                           ; e9 5c 01
     14836    jmp near 09ecdh                           ; e9 5c 01
    1477014837    mov bx, word [bp+008h]                    ; 8b 5e 08
    1477114838    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1477214839    mov ax, word [bp+018h]                    ; 8b 46 18
    1477314840    xor cx, cx                                ; 31 c9
    14774     call 09b86h                               ; e8 8e fe
     14841    call 09c0dh                               ; e8 8e fe
    1477514842    cmp ax, strict word 0ffffh                ; 3d ff ff
    14776     jne short 09d08h                          ; 75 0b
     14843    jne short 09d8fh                          ; 75 0b
    1477714844    mov ax, word [bp+020h]                    ; 8b 46 20
    1477814845    xor ah, ah                                ; 30 e4
    1477914846    or ah, 086h                               ; 80 cc 86
    14780     jmp near 09e46h                           ; e9 3e 01
     14847    jmp near 09ecdh                           ; e9 3e 01
    1478114848    mov word [bp+014h], ax                    ; 89 46 14
    14782     jmp near 09e4dh                           ; e9 3f 01
     14849    jmp near 09ed4h                           ; e9 3f 01
    1478314850    mov bx, word [bp+008h]                    ; 8b 5e 08
    1478414851    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1478514852    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1478614853    mov cx, strict word 00001h                ; b9 01 00
    14787     call 09b86h                               ; e8 69 fe
     14854    call 09c0dh                               ; e8 69 fe
    1478814855    cmp ax, strict word 0ffffh                ; 3d ff ff
    14789     jne short 09d2dh                          ; 75 0b
     14856    jne short 09db4h                          ; 75 0b
    1479014857    mov ax, word [bp+020h]                    ; 8b 46 20
    1479114858    xor ah, ah                                ; 30 e4
    1479214859    or ah, 086h                               ; 80 cc 86
    14793     jmp near 09e46h                           ; e9 19 01
     14860    jmp near 09ecdh                           ; e9 19 01
    1479414861    mov word [bp+014h], ax                    ; 89 46 14
    14795     jmp near 09e4dh                           ; e9 1a 01
     14862    jmp near 09ed4h                           ; e9 1a 01
    1479614863    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    14797     jc short 09d40h                           ; 72 06
     14864    jc short 09dc7h                           ; 72 06
    1479814865    or ah, 087h                               ; 80 cc 87
    14799     jmp near 09e46h                           ; e9 06 01
     14866    jmp near 09ecdh                           ; e9 06 01
    1480014867    mov dx, word [bp+004h]                    ; 8b 56 04
    1480114868    mov ax, word [bp+014h]                    ; 8b 46 14
    14802     call 09b62h                               ; e8 19 fe
     14869    call 09be9h                               ; e8 19 fe
    1480314870    mov bx, word [bp+020h]                    ; 8b 5e 20
    1480414871    xor bh, bh                                ; 30 ff
    1480514872    sub bx, strict byte 00008h                ; 83 eb 08
    1480614873    cmp bx, strict byte 00005h                ; 83 fb 05
    14807     jnbe near 09e4dh                          ; 0f 87 f5 00
     14874    jnbe near 09ed4h                          ; 0f 87 f5 00
    1480814875    add bx, bx                                ; 01 db
    14809     jmp word [cs:bx-0638fh]                   ; 2e ff a7 71 9c
     14876    jmp word [cs:bx-06308h]                   ; 2e ff a7 f8 9c
    1481014877    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1481114878    xor bl, bl                                ; 30 db
     
    1481814885    or bx, ax                                 ; 09 c3
    1481914886    mov word [bp+01ch], bx                    ; 89 5e 1c
    14820     jmp near 09e4dh                           ; e9 d4 00
     14887    jmp near 09ed4h                           ; e9 d4 00
    1482114888    mov dx, word [bp+004h]                    ; 8b 56 04
    1482214889    xor dh, dh                                ; 30 f6
     
    1482514892    in ax, DX                                 ; ed
    1482614893    mov word [bp+01ch], ax                    ; 89 46 1c
    14827     jmp near 09e4dh                           ; e9 c1 00
     14894    jmp near 09ed4h                           ; e9 c1 00
    1482814895    mov dx, 00cfch                            ; ba fc 0c
    1482914896    in eax, DX                                ; 66 ed
     
    1483414901    mov word [bp+01ch], ax                    ; 89 46 1c
    1483514902    mov word [bp+01eh], dx                    ; 89 56 1e
    14836     jmp near 09e4dh                           ; e9 ac 00
     14903    jmp near 09ed4h                           ; e9 ac 00
    1483714904    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1483814905    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1484114908    add dx, 00cfch                            ; 81 c2 fc 0c
    1484214909    out DX, AL                                ; ee
    14843     jmp near 09e4dh                           ; e9 99 00
     14910    jmp near 09ed4h                           ; e9 99 00
    1484414911    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1484514912    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1484814915    add dx, 00cfch                            ; 81 c2 fc 0c
    1484914916    out DX, ax                                ; ef
    14850     jmp near 09e4dh                           ; e9 86 00
     14917    jmp near 09ed4h                           ; e9 86 00
    1485114918    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1485214919    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1485714924    ; mov ax, cx                                ; 8b c1
    1485814925    out DX, eax                               ; 66 ef
    14859     jmp short 09e4dh                          ; eb 72
     14926    jmp short 09ed4h                          ; eb 72
    1486014927    mov bx, word [bp+004h]                    ; 8b 5e 04
    1486114928    mov es, [bp+026h]                         ; 8e 46 26
     
    1486414931    mov cx, word [0f370h]                     ; 8b 0e 70 f3
    1486514932    cmp cx, word [es:bx]                      ; 26 3b 0f
    14866     jbe short 09e01h                          ; 76 11
     14933    jbe short 09e88h                          ; 76 11
    1486714934    mov ax, word [bp+020h]                    ; 8b 46 20
    1486814935    xor ah, ah                                ; 30 e4
     
    1487014937    mov word [bp+020h], ax                    ; 89 46 20
    1487114938    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    14872     jmp short 09e15h                          ; eb 14
     14939    jmp short 09e9ch                          ; eb 14
    1487314940    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1487414941    mov si, 0f190h                            ; be 90 f1
     
    1488214949    les bx, [bp-008h]                         ; c4 5e f8
    1488314950    mov word [es:bx], ax                      ; 26 89 07
    14884     jmp short 09e4dh                          ; eb 2d
    14885     mov bx, 00db2h                            ; bb b2 0d
     14951    jmp short 09ed4h                          ; eb 2d
     14952    mov bx, 00e14h                            ; bb 14 0e
    1488614953    mov cx, ds                                ; 8c d9
    1488714954    mov ax, strict word 00004h                ; b8 04 00
    14888     call 01a2ah                               ; e8 ff 7b
     14955    call 01a2ah                               ; e8 78 7b
    1488914956    mov ax, word [bp+014h]                    ; 8b 46 14
    1489014957    push ax                                   ; 50
    1489114958    mov ax, word [bp+020h]                    ; 8b 46 20
    1489214959    push ax                                   ; 50
    14893     push 00d6eh                               ; 68 6e 0d
     14960    push 00dd0h                               ; 68 d0 0d
    1489414961    push strict byte 00004h                   ; 6a 04
    14895     call 01a6bh                               ; e8 30 7c
     14962    call 01a6bh                               ; e8 a9 7b
    1489614963    add sp, strict byte 00008h                ; 83 c4 08
    1489714964    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1490514972    pop bp                                    ; 5d
    1490614973    retn                                      ; c3
    14907 pci_find_classcode_:                         ; 0xf9e54 LB 0x2b
     14974pci_find_classcode_:                         ; 0xf9edb LB 0x2b
    1490814975    push bp                                   ; 55
    1490914976    mov bp, sp                                ; 89 e5
     
    1492014987    int 01ah                                  ; cd 1a
    1492114988    cmp ah, 000h                              ; 80 fc 00
    14922     je near 09e75h                            ; 0f 84 03 00
     14989    je near 09efch                            ; 0f 84 03 00
    1492314990    mov bx, strict word 0ffffh                ; bb ff ff
    1492414991    mov ax, bx                                ; 89 d8
     
    1492914996    pop bp                                    ; 5d
    1493014997    retn                                      ; c3
    14931 pci_read_config_byte_:                       ; 0xf9e7f LB 0x24
     14998pci_find_device_:                            ; 0xf9f06 LB 0x25
     14999    push bp                                   ; 55
     15000    mov bp, sp                                ; 89 e5
     15001    push bx                                   ; 53
     15002    push cx                                   ; 51
     15003    push si                                   ; 56
     15004    mov cx, dx                                ; 89 d1
     15005    xor si, si                                ; 31 f6
     15006    mov dx, ax                                ; 89 c2
     15007    mov ax, 0b102h                            ; b8 02 b1
     15008    int 01ah                                  ; cd 1a
     15009    cmp ah, 000h                              ; 80 fc 00
     15010    je near 09f21h                            ; 0f 84 03 00
     15011    mov bx, strict word 0ffffh                ; bb ff ff
     15012    mov ax, bx                                ; 89 d8
     15013    lea sp, [bp-006h]                         ; 8d 66 fa
     15014    pop si                                    ; 5e
     15015    pop cx                                    ; 59
     15016    pop bx                                    ; 5b
     15017    pop bp                                    ; 5d
     15018    retn                                      ; c3
     15019pci_read_config_byte_:                       ; 0xf9f2b LB 0x24
    1493215020    push bp                                   ; 55
    1493315021    mov bp, sp                                ; 89 e5
     
    1494815036    pop bp                                    ; 5d
    1494915037    retn                                      ; c3
    14950 pci_read_config_word_:                       ; 0xf9ea3 LB 0x22
     15038pci_read_config_word_:                       ; 0xf9f4f LB 0x22
    1495115039    push bp                                   ; 55
    1495215040    mov bp, sp                                ; 89 e5
     
    1496715055    pop bp                                    ; 5d
    1496815056    retn                                      ; c3
    14969 pci_read_config_dword_:                      ; 0xf9ec5 LB 0x27
     15057pci_read_config_dword_:                      ; 0xf9f71 LB 0x27
    1497015058    push bp                                   ; 55
    1497115059    mov bp, sp                                ; 89 e5
     
    1498815076    pop bp                                    ; 5d
    1498915077    retn                                      ; c3
    14990 pci_write_config_word_:                      ; 0xf9eec LB 0x1c
     15078pci_write_config_word_:                      ; 0xf9f98 LB 0x1c
    1499115079    push bp                                   ; 55
    1499215080    mov bp, sp                                ; 89 e5
     
    1500315091    pop bp                                    ; 5d
    1500415092    retn                                      ; c3
    15005 vds_is_present_:                             ; 0xf9f08 LB 0x1d
     15093vds_is_present_:                             ; 0xf9fb4 LB 0x1d
    1500615094    push bx                                   ; 53
    1500715095    push bp                                   ; 55
     
    1501115099    mov es, ax                                ; 8e c0
    1501215100    test byte [es:bx], 020h                   ; 26 f6 07 20
    15013     je short 09f20h                           ; 74 06
     15101    je short 09fcch                           ; 74 06
    1501415102    mov ax, strict word 00001h                ; b8 01 00
    1501515103    pop bp                                    ; 5d
     
    1502015108    pop bx                                    ; 5b
    1502115109    retn                                      ; c3
    15022 vds_real_to_lin_:                            ; 0xf9f25 LB 0x1e
     15110vds_real_to_lin_:                            ; 0xf9fd1 LB 0x1e
    1502315111    push bx                                   ; 53
    1502415112    push cx                                   ; 51
     
    1503115119    sal ax, 1                                 ; d1 e0
    1503215120    rcl dx, 1                                 ; d1 d2
    15033     loop 09f33h                               ; e2 fa
     15121    loop 09fdfh                               ; e2 fa
    1503415122    xor cx, cx                                ; 31 c9
    1503515123    add ax, bx                                ; 01 d8
     
    1503915127    pop bx                                    ; 5b
    1504015128    retn                                      ; c3
    15041 vds_build_sg_list_:                          ; 0xf9f43 LB 0x79
     15129vds_build_sg_list_:                          ; 0xf9fef LB 0x79
    1504215130    push bp                                   ; 55
    1504315131    mov bp, sp                                ; 89 e5
     
    1505315141    mov bx, word [bp+006h]                    ; 8b 5e 06
    1505415142    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15055     call 09f25h                               ; e8 c3 ff
     15143    call 09fd1h                               ; e8 c3 ff
    1505615144    mov es, si                                ; 8e c6
    1505715145    mov word [es:di+004h], ax                 ; 26 89 45 04
    1505815146    mov word [es:di+006h], dx                 ; 26 89 55 06
    1505915147    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15060     call 09f08h                               ; e8 93 ff
     15148    call 09fb4h                               ; e8 93 ff
    1506115149    test ax, ax                               ; 85 c0
    15062     je short 09f8ch                           ; 74 13
     15150    je short 0a038h                           ; 74 13
    1506315151    mov es, si                                ; 8e c6
    1506415152    mov ax, 08105h                            ; b8 05 81
    1506515153    mov dx, strict word 00000h                ; ba 00 00
    1506615154    int 04bh                                  ; cd 4b
    15067     jc near 09f89h                            ; 0f 82 02 00
     15155    jc near 0a035h                            ; 0f 82 02 00
    1506815156    db  032h, 0c0h
    1506915157    ; xor al, al                                ; 32 c0
    1507015158    cbw                                       ; 98
    15071     jmp short 09fb3h                          ; eb 27
     15159    jmp short 0a05fh                          ; eb 27
    1507215160    mov es, si                                ; 8e c6
    1507315161    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1508615174    pop bp                                    ; 5d
    1508715175    retn 00004h                               ; c2 04 00
    15088 vds_free_sg_list_:                           ; 0xf9fbc LB 0x34
     15176vds_free_sg_list_:                           ; 0xfa068 LB 0x38
    1508915177    push bp                                   ; 55
    1509015178    mov bp, sp                                ; 89 e5
     
    1509215180    push di                                   ; 57
    1509315181    mov bx, ax                                ; 89 c3
    15094     call 09f08h                               ; e8 42 ff
     15182    call 09fb4h                               ; e8 42 ff
    1509515183    test ax, ax                               ; 85 c0
    15096     je short 09fddh                           ; 74 13
     15184    je short 0a089h                           ; 74 13
    1509715185    mov di, bx                                ; 89 df
    1509815186    mov es, dx                                ; 8e c2
     
    1510015188    mov dx, strict word 00000h                ; ba 00 00
    1510115189    int 04bh                                  ; cd 4b
    15102     jc near 09fdch                            ; 0f 82 02 00
     15190    jc near 0a088h                            ; 0f 82 02 00
    1510315191    db  032h, 0c0h
    1510415192    ; xor al, al                                ; 32 c0
     
    1511115199    pop bp                                    ; 5d
    1511215200    retn                                      ; c3
    15113     times 0x4 db 0
    15114 __U4M:                                       ; 0xf9ff0 LB 0x40
     15201    times 0x8 db 0
     15202__U4M:                                       ; 0xfa0a0 LB 0x40
    1511515203    pushfw                                    ; 9c
    1511615204    push eax                                  ; 66 50
     
    1513815226    retn                                      ; c3
    1513915227    times 0xf db 0
    15140 __U4D:                                       ; 0xfa030 LB 0x40
     15228__U4D:                                       ; 0xfa0e0 LB 0x40
    1514115229    pushfw                                    ; 9c
    1514215230    push eax                                  ; 66 50
     
    1516915257    retn                                      ; c3
    1517015258    times 0x7 db 0
    15171 __U8RS:                                      ; 0xfa070 LB 0x10
     15259__U8RS:                                      ; 0xfa120 LB 0x10
    1517215260    test si, si                               ; 85 f6
    15173     je short 0a07fh                           ; 74 0b
     15261    je short 0a12fh                           ; 74 0b
    1517415262    shr ax, 1                                 ; d1 e8
    1517515263    rcr bx, 1                                 ; d1 db
     
    1517715265    rcr dx, 1                                 ; d1 da
    1517815266    dec si                                    ; 4e
    15179     jne short 0a074h                          ; 75 f5
     15267    jne short 0a124h                          ; 75 f5
    1518015268    retn                                      ; c3
    15181 __U8LS:                                      ; 0xfa080 LB 0x10
     15269__U8LS:                                      ; 0xfa130 LB 0x10
    1518215270    test si, si                               ; 85 f6
    15183     je short 0a08fh                           ; 74 0b
     15271    je short 0a13fh                           ; 74 0b
    1518415272    sal dx, 1                                 ; d1 e2
    1518515273    rcl cx, 1                                 ; d1 d1
     
    1518715275    rcl ax, 1                                 ; d1 d0
    1518815276    dec si                                    ; 4e
    15189     jne short 0a084h                          ; 75 f5
     15277    jne short 0a134h                          ; 75 f5
    1519015278    retn                                      ; c3
    15191 _fmemset_:                                   ; 0xfa090 LB 0x10
     15279_fmemset_:                                   ; 0xfa140 LB 0x10
    1519215280    push di                                   ; 57
    1519315281    mov es, dx                                ; 8e c2
     
    1520015288    retn                                      ; c3
    1520115289    times 0x3 db 0
    15202 _fmemcpy_:                                   ; 0xfa0a0 LB 0x3a
     15290_fmemcpy_:                                   ; 0xfa150 LB 0x3a
    1520315291    push bp                                   ; 55
    1520415292    db  08bh, 0ech
     
    1522515313    add byte [bx+si], al                      ; 00 00
    1522615314    add byte [bx+si], al                      ; 00 00
    15227     db  0f0h, 0a0h, 0f2h, 0a0h, 0f6h, 0a0h, 0f6h, 0a0h, 0f6h, 0a0h, 0f8h, 0a0h, 0f8h, 0a0h, 0fah, 0a0h
    15228     db  0feh, 0a0h, 0feh, 0a0h, 000h, 0a1h, 005h, 0a1h, 007h, 0a1h
    15229 apm_worker:                                  ; 0xfa0da LB 0x3a
     15315    mov AL, byte [0a2a1h]                     ; a0 a1 a2
     15316    mov ax, word [0a1a6h]                     ; a1 a6 a1
     15317    cmpsb                                     ; a6
     15318    mov ax, word [0a1a6h]                     ; a1 a6 a1
     15319    test AL, strict byte 0a1h                 ; a8 a1
     15320    test AL, strict byte 0a1h                 ; a8 a1
     15321    stosb                                     ; aa
     15322    mov ax, word [0a1aeh]                     ; a1 ae a1
     15323    scasb                                     ; ae
     15324    mov ax, word [0a1b0h]                     ; a1 b0 a1
     15325    mov CH, strict byte 0a1h                  ; b5 a1
     15326    mov BH, strict byte 0a1h                  ; b7 a1
     15327apm_worker:                                  ; 0xfa18a LB 0x3a
    1523015328    sti                                       ; fb
    1523115329    push ax                                   ; 50
     
    1523915337    pop ax                                    ; 58
    1524015338    mov AH, strict byte 053h                  ; b4 53
    15241     jnc short 0a110h                          ; 73 25
    15242     jmp word [cs:bp-05f40h]                   ; 2e ff a6 c0 a0
    15243     jmp short 0a10eh                          ; eb 1c
     15339    jnc short 0a1c0h                          ; 73 25
     15340    jmp word [cs:bp-05e90h]                   ; 2e ff a6 70 a1
     15341    jmp short 0a1beh                          ; eb 1c
    1524415342    sti                                       ; fb
    1524515343    hlt                                       ; f4
    15246     jmp short 0a10eh                          ; eb 18
    15247     jmp short 0a10eh                          ; eb 16
    15248     jmp short 0a110h                          ; eb 16
     15344    jmp short 0a1beh                          ; eb 18
     15345    jmp short 0a1beh                          ; eb 16
     15346    jmp short 0a1c0h                          ; eb 16
    1524915347    mov AH, strict byte 080h                  ; b4 80
    15250     jmp short 0a112h                          ; eb 14
    15251     jmp short 0a110h                          ; eb 10
     15348    jmp short 0a1c2h                          ; eb 14
     15349    jmp short 0a1c0h                          ; eb 10
    1525215350    mov ax, 00102h                            ; b8 02 01
    15253     jmp short 0a10eh                          ; eb 09
    15254     jmp short 0a10eh                          ; eb 07
     15351    jmp short 0a1beh                          ; eb 09
     15352    jmp short 0a1beh                          ; eb 07
    1525515353    mov BL, strict byte 000h                  ; b3 00
    1525615354    mov cx, strict word 00000h                ; b9 00 00
    15257     jmp short 0a10eh                          ; eb 00
     15355    jmp short 0a1beh                          ; eb 00
    1525815356    clc                                       ; f8
    1525915357    retn                                      ; c3
     
    1526115359    stc                                       ; f9
    1526215360    retn                                      ; c3
    15263 apm_pm16_entry:                              ; 0xfa114 LB 0x11
     15361apm_pm16_entry:                              ; 0xfa1c4 LB 0x11
    1526415362    mov AH, strict byte 002h                  ; b4 02
    1526515363    push DS                                   ; 1e
     
    1526915367    add bp, strict byte 00008h                ; 83 c5 08
    1527015368    mov ds, bp                                ; 8e dd
    15271     call 0a0dah                               ; e8 b8 ff
     15369    call 0a18ah                               ; e8 b8 ff
    1527215370    pop bp                                    ; 5d
    1527315371    pop DS                                    ; 1f
    1527415372    retf                                      ; cb
    1527515373
    15276   ; Padding 0x38db bytes at 0xfa125
    15277   times 14555 db 0
     15374  ; Padding 0x382b bytes at 0xfa1d5
     15375  times 14379 db 0
    1527815376
    1527915377section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1532215420    add bp, strict byte 00008h                ; 83 c5 08
    1532315421    push ebp                                  ; 66 55
    15324     mov bp, 0a116h                            ; bd 16 a1
     15422    mov bp, 0a1c6h                            ; bd c6 a1
    1532515423    add byte [bx+si], al                      ; 00 00
    1532615424    push ebp                                  ; 66 55
     
    1605716155    call 01da8h                               ; e8 65 3a
    1605816156    call 02235h                               ; e8 ef 3e
    16059     call 0991eh                               ; e8 d5 b5
    16060     call 08802h                               ; e8 b6 a4
     16157    call 099a5h                               ; e8 5c b6
     16158    call 0886eh                               ; e8 22 a5
    1606116159    call 0ed2fh                               ; e8 e0 09
    1606216160    call 0e2d2h                               ; e8 80 ff
     
    1694617044    popfw                                     ; 9d
    1694717045    jmp short 0f8a7h                          ; eb 13
    16948     call 09a6dh                               ; e8 d6 a1
     17046    call 09af4h                               ; e8 5d a2
    1694917047    jmp short 0f88eh                          ; eb f5
    1695017048int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1710017198    cld                                       ; fc
    1710117199    pushad                                    ; 66 60
    17102     call 09c7dh                               ; e8 00 9e
     17200    call 09d04h                               ; e8 87 9e
    1710317201    popad                                     ; 66 61
    1710417202    pop DS                                    ; 1f
     
    1721417312cpu_reset:                                   ; 0xffff0 LB 0x10
    1721517313    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17216     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0cah
     17314    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 037h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum

    r67789 r67807  
    1 da1ff89ad5a9af36b6b7a00f1397d543 *VBoxPcBios386.rom
     1f85d1e93260947edc3616ca0a94b2b5f *VBoxPcBios386.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm

    r67789 r67807  
    988988    db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
    989989_pktacc:                                     ; 0xf006a LB 0xc
    990     db  000h, 000h, 000h, 000h, 000h, 000h, 0a1h, 02bh, 00bh, 082h, 0a6h, 091h
     990    db  000h, 000h, 000h, 000h, 000h, 000h, 0a1h, 02bh, 00bh, 082h, 033h, 092h
    991991_softrst:                                    ; 0xf0076 LB 0xc
    992992    db  000h, 000h, 000h, 000h, 000h, 000h, 02ch, 02eh, 02eh, 03ch, 02eh, 03ch
    993993_dskacc:                                     ; 0xf0082 LB 0x2e
    994994    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 02ah, 046h, 02bh, 000h, 000h, 000h, 000h
    995     db  039h, 080h, 022h, 081h, 074h, 090h, 01eh, 091h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     995    db  039h, 080h, 022h, 081h, 001h, 091h, 0abh, 091h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
    996996    db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
    997997
    998 section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
     998section CONST progbits vstart=0xb0 align=1 ; size=0xd40 class=DATA group=DGROUP
    999999    db   'NMI Handler called', 00ah, 000h
    10001000    db   'INT18: BOOT FAILURE', 00ah, 000h
     
    11011101    db   'Disk %d has an unsupported sector size of %u', 00ah, 000h
    11021102    db   'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
    1103     db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
     1103    db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h
     1104    db   'scsi_pci_init', 000h
     1105    db   '%s: Adapter %x:%x not found, how come?!', 00ah, 000h
     1106    db   '%s: Adapter %x:%x found at %x, enabling BM', 00ah, 000h
    11041107    db   'ahci_read_sectors', 000h
    11051108    db   '%s: device_id out of range %d', 00ah, 000h
     
    11141117    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    11151118
    1116 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
    1117 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
     1119section CONST2 progbits vstart=0xdf0 align=1 ; size=0x3fa class=DATA group=DGROUP
     1120_bios_cvs_version_string:                    ; 0xf0df0 LB 0x12
    11181121    db  'VirtualBox 5.1.51', 000h
    1119 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     1122_bios_prefix_string:                         ; 0xf0e02 LB 0x8
    11201123    db  'BIOS: ', 000h, 000h
    1121 _isotag:                                     ; 0xf0da8 LB 0x6
     1124_isotag:                                     ; 0xf0e0a LB 0x6
    11221125    db  'CD001', 000h
    1123 _eltorito:                                   ; 0xf0dae LB 0x18
     1126_eltorito:                                   ; 0xf0e10 LB 0x18
    11241127    db  'EL TORITO SPECIFICATION', 000h
    1125 _drivetypes:                                 ; 0xf0dc6 LB 0x28
     1128_drivetypes:                                 ; 0xf0e28 LB 0x28
    11261129    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    11271130    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    11281131    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    1129 _scan_to_scanascii:                          ; 0xf0dee LB 0x37a
     1132_scan_to_scanascii:                          ; 0xf0e50 LB 0x37a
    11301133    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    11311134    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    11841187    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    11851188    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    1186 _panic_msg_keyb_buffer_full:                 ; 0xf1168 LB 0x20
     1189_panic_msg_keyb_buffer_full:                 ; 0xf11ca LB 0x20
    11871190    db  '%s: keyboard input buffer full', 00ah, 000h
    11881191
    1189   ; Padding 0x478 bytes at 0xf1188
    1190   times 1144 db 0
     1192  ; Padding 0x416 bytes at 0xf11ea
     1193  times 1046 db 0
    11911194
    1192 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e58 class=CODE group=AUTO
     1195section _TEXT progbits vstart=0x1600 align=1 ; size=0x8f08 class=CODE group=AUTO
    11931196rom_scan_:                                   ; 0xf1600 LB 0x52
    11941197    push bp                                   ; 55
     
    14181421    push bp                                   ; 55
    14191422    mov bp, sp                                ; 89 e5
    1420     mov bx, 00da0h                            ; bb a0 0d
     1423    mov bx, 00e02h                            ; bb 02 0e
    14211424    mov cx, ds                                ; 8c d9
    14221425    mov ax, strict word 00004h                ; b8 04 00
    14231426    call 01933h                               ; e8 b0 01
    1424     mov ax, 00d8eh                            ; b8 8e 0d
     1427    mov ax, 00df0h                            ; b8 f0 0d
    14251428    push ax                                   ; 50
    14261429    mov ax, 000d9h                            ; b8 d9 00
     
    15961599    mov bx, strict word 0000ah                ; bb 0a 00
    15971600    xor cx, cx                                ; 31 c9
    1598     call 0a0f0h                               ; e8 13 88
     1601    call 0a1a0h                               ; e8 c3 88
    15991602    mov word [bp-008h], ax                    ; 89 46 f8
    16001603    mov cx, dx                                ; 89 d1
     
    18331836    mov dx, word [bp-026h]                    ; 8b 56 da
    18341837    mov si, word [bp-01eh]                    ; 8b 76 e2
    1835     call 0a120h                               ; e8 08 86
     1838    call 0a1d0h                               ; e8 b8 86
    18361839    mov ax, dx                                ; 89 d0
    18371840    xor ah, dh                                ; 30 f4
     
    22942297    mov dx, word [es:si]                      ; 26 8b 14
    22952298    mov si, strict word 00018h                ; be 18 00
    2296     call 0a120h                               ; e8 8e 81
     2299    call 0a1d0h                               ; e8 3e 82
    22972300    xor dh, dh                                ; 30 f6
    22982301    mov word [bp-014h], dx                    ; 89 56 ec
     
    23042307    mov dx, word [es:si]                      ; 26 8b 14
    23052308    mov si, strict word 00020h                ; be 20 00
    2306     call 0a120h                               ; e8 6e 81
     2309    call 0a1d0h                               ; e8 1e 82
    23072310    mov bx, dx                                ; 89 d3
    23082311    mov word [bp-010h], dx                    ; 89 56 f0
     
    23362339    mov dx, word [es:si]                      ; 26 8b 14
    23372340    mov si, strict word 00008h                ; be 08 00
    2338     call 0a120h                               ; e8 1b 81
     2341    call 0a1d0h                               ; e8 cb 81
    23392342    mov word [bp-010h], dx                    ; 89 56 f0
    23402343    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23452348    mov dx, word [es:si]                      ; 26 8b 14
    23462349    mov si, strict word 00018h                ; be 18 00
    2347     call 0a120h                               ; e8 fd 80
     2350    call 0a1d0h                               ; e8 ad 81
    23482351    mov bl, dl                                ; 88 d3
    23492352    and bl, 00fh                              ; 80 e3 0f
     
    27422745    lea ax, [bp-03eh]                         ; 8d 46 c2
    27432746    call 05b7fh                               ; e8 7e 37
    2744     mov bx, 00da0h                            ; bb a0 0d
     2747    mov bx, 00e02h                            ; bb 02 0e
    27452748    mov cx, ds                                ; 8c d9
    27462749    mov ax, strict word 00004h                ; b8 04 00
     
    29232926    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    29242927    mov si, strict word 0000bh                ; be 0b 00
    2925     call 0a120h                               ; e8 21 7b
     2928    call 0a1d0h                               ; e8 d1 7b
    29262929    mov word [bp-02ah], dx                    ; 89 56 d6
    29272930    mov word [bp-026h], cx                    ; 89 4e da
     
    32153218    mov dx, word [bp-022h]                    ; 8b 56 de
    32163219    mov si, strict word 00018h                ; be 18 00
    3217     call 0a120h                               ; e8 44 78
     3220    call 0a1d0h                               ; e8 f4 78
    32183221    xor dh, dh                                ; 30 f6
    32193222    mov word [bp-014h], dx                    ; 89 56 ec
     
    32233226    mov dx, word [bp-022h]                    ; 8b 56 de
    32243227    mov si, strict word 00020h                ; be 20 00
    3225     call 0a120h                               ; e8 2d 78
     3228    call 0a1d0h                               ; e8 dd 78
    32263229    mov bx, dx                                ; 89 d3
    32273230    mov word [bp-024h], dx                    ; 89 56 dc
     
    32573260    mov dx, word [bp-022h]                    ; 8b 56 de
    32583261    mov si, strict word 00008h                ; be 08 00
    3259     call 0a120h                               ; e8 d9 77
     3262    call 0a1d0h                               ; e8 89 78
    32603263    mov word [bp-00ch], ax                    ; 89 46 f4
    32613264    mov word [bp-020h], bx                    ; 89 5e e0
     
    32643267    mov word [bp-024h], dx                    ; 89 56 dc
    32653268    mov si, strict word 00010h                ; be 10 00
    3266     call 0a120h                               ; e8 c4 77
     3269    call 0a1d0h                               ; e8 74 78
    32673270    mov word [bp-022h], dx                    ; 89 56 de
    32683271    mov ax, dx                                ; 89 d0
     
    35313534    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    35323535    jne short 02bf6h                          ; 75 23
    3533     mov bx, 00da0h                            ; bb a0 0d
     3536    mov bx, 00e02h                            ; bb 02 0e
    35343537    mov cx, ds                                ; 8c d9
    35353538    mov ax, strict word 00004h                ; b8 04 00
     
    43794382    cmp bh, 048h                              ; 80 ff 48
    43804383    jbe short 0333ch                          ; 76 37
    4381     mov bx, 00da0h                            ; bb a0 0d
     4384    mov bx, 00e02h                            ; bb 02 0e
    43824385    mov cx, ds                                ; 8c d9
    43834386    mov ax, strict word 00004h                ; b8 04 00
     
    53155318    mov byte [es:bx], 000h                    ; 26 c6 07 00
    53165319    jmp near 03533h                           ; e9 5d f9
    5317     mov bx, 00da0h                            ; bb a0 0d
     5320    mov bx, 00e02h                            ; bb 02 0e
    53185321    mov cx, ds                                ; 8c d9
    53195322    mov ax, strict word 00004h                ; b8 04 00
     
    54175420    cmp ax, strict word 0004ah                ; 3d 4a 00
    54185421    jne short 03cc8h                          ; 75 23
    5419     mov bx, 00da0h                            ; bb a0 0d
     5422    mov bx, 00e02h                            ; bb 02 0e
    54205423    mov cx, ds                                ; 8c d9
    54215424    mov ax, strict word 00004h                ; b8 04 00
     
    55255528    pop bp                                    ; 5d
    55265529    retn                                      ; c3
    5527     mov bx, 00da0h                            ; bb a0 0d
     5530    mov bx, 00e02h                            ; bb 02 0e
    55285531    mov cx, ds                                ; 8c d9
    55295532    mov ax, strict word 00004h                ; b8 04 00
     
    56135616    mov dx, ss                                ; 8c d2
    56145617    lea ax, [bp-026h]                         ; 8d 46 da
    5615     call 0a140h                               ; e8 9d 62
     5618    call 0a1f0h                               ; e8 4d 63
    56165619    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    56175620    mov ax, strict word 00011h                ; b8 11 00
     
    56765679    jnc short 03f51h                          ; 73 10
    56775680    mov al, byte [bp+di-00825h]               ; 8a 83 db f7
    5678     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
     5681    cmp al, byte [di+00e0ah]                  ; 3a 85 0a 0e
    56795682    je short 03f3bh                           ; 74 f0
    56805683    mov ax, strict word 00005h                ; b8 05 00
     
    56865689    jnc short 03f6bh                          ; 73 10
    56875690    mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
    5688     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
     5691    cmp al, byte [di+00e10h]                  ; 3a 85 10 0e
    56895692    je short 03f55h                           ; 74 f0
    56905693    mov ax, strict word 00006h                ; b8 06 00
     
    59875990    cmp ax, dx                                ; 39 d0
    59885991    je short 04308h                           ; 74 2a
    5989     mov bx, 00da0h                            ; bb a0 0d
     5992    mov bx, 00e02h                            ; bb 02 0e
    59905993    mov cx, ds                                ; 8c d9
    59915994    mov ax, strict word 00004h                ; b8 04 00
     
    61056108    xor dl, dl                                ; 30 d2
    61066109    xor cx, cx                                ; 31 c9
    6107     call 0a0d0h                               ; e8 b8 5c
     6110    call 0a180h                               ; e8 68 5d
    61086111    xor bx, bx                                ; 31 db
    61096112    add ax, si                                ; 01 f0
     
    61116114    mov bx, di                                ; 89 fb
    61126115    xor cx, cx                                ; 31 c9
    6113     call 0a0d0h                               ; e8 ab 5c
     6116    call 0a180h                               ; e8 5b 5d
    61146117    mov bx, ax                                ; 89 c3
    61156118    mov ax, word [bp-00ah]                    ; 8b 46 f6
     
    61466149    mov dx, ss                                ; 8c d2
    61476150    lea ax, [bp-030h]                         ; 8d 46 d0
    6148     call 0a140h                               ; e8 c4 5c
     6151    call 0a1f0h                               ; e8 74 5d
    61496152    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    61506153    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    62166219    test al, al                               ; 84 c0
    62176220    je short 0456dh                           ; 74 38
    6218     mov bx, 00da0h                            ; bb a0 0d
     6221    mov bx, 00e02h                            ; bb 02 0e
    62196222    mov cx, ds                                ; 8c d9
    62206223    mov ax, strict word 00004h                ; b8 04 00
     
    63186321    mov word [bp+016h], bx                    ; 89 5e 16
    63196322    jmp near 04571h                           ; e9 33 ff
    6320     mov bx, 00da0h                            ; bb a0 0d
     6323    mov bx, 00e02h                            ; bb 02 0e
    63216324    mov cx, ds                                ; 8c d9
    63226325    mov ax, strict word 00004h                ; b8 04 00
     
    64426445    mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
    64436446    jmp near 04c0ch                           ; e9 49 04
    6444     mov bx, 00da0h                            ; bb a0 0d
     6447    mov bx, 00e02h                            ; bb 02 0e
    64456448    mov cx, ds                                ; 8c d9
    64466449    mov ax, strict word 00004h                ; b8 04 00
     
    65006503    mov dx, ss                                ; 8c d2
    65016504    lea ax, [bp-02eh]                         ; 8d 46 d2
    6502     call 0a140h                               ; e8 dc 58
     6505    call 0a1f0h                               ; e8 8c 59
    65036506    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    65046507    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    65576560    cmp byte [bp-016h], 000h                  ; 80 7e ea 00
    65586561    je short 04950h                           ; 74 57
    6559     mov bx, 00da0h                            ; bb a0 0d
     6562    mov bx, 00e02h                            ; bb 02 0e
    65606563    mov cx, ds                                ; 8c d9
    65616564    mov ax, strict word 00004h                ; b8 04 00
     
    68676870    je short 04caah                           ; 74 27
    68686871    mov dx, strict word 00001h                ; ba 01 00
    6869     mov bx, 00da0h                            ; bb a0 0d
     6872    mov bx, 00e02h                            ; bb 02 0e
    68706873    mov cx, ds                                ; 8c d9
    68716874    mov ax, strict word 00004h                ; b8 04 00
     
    68746877    mov dx, strict word 0000ah                ; ba 0a 00
    68756878    imul dx                                   ; f7 ea
    6876     add ax, 00dc6h                            ; 05 c6 0d
     6879    add ax, 00e28h                            ; 05 28 0e
    68776880    push ax                                   ; 50
    68786881    mov ax, 00494h                            ; b8 94 04
     
    68976900    test al, al                               ; 84 c0
    68986901    je short 04ce2h                           ; 74 1f
    6899     mov bx, 00da0h                            ; bb a0 0d
     6902    mov bx, 00e02h                            ; bb 02 0e
    69006903    mov cx, ds                                ; 8c d9
    69016904    mov ax, strict word 00004h                ; b8 04 00
    69026905    call 01933h                               ; e8 65 cc
    6903     mov cx, 00ddah                            ; b9 da 0d
     6906    mov cx, 00e3ch                            ; b9 3c 0e
    69046907    push cx                                   ; 51
    69056908    mov cx, 004a8h                            ; b9 a8 04
     
    69126915    test dl, dl                               ; 84 d2
    69136916    je short 04cf6h                           ; 74 10
    6914     mov bx, 00da0h                            ; bb a0 0d
     6917    mov bx, 00e02h                            ; bb 02 0e
    69156918    mov cx, ds                                ; 8c d9
    69166919    mov ax, strict word 00004h                ; b8 04 00
    69176920    call 01933h                               ; e8 42 cc
    6918     mov cx, 00de4h                            ; b9 e4 0d
     6921    mov cx, 00e46h                            ; b9 46 0e
    69196922    jmp short 04cd1h                          ; eb db
    69206923    test bl, 080h                             ; f6 c3 80
    69216924    je short 04d0ch                           ; 74 11
    6922     mov bx, 00da0h                            ; bb a0 0d
     6925    mov bx, 00e02h                            ; bb 02 0e
    69236926    mov cx, ds                                ; 8c d9
    69246927    mov ax, strict word 00004h                ; b8 04 00
    69256928    call 01933h                               ; e8 2d cc
    69266929    push si                                   ; 56
    6927     mov cx, 00dd0h                            ; b9 d0 0d
     6930    mov cx, 00e32h                            ; b9 32 0e
    69286931    jmp short 04d1bh                          ; eb 0f
    6929     mov bx, 00da0h                            ; bb a0 0d
     6932    mov bx, 00e02h                            ; bb 02 0e
    69306933    mov cx, ds                                ; 8c d9
    69316934    mov ax, strict word 00004h                ; b8 04 00
    69326935    call 01933h                               ; e8 1c cc
    69336936    push si                                   ; 56
    6934     mov cx, 00dc6h                            ; b9 c6 0d
     6937    mov cx, 00e28h                            ; b9 28 0e
    69356938    push cx                                   ; 51
    69366939    mov cx, 004bdh                            ; b9 bd 04
     
    69636966    push dx                                   ; 52
    69646967    mov dx, ax                                ; 89 c2
    6965     mov bx, 00da0h                            ; bb a0 0d
     6968    mov bx, 00e02h                            ; bb 02 0e
    69666969    mov cx, ds                                ; 8c d9
    69676970    mov ax, strict word 00004h                ; b8 04 00
     
    70537056    mov byte [bp-008h], al                    ; 88 46 f8
    70547057    mov byte [bp-00ah], al                    ; 88 46 f6
    7055     mov bx, 00da0h                            ; bb a0 0d
     7058    mov bx, 00e02h                            ; bb 02 0e
    70567059    mov cx, ds                                ; 8c d9
    70577060    mov ax, strict word 00004h                ; b8 04 00
     
    76217624    test al, al                               ; 84 c0
    76227625    jne short 05351h                          ; 75 1c
    7623     mov bx, 00da0h                            ; bb a0 0d
     7626    mov bx, 00e02h                            ; bb 02 0e
    76247627    mov cx, ds                                ; 8c d9
    76257628    mov ax, strict word 00004h                ; b8 04 00
     
    79737976    cmp byte [bp-004h], 058h                  ; 80 7e fc 58
    79747977    jbe short 056e7h                          ; 76 22
    7975     mov bx, 00da0h                            ; bb a0 0d
     7978    mov bx, 00e02h                            ; bb 02 0e
    79767979    mov cx, ds                                ; 8c d9
    79777980    mov ax, strict word 00004h                ; b8 04 00
     
    79957998    imul bx                                   ; f7 eb
    79967999    mov bx, ax                                ; 89 c3
    7997     mov al, byte [bx+00df4h]                  ; 8a 87 f4 0d
     8000    mov al, byte [bx+00e56h]                  ; 8a 87 56 0e
    79988001    mov byte [bp-012h], al                    ; 88 46 ee
    7999     mov al, byte [bx+00df5h]                  ; 8a 87 f5 0d
     8002    mov al, byte [bx+00e57h]                  ; 8a 87 57 0e
    80008003    jmp near 057bah                           ; e9 b2 00
    80018004    test AL, strict byte 004h                 ; a8 04
     
    80068009    imul dx                                   ; f7 ea
    80078010    mov bx, ax                                ; 89 c3
    8008     mov al, byte [bx+00df2h]                  ; 8a 87 f2 0d
     8011    mov al, byte [bx+00e54h]                  ; 8a 87 54 0e
    80098012    mov byte [bp-012h], al                    ; 88 46 ee
    8010     mov al, byte [bx+00df3h]                  ; 8a 87 f3 0d
     8013    mov al, byte [bx+00e55h]                  ; 8a 87 55 0e
    80118014    jmp near 057bah                           ; e9 94 00
    80128015    mov al, byte [bp-010h]                    ; 8a 46 f0
     
    80328035    imul dx                                   ; f7 ea
    80338036    mov bx, ax                                ; 89 c3
    8034     mov al, byte [bx+00df6h]                  ; 8a 87 f6 0d
     8037    mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
    80358038    xor ah, ah                                ; 30 e4
    80368039    mov dx, ax                                ; 89 c2
     
    80388041    test ax, dx                               ; 85 d0
    80398042    je short 05777h                           ; 74 0d
    8040     mov al, byte [bx+00deeh]                  ; 8a 87 ee 0d
     8043    mov al, byte [bx+00e50h]                  ; 8a 87 50 0e
    80418044    mov byte [bp-012h], al                    ; 88 46 ee
    8042     mov al, byte [bx+00defh]                  ; 8a 87 ef 0d
     8045    mov al, byte [bx+00e51h]                  ; 8a 87 51 0e
    80438046    jmp short 05782h                          ; eb 0b
    8044     mov al, byte [bx+00df0h]                  ; 8a 87 f0 0d
     8047    mov al, byte [bx+00e52h]                  ; 8a 87 52 0e
    80458048    mov byte [bp-012h], al                    ; 88 46 ee
    8046     mov al, byte [bx+00df1h]                  ; 8a 87 f1 0d
     8049    mov al, byte [bx+00e53h]                  ; 8a 87 53 0e
    80478050    mov byte [bp-004h], al                    ; 88 46 fc
    80488051    jmp short 057bdh                          ; eb 36
     
    80528055    imul bx                                   ; f7 eb
    80538056    mov bx, ax                                ; 89 c3
    8054     mov al, byte [bx+00df6h]                  ; 8a 87 f6 0d
     8057    mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
    80558058    xor ah, ah                                ; 30 e4
    80568059    mov dx, ax                                ; 89 c2
     
    80588061    test ax, dx                               ; 85 d0
    80598062    je short 057afh                           ; 74 0d
    8060     mov al, byte [bx+00df0h]                  ; 8a 87 f0 0d
     8063    mov al, byte [bx+00e52h]                  ; 8a 87 52 0e
    80618064    mov byte [bp-012h], al                    ; 88 46 ee
    8062     mov al, byte [bx+00df1h]                  ; 8a 87 f1 0d
     8065    mov al, byte [bx+00e53h]                  ; 8a 87 53 0e
    80638066    jmp short 057bah                          ; eb 0b
    8064     mov al, byte [bx+00deeh]                  ; 8a 87 ee 0d
     8067    mov al, byte [bx+00e50h]                  ; 8a 87 50 0e
    80658068    mov byte [bp-012h], al                    ; 88 46 ee
    8066     mov al, byte [bx+00defh]                  ; 8a 87 ef 0d
     8069    mov al, byte [bx+00e51h]                  ; 8a 87 51 0e
    80678070    mov byte [bp-004h], al                    ; 88 46 fc
    80688071    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
     
    80708073    cmp byte [bp-012h], 000h                  ; 80 7e ee 00
    80718074    jne short 057e2h                          ; 75 19
    8072     mov bx, 00da0h                            ; bb a0 0d
     8075    mov bx, 00e02h                            ; bb 02 0e
    80738076    mov cx, ds                                ; 8c d9
    80748077    mov ax, strict word 00004h                ; b8 04 00
     
    82738276    mov word [bp+012h], ax                    ; 89 46 12
    82748277    jmp near 059d7h                           ; e9 4a 00
    8275     mov bx, 00da0h                            ; bb a0 0d
     8278    mov bx, 00e02h                            ; bb 02 0e
    82768279    mov cx, ds                                ; 8c d9
    82778280    mov ax, strict word 00004h                ; b8 04 00
     
    82878290    call 01976h                               ; e8 cb bf
    82888291    add sp, strict byte 00006h                ; 83 c4 06
    8289     mov bx, 00da0h                            ; bb a0 0d
     8292    mov bx, 00e02h                            ; bb 02 0e
    82908293    mov cx, ds                                ; 8c d9
    82918294    mov ax, strict word 00004h                ; b8 04 00
     
    85018504    mov dx, word [bp+00ch]                    ; 8b 56 0c
    85028505    mov si, strict word 00020h                ; be 20 00
    8503     call 0a120h                               ; e8 72 45
     8506    call 0a1d0h                               ; e8 22 46
    85048507    test ax, ax                               ; 85 c0
    85058508    jne short 05bbeh                          ; 75 0c
     
    85398542    mov bx, strict word 0003fh                ; bb 3f 00
    85408543    xor cx, cx                                ; 31 c9
    8541     call 0a0d0h                               ; e8 c9 44
     8544    call 0a180h                               ; e8 79 45
    85428545    mov bx, ax                                ; 89 c3
    85438546    mov cx, dx                                ; 89 d1
    85448547    mov ax, word [bp-004h]                    ; 8b 46 fc
    85458548    mov dx, si                                ; 89 f2
    8546     call 0a0f0h                               ; e8 dd 44
     8549    call 0a1a0h                               ; e8 8d 45
    85478550    mov word [es:di+002h], ax                 ; 26 89 45 02
    85488551    cmp ax, 00400h                            ; 3d 00 04
     
    86958698    test ax, ax                               ; 85 c0
    86968699    jne short 05d8eh                          ; 75 29
    8697     mov bx, 00da0h                            ; bb a0 0d
     8700    mov bx, 00e02h                            ; bb 02 0e
    86988701    mov cx, ds                                ; 8c d9
    86998702    mov ax, strict word 00004h                ; b8 04 00
     
    87298732    cmp di, dx                                ; 39 d7
    87308733    jbe short 05dedh                          ; 76 31
    8731     mov bx, 00da0h                            ; bb a0 0d
     8734    mov bx, 00e02h                            ; bb 02 0e
    87328735    mov cx, ds                                ; 8c d9
    87338736    mov ax, strict word 00004h                ; b8 04 00
     
    87738776    mov bx, cx                                ; 89 cb
    87748777    xor cx, cx                                ; 31 c9
    8775     call 0a0d0h                               ; e8 a4 42
     8778    call 0a180h                               ; e8 54 43
    87768779    xor bx, bx                                ; 31 db
    87778780    add ax, word [bp-008h]                    ; 03 46 f8
     
    87798782    mov bx, word [bp-00eh]                    ; 8b 5e f2
    87808783    xor cx, cx                                ; 31 c9
    8781     call 0a0d0h                               ; e8 95 42
     8784    call 0a180h                               ; e8 45 43
    87828785    xor bx, bx                                ; 31 db
    87838786    add ax, di                                ; 01 f8
     
    88378840    test dl, dl                               ; 84 d2
    88388841    je short 05f36h                           ; 74 4a
    8839     mov bx, 00da0h                            ; bb a0 0d
     8842    mov bx, 00e02h                            ; bb 02 0e
    88408843    mov cx, ds                                ; 8c d9
    88418844    mov ax, strict word 00004h                ; b8 04 00
     
    88588861    or ah, 00ch                               ; 80 cc 0c
    88598862    jmp near 0607ch                           ; e9 5f 01
    8860     mov bx, 00da0h                            ; bb a0 0d
     8863    mov bx, 00e02h                            ; bb 02 0e
    88618864    mov cx, ds                                ; 8c d9
    88628865    mov ax, strict word 00004h                ; b8 04 00
     
    89538956    mov bx, word [bp-008h]                    ; 8b 5e f8
    89548957    xor cx, cx                                ; 31 c9
    8955     call 0a0d0h                               ; e8 be 40
     8958    call 0a180h                               ; e8 6e 41
    89568959    mov bx, di                                ; 89 fb
    89578960    xor cx, cx                                ; 31 c9
    8958     call 0a0d0h                               ; e8 b7 40
     8961    call 0a180h                               ; e8 67 41
    89598962    mov word [bp-010h], ax                    ; 89 46 f0
    89608963    mov word [bp-004h], dx                    ; 89 56 fc
     
    89668969    mov word [bp+016h], ax                    ; 89 46 16
    89678970    jmp near 05f3ah                           ; e9 07 ff
    8968     mov bx, 00da0h                            ; bb a0 0d
     8971    mov bx, 00e02h                            ; bb 02 0e
    89698972    mov cx, ds                                ; 8c d9
    89708973    mov ax, strict word 00004h                ; b8 04 00
     
    89828985    add sp, strict byte 00008h                ; 83 c4 08
    89838986    jmp near 05f36h                           ; e9 dd fe
    8984     mov bx, 00da0h                            ; bb a0 0d
     8987    mov bx, 00e02h                            ; bb 02 0e
    89858988    mov cx, ds                                ; 8c d9
    89868989    mov ax, strict word 00004h                ; b8 04 00
     
    90899092    mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
    90909093    jmp near 06597h                           ; e9 31 04
    9091     mov bx, 00da0h                            ; bb a0 0d
     9094    mov bx, 00e02h                            ; bb 02 0e
    90929095    mov cx, ds                                ; 8c d9
    90939096    mov ax, strict word 00004h                ; b8 04 00
     
    91159118    xor bx, bx                                ; 31 db
    91169119    mov si, strict word 00020h                ; be 20 00
    9117     call 0a130h                               ; e8 7c 3f
     9120    call 0a1e0h                               ; e8 2c 40
    91189121    mov word [bp-00eh], ax                    ; 89 46 f2
    91199122    mov word [bp-010h], bx                    ; 89 5e f0
     
    91459148    cmp si, word [es:bx+036h]                 ; 26 3b 77 36
    91469149    jc short 0622ch                           ; 72 26
    9147     mov bx, 00da0h                            ; bb a0 0d
     9150    mov bx, 00e02h                            ; bb 02 0e
    91489151    mov cx, ds                                ; 8c d9
    91499152    mov ax, strict word 00004h                ; b8 04 00
     
    92079210    test dl, dl                               ; 84 d2
    92089211    je short 0631ah                           ; 74 54
    9209     mov bx, 00da0h                            ; bb a0 0d
     9212    mov bx, 00e02h                            ; bb 02 0e
    92109213    mov cx, ds                                ; 8c d9
    92119214    mov ax, strict word 00004h                ; b8 04 00
     
    92809283    mov dx, si                                ; 89 f2
    92819284    mov si, strict word 00020h                ; be 20 00
    9282     call 0a120h                               ; e8 75 3d
     9285    call 0a1d0h                               ; e8 25 3e
    92839286    mov bx, di                                ; 89 fb
    92849287    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    96449647    mov bx, strict word 0000fh                ; bb 0f 00
    96459648    xor cx, cx                                ; 31 c9
    9646     call 0a0f0h                               ; e8 a7 39
     9649    call 0a1a0h                               ; e8 57 3a
    96479650    mov cx, ax                                ; 89 c1
    96489651    mov bx, dx                                ; 89 d3
     
    98089811    mov word [bp+00ch], ax                    ; 89 46 0c
    98099812    jmp near 0691bh                           ; e9 2e 00
    9810     mov bx, 00da0h                            ; bb a0 0d
     9813    mov bx, 00e02h                            ; bb 02 0e
    98119814    mov cx, ds                                ; 8c d9
    98129815    mov ax, strict word 00004h                ; b8 04 00
     
    999710000    retf                                      ; cb
    999810001    jmp near 0691bh                           ; e9 53 fe
    9999     mov bx, 00da0h                            ; bb a0 0d
     10002    mov bx, 00e02h                            ; bb 02 0e
    1000010003    mov cx, ds                                ; 8c d9
    1000110004    mov ax, strict word 00004h                ; b8 04 00
     
    1004010043    or byte [bp+018h], 001h                   ; 80 4e 18 01
    1004110044    jmp near 0691bh                           ; e9 d8 fd
    10042     mov bx, 00da0h                            ; bb a0 0d
     10045    mov bx, 00e02h                            ; bb 02 0e
    1004310046    mov cx, ds                                ; 8c d9
    1004410047    mov ax, strict word 00004h                ; b8 04 00
     
    1023210235    mov word [bp+014h], strict word 00002h    ; c7 46 14 02 00
    1023310236    jmp short 06d04h                          ; eb d3
    10234     mov bx, 00da0h                            ; bb a0 0d
     10237    mov bx, 00e02h                            ; bb 02 0e
    1023510238    mov cx, ds                                ; 8c d9
    1023610239    mov ax, strict word 00004h                ; b8 04 00
     
    1087910882    mov ax, 008eeh                            ; b8 ee 08
    1088010883    push ax                                   ; 50
    10881     mov ax, 01168h                            ; b8 68 11
     10884    mov ax, 011cah                            ; b8 ca 11
    1088210885    push ax                                   ; 50
    1088310886    mov ax, strict word 00007h                ; b8 07 00
     
    1096310966    mov ax, 008f8h                            ; b8 f8 08
    1096410967    push ax                                   ; 50
    10965     mov ax, 01168h                            ; b8 68 11
     10968    mov ax, 011cah                            ; b8 ca 11
    1096610969    push ax                                   ; 50
    1096710970    mov ax, strict word 00007h                ; b8 07 00
     
    1252612529    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    1252712530    jne short 08256h                          ; 75 23
    12528     mov bx, 00da0h                            ; bb a0 0d
     12531    mov bx, 00e02h                            ; bb 02 0e
    1252912532    mov cx, ds                                ; 8c d9
    1253012533    mov ax, strict word 00004h                ; b8 04 00
     
    1268912692    mov dx, ss                                ; 8c d2
    1269012693    lea ax, [bp-048h]                         ; 8d 46 b8
    12691     call 0a140h                               ; e8 8d 1d
     12694    call 0a1f0h                               ; e8 3d 1e
    1269212695    mov byte [bp-048h], 09eh                  ; c6 46 b8 9e
    1269312696    mov byte [bp-047h], 010h                  ; c6 46 b9 10
     
    1275912762    cmp bx, 00200h                            ; 81 fb 00 02
    1276012763    je short 08487h                           ; 74 23
    12761     mov bx, 00da0h                            ; bb a0 0d
     12764    mov bx, 00e02h                            ; bb 02 0e
    1276212765    mov cx, ds                                ; 8c d9
    1276312766    mov ax, strict word 00004h                ; b8 04 00
     
    1282712830    mov dx, word [bp-024h]                    ; 8b 56 dc
    1282812831    mov si, strict word 0000ch                ; be 0c 00
    12829     call 0a120h                               ; e8 1d 1c
     12832    call 0a1d0h                               ; e8 cd 1c
    1283012833    mov word [bp-02ah], ax                    ; 89 46 d6
    1283112834    mov word [bp-02ch], bx                    ; 89 5e d4
     
    1284912852    mov dx, word [bp-024h]                    ; 8b 56 dc
    1285012853    mov si, strict word 00006h                ; be 06 00
    12851     call 0a120h                               ; e8 dc 1b
     12854    call 0a1d0h                               ; e8 8c 1c
    1285212855    mov si, word [bp-018h]                    ; 8b 76 e8
    1285312856    add si, dx                                ; 01 d6
     
    1286712870    mov dx, si                                ; 89 f2
    1286812871    mov si, strict word 00008h                ; be 08 00
    12869     call 0a120h                               ; e8 ac 1b
     12872    call 0a1d0h                               ; e8 5c 1c
    1287012873    mov word [bp-02eh], bx                    ; 89 5e d2
    1287112874    mov word [bp-030h], cx                    ; 89 4e d0
     
    1287612879    mov dx, word [bp-01eh]                    ; 8b 56 e2
    1287712880    mov si, strict word 00010h                ; be 10 00
    12878     call 0a120h                               ; e8 91 1b
     12881    call 0a1d0h                               ; e8 41 1c
    1287912882    mov si, word [bp-032h]                    ; 8b 76 ce
    1288012883    add si, dx                                ; 01 d6
     
    1290112904    mov dx, word [bp-024h]                    ; 8b 56 dc
    1290212905    mov si, strict word 0000bh                ; be 0b 00
    12903     call 0a120h                               ; e8 47 1b
     12906    call 0a1d0h                               ; e8 f7 1b
    1290412907    mov si, dx                                ; 89 d6
    1290512908    mov word [bp-026h], cx                    ; 89 4e da
     
    1294612949    mov word [es:bx+02ch], si                 ; 26 89 77 2c
    1294712950    mov word [es:bx+032h], si                 ; 26 89 77 32
    12948     mov bx, 00da0h                            ; bb a0 0d
     12951    mov bx, 00e02h                            ; bb 02 0e
    1294912952    mov cx, ds                                ; 8c d9
    1295012953    mov ax, strict word 00004h                ; b8 04 00
     
    1300513008    inc byte [bp-00ch]                        ; fe 46 f4
    1300613009    jmp near 087a2h                           ; e9 97 00
    13007     mov bx, 00da0h                            ; bb a0 0d
     13010    mov bx, 00e02h                            ; bb 02 0e
    1300813011    mov cx, ds                                ; 8c d9
    1300913012    mov ax, strict word 00004h                ; b8 04 00
     
    1312213125    pop bp                                    ; 5d
    1312313126    retn                                      ; c3
    13124 _scsi_init:                                  ; 0xf8846 LB 0x66
     13127scsi_pci_init_:                              ; 0xf8846 LB 0x72
     13128    push bp                                   ; 55
     13129    mov bp, sp                                ; 89 e5
     13130    push bx                                   ; 53
     13131    push cx                                   ; 51
     13132    push si                                   ; 56
     13133    push di                                   ; 57
     13134    mov di, ax                                ; 89 c7
     13135    mov si, dx                                ; 89 d6
     13136    call 09fceh                               ; e8 7a 17
     13137    mov dx, ax                                ; 89 c2
     13138    cmp ax, strict word 0ffffh                ; 3d ff ff
     13139    jne short 0887ch                          ; 75 21
     13140    mov bx, 00e02h                            ; bb 02 0e
     13141    mov cx, ds                                ; 8c d9
     13142    mov ax, strict word 00004h                ; b8 04 00
     13143    call 01933h                               ; e8 cd 90
     13144    push si                                   ; 56
     13145    push di                                   ; 57
     13146    mov ax, 00c61h                            ; b8 61 0c
     13147    push ax                                   ; 50
     13148    mov ax, 00c6fh                            ; b8 6f 0c
     13149    push ax                                   ; 50
     13150    mov ax, strict word 00004h                ; b8 04 00
     13151    push ax                                   ; 50
     13152    call 01976h                               ; e8 ff 90
     13153    add sp, strict byte 0000ah                ; 83 c4 0a
     13154    jmp short 088afh                          ; eb 33
     13155    mov bx, 00e02h                            ; bb 02 0e
     13156    mov cx, ds                                ; 8c d9
     13157    mov ax, strict word 00004h                ; b8 04 00
     13158    call 01933h                               ; e8 ac 90
     13159    push dx                                   ; 52
     13160    push si                                   ; 56
     13161    push di                                   ; 57
     13162    mov ax, 00c61h                            ; b8 61 0c
     13163    push ax                                   ; 50
     13164    mov ax, 00c98h                            ; b8 98 0c
     13165    push ax                                   ; 50
     13166    mov ax, strict word 00004h                ; b8 04 00
     13167    push ax                                   ; 50
     13168    call 01976h                               ; e8 dd 90
     13169    add sp, strict byte 0000ch                ; 83 c4 0c
     13170    mov al, dl                                ; 88 d0
     13171    xor ah, ah                                ; 30 e4
     13172    mov si, ax                                ; 89 c6
     13173    mov al, dh                                ; 88 f0
     13174    mov cx, strict word 00007h                ; b9 07 00
     13175    mov bx, strict word 00004h                ; bb 04 00
     13176    mov dx, si                                ; 89 f2
     13177    call 0a07ch                               ; e8 cd 17
     13178    lea sp, [bp-008h]                         ; 8d 66 f8
     13179    pop di                                    ; 5f
     13180    pop si                                    ; 5e
     13181    pop cx                                    ; 59
     13182    pop bx                                    ; 5b
     13183    pop bp                                    ; 5d
     13184    retn                                      ; c3
     13185_scsi_init:                                  ; 0xf88b8 LB 0x81
    1312513186    push bp                                   ; 55
    1312613187    mov bp, sp                                ; 89 e5
    1312713188    mov dx, strict word 0000eh                ; ba 0e 00
    1312813189    mov ax, strict word 00040h                ; b8 40 00
    13129     call 0166eh                               ; e8 1c 8e
     13190    call 0166eh                               ; e8 aa 8d
    1313013191    mov bx, 00122h                            ; bb 22 01
    1313113192    mov es, ax                                ; 8e c0
     
    1313813199    ; sub ah, ah                                ; 2a e4
    1313913200    cmp AL, strict byte 055h                  ; 3c 55
    13140     jne short 08876h                          ; 75 0c
     13201    jne short 088f1h                          ; 75 15
    1314113202    xor al, al                                ; 30 c0
    1314213203    mov dx, 00433h                            ; ba 33 04
    1314313204    out DX, AL                                ; ee
    1314413205    mov ax, 00430h                            ; b8 30 04
    13145     call 0837bh                               ; e8 05 fb
     13206    call 0837bh                               ; e8 93 fa
     13207    mov dx, 01040h                            ; ba 40 10
     13208    mov ax, 0104bh                            ; b8 4b 10
     13209    call 08846h                               ; e8 55 ff
    1314613210    mov AL, strict byte 055h                  ; b0 55
    1314713211    mov dx, 00436h                            ; ba 36 04
     
    1315113215    ; sub ah, ah                                ; 2a e4
    1315213216    cmp AL, strict byte 055h                  ; 3c 55
    13153     jne short 0888fh                          ; 75 0c
     13217    jne short 08913h                          ; 75 15
    1315413218    xor al, al                                ; 30 c0
    1315513219    mov dx, 00437h                            ; ba 37 04
    1315613220    out DX, AL                                ; ee
    1315713221    mov ax, 00434h                            ; b8 34 04
    13158     call 0837bh                               ; e8 ec fa
     13222    call 0837bh                               ; e8 71 fa
     13223    mov dx, strict word 00030h                ; ba 30 00
     13224    mov ax, 01000h                            ; b8 00 10
     13225    call 08846h                               ; e8 33 ff
    1315913226    mov AL, strict byte 055h                  ; b0 55
    1316013227    mov dx, 0043ah                            ; ba 3a 04
     
    1316413231    ; sub ah, ah                                ; 2a e4
    1316513232    cmp AL, strict byte 055h                  ; 3c 55
    13166     jne short 088a8h                          ; 75 0c
     13233    jne short 08935h                          ; 75 15
    1316713234    xor al, al                                ; 30 c0
    1316813235    mov dx, 0043bh                            ; ba 3b 04
    1316913236    out DX, AL                                ; ee
    1317013237    mov ax, 00438h                            ; b8 38 04
    13171     call 0837bh                               ; e8 d3 fa
     13238    call 0837bh                               ; e8 4f fa
     13239    mov dx, strict word 00054h                ; ba 54 00
     13240    mov ax, 01000h                            ; b8 00 10
     13241    call 08846h                               ; e8 11 ff
    1317213242    mov sp, bp                                ; 89 ec
    1317313243    pop bp                                    ; 5d
    1317413244    retn                                      ; c3
    13175 ahci_ctrl_extract_bits_:                     ; 0xf88ac LB 0x1c
     13245ahci_ctrl_extract_bits_:                     ; 0xf8939 LB 0x1c
    1317613246    push si                                   ; 56
    1317713247    push bp                                   ; 55
     
    1318213252    mov cl, byte [bp+006h]                    ; 8a 4e 06
    1318313253    xor ch, ch                                ; 30 ed
    13184     jcxz 088c3h                               ; e3 06
     13254    jcxz 08950h                               ; e3 06
    1318513255    shr dx, 1                                 ; d1 ea
    1318613256    rcr ax, 1                                 ; d1 d8
    13187     loop 088bdh                               ; e2 fa
     13257    loop 0894ah                               ; e2 fa
    1318813258    pop bp                                    ; 5d
    1318913259    pop si                                    ; 5e
    1319013260    retn 00002h                               ; c2 02 00
    13191 ahci_addr_to_phys_:                          ; 0xf88c8 LB 0x1e
     13261ahci_addr_to_phys_:                          ; 0xf8955 LB 0x1e
    1319213262    push bx                                   ; 53
    1319313263    push cx                                   ; 51
     
    1320013270    sal ax, 1                                 ; d1 e0
    1320113271    rcl dx, 1                                 ; d1 d2
    13202     loop 088d6h                               ; e2 fa
     13272    loop 08963h                               ; e2 fa
    1320313273    xor cx, cx                                ; 31 c9
    1320413274    add ax, bx                                ; 01 d8
     
    1320813278    pop bx                                    ; 5b
    1320913279    retn                                      ; c3
    13210 ahci_port_cmd_sync_:                         ; 0xf88e6 LB 0x159
     13280ahci_port_cmd_sync_:                         ; 0xf8973 LB 0x159
    1321113281    push bp                                   ; 55
    1321213282    mov bp, sp                                ; 89 e5
     
    1322313293    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1322413294    cmp AL, strict byte 0ffh                  ; 3c ff
    13225     jne short 08909h                          ; 75 03
    13226     jmp near 08a37h                           ; e9 2e 01
     13295    jne short 08996h                          ; 75 03
     13296    jmp near 08ac4h                           ; e9 2e 01
    1322713297    mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
    1322813298    xor ah, ah                                ; 30 e4
     
    1323713307    lea ax, [si+00080h]                       ; 8d 84 80 00
    1323813308    mov dx, cx                                ; 89 ca
    13239     call 088c8h                               ; e8 92 ff
     13309    call 08955h                               ; e8 92 ff
    1324013310    mov es, cx                                ; 8e c1
    1324113311    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1330513375    xchg dx, ax                               ; 92
    1330613376    test dh, 040h                             ; f6 c6 40
    13307     jne short 089c9h                          ; 75 04
     13377    jne short 08a56h                          ; 75 04
    1330813378    test AL, strict byte 001h                 ; a8 01
    13309     je short 089cdh                           ; 74 04
     13379    je short 08a5ah                           ; 74 04
    1331013380    mov AL, strict byte 001h                  ; b0 01
    13311     jmp short 089cfh                          ; eb 02
     13381    jmp short 08a5ch                          ; eb 02
    1331213382    xor al, al                                ; 30 c0
    1331313383    test al, al                               ; 84 c0
    13314     je short 0899bh                           ; 74 c8
     13384    je short 08a28h                           ; 74 c8
    1331513385    mov al, byte [bp-008h]                    ; 8a 46 f8
    1331613386    xor ah, ah                                ; 30 e4
     
    1336913439    pop bp                                    ; 5d
    1337013440    retn                                      ; c3
    13371 ahci_cmd_data_:                              ; 0xf8a3f LB 0x262
     13441ahci_cmd_data_:                              ; 0xf8acc LB 0x262
    1337213442    push bp                                   ; 55
    1337313443    mov bp, sp                                ; 89 e5
     
    1339413464    mov ax, 00080h                            ; b8 80 00
    1339513465    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13396     call 0a140h                               ; e8 c3 16
     13466    call 0a1f0h                               ; e8 e6 16
    1339713467    mov es, [bp-00ah]                         ; 8e 46 f6
    1339813468    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1341213482    mov dx, word [es:si]                      ; 26 8b 14
    1341313483    mov si, strict word 00008h                ; be 08 00
    13414     call 0a120h                               ; e8 5f 16
     13484    call 0a1d0h                               ; e8 82 16
    1341513485    mov es, [bp-00ah]                         ; 8e 46 f6
    1341613486    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1342313493    mov dx, word [es:si]                      ; 26 8b 14
    1342413494    mov si, strict word 00010h                ; be 10 00
    13425     call 0a120h                               ; e8 39 16
     13495    call 0a1d0h                               ; e8 5c 16
    1342613496    mov es, [bp-00ah]                         ; 8e 46 f6
    1342713497    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1343513505    mov dx, word [es:si]                      ; 26 8b 14
    1343613506    mov si, strict word 00018h                ; be 18 00
    13437     call 0a120h                               ; e8 0d 16
     13507    call 0a1d0h                               ; e8 30 16
    1343813508    mov es, [bp-00ah]                         ; 8e 46 f6
    1343913509    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1344613516    mov dx, word [es:si]                      ; 26 8b 14
    1344713517    mov si, strict word 00020h                ; be 20 00
    13448     call 0a120h                               ; e8 e7 15
     13518    call 0a1d0h                               ; e8 0a 16
    1344913519    mov es, [bp-00ah]                         ; 8e 46 f6
    1345013520    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1345713527    mov dx, word [es:si]                      ; 26 8b 14
    1345813528    mov si, strict word 00028h                ; be 28 00
    13459     call 0a120h                               ; e8 c1 15
     13529    call 0a1d0h                               ; e8 e4 15
    1346013530    mov es, [bp-00ah]                         ; 8e 46 f6
    1346113531    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1347013540    mov bx, word [bp-012h]                    ; 8b 5e ee
    1347113541    xor cx, cx                                ; 31 c9
    13472     call 0a0d0h                               ; e8 3f 15
     13542    call 0a180h                               ; e8 62 15
    1347313543    push dx                                   ; 52
    1347413544    push ax                                   ; 50
     
    1348013550    mov ax, 0026ah                            ; b8 6a 02
    1348113551    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13482     call 0a025h                               ; e8 78 14
     13552    call 0a0d5h                               ; e8 9b 14
    1348313553    mov es, [bp-00ah]                         ; 8e 46 f6
    1348413554    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1350413574    mov ax, word [es:bx+020h]                 ; 26 8b 47 20
    1350513575    test ax, ax                               ; 85 c0
    13506     je short 08c3dh                           ; 74 39
     13576    je short 08ccah                           ; 74 39
    1350713577    dec ax                                    ; 48
    1350813578    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1352213592    mov al, byte [bp-008h]                    ; 8a 46 f8
    1352313593    cmp AL, strict byte 035h                  ; 3c 35
    13524     jne short 08c4ah                          ; 75 06
     13594    jne short 08cd7h                          ; 75 06
    1352513595    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    13526     jmp short 08c61h                          ; eb 17
     13596    jmp short 08ceeh                          ; eb 17
    1352713597    cmp AL, strict byte 0a0h                  ; 3c a0
    13528     jne short 08c5dh                          ; 75 0f
     13598    jne short 08ceah                          ; 75 0f
    1352913599    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1353013600    les bx, [bp-00eh]                         ; c4 5e f2
    1353113601    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    13532     jmp short 08c61h                          ; eb 04
     13602    jmp short 08ceeh                          ; eb 04
    1353313603    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1353413604    or byte [bp-008h], 005h                   ; 80 4e f8 05
     
    1353713607    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1353813608    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13539     call 088e6h                               ; e8 73 fc
     13609    call 08973h                               ; e8 73 fc
    1354013610    mov cx, word [bp-00ch]                    ; 8b 4e f4
    1354113611    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1354413614    add ax, 0026ah                            ; 05 6a 02
    1354513615    mov dx, cx                                ; 89 ca
    13546     call 0a09ch                               ; e8 14 14
     13616    call 0a14ch                               ; e8 37 14
    1354713617    mov es, cx                                ; 8e c1
    1354813618    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
    1354913619    test al, al                               ; 84 c0
    13550     je short 08c97h                           ; 74 05
     13620    je short 08d24h                           ; 74 05
    1355113621    mov ax, strict word 00004h                ; b8 04 00
    13552     jmp short 08c99h                          ; eb 02
     13622    jmp short 08d26h                          ; eb 02
    1355313623    xor ah, ah                                ; 30 e4
    1355413624    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1355813628    pop bp                                    ; 5d
    1355913629    retn                                      ; c3
    13560 ahci_port_deinit_current_:                   ; 0xf8ca1 LB 0x183
     13630ahci_port_deinit_current_:                   ; 0xf8d2e LB 0x183
    1356113631    push bp                                   ; 55
    1356213632    mov bp, sp                                ; 89 e5
     
    1357313643    mov byte [bp-00ah], al                    ; 88 46 f6
    1357413644    cmp AL, strict byte 0ffh                  ; 3c ff
    13575     je short 08d24h                           ; 74 61
     13645    je short 08db1h                           ; 74 61
    1357613646    xor ah, ah                                ; 30 e4
    1357713647    mov CL, strict byte 007h                  ; b1 07
     
    1361913689    xchg dx, ax                               ; 92
    1362013690    test ax, 0c011h                           ; a9 11 c0
    13621     je short 08d27h                           ; 74 07
     13691    je short 08db4h                           ; 74 07
    1362213692    mov AL, strict byte 001h                  ; b0 01
    13623     jmp short 08d29h                          ; eb 05
    13624     jmp near 08e1bh                           ; e9 f4 00
     13693    jmp short 08db6h                          ; eb 05
     13694    jmp near 08ea8h                           ; e9 f4 00
    1362513695    xor al, al                                ; 30 c0
    1362613696    cmp AL, strict byte 001h                  ; 3c 01
    13627     je short 08cf6h                           ; 74 c9
     13697    je short 08d83h                           ; 74 c9
    1362813698    mov cx, strict word 00020h                ; b9 20 00
    1362913699    xor bx, bx                                ; 31 db
    1363013700    mov ax, di                                ; 89 f8
    1363113701    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13632     call 0a140h                               ; e8 06 14
     13702    call 0a1f0h                               ; e8 29 14
    1363313703    lea ax, [di+00080h]                       ; 8d 85 80 00
    1363413704    mov cx, strict word 00040h                ; b9 40 00
    1363513705    xor bx, bx                                ; 31 db
    1363613706    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13637     call 0a140h                               ; e8 f7 13
     13707    call 0a1f0h                               ; e8 1a 14
    1363813708    lea ax, [di+00200h]                       ; 8d 85 00 02
    1363913709    mov cx, strict word 00060h                ; b9 60 00
    1364013710    xor bx, bx                                ; 31 db
    1364113711    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13642     call 0a140h                               ; e8 e8 13
     13712    call 0a1f0h                               ; e8 0b 14
    1364313713    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1364413714    xor ah, ah                                ; 30 e4
     
    1374613816    pop bp                                    ; 5d
    1374713817    retn                                      ; c3
    13748 ahci_port_init_:                             ; 0xf8e24 LB 0x250
     13818ahci_port_init_:                             ; 0xf8eb1 LB 0x250
    1374913819    push bp                                   ; 55
    1375013820    mov bp, sp                                ; 89 e5
     
    1375613826    mov word [bp-00ah], dx                    ; 89 56 f6
    1375713827    mov byte [bp-008h], bl                    ; 88 5e f8
    13758     call 08ca1h                               ; e8 69 fe
     13828    call 08d2eh                               ; e8 69 fe
    1375913829    mov al, bl                                ; 88 d8
    1376013830    xor ah, ah                                ; 30 e4
     
    1380713877    xchg dx, ax                               ; 92
    1380813878    test ax, 0c011h                           ; a9 11 c0
    13809     je short 08eabh                           ; 74 04
     13879    je short 08f38h                           ; 74 04
    1381013880    mov AL, strict byte 001h                  ; b0 01
    13811     jmp short 08eadh                          ; eb 02
     13881    jmp short 08f3ah                          ; eb 02
    1381213882    xor al, al                                ; 30 c0
    1381313883    cmp AL, strict byte 001h                  ; 3c 01
    13814     je short 08e75h                           ; 74 c4
     13884    je short 08f02h                           ; 74 c4
    1381513885    mov cx, strict word 00020h                ; b9 20 00
    1381613886    xor bx, bx                                ; 31 db
    1381713887    mov ax, si                                ; 89 f0
    1381813888    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13819     call 0a140h                               ; e8 82 12
     13889    call 0a1f0h                               ; e8 a5 12
    1382013890    lea ax, [si+00080h]                       ; 8d 84 80 00
    1382113891    mov cx, strict word 00040h                ; b9 40 00
    1382213892    xor bx, bx                                ; 31 db
    1382313893    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13824     call 0a140h                               ; e8 73 12
     13894    call 0a1f0h                               ; e8 96 12
    1382513895    lea di, [si+00200h]                       ; 8d bc 00 02
    1382613896    mov cx, strict word 00060h                ; b9 60 00
     
    1382813898    mov ax, di                                ; 89 f8
    1382913899    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13830     call 0a140h                               ; e8 62 12
     13900    call 0a1f0h                               ; e8 85 12
    1383113901    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1383213902    xor bh, bh                                ; 30 ff
     
    1384713917    mov ax, di                                ; 89 f8
    1384813918    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13849     call 088c8h                               ; e8 bb f9
     13919    call 08955h                               ; e8 bb f9
    1385013920    mov es, [bp-00ah]                         ; 8e 46 f6
    1385113921    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1389213962    mov ax, si                                ; 89 f0
    1389313963    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13894     call 088c8h                               ; e8 4f f9
     13964    call 08955h                               ; e8 4f f9
    1389513965    mov es, [bp-00ah]                         ; 8e 46 f6
    1389613966    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1399714067    pop bp                                    ; 5d
    1399814068    retn                                      ; c3
    13999 @ahci_read_sectors:                          ; 0xf9074 LB 0xaa
     14069@ahci_read_sectors:                          ; 0xf9101 LB 0xaa
    1400014070    push bp                                   ; 55
    1400114071    mov bp, sp                                ; 89 e5
     
    1400814078    sub di, strict byte 0000ch                ; 83 ef 0c
    1400914079    cmp di, strict byte 00004h                ; 83 ff 04
    14010     jbe short 0909fh                          ; 76 13
     14080    jbe short 0912ch                          ; 76 13
    1401114081    push di                                   ; 57
    14012     mov ax, 00c62h                            ; b8 62 0c
    14013     push ax                                   ; 50
    14014     mov ax, 00c74h                            ; b8 74 0c
     14082    mov ax, 00cc4h                            ; b8 c4 0c
     14083    push ax                                   ; 50
     14084    mov ax, 00cd6h                            ; b8 d6 0c
    1401514085    push ax                                   ; 50
    1401614086    mov ax, strict word 00007h                ; b8 07 00
    1401714087    push ax                                   ; 50
    14018     call 01976h                               ; e8 da 88
     14088    call 01976h                               ; e8 4d 88
    1401914089    add sp, strict byte 00008h                ; 83 c4 08
    1402014090    xor bx, bx                                ; 31 db
     
    1403014100    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1403114101    xor ax, ax                                ; 31 c0
    14032     call 08e24h                               ; e8 5a fd
     14102    call 08eb1h                               ; e8 5a fd
    1403314103    mov bx, strict word 00025h                ; bb 25 00
    1403414104    mov ax, si                                ; 89 f0
    1403514105    mov dx, word [bp+006h]                    ; 8b 56 06
    14036     call 08a3fh                               ; e8 6a f9
     14106    call 08acch                               ; e8 6a f9
    1403714107    mov bx, ax                                ; 89 c3
    1403814108    mov es, [bp+006h]                         ; 8e 46 06
     
    1406414134    pop bp                                    ; 5d
    1406514135    retn 00004h                               ; c2 04 00
    14066 @ahci_write_sectors:                         ; 0xf911e LB 0x88
     14136@ahci_write_sectors:                         ; 0xf91ab LB 0x88
    1406714137    push bp                                   ; 55
    1406814138    mov bp, sp                                ; 89 e5
     
    1407614146    sub bx, strict byte 0000ch                ; 83 eb 0c
    1407714147    cmp bx, strict byte 00004h                ; 83 fb 04
    14078     jbe short 0914ch                          ; 76 13
     14148    jbe short 091d9h                          ; 76 13
    1407914149    push bx                                   ; 53
    14080     mov ax, 00c93h                            ; b8 93 0c
    14081     push ax                                   ; 50
    14082     mov ax, 00c74h                            ; b8 74 0c
     14150    mov ax, 00cf5h                            ; b8 f5 0c
     14151    push ax                                   ; 50
     14152    mov ax, 00cd6h                            ; b8 d6 0c
    1408314153    push ax                                   ; 50
    1408414154    mov ax, strict word 00007h                ; b8 07 00
    1408514155    push ax                                   ; 50
    14086     call 01976h                               ; e8 2d 88
     14156    call 01976h                               ; e8 a0 87
    1408714157    add sp, strict byte 00008h                ; 83 c4 08
    1408814158    xor di, di                                ; 31 ff
     
    1409814168    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1409914169    xor ax, ax                                ; 31 c0
    14100     call 08e24h                               ; e8 af fc
     14170    call 08eb1h                               ; e8 af fc
    1410114171    mov bx, strict word 00035h                ; bb 35 00
    1410214172    mov ax, si                                ; 89 f0
    1410314173    mov dx, cx                                ; 89 ca
    14104     call 08a3fh                               ; e8 c0 f8
     14174    call 08acch                               ; e8 c0 f8
    1410514175    mov dx, ax                                ; 89 c2
    1410614176    mov es, cx                                ; 8e c1
     
    1411714187    pop bp                                    ; 5d
    1411814188    retn 00004h                               ; c2 04 00
    14119 ahci_cmd_packet_:                            ; 0xf91a6 LB 0x18c
     14189ahci_cmd_packet_:                            ; 0xf9233 LB 0x18c
    1412014190    push bp                                   ; 55
    1412114191    mov bp, sp                                ; 89 e5
     
    1412914199    mov dx, strict word 0000eh                ; ba 0e 00
    1413014200    mov ax, strict word 00040h                ; b8 40 00
    14131     call 0166eh                               ; e8 ad 84
     14201    call 0166eh                               ; e8 20 84
    1413214202    mov si, 00122h                            ; be 22 01
    1413314203    mov word [bp-008h], ax                    ; 89 46 f8
    1413414204    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    14135     jne short 091f0h                          ; 75 23
    14136     mov bx, 00da0h                            ; bb a0 0d
     14205    jne short 0927dh                          ; 75 23
     14206    mov bx, 00e02h                            ; bb 02 0e
    1413714207    mov cx, ds                                ; 8c d9
    1413814208    mov ax, strict word 00004h                ; b8 04 00
    14139     call 01933h                               ; e8 5b 87
    14140     mov ax, 00ca6h                            ; b8 a6 0c
    14141     push ax                                   ; 50
    14142     mov ax, 00cb6h                            ; b8 b6 0c
     14209    call 01933h                               ; e8 ce 86
     14210    mov ax, 00d08h                            ; b8 08 0d
     14211    push ax                                   ; 50
     14212    mov ax, 00d18h                            ; b8 18 0d
    1414314213    push ax                                   ; 50
    1414414214    mov ax, strict word 00004h                ; b8 04 00
    1414514215    push ax                                   ; 50
    14146     call 01976h                               ; e8 8f 87
     14216    call 01976h                               ; e8 02 87
    1414714217    add sp, strict byte 00006h                ; 83 c4 06
    1414814218    mov ax, strict word 00001h                ; b8 01 00
    14149     jmp near 09329h                           ; e9 39 01
     14219    jmp near 093b6h                           ; e9 39 01
    1415014220    test byte [bp+004h], 001h                 ; f6 46 04 01
    14151     jne short 091eah                          ; 75 f4
     14221    jne short 09277h                          ; 75 f4
    1415214222    mov bx, word [bp+006h]                    ; 8b 5e 06
    1415314223    mov di, word [bp+008h]                    ; 8b 7e 08
     
    1415514225    sal bx, 1                                 ; d1 e3
    1415614226    rcl di, 1                                 ; d1 d7
    14157     loop 091ffh                               ; e2 fa
     14227    loop 0928ch                               ; e2 fa
    1415814228    mov es, [bp-008h]                         ; 8e 46 f8
    1415914229    mov word [es:si], bx                      ; 26 89 1c
     
    1416914239    mov dx, word [bp+008h]                    ; 8b 56 08
    1417014240    xor cx, cx                                ; 31 c9
    14171     call 0a0f0h                               ; e8 b8 0e
     14241    call 0a1a0h                               ; e8 db 0e
    1417214242    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1417314243    xor di, di                                ; 31 ff
     
    1418714257    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1418814258    xor ax, ax                                ; 31 c0
    14189     call 08e24h                               ; e8 af fb
     14259    call 08eb1h                               ; e8 af fb
    1419014260    mov al, byte [bp-006h]                    ; 8a 46 fa
    1419114261    xor ah, ah                                ; 30 e4
     
    1419514265    mov ax, 000c0h                            ; b8 c0 00
    1419614266    mov dx, word [bp-00ah]                    ; 8b 56 f6
    14197     call 0a150h                               ; e8 c6 0e
     14267    call 0a200h                               ; e8 e9 0e
    1419814268    mov es, [bp-008h]                         ; 8e 46 f8
    1419914269    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1420214272    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
    1420314273    test ax, ax                               ; 85 c0
    14204     je short 092c8h                           ; 74 27
     14274    je short 09355h                           ; 74 27
    1420514275    dec ax                                    ; 48
    1420614276    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1421514285    mov ax, si                                ; 89 f0
    1421614286    mov dx, word [bp-008h]                    ; 8b 56 f8
    14217     call 08a3fh                               ; e8 6c f7
     14287    call 08acch                               ; e8 6c f7
    1421814288    les bx, [bp-00eh]                         ; c4 5e f2
    1421914289    mov dx, word [es:bx+004h]                 ; 26 8b 57 04
     
    1424214312    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1424314313    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    14244     jne short 09327h                          ; 75 05
     14314    jne short 093b4h                          ; 75 05
    1424514315    mov ax, strict word 00004h                ; b8 04 00
    14246     jmp short 09329h                          ; eb 02
     14316    jmp short 093b6h                          ; eb 02
    1424714317    xor ax, ax                                ; 31 c0
    1424814318    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1425114321    pop bp                                    ; 5d
    1425214322    retn 0000ch                               ; c2 0c 00
    14253 ahci_port_detect_device_:                    ; 0xf9332 LB 0x4fe
     14323ahci_port_detect_device_:                    ; 0xf93bf LB 0x4fe
    1425414324    push bp                                   ; 55
    1425514325    mov bp, sp                                ; 89 e5
     
    1426714337    mov bx, word [bp-020h]                    ; 8b 5e e0
    1426814338    mov ax, si                                ; 89 f0
    14269     call 08e24h                               ; e8 ce fa
     14339    call 08eb1h                               ; e8 ce fa
    1427014340    mov dx, strict word 0000eh                ; ba 0e 00
    1427114341    mov ax, strict word 00040h                ; b8 40 00
    14272     call 0166eh                               ; e8 0f 83
     14342    call 0166eh                               ; e8 82 82
    1427314343    mov word [bp-01ah], 00122h                ; c7 46 e6 22 01
    1427414344    mov word [bp-00eh], ax                    ; 89 46 f2
     
    1434214412    mov bx, strict word 0000fh                ; bb 0f 00
    1434314413    xor cx, cx                                ; 31 c9
    14344     call 088ach                               ; e8 9f f4
     14414    call 08939h                               ; e8 9f f4
    1434514415    test ax, ax                               ; 85 c0
    14346     jne short 09414h                          ; 75 03
    14347     jmp near 09828h                           ; e9 14 04
     14416    jne short 094a1h                          ; 75 03
     14417    jmp near 098b5h                           ; e9 14 04
    1434814418    mov al, byte [bp-008h]                    ; 8a 46 f8
    1434914419    xor ah, ah                                ; 30 e4
     
    1437714447    xor cx, cx                                ; 31 c9
    1437814448    mov ax, di                                ; 89 f8
    14379     call 088ach                               ; e8 4d f4
     14449    call 08939h                               ; e8 4d f4
    1438014450    cmp ax, strict word 00001h                ; 3d 01 00
    14381     je short 09414h                           ; 74 b0
     14451    je short 094a1h                           ; 74 b0
    1438214452    xor ax, ax                                ; 31 c0
    1438314453    push ax                                   ; 50
     
    1438614456    mov ax, di                                ; 89 f8
    1438714457    mov dx, word [bp-01ch]                    ; 8b 56 e4
    14388     call 088ach                               ; e8 38 f4
     14458    call 08939h                               ; e8 38 f4
    1438914459    cmp ax, strict word 00003h                ; 3d 03 00
    14390     jne short 09411h                          ; 75 98
     14460    jne short 0949eh                          ; 75 98
    1439114461    mov ax, word [bp-016h]                    ; 8b 46 ea
    1439214462    add ax, 00130h                            ; 05 30 01
     
    1441614486    mov byte [bp-00ch], al                    ; 88 46 f4
    1441714487    cmp AL, strict byte 004h                  ; 3c 04
    14418     jc short 094c3h                           ; 72 03
    14419     jmp near 09828h                           ; e9 65 03
     14488    jc short 09550h                           ; 72 03
     14489    jmp near 098b5h                           ; e9 65 03
    1442014490    mov ax, word [bp-016h]                    ; 8b 46 ea
    1442114491    add ax, 00118h                            ; 05 18 01
     
    1446914539    add cl, 00ch                              ; 80 c1 0c
    1447014540    test dx, dx                               ; 85 d2
    14471     jne short 0958eh                          ; 75 55
     14541    jne short 0961bh                          ; 75 55
    1447214542    cmp bx, 00101h                            ; 81 fb 01 01
    14473     jne short 0958eh                          ; 75 4f
     14543    jne short 0961bh                          ; 75 4f
    1447414544    mov es, [bp-00eh]                         ; 8e 46 f2
    1447514545    mov bx, word [bp-01ah]                    ; 8b 5e e6
     
    1448614556    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1448714557    mov dx, es                                ; 8c c2
    14488     call 08a3fh                               ; e8 c0 f4
     14558    call 08acch                               ; e8 c0 f4
    1448914559    mov byte [bp-00ah], cl                    ; 88 4e f6
    1449014560    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14491     je short 09591h                           ; 74 08
     14561    je short 0961eh                           ; 74 08
    1449214562    mov ax, strict word 00001h                ; b8 01 00
    14493     jmp short 09593h                          ; eb 05
    14494     jmp near 09763h                           ; e9 d2 01
     14563    jmp short 09620h                          ; eb 05
     14564    jmp near 097f0h                           ; e9 d2 01
    1449514565    xor ax, ax                                ; 31 c0
    1449614566    mov cl, al                                ; 88 c1
     
    1450814578    mov word [bp-012h], ax                    ; 89 46 ee
    1450914579    cmp di, 00fffh                            ; 81 ff ff 0f
    14510     jne short 095e2h                          ; 75 1f
     14580    jne short 0966fh                          ; 75 1f
    1451114581    cmp word [bp-014h], strict byte 0ffffh    ; 83 7e ec ff
    14512     jne short 095e2h                          ; 75 19
     14582    jne short 0966fh                          ; 75 19
    1451314583    mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
    1451414584    mov word [bp-012h], ax                    ; 89 46 ee
     
    1455014620    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1455114621    cmp AL, strict byte 001h                  ; 3c 01
    14552     jc short 0965fh                           ; 72 0c
    14553     jbe short 09667h                          ; 76 12
     14622    jc short 096ech                           ; 72 0c
     14623    jbe short 096f4h                          ; 76 12
    1455414624    cmp AL, strict byte 003h                  ; 3c 03
    14555     je short 0966fh                           ; 74 16
     14625    je short 096fch                           ; 74 16
    1455614626    cmp AL, strict byte 002h                  ; 3c 02
    14557     je short 0966bh                           ; 74 0e
    14558     jmp short 096b2h                          ; eb 53
     14627    je short 096f8h                           ; 74 0e
     14628    jmp short 0973fh                          ; eb 53
    1455914629    test al, al                               ; 84 c0
    14560     jne short 096b2h                          ; 75 4f
     14630    jne short 0973fh                          ; 75 4f
    1456114631    mov DL, strict byte 040h                  ; b2 40
    14562     jmp short 09671h                          ; eb 0a
     14632    jmp short 096feh                          ; eb 0a
    1456314633    mov DL, strict byte 048h                  ; b2 48
    14564     jmp short 09671h                          ; eb 06
     14634    jmp short 096feh                          ; eb 06
    1456514635    mov DL, strict byte 050h                  ; b2 50
    14566     jmp short 09671h                          ; eb 02
     14636    jmp short 096feh                          ; eb 02
    1456714637    mov DL, strict byte 058h                  ; b2 58
    1456814638    mov bl, dl                                ; 88 d3
     
    1457014640    xor bh, bh                                ; 30 ff
    1457114641    mov ax, bx                                ; 89 d8
    14572     call 016aeh                               ; e8 31 80
     14642    call 016aeh                               ; e8 a4 7f
    1457314643    test al, al                               ; 84 c0
    14574     je short 096b2h                           ; 74 31
     14644    je short 0973fh                           ; 74 31
    1457514645    mov al, dl                                ; 88 d0
    1457614646    db  0feh, 0c0h
    1457714647    ; inc al                                    ; fe c0
    1457814648    xor ah, ah                                ; 30 e4
    14579     call 016aeh                               ; e8 24 80
     14649    call 016aeh                               ; e8 97 7f
    1458014650    mov ch, al                                ; 88 c5
    1458114651    mov al, dl                                ; 88 d0
    1458214652    xor ah, ah                                ; 30 e4
    14583     call 016aeh                               ; e8 1b 80
     14653    call 016aeh                               ; e8 8e 7f
    1458414654    mov ah, ch                                ; 88 ec
    1458514655    mov word [bp-028h], ax                    ; 89 46 d8
     
    1458714657    add AL, strict byte 002h                  ; 04 02
    1458814658    xor ah, ah                                ; 30 e4
    14589     call 016aeh                               ; e8 0d 80
     14659    call 016aeh                               ; e8 80 7f
    1459014660    xor ah, ah                                ; 30 e4
    1459114661    mov word [bp-02ah], ax                    ; 89 46 d6
    1459214662    mov ax, bx                                ; 89 d8
    14593     call 016aeh                               ; e8 03 80
     14663    call 016aeh                               ; e8 76 7f
    1459414664    xor ah, ah                                ; 30 e4
    1459514665    mov word [bp-026h], ax                    ; 89 46 da
    14596     jmp short 096c4h                          ; eb 12
     14666    jmp short 09751h                          ; eb 12
    1459714667    push word [bp-012h]                       ; ff 76 ee
    1459814668    push word [bp-01eh]                       ; ff 76 e2
     
    1460114671    mov dx, ss                                ; 8c d2
    1460214672    lea ax, [bp-02ah]                         ; 8d 46 d6
    14603     call 05b7fh                               ; e8 bb c4
    14604     mov bx, 00da0h                            ; bb a0 0d
     14673    call 05b7fh                               ; e8 2e c4
     14674    mov bx, 00e02h                            ; bb 02 0e
    1460514675    mov cx, ds                                ; 8c d9
    1460614676    mov ax, strict word 00004h                ; b8 04 00
    14607     call 01933h                               ; e8 64 82
     14677    call 01933h                               ; e8 d7 81
    1460814678    push word [bp-012h]                       ; ff 76 ee
    1460914679    push word [bp-01eh]                       ; ff 76 e2
     
    1462414694    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1462514695    push ax                                   ; 50
    14626     mov ax, 00cd6h                            ; b8 d6 0c
     14696    mov ax, 00d38h                            ; b8 38 0d
    1462714697    push ax                                   ; 50
    1462814698    mov ax, strict word 00004h                ; b8 04 00
    1462914699    push ax                                   ; 50
    14630     call 01976h                               ; e8 73 82
     14700    call 01976h                               ; e8 e6 81
    1463114701    add sp, strict byte 0001ch                ; 83 c4 1c
    1463214702    mov al, byte [bp-00ah]                    ; 8a 46 f6
     
    1466014730    mov dx, strict word 00075h                ; ba 75 00
    1466114731    mov ax, strict word 00040h                ; b8 40 00
    14662     call 01652h                               ; e8 01 7f
     14732    call 01652h                               ; e8 74 7e
    1466314733    mov bl, al                                ; 88 c3
    1466414734    db  0feh, 0c3h
     
    1466714737    mov dx, strict word 00075h                ; ba 75 00
    1466814738    mov ax, strict word 00040h                ; b8 40 00
    14669     call 01660h                               ; e8 00 7f
    14670     jmp near 09817h                           ; e9 b4 00
     14739    call 01660h                               ; e8 73 7e
     14740    jmp near 098a4h                           ; e9 b4 00
    1467114741    cmp dx, 0eb14h                            ; 81 fa 14 eb
    14672     jne short 097beh                          ; 75 55
     14742    jne short 0984bh                          ; 75 55
    1467314743    cmp bx, 00101h                            ; 81 fb 01 01
    14674     jne short 097beh                          ; 75 4f
     14744    jne short 0984bh                          ; 75 4f
    1467514745    mov es, [bp-00eh]                         ; 8e 46 f2
    1467614746    mov bx, word [bp-01ah]                    ; 8b 5e e6
     
    1468714757    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1468814758    mov dx, es                                ; 8c c2
    14689     call 08a3fh                               ; e8 90 f2
     14759    call 08acch                               ; e8 90 f2
    1469014760    mov byte [bp-00ah], cl                    ; 88 4e f6
    1469114761    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14692     je short 097c0h                           ; 74 07
     14762    je short 0984dh                           ; 74 07
    1469314763    mov cx, strict word 00001h                ; b9 01 00
    14694     jmp short 097c2h                          ; eb 04
    14695     jmp short 09817h                          ; eb 57
     14764    jmp short 0984fh                          ; eb 04
     14765    jmp short 098a4h                          ; eb 57
    1469614766    xor cx, cx                                ; 31 c9
    1469714767    mov bl, byte [bp-00ch]                    ; 8a 5e f4
     
    1473314803    pop bp                                    ; 5d
    1473414804    retn                                      ; c3
    14735 ahci_mem_alloc_:                             ; 0xf9830 LB 0x43
     14805ahci_mem_alloc_:                             ; 0xf98bd LB 0x43
    1473614806    push bp                                   ; 55
    1473714807    mov bp, sp                                ; 89 e5
     
    1474314813    mov dx, 00413h                            ; ba 13 04
    1474414814    xor ax, ax                                ; 31 c0
    14745     call 0166eh                               ; e8 2e 7e
     14815    call 0166eh                               ; e8 a1 7d
    1474614816    test ax, ax                               ; 85 c0
    14747     je short 09869h                           ; 74 25
     14817    je short 098f6h                           ; 74 25
    1474814818    dec ax                                    ; 48
    1474914819    mov bx, ax                                ; 89 c3
     
    1475214822    sal ax, 1                                 ; d1 e0
    1475314823    rcl dx, 1                                 ; d1 d2
    14754     loop 0984ch                               ; e2 fa
     14824    loop 098d9h                               ; e2 fa
    1475514825    mov si, ax                                ; 89 c6
    1475614826    mov di, dx                                ; 89 d7
     
    1475814828    shr di, 1                                 ; d1 ef
    1475914829    rcr si, 1                                 ; d1 de
    14760     loop 09859h                               ; e2 fa
     14830    loop 098e6h                               ; e2 fa
    1476114831    mov dx, 00413h                            ; ba 13 04
    1476214832    xor ax, ax                                ; 31 c0
    14763     call 0167ch                               ; e8 15 7e
     14833    call 0167ch                               ; e8 88 7d
    1476414834    mov ax, si                                ; 89 f0
    1476514835    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1477114841    pop bp                                    ; 5d
    1477214842    retn                                      ; c3
    14773 ahci_hba_init_:                              ; 0xf9873 LB 0x16e
     14843ahci_hba_init_:                              ; 0xf9900 LB 0x16e
    1477414844    push bp                                   ; 55
    1477514845    mov bp, sp                                ; 89 e5
     
    1478314853    mov dx, strict word 0000eh                ; ba 0e 00
    1478414854    mov ax, strict word 00040h                ; b8 40 00
    14785     call 0166eh                               ; e8 e5 7d
     14855    call 0166eh                               ; e8 58 7d
    1478614856    mov bx, 00122h                            ; bb 22 01
    1478714857    mov di, ax                                ; 89 c7
     
    1480014870    shr eax, 010h                             ; 66 c1 e8 10
    1480114871    xchg dx, ax                               ; 92
    14802     call 09830h                               ; e8 83 ff
     14872    call 098bdh                               ; e8 83 ff
    1480314873    mov word [bp-010h], ax                    ; 89 46 f0
    1480414874    test ax, ax                               ; 85 c0
    14805     jne short 098b7h                          ; 75 03
    14806     jmp near 099c0h                           ; e9 09 01
     14875    jne short 09944h                          ; 75 03
     14876    jmp near 09a4dh                           ; e9 09 01
    1480714877    mov ax, word [bp-010h]                    ; 8b 46 f0
    1480814878    mov es, di                                ; 8e c7
     
    1485414924    xchg dx, ax                               ; 92
    1485514925    test AL, strict byte 001h                 ; a8 01
    14856     jne short 09911h                          ; 75 de
     14926    jne short 0999eh                          ; 75 de
    1485714927    xor ax, ax                                ; 31 c0
    1485814928    xor cx, cx                                ; 31 c9
     
    1487314943    mov bx, strict word 0001fh                ; bb 1f 00
    1487414944    xor cx, cx                                ; 31 c9
    14875     call 088ach                               ; e8 54 ef
     14945    call 08939h                               ; e8 54 ef
    1487614946    db  0feh, 0c0h
    1487714947    ; inc al                                    ; fe c0
    1487814948    mov byte [bp-00eh], al                    ; 88 46 f2
    1487914949    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    14880     jmp short 09984h                          ; eb 21
     14950    jmp short 09a11h                          ; eb 21
    1488114951    xor al, al                                ; 30 c0
    1488214952    test al, al                               ; 84 c0
    14883     je short 0997bh                           ; 74 12
     14953    je short 09a08h                           ; 74 12
    1488414954    mov bl, byte [bp-00ch]                    ; 8a 5e f4
    1488514955    xor bh, bh                                ; 30 ff
    1488614956    xor ax, ax                                ; 31 c0
    1488714957    mov dx, word [bp-010h]                    ; 8b 56 f0
    14888     call 09332h                               ; e8 bc f9
     14958    call 093bfh                               ; e8 bc f9
    1488914959    dec byte [bp-00eh]                        ; fe 4e f2
    14890     je short 099beh                           ; 74 43
     14960    je short 09a4bh                           ; 74 43
    1489114961    inc byte [bp-00ch]                        ; fe 46 f4
    1489214962    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    14893     jnc short 099beh                          ; 73 3a
     14963    jnc short 09a4bh                          ; 73 3a
    1489414964    mov cl, byte [bp-00ch]                    ; 8a 4e f4
    1489514965    xor ch, ch                                ; 30 ed
    1489614966    mov bx, strict word 00001h                ; bb 01 00
    1489714967    xor di, di                                ; 31 ff
    14898     jcxz 09996h                               ; e3 06
     14968    jcxz 09a23h                               ; e3 06
    1489914969    sal bx, 1                                 ; d1 e3
    1490014970    rcl di, 1                                 ; d1 d7
    14901     loop 09990h                               ; e2 fa
     14971    loop 09a1dh                               ; e2 fa
    1490214972    mov ax, strict word 0000ch                ; b8 0c 00
    1490314973    xor cx, cx                                ; 31 c9
     
    1491514985    xchg dx, ax                               ; 92
    1491614986    test dx, di                               ; 85 fa
    14917     jne short 099bah                          ; 75 04
     14987    jne short 09a47h                          ; 75 04
    1491814988    test ax, bx                               ; 85 d8
    14919     je short 09963h                           ; 74 a9
     14989    je short 099f0h                           ; 74 a9
    1492014990    mov AL, strict byte 001h                  ; b0 01
    14921     jmp short 09965h                          ; eb a7
     14991    jmp short 099f2h                          ; eb a7
    1492214992    xor ax, ax                                ; 31 c0
    1492314993    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1492914999    pop bp                                    ; 5d
    1493015000    retn                                      ; c3
    14931     db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0c7h, 09ah, 0a5h, 09ah, 0abh, 09ah, 0b1h, 09ah, 0b7h
    14932     db  09ah, 0bdh, 09ah, 0c3h, 09ah, 0c7h, 09ah
    14933 _ahci_init:                                  ; 0xf99e1 LB 0x139
     15001    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 054h, 09bh, 032h, 09bh, 038h, 09bh, 03eh, 09bh, 044h
     15002    db  09bh, 04ah, 09bh, 050h, 09bh, 054h, 09bh
     15003_ahci_init:                                  ; 0xf9a6e LB 0x139
    1493415004    push bp                                   ; 55
    1493515005    mov bp, sp                                ; 89 e5
     
    1493915009    mov ax, 00601h                            ; b8 01 06
    1494015010    mov dx, strict word 00001h                ; ba 01 00
    14941     call 09f39h                               ; e8 47 05
     15011    call 09fc6h                               ; e8 47 05
    1494215012    mov dx, ax                                ; 89 c2
    1494315013    cmp ax, strict word 0ffffh                ; 3d ff ff
    14944     je short 09a42h                           ; 74 49
     15014    je short 09acfh                           ; 74 49
    1494515015    mov al, ah                                ; 88 e0
    1494615016    mov byte [bp-008h], ah                    ; 88 66 f8
     
    1494915019    xor ah, ah                                ; 30 e4
    1495015020    mov bx, strict word 00034h                ; bb 34 00
    14951     call 09f41h                               ; e8 36 05
     15021    call 09ff1h                               ; e8 59 05
    1495215022    mov cl, al                                ; 88 c1
    1495315023    test cl, cl                               ; 84 c9
    14954     je short 09a45h                           ; 74 34
     15024    je short 09ad2h                           ; 74 34
    1495515025    mov bl, cl                                ; 88 cb
    1495615026    xor bh, bh                                ; 30 ff
     
    1496315033    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1496415034    mov ax, word [bp-012h]                    ; 8b 46 ee
    14965     call 09f41h                               ; e8 11 05
     15035    call 09ff1h                               ; e8 34 05
    1496615036    cmp AL, strict byte 012h                  ; 3c 12
    14967     je short 09a45h                           ; 74 11
     15037    je short 09ad2h                           ; 74 11
    1496815038    mov bl, cl                                ; 88 cb
    1496915039    db  0feh, 0c3h
     
    1497215042    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1497315043    mov ax, word [bp-012h]                    ; 8b 46 ee
    14974     jmp short 09a08h                          ; eb c6
    14975     jmp near 09b13h                           ; e9 ce 00
     15044    jmp short 09a95h                          ; eb c6
     15045    jmp near 09ba0h                           ; e9 ce 00
    1497615046    test cl, cl                               ; 84 c9
    14977     je short 09a42h                           ; 74 f9
     15047    je short 09acfh                           ; 74 f9
    1497815048    add cl, 002h                              ; 80 c1 02
    1497915049    mov bl, cl                                ; 88 cb
     
    1498715057    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1498815058    mov ax, word [bp-014h]                    ; 8b 46 ec
    14989     call 09f41h                               ; e8 d6 04
     15059    call 09ff1h                               ; e8 f9 04
    1499015060    cmp AL, strict byte 010h                  ; 3c 10
    14991     jne short 09a42h                          ; 75 d3
     15061    jne short 09acfh                          ; 75 d3
    1499215062    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1499315063    mov bl, cl                                ; 88 cb
     
    1499615066    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1499715067    mov ax, word [bp-014h]                    ; 8b 46 ec
    14998     call 09f68h                               ; e8 e5 04
     15068    call 0a018h                               ; e8 08 05
    1499915069    mov dx, ax                                ; 89 c2
    1500015070    and ax, strict word 0000fh                ; 25 0f 00
    1500115071    sub ax, strict word 00004h                ; 2d 04 00
    1500215072    cmp ax, strict word 0000bh                ; 3d 0b 00
    15003     jnbe short 09ac7h                         ; 77 37
     15073    jnbe short 09b54h                         ; 77 37
    1500415074    push CS                                   ; 0e
    1500515075    pop ES                                    ; 07
    1500615076    mov cx, strict word 00008h                ; b9 08 00
    15007     mov di, 099cah                            ; bf ca 99
     15077    mov di, 09a57h                            ; bf 57 9a
    1500815078    repne scasb                               ; f2 ae
    1500915079    sal cx, 1                                 ; d1 e1
    1501015080    mov di, cx                                ; 89 cf
    15011     mov ax, word [cs:di-0662fh]               ; 2e 8b 85 d1 99
     15081    mov ax, word [cs:di-065a2h]               ; 2e 8b 85 5e 9a
    1501215082    jmp ax                                    ; ff e0
    1501315083    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    15014     jmp short 09ac7h                          ; eb 1c
     15084    jmp short 09b54h                          ; eb 1c
    1501515085    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    15016     jmp short 09ac7h                          ; eb 16
     15086    jmp short 09b54h                          ; eb 16
    1501715087    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    15018     jmp short 09ac7h                          ; eb 10
     15088    jmp short 09b54h                          ; eb 10
    1501915089    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    15020     jmp short 09ac7h                          ; eb 0a
     15090    jmp short 09b54h                          ; eb 0a
    1502115091    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    15022     jmp short 09ac7h                          ; eb 04
     15092    jmp short 09b54h                          ; eb 04
    1502315093    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1502415094    mov CL, strict byte 004h                  ; b1 04
     
    1502915099    mov al, byte [bp-006h]                    ; 8a 46 fa
    1503015100    test al, al                               ; 84 c0
    15031     je short 09b13h                           ; 74 3b
     15101    je short 09ba0h                           ; 74 3b
    1503215102    mov bl, al                                ; 88 c3
    1503315103    xor bh, bh                                ; 30 ff
     
    1504015110    mov dx, word [bp-010h]                    ; 8b 56 f0
    1504115111    mov ax, word [bp-016h]                    ; 8b 46 ea
    15042     call 09f8dh                               ; e8 96 04
     15112    call 0a03dh                               ; e8 b9 04
    1504315113    test AL, strict byte 001h                 ; a8 01
    15044     je short 09b13h                           ; 74 18
     15114    je short 09ba0h                           ; 74 18
    1504515115    and AL, strict byte 0f0h                  ; 24 f0
    1504615116    add si, ax                                ; 01 c6
     
    1504915119    mov dx, word [bp-010h]                    ; 8b 56 f0
    1505015120    mov ax, word [bp-016h]                    ; 8b 46 ea
    15051     call 09fcch                               ; e8 be 04
     15121    call 0a07ch                               ; e8 e1 04
    1505215122    mov ax, si                                ; 89 f0
    15053     call 09873h                               ; e8 60 fd
     15123    call 09900h                               ; e8 60 fd
    1505415124    lea sp, [bp-004h]                         ; 8d 66 fc
    1505515125    pop di                                    ; 5f
     
    1505715127    pop bp                                    ; 5d
    1505815128    retn                                      ; c3
    15059 apm_out_str_:                                ; 0xf9b1a LB 0x39
     15129apm_out_str_:                                ; 0xf9ba7 LB 0x39
    1506015130    push bp                                   ; 55
    1506115131    mov bp, sp                                ; 89 e5
     
    1506315133    mov bx, ax                                ; 89 c3
    1506415134    cmp byte [bx], 000h                       ; 80 3f 00
    15065     je short 09b2fh                           ; 74 0a
     15135    je short 09bbch                           ; 74 0a
    1506615136    mov al, byte [bx]                         ; 8a 07
    1506715137    out DX, AL                                ; ee
     
    1507015140    db  00ah, 0c0h
    1507115141    ; or al, al                                 ; 0a c0
    15072     jne short 09b27h                          ; 75 f8
     15142    jne short 09bb4h                          ; 75 f8
    1507315143    lea sp, [bp-002h]                         ; 8d 66 fe
    1507415144    pop bx                                    ; 5b
    1507515145    pop bp                                    ; 5d
    1507615146    retn                                      ; c3
    15077     je short 09ad2h                           ; 74 9b
    15078     call far [bp+di-0647ah]                   ; ff 9b 86 9b
    15079     mov ax, word [0ff9bh]                     ; a1 9b ff
    15080     wait                                      ; 9b
    15081     int3                                      ; cc
    15082     wait                                      ; 9b
    15083     call far [bp+di-063fbh]                   ; ff 9b 05 9c
    15084     rcr word [bp+di-0642fh], 1                ; d1 9b d1 9b
    15085     rcr word [bp+di-063bch], 1                ; d1 9b 44 9c
    15086     rcr word [bp+di-0642fh], 1                ; d1 9b d1 9b
    15087     db  03dh
     15147    add word [si-06374h], bx                  ; 01 9c 8c 9c
     15148    adc bx, word [si-063d2h]                  ; 13 9c 2e 9c
     15149    mov [si-063a7h], ds                       ; 8c 9c 59 9c
     15150    mov [si-0636eh], ds                       ; 8c 9c 92 9c
     15151    pop si                                    ; 5e
    1508815152    pushfw                                    ; 9c
    15089 _apm_function:                               ; 0xf9b53 LB 0xf6
     15153    pop si                                    ; 5e
     15154    pushfw                                    ; 9c
     15155    pop si                                    ; 5e
     15156    pushfw                                    ; 9c
     15157    rcr word [si-063a2h], 1                   ; d1 9c 5e 9c
     15158    pop si                                    ; 5e
     15159    pushfw                                    ; 9c
     15160    db  0cah
     15161    pushfw                                    ; 9c
     15162_apm_function:                               ; 0xf9be0 LB 0xf6
    1509015163    push bp                                   ; 55
    1509115164    mov bp, sp                                ; 89 e5
     
    1509515168    xor ah, ah                                ; 30 e4
    1509615169    cmp ax, strict word 0000eh                ; 3d 0e 00
    15097     jnbe short 09bd1h                         ; 77 6c
     15170    jnbe short 09c5eh                         ; 77 6c
    1509815171    mov bx, ax                                ; 89 c3
    1509915172    sal bx, 1                                 ; d1 e3
    1510015173    mov dx, word [bp+018h]                    ; 8b 56 18
    1510115174    or dl, 001h                               ; 80 ca 01
    15102     jmp word [cs:bx-064cbh]                   ; 2e ff a7 35 9b
     15175    jmp word [cs:bx-0643eh]                   ; 2e ff a7 c2 9b
    1510315176    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1510415177    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1510515178    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    15106     jmp near 09bffh                           ; e9 79 00
     15179    jmp near 09c8ch                           ; e9 79 00
    1510715180    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    15108     mov word [bp+00ch], 0a1c4h                ; c7 46 0c c4 a1
     15181    mov word [bp+00ch], 0a274h                ; c7 46 0c 74 a2
    1510915182    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1511015183    mov ax, strict word 0fff0h                ; b8 f0 ff
    1511115184    mov word [bp+006h], ax                    ; 89 46 06
    1511215185    mov word [bp+004h], ax                    ; 89 46 04
    15113     jmp near 09bffh                           ; e9 5e 00
     15186    jmp near 09c8ch                           ; e9 5e 00
    1511415187    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1511515188    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1512415197    mov si, ax                                ; 89 c6
    1512515198    sal esi, 010h                             ; 66 c1 e6 10
    15126     jmp near 09bffh                           ; e9 33 00
     15199    jmp near 09c8ch                           ; e9 33 00
    1512715200    sti                                       ; fb
    1512815201    hlt                                       ; f4
    15129     jmp near 09bffh                           ; e9 2e 00
    15130     mov bx, 00da0h                            ; bb a0 0d
     15202    jmp near 09c8ch                           ; e9 2e 00
     15203    mov bx, 00e02h                            ; bb 02 0e
    1513115204    mov cx, ds                                ; 8c d9
    1513215205    mov ax, strict word 00004h                ; b8 04 00
    15133     call 01933h                               ; e8 57 7d
     15206    call 01933h                               ; e8 ca 7c
    1513415207    push word [bp+00ch]                       ; ff 76 0c
    1513515208    push word [bp+012h]                       ; ff 76 12
    15136     mov ax, 00d29h                            ; b8 29 0d
     15209    mov ax, 00d8bh                            ; b8 8b 0d
    1513715210    push ax                                   ; 50
    1513815211    mov ax, strict word 00004h                ; b8 04 00
    1513915212    push ax                                   ; 50
    15140     call 01976h                               ; e8 89 7d
     15213    call 01976h                               ; e8 fc 7c
    1514115214    add sp, strict byte 00008h                ; 83 c4 08
    1514215215    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1515015223    retn                                      ; c3
    1515115224    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    15152     je short 09c2ah                           ; 74 1f
     15225    je short 09cb7h                           ; 74 1f
    1515315226    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    15154     je short 09c22h                           ; 74 11
     15227    je short 09cafh                           ; 74 11
    1515515228    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    15156     jne short 09c32h                          ; 75 1b
     15229    jne short 09cbfh                          ; 75 1b
    1515715230    mov dx, 0040fh                            ; ba 0f 04
    15158     mov ax, 00d10h                            ; b8 10 0d
    15159     call 09b1ah                               ; e8 fa fe
    15160     jmp short 09bffh                          ; eb dd
     15231    mov ax, 00d72h                            ; b8 72 0d
     15232    call 09ba7h                               ; e8 fa fe
     15233    jmp short 09c8ch                          ; eb dd
    1516115234    mov dx, 0040fh                            ; ba 0f 04
    15162     mov ax, 00d18h                            ; b8 18 0d
    15163     jmp short 09c1dh                          ; eb f3
     15235    mov ax, 00d7ah                            ; b8 7a 0d
     15236    jmp short 09caah                          ; eb f3
    1516415237    mov dx, 0040fh                            ; ba 0f 04
    15165     mov ax, 00d20h                            ; b8 20 0d
    15166     jmp short 09c1dh                          ; eb eb
     15238    mov ax, 00d82h                            ; b8 82 0d
     15239    jmp short 09caah                          ; eb eb
    1516715240    or ah, 00ah                               ; 80 cc 0a
    1516815241    mov word [bp+012h], ax                    ; 89 46 12
    1516915242    mov word [bp+018h], dx                    ; 89 56 18
    15170     jmp short 09bffh                          ; eb c2
     15243    jmp short 09c8ch                          ; eb c2
    1517115244    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    15172     jmp short 09bffh                          ; eb bb
     15245    jmp short 09c8ch                          ; eb bb
    1517315246    or ah, 080h                               ; 80 cc 80
    15174     jmp short 09c35h                          ; eb ec
    15175 pci16_select_reg_:                           ; 0xf9c49 LB 0x24
     15247    jmp short 09cc2h                          ; eb ec
     15248pci16_select_reg_:                           ; 0xf9cd6 LB 0x24
    1517615249    push bp                                   ; 55
    1517715250    mov bp, sp                                ; 89 e5
     
    1519015263    pop bp                                    ; 5d
    1519115264    retn                                      ; c3
    15192 pci16_find_device_:                          ; 0xf9c6d LB 0xf7
     15265pci16_find_device_:                          ; 0xf9cfa LB 0xf7
    1519315266    push bp                                   ; 55
    1519415267    mov bp, sp                                ; 89 e5
     
    1520415277    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1520515278    test bl, 007h                             ; f6 c3 07
    15206     jne short 09cb5h                          ; 75 2d
     15279    jne short 09d42h                          ; 75 2d
    1520715280    mov dx, strict word 0000eh                ; ba 0e 00
    1520815281    mov ax, bx                                ; 89 d8
    15209     call 09c49h                               ; e8 b9 ff
     15282    call 09cd6h                               ; e8 b9 ff
    1521015283    mov dx, 00cfeh                            ; ba fe 0c
    1521115284    in AL, DX                                 ; ec
     
    1521415287    mov byte [bp-008h], al                    ; 88 46 f8
    1521515288    cmp AL, strict byte 0ffh                  ; 3c ff
    15216     jne short 09ca3h                          ; 75 06
     15289    jne short 09d30h                          ; 75 06
    1521715290    add bx, strict byte 00008h                ; 83 c3 08
    15218     jmp near 09d35h                           ; e9 92 00
     15291    jmp near 09dc2h                           ; e9 92 00
    1521915292    test byte [bp-008h], 080h                 ; f6 46 f8 80
    15220     je short 09cb0h                           ; 74 07
     15293    je short 09d3dh                           ; 74 07
    1522115294    mov word [bp-00eh], strict word 00001h    ; c7 46 f2 01 00
    15222     jmp short 09cb5h                          ; eb 05
     15295    jmp short 09d42h                          ; eb 05
    1522315296    mov word [bp-00eh], strict word 00008h    ; c7 46 f2 08 00
    1522415297    mov al, byte [bp-008h]                    ; 8a 46 f8
    1522515298    and AL, strict byte 007h                  ; 24 07
    1522615299    cmp AL, strict byte 001h                  ; 3c 01
    15227     jne short 09cdch                          ; 75 1e
     15300    jne short 09d69h                          ; 75 1e
    1522815301    mov al, bh                                ; 88 f8
    1522915302    xor ah, ah                                ; 30 e4
    1523015303    test ax, ax                               ; 85 c0
    15231     jne short 09cdch                          ; 75 16
     15304    jne short 09d69h                          ; 75 16
    1523215305    mov dx, strict word 0001ah                ; ba 1a 00
    1523315306    mov ax, bx                                ; 89 d8
    15234     call 09c49h                               ; e8 7b ff
     15307    call 09cd6h                               ; e8 7b ff
    1523515308    mov dx, 00cfeh                            ; ba fe 0c
    1523615309    in AL, DX                                 ; ec
     
    1523815311    ; sub ah, ah                                ; 2a e4
    1523915312    cmp al, byte [bp-006h]                    ; 3a 46 fa
    15240     jbe short 09cdch                          ; 76 03
     15313    jbe short 09d69h                          ; 76 03
    1524115314    mov byte [bp-006h], al                    ; 88 46 fa
    1524215315    test di, di                               ; 85 ff
    15243     je short 09ce5h                           ; 74 05
     15316    je short 09d72h                           ; 74 05
    1524415317    mov dx, strict word 00008h                ; ba 08 00
    15245     jmp short 09ce7h                          ; eb 02
     15318    jmp short 09d74h                          ; eb 02
    1524615319    xor dx, dx                                ; 31 d2
    1524715320    mov ax, bx                                ; 89 d8
    15248     call 09c49h                               ; e8 5d ff
     15321    call 09cd6h                               ; e8 5d ff
    1524915322    mov dx, 00cfch                            ; ba fc 0c
    1525015323    in eax, DX                                ; 66 ed
     
    1525715330    mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
    1525815331    test di, di                               ; 85 ff
    15259     je short 09d16h                           ; 74 0f
     15332    je short 09da3h                           ; 74 0f
    1526015333    mov cx, strict word 00008h                ; b9 08 00
    1526115334    shr dx, 1                                 ; d1 ea
    1526215335    rcr ax, 1                                 ; d1 d8
    15263     loop 09d0ah                               ; e2 fa
     15336    loop 09d97h                               ; e2 fa
    1526415337    mov word [bp-00ah], ax                    ; 89 46 f6
    1526515338    mov word [bp-010h], dx                    ; 89 56 f0
    1526615339    mov ax, word [bp-010h]                    ; 8b 46 f0
    1526715340    cmp ax, word [bp-014h]                    ; 3b 46 ec
    15268     jne short 09d26h                          ; 75 08
     15341    jne short 09db3h                          ; 75 08
    1526915342    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1527015343    cmp ax, word [bp-012h]                    ; 3b 46 ee
    15271     je short 09d2ch                           ; 74 06
     15344    je short 09db9h                           ; 74 06
    1527215345    cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
    15273     je short 09d32h                           ; 74 06
     15346    je short 09dbfh                           ; 74 06
    1527415347    dec si                                    ; 4e
    1527515348    cmp si, strict byte 0ffffh                ; 83 fe ff
    15276     je short 09d45h                           ; 74 13
     15349    je short 09dd2h                           ; 74 13
    1527715350    add bx, word [bp-00eh]                    ; 03 5e f2
    1527815351    mov al, bh                                ; 88 f8
     
    1528115354    xor dh, dh                                ; 30 f6
    1528215355    cmp ax, dx                                ; 39 d0
    15283     jnbe short 09d45h                         ; 77 03
    15284     jmp near 09c83h                           ; e9 3e ff
     15356    jnbe short 09dd2h                         ; 77 03
     15357    jmp near 09d10h                           ; e9 3e ff
    1528515358    cmp si, strict byte 0ffffh                ; 83 fe ff
    15286     jne short 09d4eh                          ; 75 04
     15359    jne short 09ddbh                          ; 75 04
    1528715360    mov ax, bx                                ; 89 d8
    15288     jmp short 09d51h                          ; eb 03
     15361    jmp short 09ddeh                          ; eb 03
    1528915362    mov ax, strict word 0ffffh                ; b8 ff ff
    1529015363    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1529315366    pop bp                                    ; 5d
    1529415367    retn                                      ; c3
    15295     inc bp                                    ; 45
     15368    rcr byte [bp-06115h], CL                  ; d2 9e eb 9e
     15369    std                                       ; fd
    1529615370    sahf                                      ; 9e
    15297     pop si                                    ; 5e
    15298     sahf                                      ; 9e
    15299     jo short 09cfch                           ; 70 9e
    15300     test byte [bp-0616ah], bl                 ; 84 9e 96 9e
    15301     db  0a9h
    15302     sahf                                      ; 9e
    15303 _pci16_function:                             ; 0xf9d64 LB 0x1d5
     15371    adc word [bx-060ddh], bx                  ; 11 9f 23 9f
     15372    db  036h, 09fh
     15373    ; ss lahf                                   ; 36 9f
     15374_pci16_function:                             ; 0xf9df1 LB 0x1d5
    1530415375    push bp                                   ; 55
    1530515376    mov bp, sp                                ; 89 e5
     
    1531515386    xor ah, ah                                ; 30 e4
    1531615387    cmp bx, strict byte 00003h                ; 83 fb 03
    15317     jc short 09d96h                           ; 72 13
    15318     jbe short 09de9h                          ; 76 64
     15388    jc short 09e23h                           ; 72 13
     15389    jbe short 09e76h                          ; 76 64
    1531915390    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15320     je short 09df1h                           ; 74 67
     15391    je short 09e7eh                           ; 74 67
    1532115392    cmp bx, strict byte 00008h                ; 83 fb 08
    15322     jc short 09da0h                           ; 72 11
     15393    jc short 09e2dh                           ; 72 11
    1532315394    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15324     jbe short 09df4h                          ; 76 60
    15325     jmp short 09da0h                          ; eb 0a
     15395    jbe short 09e81h                          ; 76 60
     15396    jmp short 09e2dh                          ; eb 0a
    1532615397    cmp bx, strict byte 00002h                ; 83 fb 02
    15327     je short 09dbfh                           ; 74 24
     15398    je short 09e4ch                           ; 74 24
    1532815399    cmp bx, strict byte 00001h                ; 83 fb 01
    15329     je short 09da3h                           ; 74 03
    15330     jmp near 09f02h                           ; e9 5f 01
     15400    je short 09e30h                           ; 74 03
     15401    jmp near 09f8fh                           ; e9 5f 01
    1533115402    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1533215403    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1533415405    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1533515406    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15336     jmp near 09f32h                           ; e9 73 01
     15407    jmp near 09fbfh                           ; e9 73 01
    1533715408    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15338     jne short 09dcbh                          ; 75 06
     15409    jne short 09e58h                          ; 75 06
    1533915410    or ah, 083h                               ; 80 cc 83
    15340     jmp near 09f2bh                           ; e9 60 01
     15411    jmp near 09fb8h                           ; e9 60 01
    1534115412    mov bx, word [bp+008h]                    ; 8b 5e 08
    1534215413    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1534315414    mov ax, word [bp+018h]                    ; 8b 46 18
    1534415415    xor cx, cx                                ; 31 c9
    15345     call 09c6dh                               ; e8 94 fe
     15416    call 09cfah                               ; e8 94 fe
    1534615417    cmp ax, strict word 0ffffh                ; 3d ff ff
    15347     jne short 09debh                          ; 75 0d
     15418    jne short 09e78h                          ; 75 0d
    1534815419    mov ax, word [bp+020h]                    ; 8b 46 20
    1534915420    xor ah, ah                                ; 30 e4
    1535015421    or ah, 086h                               ; 80 cc 86
    15351     jmp near 09f2bh                           ; e9 42 01
    15352     jmp short 09df6h                          ; eb 0b
     15422    jmp near 09fb8h                           ; e9 42 01
     15423    jmp short 09e83h                          ; eb 0b
    1535315424    mov word [bp+014h], ax                    ; 89 46 14
    15354     jmp near 09f32h                           ; e9 41 01
    15355     jmp near 09ebdh                           ; e9 c9 00
    15356     jmp short 09e1bh                          ; eb 25
     15425    jmp near 09fbfh                           ; e9 41 01
     15426    jmp near 09f4ah                           ; e9 c9 00
     15427    jmp short 09ea8h                          ; eb 25
    1535715428    mov bx, word [bp+008h]                    ; 8b 5e 08
    1535815429    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1535915430    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1536015431    mov cx, strict word 00001h                ; b9 01 00
    15361     call 09c6dh                               ; e8 68 fe
     15432    call 09cfah                               ; e8 68 fe
    1536215433    cmp ax, strict word 0ffffh                ; 3d ff ff
    15363     jne short 09e15h                          ; 75 0b
     15434    jne short 09ea2h                          ; 75 0b
    1536415435    mov ax, word [bp+020h]                    ; 8b 46 20
    1536515436    xor ah, ah                                ; 30 e4
    1536615437    or ah, 086h                               ; 80 cc 86
    15367     jmp near 09f2bh                           ; e9 16 01
     15438    jmp near 09fb8h                           ; e9 16 01
    1536815439    mov word [bp+014h], ax                    ; 89 46 14
    15369     jmp near 09f32h                           ; e9 17 01
     15440    jmp near 09fbfh                           ; e9 17 01
    1537015441    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15371     jc short 09e28h                           ; 72 06
     15442    jc short 09eb5h                           ; 72 06
    1537215443    or ah, 087h                               ; 80 cc 87
    15373     jmp near 09f2bh                           ; e9 03 01
     15444    jmp near 09fb8h                           ; e9 03 01
    1537415445    mov dx, word [bp+004h]                    ; 8b 56 04
    1537515446    mov ax, word [bp+014h]                    ; 8b 46 14
    15376     call 09c49h                               ; e8 18 fe
     15447    call 09cd6h                               ; e8 18 fe
    1537715448    mov bx, word [bp+020h]                    ; 8b 5e 20
    1537815449    xor bh, bh                                ; 30 ff
    1537915450    sub bx, strict byte 00008h                ; 83 eb 08
    1538015451    cmp bx, strict byte 00005h                ; 83 fb 05
    15381     jnbe short 09ea6h                         ; 77 68
     15452    jnbe short 09f33h                         ; 77 68
    1538215453    sal bx, 1                                 ; d1 e3
    15383     jmp word [cs:bx-062a8h]                   ; 2e ff a7 58 9d
     15454    jmp word [cs:bx-0621bh]                   ; 2e ff a7 e5 9d
    1538415455    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1538515456    xor bl, bl                                ; 30 db
     
    1539215463    or bx, ax                                 ; 09 c3
    1539315464    mov word [bp+01ch], bx                    ; 89 5e 1c
    15394     jmp short 09ea6h                          ; eb 48
     15465    jmp short 09f33h                          ; eb 48
    1539515466    mov dx, word [bp+004h]                    ; 8b 56 04
    1539615467    xor dh, dh                                ; 30 f6
     
    1539915470    in ax, DX                                 ; ed
    1540015471    mov word [bp+01ch], ax                    ; 89 46 1c
    15401     jmp short 09ea6h                          ; eb 36
     15472    jmp short 09f33h                          ; eb 36
    1540215473    mov dx, 00cfch                            ; ba fc 0c
    1540315474    in eax, DX                                ; 66 ed
     
    1540815479    mov word [bp+01ch], ax                    ; 89 46 1c
    1540915480    mov word [bp+01eh], dx                    ; 89 56 1e
    15410     jmp short 09ea6h                          ; eb 22
     15481    jmp short 09f33h                          ; eb 22
    1541115482    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1541215483    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1541515486    add dx, 00cfch                            ; 81 c2 fc 0c
    1541615487    out DX, AL                                ; ee
    15417     jmp short 09ea6h                          ; eb 10
     15488    jmp short 09f33h                          ; eb 10
    1541815489    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1541915490    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1542215493    add dx, 00cfch                            ; 81 c2 fc 0c
    1542315494    out DX, ax                                ; ef
    15424     jmp near 09f32h                           ; e9 89 00
     15495    jmp near 09fbfh                           ; e9 89 00
    1542515496    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1542615497    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1543115502    ; mov ax, cx                                ; 8b c1
    1543215503    out DX, eax                               ; 66 ef
    15433     jmp short 09f32h                          ; eb 75
     15504    jmp short 09fbfh                          ; eb 75
    1543415505    mov bx, word [bp+004h]                    ; 8b 5e 04
    1543515506    mov es, [bp+026h]                         ; 8e 46 26
     
    1543815509    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1543915510    cmp cx, word [es:bx]                      ; 26 3b 0f
    15440     jbe short 09ee3h                          ; 76 11
     15511    jbe short 09f70h                          ; 76 11
    1544115512    mov ax, word [bp+020h]                    ; 8b 46 20
    1544215513    xor ah, ah                                ; 30 e4
     
    1544415515    mov word [bp+020h], ax                    ; 89 46 20
    1544515516    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15446     jmp short 09ef7h                          ; eb 14
     15517    jmp short 09f84h                          ; eb 14
    1544715518    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1544815519    mov si, 0f1a0h                            ; be a0 f1
     
    1545615527    les bx, [bp-008h]                         ; c4 5e f8
    1545715528    mov word [es:bx], ax                      ; 26 89 07
    15458     jmp short 09f32h                          ; eb 30
    15459     mov bx, 00da0h                            ; bb a0 0d
     15529    jmp short 09fbfh                          ; eb 30
     15530    mov bx, 00e02h                            ; bb 02 0e
    1546015531    mov cx, ds                                ; 8c d9
    1546115532    mov ax, strict word 00004h                ; b8 04 00
    15462     call 01933h                               ; e8 26 7a
     15533    call 01933h                               ; e8 99 79
    1546315534    mov ax, word [bp+014h]                    ; 8b 46 14
    1546415535    push ax                                   ; 50
    1546515536    mov ax, word [bp+020h]                    ; 8b 46 20
    1546615537    push ax                                   ; 50
    15467     mov ax, 00d5ch                            ; b8 5c 0d
     15538    mov ax, 00dbeh                            ; b8 be 0d
    1546815539    push ax                                   ; 50
    1546915540    mov ax, strict word 00004h                ; b8 04 00
    1547015541    push ax                                   ; 50
    15471     call 01976h                               ; e8 56 7a
     15542    call 01976h                               ; e8 c9 79
    1547215543    add sp, strict byte 00008h                ; 83 c4 08
    1547315544    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1548115552    pop bp                                    ; 5d
    1548215553    retn                                      ; c3
    15483 pci_find_classcode_:                         ; 0xf9f39 LB 0x8
     15554pci_find_classcode_:                         ; 0xf9fc6 LB 0x8
    1548415555    push bp                                   ; 55
    1548515556    mov bp, sp                                ; 89 e5
     
    1548715558    pop bp                                    ; 5d
    1548815559    retn                                      ; c3
    15489 pci_read_config_byte_:                       ; 0xf9f41 LB 0x27
     15560pci_find_device_:                            ; 0xf9fce LB 0x23
     15561    push bp                                   ; 55
     15562    mov bp, sp                                ; 89 e5
     15563    push bx                                   ; 53
     15564    push cx                                   ; 51
     15565    push si                                   ; 56
     15566    mov cx, dx                                ; 89 d1
     15567    xor si, si                                ; 31 f6
     15568    mov dx, ax                                ; 89 c2
     15569    mov ax, 0b102h                            ; b8 02 b1
     15570    int 01ah                                  ; cd 1a
     15571    cmp ah, 000h                              ; 80 fc 00
     15572    je short 09fe7h                           ; 74 03
     15573    mov bx, strict word 0ffffh                ; bb ff ff
     15574    mov ax, bx                                ; 89 d8
     15575    lea sp, [bp-006h]                         ; 8d 66 fa
     15576    pop si                                    ; 5e
     15577    pop cx                                    ; 59
     15578    pop bx                                    ; 5b
     15579    pop bp                                    ; 5d
     15580    retn                                      ; c3
     15581pci_read_config_byte_:                       ; 0xf9ff1 LB 0x27
    1549015582    push bp                                   ; 55
    1549115583    mov bp, sp                                ; 89 e5
     
    1551015602    pop bp                                    ; 5d
    1551115603    retn                                      ; c3
    15512 pci_read_config_word_:                       ; 0xf9f68 LB 0x25
     15604pci_read_config_word_:                       ; 0xfa018 LB 0x25
    1551315605    push bp                                   ; 55
    1551415606    mov bp, sp                                ; 89 e5
     
    1553215624    pop bp                                    ; 5d
    1553315625    retn                                      ; c3
    15534 pci_read_config_dword_:                      ; 0xf9f8d LB 0x3f
     15626pci_read_config_dword_:                      ; 0xfa03d LB 0x3f
    1553515627    push bp                                   ; 55
    1553615628    mov bp, sp                                ; 89 e5
     
    1554715639    int 01ah                                  ; cd 1a
    1554815640    test cx, cx                               ; 85 c9
    15549     jne short 09fbdh                          ; 75 14
     15641    jne short 0a06dh                          ; 75 14
    1555015642    mov al, byte [bp-006h]                    ; 8a 46 fa
    1555115643    xor ah, ah                                ; 30 e4
     
    1555715649    int 01ah                                  ; cd 1a
    1555815650    test cx, cx                               ; 85 c9
    15559     je short 09fc2h                           ; 74 05
     15651    je short 0a072h                           ; 74 05
    1556015652    mov ax, strict word 00001h                ; b8 01 00
    15561     jmp short 09fc4h                          ; eb 02
     15653    jmp short 0a074h                          ; eb 02
    1556215654    xor ax, ax                                ; 31 c0
    1556315655    cwd                                       ; 99
     
    1556715659    pop bp                                    ; 5d
    1556815660    retn                                      ; c3
    15569 pci_write_config_word_:                      ; 0xf9fcc LB 0x1e
     15661pci_write_config_word_:                      ; 0xfa07c LB 0x1e
    1557015662    push bp                                   ; 55
    1557115663    mov bp, sp                                ; 89 e5
     
    1558415676    pop bp                                    ; 5d
    1558515677    retn                                      ; c3
    15586 vds_is_present_:                             ; 0xf9fea LB 0x1d
     15678vds_is_present_:                             ; 0xfa09a LB 0x1d
    1558715679    push bx                                   ; 53
    1558815680    push bp                                   ; 55
     
    1559215684    mov es, ax                                ; 8e c0
    1559315685    test byte [es:bx], 020h                   ; 26 f6 07 20
    15594     je short 0a002h                           ; 74 06
     15686    je short 0a0b2h                           ; 74 06
    1559515687    mov ax, strict word 00001h                ; b8 01 00
    1559615688    pop bp                                    ; 5d
     
    1560115693    pop bx                                    ; 5b
    1560215694    retn                                      ; c3
    15603 vds_real_to_lin_:                            ; 0xfa007 LB 0x1e
     15695vds_real_to_lin_:                            ; 0xfa0b7 LB 0x1e
    1560415696    push bx                                   ; 53
    1560515697    push cx                                   ; 51
     
    1561215704    sal ax, 1                                 ; d1 e0
    1561315705    rcl dx, 1                                 ; d1 d2
    15614     loop 0a015h                               ; e2 fa
     15706    loop 0a0c5h                               ; e2 fa
    1561515707    xor cx, cx                                ; 31 c9
    1561615708    add ax, bx                                ; 01 d8
     
    1562015712    pop bx                                    ; 5b
    1562115713    retn                                      ; c3
    15622 vds_build_sg_list_:                          ; 0xfa025 LB 0x77
     15714vds_build_sg_list_:                          ; 0xfa0d5 LB 0x77
    1562315715    push bp                                   ; 55
    1562415716    mov bp, sp                                ; 89 e5
     
    1563415726    mov bx, word [bp+006h]                    ; 8b 5e 06
    1563515727    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15636     call 0a007h                               ; e8 c3 ff
     15728    call 0a0b7h                               ; e8 c3 ff
    1563715729    mov es, si                                ; 8e c6
    1563815730    mov word [es:di+004h], ax                 ; 26 89 45 04
    1563915731    mov word [es:di+006h], dx                 ; 26 89 55 06
    1564015732    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15641     call 09feah                               ; e8 93 ff
     15733    call 0a09ah                               ; e8 93 ff
    1564215734    test ax, ax                               ; 85 c0
    15643     je short 0a06ch                           ; 74 11
     15735    je short 0a11ch                           ; 74 11
    1564415736    mov es, si                                ; 8e c6
    1564515737    mov ax, 08105h                            ; b8 05 81
    1564615738    mov dx, strict word 00000h                ; ba 00 00
    1564715739    int 04bh                                  ; cd 4b
    15648     jc short 0a069h                           ; 72 02
     15740    jc short 0a119h                           ; 72 02
    1564915741    db  032h, 0c0h
    1565015742    ; xor al, al                                ; 32 c0
    1565115743    cbw                                       ; 98
    15652     jmp short 0a093h                          ; eb 27
     15744    jmp short 0a143h                          ; eb 27
    1565315745    mov es, si                                ; 8e c6
    1565415746    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1566715759    pop bp                                    ; 5d
    1566815760    retn 00004h                               ; c2 04 00
    15669 vds_free_sg_list_:                           ; 0xfa09c LB 0x34
     15761vds_free_sg_list_:                           ; 0xfa14c LB 0x34
    1567015762    push bp                                   ; 55
    1567115763    mov bp, sp                                ; 89 e5
     
    1567315765    push di                                   ; 57
    1567415766    mov bx, ax                                ; 89 c3
    15675     call 09feah                               ; e8 44 ff
     15767    call 0a09ah                               ; e8 44 ff
    1567615768    test ax, ax                               ; 85 c0
    15677     je short 0a0bbh                           ; 74 11
     15769    je short 0a16bh                           ; 74 11
    1567815770    mov di, bx                                ; 89 df
    1567915771    mov es, dx                                ; 8e c2
     
    1568115773    mov dx, strict word 00000h                ; ba 00 00
    1568215774    int 04bh                                  ; cd 4b
    15683     jc short 0a0bah                           ; 72 02
     15775    jc short 0a16ah                           ; 72 02
    1568415776    db  032h, 0c0h
    1568515777    ; xor al, al                                ; 32 c0
     
    1569315785    retn                                      ; c3
    1569415786    times 0x6 db 0
    15695 __U4M:                                       ; 0xfa0d0 LB 0x20
     15787__U4M:                                       ; 0xfa180 LB 0x20
    1569615788    pushfw                                    ; 9c
    1569715789    push si                                   ; 56
     
    1572015812    retn                                      ; c3
    1572115813    times 0x4 db 0
    15722 __U4D:                                       ; 0xfa0f0 LB 0x30
     15814__U4D:                                       ; 0xfa1a0 LB 0x30
    1572315815    pushfw                                    ; 9c
    1572415816    push DS                                   ; 1e
     
    1573515827    push dx                                   ; 52
    1573615828    push ax                                   ; 50
    15737     call 0a1d5h                               ; e8 d0 00
     15829    call 0a285h                               ; e8 d0 00
    1573815830    mov cx, word [bp-002h]                    ; 8b 4e fe
    1573915831    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1574615838    retn                                      ; c3
    1574715839    times 0xe db 0
    15748 __U8RS:                                      ; 0xfa120 LB 0x10
     15840__U8RS:                                      ; 0xfa1d0 LB 0x10
    1574915841    test si, si                               ; 85 f6
    15750     je short 0a12fh                           ; 74 0b
     15842    je short 0a1dfh                           ; 74 0b
    1575115843    shr ax, 1                                 ; d1 e8
    1575215844    rcr bx, 1                                 ; d1 db
     
    1575415846    rcr dx, 1                                 ; d1 da
    1575515847    dec si                                    ; 4e
    15756     jne short 0a124h                          ; 75 f5
     15848    jne short 0a1d4h                          ; 75 f5
    1575715849    retn                                      ; c3
    15758 __U8LS:                                      ; 0xfa130 LB 0x10
     15850__U8LS:                                      ; 0xfa1e0 LB 0x10
    1575915851    test si, si                               ; 85 f6
    15760     je short 0a13fh                           ; 74 0b
     15852    je short 0a1efh                           ; 74 0b
    1576115853    sal dx, 1                                 ; d1 e2
    1576215854    rcl cx, 1                                 ; d1 d1
     
    1576415856    rcl ax, 1                                 ; d1 d0
    1576515857    dec si                                    ; 4e
    15766     jne short 0a134h                          ; 75 f5
     15858    jne short 0a1e4h                          ; 75 f5
    1576715859    retn                                      ; c3
    15768 _fmemset_:                                   ; 0xfa140 LB 0x10
     15860_fmemset_:                                   ; 0xfa1f0 LB 0x10
    1576915861    push di                                   ; 57
    1577015862    mov es, dx                                ; 8e c2
     
    1577715869    retn                                      ; c3
    1577815870    times 0x3 db 0
    15779 _fmemcpy_:                                   ; 0xfa150 LB 0x3a
     15871_fmemcpy_:                                   ; 0xfa200 LB 0x3a
    1578015872    push bp                                   ; 55
    1578115873    db  08bh, 0ech
     
    1580215894    add byte [bx+si], al                      ; 00 00
    1580315895    add byte [bx+si], al                      ; 00 00
    15804     mov AL, byte [0a2a1h]                     ; a0 a1 a2
    15805     mov ax, word [0a1a6h]                     ; a1 a6 a1
    15806     cmpsb                                     ; a6
    15807     mov ax, word [0a1a6h]                     ; a1 a6 a1
    15808     test AL, strict byte 0a1h                 ; a8 a1
    15809     test AL, strict byte 0a1h                 ; a8 a1
    15810     stosb                                     ; aa
    15811     mov ax, word [0a1aeh]                     ; a1 ae a1
    15812     scasb                                     ; ae
    15813     mov ax, word [0a1b0h]                     ; a1 b0 a1
    15814     mov CH, strict byte 0a1h                  ; b5 a1
    15815     mov BH, strict byte 0a1h                  ; b7 a1
    15816 apm_worker:                                  ; 0xfa18a LB 0x3a
     15896    push ax                                   ; 50
     15897    mov byte [0a252h], AL                     ; a2 52 a2
     15898    push si                                   ; 56
     15899    mov byte [0a256h], AL                     ; a2 56 a2
     15900    push si                                   ; 56
     15901    mov byte [0a258h], AL                     ; a2 58 a2
     15902    pop ax                                    ; 58
     15903    mov byte [0a25ah], AL                     ; a2 5a a2
     15904    pop si                                    ; 5e
     15905    mov byte [0a25eh], AL                     ; a2 5e a2
     15906    pushaw                                    ; 60
     15907    mov byte [0a265h], AL                     ; a2 65 a2
     15908    db  067h
     15909    db  0a2h
     15910apm_worker:                                  ; 0xfa23a LB 0x3a
    1581715911    sti                                       ; fb
    1581815912    push ax                                   ; 50
     
    1582615920    pop ax                                    ; 58
    1582715921    mov AH, strict byte 053h                  ; b4 53
    15828     jnc short 0a1c0h                          ; 73 25
    15829     jmp word [cs:bp-05e90h]                   ; 2e ff a6 70 a1
    15830     jmp short 0a1beh                          ; eb 1c
     15922    jnc short 0a270h                          ; 73 25
     15923    jmp word [cs:bp-05de0h]                   ; 2e ff a6 20 a2
     15924    jmp short 0a26eh                          ; eb 1c
    1583115925    sti                                       ; fb
    1583215926    hlt                                       ; f4
    15833     jmp short 0a1beh                          ; eb 18
    15834     jmp short 0a1beh                          ; eb 16
    15835     jmp short 0a1c0h                          ; eb 16
     15927    jmp short 0a26eh                          ; eb 18
     15928    jmp short 0a26eh                          ; eb 16
     15929    jmp short 0a270h                          ; eb 16
    1583615930    mov AH, strict byte 080h                  ; b4 80
    15837     jmp short 0a1c2h                          ; eb 14
    15838     jmp short 0a1c0h                          ; eb 10
     15931    jmp short 0a272h                          ; eb 14
     15932    jmp short 0a270h                          ; eb 10
    1583915933    mov ax, 00102h                            ; b8 02 01
    15840     jmp short 0a1beh                          ; eb 09
    15841     jmp short 0a1beh                          ; eb 07
     15934    jmp short 0a26eh                          ; eb 09
     15935    jmp short 0a26eh                          ; eb 07
    1584215936    mov BL, strict byte 000h                  ; b3 00
    1584315937    mov cx, strict word 00000h                ; b9 00 00
    15844     jmp short 0a1beh                          ; eb 00
     15938    jmp short 0a26eh                          ; eb 00
    1584515939    clc                                       ; f8
    1584615940    retn                                      ; c3
     
    1584815942    stc                                       ; f9
    1584915943    retn                                      ; c3
    15850 apm_pm16_entry:                              ; 0xfa1c4 LB 0x11
     15944apm_pm16_entry:                              ; 0xfa274 LB 0x11
    1585115945    mov AH, strict byte 002h                  ; b4 02
    1585215946    push DS                                   ; 1e
     
    1585615950    add bp, strict byte 00008h                ; 83 c5 08
    1585715951    mov ds, bp                                ; 8e dd
    15858     call 0a18ah                               ; e8 b8 ff
     15952    call 0a23ah                               ; e8 b8 ff
    1585915953    pop bp                                    ; 5d
    1586015954    pop DS                                    ; 1f
    1586115955    retf                                      ; cb
    15862 _DoUInt32Div:                                ; 0xfa1d5 LB 0x26b
     15956_DoUInt32Div:                                ; 0xfa285 LB 0x26b
    1586315957    push bp                                   ; 55
    1586415958    mov bp, sp                                ; 89 e5
     
    1587815972    mov [bp-006h], ds                         ; 8c 5e fa
    1587915973    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15880     jne short 0a225h                          ; 75 22
     15974    jne short 0a2d5h                          ; 75 22
    1588115975    mov ax, word [bx]                         ; 8b 07
    1588215976    test ax, ax                               ; 85 c0
    15883     je short 0a222h                           ; 74 19
     15977    je short 0a2d2h                           ; 74 19
    1588415978    cmp ax, strict word 00001h                ; 3d 01 00
    15885     jne short 0a225h                          ; 75 17
     15979    jne short 0a2d5h                          ; 75 17
    1588615980    xor ax, ax                                ; 31 c0
    1588715981    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1589115985    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1589215986    mov word [bp+006h], ax                    ; 89 46 06
    15893     jmp near 0a42dh                           ; e9 08 02
     15987    jmp near 0a4ddh                           ; e9 08 02
    1589415988    lds bx, [bp-00ch]                         ; c5 5e f4
    1589515989    mov ax, word [bx+002h]                    ; 8b 47 02
    1589615990    mov ds, [bp-006h]                         ; 8e 5e fa
    1589715991    cmp ax, word [si+002h]                    ; 3b 44 02
    15898     je short 0a24bh                           ; 74 18
     15992    je short 0a2fbh                           ; 74 18
    1589915993    mov ds, [bp-00ah]                         ; 8e 5e f6
    1590015994    mov ax, word [bx+002h]                    ; 8b 47 02
    1590115995    mov ds, [bp-006h]                         ; 8e 5e fa
    1590215996    cmp ax, word [si+002h]                    ; 3b 44 02
    15903     jbe short 0a246h                          ; 76 05
     15997    jbe short 0a2f6h                          ; 76 05
    1590415998    mov ax, strict word 00001h                ; b8 01 00
    15905     jmp short 0a26ch                          ; eb 26
     15999    jmp short 0a31ch                          ; eb 26
    1590616000    mov ax, strict word 0ffffh                ; b8 ff ff
    15907     jmp short 0a26ch                          ; eb 21
     16001    jmp short 0a31ch                          ; eb 21
    1590816002    mov ds, [bp-00ah]                         ; 8e 5e f6
    1590916003    mov ax, word [bx]                         ; 8b 07
    1591016004    mov ds, [bp-006h]                         ; 8e 5e fa
    1591116005    cmp ax, word [si]                         ; 3b 04
    15912     je short 0a26ah                           ; 74 13
     16006    je short 0a31ah                           ; 74 13
    1591316007    mov ds, [bp-00ah]                         ; 8e 5e f6
    1591416008    mov ax, word [bx]                         ; 8b 07
    1591516009    mov ds, [bp-006h]                         ; 8e 5e fa
    1591616010    cmp ax, word [si]                         ; 3b 04
    15917     jbe short 0a265h                          ; 76 02
    15918     jmp short 0a241h                          ; eb dc
     16011    jbe short 0a315h                          ; 76 02
     16012    jmp short 0a2f1h                          ; eb dc
    1591916013    mov ax, strict word 0ffffh                ; b8 ff ff
    15920     jmp short 0a26ch                          ; eb 02
     16014    jmp short 0a31ch                          ; eb 02
    1592116015    xor ax, ax                                ; 31 c0
    1592216016    test ax, ax                               ; 85 c0
    15923     jnl short 0a28eh                          ; 7d 1e
     16017    jnl short 0a33eh                          ; 7d 1e
    1592416018    lds bx, [bp-00ch]                         ; c5 5e f4
    1592516019    mov ax, word [bx]                         ; 8b 07
     
    1593116025    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1593216026    mov word [bx], strict word 00000h         ; c7 07 00 00
    15933     jmp short 0a222h                          ; eb 94
    15934     jne short 0a2a5h                          ; 75 15
     16027    jmp short 0a2d2h                          ; eb 94
     16028    jne short 0a355h                          ; 75 15
    1593516029    mov ds, [bp-008h]                         ; 8e 5e f8
    1593616030    mov word [di+002h], ax                    ; 89 45 02
     
    1593916033    mov word [bx], strict word 00001h         ; c7 07 01 00
    1594016034    mov word [bx+002h], ax                    ; 89 47 02
    15941     jmp near 0a42dh                           ; e9 88 01
     16035    jmp near 0a4ddh                           ; e9 88 01
    1594216036    lds bx, [bp-00ch]                         ; c5 5e f4
    1594316037    mov ax, word [bx+002h]                    ; 8b 47 02
    1594416038    test ax, ax                               ; 85 c0
    15945     je short 0a2c0h                           ; 74 11
     16039    je short 0a370h                           ; 74 11
    1594616040    push ax                                   ; 50
    1594716041    mov ax, 0f000h                            ; b8 00 f0
    1594816042    mov ds, ax                                ; 8e d8
    15949     call 0a440h                               ; e8 88 01
     16043    call 0a4f0h                               ; e8 88 01
    1595016044    add sp, strict byte 00002h                ; 83 c4 02
    1595116045    add ax, strict word 00010h                ; 05 10 00
    15952     jmp short 0a2cdh                          ; eb 0d
     16046    jmp short 0a37dh                          ; eb 0d
    1595316047    push word [bx]                            ; ff 37
    1595416048    mov ax, 0f000h                            ; b8 00 f0
    1595516049    mov ds, ax                                ; 8e d8
    15956     call 0a440h                               ; e8 76 01
     16050    call 0a4f0h                               ; e8 76 01
    1595716051    add sp, strict byte 00002h                ; 83 c4 02
    1595816052    mov word [bp-014h], ax                    ; 89 46 ec
     
    1596016054    mov ax, word [si+002h]                    ; 8b 44 02
    1596116055    test ax, ax                               ; 85 c0
    15962     je short 0a2ebh                           ; 74 11
     16056    je short 0a39bh                           ; 74 11
    1596316057    push ax                                   ; 50
    1596416058    mov ax, 0f000h                            ; b8 00 f0
    1596516059    mov ds, ax                                ; 8e d8
    15966     call 0a440h                               ; e8 5d 01
     16060    call 0a4f0h                               ; e8 5d 01
    1596716061    add sp, strict byte 00002h                ; 83 c4 02
    1596816062    add ax, strict word 00010h                ; 05 10 00
    15969     jmp short 0a2f8h                          ; eb 0d
     16063    jmp short 0a3a8h                          ; eb 0d
    1597016064    push word [si]                            ; ff 34
    1597116065    mov ax, 0f000h                            ; b8 00 f0
    1597216066    mov ds, ax                                ; 8e d8
    15973     call 0a440h                               ; e8 4b 01
     16067    call 0a4f0h                               ; e8 4b 01
    1597416068    add sp, strict byte 00002h                ; 83 c4 02
    1597516069    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1598216076    mov word [bp-016h], ax                    ; 89 46 ea
    1598316077    test dx, dx                               ; 85 d2
    15984     je short 0a368h                           ; 74 56
     16078    je short 0a418h                           ; 74 56
    1598516079    mov cx, dx                                ; 89 d1
    1598616080    xor ch, dh                                ; 30 f5
     
    1598816082    mov ax, word [si]                         ; 8b 04
    1598916083    mov dx, word [si+002h]                    ; 8b 54 02
    15990     jcxz 0a326h                               ; e3 06
     16084    jcxz 0a3d6h                               ; e3 06
    1599116085    sal ax, 1                                 ; d1 e0
    1599216086    rcl dx, 1                                 ; d1 d2
    15993     loop 0a320h                               ; e2 fa
     16087    loop 0a3d0h                               ; e2 fa
    1599416088    mov word [bp-018h], ax                    ; 89 46 e8
    1599516089    mov word [bp-016h], dx                    ; 89 56 ea
     
    1599716091    lds bx, [bp-00ch]                         ; c5 5e f4
    1599816092    cmp ax, word [bx+002h]                    ; 3b 47 02
    15999     jnbe short 0a346h                         ; 77 0f
     16093    jnbe short 0a3f6h                         ; 77 0f
    1600016094    mov ax, word [bp-016h]                    ; 8b 46 ea
    1600116095    cmp ax, word [bx+002h]                    ; 3b 47 02
    16002     jne short 0a34ah                          ; 75 0b
     16096    jne short 0a3fah                          ; 75 0b
    1600316097    mov ax, word [bp-018h]                    ; 8b 46 e8
    1600416098    cmp ax, word [bx]                         ; 3b 07
    16005     jbe short 0a34ah                          ; 76 04
     16099    jbe short 0a3fah                          ; 76 04
    1600616100    mov AL, strict byte 001h                  ; b0 01
    16007     jmp short 0a34ch                          ; eb 02
     16101    jmp short 0a3fch                          ; eb 02
    1600816102    xor al, al                                ; 30 c0
    1600916103    test al, al                               ; 84 c0
    16010     je short 0a373h                           ; 74 23
     16104    je short 0a423h                           ; 74 23
    1601116105    shr word [bp-016h], 1                     ; d1 6e ea
    1601216106    rcr word [bp-018h], 1                     ; d1 5e e8
    1601316107    dec word [bp-012h]                        ; ff 4e ee
    16014     jmp short 0a373h                          ; eb 18
     16108    jmp short 0a423h                          ; eb 18
    1601516109    mov cx, strict word 0001fh                ; b9 1f 00
    1601616110    sal word [bp-018h], 1                     ; d1 66 e8
    1601716111    rcl word [bp-016h], 1                     ; d1 56 ea
    16018     loop 0a35eh                               ; e2 f8
    16019     jmp short 0a356h                          ; eb ee
     16112    loop 0a40eh                               ; e2 f8
     16113    jmp short 0a406h                          ; eb ee
    1602016114    mov ax, word [si]                         ; 8b 04
    1602116115    mov word [bp-018h], ax                    ; 89 46 e8
     
    1603416128    mov ds, [bp-006h]                         ; 8e 5e fa
    1603516129    cmp ax, word [si+002h]                    ; 3b 44 02
    16036     jnbe short 0a39fh                         ; 77 06
    16037     jne short 0a3a3h                          ; 75 08
     16130    jnbe short 0a44fh                         ; 77 06
     16131    jne short 0a453h                          ; 75 08
    1603816132    cmp dx, word [si]                         ; 3b 14
    16039     jc short 0a3a3h                           ; 72 04
     16133    jc short 0a453h                           ; 72 04
    1604016134    mov AL, strict byte 001h                  ; b0 01
    16041     jmp short 0a3a5h                          ; eb 02
     16135    jmp short 0a455h                          ; eb 02
    1604216136    xor al, al                                ; 30 c0
    1604316137    test al, al                               ; 84 c0
    16044     je short 0a40ah                           ; 74 61
     16138    je short 0a4bah                           ; 74 61
    1604516139    mov ds, [bp-008h]                         ; 8e 5e f8
    1604616140    mov ax, word [di+002h]                    ; 8b 45 02
    1604716141    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16048     jnbe short 0a3c0h                         ; 77 0c
     16142    jnbe short 0a470h                         ; 77 0c
    1604916143    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16050     jne short 0a3c4h                          ; 75 0b
     16144    jne short 0a474h                          ; 75 0b
    1605116145    mov ax, word [di]                         ; 8b 05
    1605216146    cmp ax, word [bp-018h]                    ; 3b 46 e8
    16053     jc short 0a3c4h                           ; 72 04
     16147    jc short 0a474h                           ; 72 04
    1605416148    mov AL, strict byte 001h                  ; b0 01
    16055     jmp short 0a3c6h                          ; eb 02
     16149    jmp short 0a476h                          ; eb 02
    1605616150    xor al, al                                ; 30 c0
    1605716151    test al, al                               ; 84 c0
    16058     je short 0a3f0h                           ; 74 26
     16152    je short 0a4a0h                           ; 74 26
    1605916153    mov ax, word [bp-018h]                    ; 8b 46 e8
    1606016154    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1606516159    xor dx, dx                                ; 31 d2
    1606616160    mov cx, word [bp-012h]                    ; 8b 4e ee
    16067     jcxz 0a3e8h                               ; e3 06
     16161    jcxz 0a498h                               ; e3 06
    1606816162    sal ax, 1                                 ; d1 e0
    1606916163    rcl dx, 1                                 ; d1 d2
    16070     loop 0a3e2h                               ; e2 fa
     16164    loop 0a492h                               ; e2 fa
    1607116165    lds bx, [bp-010h]                         ; c5 5e f0
    1607216166    or word [bx], ax                          ; 09 07
     
    1607716171    mov ds, [bp-006h]                         ; 8e 5e fa
    1607816172    cmp ax, word [si+002h]                    ; 3b 44 02
    16079     jc short 0a406h                           ; 72 06
    16080     jne short 0a40ch                          ; 75 0a
     16173    jc short 0a4b6h                           ; 72 06
     16174    jne short 0a4bch                          ; 75 0a
    1608116175    cmp dx, word [si]                         ; 3b 14
    16082     jnc short 0a40ch                          ; 73 06
     16176    jnc short 0a4bch                          ; 73 06
    1608316177    mov AL, strict byte 001h                  ; b0 01
    16084     jmp short 0a40eh                          ; eb 04
    16085     jmp short 0a42dh                          ; eb 21
     16178    jmp short 0a4beh                          ; eb 04
     16179    jmp short 0a4ddh                          ; eb 21
    1608616180    xor al, al                                ; 30 c0
    1608716181    test al, al                               ; 84 c0
    16088     je short 0a421h                           ; 74 0f
    16089     jmp short 0a42dh                          ; eb 19
     16182    je short 0a4d1h                           ; 74 0f
     16183    jmp short 0a4ddh                          ; eb 19
    1609016184    mov cx, strict word 0001fh                ; b9 1f 00
    1609116185    sal word [bp-018h], 1                     ; d1 66 e8
    1609216186    rcl word [bp-016h], 1                     ; d1 56 ea
    16093     loop 0a417h                               ; e2 f8
    16094     jmp short 0a427h                          ; eb 06
     16187    loop 0a4c7h                               ; e2 f8
     16188    jmp short 0a4d7h                          ; eb 06
    1609516189    shr word [bp-016h], 1                     ; d1 6e ea
    1609616190    rcr word [bp-018h], 1                     ; d1 5e e8
    1609716191    dec word [bp-012h]                        ; ff 4e ee
    16098     jmp near 0a3a9h                           ; e9 7c ff
     16192    jmp near 0a459h                           ; e9 7c ff
    1609916193    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1610016194    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1610516199    retn                                      ; c3
    1610616200    times 0x6 db 0
    16107 _ASMBitLastSetU16:                           ; 0xfa440 LB 0x18
     16201_ASMBitLastSetU16:                           ; 0xfa4f0 LB 0x18
    1610816202    push bp                                   ; 55
    1610916203    db  08bh, 0ech
     
    1611116205    mov cx, word [bp+004h]                    ; 8b 4e 04
    1611216206    test cx, cx                               ; 85 c9
    16113     je short 0a454h                           ; 74 0a
     16207    je short 0a504h                           ; 74 0a
    1611416208    mov ax, strict word 00010h                ; b8 10 00
    1611516209    sal cx, 1                                 ; d1 e1
    16116     jc short 0a456h                           ; 72 05
     16210    jc short 0a506h                           ; 72 05
    1611716211    dec ax                                    ; 48
    16118     jmp short 0a44dh                          ; eb f9
     16212    jmp short 0a4fdh                          ; eb f9
    1611916213    db  033h, 0c0h
    1612016214    ; xor ax, ax                                ; 33 c0
     
    1612216216    retn                                      ; c3
    1612316217
    16124   ; Padding 0x35a8 bytes at 0xfa458
    16125   times 13736 db 0
     16218  ; Padding 0x34f8 bytes at 0xfa508
     16219  times 13560 db 0
    1612616220
    1612716221section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1617016264    add bp, strict byte 00008h                ; 83 c5 08
    1617116265    push ebp                                  ; 66 55
    16172     mov bp, 0a1c6h                            ; bd c6 a1
     16266    mov bp, 0a276h                            ; bd 76 a2
    1617316267    add byte [bx+si], al                      ; 00 00
    1617416268    push ebp                                  ; 66 55
     
    1690016994    call 01cc5h                               ; e8 89 39
    1690116995    call 02154h                               ; e8 15 3e
    16902     call 099e1h                               ; e8 9f b6
    16903     call 08846h                               ; e8 01 a5
     16996    call 09a6eh                               ; e8 2c b7
     16997    call 088b8h                               ; e8 73 a5
    1690416998    call 0ed4ch                               ; e8 04 0a
    1690516999    call 0e2d2h                               ; e8 87 ff
     
    1785617950    popfw                                     ; 9d
    1785717951    jmp short 0f8afh                          ; eb 1f
    17858     call 09b53h                               ; e8 c0 a2
     17952    call 09be0h                               ; e8 4d a3
    1785917953    jmp short 0f883h                          ; eb ee
    1786017954int15_handler_mouse:                         ; 0xff895 LB 0x5
     
    1818018274cpu_reset:                                   ; 0xffff0 LB 0x10
    1818118275    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    18182     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0bah
     18276    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 023h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum

    r67789 r67807  
    1 79b54de42c733672f60fe280b4b26581 *VBoxPcBios8086.rom
     1269f62de83976f5a734bb5219dc89ba4 *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