VirtualBox

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


Ignore:
Timestamp:
Aug 3, 2017 4:24:55 PM (7 years ago)
Author:
vboxsync
Message:

5.2 Beta 1

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

Legend:

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

    r67807 r68290  
    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, 06eh, 091h
     990    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 080h, 081h, 02bh, 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, 040h, 090h, 0e8h, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     995    db  0c0h, 07fh, 0a0h, 080h, 0fdh, 08fh, 0a5h, 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=0xd40 class=DATA group=DGROUP
     998section CONST progbits vstart=0xb0 align=1 ; size=0xcde 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
    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
     1103    db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
    11071104    db   'ahci_read_sectors', 000h
    11081105    db   '%s: device_id out of range %d', 00ah, 000h
     
    11171114    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    11181115
    1119 section CONST2 progbits vstart=0xdf0 align=1 ; size=0x3fa class=DATA group=DGROUP
    1120 _bios_cvs_version_string:                    ; 0xf0df0 LB 0x12
    1121     db  'VirtualBox 5.1.51', 000h
    1122 _bios_prefix_string:                         ; 0xf0e02 LB 0x8
     1116section CONST2 progbits vstart=0xd8e align=1 ; size=0x400 class=DATA group=DGROUP
     1117_bios_cvs_version_string:                    ; 0xf0d8e LB 0x18
     1118    db  'VirtualBox 5.2.0_BETA1', 000h, 000h
     1119_bios_prefix_string:                         ; 0xf0da6 LB 0x8
    11231120    db  'BIOS: ', 000h, 000h
    1124 _isotag:                                     ; 0xf0e0a LB 0x6
     1121_isotag:                                     ; 0xf0dae LB 0x6
    11251122    db  'CD001', 000h
    1126 _eltorito:                                   ; 0xf0e10 LB 0x18
     1123_eltorito:                                   ; 0xf0db4 LB 0x18
    11271124    db  'EL TORITO SPECIFICATION', 000h
    1128 _drivetypes:                                 ; 0xf0e28 LB 0x28
     1125_drivetypes:                                 ; 0xf0dcc LB 0x28
    11291126    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    11301127    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    11311128    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    1132 _scan_to_scanascii:                          ; 0xf0e50 LB 0x37a
     1129_scan_to_scanascii:                          ; 0xf0df4 LB 0x37a
    11331130    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    11341131    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    11871184    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    11881185    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    1189 _panic_msg_keyb_buffer_full:                 ; 0xf11ca LB 0x20
     1186_panic_msg_keyb_buffer_full:                 ; 0xf116e LB 0x20
    11901187    db  '%s: keyboard input buffer full', 00ah, 000h
    11911188
    1192   ; Padding 0x416 bytes at 0xf11ea
    1193   times 1046 db 0
     1189  ; Padding 0x472 bytes at 0xf118e
     1190  times 1138 db 0
    11941191
    1195 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e48 class=CODE group=AUTO
     1192section _TEXT progbits vstart=0x1600 align=1 ; size=0x8e08 class=CODE group=AUTO
    11961193rom_scan_:                                   ; 0xf1600 LB 0x50
    11971194    push bp                                   ; 55
     
    14141411    push bp                                   ; 55
    14151412    mov bp, sp                                ; 89 e5
    1416     mov bx, 00e02h                            ; bb 02 0e
     1413    mov bx, 00da6h                            ; bb a6 0d
    14171414    mov cx, ds                                ; 8c d9
    14181415    mov ax, strict word 00004h                ; b8 04 00
    14191416    call 01923h                               ; e8 a8 01
    1420     push 00df0h                               ; 68 f0 0d
     1417    push 00d8eh                               ; 68 8e 0d
    14211418    push 000d9h                               ; 68 d9 00
    14221419    push strict byte 00004h                   ; 6a 04
     
    15881585    mov bx, strict word 0000ah                ; bb 0a 00
    15891586    xor cx, cx                                ; 31 c9
    1590     call 0a0e0h                               ; e8 13 88
     1587    call 0a0a0h                               ; e8 d3 87
    15911588    mov word [bp-008h], ax                    ; 89 46 f8
    15921589    mov cx, dx                                ; 89 d1
     
    18181815    mov dx, word [bp-026h]                    ; 8b 56 da
    18191816    mov si, word [bp-01eh]                    ; 8b 76 e2
    1820     call 0a110h                               ; e8 13 86
     1817    call 0a0d0h                               ; e8 d3 85
    18211818    mov ax, dx                                ; 89 d0
    18221819    xor ah, dh                                ; 30 f4
     
    22572254    mov dx, word [es:si]                      ; 26 8b 14
    22582255    mov si, strict word 00018h                ; be 18 00
    2259     call 0a110h                               ; e8 c0 81
     2256    call 0a0d0h                               ; e8 80 81
    22602257    xor dh, dh                                ; 30 f6
    22612258    mov word [bp-014h], dx                    ; 89 56 ec
     
    22672264    mov dx, word [es:si]                      ; 26 8b 14
    22682265    mov si, strict word 00020h                ; be 20 00
    2269     call 0a110h                               ; e8 a0 81
     2266    call 0a0d0h                               ; e8 60 81
    22702267    mov bx, dx                                ; 89 d3
    22712268    mov ax, word [bp-01ch]                    ; 8b 46 e4
     
    22982295    mov dx, word [es:si]                      ; 26 8b 14
    22992296    mov si, strict word 00008h                ; be 08 00
    2300     call 0a110h                               ; e8 4f 81
     2297    call 0a0d0h                               ; e8 0f 81
    23012298    mov word [bp-012h], dx                    ; 89 56 ee
    23022299    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23072304    mov dx, word [es:si]                      ; 26 8b 14
    23082305    mov si, strict word 00018h                ; be 18 00
    2309     call 0a110h                               ; e8 31 81
     2306    call 0a0d0h                               ; e8 f1 80
    23102307    mov ah, dl                                ; 88 d4
    23112308    and ah, 00fh                              ; 80 e4 0f
     
    26982695    lea ax, [bp-03ah]                         ; 8d 46 c6
    26992696    call 05a02h                               ; e8 58 36
    2700     mov bx, 00e02h                            ; bb 02 0e
     2697    mov bx, 00da6h                            ; bb a6 0d
    27012698    mov cx, ds                                ; 8c d9
    27022699    mov ax, strict word 00004h                ; b8 04 00
     
    28642861    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    28652862    mov si, strict word 0000bh                ; be 0b 00
    2866     call 0a110h                               ; e8 89 7b
     2863    call 0a0d0h                               ; e8 49 7b
    28672864    mov word [bp-024h], dx                    ; 89 56 dc
    28682865    mov word [bp-032h], cx                    ; 89 4e ce
     
    31403137    mov dx, word [bp-024h]                    ; 8b 56 dc
    31413138    mov si, strict word 00018h                ; be 18 00
    3142     call 0a110h                               ; e8 c7 78
     3139    call 0a0d0h                               ; e8 87 78
    31433140    xor dh, dh                                ; 30 f6
    31443141    mov word [bp-014h], dx                    ; 89 56 ec
     
    31483145    mov dx, word [bp-024h]                    ; 8b 56 dc
    31493146    mov si, strict word 00020h                ; be 20 00
    3150     call 0a110h                               ; e8 b0 78
     3147    call 0a0d0h                               ; e8 70 78
    31513148    mov bx, dx                                ; 89 d3
    31523149    mov ax, word [bp-022h]                    ; 8b 46 de
     
    31823179    mov dx, word [bp-024h]                    ; 8b 56 dc
    31833180    mov si, strict word 00008h                ; be 08 00
    3184     call 0a110h                               ; e8 5c 78
     3181    call 0a0d0h                               ; e8 1c 78
    31853182    mov word [bp-00ch], ax                    ; 89 46 f4
    31863183    mov word [bp-00eh], bx                    ; 89 5e f2
     
    31893186    mov word [bp-018h], dx                    ; 89 56 e8
    31903187    mov si, strict word 00010h                ; be 10 00
    3191     call 0a110h                               ; e8 47 78
     3188    call 0a0d0h                               ; e8 07 78
    31923189    mov word [bp-024h], dx                    ; 89 56 dc
    31933190    mov ax, dx                                ; 89 d0
     
    34493446    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    34503447    jne short 02b52h                          ; 75 1f
    3451     mov bx, 00e02h                            ; bb 02 0e
     3448    mov bx, 00da6h                            ; bb a6 0d
    34523449    mov cx, ds                                ; 8c d9
    34533450    mov ax, strict word 00004h                ; b8 04 00
     
    42834280    cmp bh, 048h                              ; 80 ff 48
    42844281    jbe short 03292h                          ; 76 33
    4285     mov bx, 00e02h                            ; bb 02 0e
     4282    mov bx, 00da6h                            ; bb a6 0d
    42864283    mov cx, ds                                ; 8c d9
    42874284    mov ax, strict word 00004h                ; b8 04 00
     
    51865183    mov byte [es:bx], 000h                    ; 26 c6 07 00
    51875184    jmp near 0348ch                           ; e9 92 f9
    5188     mov bx, 00e02h                            ; bb 02 0e
     5185    mov bx, 00da6h                            ; bb a6 0d
    51895186    mov cx, ds                                ; 8c d9
    51905187    mov ax, strict word 00004h                ; b8 04 00
     
    52845281    cmp ax, strict word 0004ah                ; 3d 4a 00
    52855282    jne short 03be4h                          ; 75 1f
    5286     mov bx, 00e02h                            ; bb 02 0e
     5283    mov bx, 00da6h                            ; bb a6 0d
    52875284    mov cx, ds                                ; 8c d9
    52885285    mov ax, strict word 00004h                ; b8 04 00
     
    53895386    pop bp                                    ; 5d
    53905387    retn                                      ; c3
    5391     mov bx, 00e02h                            ; bb 02 0e
     5388    mov bx, 00da6h                            ; bb a6 0d
    53925389    mov cx, ds                                ; 8c d9
    53935390    mov ax, strict word 00004h                ; b8 04 00
     
    54715468    mov dx, ss                                ; 8c d2
    54725469    lea ax, [bp-026h]                         ; 8d 46 da
    5473     call 0a130h                               ; e8 79 63
     5470    call 0a0f0h                               ; e8 39 63
    54745471    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    54755472    mov ax, strict word 00011h                ; b8 11 00
     
    55305527    jnc short 03e62h                          ; 73 10
    55315528    mov al, byte [bp+di-00825h]               ; 8a 83 db f7
    5532     cmp al, byte [di+00e0ah]                  ; 3a 85 0a 0e
     5529    cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
    55335530    je short 03e4ch                           ; 74 f0
    55345531    mov ax, strict word 00005h                ; b8 05 00
     
    55405537    jnc short 03e7ch                          ; 73 10
    55415538    mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
    5542     cmp al, byte [di+00e10h]                  ; 3a 85 10 0e
     5539    cmp al, byte [di+00db4h]                  ; 3a 85 b4 0d
    55435540    je short 03e66h                           ; 74 f0
    55445541    mov ax, strict word 00006h                ; b8 06 00
     
    58325829    cmp ax, dx                                ; 39 d0
    58335830    je short 04212h                           ; 74 29
    5834     mov bx, 00e02h                            ; bb 02 0e
     5831    mov bx, 00da6h                            ; bb a6 0d
    58355832    mov cx, ds                                ; 8c d9
    58365833    mov ax, strict word 00004h                ; b8 04 00
     
    59445941    xor dl, dl                                ; 30 d2
    59455942    xor cx, cx                                ; 31 c9
    5946     call 0a0c0h                               ; e8 a3 5d
     5943    call 0a080h                               ; e8 63 5d
    59475944    xor bx, bx                                ; 31 db
    59485945    add ax, si                                ; 01 f0
     
    59505947    mov bx, di                                ; 89 fb
    59515948    xor cx, cx                                ; 31 c9
    5952     call 0a0c0h                               ; e8 96 5d
     5949    call 0a080h                               ; e8 56 5d
    59535950    mov bx, ax                                ; 89 c3
    59545951    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    59855982    mov dx, ss                                ; 8c d2
    59865983    lea ax, [bp-02eh]                         ; 8d 46 d2
    5987     call 0a130h                               ; e8 af 5d
     5984    call 0a0f0h                               ; e8 6f 5d
    59885985    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    59895986    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    60526049    test al, al                               ; 84 c0
    60536050    je short 0446ch                           ; 74 37
    6054     mov bx, 00e02h                            ; bb 02 0e
     6051    mov bx, 00da6h                            ; bb a6 0d
    60556052    mov cx, ds                                ; 8c d9
    60566053    mov ax, strict word 00004h                ; b8 04 00
     
    61496146    mov word [bp+016h], bx                    ; 89 5e 16
    61506147    jmp near 04470h                           ; e9 38 ff
    6151     mov bx, 00e02h                            ; bb 02 0e
     6148    mov bx, 00da6h                            ; bb a6 0d
    61526149    mov cx, ds                                ; 8c d9
    61536150    mov ax, strict word 00004h                ; b8 04 00
     
    62716268    mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
    62726269    jmp near 04afbh                           ; e9 39 04
    6273     mov bx, 00e02h                            ; bb 02 0e
     6270    mov bx, 00da6h                            ; bb a6 0d
    62746271    mov cx, ds                                ; 8c d9
    62756272    mov ax, strict word 00004h                ; b8 04 00
     
    63246321    mov dx, ss                                ; 8c d2
    63256322    lea ax, [bp-030h]                         ; 8d 46 d0
    6326     call 0a130h                               ; e8 d2 59
     6323    call 0a0f0h                               ; e8 92 59
    63276324    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    63286325    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    63806377    cmp byte [bp-018h], 000h                  ; 80 7e e8 00
    63816378    je short 04846h                           ; 74 53
    6382     mov bx, 00e02h                            ; bb 02 0e
     6379    mov bx, 00da6h                            ; bb a6 0d
    63836380    mov cx, ds                                ; 8c d9
    63846381    mov ax, strict word 00004h                ; b8 04 00
     
    66856682    je short 04b96h                           ; 74 21
    66866683    mov dx, strict word 00001h                ; ba 01 00
    6687     mov bx, 00e02h                            ; bb 02 0e
     6684    mov bx, 00da6h                            ; bb a6 0d
    66886685    mov cx, ds                                ; 8c d9
    66896686    mov ax, strict word 00004h                ; b8 04 00
    66906687    call 01923h                               ; e8 a0 cd
    66916688    imul dx, dx, strict byte 0000ah           ; 6b d2 0a
    6692     add dx, 00e28h                            ; 81 c2 28 0e
     6689    add dx, 00dcch                            ; 81 c2 cc 0d
    66936690    push dx                                   ; 52
    66946691    push 00494h                               ; 68 94 04
     
    67126709    test al, al                               ; 84 c0
    67136710    je short 04bcch                           ; 74 1b
    6714     mov bx, 00e02h                            ; bb 02 0e
     6711    mov bx, 00da6h                            ; bb a6 0d
    67156712    mov cx, ds                                ; 8c d9
    67166713    mov ax, strict word 00004h                ; b8 04 00
    67176714    call 01923h                               ; e8 67 cd
    6718     push 00e3ch                               ; 68 3c 0e
     6715    push 00de0h                               ; 68 e0 0d
    67196716    push 004a8h                               ; 68 a8 04
    67206717    push strict byte 00004h                   ; 6a 04
     
    67246721    test ah, ah                               ; 84 e4
    67256722    je short 04be0h                           ; 74 10
    6726     mov bx, 00e02h                            ; bb 02 0e
     6723    mov bx, 00da6h                            ; bb a6 0d
    67276724    mov cx, ds                                ; 8c d9
    67286725    mov ax, strict word 00004h                ; b8 04 00
    67296726    call 01923h                               ; e8 48 cd
    6730     push 00e46h                               ; 68 46 0e
     6727    push 00deah                               ; 68 ea 0d
    67316728    jmp short 04bbfh                          ; eb df
    67326729    test bl, 080h                             ; f6 c3 80
    67336730    je short 04bf6h                           ; 74 11
    6734     mov bx, 00e02h                            ; bb 02 0e
     6731    mov bx, 00da6h                            ; bb a6 0d
    67356732    mov cx, ds                                ; 8c d9
    67366733    mov ax, strict word 00004h                ; b8 04 00
    67376734    call 01923h                               ; e8 33 cd
    67386735    push si                                   ; 56
    6739     push 00e32h                               ; 68 32 0e
     6736    push 00dd6h                               ; 68 d6 0d
    67406737    jmp short 04c05h                          ; eb 0f
    6741     mov bx, 00e02h                            ; bb 02 0e
     6738    mov bx, 00da6h                            ; bb a6 0d
    67426739    mov cx, ds                                ; 8c d9
    67436740    mov ax, strict word 00004h                ; b8 04 00
    67446741    call 01923h                               ; e8 22 cd
    67456742    push si                                   ; 56
    6746     push 00e28h                               ; 68 28 0e
     6743    push 00dcch                               ; 68 cc 0d
    67476744    push 004bdh                               ; 68 bd 04
    67486745    push strict byte 00004h                   ; 6a 04
     
    67706767    push dx                                   ; 52
    67716768    mov dx, ax                                ; 89 c2
    6772     mov bx, 00e02h                            ; bb 02 0e
     6769    mov bx, 00da6h                            ; bb a6 0d
    67736770    mov cx, ds                                ; 8c d9
    67746771    mov ax, strict word 00004h                ; b8 04 00
     
    68486845    mov byte [bp-008h], al                    ; 88 46 f8
    68496846    mov byte [bp-00ah], al                    ; 88 46 f6
    6850     mov bx, 00e02h                            ; bb 02 0e
     6847    mov bx, 00da6h                            ; bb a6 0d
    68516848    mov cx, ds                                ; 8c d9
    68526849    mov ax, strict word 00004h                ; b8 04 00
     
    74127409    test al, al                               ; 84 c0
    74137410    jne short 0520fh                          ; 75 19
    7414     mov bx, 00e02h                            ; bb 02 0e
     7411    mov bx, 00da6h                            ; bb a6 0d
    74157412    mov cx, ds                                ; 8c d9
    74167413    mov ax, strict word 00004h                ; b8 04 00
     
    77587755    cmp byte [bp-00ah], 058h                  ; 80 7e f6 58
    77597756    jbe short 0559bh                          ; 76 1f
    7760     mov bx, 00e02h                            ; bb 02 0e
     7757    mov bx, 00da6h                            ; bb a6 0d
    77617758    mov cx, ds                                ; 8c d9
    77627759    mov ax, strict word 00004h                ; b8 04 00
     
    77767773    xor ah, ah                                ; 30 e4
    77777774    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7778     mov dl, byte [bx+00e56h]                  ; 8a 97 56 0e
    7779     mov ax, word [bx+00e56h]                  ; 8b 87 56 0e
     7775    mov dl, byte [bx+00dfah]                  ; 8a 97 fa 0d
     7776    mov ax, word [bx+00dfah]                  ; 8b 87 fa 0d
    77807777    jmp near 05645h                           ; e9 90 00
    77817778    test AL, strict byte 004h                 ; a8 04
     
    77847781    xor ah, ah                                ; 30 e4
    77857782    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7786     mov dl, byte [bx+00e54h]                  ; 8a 97 54 0e
    7787     mov ax, word [bx+00e54h]                  ; 8b 87 54 0e
     7783    mov dl, byte [bx+00df8h]                  ; 8a 97 f8 0d
     7784    mov ax, word [bx+00df8h]                  ; 8b 87 f8 0d
    77887785    jmp near 05645h                           ; e9 79 00
    77897786    mov al, byte [bp-00ch]                    ; 8a 46 f4
     
    78057802    xor ah, ah                                ; 30 e4
    78067803    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7807     mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
     7804    mov al, byte [bx+00dfch]                  ; 8a 87 fc 0d
    78087805    mov dx, ax                                ; 89 c2
    78097806    mov al, byte [bp-00eh]                    ; 8a 46 f2
    78107807    test ax, dx                               ; 85 d0
    78117808    je short 0560eh                           ; 74 0a
    7812     mov dl, byte [bx+00e50h]                  ; 8a 97 50 0e
    7813     mov ax, word [bx+00e50h]                  ; 8b 87 50 0e
     7809    mov dl, byte [bx+00df4h]                  ; 8a 97 f4 0d
     7810    mov ax, word [bx+00df4h]                  ; 8b 87 f4 0d
    78147811    jmp short 05616h                          ; eb 08
    7815     mov dl, byte [bx+00e52h]                  ; 8a 97 52 0e
    7816     mov ax, word [bx+00e52h]                  ; 8b 87 52 0e
     7812    mov dl, byte [bx+00df6h]                  ; 8a 97 f6 0d
     7813    mov ax, word [bx+00df6h]                  ; 8b 87 f6 0d
    78177814    shr ax, 008h                              ; c1 e8 08
    78187815    mov byte [bp-00ah], al                    ; 88 46 f6
     
    78217818    xor ah, ah                                ; 30 e4
    78227819    imul bx, ax, strict byte 0000ah           ; 6b d8 0a
    7823     mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
     7820    mov al, byte [bx+00dfch]                  ; 8a 87 fc 0d
    78247821    mov dx, ax                                ; 89 c2
    78257822    mov al, byte [bp-00eh]                    ; 8a 46 f2
    78267823    test ax, dx                               ; 85 d0
    78277824    je short 0563dh                           ; 74 0a
    7828     mov dl, byte [bx+00e52h]                  ; 8a 97 52 0e
    7829     mov ax, word [bx+00e52h]                  ; 8b 87 52 0e
     7825    mov dl, byte [bx+00df6h]                  ; 8a 97 f6 0d
     7826    mov ax, word [bx+00df6h]                  ; 8b 87 f6 0d
    78307827    jmp short 05645h                          ; eb 08
    7831     mov dl, byte [bx+00e50h]                  ; 8a 97 50 0e
    7832     mov ax, word [bx+00e50h]                  ; 8b 87 50 0e
     7828    mov dl, byte [bx+00df4h]                  ; 8a 97 f4 0d
     7829    mov ax, word [bx+00df4h]                  ; 8b 87 f4 0d
    78337830    shr ax, 008h                              ; c1 e8 08
    78347831    mov byte [bp-00ah], al                    ; 88 46 f6
     
    78377834    test dl, dl                               ; 84 d2
    78387835    jne short 0566bh                          ; 75 16
    7839     mov bx, 00e02h                            ; bb 02 0e
     7836    mov bx, 00da6h                            ; bb a6 0d
    78407837    mov cx, ds                                ; 8c d9
    78417838    mov ax, strict word 00004h                ; b8 04 00
     
    80378034    mov word [bp+012h], dx                    ; 89 56 12
    80388035    jmp near 05855h                           ; e9 43 00
    8039     mov bx, 00e02h                            ; bb 02 0e
     8036    mov bx, 00da6h                            ; bb a6 0d
    80408037    mov cx, ds                                ; 8c d9
    80418038    mov ax, strict word 00004h                ; b8 04 00
     
    80488045    call 01966h                               ; e8 3a c1
    80498046    add sp, strict byte 00006h                ; 83 c4 06
    8050     mov bx, 00e02h                            ; bb 02 0e
     8047    mov bx, 00da6h                            ; bb a6 0d
    80518048    mov cx, ds                                ; 8c d9
    80528049    mov ax, strict word 00004h                ; b8 04 00
     
    82578254    mov dx, word [bp+00ch]                    ; 8b 56 0c
    82588255    mov si, strict word 00020h                ; be 20 00
    8259     call 0a110h                               ; e8 e1 46
     8256    call 0a0d0h                               ; e8 a1 46
    82608257    test ax, ax                               ; 85 c0
    82618258    jne short 05a3fh                          ; 75 0c
     
    82958292    mov bx, strict word 0003fh                ; bb 3f 00
    82968293    xor cx, cx                                ; 31 c9
    8297     call 0a0c0h                               ; e8 38 46
     8294    call 0a080h                               ; e8 f8 45
    82988295    mov bx, ax                                ; 89 c3
    82998296    mov cx, dx                                ; 89 d1
    83008297    mov ax, word [bp-004h]                    ; 8b 46 fc
    83018298    mov dx, si                                ; 89 f2
    8302     call 0a0e0h                               ; e8 4c 46
     8299    call 0a0a0h                               ; e8 0c 46
    83038300    mov word [es:di+002h], ax                 ; 26 89 45 02
    83048301    cmp ax, 00400h                            ; 3d 00 04
     
    84418438    test ax, ax                               ; 85 c0
    84428439    jne short 05c16h                          ; 75 26
    8443     mov bx, 00e02h                            ; bb 02 0e
     8440    mov bx, 00da6h                            ; bb a6 0d
    84448441    mov cx, ds                                ; 8c d9
    84458442    mov ax, strict word 00004h                ; b8 04 00
     
    84728469    cmp ax, dx                                ; 39 d0
    84738470    jbe short 05c74h                          ; 76 30
    8474     mov bx, 00e02h                            ; bb 02 0e
     8471    mov bx, 00da6h                            ; bb a6 0d
    84758472    mov cx, ds                                ; 8c d9
    84768473    mov ax, strict word 00004h                ; b8 04 00
     
    85148511    mov bx, cx                                ; 89 cb
    85158512    xor cx, cx                                ; 31 c9
    8516     call 0a0c0h                               ; e8 0d 44
     8513    call 0a080h                               ; e8 cd 43
    85178514    xor bx, bx                                ; 31 db
    85188515    add ax, word [bp-006h]                    ; 03 46 fa
     
    85208517    mov bx, word [bp-008h]                    ; 8b 5e f8
    85218518    xor cx, cx                                ; 31 c9
    8522     call 0a0c0h                               ; e8 fe 43
     8519    call 0a080h                               ; e8 be 43
    85238520    xor bx, bx                                ; 31 db
    85248521    add ax, word [bp-004h]                    ; 03 46 fc
     
    85778574    test dl, dl                               ; 84 d2
    85788575    je short 05dbbh                           ; 74 46
    8579     mov bx, 00e02h                            ; bb 02 0e
     8576    mov bx, 00da6h                            ; bb a6 0d
    85808577    mov cx, ds                                ; 8c d9
    85818578    mov ax, strict word 00004h                ; b8 04 00
     
    85968593    or ah, 00ch                               ; 80 cc 0c
    85978594    jmp near 05f01h                           ; e9 5c 01
    8598     mov bx, 00e02h                            ; bb 02 0e
     8595    mov bx, 00da6h                            ; bb a6 0d
    85998596    mov cx, ds                                ; 8c d9
    86008597    mov ax, strict word 00004h                ; b8 04 00
     
    86888685    mov bx, word [bp-006h]                    ; 8b 5e fa
    86898686    xor cx, cx                                ; 31 c9
    8690     call 0a0c0h                               ; e8 27 42
     8687    call 0a080h                               ; e8 e7 41
    86918688    mov bx, word [bp-004h]                    ; 8b 5e fc
    86928689    xor cx, cx                                ; 31 c9
    8693     call 0a0c0h                               ; e8 1f 42
     8690    call 0a080h                               ; e8 df 41
    86948691    mov word [bp-00eh], ax                    ; 89 46 f2
    86958692    mov word [bp-00ah], dx                    ; 89 56 f6
     
    87018698    mov word [bp+016h], ax                    ; 89 46 16
    87028699    jmp near 05dbfh                           ; e9 04 ff
    8703     mov bx, 00e02h                            ; bb 02 0e
     8700    mov bx, 00da6h                            ; bb a6 0d
    87048701    mov cx, ds                                ; 8c d9
    87058702    mov ax, strict word 00004h                ; b8 04 00
     
    87148711    add sp, strict byte 00008h                ; 83 c4 08
    87158712    jmp near 05dbbh                           ; e9 dd fe
    8716     mov bx, 00e02h                            ; bb 02 0e
     8713    mov bx, 00da6h                            ; bb a6 0d
    87178714    mov cx, ds                                ; 8c d9
    87188715    mov ax, strict word 00004h                ; b8 04 00
     
    88048801    mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
    88058802    jmp near 06400h                           ; e9 10 04
    8806     mov bx, 00e02h                            ; bb 02 0e
     8803    mov bx, 00da6h                            ; bb a6 0d
    88078804    mov cx, ds                                ; 8c d9
    88088805    mov ax, strict word 00004h                ; b8 04 00
     
    88298826    xor bx, bx                                ; 31 db
    88308827    mov si, strict word 00020h                ; be 20 00
    8831     call 0a120h                               ; e8 e2 40
     8828    call 0a0e0h                               ; e8 a2 40
    88328829    mov si, ax                                ; 89 c6
    88338830    mov word [bp-00ch], bx                    ; 89 5e f4
     
    88568853    cmp dx, word [es:bx+036h]                 ; 26 3b 57 36
    88578854    jc short 060abh                           ; 72 23
    8858     mov bx, 00e02h                            ; bb 02 0e
     8855    mov bx, 00da6h                            ; bb a6 0d
    88598856    mov cx, ds                                ; 8c d9
    88608857    mov ax, strict word 00004h                ; b8 04 00
     
    89148911    test dl, dl                               ; 84 d2
    89158912    je short 0618dh                           ; 74 51
    8916     mov bx, 00e02h                            ; bb 02 0e
     8913    mov bx, 00da6h                            ; bb a6 0d
    89178914    mov cx, ds                                ; 8c d9
    89188915    mov ax, strict word 00004h                ; b8 04 00
     
    89868983    mov bx, word [bp-00ch]                    ; 8b 5e f4
    89878984    mov si, strict word 00020h                ; be 20 00
    8988     call 0a110h                               ; e8 ee 3e
     8985    call 0a0d0h                               ; e8 ae 3e
    89898986    mov bx, di                                ; 89 fb
    89908987    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    93429339    mov bx, strict word 0000fh                ; bb 0f 00
    93439340    xor cx, cx                                ; 31 c9
    9344     call 0a0e0h                               ; e8 2b 3b
     9341    call 0a0a0h                               ; e8 eb 3a
    93459342    mov cx, ax                                ; 89 c1
    93469343    mov bx, dx                                ; 89 d3
     
    95039500    mov word [bp+00ch], ax                    ; 89 46 0c
    95049501    jmp near 0677fh                           ; e9 2b 00
    9505     mov bx, 00e02h                            ; bb 02 0e
     9502    mov bx, 00da6h                            ; bb a6 0d
    95069503    mov cx, ds                                ; 8c d9
    95079504    mov ax, strict word 00004h                ; b8 04 00
     
    96949691    retf                                      ; cb
    96959692    jmp near 0677fh                           ; e9 49 fe
    9696     mov bx, 00e02h                            ; bb 02 0e
     9693    mov bx, 00da6h                            ; bb a6 0d
    96979694    mov cx, ds                                ; 8c d9
    96989695    mov ax, strict word 00004h                ; b8 04 00
     
    97349731    or byte [bp+018h], 001h                   ; 80 4e 18 01
    97359732    jmp near 0677fh                           ; e9 d3 fd
    9736     mov bx, 00e02h                            ; bb 02 0e
     9733    mov bx, 00da6h                            ; bb a6 0d
    97379734    mov cx, ds                                ; 8c d9
    97389735    mov ax, strict word 00004h                ; b8 04 00
     
    99279924    mov word [bp+014h], strict word 00003h    ; c7 46 14 03 00
    99289925    jmp short 06b65h                          ; eb b9
    9929     mov bx, 00e02h                            ; bb 02 0e
     9926    mov bx, 00da6h                            ; bb a6 0d
    99309927    mov cx, ds                                ; 8c d9
    99319928    mov ax, strict word 00004h                ; b8 04 00
     
    1070310700    je short 0738dh                           ; 74 0e
    1070410701    push 008eeh                               ; 68 ee 08
    10705     push 011cah                               ; 68 ca 11
     10702    push 0116eh                               ; 68 6e 11
    1070610703    push strict byte 00007h                   ; 6a 07
    1070710704    call 01966h                               ; e8 dc a5
     
    1078410781    je short 0741eh                           ; 74 0e
    1078510782    push 008f8h                               ; 68 f8 08
    10786     push 011cah                               ; 68 ca 11
     10783    push 0116eh                               ; 68 6e 11
    1078710784    push strict byte 00007h                   ; 6a 07
    1078810785    call 01966h                               ; e8 4b a5
     
    1229312290    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    1229412291    jne short 081c7h                          ; 75 1f
    12295     mov bx, 00e02h                            ; bb 02 0e
     12292    mov bx, 00da6h                            ; bb a6 0d
    1229612293    mov cx, ds                                ; 8c d9
    1229712294    mov ax, strict word 00004h                ; b8 04 00
     
    1245112448    mov dx, ss                                ; 8c d2
    1245212449    lea ax, [bp-046h]                         ; 8d 46 ba
    12453     call 0a130h                               ; e8 10 1e
     12450    call 0a0f0h                               ; e8 d0 1d
    1245412451    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1245512452    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1251512512    cmp bx, 00200h                            ; 81 fb 00 02
    1251612513    je short 083e9h                           ; 74 20
    12517     mov bx, 00e02h                            ; bb 02 0e
     12514    mov bx, 00da6h                            ; bb a6 0d
    1251812515    mov cx, ds                                ; 8c d9
    1251912516    mov ax, strict word 00004h                ; b8 04 00
     
    1258212579    mov dx, word [bp-014h]                    ; 8b 56 ec
    1258312580    mov si, strict word 0000ch                ; be 0c 00
    12584     call 0a110h                               ; e8 a9 1c
     12581    call 0a0d0h                               ; e8 69 1c
    1258512582    mov word [bp-02ah], ax                    ; 89 46 d6
    1258612583    mov word [bp-016h], bx                    ; 89 5e ea
     
    1260412601    mov dx, word [bp-014h]                    ; 8b 56 ec
    1260512602    mov si, strict word 00006h                ; be 06 00
    12606     call 0a110h                               ; e8 68 1c
     12603    call 0a0d0h                               ; e8 28 1c
    1260712604    mov si, word [bp-01eh]                    ; 8b 76 e2
    1260812605    add si, dx                                ; 01 d6
     
    1262212619    mov dx, si                                ; 89 f2
    1262312620    mov si, strict word 00008h                ; be 08 00
    12624     call 0a110h                               ; e8 38 1c
     12621    call 0a0d0h                               ; e8 f8 1b
    1262512622    mov word [bp-02eh], bx                    ; 89 5e d2
    1262612623    mov word [bp-030h], cx                    ; 89 4e d0
     
    1263112628    mov dx, word [bp-036h]                    ; 8b 56 ca
    1263212629    mov si, strict word 00010h                ; be 10 00
    12633     call 0a110h                               ; e8 1d 1c
     12630    call 0a0d0h                               ; e8 dd 1b
    1263412631    mov si, word [bp-032h]                    ; 8b 76 ce
    1263512632    add si, dx                                ; 01 d6
     
    1265712654    mov dx, word [bp-014h]                    ; 8b 56 ec
    1265812655    mov si, strict word 0000bh                ; be 0b 00
    12659     call 0a110h                               ; e8 d1 1b
     12656    call 0a0d0h                               ; e8 91 1b
    1266012657    mov si, dx                                ; 89 d6
    1266112658    mov dx, cx                                ; 89 ca
     
    1270012697    mov word [es:bx+02ch], si                 ; 26 89 77 2c
    1270112698    mov word [es:bx+032h], si                 ; 26 89 77 32
    12702     mov bx, 00e02h                            ; bb 02 0e
     12699    mov bx, 00da6h                            ; bb a6 0d
    1270312700    mov cx, ds                                ; 8c d9
    1270412701    mov ax, strict word 00004h                ; b8 04 00
     
    1275612753    inc byte [bp-00ch]                        ; fe 46 f4
    1275712754    jmp near 086f5h                           ; e9 91 00
    12758     mov bx, 00e02h                            ; bb 02 0e
     12755    mov bx, 00da6h                            ; bb a6 0d
    1275912756    mov cx, ds                                ; 8c d9
    1276012757    mov ax, strict word 00004h                ; b8 04 00
     
    1286212859    pop bp                                    ; 5d
    1286312860    retn                                      ; c3
    12864 scsi_pci_init_:                              ; 0xf878e LB 0x6d
     12861scsi_pci_init_:                              ; 0xf878e LB 0x2a
    1286512862    push bp                                   ; 55
    1286612863    mov bp, sp                                ; 89 e5
    1286712864    push bx                                   ; 53
    1286812865    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
     12866    call 09ea5h                               ; e8 0f 17
     12867    mov bx, ax                                ; 89 c3
    1287512868    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
     12869    je short 087b1h                           ; 74 14
     12870    mov dl, bl                                ; 88 da
     12871    xor dh, dh                                ; 30 f6
     12872    shr bx, 008h                              ; c1 eb 08
     12873    mov al, bl                                ; 88 d8
     12874    xor ah, ah                                ; 30 e4
    1290612875    mov cx, strict word 00007h                ; b9 07 00
    1290712876    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
     12877    call 09f6eh                               ; e8 bd 17
     12878    lea sp, [bp-004h]                         ; 8d 66 fc
    1291312879    pop cx                                    ; 59
    1291412880    pop bx                                    ; 5b
    1291512881    pop bp                                    ; 5d
    1291612882    retn                                      ; c3
    12917 _scsi_init:                                  ; 0xf87fb LB 0x81
     12883_scsi_init:                                  ; 0xf87b8 LB 0x81
    1291812884    push bp                                   ; 55
    1291912885    mov bp, sp                                ; 89 e5
    1292012886    mov dx, strict word 0000eh                ; ba 0e 00
    1292112887    mov ax, strict word 00040h                ; b8 40 00
    12922     call 0166ch                               ; e8 65 8e
     12888    call 0166ch                               ; e8 a8 8e
    1292312889    mov bx, 00122h                            ; bb 22 01
    1292412890    mov es, ax                                ; 8e c0
     
    1293112897    ; sub ah, ah                                ; 2a e4
    1293212898    cmp AL, strict byte 055h                  ; 3c 55
    12933     jne short 08834h                          ; 75 15
     12899    jne short 087f1h                          ; 75 15
    1293412900    xor al, al                                ; 30 c0
    1293512901    mov dx, 00433h                            ; ba 33 04
    1293612902    out DX, AL                                ; ee
    1293712903    mov ax, 00430h                            ; b8 30 04
    12938     call 082e8h                               ; e8 bd fa
     12904    call 082e8h                               ; e8 00 fb
    1293912905    mov dx, 01040h                            ; ba 40 10
    1294012906    mov ax, 0104bh                            ; b8 4b 10
    12941     call 0878eh                               ; e8 5a ff
     12907    call 0878eh                               ; e8 9d ff
    1294212908    mov AL, strict byte 055h                  ; b0 55
    1294312909    mov dx, 00436h                            ; ba 36 04
     
    1294712913    ; sub ah, ah                                ; 2a e4
    1294812914    cmp AL, strict byte 055h                  ; 3c 55
    12949     jne short 08856h                          ; 75 15
     12915    jne short 08813h                          ; 75 15
    1295012916    xor al, al                                ; 30 c0
    1295112917    mov dx, 00437h                            ; ba 37 04
    1295212918    out DX, AL                                ; ee
    1295312919    mov ax, 00434h                            ; b8 34 04
    12954     call 082e8h                               ; e8 9b fa
     12920    call 082e8h                               ; e8 de fa
    1295512921    mov dx, strict word 00030h                ; ba 30 00
    1295612922    mov ax, 01000h                            ; b8 00 10
    12957     call 0878eh                               ; e8 38 ff
     12923    call 0878eh                               ; e8 7b ff
    1295812924    mov AL, strict byte 055h                  ; b0 55
    1295912925    mov dx, 0043ah                            ; ba 3a 04
     
    1296312929    ; sub ah, ah                                ; 2a e4
    1296412930    cmp AL, strict byte 055h                  ; 3c 55
    12965     jne short 08878h                          ; 75 15
     12931    jne short 08835h                          ; 75 15
    1296612932    xor al, al                                ; 30 c0
    1296712933    mov dx, 0043bh                            ; ba 3b 04
    1296812934    out DX, AL                                ; ee
    1296912935    mov ax, 00438h                            ; b8 38 04
    12970     call 082e8h                               ; e8 79 fa
     12936    call 082e8h                               ; e8 bc fa
    1297112937    mov dx, strict word 00054h                ; ba 54 00
    1297212938    mov ax, 01000h                            ; b8 00 10
    12973     call 0878eh                               ; e8 16 ff
     12939    call 0878eh                               ; e8 59 ff
    1297412940    mov sp, bp                                ; 89 ec
    1297512941    pop bp                                    ; 5d
    1297612942    retn                                      ; c3
    12977 ahci_ctrl_extract_bits_:                     ; 0xf887c LB 0x1c
     12943ahci_ctrl_extract_bits_:                     ; 0xf8839 LB 0x1c
    1297812944    push si                                   ; 56
    1297912945    push bp                                   ; 55
     
    1298412950    mov cl, byte [bp+006h]                    ; 8a 4e 06
    1298512951    xor ch, ch                                ; 30 ed
    12986     jcxz 08893h                               ; e3 06
     12952    jcxz 08850h                               ; e3 06
    1298712953    shr dx, 1                                 ; d1 ea
    1298812954    rcr ax, 1                                 ; d1 d8
    12989     loop 0888dh                               ; e2 fa
     12955    loop 0884ah                               ; e2 fa
    1299012956    pop bp                                    ; 5d
    1299112957    pop si                                    ; 5e
    1299212958    retn 00002h                               ; c2 02 00
    12993 ahci_addr_to_phys_:                          ; 0xf8898 LB 0x1e
     12959ahci_addr_to_phys_:                          ; 0xf8855 LB 0x1e
    1299412960    push bx                                   ; 53
    1299512961    push cx                                   ; 51
     
    1300212968    sal ax, 1                                 ; d1 e0
    1300312969    rcl dx, 1                                 ; d1 d2
    13004     loop 088a6h                               ; e2 fa
     12970    loop 08863h                               ; e2 fa
    1300512971    xor cx, cx                                ; 31 c9
    1300612972    add ax, bx                                ; 01 d8
     
    1301012976    pop bx                                    ; 5b
    1301112977    retn                                      ; c3
    13012 ahci_port_cmd_sync_:                         ; 0xf88b6 LB 0x156
     12978ahci_port_cmd_sync_:                         ; 0xf8873 LB 0x156
    1301312979    push bp                                   ; 55
    1301412980    mov bp, sp                                ; 89 e5
     
    1302512991    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1302612992    cmp AL, strict byte 0ffh                  ; 3c ff
    13027     jne short 088d9h                          ; 75 03
    13028     jmp near 08a04h                           ; e9 2b 01
     12993    jne short 08896h                          ; 75 03
     12994    jmp near 089c1h                           ; e9 2b 01
    1302912995    mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
    1303012996    xor ah, ah                                ; 30 e4
     
    1303913005    lea ax, [si+00080h]                       ; 8d 84 80 00
    1304013006    mov dx, cx                                ; 89 ca
    13041     call 08898h                               ; e8 92 ff
     13007    call 08855h                               ; e8 92 ff
    1304213008    mov es, cx                                ; 8e c1
    1304313009    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1310513071    xchg dx, ax                               ; 92
    1310613072    test dh, 040h                             ; f6 c6 40
    13107     jne short 08997h                          ; 75 04
     13073    jne short 08954h                          ; 75 04
    1310813074    test AL, strict byte 001h                 ; a8 01
    13109     je short 0899bh                           ; 74 04
     13075    je short 08958h                           ; 74 04
    1311013076    mov AL, strict byte 001h                  ; b0 01
    13111     jmp short 0899dh                          ; eb 02
     13077    jmp short 0895ah                          ; eb 02
    1311213078    xor al, al                                ; 30 c0
    1311313079    test al, al                               ; 84 c0
    13114     je short 0896ah                           ; 74 c9
     13080    je short 08927h                           ; 74 c9
    1311513081    mov al, byte [bp-008h]                    ; 8a 46 f8
    1311613082    xor ah, ah                                ; 30 e4
     
    1316813134    pop bp                                    ; 5d
    1316913135    retn                                      ; c3
    13170 ahci_cmd_data_:                              ; 0xf8a0c LB 0x267
     13136ahci_cmd_data_:                              ; 0xf89c9 LB 0x267
    1317113137    push bp                                   ; 55
    1317213138    mov bp, sp                                ; 89 e5
     
    1319313159    mov ax, 00080h                            ; b8 80 00
    1319413160    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13195     call 0a130h                               ; e8 e6 16
     13161    call 0a0f0h                               ; e8 e9 16
    1319613162    mov es, [bp-00ah]                         ; 8e 46 f6
    1319713163    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1321113177    mov dx, word [es:si]                      ; 26 8b 14
    1321213178    mov si, strict word 00008h                ; be 08 00
    13213     call 0a110h                               ; e8 82 16
     13179    call 0a0d0h                               ; e8 85 16
    1321413180    mov es, [bp-00ah]                         ; 8e 46 f6
    1321513181    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1322213188    mov dx, word [es:si]                      ; 26 8b 14
    1322313189    mov si, strict word 00010h                ; be 10 00
    13224     call 0a110h                               ; e8 5c 16
     13190    call 0a0d0h                               ; e8 5f 16
    1322513191    mov es, [bp-00ah]                         ; 8e 46 f6
    1322613192    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1323413200    mov dx, word [es:si]                      ; 26 8b 14
    1323513201    mov si, strict word 00018h                ; be 18 00
    13236     call 0a110h                               ; e8 30 16
     13202    call 0a0d0h                               ; e8 33 16
    1323713203    mov es, [bp-00ah]                         ; 8e 46 f6
    1323813204    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1324513211    mov dx, word [es:si]                      ; 26 8b 14
    1324613212    mov si, strict word 00020h                ; be 20 00
    13247     call 0a110h                               ; e8 0a 16
     13213    call 0a0d0h                               ; e8 0d 16
    1324813214    mov es, [bp-00ah]                         ; 8e 46 f6
    1324913215    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1325613222    mov dx, word [es:si]                      ; 26 8b 14
    1325713223    mov si, strict word 00028h                ; be 28 00
    13258     call 0a110h                               ; e8 e4 15
     13224    call 0a0d0h                               ; e8 e7 15
    1325913225    mov es, [bp-00ah]                         ; 8e 46 f6
    1326013226    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1327013236    mov bx, word [bp-010h]                    ; 8b 5e f0
    1327113237    xor cx, cx                                ; 31 c9
    13272     call 0a0c0h                               ; e8 5f 15
     13238    call 0a080h                               ; e8 62 15
    1327313239    push dx                                   ; 52
    1327413240    push ax                                   ; 50
     
    1328013246    mov ax, 0026ah                            ; b8 6a 02
    1328113247    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13282     call 0a011h                               ; e8 94 14
     13248    call 09fceh                               ; e8 94 14
    1328313249    mov es, [bp-00ah]                         ; 8e 46 f6
    1328413250    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1330313269    mov ax, word [es:bx+020h]                 ; 26 8b 47 20
    1330413270    test ax, ax                               ; 85 c0
    13305     je short 08c0fh                           ; 74 3b
     13271    je short 08bcch                           ; 74 3b
    1330613272    dec ax                                    ; 48
    1330713273    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1332113287    mov al, byte [bp-008h]                    ; 8a 46 f8
    1332213288    cmp AL, strict byte 035h                  ; 3c 35
    13323     jne short 08c1ch                          ; 75 06
     13289    jne short 08bd9h                          ; 75 06
    1332413290    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    13325     jmp short 08c33h                          ; eb 17
     13291    jmp short 08bf0h                          ; eb 17
    1332613292    cmp AL, strict byte 0a0h                  ; 3c a0
    13327     jne short 08c2fh                          ; 75 0f
     13293    jne short 08bech                          ; 75 0f
    1332813294    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1332913295    les bx, [bp-00eh]                         ; c4 5e f2
    1333013296    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    13331     jmp short 08c33h                          ; eb 04
     13297    jmp short 08bf0h                          ; eb 04
    1333213298    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1333313299    or byte [bp-008h], 005h                   ; 80 4e f8 05
     
    1333613302    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1333713303    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13338     call 088b6h                               ; e8 71 fc
     13304    call 08873h                               ; e8 71 fc
    1333913305    mov cx, word [bp-00ch]                    ; 8b 4e f4
    1334013306    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1334313309    add ax, 0026ah                            ; 05 6a 02
    1334413310    mov dx, cx                                ; 89 ca
    13345     call 0a088h                               ; e8 2e 14
     13311    call 0a045h                               ; e8 2e 14
    1334613312    mov es, cx                                ; 8e c1
    1334713313    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
    1334813314    test al, al                               ; 84 c0
    13349     je short 08c69h                           ; 74 05
     13315    je short 08c26h                           ; 74 05
    1335013316    mov ax, strict word 00004h                ; b8 04 00
    13351     jmp short 08c6bh                          ; eb 02
     13317    jmp short 08c28h                          ; eb 02
    1335213318    xor ah, ah                                ; 30 e4
    1335313319    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1335713323    pop bp                                    ; 5d
    1335813324    retn                                      ; c3
    13359 ahci_port_deinit_current_:                   ; 0xf8c73 LB 0x180
     13325ahci_port_deinit_current_:                   ; 0xf8c30 LB 0x180
    1336013326    push bp                                   ; 55
    1336113327    mov bp, sp                                ; 89 e5
     
    1337213338    mov byte [bp-00ah], al                    ; 88 46 f6
    1337313339    cmp AL, strict byte 0ffh                  ; 3c ff
    13374     je short 08cf4h                           ; 74 5f
     13340    je short 08cb1h                           ; 74 5f
    1337513341    xor ah, ah                                ; 30 e4
    1337613342    sal ax, 007h                              ; c1 e0 07
     
    1341613382    xchg dx, ax                               ; 92
    1341713383    test ax, 0c011h                           ; a9 11 c0
    13418     je short 08cf7h                           ; 74 07
     13384    je short 08cb4h                           ; 74 07
    1341913385    mov AL, strict byte 001h                  ; b0 01
    13420     jmp short 08cf9h                          ; eb 05
    13421     jmp near 08deah                           ; e9 f3 00
     13386    jmp short 08cb6h                          ; eb 05
     13387    jmp near 08da7h                           ; e9 f3 00
    1342213388    xor al, al                                ; 30 c0
    1342313389    cmp AL, strict byte 001h                  ; 3c 01
    13424     je short 08cc7h                           ; 74 ca
     13390    je short 08c84h                           ; 74 ca
    1342513391    mov cx, strict word 00020h                ; b9 20 00
    1342613392    xor bx, bx                                ; 31 db
    1342713393    mov ax, di                                ; 89 f8
    1342813394    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13429     call 0a130h                               ; e8 26 14
     13395    call 0a0f0h                               ; e8 29 14
    1343013396    lea ax, [di+00080h]                       ; 8d 85 80 00
    1343113397    mov cx, strict word 00040h                ; b9 40 00
    1343213398    xor bx, bx                                ; 31 db
    1343313399    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13434     call 0a130h                               ; e8 17 14
     13400    call 0a0f0h                               ; e8 1a 14
    1343513401    lea ax, [di+00200h]                       ; 8d 85 00 02
    1343613402    mov cx, strict word 00060h                ; b9 60 00
    1343713403    xor bx, bx                                ; 31 db
    1343813404    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13439     call 0a130h                               ; e8 08 14
     13405    call 0a0f0h                               ; e8 0b 14
    1344013406    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1344113407    xor ah, ah                                ; 30 e4
     
    1354213508    pop bp                                    ; 5d
    1354313509    retn                                      ; c3
    13544 ahci_port_init_:                             ; 0xf8df3 LB 0x24d
     13510ahci_port_init_:                             ; 0xf8db0 LB 0x24d
    1354513511    push bp                                   ; 55
    1354613512    mov bp, sp                                ; 89 e5
     
    1355213518    mov word [bp-00ah], dx                    ; 89 56 f6
    1355313519    mov byte [bp-008h], bl                    ; 88 5e f8
    13554     call 08c73h                               ; e8 6c fe
     13520    call 08c30h                               ; e8 6c fe
    1355513521    mov al, bl                                ; 88 d8
    1355613522    xor ah, ah                                ; 30 e4
     
    1360113567    xchg dx, ax                               ; 92
    1360213568    test ax, 0c011h                           ; a9 11 c0
    13603     je short 08e78h                           ; 74 04
     13569    je short 08e35h                           ; 74 04
    1360413570    mov AL, strict byte 001h                  ; b0 01
    13605     jmp short 08e7ah                          ; eb 02
     13571    jmp short 08e37h                          ; eb 02
    1360613572    xor al, al                                ; 30 c0
    1360713573    cmp AL, strict byte 001h                  ; 3c 01
    13608     je short 08e43h                           ; 74 c5
     13574    je short 08e00h                           ; 74 c5
    1360913575    mov cx, strict word 00020h                ; b9 20 00
    1361013576    xor bx, bx                                ; 31 db
    1361113577    mov ax, si                                ; 89 f0
    1361213578    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13613     call 0a130h                               ; e8 a5 12
     13579    call 0a0f0h                               ; e8 a8 12
    1361413580    lea ax, [si+00080h]                       ; 8d 84 80 00
    1361513581    mov cx, strict word 00040h                ; b9 40 00
    1361613582    xor bx, bx                                ; 31 db
    1361713583    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13618     call 0a130h                               ; e8 96 12
     13584    call 0a0f0h                               ; e8 99 12
    1361913585    lea di, [si+00200h]                       ; 8d bc 00 02
    1362013586    mov cx, strict word 00060h                ; b9 60 00
     
    1362213588    mov ax, di                                ; 89 f8
    1362313589    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13624     call 0a130h                               ; e8 85 12
     13590    call 0a0f0h                               ; e8 88 12
    1362513591    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1362613592    xor bh, bh                                ; 30 ff
     
    1364013606    mov ax, di                                ; 89 f8
    1364113607    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13642     call 08898h                               ; e8 bf f9
     13608    call 08855h                               ; e8 bf f9
    1364313609    mov es, [bp-00ah]                         ; 8e 46 f6
    1364413610    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1368513651    mov ax, si                                ; 89 f0
    1368613652    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13687     call 08898h                               ; e8 53 f9
     13653    call 08855h                               ; e8 53 f9
    1368813654    mov es, [bp-00ah]                         ; 8e 46 f6
    1368913655    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1379013756    pop bp                                    ; 5d
    1379113757    retn                                      ; c3
    13792 @ahci_read_sectors:                          ; 0xf9040 LB 0xa8
     13758@ahci_read_sectors:                          ; 0xf8ffd LB 0xa8
    1379313759    push bp                                   ; 55
    1379413760    mov bp, sp                                ; 89 e5
     
    1380113767    sub bx, strict byte 0000ch                ; 83 eb 0c
    1380213768    cmp bx, strict byte 00004h                ; 83 fb 04
    13803     jbe short 09066h                          ; 76 0f
     13769    jbe short 09023h                          ; 76 0f
    1380413770    push bx                                   ; 53
    13805     push 00cc4h                               ; 68 c4 0c
    13806     push 00cd6h                               ; 68 d6 0c
     13771    push 00c62h                               ; 68 62 0c
     13772    push 00c74h                               ; 68 74 0c
    1380713773    push strict byte 00007h                   ; 6a 07
    13808     call 01966h                               ; e8 03 89
     13774    call 01966h                               ; e8 46 89
    1380913775    add sp, strict byte 00008h                ; 83 c4 08
    1381013776    xor di, di                                ; 31 ff
     
    1382113787    mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
    1382213788    xor ax, ax                                ; 31 c0
    13823     call 08df3h                               ; e8 60 fd
     13789    call 08db0h                               ; e8 60 fd
    1382413790    mov bx, strict word 00025h                ; bb 25 00
    1382513791    mov ax, si                                ; 89 f0
    1382613792    mov dx, word [bp+006h]                    ; 8b 56 06
    13827     call 08a0ch                               ; e8 6e f9
     13793    call 089c9h                               ; e8 6e f9
    1382813794    mov word [bp-006h], ax                    ; 89 46 fa
    1382913795    mov es, [bp+006h]                         ; 8e 46 06
     
    1385413820    pop bp                                    ; 5d
    1385513821    retn 00004h                               ; c2 04 00
    13856 @ahci_write_sectors:                         ; 0xf90e8 LB 0x86
     13822@ahci_write_sectors:                         ; 0xf90a5 LB 0x86
    1385713823    push bp                                   ; 55
    1385813824    mov bp, sp                                ; 89 e5
     
    1386613832    sub dx, strict byte 0000ch                ; 83 ea 0c
    1386713833    cmp dx, strict byte 00004h                ; 83 fa 04
    13868     jbe short 09112h                          ; 76 0f
     13834    jbe short 090cfh                          ; 76 0f
    1386913835    push dx                                   ; 52
    13870     push 00cf5h                               ; 68 f5 0c
    13871     push 00cd6h                               ; 68 d6 0c
     13836    push 00c93h                               ; 68 93 0c
     13837    push 00c74h                               ; 68 74 0c
    1387213838    push strict byte 00007h                   ; 6a 07
    13873     call 01966h                               ; e8 57 88
     13839    call 01966h                               ; e8 9a 88
    1387413840    add sp, strict byte 00008h                ; 83 c4 08
    1387513841    xor bx, bx                                ; 31 db
     
    1388613852    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1388713853    xor ax, ax                                ; 31 c0
    13888     call 08df3h                               ; e8 b6 fc
     13854    call 08db0h                               ; e8 b6 fc
    1388913855    mov bx, strict word 00035h                ; bb 35 00
    1389013856    mov ax, si                                ; 89 f0
    1389113857    mov dx, cx                                ; 89 ca
    13892     call 08a0ch                               ; e8 c5 f8
     13858    call 089c9h                               ; e8 c5 f8
    1389313859    mov dx, ax                                ; 89 c2
    1389413860    mov es, cx                                ; 8e c1
     
    1390513871    pop bp                                    ; 5d
    1390613872    retn 00004h                               ; c2 04 00
    13907 ahci_cmd_packet_:                            ; 0xf916e LB 0x18a
     13873ahci_cmd_packet_:                            ; 0xf912b LB 0x18a
    1390813874    push bp                                   ; 55
    1390913875    mov bp, sp                                ; 89 e5
     
    1391713883    mov dx, strict word 0000eh                ; ba 0e 00
    1391813884    mov ax, strict word 00040h                ; b8 40 00
    13919     call 0166ch                               ; e8 e3 84
     13885    call 0166ch                               ; e8 26 85
    1392013886    mov si, 00122h                            ; be 22 01
    1392113887    mov word [bp-008h], ax                    ; 89 46 f8
    1392213888    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    13923     jne short 091b4h                          ; 75 1f
    13924     mov bx, 00e02h                            ; bb 02 0e
     13889    jne short 09171h                          ; 75 1f
     13890    mov bx, 00da6h                            ; bb a6 0d
    1392513891    mov cx, ds                                ; 8c d9
    1392613892    mov ax, strict word 00004h                ; b8 04 00
    13927     call 01923h                               ; e8 83 87
    13928     push 00d08h                               ; 68 08 0d
    13929     push 00d18h                               ; 68 18 0d
     13893    call 01923h                               ; e8 c6 87
     13894    push 00ca6h                               ; 68 a6 0c
     13895    push 00cb6h                               ; 68 b6 0c
    1393013896    push strict byte 00004h                   ; 6a 04
    13931     call 01966h                               ; e8 bb 87
     13897    call 01966h                               ; e8 fe 87
    1393213898    add sp, strict byte 00006h                ; 83 c4 06
    1393313899    mov ax, strict word 00001h                ; b8 01 00
    13934     jmp near 092efh                           ; e9 3b 01
     13900    jmp near 092ach                           ; e9 3b 01
    1393513901    test byte [bp+004h], 001h                 ; f6 46 04 01
    13936     jne short 091aeh                          ; 75 f4
     13902    jne short 0916bh                          ; 75 f4
    1393713903    mov ax, word [bp+006h]                    ; 8b 46 06
    1393813904    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1394013906    sal ax, 1                                 ; d1 e0
    1394113907    rcl dx, 1                                 ; d1 d2
    13942     loop 091c3h                               ; e2 fa
     13908    loop 09180h                               ; e2 fa
    1394313909    mov es, [bp-008h]                         ; 8e 46 f8
    1394413910    mov word [es:si], ax                      ; 26 89 04
     
    1395413920    mov dx, word [bp+008h]                    ; 8b 56 08
    1395513921    xor cx, cx                                ; 31 c9
    13956     call 0a0e0h                               ; e8 e4 0e
     13922    call 0a0a0h                               ; e8 e7 0e
    1395713923    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1395813924    xor di, di                                ; 31 ff
     
    1397313939    mov bx, ax                                ; 89 c3
    1397413940    xor al, al                                ; 30 c0
    13975     call 08df3h                               ; e8 b8 fb
     13941    call 08db0h                               ; e8 b8 fb
    1397613942    mov al, byte [bp-006h]                    ; 8a 46 fa
    1397713943    xor ah, ah                                ; 30 e4
     
    1398113947    mov ax, 000c0h                            ; b8 c0 00
    1398213948    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13983     call 0a140h                               ; e8 f0 0e
     13949    call 0a100h                               ; e8 f3 0e
    1398413950    mov es, [bp-008h]                         ; 8e 46 f8
    1398513951    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1398813954    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
    1398913955    test ax, ax                               ; 85 c0
    13990     je short 0928eh                           ; 74 27
     13956    je short 0924bh                           ; 74 27
    1399113957    dec ax                                    ; 48
    1399213958    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1400113967    mov ax, si                                ; 89 f0
    1400213968    mov dx, word [bp-008h]                    ; 8b 56 f8
    14003     call 08a0ch                               ; e8 73 f7
     13969    call 089c9h                               ; e8 73 f7
    1400413970    les bx, [bp-00eh]                         ; c4 5e f2
    1400513971    mov dx, word [es:bx+004h]                 ; 26 8b 57 04
     
    1402813994    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1402913995    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    14030     jne short 092edh                          ; 75 05
     13996    jne short 092aah                          ; 75 05
    1403113997    mov ax, strict word 00004h                ; b8 04 00
    14032     jmp short 092efh                          ; eb 02
     13998    jmp short 092ach                          ; eb 02
    1403313999    xor ax, ax                                ; 31 c0
    1403414000    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1403714003    pop bp                                    ; 5d
    1403814004    retn 0000ch                               ; c2 0c 00
    14039 ahci_port_detect_device_:                    ; 0xf92f8 LB 0x4e3
     14005ahci_port_detect_device_:                    ; 0xf92b5 LB 0x4e3
    1404014006    push bp                                   ; 55
    1404114007    mov bp, sp                                ; 89 e5
     
    1405014016    xor ch, ch                                ; 30 ed
    1405114017    mov bx, cx                                ; 89 cb
    14052     call 08df3h                               ; e8 e0 fa
     14018    call 08db0h                               ; e8 e0 fa
    1405314019    mov dx, strict word 0000eh                ; ba 0e 00
    1405414020    mov ax, strict word 00040h                ; b8 40 00
    14055     call 0166ch                               ; e8 50 83
     14021    call 0166ch                               ; e8 93 83
    1405614022    mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
    1405714023    mov word [bp-016h], ax                    ; 89 46 ea
     
    1412314089    mov bx, strict word 0000fh                ; bb 0f 00
    1412414090    xor cx, cx                                ; 31 c9
    14125     call 0887ch                               ; e8 b5 f4
     14091    call 08839h                               ; e8 b5 f4
    1412614092    test ax, ax                               ; 85 c0
    14127     jne short 093ceh                          ; 75 03
    14128     jmp near 097d3h                           ; e9 05 04
     14093    jne short 0938bh                          ; 75 03
     14094    jmp near 09790h                           ; e9 05 04
    1412914095    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1413014096    xor ah, ah                                ; 30 e4
     
    1415514121    mov bx, strict word 0000fh                ; bb 0f 00
    1415614122    xor cx, cx                                ; 31 c9
    14157     call 0887ch                               ; e8 67 f4
     14123    call 08839h                               ; e8 67 f4
    1415814124    cmp ax, strict word 00001h                ; 3d 01 00
    14159     je short 093ceh                           ; 74 b4
     14125    je short 0938bh                           ; 74 b4
    1416014126    push strict byte 00000h                   ; 6a 00
    1416114127    mov bx, strict word 0000fh                ; bb 0f 00
     
    1416314129    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1416414130    mov dx, di                                ; 89 fa
    14165     call 0887ch                               ; e8 53 f4
     14131    call 08839h                               ; e8 53 f4
    1416614132    cmp ax, strict word 00003h                ; 3d 03 00
    14167     jne short 093cbh                          ; 75 9d
     14133    jne short 09388h                          ; 75 9d
    1416814134    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1416914135    add ax, 00130h                            ; 05 30 01
     
    1419314159    mov byte [bp-008h], al                    ; 88 46 f8
    1419414160    cmp AL, strict byte 004h                  ; 3c 04
    14195     jc short 09478h                           ; 72 03
    14196     jmp near 097d3h                           ; e9 5b 03
     14161    jc short 09435h                           ; 72 03
     14162    jmp near 09790h                           ; e9 5b 03
    1419714163    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1419814164    add ax, 00118h                            ; 05 18 01
     
    1424414210    add cl, 00ch                              ; 80 c1 0c
    1424514211    test dx, dx                               ; 85 d2
    14246     jne short 0953eh                          ; 75 54
     14212    jne short 094fbh                          ; 75 54
    1424714213    cmp ax, 00101h                            ; 3d 01 01
    14248     jne short 0953eh                          ; 75 4f
     14214    jne short 094fbh                          ; 75 4f
    1424914215    mov es, [bp-016h]                         ; 8e 46 ea
    1425014216    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1426114227    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1426214228    mov dx, es                                ; 8c c2
    14263     call 08a0ch                               ; e8 dd f4
     14229    call 089c9h                               ; e8 dd f4
    1426414230    mov byte [bp-00ah], cl                    ; 88 4e f6
    1426514231    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14266     je short 09541h                           ; 74 08
     14232    je short 094feh                           ; 74 08
    1426714233    mov ax, strict word 00001h                ; b8 01 00
    14268     jmp short 09543h                          ; eb 05
    14269     jmp near 09711h                           ; e9 d0 01
     14234    jmp short 09500h                          ; eb 05
     14235    jmp near 096ceh                           ; e9 d0 01
    1427014236    xor ax, ax                                ; 31 c0
    1427114237    mov dl, al                                ; 88 c2
     
    1428314249    mov word [bp-01eh], ax                    ; 89 46 e2
    1428414250    cmp word [bp-014h], 00fffh                ; 81 7e ec ff 0f
    14285     jne short 09592h                          ; 75 1e
     14251    jne short 0954fh                          ; 75 1e
    1428614252    cmp di, strict byte 0ffffh                ; 83 ff ff
    14287     jne short 09592h                          ; 75 19
     14253    jne short 0954fh                          ; 75 19
    1428814254    mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
    1428914255    mov word [bp-01eh], ax                    ; 89 46 e2
     
    1432414290    mov al, byte [bp-008h]                    ; 8a 46 f8
    1432514291    cmp AL, strict byte 001h                  ; 3c 01
    14326     jc short 0960dh                           ; 72 0c
    14327     jbe short 09615h                          ; 76 12
     14292    jc short 095cah                           ; 72 0c
     14293    jbe short 095d2h                          ; 76 12
    1432814294    cmp AL, strict byte 003h                  ; 3c 03
    14329     je short 0961dh                           ; 74 16
     14295    je short 095dah                           ; 74 16
    1433014296    cmp AL, strict byte 002h                  ; 3c 02
    14331     je short 09619h                           ; 74 0e
    14332     jmp short 09665h                          ; eb 58
     14297    je short 095d6h                           ; 74 0e
     14298    jmp short 09622h                          ; eb 58
    1433314299    test al, al                               ; 84 c0
    14334     jne short 09665h                          ; 75 54
     14300    jne short 09622h                          ; 75 54
    1433514301    mov DL, strict byte 040h                  ; b2 40
    14336     jmp short 0961fh                          ; eb 0a
     14302    jmp short 095dch                          ; eb 0a
    1433714303    mov DL, strict byte 048h                  ; b2 48
    14338     jmp short 0961fh                          ; eb 06
     14304    jmp short 095dch                          ; eb 06
    1433914305    mov DL, strict byte 050h                  ; b2 50
    14340     jmp short 0961fh                          ; eb 02
     14306    jmp short 095dch                          ; eb 02
    1434114307    mov DL, strict byte 058h                  ; b2 58
    1434214308    mov bl, dl                                ; 88 d3
     
    1434414310    xor bh, bh                                ; 30 ff
    1434514311    mov ax, bx                                ; 89 d8
    14346     call 016ach                               ; e8 81 80
     14312    call 016ach                               ; e8 c4 80
    1434714313    test al, al                               ; 84 c0
    14348     je short 09665h                           ; 74 36
     14314    je short 09622h                           ; 74 36
    1434914315    mov al, dl                                ; 88 d0
    1435014316    db  0feh, 0c0h
    1435114317    ; inc al                                    ; fe c0
    1435214318    xor ah, ah                                ; 30 e4
    14353     call 016ach                               ; e8 74 80
     14319    call 016ach                               ; e8 b7 80
    1435414320    xor ah, ah                                ; 30 e4
    1435514321    mov cx, ax                                ; 89 c1
    1435614322    sal cx, 008h                              ; c1 e1 08
    1435714323    mov al, dl                                ; 88 d0
    14358     call 016ach                               ; e8 68 80
     14324    call 016ach                               ; e8 ab 80
    1435914325    xor ah, ah                                ; 30 e4
    1436014326    add ax, cx                                ; 01 c8
     
    1436314329    add AL, strict byte 002h                  ; 04 02
    1436414330    xor ah, ah                                ; 30 e4
    14365     call 016ach                               ; e8 58 80
     14331    call 016ach                               ; e8 9b 80
    1436614332    xor ah, ah                                ; 30 e4
    1436714333    mov word [bp-02ah], ax                    ; 89 46 d6
    1436814334    mov ax, bx                                ; 89 d8
    14369     call 016ach                               ; e8 4e 80
     14335    call 016ach                               ; e8 91 80
    1437014336    xor ah, ah                                ; 30 e4
    1437114337    mov word [bp-026h], ax                    ; 89 46 da
    14372     jmp short 09677h                          ; eb 12
     14338    jmp short 09634h                          ; eb 12
    1437314339    push word [bp-01eh]                       ; ff 76 e2
    1437414340    push word [bp-012h]                       ; ff 76 ee
     
    1437714343    mov dx, ss                                ; 8c d2
    1437814344    lea ax, [bp-02ah]                         ; 8d 46 d6
    14379     call 05a02h                               ; e8 8b c3
    14380     mov bx, 00e02h                            ; bb 02 0e
     14345    call 05a02h                               ; e8 ce c3
     14346    mov bx, 00da6h                            ; bb a6 0d
    1438114347    mov cx, ds                                ; 8c d9
    1438214348    mov ax, strict word 00004h                ; b8 04 00
    14383     call 01923h                               ; e8 a1 82
     14349    call 01923h                               ; e8 e4 82
    1438414350    push word [bp-01eh]                       ; ff 76 e2
    1438514351    push word [bp-012h]                       ; ff 76 ee
     
    1440014366    mov al, byte [bp-008h]                    ; 8a 46 f8
    1440114367    push ax                                   ; 50
    14402     push 00d38h                               ; 68 38 0d
     14368    push 00cd6h                               ; 68 d6 0c
    1440314369    push strict byte 00004h                   ; 6a 04
    14404     call 01966h                               ; e8 b3 82
     14370    call 01966h                               ; e8 f6 82
    1440514371    add sp, strict byte 0001ch                ; 83 c4 1c
    1440614372    mov al, byte [bp-00ah]                    ; 8a 46 f6
     
    1443314399    mov dx, strict word 00075h                ; ba 75 00
    1443414400    mov ax, strict word 00040h                ; b8 40 00
    14435     call 01650h                               ; e8 51 7f
     14401    call 01650h                               ; e8 94 7f
    1443614402    mov bl, al                                ; 88 c3
    1443714403    db  0feh, 0c3h
     
    1444014406    mov dx, strict word 00075h                ; ba 75 00
    1444114407    mov ax, strict word 00040h                ; b8 40 00
    14442     call 0165eh                               ; e8 50 7f
    14443     jmp near 097c2h                           ; e9 b1 00
     14408    call 0165eh                               ; e8 93 7f
     14409    jmp near 0977fh                           ; e9 b1 00
    1444414410    cmp dx, 0eb14h                            ; 81 fa 14 eb
    14445     jne short 0976bh                          ; 75 54
     14411    jne short 09728h                          ; 75 54
    1444614412    cmp ax, 00101h                            ; 3d 01 01
    14447     jne short 0976bh                          ; 75 4f
     14413    jne short 09728h                          ; 75 4f
    1444814414    mov es, [bp-016h]                         ; 8e 46 ea
    1444914415    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1446014426    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1446114427    mov dx, es                                ; 8c c2
    14462     call 08a0ch                               ; e8 b0 f2
     14428    call 089c9h                               ; e8 b0 f2
    1446314429    mov byte [bp-00ah], cl                    ; 88 4e f6
    1446414430    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14465     je short 0976dh                           ; 74 07
     14431    je short 0972ah                           ; 74 07
    1446614432    mov dx, strict word 00001h                ; ba 01 00
    14467     jmp short 0976fh                          ; eb 04
    14468     jmp short 097c2h                          ; eb 55
     14433    jmp short 0972ch                          ; eb 04
     14434    jmp short 0977fh                          ; eb 55
    1446914435    xor dx, dx                                ; 31 d2
    1447014436    mov bl, byte [bp-008h]                    ; 8a 5e f8
     
    1450514471    pop bp                                    ; 5d
    1450614472    retn                                      ; c3
    14507 ahci_mem_alloc_:                             ; 0xf97db LB 0x43
     14473ahci_mem_alloc_:                             ; 0xf9798 LB 0x43
    1450814474    push bp                                   ; 55
    1450914475    mov bp, sp                                ; 89 e5
     
    1451514481    mov dx, 00413h                            ; ba 13 04
    1451614482    xor ax, ax                                ; 31 c0
    14517     call 0166ch                               ; e8 81 7e
     14483    call 0166ch                               ; e8 c4 7e
    1451814484    test ax, ax                               ; 85 c0
    14519     je short 09814h                           ; 74 25
     14485    je short 097d1h                           ; 74 25
    1452014486    dec ax                                    ; 48
    1452114487    mov bx, ax                                ; 89 c3
     
    1452414490    sal ax, 1                                 ; d1 e0
    1452514491    rcl dx, 1                                 ; d1 d2
    14526     loop 097f7h                               ; e2 fa
     14492    loop 097b4h                               ; e2 fa
    1452714493    mov si, ax                                ; 89 c6
    1452814494    mov di, dx                                ; 89 d7
     
    1453014496    shr di, 1                                 ; d1 ef
    1453114497    rcr si, 1                                 ; d1 de
    14532     loop 09804h                               ; e2 fa
     14498    loop 097c1h                               ; e2 fa
    1453314499    mov dx, 00413h                            ; ba 13 04
    1453414500    xor ax, ax                                ; 31 c0
    14535     call 0167ah                               ; e8 68 7e
     14501    call 0167ah                               ; e8 ab 7e
    1453614502    mov ax, si                                ; 89 f0
    1453714503    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1454314509    pop bp                                    ; 5d
    1454414510    retn                                      ; c3
    14545 ahci_hba_init_:                              ; 0xf981e LB 0x16d
     14511ahci_hba_init_:                              ; 0xf97db LB 0x16d
    1454614512    push bp                                   ; 55
    1454714513    mov bp, sp                                ; 89 e5
     
    1455514521    mov dx, strict word 0000eh                ; ba 0e 00
    1455614522    mov ax, strict word 00040h                ; b8 40 00
    14557     call 0166ch                               ; e8 38 7e
     14523    call 0166ch                               ; e8 7b 7e
    1455814524    mov bx, 00122h                            ; bb 22 01
    1455914525    mov di, ax                                ; 89 c7
     
    1457214538    shr eax, 010h                             ; 66 c1 e8 10
    1457314539    xchg dx, ax                               ; 92
    14574     call 097dbh                               ; e8 83 ff
     14540    call 09798h                               ; e8 83 ff
    1457514541    mov word [bp-010h], ax                    ; 89 46 f0
    1457614542    test ax, ax                               ; 85 c0
    14577     jne short 09862h                          ; 75 03
    14578     jmp near 0996ah                           ; e9 08 01
     14543    jne short 0981fh                          ; 75 03
     14544    jmp near 09927h                           ; e9 08 01
    1457914545    mov ax, word [bp-010h]                    ; 8b 46 f0
    1458014546    mov es, di                                ; 8e c7
     
    1462614592    xchg dx, ax                               ; 92
    1462714593    test AL, strict byte 001h                 ; a8 01
    14628     jne short 098bch                          ; 75 de
     14594    jne short 09879h                          ; 75 de
    1462914595    xor ax, ax                                ; 31 c0
    1463014596    xor cx, cx                                ; 31 c9
     
    1464414610    mov bx, strict word 0001fh                ; bb 1f 00
    1464514611    xor cx, cx                                ; 31 c9
    14646     call 0887ch                               ; e8 7a ef
     14612    call 08839h                               ; e8 7a ef
    1464714613    db  0feh, 0c0h
    1464814614    ; inc al                                    ; fe c0
    1464914615    mov byte [bp-00ch], al                    ; 88 46 f4
    1465014616    mov byte [bp-00eh], 000h                  ; c6 46 f2 00
    14651     jmp short 0992eh                          ; eb 21
     14617    jmp short 098ebh                          ; eb 21
    1465214618    xor al, al                                ; 30 c0
    1465314619    test al, al                               ; 84 c0
    14654     je short 09925h                           ; 74 12
     14620    je short 098e2h                           ; 74 12
    1465514621    mov bl, byte [bp-00eh]                    ; 8a 5e f2
    1465614622    xor bh, bh                                ; 30 ff
    1465714623    xor ax, ax                                ; 31 c0
    1465814624    mov dx, word [bp-010h]                    ; 8b 56 f0
    14659     call 092f8h                               ; e8 d8 f9
     14625    call 092b5h                               ; e8 d8 f9
    1466014626    dec byte [bp-00ch]                        ; fe 4e f4
    14661     je short 09968h                           ; 74 43
     14627    je short 09925h                           ; 74 43
    1466214628    inc byte [bp-00eh]                        ; fe 46 f2
    1466314629    cmp byte [bp-00eh], 020h                  ; 80 7e f2 20
    14664     jnc short 09968h                          ; 73 3a
     14630    jnc short 09925h                          ; 73 3a
    1466514631    mov cl, byte [bp-00eh]                    ; 8a 4e f2
    1466614632    xor ch, ch                                ; 30 ed
    1466714633    mov bx, strict word 00001h                ; bb 01 00
    1466814634    xor di, di                                ; 31 ff
    14669     jcxz 09940h                               ; e3 06
     14635    jcxz 098fdh                               ; e3 06
    1467014636    sal bx, 1                                 ; d1 e3
    1467114637    rcl di, 1                                 ; d1 d7
    14672     loop 0993ah                               ; e2 fa
     14638    loop 098f7h                               ; e2 fa
    1467314639    mov ax, strict word 0000ch                ; b8 0c 00
    1467414640    xor cx, cx                                ; 31 c9
     
    1468614652    xchg dx, ax                               ; 92
    1468714653    test dx, di                               ; 85 fa
    14688     jne short 09964h                          ; 75 04
     14654    jne short 09921h                          ; 75 04
    1468914655    test ax, bx                               ; 85 d8
    14690     je short 0990dh                           ; 74 a9
     14656    je short 098cah                           ; 74 a9
    1469114657    mov AL, strict byte 001h                  ; b0 01
    14692     jmp short 0990fh                          ; eb a7
     14658    jmp short 098cch                          ; eb a7
    1469314659    xor ax, ax                                ; 31 c0
    1469414660    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1470014666    pop bp                                    ; 5d
    1470114667    retn                                      ; c3
    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
     14668    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 031h, 09ah, 00fh, 09ah, 015h, 09ah, 01bh, 09ah, 021h
     14669    db  09ah, 027h, 09ah, 02dh, 09ah, 031h, 09ah
     14670_ahci_init:                                  ; 0xf9948 LB 0x13a
    1470514671    push bp                                   ; 55
    1470614672    mov bp, sp                                ; 89 e5
     
    1471014676    mov ax, 00601h                            ; b8 01 06
    1471114677    mov dx, strict word 00001h                ; ba 01 00
    14712     call 09ee0h                               ; e8 44 05
     14678    call 09e9dh                               ; e8 44 05
    1471314679    mov dx, ax                                ; 89 c2
    1471414680    cmp ax, strict word 0ffffh                ; 3d ff ff
    14715     je short 099efh                           ; 74 4c
     14681    je short 099ach                           ; 74 4c
    1471614682    xor al, al                                ; 30 c0
    1471714683    shr ax, 008h                              ; c1 e8 08
     
    1472114687    xor ah, ah                                ; 30 e4
    1472214688    mov bx, strict word 00034h                ; bb 34 00
    14723     call 09f0bh                               ; e8 53 05
     14689    call 09ec8h                               ; e8 53 05
    1472414690    mov cl, al                                ; 88 c1
    1472514691    test cl, cl                               ; 84 c9
    14726     je short 099f2h                           ; 74 34
     14692    je short 099afh                           ; 74 34
    1472714693    mov bl, cl                                ; 88 cb
    1472814694    xor bh, bh                                ; 30 ff
     
    1473514701    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1473614702    mov ax, word [bp-014h]                    ; 8b 46 ec
    14737     call 09f0bh                               ; e8 2e 05
     14703    call 09ec8h                               ; e8 2e 05
    1473814704    cmp AL, strict byte 012h                  ; 3c 12
    14739     je short 099f2h                           ; 74 11
     14705    je short 099afh                           ; 74 11
    1474014706    mov bl, cl                                ; 88 cb
    1474114707    db  0feh, 0c3h
     
    1474414710    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1474514711    mov ax, word [bp-014h]                    ; 8b 46 ec
    14746     jmp short 099b5h                          ; eb c6
    14747     jmp near 09abeh                           ; e9 cc 00
     14712    jmp short 09972h                          ; eb c6
     14713    jmp near 09a7bh                           ; e9 cc 00
    1474814714    test cl, cl                               ; 84 c9
    14749     je short 099efh                           ; 74 f9
     14715    je short 099ach                           ; 74 f9
    1475014716    add cl, 002h                              ; 80 c1 02
    1475114717    mov bl, cl                                ; 88 cb
     
    1475914725    mov dx, word [bp-012h]                    ; 8b 56 ee
    1476014726    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14761     call 09f0bh                               ; e8 f3 04
     14727    call 09ec8h                               ; e8 f3 04
    1476214728    cmp AL, strict byte 010h                  ; 3c 10
    14763     jne short 099efh                          ; 75 d3
     14729    jne short 099ach                          ; 75 d3
    1476414730    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1476514731    mov bl, cl                                ; 88 cb
     
    1476814734    mov dx, word [bp-012h]                    ; 8b 56 ee
    1476914735    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14770     call 09f39h                               ; e8 09 05
     14736    call 09ef6h                               ; e8 09 05
    1477114737    mov dx, ax                                ; 89 c2
    1477214738    and ax, strict word 0000fh                ; 25 0f 00
    1477314739    sub ax, strict word 00004h                ; 2d 04 00
    1477414740    cmp ax, strict word 0000bh                ; 3d 0b 00
    14775     jnbe short 09a74h                         ; 77 37
     14741    jnbe short 09a31h                         ; 77 37
    1477614742    push CS                                   ; 0e
    1477714743    pop ES                                    ; 07
    1477814744    mov cx, strict word 00008h                ; b9 08 00
    14779     mov di, 09974h                            ; bf 74 99
     14745    mov di, 09931h                            ; bf 31 99
    1478014746    repne scasb                               ; f2 ae
    1478114747    sal cx, 1                                 ; d1 e1
    1478214748    mov di, cx                                ; 89 cf
    14783     mov ax, word [cs:di-06685h]               ; 2e 8b 85 7b 99
     14749    mov ax, word [cs:di-066c8h]               ; 2e 8b 85 38 99
    1478414750    jmp ax                                    ; ff e0
    1478514751    mov byte [bp-008h], 010h                  ; c6 46 f8 10
    14786     jmp short 09a74h                          ; eb 1c
     14752    jmp short 09a31h                          ; eb 1c
    1478714753    mov byte [bp-008h], 014h                  ; c6 46 f8 14
    14788     jmp short 09a74h                          ; eb 16
     14754    jmp short 09a31h                          ; eb 16
    1478914755    mov byte [bp-008h], 018h                  ; c6 46 f8 18
    14790     jmp short 09a74h                          ; eb 10
     14756    jmp short 09a31h                          ; eb 10
    1479114757    mov byte [bp-008h], 01ch                  ; c6 46 f8 1c
    14792     jmp short 09a74h                          ; eb 0a
     14758    jmp short 09a31h                          ; eb 0a
    1479314759    mov byte [bp-008h], 020h                  ; c6 46 f8 20
    14794     jmp short 09a74h                          ; eb 04
     14760    jmp short 09a31h                          ; eb 04
    1479514761    mov byte [bp-008h], 024h                  ; c6 46 f8 24
    1479614762    mov si, dx                                ; 89 d6
     
    1479914765    mov al, byte [bp-008h]                    ; 8a 46 f8
    1480014766    test al, al                               ; 84 c0
    14801     je short 09abeh                           ; 74 3b
     14767    je short 09a7bh                           ; 74 3b
    1480214768    mov bl, al                                ; 88 c3
    1480314769    xor bh, bh                                ; 30 ff
     
    1481014776    mov dx, word [bp-010h]                    ; 8b 56 f0
    1481114777    mov ax, word [bp-016h]                    ; 8b 46 ea
    14812     call 09f63h                               ; e8 c1 04
     14778    call 09f20h                               ; e8 c1 04
    1481314779    test AL, strict byte 001h                 ; a8 01
    14814     je short 09abeh                           ; 74 18
     14780    je short 09a7bh                           ; 74 18
    1481514781    and AL, strict byte 0f0h                  ; 24 f0
    1481614782    add si, ax                                ; 01 c6
     
    1481914785    mov dx, word [bp-010h]                    ; 8b 56 f0
    1482014786    mov ax, word [bp-016h]                    ; 8b 46 ea
    14821     call 09fb1h                               ; e8 f8 04
     14787    call 09f6eh                               ; e8 f8 04
    1482214788    mov ax, si                                ; 89 f0
    14823     call 0981eh                               ; e8 60 fd
     14789    call 097dbh                               ; e8 60 fd
    1482414790    lea sp, [bp-004h]                         ; 8d 66 fc
    1482514791    pop di                                    ; 5f
     
    1482714793    pop bp                                    ; 5d
    1482814794    retn                                      ; c3
    14829 apm_out_str_:                                ; 0xf9ac5 LB 0x39
     14795apm_out_str_:                                ; 0xf9a82 LB 0x39
    1483014796    push bp                                   ; 55
    1483114797    mov bp, sp                                ; 89 e5
     
    1483314799    mov bx, ax                                ; 89 c3
    1483414800    cmp byte [bx], 000h                       ; 80 3f 00
    14835     je short 09adah                           ; 74 0a
     14801    je short 09a97h                           ; 74 0a
    1483614802    mov al, byte [bx]                         ; 8a 07
    1483714803    out DX, AL                                ; ee
     
    1484014806    db  00ah, 0c0h
    1484114807    ; or al, al                                 ; 0a c0
    14842     jne short 09ad2h                          ; 75 f8
     14808    jne short 09a8fh                          ; 75 f8
    1484314809    lea sp, [bp-002h]                         ; 8d 66 fe
    1484414810    pop bx                                    ; 5b
    1484514811    pop bp                                    ; 5d
    1484614812    retn                                      ; c3
    14847     pop DS                                    ; 1f
     14813    fcomp qword [bp+si-0649ch]                ; dc 9a 64 9b
     14814    out DX, AL                                ; ee
     14815    call far 09b64h:09b09h                    ; 9a 09 9b 64 9b
     14816    xor AL, strict byte 09bh                  ; 34 9b
     14817    db  064h, 09bh
     14818    ; fs wait                                   ; 64 9b
     14819    push strict byte 0ff9bh                   ; 6a 9b
     14820    cmp word [bp+di-064c7h], bx               ; 39 9b 39 9b
     14821    cmp word [bp+di-06457h], bx               ; 39 9b a9 9b
     14822    cmp word [bp+di-064c7h], bx               ; 39 9b 39 9b
     14823    db  0a2h
    1484814824    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
     14825_apm_function:                               ; 0xf9abb LB 0xf3
    1486814826    push bp                                   ; 55
    1486914827    mov bp, sp                                ; 89 e5
     
    1487314831    xor ah, ah                                ; 30 e4
    1487414832    cmp ax, strict word 0000eh                ; 3d 0e 00
    14875     jnbe short 09b7ch                         ; 77 6c
     14833    jnbe short 09b39h                         ; 77 6c
    1487614834    mov bx, ax                                ; 89 c3
    1487714835    add bx, ax                                ; 01 c3
    1487814836    mov dx, word [bp+018h]                    ; 8b 56 18
    1487914837    or dl, 001h                               ; 80 ca 01
    14880     jmp word [cs:bx-06520h]                   ; 2e ff a7 e0 9a
     14838    jmp word [cs:bx-06563h]                   ; 2e ff a7 9d 9a
    1488114839    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1488214840    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1488314841    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14884     jmp near 09ba7h                           ; e9 76 00
     14842    jmp near 09b64h                           ; e9 76 00
    1488514843    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14886     mov word [bp+00ch], 0a1b4h                ; c7 46 0c b4 a1
     14844    mov word [bp+00ch], 0a174h                ; c7 46 0c 74 a1
    1488714845    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1488814846    mov ax, strict word 0fff0h                ; b8 f0 ff
    1488914847    mov word [bp+006h], ax                    ; 89 46 06
    1489014848    mov word [bp+004h], ax                    ; 89 46 04
    14891     jmp near 09ba7h                           ; e9 5b 00
     14849    jmp near 09b64h                           ; e9 5b 00
    1489214850    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1489314851    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1490214860    mov si, ax                                ; 89 c6
    1490314861    sal esi, 010h                             ; 66 c1 e6 10
    14904     jmp near 09ba7h                           ; e9 30 00
     14862    jmp near 09b64h                           ; e9 30 00
    1490514863    sti                                       ; fb
    1490614864    hlt                                       ; f4
    14907     jmp near 09ba7h                           ; e9 2b 00
    14908     mov bx, 00e02h                            ; bb 02 0e
     14865    jmp near 09b64h                           ; e9 2b 00
     14866    mov bx, 00da6h                            ; bb a6 0d
    1490914867    mov cx, ds                                ; 8c d9
    1491014868    mov ax, strict word 00004h                ; b8 04 00
    14911     call 01923h                               ; e8 9c 7d
     14869    call 01923h                               ; e8 df 7d
    1491214870    push word [bp+00ch]                       ; ff 76 0c
    1491314871    push word [bp+012h]                       ; ff 76 12
    14914     push 00d8bh                               ; 68 8b 0d
     14872    push 00d29h                               ; 68 29 0d
    1491514873    push strict byte 00004h                   ; 6a 04
    14916     call 01966h                               ; e8 d1 7d
     14874    call 01966h                               ; e8 14 7e
    1491714875    add sp, strict byte 00008h                ; 83 c4 08
    1491814876    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1492614884    retn                                      ; c3
    1492714885    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14928     je short 09bd2h                           ; 74 1f
     14886    je short 09b8fh                           ; 74 1f
    1492914887    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14930     je short 09bcah                           ; 74 11
     14888    je short 09b87h                           ; 74 11
    1493114889    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14932     jne short 09bdah                          ; 75 1b
     14890    jne short 09b97h                          ; 75 1b
    1493314891    mov dx, 0040fh                            ; ba 0f 04
    14934     mov ax, 00d72h                            ; b8 72 0d
    14935     call 09ac5h                               ; e8 fd fe
    14936     jmp short 09ba7h                          ; eb dd
     14892    mov ax, 00d10h                            ; b8 10 0d
     14893    call 09a82h                               ; e8 fd fe
     14894    jmp short 09b64h                          ; eb dd
    1493714895    mov dx, 0040fh                            ; ba 0f 04
    14938     mov ax, 00d7ah                            ; b8 7a 0d
    14939     jmp short 09bc5h                          ; eb f3
     14896    mov ax, 00d18h                            ; b8 18 0d
     14897    jmp short 09b82h                          ; eb f3
    1494014898    mov dx, 0040fh                            ; ba 0f 04
    14941     mov ax, 00d82h                            ; b8 82 0d
    14942     jmp short 09bc5h                          ; eb eb
     14899    mov ax, 00d20h                            ; b8 20 0d
     14900    jmp short 09b82h                          ; eb eb
    1494314901    or ah, 00ah                               ; 80 cc 0a
    1494414902    mov word [bp+012h], ax                    ; 89 46 12
    1494514903    mov word [bp+018h], dx                    ; 89 56 18
    14946     jmp short 09ba7h                          ; eb c2
     14904    jmp short 09b64h                          ; eb c2
    1494714905    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14948     jmp short 09ba7h                          ; eb bb
     14906    jmp short 09b64h                          ; eb bb
    1494914907    or ah, 080h                               ; 80 cc 80
    14950     jmp short 09bddh                          ; eb ec
    14951 pci16_select_reg_:                           ; 0xf9bf1 LB 0x24
     14908    jmp short 09b9ah                          ; eb ec
     14909pci16_select_reg_:                           ; 0xf9bae LB 0x24
    1495214910    push bp                                   ; 55
    1495314911    mov bp, sp                                ; 89 e5
     
    1496614924    pop bp                                    ; 5d
    1496714925    retn                                      ; c3
    14968 pci16_find_device_:                          ; 0xf9c15 LB 0xf9
     14926pci16_find_device_:                          ; 0xf9bd2 LB 0xf9
    1496914927    push bp                                   ; 55
    1497014928    mov bp, sp                                ; 89 e5
     
    1498014938    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1498114939    test bl, 007h                             ; f6 c3 07
    14982     jne short 09c5dh                          ; 75 2d
     14940    jne short 09c1ah                          ; 75 2d
    1498314941    mov dx, strict word 0000eh                ; ba 0e 00
    1498414942    mov ax, bx                                ; 89 d8
    14985     call 09bf1h                               ; e8 b9 ff
     14943    call 09baeh                               ; e8 b9 ff
    1498614944    mov dx, 00cfeh                            ; ba fe 0c
    1498714945    in AL, DX                                 ; ec
     
    1499014948    mov byte [bp-006h], al                    ; 88 46 fa
    1499114949    cmp AL, strict byte 0ffh                  ; 3c ff
    14992     jne short 09c4bh                          ; 75 06
     14950    jne short 09c08h                          ; 75 06
    1499314951    add bx, strict byte 00008h                ; 83 c3 08
    14994     jmp near 09cdeh                           ; e9 93 00
     14952    jmp near 09c9bh                           ; e9 93 00
    1499514953    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14996     je short 09c58h                           ; 74 07
     14954    je short 09c15h                           ; 74 07
    1499714955    mov word [bp-010h], strict word 00001h    ; c7 46 f0 01 00
    14998     jmp short 09c5dh                          ; eb 05
     14956    jmp short 09c1ah                          ; eb 05
    1499914957    mov word [bp-010h], strict word 00008h    ; c7 46 f0 08 00
    1500014958    mov al, byte [bp-006h]                    ; 8a 46 fa
    1500114959    and AL, strict byte 007h                  ; 24 07
    1500214960    cmp AL, strict byte 001h                  ; 3c 01
    15003     jne short 09c85h                          ; 75 1f
     14961    jne short 09c42h                          ; 75 1f
    1500414962    mov ax, bx                                ; 89 d8
    1500514963    shr ax, 008h                              ; c1 e8 08
    1500614964    test ax, ax                               ; 85 c0
    15007     jne short 09c85h                          ; 75 16
     14965    jne short 09c42h                          ; 75 16
    1500814966    mov dx, strict word 0001ah                ; ba 1a 00
    1500914967    mov ax, bx                                ; 89 d8
    15010     call 09bf1h                               ; e8 7a ff
     14968    call 09baeh                               ; e8 7a ff
    1501114969    mov dx, 00cfeh                            ; ba fe 0c
    1501214970    in AL, DX                                 ; ec
     
    1501414972    ; sub ah, ah                                ; 2a e4
    1501514973    cmp al, byte [bp-008h]                    ; 3a 46 f8
    15016     jbe short 09c85h                          ; 76 03
     14974    jbe short 09c42h                          ; 76 03
    1501714975    mov byte [bp-008h], al                    ; 88 46 f8
    1501814976    test di, di                               ; 85 ff
    15019     je short 09c8eh                           ; 74 05
     14977    je short 09c4bh                           ; 74 05
    1502014978    mov dx, strict word 00008h                ; ba 08 00
    15021     jmp short 09c90h                          ; eb 02
     14979    jmp short 09c4dh                          ; eb 02
    1502214980    xor dx, dx                                ; 31 d2
    1502314981    mov ax, bx                                ; 89 d8
    15024     call 09bf1h                               ; e8 5c ff
     14982    call 09baeh                               ; e8 5c ff
    1502514983    mov dx, 00cfch                            ; ba fc 0c
    1502614984    in eax, DX                                ; 66 ed
     
    1503314991    mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
    1503414992    test di, di                               ; 85 ff
    15035     je short 09cbfh                           ; 74 0f
     14993    je short 09c7ch                           ; 74 0f
    1503614994    mov cx, strict word 00008h                ; b9 08 00
    1503714995    shr dx, 1                                 ; d1 ea
    1503814996    rcr ax, 1                                 ; d1 d8
    15039     loop 09cb3h                               ; e2 fa
     14997    loop 09c70h                               ; e2 fa
    1504014998    mov word [bp-00ah], ax                    ; 89 46 f6
    1504114999    mov word [bp-00ch], dx                    ; 89 56 f4
    1504215000    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1504315001    cmp ax, word [bp-014h]                    ; 3b 46 ec
    15044     jne short 09ccfh                          ; 75 08
     15002    jne short 09c8ch                          ; 75 08
    1504515003    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1504615004    cmp ax, word [bp-012h]                    ; 3b 46 ee
    15047     je short 09cd5h                           ; 74 06
     15005    je short 09c92h                           ; 74 06
    1504815006    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    15049     je short 09cdbh                           ; 74 06
     15007    je short 09c98h                           ; 74 06
    1505015008    dec si                                    ; 4e
    1505115009    cmp si, strict byte 0ffffh                ; 83 fe ff
    15052     je short 09cefh                           ; 74 14
     15010    je short 09cach                           ; 74 14
    1505315011    add bx, word [bp-010h]                    ; 03 5e f0
    1505415012    mov dx, bx                                ; 89 da
     
    1505715015    xor ah, ah                                ; 30 e4
    1505815016    cmp dx, ax                                ; 39 c2
    15059     jnbe short 09cefh                         ; 77 03
    15060     jmp near 09c2bh                           ; e9 3c ff
     15017    jnbe short 09cach                         ; 77 03
     15018    jmp near 09be8h                           ; e9 3c ff
    1506115019    cmp si, strict byte 0ffffh                ; 83 fe ff
    15062     jne short 09cf8h                          ; 75 04
     15020    jne short 09cb5h                          ; 75 04
    1506315021    mov ax, bx                                ; 89 d8
    15064     jmp short 09cfbh                          ; eb 03
     15022    jmp short 09cb8h                          ; eb 03
    1506515023    mov ax, strict word 0ffffh                ; b8 ff ff
    1506615024    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1506915027    pop bp                                    ; 5d
    1507015028    retn                                      ; c3
    15071     out DX, ax                                ; ef
     15029    lodsb                                     ; ac
    1507215030    popfw                                     ; 9d
    15073     or byte [bp-061e6h], bl                   ; 08 9e 1a 9e
    15074     db  02eh, 09eh
    15075     ; cs sahf                                   ; 2e 9e
    15076     inc ax                                    ; 40
     15031    lds bx, [di-06229h]                       ; c5 9d d7 9d
     15032    jmp short 09c64h                          ; eb 9d
     15033    std                                       ; fd
     15034    popfw                                     ; 9d
     15035    db  010h
    1507715036    sahf                                      ; 9e
    15078     push bx                                   ; 53
    15079     sahf                                      ; 9e
    15080 _pci16_function:                             ; 0xf9d0e LB 0x1d2
     15037_pci16_function:                             ; 0xf9ccb LB 0x1d2
    1508115038    push bp                                   ; 55
    1508215039    mov bp, sp                                ; 89 e5
     
    1509215049    xor ah, ah                                ; 30 e4
    1509315050    cmp bx, strict byte 00003h                ; 83 fb 03
    15094     jc short 09d40h                           ; 72 13
    15095     jbe short 09d93h                          ; 76 64
     15051    jc short 09cfdh                           ; 72 13
     15052    jbe short 09d50h                          ; 76 64
    1509615053    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15097     je short 09d9bh                           ; 74 67
     15054    je short 09d58h                           ; 74 67
    1509815055    cmp bx, strict byte 00008h                ; 83 fb 08
    15099     jc short 09d4ah                           ; 72 11
     15056    jc short 09d07h                           ; 72 11
    1510015057    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15101     jbe short 09d9eh                          ; 76 60
    15102     jmp short 09d4ah                          ; eb 0a
     15058    jbe short 09d5bh                          ; 76 60
     15059    jmp short 09d07h                          ; eb 0a
    1510315060    cmp bx, strict byte 00002h                ; 83 fb 02
    15104     je short 09d69h                           ; 74 24
     15061    je short 09d26h                           ; 74 24
    1510515062    cmp bx, strict byte 00001h                ; 83 fb 01
    15106     je short 09d4dh                           ; 74 03
    15107     jmp near 09each                           ; e9 5f 01
     15063    je short 09d0ah                           ; 74 03
     15064    jmp near 09e69h                           ; e9 5f 01
    1510815065    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1510915066    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1511115068    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1511215069    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15113     jmp near 09ed9h                           ; e9 70 01
     15070    jmp near 09e96h                           ; e9 70 01
    1511415071    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15115     jne short 09d75h                          ; 75 06
     15072    jne short 09d32h                          ; 75 06
    1511615073    or ah, 083h                               ; 80 cc 83
    15117     jmp near 09ed2h                           ; e9 5d 01
     15074    jmp near 09e8fh                           ; e9 5d 01
    1511815075    mov bx, word [bp+008h]                    ; 8b 5e 08
    1511915076    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1512015077    mov ax, word [bp+018h]                    ; 8b 46 18
    1512115078    xor cx, cx                                ; 31 c9
    15122     call 09c15h                               ; e8 92 fe
     15079    call 09bd2h                               ; e8 92 fe
    1512315080    cmp ax, strict word 0ffffh                ; 3d ff ff
    15124     jne short 09d95h                          ; 75 0d
     15081    jne short 09d52h                          ; 75 0d
    1512515082    mov ax, word [bp+020h]                    ; 8b 46 20
    1512615083    xor ah, ah                                ; 30 e4
    1512715084    or ah, 086h                               ; 80 cc 86
    15128     jmp near 09ed2h                           ; e9 3f 01
    15129     jmp short 09da0h                          ; eb 0b
     15085    jmp near 09e8fh                           ; e9 3f 01
     15086    jmp short 09d5dh                          ; eb 0b
    1513015087    mov word [bp+014h], ax                    ; 89 46 14
    15131     jmp near 09ed9h                           ; e9 3e 01
    15132     jmp near 09e67h                           ; e9 c9 00
    15133     jmp short 09dc5h                          ; eb 25
     15088    jmp near 09e96h                           ; e9 3e 01
     15089    jmp near 09e24h                           ; e9 c9 00
     15090    jmp short 09d82h                          ; eb 25
    1513415091    mov bx, word [bp+008h]                    ; 8b 5e 08
    1513515092    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1513615093    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1513715094    mov cx, strict word 00001h                ; b9 01 00
    15138     call 09c15h                               ; e8 66 fe
     15095    call 09bd2h                               ; e8 66 fe
    1513915096    cmp ax, strict word 0ffffh                ; 3d ff ff
    15140     jne short 09dbfh                          ; 75 0b
     15097    jne short 09d7ch                          ; 75 0b
    1514115098    mov ax, word [bp+020h]                    ; 8b 46 20
    1514215099    xor ah, ah                                ; 30 e4
    1514315100    or ah, 086h                               ; 80 cc 86
    15144     jmp near 09ed2h                           ; e9 13 01
     15101    jmp near 09e8fh                           ; e9 13 01
    1514515102    mov word [bp+014h], ax                    ; 89 46 14
    15146     jmp near 09ed9h                           ; e9 14 01
     15103    jmp near 09e96h                           ; e9 14 01
    1514715104    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15148     jc short 09dd2h                           ; 72 06
     15105    jc short 09d8fh                           ; 72 06
    1514915106    or ah, 087h                               ; 80 cc 87
    15150     jmp near 09ed2h                           ; e9 00 01
     15107    jmp near 09e8fh                           ; e9 00 01
    1515115108    mov dx, word [bp+004h]                    ; 8b 56 04
    1515215109    mov ax, word [bp+014h]                    ; 8b 46 14
    15153     call 09bf1h                               ; e8 16 fe
     15110    call 09baeh                               ; e8 16 fe
    1515415111    mov bx, word [bp+020h]                    ; 8b 5e 20
    1515515112    xor bh, bh                                ; 30 ff
    1515615113    sub bx, strict byte 00008h                ; 83 eb 08
    1515715114    cmp bx, strict byte 00005h                ; 83 fb 05
    15158     jnbe short 09e50h                         ; 77 68
     15115    jnbe short 09e0dh                         ; 77 68
    1515915116    add bx, bx                                ; 01 db
    15160     jmp word [cs:bx-062feh]                   ; 2e ff a7 02 9d
     15117    jmp word [cs:bx-06341h]                   ; 2e ff a7 bf 9c
    1516115118    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1516215119    xor bl, bl                                ; 30 db
     
    1516915126    or bx, ax                                 ; 09 c3
    1517015127    mov word [bp+01ch], bx                    ; 89 5e 1c
    15171     jmp short 09e50h                          ; eb 48
     15128    jmp short 09e0dh                          ; eb 48
    1517215129    mov dx, word [bp+004h]                    ; 8b 56 04
    1517315130    xor dh, dh                                ; 30 f6
     
    1517615133    in ax, DX                                 ; ed
    1517715134    mov word [bp+01ch], ax                    ; 89 46 1c
    15178     jmp short 09e50h                          ; eb 36
     15135    jmp short 09e0dh                          ; eb 36
    1517915136    mov dx, 00cfch                            ; ba fc 0c
    1518015137    in eax, DX                                ; 66 ed
     
    1518515142    mov word [bp+01ch], ax                    ; 89 46 1c
    1518615143    mov word [bp+01eh], dx                    ; 89 56 1e
    15187     jmp short 09e50h                          ; eb 22
     15144    jmp short 09e0dh                          ; eb 22
    1518815145    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1518915146    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1519215149    add dx, 00cfch                            ; 81 c2 fc 0c
    1519315150    out DX, AL                                ; ee
    15194     jmp short 09e50h                          ; eb 10
     15151    jmp short 09e0dh                          ; eb 10
    1519515152    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1519615153    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1519915156    add dx, 00cfch                            ; 81 c2 fc 0c
    1520015157    out DX, ax                                ; ef
    15201     jmp near 09ed9h                           ; e9 86 00
     15158    jmp near 09e96h                           ; e9 86 00
    1520215159    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1520315160    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1520815165    ; mov ax, cx                                ; 8b c1
    1520915166    out DX, eax                               ; 66 ef
    15210     jmp short 09ed9h                          ; eb 72
     15167    jmp short 09e96h                          ; eb 72
    1521115168    mov bx, word [bp+004h]                    ; 8b 5e 04
    1521215169    mov es, [bp+026h]                         ; 8e 46 26
     
    1521515172    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1521615173    cmp cx, word [es:bx]                      ; 26 3b 0f
    15217     jbe short 09e8dh                          ; 76 11
     15174    jbe short 09e4ah                          ; 76 11
    1521815175    mov ax, word [bp+020h]                    ; 8b 46 20
    1521915176    xor ah, ah                                ; 30 e4
     
    1522115178    mov word [bp+020h], ax                    ; 89 46 20
    1522215179    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15223     jmp short 09ea1h                          ; eb 14
     15180    jmp short 09e5eh                          ; eb 14
    1522415181    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1522515182    mov si, 0f1a0h                            ; be a0 f1
     
    1523315190    les bx, [bp-008h]                         ; c4 5e f8
    1523415191    mov word [es:bx], ax                      ; 26 89 07
    15235     jmp short 09ed9h                          ; eb 2d
    15236     mov bx, 00e02h                            ; bb 02 0e
     15192    jmp short 09e96h                          ; eb 2d
     15193    mov bx, 00da6h                            ; bb a6 0d
    1523715194    mov cx, ds                                ; 8c d9
    1523815195    mov ax, strict word 00004h                ; b8 04 00
    15239     call 01923h                               ; e8 6c 7a
     15196    call 01923h                               ; e8 af 7a
    1524015197    mov ax, word [bp+014h]                    ; 8b 46 14
    1524115198    push ax                                   ; 50
    1524215199    mov ax, word [bp+020h]                    ; 8b 46 20
    1524315200    push ax                                   ; 50
    15244     push 00dbeh                               ; 68 be 0d
     15201    push 00d5ch                               ; 68 5c 0d
    1524515202    push strict byte 00004h                   ; 6a 04
    15246     call 01966h                               ; e8 9f 7a
     15203    call 01966h                               ; e8 e2 7a
    1524715204    add sp, strict byte 00008h                ; 83 c4 08
    1524815205    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1525615213    pop bp                                    ; 5d
    1525715214    retn                                      ; c3
    15258 pci_find_classcode_:                         ; 0xf9ee0 LB 0x8
     15215pci_find_classcode_:                         ; 0xf9e9d LB 0x8
    1525915216    push bp                                   ; 55
    1526015217    mov bp, sp                                ; 89 e5
     
    1526215219    pop bp                                    ; 5d
    1526315220    retn                                      ; c3
    15264 pci_find_device_:                            ; 0xf9ee8 LB 0x23
     15221pci_find_device_:                            ; 0xf9ea5 LB 0x23
    1526515222    push bp                                   ; 55
    1526615223    mov bp, sp                                ; 89 e5
     
    1527415231    int 01ah                                  ; cd 1a
    1527515232    cmp ah, 000h                              ; 80 fc 00
    15276     je short 09f01h                           ; 74 03
     15233    je short 09ebeh                           ; 74 03
    1527715234    mov bx, strict word 0ffffh                ; bb ff ff
    1527815235    mov ax, bx                                ; 89 d8
     
    1528315240    pop bp                                    ; 5d
    1528415241    retn                                      ; c3
    15285 pci_read_config_byte_:                       ; 0xf9f0b LB 0x2e
     15242pci_read_config_byte_:                       ; 0xf9ec8 LB 0x2e
    1528615243    push bp                                   ; 55
    1528715244    mov bp, sp                                ; 89 e5
     
    1530915266    pop bp                                    ; 5d
    1531015267    retn                                      ; c3
    15311 pci_read_config_word_:                       ; 0xf9f39 LB 0x2a
     15268pci_read_config_word_:                       ; 0xf9ef6 LB 0x2a
    1531215269    push bp                                   ; 55
    1531315270    mov bp, sp                                ; 89 e5
     
    1533315290    pop bp                                    ; 5d
    1533415291    retn                                      ; c3
    15335 pci_read_config_dword_:                      ; 0xf9f63 LB 0x4e
     15292pci_read_config_dword_:                      ; 0xf9f20 LB 0x4e
    1533615293    push bp                                   ; 55
    1533715294    mov bp, sp                                ; 89 e5
     
    1535515312    int 01ah                                  ; cd 1a
    1535615313    test cx, cx                               ; 85 c9
    15357     jne short 09fa2h                          ; 75 14
     15314    jne short 09f5fh                          ; 75 14
    1535815315    mov al, byte [bp-006h]                    ; 8a 46 fa
    1535915316    xor ah, ah                                ; 30 e4
     
    1536515322    int 01ah                                  ; cd 1a
    1536615323    test cx, cx                               ; 85 c9
    15367     je short 09fa7h                           ; 74 05
     15324    je short 09f64h                           ; 74 05
    1536815325    mov ax, strict word 00001h                ; b8 01 00
    15369     jmp short 09fa9h                          ; eb 02
     15326    jmp short 09f66h                          ; eb 02
    1537015327    xor ax, ax                                ; 31 c0
    1537115328    cwd                                       ; 99
     
    1537515332    pop bp                                    ; 5d
    1537615333    retn                                      ; c3
    15377 pci_write_config_word_:                      ; 0xf9fb1 LB 0x25
     15334pci_write_config_word_:                      ; 0xf9f6e LB 0x25
    1537815335    push bp                                   ; 55
    1537915336    mov bp, sp                                ; 89 e5
     
    1539515352    pop bp                                    ; 5d
    1539615353    retn                                      ; c3
    15397 vds_is_present_:                             ; 0xf9fd6 LB 0x1d
     15354vds_is_present_:                             ; 0xf9f93 LB 0x1d
    1539815355    push bx                                   ; 53
    1539915356    push bp                                   ; 55
     
    1540315360    mov es, ax                                ; 8e c0
    1540415361    test byte [es:bx], 020h                   ; 26 f6 07 20
    15405     je short 09feeh                           ; 74 06
     15362    je short 09fabh                           ; 74 06
    1540615363    mov ax, strict word 00001h                ; b8 01 00
    1540715364    pop bp                                    ; 5d
     
    1541215369    pop bx                                    ; 5b
    1541315370    retn                                      ; c3
    15414 vds_real_to_lin_:                            ; 0xf9ff3 LB 0x1e
     15371vds_real_to_lin_:                            ; 0xf9fb0 LB 0x1e
    1541515372    push bx                                   ; 53
    1541615373    push cx                                   ; 51
     
    1542315380    sal ax, 1                                 ; d1 e0
    1542415381    rcl dx, 1                                 ; d1 d2
    15425     loop 0a001h                               ; e2 fa
     15382    loop 09fbeh                               ; e2 fa
    1542615383    xor cx, cx                                ; 31 c9
    1542715384    add ax, bx                                ; 01 d8
     
    1543115388    pop bx                                    ; 5b
    1543215389    retn                                      ; c3
    15433 vds_build_sg_list_:                          ; 0xfa011 LB 0x77
     15390vds_build_sg_list_:                          ; 0xf9fce LB 0x77
    1543415391    push bp                                   ; 55
    1543515392    mov bp, sp                                ; 89 e5
     
    1544515402    mov bx, word [bp+006h]                    ; 8b 5e 06
    1544615403    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15447     call 09ff3h                               ; e8 c3 ff
     15404    call 09fb0h                               ; e8 c3 ff
    1544815405    mov es, si                                ; 8e c6
    1544915406    mov word [es:di+004h], ax                 ; 26 89 45 04
    1545015407    mov word [es:di+006h], dx                 ; 26 89 55 06
    1545115408    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15452     call 09fd6h                               ; e8 93 ff
     15409    call 09f93h                               ; e8 93 ff
    1545315410    test ax, ax                               ; 85 c0
    15454     je short 0a058h                           ; 74 11
     15411    je short 0a015h                           ; 74 11
    1545515412    mov es, si                                ; 8e c6
    1545615413    mov ax, 08105h                            ; b8 05 81
    1545715414    mov dx, strict word 00000h                ; ba 00 00
    1545815415    int 04bh                                  ; cd 4b
    15459     jc short 0a055h                           ; 72 02
     15416    jc short 0a012h                           ; 72 02
    1546015417    db  032h, 0c0h
    1546115418    ; xor al, al                                ; 32 c0
    1546215419    cbw                                       ; 98
    15463     jmp short 0a07fh                          ; eb 27
     15420    jmp short 0a03ch                          ; eb 27
    1546415421    mov es, si                                ; 8e c6
    1546515422    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1547815435    pop bp                                    ; 5d
    1547915436    retn 00004h                               ; c2 04 00
    15480 vds_free_sg_list_:                           ; 0xfa088 LB 0x38
     15437vds_free_sg_list_:                           ; 0xfa045 LB 0x3b
    1548115438    push bp                                   ; 55
    1548215439    mov bp, sp                                ; 89 e5
     
    1548415441    push di                                   ; 57
    1548515442    mov bx, ax                                ; 89 c3
    15486     call 09fd6h                               ; e8 44 ff
     15443    call 09f93h                               ; e8 44 ff
    1548715444    test ax, ax                               ; 85 c0
    15488     je short 0a0a7h                           ; 74 11
     15445    je short 0a064h                           ; 74 11
    1548915446    mov di, bx                                ; 89 df
    1549015447    mov es, dx                                ; 8e c2
     
    1549215449    mov dx, strict word 00000h                ; ba 00 00
    1549315450    int 04bh                                  ; cd 4b
    15494     jc short 0a0a6h                           ; 72 02
     15451    jc short 0a063h                           ; 72 02
    1549515452    db  032h, 0c0h
    1549615453    ; xor al, al                                ; 32 c0
     
    1550315460    pop bp                                    ; 5d
    1550415461    retn                                      ; c3
    15505     times 0xa db 0
    15506 __U4M:                                       ; 0xfa0c0 LB 0x20
     15462    times 0xd db 0
     15463__U4M:                                       ; 0xfa080 LB 0x20
    1550715464    pushfw                                    ; 9c
    1550815465    push si                                   ; 56
     
    1553115488    retn                                      ; c3
    1553215489    times 0x4 db 0
    15533 __U4D:                                       ; 0xfa0e0 LB 0x30
     15490__U4D:                                       ; 0xfa0a0 LB 0x30
    1553415491    pushfw                                    ; 9c
    1553515492    push DS                                   ; 1e
     
    1554615503    push dx                                   ; 52
    1554715504    push ax                                   ; 50
    15548     call 0a1c5h                               ; e8 d0 00
     15505    call 0a185h                               ; e8 d0 00
    1554915506    mov cx, word [bp-002h]                    ; 8b 4e fe
    1555015507    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1555715514    retn                                      ; c3
    1555815515    times 0xe db 0
    15559 __U8RS:                                      ; 0xfa110 LB 0x10
     15516__U8RS:                                      ; 0xfa0d0 LB 0x10
    1556015517    test si, si                               ; 85 f6
    15561     je short 0a11fh                           ; 74 0b
     15518    je short 0a0dfh                           ; 74 0b
    1556215519    shr ax, 1                                 ; d1 e8
    1556315520    rcr bx, 1                                 ; d1 db
     
    1556515522    rcr dx, 1                                 ; d1 da
    1556615523    dec si                                    ; 4e
    15567     jne short 0a114h                          ; 75 f5
     15524    jne short 0a0d4h                          ; 75 f5
    1556815525    retn                                      ; c3
    15569 __U8LS:                                      ; 0xfa120 LB 0x10
     15526__U8LS:                                      ; 0xfa0e0 LB 0x10
    1557015527    test si, si                               ; 85 f6
    15571     je short 0a12fh                           ; 74 0b
     15528    je short 0a0efh                           ; 74 0b
    1557215529    sal dx, 1                                 ; d1 e2
    1557315530    rcl cx, 1                                 ; d1 d1
     
    1557515532    rcl ax, 1                                 ; d1 d0
    1557615533    dec si                                    ; 4e
    15577     jne short 0a124h                          ; 75 f5
     15534    jne short 0a0e4h                          ; 75 f5
    1557815535    retn                                      ; c3
    15579 _fmemset_:                                   ; 0xfa130 LB 0x10
     15536_fmemset_:                                   ; 0xfa0f0 LB 0x10
    1558015537    push di                                   ; 57
    1558115538    mov es, dx                                ; 8e c2
     
    1558815545    retn                                      ; c3
    1558915546    times 0x3 db 0
    15590 _fmemcpy_:                                   ; 0xfa140 LB 0x3a
     15547_fmemcpy_:                                   ; 0xfa100 LB 0x3a
    1559115548    push bp                                   ; 55
    1559215549    db  08bh, 0ech
     
    1561315570    add byte [bx+si], al                      ; 00 00
    1561415571    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
    15627 apm_worker:                                  ; 0xfa17a LB 0x3a
     15572    push ax                                   ; 50
     15573    mov ax, word [0a152h]                     ; a1 52 a1
     15574    push si                                   ; 56
     15575    mov ax, word [0a156h]                     ; a1 56 a1
     15576    push si                                   ; 56
     15577    mov ax, word [0a158h]                     ; a1 58 a1
     15578    pop ax                                    ; 58
     15579    mov ax, word [0a15ah]                     ; a1 5a a1
     15580    pop si                                    ; 5e
     15581    mov ax, word [0a15eh]                     ; a1 5e a1
     15582    pushaw                                    ; 60
     15583    mov ax, word [0a165h]                     ; a1 65 a1
     15584    db  067h
     15585    db  0a1h
     15586apm_worker:                                  ; 0xfa13a LB 0x3a
    1562815587    sti                                       ; fb
    1562915588    push ax                                   ; 50
     
    1563715596    pop ax                                    ; 58
    1563815597    mov AH, strict byte 053h                  ; b4 53
    15639     jnc short 0a1b0h                          ; 73 25
    15640     jmp word [cs:bp-05ea0h]                   ; 2e ff a6 60 a1
    15641     jmp short 0a1aeh                          ; eb 1c
     15598    jnc short 0a170h                          ; 73 25
     15599    jmp word [cs:bp-05ee0h]                   ; 2e ff a6 20 a1
     15600    jmp short 0a16eh                          ; eb 1c
    1564215601    sti                                       ; fb
    1564315602    hlt                                       ; f4
    15644     jmp short 0a1aeh                          ; eb 18
    15645     jmp short 0a1aeh                          ; eb 16
    15646     jmp short 0a1b0h                          ; eb 16
     15603    jmp short 0a16eh                          ; eb 18
     15604    jmp short 0a16eh                          ; eb 16
     15605    jmp short 0a170h                          ; eb 16
    1564715606    mov AH, strict byte 080h                  ; b4 80
    15648     jmp short 0a1b2h                          ; eb 14
    15649     jmp short 0a1b0h                          ; eb 10
     15607    jmp short 0a172h                          ; eb 14
     15608    jmp short 0a170h                          ; eb 10
    1565015609    mov ax, 00102h                            ; b8 02 01
    15651     jmp short 0a1aeh                          ; eb 09
    15652     jmp short 0a1aeh                          ; eb 07
     15610    jmp short 0a16eh                          ; eb 09
     15611    jmp short 0a16eh                          ; eb 07
    1565315612    mov BL, strict byte 000h                  ; b3 00
    1565415613    mov cx, strict word 00000h                ; b9 00 00
    15655     jmp short 0a1aeh                          ; eb 00
     15614    jmp short 0a16eh                          ; eb 00
    1565615615    clc                                       ; f8
    1565715616    retn                                      ; c3
     
    1565915618    stc                                       ; f9
    1566015619    retn                                      ; c3
    15661 apm_pm16_entry:                              ; 0xfa1b4 LB 0x11
     15620apm_pm16_entry:                              ; 0xfa174 LB 0x11
    1566215621    mov AH, strict byte 002h                  ; b4 02
    1566315622    push DS                                   ; 1e
     
    1566715626    add bp, strict byte 00008h                ; 83 c5 08
    1566815627    mov ds, bp                                ; 8e dd
    15669     call 0a17ah                               ; e8 b8 ff
     15628    call 0a13ah                               ; e8 b8 ff
    1567015629    pop bp                                    ; 5d
    1567115630    pop DS                                    ; 1f
    1567215631    retf                                      ; cb
    15673 _DoUInt32Div:                                ; 0xfa1c5 LB 0x26b
     15632_DoUInt32Div:                                ; 0xfa185 LB 0x26b
    1567415633    push bp                                   ; 55
    1567515634    mov bp, sp                                ; 89 e5
     
    1568915648    mov [bp-006h], ds                         ; 8c 5e fa
    1569015649    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15691     jne short 0a215h                          ; 75 22
     15650    jne short 0a1d5h                          ; 75 22
    1569215651    mov ax, word [bx]                         ; 8b 07
    1569315652    test ax, ax                               ; 85 c0
    15694     je short 0a212h                           ; 74 19
     15653    je short 0a1d2h                           ; 74 19
    1569515654    cmp ax, strict word 00001h                ; 3d 01 00
    15696     jne short 0a215h                          ; 75 17
     15655    jne short 0a1d5h                          ; 75 17
    1569715656    xor ax, ax                                ; 31 c0
    1569815657    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1570215661    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1570315662    mov word [bp+006h], ax                    ; 89 46 06
    15704     jmp near 0a41dh                           ; e9 08 02
     15663    jmp near 0a3ddh                           ; e9 08 02
    1570515664    lds bx, [bp-00ch]                         ; c5 5e f4
    1570615665    mov ax, word [bx+002h]                    ; 8b 47 02
    1570715666    mov ds, [bp-006h]                         ; 8e 5e fa
    1570815667    cmp ax, word [si+002h]                    ; 3b 44 02
    15709     je short 0a23bh                           ; 74 18
     15668    je short 0a1fbh                           ; 74 18
    1571015669    mov ds, [bp-00ah]                         ; 8e 5e f6
    1571115670    mov ax, word [bx+002h]                    ; 8b 47 02
    1571215671    mov ds, [bp-006h]                         ; 8e 5e fa
    1571315672    cmp ax, word [si+002h]                    ; 3b 44 02
    15714     jbe short 0a236h                          ; 76 05
     15673    jbe short 0a1f6h                          ; 76 05
    1571515674    mov ax, strict word 00001h                ; b8 01 00
    15716     jmp short 0a25ch                          ; eb 26
     15675    jmp short 0a21ch                          ; eb 26
    1571715676    mov ax, strict word 0ffffh                ; b8 ff ff
    15718     jmp short 0a25ch                          ; eb 21
     15677    jmp short 0a21ch                          ; eb 21
    1571915678    mov ds, [bp-00ah]                         ; 8e 5e f6
    1572015679    mov ax, word [bx]                         ; 8b 07
    1572115680    mov ds, [bp-006h]                         ; 8e 5e fa
    1572215681    cmp ax, word [si]                         ; 3b 04
    15723     je short 0a25ah                           ; 74 13
     15682    je short 0a21ah                           ; 74 13
    1572415683    mov ds, [bp-00ah]                         ; 8e 5e f6
    1572515684    mov ax, word [bx]                         ; 8b 07
    1572615685    mov ds, [bp-006h]                         ; 8e 5e fa
    1572715686    cmp ax, word [si]                         ; 3b 04
    15728     jbe short 0a255h                          ; 76 02
    15729     jmp short 0a231h                          ; eb dc
     15687    jbe short 0a215h                          ; 76 02
     15688    jmp short 0a1f1h                          ; eb dc
    1573015689    mov ax, strict word 0ffffh                ; b8 ff ff
    15731     jmp short 0a25ch                          ; eb 02
     15690    jmp short 0a21ch                          ; eb 02
    1573215691    xor ax, ax                                ; 31 c0
    1573315692    test ax, ax                               ; 85 c0
    15734     jnl short 0a27eh                          ; 7d 1e
     15693    jnl short 0a23eh                          ; 7d 1e
    1573515694    lds bx, [bp-00ch]                         ; c5 5e f4
    1573615695    mov ax, word [bx]                         ; 8b 07
     
    1574215701    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1574315702    mov word [bx], strict word 00000h         ; c7 07 00 00
    15744     jmp short 0a212h                          ; eb 94
    15745     jne short 0a295h                          ; 75 15
     15703    jmp short 0a1d2h                          ; eb 94
     15704    jne short 0a255h                          ; 75 15
    1574615705    mov ds, [bp-008h]                         ; 8e 5e f8
    1574715706    mov word [di+002h], ax                    ; 89 45 02
     
    1575015709    mov word [bx], strict word 00001h         ; c7 07 01 00
    1575115710    mov word [bx+002h], ax                    ; 89 47 02
    15752     jmp near 0a41dh                           ; e9 88 01
     15711    jmp near 0a3ddh                           ; e9 88 01
    1575315712    lds bx, [bp-00ch]                         ; c5 5e f4
    1575415713    mov ax, word [bx+002h]                    ; 8b 47 02
    1575515714    test ax, ax                               ; 85 c0
    15756     je short 0a2b0h                           ; 74 11
     15715    je short 0a270h                           ; 74 11
    1575715716    push ax                                   ; 50
    1575815717    mov ax, 0f000h                            ; b8 00 f0
    1575915718    mov ds, ax                                ; 8e d8
    15760     call 0a430h                               ; e8 88 01
     15719    call 0a3f0h                               ; e8 88 01
    1576115720    add sp, strict byte 00002h                ; 83 c4 02
    1576215721    add ax, strict word 00010h                ; 05 10 00
    15763     jmp short 0a2bdh                          ; eb 0d
     15722    jmp short 0a27dh                          ; eb 0d
    1576415723    push word [bx]                            ; ff 37
    1576515724    mov ax, 0f000h                            ; b8 00 f0
    1576615725    mov ds, ax                                ; 8e d8
    15767     call 0a430h                               ; e8 76 01
     15726    call 0a3f0h                               ; e8 76 01
    1576815727    add sp, strict byte 00002h                ; 83 c4 02
    1576915728    mov word [bp-014h], ax                    ; 89 46 ec
     
    1577115730    mov ax, word [si+002h]                    ; 8b 44 02
    1577215731    test ax, ax                               ; 85 c0
    15773     je short 0a2dbh                           ; 74 11
     15732    je short 0a29bh                           ; 74 11
    1577415733    push ax                                   ; 50
    1577515734    mov ax, 0f000h                            ; b8 00 f0
    1577615735    mov ds, ax                                ; 8e d8
    15777     call 0a430h                               ; e8 5d 01
     15736    call 0a3f0h                               ; e8 5d 01
    1577815737    add sp, strict byte 00002h                ; 83 c4 02
    1577915738    add ax, strict word 00010h                ; 05 10 00
    15780     jmp short 0a2e8h                          ; eb 0d
     15739    jmp short 0a2a8h                          ; eb 0d
    1578115740    push word [si]                            ; ff 34
    1578215741    mov ax, 0f000h                            ; b8 00 f0
    1578315742    mov ds, ax                                ; 8e d8
    15784     call 0a430h                               ; e8 4b 01
     15743    call 0a3f0h                               ; e8 4b 01
    1578515744    add sp, strict byte 00002h                ; 83 c4 02
    1578615745    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1579315752    mov word [bp-016h], ax                    ; 89 46 ea
    1579415753    test dx, dx                               ; 85 d2
    15795     je short 0a358h                           ; 74 56
     15754    je short 0a318h                           ; 74 56
    1579615755    mov cx, dx                                ; 89 d1
    1579715756    xor ch, dh                                ; 30 f5
     
    1579915758    mov ax, word [si]                         ; 8b 04
    1580015759    mov dx, word [si+002h]                    ; 8b 54 02
    15801     jcxz 0a316h                               ; e3 06
     15760    jcxz 0a2d6h                               ; e3 06
    1580215761    sal ax, 1                                 ; d1 e0
    1580315762    rcl dx, 1                                 ; d1 d2
    15804     loop 0a310h                               ; e2 fa
     15763    loop 0a2d0h                               ; e2 fa
    1580515764    mov word [bp-018h], ax                    ; 89 46 e8
    1580615765    mov word [bp-016h], dx                    ; 89 56 ea
     
    1580815767    lds bx, [bp-00ch]                         ; c5 5e f4
    1580915768    cmp ax, word [bx+002h]                    ; 3b 47 02
    15810     jnbe short 0a336h                         ; 77 0f
     15769    jnbe short 0a2f6h                         ; 77 0f
    1581115770    mov ax, word [bp-016h]                    ; 8b 46 ea
    1581215771    cmp ax, word [bx+002h]                    ; 3b 47 02
    15813     jne short 0a33ah                          ; 75 0b
     15772    jne short 0a2fah                          ; 75 0b
    1581415773    mov ax, word [bp-018h]                    ; 8b 46 e8
    1581515774    cmp ax, word [bx]                         ; 3b 07
    15816     jbe short 0a33ah                          ; 76 04
     15775    jbe short 0a2fah                          ; 76 04
    1581715776    mov AL, strict byte 001h                  ; b0 01
    15818     jmp short 0a33ch                          ; eb 02
     15777    jmp short 0a2fch                          ; eb 02
    1581915778    xor al, al                                ; 30 c0
    1582015779    test al, al                               ; 84 c0
    15821     je short 0a363h                           ; 74 23
     15780    je short 0a323h                           ; 74 23
    1582215781    shr word [bp-016h], 1                     ; d1 6e ea
    1582315782    rcr word [bp-018h], 1                     ; d1 5e e8
    1582415783    dec word [bp-012h]                        ; ff 4e ee
    15825     jmp short 0a363h                          ; eb 18
     15784    jmp short 0a323h                          ; eb 18
    1582615785    mov cx, strict word 0001fh                ; b9 1f 00
    1582715786    sal word [bp-018h], 1                     ; d1 66 e8
    1582815787    rcl word [bp-016h], 1                     ; d1 56 ea
    15829     loop 0a34eh                               ; e2 f8
    15830     jmp short 0a346h                          ; eb ee
     15788    loop 0a30eh                               ; e2 f8
     15789    jmp short 0a306h                          ; eb ee
    1583115790    mov ax, word [si]                         ; 8b 04
    1583215791    mov word [bp-018h], ax                    ; 89 46 e8
     
    1584515804    mov ds, [bp-006h]                         ; 8e 5e fa
    1584615805    cmp ax, word [si+002h]                    ; 3b 44 02
    15847     jnbe short 0a38fh                         ; 77 06
    15848     jne short 0a393h                          ; 75 08
     15806    jnbe short 0a34fh                         ; 77 06
     15807    jne short 0a353h                          ; 75 08
    1584915808    cmp dx, word [si]                         ; 3b 14
    15850     jc short 0a393h                           ; 72 04
     15809    jc short 0a353h                           ; 72 04
    1585115810    mov AL, strict byte 001h                  ; b0 01
    15852     jmp short 0a395h                          ; eb 02
     15811    jmp short 0a355h                          ; eb 02
    1585315812    xor al, al                                ; 30 c0
    1585415813    test al, al                               ; 84 c0
    15855     je short 0a3fah                           ; 74 61
     15814    je short 0a3bah                           ; 74 61
    1585615815    mov ds, [bp-008h]                         ; 8e 5e f8
    1585715816    mov ax, word [di+002h]                    ; 8b 45 02
    1585815817    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15859     jnbe short 0a3b0h                         ; 77 0c
     15818    jnbe short 0a370h                         ; 77 0c
    1586015819    cmp ax, word [bp-016h]                    ; 3b 46 ea
    15861     jne short 0a3b4h                          ; 75 0b
     15820    jne short 0a374h                          ; 75 0b
    1586215821    mov ax, word [di]                         ; 8b 05
    1586315822    cmp ax, word [bp-018h]                    ; 3b 46 e8
    15864     jc short 0a3b4h                           ; 72 04
     15823    jc short 0a374h                           ; 72 04
    1586515824    mov AL, strict byte 001h                  ; b0 01
    15866     jmp short 0a3b6h                          ; eb 02
     15825    jmp short 0a376h                          ; eb 02
    1586715826    xor al, al                                ; 30 c0
    1586815827    test al, al                               ; 84 c0
    15869     je short 0a3e0h                           ; 74 26
     15828    je short 0a3a0h                           ; 74 26
    1587015829    mov ax, word [bp-018h]                    ; 8b 46 e8
    1587115830    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1587615835    xor dx, dx                                ; 31 d2
    1587715836    mov cx, word [bp-012h]                    ; 8b 4e ee
    15878     jcxz 0a3d8h                               ; e3 06
     15837    jcxz 0a398h                               ; e3 06
    1587915838    sal ax, 1                                 ; d1 e0
    1588015839    rcl dx, 1                                 ; d1 d2
    15881     loop 0a3d2h                               ; e2 fa
     15840    loop 0a392h                               ; e2 fa
    1588215841    lds bx, [bp-010h]                         ; c5 5e f0
    1588315842    or word [bx], ax                          ; 09 07
     
    1588815847    mov ds, [bp-006h]                         ; 8e 5e fa
    1588915848    cmp ax, word [si+002h]                    ; 3b 44 02
    15890     jc short 0a3f6h                           ; 72 06
    15891     jne short 0a3fch                          ; 75 0a
     15849    jc short 0a3b6h                           ; 72 06
     15850    jne short 0a3bch                          ; 75 0a
    1589215851    cmp dx, word [si]                         ; 3b 14
    15893     jnc short 0a3fch                          ; 73 06
     15852    jnc short 0a3bch                          ; 73 06
    1589415853    mov AL, strict byte 001h                  ; b0 01
    15895     jmp short 0a3feh                          ; eb 04
    15896     jmp short 0a41dh                          ; eb 21
     15854    jmp short 0a3beh                          ; eb 04
     15855    jmp short 0a3ddh                          ; eb 21
    1589715856    xor al, al                                ; 30 c0
    1589815857    test al, al                               ; 84 c0
    15899     je short 0a411h                           ; 74 0f
    15900     jmp short 0a41dh                          ; eb 19
     15858    je short 0a3d1h                           ; 74 0f
     15859    jmp short 0a3ddh                          ; eb 19
    1590115860    mov cx, strict word 0001fh                ; b9 1f 00
    1590215861    sal word [bp-018h], 1                     ; d1 66 e8
    1590315862    rcl word [bp-016h], 1                     ; d1 56 ea
    15904     loop 0a407h                               ; e2 f8
    15905     jmp short 0a417h                          ; eb 06
     15863    loop 0a3c7h                               ; e2 f8
     15864    jmp short 0a3d7h                          ; eb 06
    1590615865    shr word [bp-016h], 1                     ; d1 6e ea
    1590715866    rcr word [bp-018h], 1                     ; d1 5e e8
    1590815867    dec word [bp-012h]                        ; ff 4e ee
    15909     jmp near 0a399h                           ; e9 7c ff
     15868    jmp near 0a359h                           ; e9 7c ff
    1591015869    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1591115870    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1591615875    retn                                      ; c3
    1591715876    times 0x6 db 0
    15918 _ASMBitLastSetU16:                           ; 0xfa430 LB 0x18
     15877_ASMBitLastSetU16:                           ; 0xfa3f0 LB 0x18
    1591915878    push bp                                   ; 55
    1592015879    db  08bh, 0ech
     
    1592215881    mov cx, word [bp+004h]                    ; 8b 4e 04
    1592315882    test cx, cx                               ; 85 c9
    15924     je short 0a444h                           ; 74 0a
     15883    je short 0a404h                           ; 74 0a
    1592515884    mov ax, strict word 00010h                ; b8 10 00
    1592615885    sal cx, 1                                 ; d1 e1
    15927     jc short 0a446h                           ; 72 05
     15886    jc short 0a406h                           ; 72 05
    1592815887    dec ax                                    ; 48
    15929     jmp short 0a43dh                          ; eb f9
     15888    jmp short 0a3fdh                          ; eb f9
    1593015889    db  033h, 0c0h
    1593115890    ; xor ax, ax                                ; 33 c0
     
    1593315892    retn                                      ; c3
    1593415893
    15935   ; Padding 0x35b8 bytes at 0xfa448
    15936   times 13752 db 0
     15894  ; Padding 0x35f8 bytes at 0xfa408
     15895  times 13816 db 0
    1593715896
    1593815897section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1598115940    add bp, strict byte 00008h                ; 83 c5 08
    1598215941    push ebp                                  ; 66 55
    15983     mov bp, 0a1b6h                            ; bd b6 a1
     15942    mov bp, 0a176h                            ; bd 76 a1
    1598415943    add byte [bx+si], al                      ; 00 00
    1598515944    push ebp                                  ; 66 55
     
    1670716666    call 01c9fh                               ; e8 63 39
    1670816667    call 02118h                               ; e8 d9 3d
    16709     call 0998bh                               ; e8 49 b6
    16710     call 087fbh                               ; e8 b6 a4
     16668    call 09948h                               ; e8 06 b6
     16669    call 087b8h                               ; e8 73 a4
    1671116670    call 0ed2fh                               ; e8 e7 09
    1671216671    call 0e2d2h                               ; e8 87 ff
     
    1685616815    out strict byte 0a1h, AL                  ; e6 a1
    1685716816    retn                                      ; c3
    16858 ebda_post:                                   ; 0xfe778 LB 0x45
     16817ebda_post:                                   ; 0xfe778 LB 0x51
    1685916818    mov ax, 0e746h                            ; b8 46 e7
    1686016819    mov word [00034h], ax                     ; a3 34 00
     
    1687016829    mov word [001cah], ax                     ; a3 ca 01
    1687116830    mov ax, 0e746h                            ; b8 46 e7
     16831    mov word [001cch], ax                     ; a3 cc 01
     16832    mov ax, 0f000h                            ; b8 00 f0
     16833    mov word [001ceh], ax                     ; a3 ce 01
     16834    mov ax, 0e746h                            ; b8 46 e7
    1687216835    mov word [001dch], ax                     ; a3 dc 01
    1687316836    mov ax, 0f000h                            ; b8 00 f0
     
    1688116844    mov word [0040eh], 09fc0h                 ; c7 06 0e 04 c0 9f
    1688216845    retn                                      ; c3
    16883 biosorg_check_before_or_at_0E82Ch:           ; 0xfe7bd LB 0x71
    16884     times 0x6f db 0
     16846biosorg_check_before_or_at_0E82Ch:           ; 0xfe7c9 LB 0x65
     16847    times 0x63 db 0
    1688516848    db  'XM'
    1688616849biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x3d
     
    1754117504    popfw                                     ; 9d
    1754217505    jmp short 0f8a5h                          ; eb 11
    17543     call 09afeh                               ; e8 67 a2
     17506    call 09abbh                               ; e8 24 a2
    1754417507    jmp short 0f88eh                          ; eb f5
    1754517508int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1780717770cpu_reset:                                   ; 0xffff0 LB 0x10
    1780817771    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17809     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 00fh
     17772    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 03dh
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum

    r67807 r68290  
    1 0aa9c82df689a029ef3c0dd6eb7cfba6 *VBoxPcBios286.rom
     1854cf294cb1f7c54bf62169e4fb5a30b *VBoxPcBios286.rom
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm

    r67807 r68290  
    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, 0c8h, 091h
     953    db  000h, 000h, 000h, 000h, 000h, 000h, 05dh, 02ch, 01ah, 082h, 089h, 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, 09eh, 090h, 044h, 091h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     958    db  064h, 080h, 03fh, 081h, 05fh, 090h, 005h, 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=0xd52 class=DATA group=DGROUP
     961section CONST progbits vstart=0xb0 align=1 ; size=0xcf0 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
    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
     1067    db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
    10711068    db   'ahci_read_sectors', 000h
    10721069    db   '%s: device_id out of range %d', 00ah, 000h
     
    10811078    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    10821079
    1083 section CONST2 progbits vstart=0xe02 align=1 ; size=0x3fa class=DATA group=DGROUP
    1084 _bios_cvs_version_string:                    ; 0xf0e02 LB 0x12
    1085     db  'VirtualBox 5.1.51', 000h
    1086 _bios_prefix_string:                         ; 0xf0e14 LB 0x8
     1080section CONST2 progbits vstart=0xda0 align=1 ; size=0x400 class=DATA group=DGROUP
     1081_bios_cvs_version_string:                    ; 0xf0da0 LB 0x18
     1082    db  'VirtualBox 5.2.0_BETA1', 000h, 000h
     1083_bios_prefix_string:                         ; 0xf0db8 LB 0x8
    10871084    db  'BIOS: ', 000h, 000h
    1088 _isotag:                                     ; 0xf0e1c LB 0x6
     1085_isotag:                                     ; 0xf0dc0 LB 0x6
    10891086    db  'CD001', 000h
    1090 _eltorito:                                   ; 0xf0e22 LB 0x18
     1087_eltorito:                                   ; 0xf0dc6 LB 0x18
    10911088    db  'EL TORITO SPECIFICATION', 000h
    1092 _drivetypes:                                 ; 0xf0e3a LB 0x28
     1089_drivetypes:                                 ; 0xf0dde LB 0x28
    10931090    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    10941091    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    10951092    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    1096 _scan_to_scanascii:                          ; 0xf0e62 LB 0x37a
     1093_scan_to_scanascii:                          ; 0xf0e06 LB 0x37a
    10971094    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    10981095    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    11511148    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    11521149    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    1153 _panic_msg_keyb_buffer_full:                 ; 0xf11dc LB 0x20
     1150_panic_msg_keyb_buffer_full:                 ; 0xf1180 LB 0x20
    11541151    db  '%s: keyboard input buffer full', 00ah, 000h
    11551152
    1156   ; Padding 0x404 bytes at 0xf11fc
    1157   times 1028 db 0
     1153  ; Padding 0x460 bytes at 0xf11a0
     1154  times 1120 db 0
    11581155
    1159 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8bd5 class=CODE group=AUTO
     1156section _TEXT progbits vstart=0x1600 align=1 ; size=0x8b95 class=CODE group=AUTO
    11601157rom_scan_:                                   ; 0xf1600 LB 0x50
    11611158    push bp                                   ; 55
     
    15041501    push bp                                   ; 55
    15051502    mov bp, sp                                ; 89 e5
    1506     mov bx, 00e14h                            ; bb 14 0e
     1503    mov bx, 00db8h                            ; bb b8 0d
    15071504    mov cx, ds                                ; 8c d9
    15081505    mov ax, strict word 00004h                ; b8 04 00
    15091506    call 01a2ah                               ; e8 ac 01
    1510     push 00e02h                               ; 68 02 0e
     1507    push 00da0h                               ; 68 a0 0d
    15111508    push 000ebh                               ; 68 eb 00
    15121509    push strict byte 00004h                   ; 6a 04
     
    16791676    mov bx, strict word 0000ah                ; bb 0a 00
    16801677    xor cx, cx                                ; 31 c9
    1681     call 0a0e0h                               ; e8 0e 87
     1678    call 0a0a0h                               ; e8 ce 86
    16821679    mov word [bp-008h], ax                    ; 89 46 f8
    16831680    mov cx, dx                                ; 89 d1
     
    19051902    mov dx, word [bp-026h]                    ; 8b 56 da
    19061903    mov si, word [bp-01eh]                    ; 8b 76 e2
    1907     call 0a120h                               ; e8 1c 85
     1904    call 0a0e0h                               ; e8 dc 84
    19081905    mov ax, dx                                ; 89 d0
    19091906    xor ah, dh                                ; 30 f4
     
    23472344    mov dx, word [es:si]                      ; 26 8b 14
    23482345    mov si, strict word 00018h                ; be 18 00
    2349     call 0a120h                               ; e8 c0 80
     2346    call 0a0e0h                               ; e8 80 80
    23502347    xor dh, dh                                ; 30 f6
    23512348    mov word [bp-016h], dx                    ; 89 56 ea
     
    23572354    mov dx, word [es:si]                      ; 26 8b 14
    23582355    mov si, strict word 00020h                ; be 20 00
    2359     call 0a120h                               ; e8 a0 80
     2356    call 0a0e0h                               ; e8 60 80
    23602357    mov bx, dx                                ; 89 d3
    23612358    mov ax, word [bp-01eh]                    ; 8b 46 e2
     
    23882385    mov dx, word [es:si]                      ; 26 8b 14
    23892386    mov si, strict word 00008h                ; be 08 00
    2390     call 0a120h                               ; e8 4f 80
     2387    call 0a0e0h                               ; e8 0f 80
    23912388    mov word [bp-014h], dx                    ; 89 56 ec
    23922389    mov bx, word [bp-018h]                    ; 8b 5e e8
     
    23972394    mov dx, word [es:si]                      ; 26 8b 14
    23982395    mov si, strict word 00018h                ; be 18 00
    2399     call 0a120h                               ; e8 31 80
     2396    call 0a0e0h                               ; e8 f1 7f
    24002397    and dx, strict byte 0000fh                ; 83 e2 0f
    24012398    or dl, 040h                               ; 80 ca 40
     
    27912788    lea ax, [bp-03ah]                         ; 8d 46 c6
    27922789    call 05ad0h                               ; e8 ff 35
    2793     mov bx, 00e14h                            ; bb 14 0e
     2790    mov bx, 00db8h                            ; bb b8 0d
    27942791    mov cx, ds                                ; 8c d9
    27952792    mov ax, strict word 00004h                ; b8 04 00
     
    29532950    mov dx, word [es:si+036h]                 ; 26 8b 54 36
    29542951    mov si, strict word 0000bh                ; be 0b 00
    2955     call 0a120h                               ; e8 69 7a
     2952    call 0a0e0h                               ; e8 29 7a
    29562953    mov word [bp-030h], dx                    ; 89 56 d0
    29572954    mov word [bp-02eh], cx                    ; 89 4e d2
     
    32243221    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32253222    mov si, strict word 00018h                ; be 18 00
    3226     call 0a120h                               ; e8 93 77
     3223    call 0a0e0h                               ; e8 53 77
    32273224    xor dh, dh                                ; 30 f6
    32283225    mov word [bp-01ch], dx                    ; 89 56 e4
     
    32323229    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32333230    mov si, strict word 00020h                ; be 20 00
    3234     call 0a120h                               ; e8 7c 77
     3231    call 0a0e0h                               ; e8 3c 77
    32353232    mov bx, dx                                ; 89 d3
    32363233    mov ax, word [bp-01ah]                    ; 8b 46 e6
     
    32663263    mov dx, word [bp-01eh]                    ; 8b 56 e2
    32673264    mov si, strict word 00008h                ; be 08 00
    3268     call 0a120h                               ; e8 28 77
     3265    call 0a0e0h                               ; e8 e8 76
    32693266    mov word [bp-010h], ax                    ; 89 46 f0
    32703267    mov word [bp-014h], bx                    ; 89 5e ec
     
    32733270    mov word [bp-026h], dx                    ; 89 56 da
    32743271    mov si, strict word 00010h                ; be 10 00
    3275     call 0a120h                               ; e8 13 77
     3272    call 0a0e0h                               ; e8 d3 76
    32763273    mov word [bp-01eh], dx                    ; 89 56 e2
    32773274    mov ax, dx                                ; 89 d0
     
    35423539    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    35433540    jne short 02cafh                          ; 75 1f
    3544     mov bx, 00e14h                            ; bb 14 0e
     3541    mov bx, 00db8h                            ; bb b8 0d
    35453542    mov cx, ds                                ; 8c d9
    35463543    mov ax, strict word 00004h                ; b8 04 00
     
    44134410    cmp bh, 048h                              ; 80 ff 48
    44144411    jbe short 03443h                          ; 76 33
    4415     mov bx, 00e14h                            ; bb 14 0e
     4412    mov bx, 00db8h                            ; bb b8 0d
    44164413    mov cx, ds                                ; 8c d9
    44174414    mov ax, strict word 00004h                ; b8 04 00
     
    52555252    mov byte [es:bx], 000h                    ; 26 c6 07 00
    52565253    jmp near 03612h                           ; e9 ae f9
    5257     mov bx, 00e14h                            ; bb 14 0e
     5254    mov bx, 00db8h                            ; bb b8 0d
    52585255    mov cx, ds                                ; 8c d9
    52595256    mov ax, strict word 00004h                ; b8 04 00
     
    53525349    cmp ax, strict word 0004ah                ; 3d 4a 00
    53535350    jne near 03e4eh                           ; 0f 85 1e 01
    5354     mov bx, 00e14h                            ; bb 14 0e
     5351    mov bx, 00db8h                            ; bb b8 0d
    53555352    mov cx, ds                                ; 8c d9
    53565353    mov ax, strict word 00004h                ; b8 04 00
     
    54505447    pop bp                                    ; 5d
    54515448    retn                                      ; c3
    5452     mov bx, 00e14h                            ; bb 14 0e
     5449    mov bx, 00db8h                            ; bb b8 0d
    54535450    mov cx, ds                                ; 8c d9
    54545451    mov ax, strict word 00004h                ; b8 04 00
     
    55315528    mov dx, ss                                ; 8c d2
    55325529    lea ax, [bp-026h]                         ; 8d 46 da
    5533     call 0a140h                               ; e8 28 62
     5530    call 0a100h                               ; e8 e8 61
    55345531    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    55355532    mov ax, strict word 00011h                ; b8 11 00
     
    55855582    jnc short 03fb7h                          ; 73 10
    55865583    mov al, byte [bp+di-00825h]               ; 8a 83 db f7
    5587     cmp al, byte [di+00e1ch]                  ; 3a 85 1c 0e
     5584    cmp al, byte [di+00dc0h]                  ; 3a 85 c0 0d
    55885585    je short 03fa1h                           ; 74 f0
    55895586    mov ax, strict word 00005h                ; b8 05 00
     
    55955592    jnc short 03fd1h                          ; 73 10
    55965593    mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
    5597     cmp al, byte [di+00e22h]                  ; 3a 85 22 0e
     5594    cmp al, byte [di+00dc6h]                  ; 3a 85 c6 0d
    55985595    je short 03fbbh                           ; 74 f0
    55995596    mov ax, strict word 00006h                ; b8 06 00
     
    58745871    cmp dx, ax                                ; 39 c2
    58755872    je short 04355h                           ; 74 29
    5876     mov bx, 00e14h                            ; bb 14 0e
     5873    mov bx, 00db8h                            ; bb b8 0d
    58775874    mov cx, ds                                ; 8c d9
    58785875    mov ax, strict word 00004h                ; b8 04 00
     
    59915988    xor dl, dl                                ; 30 d2
    59925989    xor cx, cx                                ; 31 c9
    5993     call 0a0a0h                               ; e8 26 5c
     5990    call 0a060h                               ; e8 e6 5b
    59945991    xor bx, bx                                ; 31 db
    59955992    add ax, si                                ; 01 f0
     
    59975994    mov bx, di                                ; 89 fb
    59985995    xor cx, cx                                ; 31 c9
    5999     call 0a0a0h                               ; e8 19 5c
     5996    call 0a060h                               ; e8 d9 5b
    60005997    mov bx, ax                                ; 89 c3
    60015998    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    60326029    mov dx, ss                                ; 8c d2
    60336030    lea ax, [bp-02eh]                         ; 8d 46 d2
    6034     call 0a140h                               ; e8 62 5c
     6031    call 0a100h                               ; e8 22 5c
    60356032    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    60366033    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    60966093    test al, al                               ; 84 c0
    60976094    je near 043a1h                            ; 0f 84 13 fe
    6098     mov bx, 00e14h                            ; bb 14 0e
     6095    mov bx, 00db8h                            ; bb b8 0d
    60996096    mov cx, ds                                ; 8c d9
    61006097    mov ax, strict word 00004h                ; b8 04 00
     
    61776174    mov word [bp+016h], bx                    ; 89 5e 16
    61786175    jmp near 043a5h                           ; e9 37 fd
    6179     mov bx, 00e14h                            ; bb 14 0e
     6176    mov bx, 00db8h                            ; bb b8 0d
    61806177    mov cx, ds                                ; 8c d9
    61816178    mov ax, strict word 00004h                ; b8 04 00
     
    63396336    mov dx, ss                                ; 8c d2
    63406337    lea ax, [bp-02ch]                         ; 8d 46 d4
    6341     call 0a140h                               ; e8 c7 58
     6338    call 0a100h                               ; e8 87 58
    63426339    mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
    63436340    mov ax, word [bp-018h]                    ; 8b 46 e8
     
    63886385    test dl, dl                               ; 84 d2
    63896386    je near 049cbh                            ; 0f 84 cb 00
    6390     mov bx, 00e14h                            ; bb 14 0e
     6387    mov bx, 00db8h                            ; bb b8 0d
    63916388    mov cx, ds                                ; 8c d9
    63926389    mov ax, strict word 00004h                ; b8 04 00
     
    66726669    or byte [bp+01eh], 001h                   ; 80 4e 1e 01
    66736670    jmp near 049deh                           ; e9 8f fd
    6674     mov bx, 00e14h                            ; bb 14 0e
     6671    mov bx, 00db8h                            ; bb b8 0d
    66756672    mov cx, ds                                ; 8c d9
    66766673    mov ax, strict word 00004h                ; b8 04 00
     
    67026699    je short 04cb1h                           ; 74 21
    67036700    mov dx, strict word 00001h                ; ba 01 00
    6704     mov bx, 00e14h                            ; bb 14 0e
     6701    mov bx, 00db8h                            ; bb b8 0d
    67056702    mov cx, ds                                ; 8c d9
    67066703    mov ax, strict word 00004h                ; b8 04 00
    67076704    call 01a2ah                               ; e8 8c cd
    67086705    imul dx, dx, strict byte 0000ah           ; 6b d2 0a
    6709     add dx, 00e3ah                            ; 81 c2 3a 0e
     6706    add dx, 00ddeh                            ; 81 c2 de 0d
    67106707    push dx                                   ; 52
    67116708    push 004a6h                               ; 68 a6 04
     
    67276724    test al, al                               ; 84 c0
    67286725    je short 04ce4h                           ; 74 1b
    6729     mov bx, 00e14h                            ; bb 14 0e
     6726    mov bx, 00db8h                            ; bb b8 0d
    67306727    mov cx, ds                                ; 8c d9
    67316728    mov ax, strict word 00004h                ; b8 04 00
    67326729    call 01a2ah                               ; e8 56 cd
    6733     push 00e4eh                               ; 68 4e 0e
     6730    push 00df2h                               ; 68 f2 0d
    67346731    push 004bah                               ; 68 ba 04
    67356732    push strict byte 00004h                   ; 6a 04
     
    67396736    test dl, dl                               ; 84 d2
    67406737    je short 04cf8h                           ; 74 10
    6741     mov bx, 00e14h                            ; bb 14 0e
     6738    mov bx, 00db8h                            ; bb b8 0d
    67426739    mov cx, ds                                ; 8c d9
    67436740    mov ax, strict word 00004h                ; b8 04 00
    67446741    call 01a2ah                               ; e8 37 cd
    6745     push 00e58h                               ; 68 58 0e
     6742    push 00dfch                               ; 68 fc 0d
    67466743    jmp short 04cd7h                          ; eb df
    67476744    test bl, 080h                             ; f6 c3 80
    67486745    je short 04d0eh                           ; 74 11
    6749     mov bx, 00e14h                            ; bb 14 0e
     6746    mov bx, 00db8h                            ; bb b8 0d
    67506747    mov cx, ds                                ; 8c d9
    67516748    mov ax, strict word 00004h                ; b8 04 00
    67526749    call 01a2ah                               ; e8 22 cd
    67536750    push si                                   ; 56
    6754     push 00e44h                               ; 68 44 0e
     6751    push 00de8h                               ; 68 e8 0d
    67556752    jmp short 04d1dh                          ; eb 0f
    6756     mov bx, 00e14h                            ; bb 14 0e
     6753    mov bx, 00db8h                            ; bb b8 0d
    67576754    mov cx, ds                                ; 8c d9
    67586755    mov ax, strict word 00004h                ; b8 04 00
    67596756    call 01a2ah                               ; e8 11 cd
    67606757    push si                                   ; 56
    6761     push 00e3ah                               ; 68 3a 0e
     6758    push 00ddeh                               ; 68 de 0d
    67626759    push 004cfh                               ; 68 cf 04
    67636760    push strict byte 00004h                   ; 6a 04
     
    67856782    push dx                                   ; 52
    67866783    mov dx, ax                                ; 89 c2
    6787     mov bx, 00e14h                            ; bb 14 0e
     6784    mov bx, 00db8h                            ; bb b8 0d
    67886785    mov cx, ds                                ; 8c d9
    67896786    mov ax, strict word 00004h                ; b8 04 00
     
    68606857    mov byte [bp-00ah], al                    ; 88 46 f6
    68616858    mov byte [bp-00ch], al                    ; 88 46 f4
    6862     mov bx, 00e14h                            ; bb 14 0e
     6859    mov bx, 00db8h                            ; bb b8 0d
    68636860    mov cx, ds                                ; 8c d9
    68646861    mov ax, strict word 00004h                ; b8 04 00
     
    73997396    test al, al                               ; 84 c0
    74007397    jne short 05307h                          ; 75 19
    7401     mov bx, 00e14h                            ; bb 14 0e
     7398    mov bx, 00db8h                            ; bb b8 0d
    74027399    mov cx, ds                                ; 8c d9
    74037400    mov ax, strict word 00004h                ; b8 04 00
     
    77167713    cmp byte [bp-00ch], 058h                  ; 80 7e f4 58
    77177714    jbe short 0567bh                          ; 76 1e
    7718     mov bx, 00e14h                            ; bb 14 0e
     7715    mov bx, 00db8h                            ; bb b8 0d
    77197716    mov cx, ds                                ; 8c d9
    77207717    mov ax, strict word 00004h                ; b8 04 00
     
    77327729    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77337730    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7734     mov dl, byte [bx+00e68h]                  ; 8a 97 68 0e
    7735     mov ax, word [bx+00e68h]                  ; 8b 87 68 0e
     7731    mov dl, byte [bx+00e0ch]                  ; 8a 97 0c 0e
     7732    mov ax, word [bx+00e0ch]                  ; 8b 87 0c 0e
    77367733    jmp near 05722h                           ; e9 8e 00
    77377734    test AL, strict byte 004h                 ; a8 04
     
    77397736    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77407737    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7741     mov dl, byte [bx+00e66h]                  ; 8a 97 66 0e
    7742     mov ax, word [bx+00e66h]                  ; 8b 87 66 0e
     7738    mov dl, byte [bx+00e0ah]                  ; 8a 97 0a 0e
     7739    mov ax, word [bx+00e0ah]                  ; 8b 87 0a 0e
    77437740    jmp near 05722h                           ; e9 78 00
    77447741    mov al, byte [bp-004h]                    ; 8a 46 fc
     
    77597756    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77607757    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7761     movzx ax, byte [bx+00e6ah]                ; 0f b6 87 6a 0e
     7758    movzx ax, byte [bx+00e0eh]                ; 0f b6 87 0e 0e
    77627759    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    77637760    test dx, ax                               ; 85 c2
    77647761    je short 056ech                           ; 74 0a
    7765     mov dl, byte [bx+00e62h]                  ; 8a 97 62 0e
    7766     mov ax, word [bx+00e62h]                  ; 8b 87 62 0e
     7762    mov dl, byte [bx+00e06h]                  ; 8a 97 06 0e
     7763    mov ax, word [bx+00e06h]                  ; 8b 87 06 0e
    77677764    jmp short 056f4h                          ; eb 08
    7768     mov dl, byte [bx+00e64h]                  ; 8a 97 64 0e
    7769     mov ax, word [bx+00e64h]                  ; 8b 87 64 0e
     7765    mov dl, byte [bx+00e08h]                  ; 8a 97 08 0e
     7766    mov ax, word [bx+00e08h]                  ; 8b 87 08 0e
    77707767    shr ax, 008h                              ; c1 e8 08
    77717768    mov byte [bp-00ch], al                    ; 88 46 f4
     
    77737770    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    77747771    imul bx, bx, strict byte 0000ah           ; 6b db 0a
    7775     movzx ax, byte [bx+00e6ah]                ; 0f b6 87 6a 0e
     7772    movzx ax, byte [bx+00e0eh]                ; 0f b6 87 0e 0e
    77767773    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
    77777774    test dx, ax                               ; 85 c2
    77787775    je short 0571ah                           ; 74 0a
    7779     mov dl, byte [bx+00e64h]                  ; 8a 97 64 0e
    7780     mov ax, word [bx+00e64h]                  ; 8b 87 64 0e
     7776    mov dl, byte [bx+00e08h]                  ; 8a 97 08 0e
     7777    mov ax, word [bx+00e08h]                  ; 8b 87 08 0e
    77817778    jmp short 05722h                          ; eb 08
    7782     mov dl, byte [bx+00e62h]                  ; 8a 97 62 0e
    7783     mov ax, word [bx+00e62h]                  ; 8b 87 62 0e
     7779    mov dl, byte [bx+00e06h]                  ; 8a 97 06 0e
     7780    mov ax, word [bx+00e06h]                  ; 8b 87 06 0e
    77847781    shr ax, 008h                              ; c1 e8 08
    77857782    mov byte [bp-00ch], al                    ; 88 46 f4
     
    77887785    test dl, dl                               ; 84 d2
    77897786    jne short 05748h                          ; 75 16
    7790     mov bx, 00e14h                            ; bb 14 0e
     7787    mov bx, 00db8h                            ; bb b8 0d
    77917788    mov cx, ds                                ; 8c d9
    77927789    mov ax, strict word 00004h                ; b8 04 00
     
    81428139    or ah, 080h                               ; 80 cc 80
    81438140    jmp near 0595bh                           ; e9 d4 fe
    8144     mov bx, 00e14h                            ; bb 14 0e
     8141    mov bx, 00db8h                            ; bb b8 0d
    81458142    mov cx, ds                                ; 8c d9
    81468143    mov ax, strict word 00004h                ; b8 04 00
     
    81538150    call 01a6bh                               ; e8 ca bf
    81548151    add sp, strict byte 00006h                ; 83 c4 06
    8155     mov bx, 00e14h                            ; bb 14 0e
     8152    mov bx, 00db8h                            ; bb b8 0d
    81568153    mov cx, ds                                ; 8c d9
    81578154    mov ax, strict word 00004h                ; b8 04 00
     
    81888185    mov dx, word [bp+00ch]                    ; 8b 56 0c
    81898186    mov si, strict word 00020h                ; be 20 00
    8190     call 0a120h                               ; e8 25 46
     8187    call 0a0e0h                               ; e8 e5 45
    81918188    test ax, ax                               ; 85 c0
    81928189    jne short 05b0bh                          ; 75 0c
     
    82268223    mov bx, strict word 0003fh                ; bb 3f 00
    82278224    xor cx, cx                                ; 31 c9
    8228     call 0a0a0h                               ; e8 4c 45
     8225    call 0a060h                               ; e8 0c 45
    82298226    mov bx, ax                                ; 89 c3
    82308227    mov cx, dx                                ; 89 d1
    82318228    mov ax, word [bp-004h]                    ; 8b 46 fc
    82328229    mov dx, si                                ; 89 f2
    8233     call 0a0e0h                               ; e8 80 45
     8230    call 0a0a0h                               ; e8 40 45
    82348231    mov word [es:di+002h], ax                 ; 26 89 45 02
    82358232    cmp ax, 00400h                            ; 3d 00 04
     
    83888385    test ax, ax                               ; 85 c0
    83898386    jne short 05cf4h                          ; 75 23
    8390     mov bx, 00e14h                            ; bb 14 0e
     8387    mov bx, 00db8h                            ; bb b8 0d
    83918388    mov cx, ds                                ; 8c d9
    83928389    mov ax, strict word 00004h                ; b8 04 00
     
    84178414    cmp ax, dx                                ; 39 d0
    84188415    jbe short 05d4fh                          ; 76 2e
    8419     mov bx, 00e14h                            ; bb 14 0e
     8416    mov bx, 00db8h                            ; bb b8 0d
    84208417    mov cx, ds                                ; 8c d9
    84218418    mov ax, strict word 00004h                ; b8 04 00
     
    84558452    mov bx, cx                                ; 89 cb
    84568453    xor cx, cx                                ; 31 c9
    8457     call 0a0a0h                               ; e8 17 43
     8454    call 0a060h                               ; e8 d7 42
    84588455    xor bx, bx                                ; 31 db
    84598456    add ax, word [bp-008h]                    ; 03 46 f8
     
    84618458    mov bx, word [bp-00ah]                    ; 8b 5e f6
    84628459    xor cx, cx                                ; 31 c9
    8463     call 0a0a0h                               ; e8 08 43
     8460    call 0a060h                               ; e8 c8 42
    84648461    xor bx, bx                                ; 31 db
    84658462    add ax, word [bp-006h]                    ; 03 46 fa
     
    85178514    test dl, dl                               ; 84 d2
    85188515    je near 05c52h                            ; 0f 84 0a fe
    8519     mov bx, 00e14h                            ; bb 14 0e
     8516    mov bx, 00db8h                            ; bb b8 0d
    85208517    mov cx, ds                                ; 8c d9
    85218518    mov ax, strict word 00004h                ; b8 04 00
     
    85358532    or ah, 00ch                               ; 80 cc 0c
    85368533    jmp near 05fc8h                           ; e9 51 01
    8537     mov bx, 00e14h                            ; bb 14 0e
     8534    mov bx, 00db8h                            ; bb b8 0d
    85388535    mov cx, ds                                ; 8c d9
    85398536    mov ax, strict word 00004h                ; b8 04 00
     
    86218618    mov bx, word [bp-008h]                    ; 8b 5e f8
    86228619    xor cx, cx                                ; 31 c9
    8623     call 0a0a0h                               ; e8 40 41
     8620    call 0a060h                               ; e8 00 41
    86248621    mov bx, word [bp-006h]                    ; 8b 5e fa
    86258622    xor cx, cx                                ; 31 c9
    8626     call 0a0a0h                               ; e8 38 41
     8623    call 0a060h                               ; e8 f8 40
    86278624    mov word [bp-010h], ax                    ; 89 46 f0
    86288625    mov word [bp-00eh], dx                    ; 89 56 f2
     
    86348631    mov word [bp+016h], ax                    ; 89 46 16
    86358632    jmp near 05c56h                           ; e9 d4 fc
    8636     mov bx, 00e14h                            ; bb 14 0e
     8633    mov bx, 00db8h                            ; bb b8 0d
    86378634    mov cx, ds                                ; 8c d9
    86388635    mov ax, strict word 00004h                ; b8 04 00
     
    86478644    add sp, strict byte 00008h                ; 83 c4 08
    86488645    jmp near 05c52h                           ; e9 ad fc
    8649     mov bx, 00e14h                            ; bb 14 0e
     8646    mov bx, 00db8h                            ; bb b8 0d
    86508647    mov cx, ds                                ; 8c d9
    86518648    mov ax, strict word 00004h                ; b8 04 00
     
    87618758    xor bx, bx                                ; 31 db
    87628759    mov si, strict word 00020h                ; be 20 00
    8763     call 0a130h                               ; e8 44 40
     8760    call 0a0f0h                               ; e8 04 40
    87648761    mov word [bp-00eh], bx                    ; 89 5e f2
    87658762    mov bx, word [es:di+008h]                 ; 26 8b 5d 08
     
    87868783    cmp dx, word [es:di+036h]                 ; 26 3b 55 36
    87878784    jc short 06156h                           ; 72 23
    8788     mov bx, 00e14h                            ; bb 14 0e
     8785    mov bx, 00db8h                            ; bb b8 0d
    87898786    mov cx, ds                                ; 8c d9
    87908787    mov ax, strict word 00004h                ; b8 04 00
     
    88428839    test dl, dl                               ; 84 d2
    88438840    je near 0648dh                            ; 0f 84 a8 02
    8844     mov bx, 00e14h                            ; bb 14 0e
     8841    mov bx, 00db8h                            ; bb b8 0d
    88458842    mov cx, ds                                ; 8c d9
    88468843    mov ax, strict word 00004h                ; b8 04 00
     
    89128909    mov bx, word [bp-00eh]                    ; 8b 5e f2
    89138910    mov si, strict word 00020h                ; be 20 00
    8914     call 0a120h                               ; e8 5a 3e
     8911    call 0a0e0h                               ; e8 1a 3e
    89158912    mov bx, di                                ; 89 fb
    89168913    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    90889085    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
    90899086    jmp short 064a0h                          ; eb c4
    9090     mov bx, 00e14h                            ; bb 14 0e
     9087    mov bx, 00db8h                            ; bb b8 0d
    90919088    mov cx, ds                                ; 8c d9
    90929089    mov ax, strict word 00004h                ; b8 04 00
     
    92699266    mov bx, strict word 0000fh                ; bb 0f 00
    92709267    xor cx, cx                                ; 31 c9
    9271     call 0a0e0h                               ; e8 81 3a
     9268    call 0a0a0h                               ; e8 41 3a
    92729269    mov cx, ax                                ; 89 c1
    92739270    mov bx, dx                                ; 89 d3
     
    94279424    mov word [bp+00ch], ax                    ; 89 46 0c
    94289425    jmp near 06827h                           ; e9 2b 00
    9429     mov bx, 00e14h                            ; bb 14 0e
     9426    mov bx, 00db8h                            ; bb b8 0d
    94309427    mov cx, ds                                ; 8c d9
    94319428    mov ax, strict word 00004h                ; b8 04 00
     
    96149611    retf                                      ; cb
    96159612    jmp near 06827h                           ; e9 50 fe
    9616     mov bx, 00e14h                            ; bb 14 0e
     9613    mov bx, 00db8h                            ; bb b8 0d
    96179614    mov cx, ds                                ; 8c d9
    96189615    mov ax, strict word 00004h                ; b8 04 00
     
    96549651    or byte [bp+018h], 001h                   ; 80 4e 18 01
    96559652    jmp near 06827h                           ; e9 da fd
    9656     mov bx, 00e14h                            ; bb 14 0e
     9653    mov bx, 00db8h                            ; bb b8 0d
    96579654    mov cx, ds                                ; 8c d9
    96589655    mov ax, strict word 00004h                ; b8 04 00
     
    99709967    mov word [bp+014h], dx                    ; 89 56 14
    99719968    jmp short 06e0fh                          ; eb 2a
    9972     mov bx, 00e14h                            ; bb 14 0e
     9969    mov bx, 00db8h                            ; bb b8 0d
    99739970    mov cx, ds                                ; 8c d9
    99749971    mov ax, strict word 00004h                ; b8 04 00
     
    1059010587    je short 07443h                           ; 74 0e
    1059110588    push 00900h                               ; 68 00 09
    10592     push 011dch                               ; 68 dc 11
     10589    push 01180h                               ; 68 80 11
    1059310590    push strict byte 00007h                   ; 6a 07
    1059410591    call 01a6bh                               ; e8 2b a6
     
    1067010667    je short 074d3h                           ; 74 0e
    1067110668    push 0090ah                               ; 68 0a 09
    10672     push 011dch                               ; 68 dc 11
     10669    push 01180h                               ; 68 80 11
    1067310670    push strict byte 00007h                   ; 6a 07
    1067410671    call 01a6bh                               ; e8 9b a5
     
    1212412121    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    1212512122    jne short 08261h                          ; 75 1f
    12126     mov bx, 00e14h                            ; bb 14 0e
     12123    mov bx, 00db8h                            ; bb b8 0d
    1212712124    mov cx, ds                                ; 8c d9
    1212812125    mov ax, strict word 00004h                ; b8 04 00
     
    1227912276    mov dx, ss                                ; 8c d2
    1228012277    lea ax, [bp-046h]                         ; 8d 46 ba
    12281     call 0a140h                               ; e8 89 1d
     12278    call 0a100h                               ; e8 49 1d
    1228212279    mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
    1228312280    mov byte [bp-045h], 010h                  ; c6 46 bb 10
     
    1233812335    cmp bx, 00200h                            ; 81 fb 00 02
    1233912336    je short 0847ch                           ; 74 20
    12340     mov bx, 00e14h                            ; bb 14 0e
     12337    mov bx, 00db8h                            ; bb b8 0d
    1234112338    mov cx, ds                                ; 8c d9
    1234212339    mov ax, strict word 00004h                ; b8 04 00
     
    1240412401    mov dx, word [bp-016h]                    ; 8b 56 ea
    1240512402    mov si, strict word 0000ch                ; be 0c 00
    12406     call 0a120h                               ; e8 26 1c
     12403    call 0a0e0h                               ; e8 e6 1b
    1240712404    mov word [bp-018h], ax                    ; 89 46 e8
    1240812405    mov word [bp-014h], bx                    ; 89 5e ec
     
    1242412421    mov dx, word [bp-016h]                    ; 8b 56 ea
    1242512422    mov si, strict word 00006h                ; be 06 00
    12426     call 0a120h                               ; e8 e6 1b
     12423    call 0a0e0h                               ; e8 a6 1b
    1242712424    mov si, word [bp-020h]                    ; 8b 76 e0
    1242812425    add si, dx                                ; 01 d6
     
    1244212439    mov dx, si                                ; 89 f2
    1244312440    mov si, strict word 00008h                ; be 08 00
    12444     call 0a120h                               ; e8 b6 1b
     12441    call 0a0e0h                               ; e8 76 1b
    1244512442    mov word [bp-022h], bx                    ; 89 5e de
    1244612443    mov word [bp-02ch], cx                    ; 89 4e d4
     
    1245112448    mov dx, word [bp-02ah]                    ; 8b 56 d6
    1245212449    mov si, strict word 00010h                ; be 10 00
    12453     call 0a120h                               ; e8 9b 1b
     12450    call 0a0e0h                               ; e8 5b 1b
    1245412451    mov si, word [bp-01ah]                    ; 8b 76 e6
    1245512452    add si, dx                                ; 01 d6
     
    1247512472    mov dx, word [bp-016h]                    ; 8b 56 ea
    1247612473    mov si, strict word 0000bh                ; be 0b 00
    12477     call 0a120h                               ; e8 53 1b
     12474    call 0a0e0h                               ; e8 13 1b
    1247812475    mov si, dx                                ; 89 d6
    1247912476    mov dx, cx                                ; 89 ca
     
    1251612513    mov word [es:bx+02ch], si                 ; 26 89 77 2c
    1251712514    mov word [es:bx+032h], si                 ; 26 89 77 32
    12518     mov bx, 00e14h                            ; bb 14 0e
     12515    mov bx, 00db8h                            ; bb b8 0d
    1251912516    mov cx, ds                                ; 8c d9
    1252012517    mov ax, strict word 00004h                ; b8 04 00
     
    1256612563    inc byte [bp-00ch]                        ; fe 46 f4
    1256712564    jmp near 08770h                           ; e9 8b 00
    12568     mov bx, 00e14h                            ; bb 14 0e
     12565    mov bx, 00db8h                            ; bb b8 0d
    1256912566    mov cx, ds                                ; 8c d9
    1257012567    mov ax, strict word 00004h                ; b8 04 00
     
    1266312660    pop bp                                    ; 5d
    1266412661    retn                                      ; c3
    12665 scsi_pci_init_:                              ; 0xf8802 LB 0x6c
     12662scsi_pci_init_:                              ; 0xf8802 LB 0x2d
    1266612663    push bp                                   ; 55
    1266712664    mov bp, sp                                ; 89 e5
     
    1266912666    push cx                                   ; 51
    1267012667    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
     12668    call 09ec7h                               ; e8 bc 16
    1267512669    mov dx, ax                                ; 89 c2
    1267612670    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
     12671    je short 08827h                           ; 74 15
    1270212672    movzx si, dl                              ; 0f b6 f2
    1270312673    mov ax, dx                                ; 89 d0
     
    1270712677    mov bx, strict word 00004h                ; bb 04 00
    1270812678    mov dx, si                                ; 89 f2
    12709     call 09f98h                               ; e8 33 17
    12710     lea sp, [bp-008h]                         ; 8d 66 f8
    12711     pop di                                    ; 5f
     12679    call 09f59h                               ; e8 32 17
     12680    lea sp, [bp-006h]                         ; 8d 66 fa
    1271212681    pop si                                    ; 5e
    1271312682    pop cx                                    ; 59
     
    1271512684    pop bp                                    ; 5d
    1271612685    retn                                      ; c3
    12717 _scsi_init:                                  ; 0xf886e LB 0x81
     12686_scsi_init:                                  ; 0xf882f LB 0x81
    1271812687    push bp                                   ; 55
    1271912688    mov bp, sp                                ; 89 e5
    1272012689    mov dx, strict word 0000eh                ; ba 0e 00
    1272112690    mov ax, strict word 00040h                ; b8 40 00
    12722     call 01765h                               ; e8 eb 8e
     12691    call 01765h                               ; e8 2a 8f
    1272312692    mov bx, 00122h                            ; bb 22 01
    1272412693    mov es, ax                                ; 8e c0
     
    1273112700    ; sub ah, ah                                ; 2a e4
    1273212701    cmp AL, strict byte 055h                  ; 3c 55
    12733     jne short 088a7h                          ; 75 15
     12702    jne short 08868h                          ; 75 15
    1273412703    xor al, al                                ; 30 c0
    1273512704    mov dx, 00433h                            ; ba 33 04
    1273612705    out DX, AL                                ; ee
    1273712706    mov ax, 00430h                            ; b8 30 04
    12738     call 08380h                               ; e8 e2 fa
     12707    call 08380h                               ; e8 21 fb
    1273912708    mov dx, 01040h                            ; ba 40 10
    1274012709    mov ax, 0104bh                            ; b8 4b 10
    12741     call 08802h                               ; e8 5b ff
     12710    call 08802h                               ; e8 9a ff
    1274212711    mov AL, strict byte 055h                  ; b0 55
    1274312712    mov dx, 00436h                            ; ba 36 04
     
    1274712716    ; sub ah, ah                                ; 2a e4
    1274812717    cmp AL, strict byte 055h                  ; 3c 55
    12749     jne short 088c9h                          ; 75 15
     12718    jne short 0888ah                          ; 75 15
    1275012719    xor al, al                                ; 30 c0
    1275112720    mov dx, 00437h                            ; ba 37 04
    1275212721    out DX, AL                                ; ee
    1275312722    mov ax, 00434h                            ; b8 34 04
    12754     call 08380h                               ; e8 c0 fa
     12723    call 08380h                               ; e8 ff fa
    1275512724    mov dx, strict word 00030h                ; ba 30 00
    1275612725    mov ax, 01000h                            ; b8 00 10
    12757     call 08802h                               ; e8 39 ff
     12726    call 08802h                               ; e8 78 ff
    1275812727    mov AL, strict byte 055h                  ; b0 55
    1275912728    mov dx, 0043ah                            ; ba 3a 04
     
    1276312732    ; sub ah, ah                                ; 2a e4
    1276412733    cmp AL, strict byte 055h                  ; 3c 55
    12765     jne short 088ebh                          ; 75 15
     12734    jne short 088ach                          ; 75 15
    1276612735    xor al, al                                ; 30 c0
    1276712736    mov dx, 0043bh                            ; ba 3b 04
    1276812737    out DX, AL                                ; ee
    1276912738    mov ax, 00438h                            ; b8 38 04
    12770     call 08380h                               ; e8 9e fa
     12739    call 08380h                               ; e8 dd fa
    1277112740    mov dx, strict word 00054h                ; ba 54 00
    1277212741    mov ax, 01000h                            ; b8 00 10
    12773     call 08802h                               ; e8 17 ff
     12742    call 08802h                               ; e8 56 ff
    1277412743    mov sp, bp                                ; 89 ec
    1277512744    pop bp                                    ; 5d
    1277612745    retn                                      ; c3
    12777 ahci_ctrl_extract_bits_:                     ; 0xf88ef LB 0x1b
     12746ahci_ctrl_extract_bits_:                     ; 0xf88b0 LB 0x1b
    1277812747    push si                                   ; 56
    1277912748    push bp                                   ; 55
     
    1278312752    and dx, cx                                ; 21 ca
    1278412753    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
    12785     jcxz 08905h                               ; e3 06
     12754    jcxz 088c6h                               ; e3 06
    1278612755    shr dx, 1                                 ; d1 ea
    1278712756    rcr ax, 1                                 ; d1 d8
    12788     loop 088ffh                               ; e2 fa
     12757    loop 088c0h                               ; e2 fa
    1278912758    pop bp                                    ; 5d
    1279012759    pop si                                    ; 5e
    1279112760    retn 00002h                               ; c2 02 00
    12792 ahci_addr_to_phys_:                          ; 0xf890a LB 0x1e
     12761ahci_addr_to_phys_:                          ; 0xf88cb LB 0x1e
    1279312762    push bx                                   ; 53
    1279412763    push cx                                   ; 51
     
    1280112770    sal ax, 1                                 ; d1 e0
    1280212771    rcl dx, 1                                 ; d1 d2
    12803     loop 08918h                               ; e2 fa
     12772    loop 088d9h                               ; e2 fa
    1280412773    xor cx, cx                                ; 31 c9
    1280512774    add ax, bx                                ; 01 d8
     
    1280912778    pop bx                                    ; 5b
    1281012779    retn                                      ; c3
    12811 ahci_port_cmd_sync_:                         ; 0xf8928 LB 0x14b
     12780ahci_port_cmd_sync_:                         ; 0xf88e9 LB 0x14b
    1281212781    push bp                                   ; 55
    1281312782    mov bp, sp                                ; 89 e5
     
    1282412793    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1282512794    cmp ah, 0ffh                              ; 80 fc ff
    12826     je near 08a6bh                            ; 0f 84 20 01
     12795    je near 08a2ch                            ; 0f 84 20 01
    1282712796    movzx dx, byte [es:si+00263h]             ; 26 0f b6 94 63 02
    1282812797    xor di, di                                ; 31 ff
     
    1283612805    lea ax, [si+00080h]                       ; 8d 84 80 00
    1283712806    mov dx, cx                                ; 89 ca
    12838     call 0890ah                               ; e8 96 ff
     12807    call 088cbh                               ; e8 96 ff
    1283912808    mov es, cx                                ; 8e c1
    1284012809    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1289912868    xchg dx, ax                               ; 92
    1290012869    test dh, 040h                             ; f6 c6 40
    12901     jne short 08a01h                          ; 75 04
     12870    jne short 089c2h                          ; 75 04
    1290212871    test AL, strict byte 001h                 ; a8 01
    12903     je short 08a05h                           ; 74 04
     12872    je short 089c6h                           ; 74 04
    1290412873    mov AL, strict byte 001h                  ; b0 01
    12905     jmp short 08a07h                          ; eb 02
     12874    jmp short 089c8h                          ; eb 02
    1290612875    xor al, al                                ; 30 c0
    1290712876    test al, al                               ; 84 c0
    12908     je short 089d5h                           ; 74 ca
     12877    je short 08996h                           ; 74 ca
    1290912878    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
    1291012879    sal di, 007h                              ; c1 e7 07
     
    1296012929    pop bp                                    ; 5d
    1296112930    retn                                      ; c3
    12962 ahci_cmd_data_:                              ; 0xf8a73 LB 0x262
     12931ahci_cmd_data_:                              ; 0xf8a34 LB 0x262
    1296312932    push bp                                   ; 55
    1296412933    mov bp, sp                                ; 89 e5
     
    1298512954    mov ax, 00080h                            ; b8 80 00
    1298612955    mov dx, word [bp-00ah]                    ; 8b 56 f6
    12987     call 0a140h                               ; e8 8f 16
     12956    call 0a100h                               ; e8 8e 16
    1298812957    mov es, [bp-00ah]                         ; 8e 46 f6
    1298912958    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1300312972    mov dx, word [es:si]                      ; 26 8b 14
    1300412973    mov si, strict word 00008h                ; be 08 00
    13005     call 0a120h                               ; e8 2b 16
     12974    call 0a0e0h                               ; e8 2a 16
    1300612975    mov es, [bp-00ah]                         ; 8e 46 f6
    1300712976    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1301412983    mov dx, word [es:si]                      ; 26 8b 14
    1301512984    mov si, strict word 00010h                ; be 10 00
    13016     call 0a120h                               ; e8 05 16
     12985    call 0a0e0h                               ; e8 04 16
    1301712986    mov es, [bp-00ah]                         ; 8e 46 f6
    1301812987    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1302612995    mov dx, word [es:si]                      ; 26 8b 14
    1302712996    mov si, strict word 00018h                ; be 18 00
    13028     call 0a120h                               ; e8 d9 15
     12997    call 0a0e0h                               ; e8 d8 15
    1302912998    mov es, [bp-00ah]                         ; 8e 46 f6
    1303012999    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1303713006    mov dx, word [es:si]                      ; 26 8b 14
    1303813007    mov si, strict word 00020h                ; be 20 00
    13039     call 0a120h                               ; e8 b3 15
     13008    call 0a0e0h                               ; e8 b2 15
    1304013009    mov es, [bp-00ah]                         ; 8e 46 f6
    1304113010    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1304813017    mov dx, word [es:si]                      ; 26 8b 14
    1304913018    mov si, strict word 00028h                ; be 28 00
    13050     call 0a120h                               ; e8 8d 15
     13019    call 0a0e0h                               ; e8 8c 15
    1305113020    mov es, [bp-00ah]                         ; 8e 46 f6
    1305213021    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1306213031    mov bx, word [bp-010h]                    ; 8b 5e f0
    1306313032    xor cx, cx                                ; 31 c9
    13064     call 0a0a0h                               ; e8 d8 14
     13033    call 0a060h                               ; e8 d7 14
    1306513034    push dx                                   ; 52
    1306613035    push ax                                   ; 50
     
    1307213041    mov ax, 0026ah                            ; b8 6a 02
    1307313042    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13074     call 09fefh                               ; e8 0b 14
     13043    call 09fb0h                               ; e8 0b 14
    1307513044    mov es, [bp-00ah]                         ; 8e 46 f6
    1307613045    mov ax, word [es:di+0027eh]               ; 26 8b 85 7e 02
     
    1309313062    mov ax, word [es:bx+020h]                 ; 26 8b 47 20
    1309413063    test ax, ax                               ; 85 c0
    13095     je short 08c72h                           ; 74 39
     13064    je short 08c33h                           ; 74 39
    1309613065    dec ax                                    ; 48
    1309713066    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1310913078    mov al, byte [bp-008h]                    ; 8a 46 f8
    1311013079    cmp AL, strict byte 035h                  ; 3c 35
    13111     jne short 08c7fh                          ; 75 06
     13080    jne short 08c40h                          ; 75 06
    1311213081    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    13113     jmp short 08c96h                          ; eb 17
     13082    jmp short 08c57h                          ; eb 17
    1311413083    cmp AL, strict byte 0a0h                  ; 3c a0
    13115     jne short 08c92h                          ; 75 0f
     13084    jne short 08c53h                          ; 75 0f
    1311613085    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1311713086    les bx, [bp-00eh]                         ; c4 5e f2
    1311813087    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    13119     jmp short 08c96h                          ; eb 04
     13088    jmp short 08c57h                          ; eb 04
    1312013089    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1312113090    or byte [bp-008h], 005h                   ; 80 4e f8 05
     
    1312313092    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1312413093    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13125     call 08928h                               ; e8 81 fc
     13094    call 088e9h                               ; e8 81 fc
    1312613095    mov cx, word [bp-00ch]                    ; 8b 4e f4
    1312713096    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1313013099    add ax, 0026ah                            ; 05 6a 02
    1313113100    mov dx, cx                                ; 89 ca
    13132     call 0a068h                               ; e8 ac 13
     13101    call 0a029h                               ; e8 ac 13
    1313313102    mov es, cx                                ; 8e c1
    1313413103    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
    1313513104    test al, al                               ; 84 c0
    13136     je short 08ccbh                           ; 74 05
     13105    je short 08c8ch                           ; 74 05
    1313713106    mov ax, strict word 00004h                ; b8 04 00
    13138     jmp short 08ccdh                          ; eb 02
     13107    jmp short 08c8eh                          ; eb 02
    1313913108    xor ah, ah                                ; 30 e4
    1314013109    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1314413113    pop bp                                    ; 5d
    1314513114    retn                                      ; c3
    13146 ahci_port_deinit_current_:                   ; 0xf8cd5 LB 0x17f
     13115ahci_port_deinit_current_:                   ; 0xf8c96 LB 0x17f
    1314713116    push bp                                   ; 55
    1314813117    mov bp, sp                                ; 89 e5
     
    1315913128    mov byte [bp-00ah], al                    ; 88 46 f6
    1316013129    cmp AL, strict byte 0ffh                  ; 3c ff
    13161     je near 08e4bh                            ; 0f 84 52 01
     13130    je near 08e0ch                            ; 0f 84 52 01
    1316213131    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1316313132    sal ax, 007h                              ; c1 e0 07
     
    1320213171    xchg dx, ax                               ; 92
    1320313172    test ax, 0c011h                           ; a9 11 c0
    13204     je short 08d59h                           ; 74 04
     13173    je short 08d1ah                           ; 74 04
    1320513174    mov AL, strict byte 001h                  ; b0 01
    13206     jmp short 08d5bh                          ; eb 02
     13175    jmp short 08d1ch                          ; eb 02
    1320713176    xor al, al                                ; 30 c0
    1320813177    cmp AL, strict byte 001h                  ; 3c 01
    13209     je short 08d2dh                           ; 74 ce
     13178    je short 08ceeh                           ; 74 ce
    1321013179    mov cx, strict word 00020h                ; b9 20 00
    1321113180    xor bx, bx                                ; 31 db
    1321213181    mov ax, di                                ; 89 f8
    1321313182    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13214     call 0a140h                               ; e8 d4 13
     13183    call 0a100h                               ; e8 d3 13
    1321513184    lea ax, [di+00080h]                       ; 8d 85 80 00
    1321613185    mov cx, strict word 00040h                ; b9 40 00
    1321713186    xor bx, bx                                ; 31 db
    1321813187    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13219     call 0a140h                               ; e8 c5 13
     13188    call 0a100h                               ; e8 c4 13
    1322013189    lea ax, [di+00200h]                       ; 8d 85 00 02
    1322113190    mov cx, strict word 00060h                ; b9 60 00
    1322213191    xor bx, bx                                ; 31 db
    1322313192    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13224     call 0a140h                               ; e8 b6 13
     13193    call 0a100h                               ; e8 b5 13
    1322513194    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1322613195    sal ax, 007h                              ; c1 e0 07
     
    1332613295    pop bp                                    ; 5d
    1332713296    retn                                      ; c3
    13328 ahci_port_init_:                             ; 0xf8e54 LB 0x24a
     13297ahci_port_init_:                             ; 0xf8e15 LB 0x24a
    1332913298    push bp                                   ; 55
    1333013299    mov bp, sp                                ; 89 e5
     
    1333613305    mov word [bp-00ah], dx                    ; 89 56 f6
    1333713306    mov byte [bp-008h], bl                    ; 88 5e f8
    13338     call 08cd5h                               ; e8 6d fe
     13307    call 08c96h                               ; e8 6d fe
    1333913308    movzx ax, bl                              ; 0f b6 c3
    1334013309    sal ax, 007h                              ; c1 e0 07
     
    1338313352    xchg dx, ax                               ; 92
    1338413353    test ax, 0c011h                           ; a9 11 c0
    13385     je short 08ed7h                           ; 74 04
     13354    je short 08e98h                           ; 74 04
    1338613355    mov AL, strict byte 001h                  ; b0 01
    13387     jmp short 08ed9h                          ; eb 02
     13356    jmp short 08e9ah                          ; eb 02
    1338813357    xor al, al                                ; 30 c0
    1338913358    cmp AL, strict byte 001h                  ; 3c 01
    13390     je short 08ea3h                           ; 74 c6
     13359    je short 08e64h                           ; 74 c6
    1339113360    mov cx, strict word 00020h                ; b9 20 00
    1339213361    xor bx, bx                                ; 31 db
    1339313362    mov ax, si                                ; 89 f0
    1339413363    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13395     call 0a140h                               ; e8 56 12
     13364    call 0a100h                               ; e8 55 12
    1339613365    lea ax, [si+00080h]                       ; 8d 84 80 00
    1339713366    mov cx, strict word 00040h                ; b9 40 00
    1339813367    xor bx, bx                                ; 31 db
    1339913368    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13400     call 0a140h                               ; e8 47 12
     13369    call 0a100h                               ; e8 46 12
    1340113370    lea di, [si+00200h]                       ; 8d bc 00 02
    1340213371    mov cx, strict word 00060h                ; b9 60 00
     
    1340413373    mov ax, di                                ; 89 f8
    1340513374    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13406     call 0a140h                               ; e8 36 12
     13375    call 0a100h                               ; e8 35 12
    1340713376    movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
    1340813377    sal bx, 007h                              ; c1 e3 07
     
    1342113390    mov ax, di                                ; 89 f8
    1342213391    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13423     call 0890ah                               ; e8 d3 f9
     13392    call 088cbh                               ; e8 d3 f9
    1342413393    mov es, [bp-00ah]                         ; 8e 46 f6
    1342513394    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1346613435    mov ax, si                                ; 89 f0
    1346713436    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13468     call 0890ah                               ; e8 67 f9
     13437    call 088cbh                               ; e8 67 f9
    1346913438    mov es, [bp-00ah]                         ; 8e 46 f6
    1347013439    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1357113540    pop bp                                    ; 5d
    1357213541    retn                                      ; c3
    13573 @ahci_read_sectors:                          ; 0xf909e LB 0xa6
     13542@ahci_read_sectors:                          ; 0xf905f LB 0xa6
    1357413543    push bp                                   ; 55
    1357513544    mov bp, sp                                ; 89 e5
     
    1358113550    sub di, strict byte 0000ch                ; 83 ef 0c
    1358213551    cmp di, strict byte 00004h                ; 83 ff 04
    13583     jbe short 090c3h                          ; 76 0f
     13552    jbe short 09084h                          ; 76 0f
    1358413553    push di                                   ; 57
    13585     push 00cd6h                               ; 68 d6 0c
    13586     push 00ce8h                               ; 68 e8 0c
     13554    push 00c74h                               ; 68 74 0c
     13555    push 00c86h                               ; 68 86 0c
    1358713556    push strict byte 00007h                   ; 6a 07
    13588     call 01a6bh                               ; e8 ab 89
     13557    call 01a6bh                               ; e8 ea 89
    1358913558    add sp, strict byte 00008h                ; 83 c4 08
    1359013559    xor bx, bx                                ; 31 db
     
    1360013569    mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
    1360113570    xor ax, ax                                ; 31 c0
    13602     call 08e54h                               ; e8 65 fd
     13571    call 08e15h                               ; e8 65 fd
    1360313572    mov bx, strict word 00025h                ; bb 25 00
    1360413573    mov ax, si                                ; 89 f0
    1360513574    mov dx, word [bp+006h]                    ; 8b 56 06
    13606     call 08a73h                               ; e8 79 f9
     13575    call 08a34h                               ; e8 79 f9
    1360713576    mov word [bp-006h], ax                    ; 89 46 fa
    1360813577    mov es, [bp+006h]                         ; 8e 46 06
     
    1363313602    pop bp                                    ; 5d
    1363413603    retn 00004h                               ; c2 04 00
    13635 @ahci_write_sectors:                         ; 0xf9144 LB 0x84
     13604@ahci_write_sectors:                         ; 0xf9105 LB 0x84
    1363613605    push bp                                   ; 55
    1363713606    mov bp, sp                                ; 89 e5
     
    1364413613    sub dx, strict byte 0000ch                ; 83 ea 0c
    1364513614    cmp dx, strict byte 00004h                ; 83 fa 04
    13646     jbe short 0916dh                          ; 76 0f
     13615    jbe short 0912eh                          ; 76 0f
    1364713616    push dx                                   ; 52
    13648     push 00d07h                               ; 68 07 0d
    13649     push 00ce8h                               ; 68 e8 0c
     13617    push 00ca5h                               ; 68 a5 0c
     13618    push 00c86h                               ; 68 86 0c
    1365013619    push strict byte 00007h                   ; 6a 07
    13651     call 01a6bh                               ; e8 01 89
     13620    call 01a6bh                               ; e8 40 89
    1365213621    add sp, strict byte 00008h                ; 83 c4 08
    1365313622    xor bx, bx                                ; 31 db
     
    1366313632    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1366413633    xor ax, ax                                ; 31 c0
    13665     call 08e54h                               ; e8 bd fc
     13634    call 08e15h                               ; e8 bd fc
    1366613635    mov bx, strict word 00035h                ; bb 35 00
    1366713636    mov ax, si                                ; 89 f0
    1366813637    mov dx, cx                                ; 89 ca
    13669     call 08a73h                               ; e8 d2 f8
     13638    call 08a34h                               ; e8 d2 f8
    1367013639    mov dx, ax                                ; 89 c2
    1367113640    mov es, cx                                ; 8e c1
     
    1368213651    pop bp                                    ; 5d
    1368313652    retn 00004h                               ; c2 04 00
    13684 ahci_cmd_packet_:                            ; 0xf91c8 LB 0x183
     13653ahci_cmd_packet_:                            ; 0xf9189 LB 0x183
    1368513654    push bp                                   ; 55
    1368613655    mov bp, sp                                ; 89 e5
     
    1369413663    mov dx, strict word 0000eh                ; ba 0e 00
    1369513664    mov ax, strict word 00040h                ; b8 40 00
    13696     call 01765h                               ; e8 82 85
     13665    call 01765h                               ; e8 c1 85
    1369713666    mov si, 00122h                            ; be 22 01
    1369813667    mov word [bp-008h], ax                    ; 89 46 f8
    1369913668    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    13700     jne short 0920eh                          ; 75 1f
    13701     mov bx, 00e14h                            ; bb 14 0e
     13669    jne short 091cfh                          ; 75 1f
     13670    mov bx, 00db8h                            ; bb b8 0d
    1370213671    mov cx, ds                                ; 8c d9
    1370313672    mov ax, strict word 00004h                ; b8 04 00
    13704     call 01a2ah                               ; e8 30 88
    13705     push 00d1ah                               ; 68 1a 0d
    13706     push 00d2ah                               ; 68 2a 0d
     13673    call 01a2ah                               ; e8 6f 88
     13674    push 00cb8h                               ; 68 b8 0c
     13675    push 00cc8h                               ; 68 c8 0c
    1370713676    push strict byte 00004h                   ; 6a 04
    13708     call 01a6bh                               ; e8 66 88
     13677    call 01a6bh                               ; e8 a5 88
    1370913678    add sp, strict byte 00006h                ; 83 c4 06
    1371013679    mov ax, strict word 00001h                ; b8 01 00
    13711     jmp near 09342h                           ; e9 34 01
     13680    jmp near 09303h                           ; e9 34 01
    1371213681    test byte [bp+004h], 001h                 ; f6 46 04 01
    13713     jne short 09208h                          ; 75 f4
     13682    jne short 091c9h                          ; 75 f4
    1371413683    mov ax, word [bp+006h]                    ; 8b 46 06
    1371513684    mov dx, word [bp+008h]                    ; 8b 56 08
     
    1371713686    sal ax, 1                                 ; d1 e0
    1371813687    rcl dx, 1                                 ; d1 d2
    13719     loop 0921dh                               ; e2 fa
     13688    loop 091deh                               ; e2 fa
    1372013689    mov es, [bp-008h]                         ; 8e 46 f8
    1372113690    mov word [es:si], ax                      ; 26 89 04
     
    1373113700    mov dx, word [bp+008h]                    ; 8b 56 08
    1373213701    xor cx, cx                                ; 31 c9
    13733     call 0a0e0h                               ; e8 8d 0e
     13702    call 0a0a0h                               ; e8 8c 0e
    1373413703    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1373513704    xor di, di                                ; 31 ff
     
    1374813717    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1374913718    xor ax, ax                                ; 31 c0
    13750     call 08e54h                               ; e8 c5 fb
     13719    call 08e15h                               ; e8 c5 fb
    1375113720    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    1375213721    push ax                                   ; 50
     
    1375513724    mov ax, 000c0h                            ; b8 c0 00
    1375613725    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13757     call 0a150h                               ; e8 ad 0e
     13726    call 0a110h                               ; e8 ac 0e
    1375813727    mov es, [bp-008h]                         ; 8e 46 f8
    1375913728    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1376213731    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
    1376313732    test ax, ax                               ; 85 c0
    13764     je short 092e1h                           ; 74 27
     13733    je short 092a2h                           ; 74 27
    1376513734    dec ax                                    ; 48
    1376613735    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1377513744    mov ax, si                                ; 89 f0
    1377613745    mov dx, word [bp-008h]                    ; 8b 56 f8
    13777     call 08a73h                               ; e8 87 f7
     13746    call 08a34h                               ; e8 87 f7
    1377813747    les bx, [bp-00eh]                         ; c4 5e f2
    1377913748    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     
    1380213771    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1380313772    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    13804     jne short 09340h                          ; 75 05
     13773    jne short 09301h                          ; 75 05
    1380513774    mov ax, strict word 00004h                ; b8 04 00
    13806     jmp short 09342h                          ; eb 02
     13775    jmp short 09303h                          ; eb 02
    1380713776    xor ax, ax                                ; 31 c0
    1380813777    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1381113780    pop bp                                    ; 5d
    1381213781    retn 0000ch                               ; c2 0c 00
    13813 ahci_port_detect_device_:                    ; 0xf934b LB 0x4b1
     13782ahci_port_detect_device_:                    ; 0xf930c LB 0x4b1
    1381413783    push bp                                   ; 55
    1381513784    mov bp, sp                                ; 89 e5
     
    1382313792    movzx di, bl                              ; 0f b6 fb
    1382413793    mov bx, di                                ; 89 fb
    13825     call 08e54h                               ; e8 ef fa
     13794    call 08e15h                               ; e8 ef fa
    1382613795    mov dx, strict word 0000eh                ; ba 0e 00
    1382713796    mov ax, strict word 00040h                ; b8 40 00
    13828     call 01765h                               ; e8 f7 83
     13797    call 01765h                               ; e8 36 84
    1382913798    mov word [bp-010h], 00122h                ; c7 46 f0 22 01
    1383013799    mov word [bp-00eh], ax                    ; 89 46 f2
     
    1389513864    mov bx, strict word 0000fh                ; bb 0f 00
    1389613865    xor cx, cx                                ; 31 c9
    13897     call 088efh                               ; e8 d7 f4
     13866    call 088b0h                               ; e8 d7 f4
    1389813867    test ax, ax                               ; 85 c0
    13899     je near 097f4h                            ; 0f 84 d6 03
     13868    je near 097b5h                            ; 0f 84 d6 03
    1390013869    movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
    1390113870    sal ax, 007h                              ; c1 e0 07
     
    1392513894    mov bx, strict word 0000fh                ; bb 0f 00
    1392613895    xor cx, cx                                ; 31 c9
    13927     call 088efh                               ; e8 8b f4
     13896    call 088b0h                               ; e8 8b f4
    1392813897    cmp ax, strict word 00001h                ; 3d 01 00
    13929     je short 0941eh                           ; 74 b5
     13898    je short 093dfh                           ; 74 b5
    1393013899    push strict byte 00000h                   ; 6a 00
    1393113900    mov bx, strict word 0000fh                ; bb 0f 00
     
    1393313902    mov ax, di                                ; 89 f8
    1393413903    mov dx, word [bp-022h]                    ; 8b 56 de
    13935     call 088efh                               ; e8 77 f4
     13904    call 088b0h                               ; e8 77 f4
    1393613905    cmp ax, strict word 00003h                ; 3d 03 00
    13937     jne near 097f4h                           ; 0f 85 75 03
     13906    jne near 097b5h                           ; 0f 85 75 03
    1393813907    mov ax, word [bp-018h]                    ; 8b 46 e8
    1393913908    add ax, 00130h                            ; 05 30 01
     
    1396213931    mov byte [bp-008h], al                    ; 88 46 f8
    1396313932    cmp AL, strict byte 004h                  ; 3c 04
    13964     jnc near 097f4h                           ; 0f 83 2f 03
     13933    jnc near 097b5h                           ; 0f 83 2f 03
    1396513934    mov ax, word [bp-018h]                    ; 8b 46 e8
    1396613935    add ax, 00118h                            ; 05 18 01
     
    1401413983    add cl, 00ch                              ; 80 c1 0c
    1401513984    test dx, dx                               ; 85 d2
    14016     jne near 0974ah                           ; 0f 85 0d 02
     13985    jne near 0970bh                           ; 0f 85 0d 02
    1401713986    cmp di, 00101h                            ; 81 ff 01 01
    14018     jne near 0974ah                           ; 0f 85 05 02
     13987    jne near 0970bh                           ; 0f 85 05 02
    1401913988    les bx, [bp-010h]                         ; c4 5e f0
    1402013989    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
     
    1403013999    mov ax, word [bp-010h]                    ; 8b 46 f0
    1403114000    mov dx, es                                ; 8c c2
    14032     call 08a73h                               ; e8 fa f4
     14001    call 08a34h                               ; e8 fa f4
    1403314002    mov byte [bp-00ch], cl                    ; 88 4e f4
    1403414003    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     
    1404714016    mov dword [bp-016h], strict dword 000000000h ; 66 c7 46 ea 00 00 00 00
    1404814017    cmp di, 00fffh                            ; 81 ff ff 0f
    14049     jne short 095d2h                          ; 75 1e
     14018    jne short 09593h                          ; 75 1e
    1405014019    cmp dx, strict byte 0ffffh                ; 83 fa ff
    14051     jne short 095d2h                          ; 75 19
     14020    jne short 09593h                          ; 75 19
    1405214021    mov dx, word [bp-0015ch]                  ; 8b 96 a4 fe
    1405314022    mov word [bp-014h], dx                    ; 89 56 ec
     
    1408614055    mov al, byte [bp-008h]                    ; 8a 46 f8
    1408714056    cmp AL, strict byte 001h                  ; 3c 01
    14088     jc short 0964bh                           ; 72 0c
    14089     jbe short 09653h                          ; 76 12
     14057    jc short 0960ch                           ; 72 0c
     14058    jbe short 09614h                          ; 76 12
    1409014059    cmp AL, strict byte 003h                  ; 3c 03
    14091     je short 0965bh                           ; 74 16
     14060    je short 0961ch                           ; 74 16
    1409214061    cmp AL, strict byte 002h                  ; 3c 02
    14093     je short 09657h                           ; 74 0e
    14094     jmp short 096a4h                          ; eb 59
     14062    je short 09618h                           ; 74 0e
     14063    jmp short 09665h                          ; eb 59
    1409514064    test al, al                               ; 84 c0
    14096     jne short 096a4h                          ; 75 55
     14065    jne short 09665h                          ; 75 55
    1409714066    mov DL, strict byte 040h                  ; b2 40
    14098     jmp short 0965dh                          ; eb 0a
     14067    jmp short 0961eh                          ; eb 0a
    1409914068    mov DL, strict byte 048h                  ; b2 48
    14100     jmp short 0965dh                          ; eb 06
     14069    jmp short 0961eh                          ; eb 06
    1410114070    mov DL, strict byte 050h                  ; b2 50
    14102     jmp short 0965dh                          ; eb 02
     14071    jmp short 0961eh                          ; eb 02
    1410314072    mov DL, strict byte 058h                  ; b2 58
    1410414073    mov al, dl                                ; 88 d0
     
    1410614075    movzx bx, al                              ; 0f b6 d8
    1410714076    mov ax, bx                                ; 89 d8
    14108     call 017a5h                               ; e8 3c 81
     14077    call 017a5h                               ; e8 7b 81
    1410914078    test al, al                               ; 84 c0
    14110     je short 096a4h                           ; 74 37
     14079    je short 09665h                           ; 74 37
    1411114080    mov al, dl                                ; 88 d0
    1411214081    db  0feh, 0c0h
    1411314082    ; inc al                                    ; fe c0
    1411414083    xor ah, ah                                ; 30 e4
    14115     call 017a5h                               ; e8 2f 81
     14084    call 017a5h                               ; e8 6e 81
    1411614085    xor ah, ah                                ; 30 e4
    1411714086    mov si, ax                                ; 89 c6
    1411814087    sal si, 008h                              ; c1 e6 08
    1411914088    movzx ax, dl                              ; 0f b6 c2
    14120     call 017a5h                               ; e8 22 81
     14089    call 017a5h                               ; e8 61 81
    1412114090    xor ah, ah                                ; 30 e4
    1412214091    add ax, si                                ; 01 f0
     
    1412514094    add AL, strict byte 002h                  ; 04 02
    1412614095    xor ah, ah                                ; 30 e4
    14127     call 017a5h                               ; e8 12 81
     14096    call 017a5h                               ; e8 51 81
    1412814097    xor ah, ah                                ; 30 e4
    1412914098    mov word [bp-02ah], ax                    ; 89 46 d6
    1413014099    mov ax, bx                                ; 89 d8
    14131     call 017a5h                               ; e8 08 81
     14100    call 017a5h                               ; e8 47 81
    1413214101    xor ah, ah                                ; 30 e4
    1413314102    mov word [bp-026h], ax                    ; 89 46 da
    14134     jmp short 096b4h                          ; eb 10
     14103    jmp short 09675h                          ; eb 10
    1413514104    push dword [bp-016h]                      ; 66 ff 76 ea
    1413614105    push di                                   ; 57
     
    1413814107    mov dx, ss                                ; 8c d2
    1413914108    lea ax, [bp-02ah]                         ; 8d 46 d6
    14140     call 05ad0h                               ; e8 1c c4
    14141     mov bx, 00e14h                            ; bb 14 0e
     14109    call 05ad0h                               ; e8 5b c4
     14110    mov bx, 00db8h                            ; bb b8 0d
    1414214111    mov cx, ds                                ; 8c d9
    1414314112    mov ax, strict word 00004h                ; b8 04 00
    14144     call 01a2ah                               ; e8 6b 83
     14113    call 01a2ah                               ; e8 aa 83
    1414514114    push dword [bp-016h]                      ; 66 ff 76 ea
    1414614115    push di                                   ; 57
     
    1415914128    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1416014129    push ax                                   ; 50
    14161     push 00d4ah                               ; 68 4a 0d
     14130    push 00ce8h                               ; 68 e8 0c
    1416214131    push strict byte 00004h                   ; 6a 04
    14163     call 01a6bh                               ; e8 7d 83
     14132    call 01a6bh                               ; e8 bc 83
    1416414133    add sp, strict byte 0001ch                ; 83 c4 1c
    1416514134    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     
    1419014159    mov dx, strict word 00075h                ; ba 75 00
    1419114160    mov ax, strict word 00040h                ; b8 40 00
    14192     call 01749h                               ; e8 10 80
     14161    call 01749h                               ; e8 4f 80
    1419314162    db  0feh, 0c0h
    1419414163    ; inc al                                    ; fe c0
     
    1419614165    mov dx, strict word 00075h                ; ba 75 00
    1419714166    mov ax, strict word 00040h                ; b8 40 00
    14198     call 01757h                               ; e8 10 80
    14199     jmp near 097e6h                           ; e9 9c 00
     14167    call 01757h                               ; e8 4f 80
     14168    jmp near 097a7h                           ; e9 9c 00
    1420014169    cmp dx, 0eb14h                            ; 81 fa 14 eb
    14201     jne near 097e6h                           ; 0f 85 94 00
     14170    jne near 097a7h                           ; 0f 85 94 00
    1420214171    cmp di, 00101h                            ; 81 ff 01 01
    14203     jne near 097e6h                           ; 0f 85 8c 00
     14172    jne near 097a7h                           ; 0f 85 8c 00
    1420414173    les bx, [bp-010h]                         ; c4 5e f0
    1420514174    db  066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
     
    1421514184    mov ax, word [bp-010h]                    ; 8b 46 f0
    1421614185    mov dx, es                                ; 8c c2
    14217     call 08a73h                               ; e8 e5 f2
     14186    call 08a34h                               ; e8 e5 f2
    1421814187    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    1421914188    db  00fh, 095h, 0c0h
     
    1425214221    pop bp                                    ; 5d
    1425314222    retn                                      ; c3
    14254 ahci_mem_alloc_:                             ; 0xf97fc LB 0x43
     14223ahci_mem_alloc_:                             ; 0xf97bd LB 0x43
    1425514224    push bp                                   ; 55
    1425614225    mov bp, sp                                ; 89 e5
     
    1426214231    mov dx, 00413h                            ; ba 13 04
    1426314232    xor ax, ax                                ; 31 c0
    14264     call 01765h                               ; e8 59 7f
     14233    call 01765h                               ; e8 98 7f
    1426514234    test ax, ax                               ; 85 c0
    14266     je short 09835h                           ; 74 25
     14235    je short 097f6h                           ; 74 25
    1426714236    dec ax                                    ; 48
    1426814237    mov bx, ax                                ; 89 c3
     
    1427114240    sal ax, 1                                 ; d1 e0
    1427214241    rcl dx, 1                                 ; d1 d2
    14273     loop 09818h                               ; e2 fa
     14242    loop 097d9h                               ; e2 fa
    1427414243    mov si, ax                                ; 89 c6
    1427514244    mov di, dx                                ; 89 d7
     
    1427714246    shr di, 1                                 ; d1 ef
    1427814247    rcr si, 1                                 ; d1 de
    14279     loop 09825h                               ; e2 fa
     14248    loop 097e6h                               ; e2 fa
    1428014249    mov dx, 00413h                            ; ba 13 04
    1428114250    xor ax, ax                                ; 31 c0
    14282     call 01773h                               ; e8 40 7f
     14251    call 01773h                               ; e8 7f 7f
    1428314252    mov ax, si                                ; 89 f0
    1428414253    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1429014259    pop bp                                    ; 5d
    1429114260    retn                                      ; c3
    14292 ahci_hba_init_:                              ; 0xf983f LB 0x166
     14261ahci_hba_init_:                              ; 0xf9800 LB 0x166
    1429314262    push bp                                   ; 55
    1429414263    mov bp, sp                                ; 89 e5
     
    1430214271    mov dx, strict word 0000eh                ; ba 0e 00
    1430314272    mov ax, strict word 00040h                ; b8 40 00
    14304     call 01765h                               ; e8 10 7f
     14273    call 01765h                               ; e8 4f 7f
    1430514274    mov bx, 00122h                            ; bb 22 01
    1430614275    mov di, ax                                ; 89 c7
     
    1431914288    shr eax, 010h                             ; 66 c1 e8 10
    1432014289    xchg dx, ax                               ; 92
    14321     call 097fch                               ; e8 83 ff
     14290    call 097bdh                               ; e8 83 ff
    1432214291    mov word [bp-010h], ax                    ; 89 46 f0
    1432314292    test ax, ax                               ; 85 c0
    14324     je near 09984h                            ; 0f 84 02 01
     14293    je near 09945h                            ; 0f 84 02 01
    1432514294    mov ax, word [bp-010h]                    ; 8b 46 f0
    1432614295    mov es, di                                ; 8e c7
     
    1437214341    xchg dx, ax                               ; 92
    1437314342    test AL, strict byte 001h                 ; a8 01
    14374     jne short 098d8h                          ; 75 de
     14343    jne short 09899h                          ; 75 de
    1437514344    xor ax, ax                                ; 31 c0
    1437614345    xor cx, cx                                ; 31 c9
     
    1439014359    mov bx, strict word 0001fh                ; bb 1f 00
    1439114360    xor cx, cx                                ; 31 c9
    14392     call 088efh                               ; e8 d1 ef
     14361    call 088b0h                               ; e8 d1 ef
    1439314362    db  0feh, 0c0h
    1439414363    ; inc al                                    ; fe c0
    1439514364    mov byte [bp-00eh], al                    ; 88 46 f2
    1439614365    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    14397     jmp short 09949h                          ; eb 20
     14366    jmp short 0990ah                          ; eb 20
    1439814367    xor al, al                                ; 30 c0
    1439914368    test al, al                               ; 84 c0
    14400     je short 09940h                           ; 74 11
     14369    je short 09901h                           ; 74 11
    1440114370    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
    1440214371    xor ax, ax                                ; 31 c0
    1440314372    mov dx, word [bp-010h]                    ; 8b 56 f0
    14404     call 0934bh                               ; e8 10 fa
     14373    call 0930ch                               ; e8 10 fa
    1440514374    dec byte [bp-00eh]                        ; fe 4e f2
    14406     je short 09982h                           ; 74 42
     14375    je short 09943h                           ; 74 42
    1440714376    inc byte [bp-00ch]                        ; fe 46 f4
    1440814377    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    14409     jnc short 09982h                          ; 73 39
     14378    jnc short 09943h                          ; 73 39
    1441014379    movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
    1441114380    mov bx, strict word 00001h                ; bb 01 00
    1441214381    xor di, di                                ; 31 ff
    14413     jcxz 0995ah                               ; e3 06
     14382    jcxz 0991bh                               ; e3 06
    1441414383    sal bx, 1                                 ; d1 e3
    1441514384    rcl di, 1                                 ; d1 d7
    14416     loop 09954h                               ; e2 fa
     14385    loop 09915h                               ; e2 fa
    1441714386    mov ax, strict word 0000ch                ; b8 0c 00
    1441814387    xor cx, cx                                ; 31 c9
     
    1443014399    xchg dx, ax                               ; 92
    1443114400    test dx, di                               ; 85 fa
    14432     jne short 0997eh                          ; 75 04
     14401    jne short 0993fh                          ; 75 04
    1443314402    test ax, bx                               ; 85 d8
    14434     je short 09929h                           ; 74 ab
     14403    je short 098eah                           ; 74 ab
    1443514404    mov AL, strict byte 001h                  ; b0 01
    14436     jmp short 0992bh                          ; eb a9
     14405    jmp short 098ech                          ; eb a9
    1443714406    xor ax, ax                                ; 31 c0
    1443814407    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1444414413    pop bp                                    ; 5d
    1444514414    retn                                      ; c3
    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
     14415    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 036h, 09ah, 014h, 09ah, 01ah, 09ah, 020h, 09ah, 026h
     14416    db  09ah, 02ch, 09ah, 032h, 09ah, 036h, 09ah
     14417_ahci_init:                                  ; 0xf9966 LB 0x116
    1444914418    push bp                                   ; 55
    1445014419    mov bp, sp                                ; 89 e5
     
    1445414423    mov ax, 00601h                            ; b8 01 06
    1445514424    mov dx, strict word 00001h                ; ba 01 00
    14456     call 09edbh                               ; e8 25 05
     14425    call 09e9ch                               ; e8 25 05
    1445714426    mov bx, ax                                ; 89 c3
    1445814427    cmp ax, strict word 0ffffh                ; 3d ff ff
    14459     je near 09ab4h                            ; 0f 84 f5 00
     14428    je near 09a75h                            ; 0f 84 f5 00
    1446014429    xor al, al                                ; 30 c0
    1446114430    shr ax, 008h                              ; c1 e8 08
     
    1446514434    xor ah, ah                                ; 30 e4
    1446614435    mov bx, strict word 00034h                ; bb 34 00
    14467     call 09f2bh                               ; e8 56 05
     14436    call 09eech                               ; e8 56 05
    1446814437    mov cl, al                                ; 88 c1
    1446914438    test cl, cl                               ; 84 c9
    14470     je short 099feh                           ; 74 23
     14439    je short 099bfh                           ; 74 23
    1447114440    movzx bx, cl                              ; 0f b6 d9
    1447214441    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1447414443    mov dx, di                                ; 89 fa
    1447514444    mov ax, si                                ; 89 f0
    14476     call 09f2bh                               ; e8 3e 05
     14445    call 09eech                               ; e8 3e 05
    1447714446    cmp AL, strict byte 012h                  ; 3c 12
    14478     je short 099feh                           ; 74 0d
     14447    je short 099bfh                           ; 74 0d
    1447914448    mov al, cl                                ; 88 c8
    1448014449    db  0feh, 0c0h
     
    1448314452    mov dx, di                                ; 89 fa
    1448414453    mov ax, si                                ; 89 f0
    14485     jmp short 099d2h                          ; eb d4
     14454    jmp short 09993h                          ; eb d4
    1448614455    test cl, cl                               ; 84 c9
    14487     je near 09ab4h                            ; 0f 84 b0 00
     14456    je near 09a75h                            ; 0f 84 b0 00
    1448814457    add cl, 002h                              ; 80 c1 02
    1448914458    movzx bx, cl                              ; 0f b6 d9
     
    1449214461    mov dx, si                                ; 89 f2
    1449314462    mov ax, di                                ; 89 f8
    14494     call 09f2bh                               ; e8 12 05
     14463    call 09eech                               ; e8 12 05
    1449514464    cmp AL, strict byte 010h                  ; 3c 10
    14496     jne near 09ab4h                           ; 0f 85 95 00
     14465    jne near 09a75h                           ; 0f 85 95 00
    1449714466    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1449814467    mov al, cl                                ; 88 c8
     
    1450114470    mov dx, si                                ; 89 f2
    1450214471    mov ax, di                                ; 89 f8
    14503     call 09f4fh                               ; e8 1e 05
     14472    call 09f10h                               ; e8 1e 05
    1450414473    mov dx, ax                                ; 89 c2
    1450514474    and ax, strict word 0000fh                ; 25 0f 00
    1450614475    sub ax, strict word 00004h                ; 2d 04 00
    1450714476    cmp ax, strict word 0000bh                ; 3d 0b 00
    14508     jnbe short 09a75h                         ; 77 37
     14477    jnbe short 09a36h                         ; 77 37
    1450914478    push CS                                   ; 0e
    1451014479    pop ES                                    ; 07
    1451114480    mov cx, strict word 00008h                ; b9 08 00
    14512     mov di, 0998eh                            ; bf 8e 99
     14481    mov di, 0994fh                            ; bf 4f 99
    1451314482    repne scasb                               ; f2 ae
    1451414483    sal cx, 1                                 ; d1 e1
    1451514484    mov di, cx                                ; 89 cf
    14516     mov ax, word [cs:di-0666bh]               ; 2e 8b 85 95 99
     14485    mov ax, word [cs:di-066aah]               ; 2e 8b 85 56 99
    1451714486    jmp ax                                    ; ff e0
    1451814487    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    14519     jmp short 09a75h                          ; eb 1c
     14488    jmp short 09a36h                          ; eb 1c
    1452014489    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    14521     jmp short 09a75h                          ; eb 16
     14490    jmp short 09a36h                          ; eb 16
    1452214491    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    14523     jmp short 09a75h                          ; eb 10
     14492    jmp short 09a36h                          ; eb 10
    1452414493    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    14525     jmp short 09a75h                          ; eb 0a
     14494    jmp short 09a36h                          ; eb 0a
    1452614495    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    14527     jmp short 09a75h                          ; eb 04
     14496    jmp short 09a36h                          ; eb 04
    1452814497    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1452914498    mov cx, dx                                ; 89 d1
     
    1453214501    mov al, byte [bp-006h]                    ; 8a 46 fa
    1453314502    test al, al                               ; 84 c0
    14534     je short 09ab4h                           ; 74 30
     14503    je short 09a75h                           ; 74 30
    1453514504    movzx bx, al                              ; 0f b6 d8
    1453614505    movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     
    1453814507    mov dx, di                                ; 89 fa
    1453914508    mov ax, si                                ; 89 f0
    14540     call 09f71h                               ; e8 db 04
     14509    call 09f32h                               ; e8 db 04
    1454114510    test AL, strict byte 001h                 ; a8 01
    14542     je short 09ab4h                           ; 74 1a
     14511    je short 09a75h                           ; 74 1a
    1454314512    and AL, strict byte 0f0h                  ; 24 f0
    1454414513    add ax, cx                                ; 01 c8
     
    1454814517    mov dx, di                                ; 89 fa
    1454914518    mov ax, si                                ; 89 f0
    14550     call 09f98h                               ; e8 ea 04
     14519    call 09f59h                               ; e8 ea 04
    1455114520    mov ax, word [bp-00ch]                    ; 8b 46 f4
    14552     call 0983fh                               ; e8 8b fd
     14521    call 09800h                               ; e8 8b fd
    1455314522    lea sp, [bp-004h]                         ; 8d 66 fc
    1455414523    pop di                                    ; 5f
     
    1455614525    pop bp                                    ; 5d
    1455714526    retn                                      ; c3
    14558 apm_out_str_:                                ; 0xf9abb LB 0x39
     14527apm_out_str_:                                ; 0xf9a7c LB 0x39
    1455914528    push bp                                   ; 55
    1456014529    mov bp, sp                                ; 89 e5
     
    1456214531    mov bx, ax                                ; 89 c3
    1456314532    cmp byte [bx], 000h                       ; 80 3f 00
    14564     je short 09ad0h                           ; 74 0a
     14533    je short 09a91h                           ; 74 0a
    1456514534    mov al, byte [bx]                         ; 8a 07
    1456614535    out DX, AL                                ; ee
     
    1456914538    db  00ah, 0c0h
    1457014539    ; or al, al                                 ; 0a c0
    14571     jne short 09ac8h                          ; 75 f8
     14540    jne short 09a89h                          ; 75 f8
    1457214541    lea sp, [bp-002h]                         ; 8d 66 fe
    1457314542    pop bx                                    ; 5b
    1457414543    pop bp                                    ; 5d
    1457514544    retn                                      ; c3
    14576     pop SS                                    ; 17
     14545    fcomp dword [bp+si-0645ch]                ; d8 9a a4 9b
     14546    jmp far 0a49bh:0059ah                     ; ea 9a 05 9b a4
    1457714547    wait                                      ; 9b
    14578     jcxz 09a75h                               ; e3 9b
    14579     sub word [bp+di-064bch], bx               ; 29 9b 44 9b
    14580     jcxz 09a7bh                               ; e3 9b
    14581     outsw                                     ; 6f
     14548    xor byte [bp+di-0645ch], bl               ; 30 9b a4 9b
     14549    xor ax, 0799bh                            ; 35 9b 79
    1458214550    wait                                      ; 9b
    14583     jcxz 09a7fh                               ; e3 9b
    14584     je short 09a81h                           ; 74 9b
    14585     mov ax, 0b89bh                            ; b8 9b b8
     14551    jns short 09a46h                          ; 79 9b
     14552    jns short 09a48h                          ; 79 9b
     14553    je short 09a4ah                           ; 74 9b
     14554    jns short 09a4ch                          ; 79 9b
     14555    jns short 09a4eh                          ; 79 9b
     14556    insw                                      ; 6d
    1458614557    wait                                      ; 9b
    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
     14558_apm_function:                               ; 0xf9ab5 LB 0xf5
    1459414559    push bp                                   ; 55
    1459514560    mov bp, sp                                ; 89 e5
     
    1459914564    xor ah, ah                                ; 30 e4
    1460014565    cmp ax, strict word 0000eh                ; 3d 0e 00
    14601     jnbe near 09bb8h                          ; 0f 87 b0 00
     14566    jnbe near 09b79h                          ; 0f 87 b0 00
    1460214567    mov bx, ax                                ; 89 c3
    1460314568    add bx, ax                                ; 01 c3
    1460414569    mov dx, word [bp+018h]                    ; 8b 56 18
    1460514570    or dl, 001h                               ; 80 ca 01
    14606     jmp word [cs:bx-0652ah]                   ; 2e ff a7 d6 9a
     14571    jmp word [cs:bx-06569h]                   ; 2e ff a7 97 9a
    1460714572    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1460814573    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1460914574    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    14610     jmp near 09be3h                           ; e9 ba 00
     14575    jmp near 09ba4h                           ; e9 ba 00
    1461114576    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    14612     mov word [bp+00ch], 0a1c4h                ; c7 46 0c c4 a1
     14577    mov word [bp+00ch], 0a184h                ; c7 46 0c 84 a1
    1461314578    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1461414579    mov ax, strict word 0fff0h                ; b8 f0 ff
    1461514580    mov word [bp+006h], ax                    ; 89 46 06
    1461614581    mov word [bp+004h], ax                    ; 89 46 04
    14617     jmp near 09be3h                           ; e9 9f 00
     14582    jmp near 09ba4h                           ; e9 9f 00
    1461814583    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1461914584    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1462814593    mov si, ax                                ; 89 c6
    1462914594    sal esi, 010h                             ; 66 c1 e6 10
    14630     jmp near 09be3h                           ; e9 74 00
     14595    jmp near 09ba4h                           ; e9 74 00
    1463114596    sti                                       ; fb
    1463214597    hlt                                       ; f4
    14633     jmp near 09be3h                           ; e9 6f 00
     14598    jmp near 09ba4h                           ; e9 6f 00
    1463414599    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    14635     je short 09b99h                           ; 74 1f
     14600    je short 09b5ah                           ; 74 1f
    1463614601    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    14637     je short 09b91h                           ; 74 11
     14602    je short 09b52h                           ; 74 11
    1463814603    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    14639     jne short 09ba1h                          ; 75 1b
     14604    jne short 09b62h                          ; 75 1b
    1464014605    mov dx, 0040fh                            ; ba 0f 04
    14641     mov ax, 00d84h                            ; b8 84 0d
    14642     call 09abbh                               ; e8 2c ff
    14643     jmp short 09be3h                          ; eb 52
     14606    mov ax, 00d22h                            ; b8 22 0d
     14607    call 09a7ch                               ; e8 2c ff
     14608    jmp short 09ba4h                          ; eb 52
    1464414609    mov dx, 0040fh                            ; ba 0f 04
    14645     mov ax, 00d8ch                            ; b8 8c 0d
    14646     jmp short 09b8ch                          ; eb f3
     14610    mov ax, 00d2ah                            ; b8 2a 0d
     14611    jmp short 09b4dh                          ; eb f3
    1464714612    mov dx, 0040fh                            ; ba 0f 04
    14648     mov ax, 00d94h                            ; b8 94 0d
    14649     jmp short 09b8ch                          ; eb eb
     14613    mov ax, 00d32h                            ; b8 32 0d
     14614    jmp short 09b4dh                          ; eb eb
    1465014615    or ah, 00ah                               ; 80 cc 0a
    1465114616    mov word [bp+012h], ax                    ; 89 46 12
    1465214617    mov word [bp+018h], dx                    ; 89 56 18
    14653     jmp short 09be3h                          ; eb 37
     14618    jmp short 09ba4h                          ; eb 37
    1465414619    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    14655     jmp short 09be3h                          ; eb 30
     14620    jmp short 09ba4h                          ; eb 30
    1465614621    or ah, 080h                               ; 80 cc 80
    14657     jmp short 09ba4h                          ; eb ec
    14658     mov bx, 00e14h                            ; bb 14 0e
     14622    jmp short 09b65h                          ; eb ec
     14623    mov bx, 00db8h                            ; bb b8 0d
    1465914624    mov cx, ds                                ; 8c d9
    1466014625    mov ax, strict word 00004h                ; b8 04 00
    14661     call 01a2ah                               ; e8 67 7e
     14626    call 01a2ah                               ; e8 a6 7e
    1466214627    push word [bp+00ch]                       ; ff 76 0c
    1466314628    push word [bp+012h]                       ; ff 76 12
    14664     push 00d9dh                               ; 68 9d 0d
     14629    push 00d3bh                               ; 68 3b 0d
    1466514630    push strict byte 00004h                   ; 6a 04
    14666     call 01a6bh                               ; e8 9a 7e
     14631    call 01a6bh                               ; e8 d9 7e
    1466714632    add sp, strict byte 00008h                ; 83 c4 08
    1466814633    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1467514640    pop bp                                    ; 5d
    1467614641    retn                                      ; c3
    14677 pci16_select_reg_:                           ; 0xf9be9 LB 0x24
     14642pci16_select_reg_:                           ; 0xf9baa LB 0x24
    1467814643    push bp                                   ; 55
    1467914644    mov bp, sp                                ; 89 e5
     
    1469214657    pop bp                                    ; 5d
    1469314658    retn                                      ; c3
    14694 pci16_find_device_:                          ; 0xf9c0d LB 0xf7
     14659pci16_find_device_:                          ; 0xf9bce LB 0xf7
    1469514660    push bp                                   ; 55
    1469614661    mov bp, sp                                ; 89 e5
     
    1470614671    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1470714672    test bl, 007h                             ; f6 c3 07
    14708     jne short 09c55h                          ; 75 2d
     14673    jne short 09c16h                          ; 75 2d
    1470914674    mov dx, strict word 0000eh                ; ba 0e 00
    1471014675    mov ax, bx                                ; 89 d8
    14711     call 09be9h                               ; e8 b9 ff
     14676    call 09baah                               ; e8 b9 ff
    1471214677    mov dx, 00cfeh                            ; ba fe 0c
    1471314678    in AL, DX                                 ; ec
     
    1471614681    mov byte [bp-006h], al                    ; 88 46 fa
    1471714682    cmp AL, strict byte 0ffh                  ; 3c ff
    14718     jne short 09c43h                          ; 75 06
     14683    jne short 09c04h                          ; 75 06
    1471914684    add bx, strict byte 00008h                ; 83 c3 08
    14720     jmp near 09cd6h                           ; e9 93 00
     14685    jmp near 09c97h                           ; e9 93 00
    1472114686    test byte [bp-006h], 080h                 ; f6 46 fa 80
    14722     je short 09c50h                           ; 74 07
     14687    je short 09c11h                           ; 74 07
    1472314688    mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
    14724     jmp short 09c55h                          ; eb 05
     14689    jmp short 09c16h                          ; eb 05
    1472514690    mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
    1472614691    mov al, byte [bp-006h]                    ; 8a 46 fa
    1472714692    and AL, strict byte 007h                  ; 24 07
    1472814693    cmp AL, strict byte 001h                  ; 3c 01
    14729     jne short 09c7dh                          ; 75 1f
     14694    jne short 09c3eh                          ; 75 1f
    1473014695    mov ax, bx                                ; 89 d8
    1473114696    shr ax, 008h                              ; c1 e8 08
    1473214697    test ax, ax                               ; 85 c0
    14733     jne short 09c7dh                          ; 75 16
     14698    jne short 09c3eh                          ; 75 16
    1473414699    mov dx, strict word 0001ah                ; ba 1a 00
    1473514700    mov ax, bx                                ; 89 d8
    14736     call 09be9h                               ; e8 7a ff
     14701    call 09baah                               ; e8 7a ff
    1473714702    mov dx, 00cfeh                            ; ba fe 0c
    1473814703    in AL, DX                                 ; ec
     
    1474014705    ; sub ah, ah                                ; 2a e4
    1474114706    cmp al, byte [bp-008h]                    ; 3a 46 f8
    14742     jbe short 09c7dh                          ; 76 03
     14707    jbe short 09c3eh                          ; 76 03
    1474314708    mov byte [bp-008h], al                    ; 88 46 f8
    1474414709    test di, di                               ; 85 ff
    14745     je short 09c86h                           ; 74 05
     14710    je short 09c47h                           ; 74 05
    1474614711    mov dx, strict word 00008h                ; ba 08 00
    14747     jmp short 09c88h                          ; eb 02
     14712    jmp short 09c49h                          ; eb 02
    1474814713    xor dx, dx                                ; 31 d2
    1474914714    mov ax, bx                                ; 89 d8
    14750     call 09be9h                               ; e8 5c ff
     14715    call 09baah                               ; e8 5c ff
    1475114716    mov dx, 00cfch                            ; ba fc 0c
    1475214717    in eax, DX                                ; 66 ed
     
    1475914724    mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
    1476014725    test di, di                               ; 85 ff
    14761     je short 09cb7h                           ; 74 0f
     14726    je short 09c78h                           ; 74 0f
    1476214727    mov cx, strict word 00008h                ; b9 08 00
    1476314728    shr dx, 1                                 ; d1 ea
    1476414729    rcr ax, 1                                 ; d1 d8
    14765     loop 09cabh                               ; e2 fa
     14730    loop 09c6ch                               ; e2 fa
    1476614731    mov word [bp-00eh], ax                    ; 89 46 f2
    1476714732    mov word [bp-00ch], dx                    ; 89 56 f4
    1476814733    mov ax, word [bp-00ch]                    ; 8b 46 f4
    1476914734    cmp ax, word [bp-014h]                    ; 3b 46 ec
    14770     jne short 09cc7h                          ; 75 08
     14735    jne short 09c88h                          ; 75 08
    1477114736    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1477214737    cmp ax, word [bp-012h]                    ; 3b 46 ee
    14773     je short 09ccdh                           ; 74 06
     14738    je short 09c8eh                           ; 74 06
    1477414739    cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
    14775     je short 09cd3h                           ; 74 06
     14740    je short 09c94h                           ; 74 06
    1477614741    dec si                                    ; 4e
    1477714742    cmp si, strict byte 0ffffh                ; 83 fe ff
    14778     je short 09ce5h                           ; 74 12
     14743    je short 09ca6h                           ; 74 12
    1477914744    add bx, word [bp-00ah]                    ; 03 5e f6
    1478014745    mov dx, bx                                ; 89 da
     
    1478214747    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
    1478314748    cmp dx, ax                                ; 39 c2
    14784     jbe near 09c23h                           ; 0f 86 3e ff
     14749    jbe near 09be4h                           ; 0f 86 3e ff
    1478514750    cmp si, strict byte 0ffffh                ; 83 fe ff
    14786     jne short 09ceeh                          ; 75 04
     14751    jne short 09cafh                          ; 75 04
    1478714752    mov ax, bx                                ; 89 d8
    14788     jmp short 09cf1h                          ; eb 03
     14753    jmp short 09cb2h                          ; eb 03
    1478914754    mov ax, strict word 0ffffh                ; b8 ff ff
    1479014755    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1479314758    pop bp                                    ; 5d
    1479414759    retn                                      ; c3
    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
     14760    cmpsw                                     ; a7
     14761    popfw                                     ; 9d
     14762    rcr word [di-0622ch], 0e9h                ; c1 9d d4 9d e9
     14763    popfw                                     ; 9d
     14764    cld                                       ; fc
     14765    popfw                                     ; 9d
     14766    db  00fh
    1479914767    sahf                                      ; 9e
    14800 _pci16_function:                             ; 0xf9d04 LB 0x1d7
     14768_pci16_function:                             ; 0xf9cc5 LB 0x1d7
    1480114769    push bp                                   ; 55
    1480214770    mov bp, sp                                ; 89 e5
     
    1481214780    xor ah, ah                                ; 30 e4
    1481314781    cmp bx, strict byte 00003h                ; 83 fb 03
    14814     jc short 09d3dh                           ; 72 1a
    14815     jbe short 09d95h                          ; 76 70
     14782    jc short 09cfeh                           ; 72 1a
     14783    jbe short 09d56h                          ; 76 70
    1481614784    cmp bx, strict byte 0000eh                ; 83 fb 0e
    14817     je near 09e62h                            ; 0f 84 36 01
     14785    je near 09e23h                            ; 0f 84 36 01
    1481814786    cmp bx, strict byte 00008h                ; 83 fb 08
    14819     jc near 09ea7h                            ; 0f 82 74 01
     14787    jc near 09e68h                            ; 0f 82 74 01
    1482014788    cmp bx, strict byte 0000dh                ; 83 fb 0d
    14821     jbe near 09dbah                           ; 0f 86 80 00
    14822     jmp near 09ea7h                           ; e9 6a 01
     14789    jbe near 09d7bh                           ; 0f 86 80 00
     14790    jmp near 09e68h                           ; e9 6a 01
    1482314791    cmp bx, strict byte 00002h                ; 83 fb 02
    14824     je short 09d65h                           ; 74 23
     14792    je short 09d26h                           ; 74 23
    1482514793    cmp bx, strict byte 00001h                ; 83 fb 01
    14826     jne near 09ea7h                           ; 0f 85 5e 01
     14794    jne near 09e68h                           ; 0f 85 5e 01
    1482714795    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1482814796    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1483014798    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1483114799    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    14832     jmp near 09ed4h                           ; e9 6f 01
     14800    jmp near 09e95h                           ; e9 6f 01
    1483314801    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    14834     jne short 09d71h                          ; 75 06
     14802    jne short 09d32h                          ; 75 06
    1483514803    or ah, 083h                               ; 80 cc 83
    14836     jmp near 09ecdh                           ; e9 5c 01
     14804    jmp near 09e8eh                           ; e9 5c 01
    1483714805    mov bx, word [bp+008h]                    ; 8b 5e 08
    1483814806    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1483914807    mov ax, word [bp+018h]                    ; 8b 46 18
    1484014808    xor cx, cx                                ; 31 c9
    14841     call 09c0dh                               ; e8 8e fe
     14809    call 09bceh                               ; e8 8e fe
    1484214810    cmp ax, strict word 0ffffh                ; 3d ff ff
    14843     jne short 09d8fh                          ; 75 0b
     14811    jne short 09d50h                          ; 75 0b
    1484414812    mov ax, word [bp+020h]                    ; 8b 46 20
    1484514813    xor ah, ah                                ; 30 e4
    1484614814    or ah, 086h                               ; 80 cc 86
    14847     jmp near 09ecdh                           ; e9 3e 01
     14815    jmp near 09e8eh                           ; e9 3e 01
    1484814816    mov word [bp+014h], ax                    ; 89 46 14
    14849     jmp near 09ed4h                           ; e9 3f 01
     14817    jmp near 09e95h                           ; e9 3f 01
    1485014818    mov bx, word [bp+008h]                    ; 8b 5e 08
    1485114819    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1485214820    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1485314821    mov cx, strict word 00001h                ; b9 01 00
    14854     call 09c0dh                               ; e8 69 fe
     14822    call 09bceh                               ; e8 69 fe
    1485514823    cmp ax, strict word 0ffffh                ; 3d ff ff
    14856     jne short 09db4h                          ; 75 0b
     14824    jne short 09d75h                          ; 75 0b
    1485714825    mov ax, word [bp+020h]                    ; 8b 46 20
    1485814826    xor ah, ah                                ; 30 e4
    1485914827    or ah, 086h                               ; 80 cc 86
    14860     jmp near 09ecdh                           ; e9 19 01
     14828    jmp near 09e8eh                           ; e9 19 01
    1486114829    mov word [bp+014h], ax                    ; 89 46 14
    14862     jmp near 09ed4h                           ; e9 1a 01
     14830    jmp near 09e95h                           ; e9 1a 01
    1486314831    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    14864     jc short 09dc7h                           ; 72 06
     14832    jc short 09d88h                           ; 72 06
    1486514833    or ah, 087h                               ; 80 cc 87
    14866     jmp near 09ecdh                           ; e9 06 01
     14834    jmp near 09e8eh                           ; e9 06 01
    1486714835    mov dx, word [bp+004h]                    ; 8b 56 04
    1486814836    mov ax, word [bp+014h]                    ; 8b 46 14
    14869     call 09be9h                               ; e8 19 fe
     14837    call 09baah                               ; e8 19 fe
    1487014838    mov bx, word [bp+020h]                    ; 8b 5e 20
    1487114839    xor bh, bh                                ; 30 ff
    1487214840    sub bx, strict byte 00008h                ; 83 eb 08
    1487314841    cmp bx, strict byte 00005h                ; 83 fb 05
    14874     jnbe near 09ed4h                          ; 0f 87 f5 00
     14842    jnbe near 09e95h                          ; 0f 87 f5 00
    1487514843    add bx, bx                                ; 01 db
    14876     jmp word [cs:bx-06308h]                   ; 2e ff a7 f8 9c
     14844    jmp word [cs:bx-06347h]                   ; 2e ff a7 b9 9c
    1487714845    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1487814846    xor bl, bl                                ; 30 db
     
    1488514853    or bx, ax                                 ; 09 c3
    1488614854    mov word [bp+01ch], bx                    ; 89 5e 1c
    14887     jmp near 09ed4h                           ; e9 d4 00
     14855    jmp near 09e95h                           ; e9 d4 00
    1488814856    mov dx, word [bp+004h]                    ; 8b 56 04
    1488914857    xor dh, dh                                ; 30 f6
     
    1489214860    in ax, DX                                 ; ed
    1489314861    mov word [bp+01ch], ax                    ; 89 46 1c
    14894     jmp near 09ed4h                           ; e9 c1 00
     14862    jmp near 09e95h                           ; e9 c1 00
    1489514863    mov dx, 00cfch                            ; ba fc 0c
    1489614864    in eax, DX                                ; 66 ed
     
    1490114869    mov word [bp+01ch], ax                    ; 89 46 1c
    1490214870    mov word [bp+01eh], dx                    ; 89 56 1e
    14903     jmp near 09ed4h                           ; e9 ac 00
     14871    jmp near 09e95h                           ; e9 ac 00
    1490414872    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1490514873    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1490814876    add dx, 00cfch                            ; 81 c2 fc 0c
    1490914877    out DX, AL                                ; ee
    14910     jmp near 09ed4h                           ; e9 99 00
     14878    jmp near 09e95h                           ; e9 99 00
    1491114879    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1491214880    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1491514883    add dx, 00cfch                            ; 81 c2 fc 0c
    1491614884    out DX, ax                                ; ef
    14917     jmp near 09ed4h                           ; e9 86 00
     14885    jmp near 09e95h                           ; e9 86 00
    1491814886    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1491914887    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1492414892    ; mov ax, cx                                ; 8b c1
    1492514893    out DX, eax                               ; 66 ef
    14926     jmp short 09ed4h                          ; eb 72
     14894    jmp short 09e95h                          ; eb 72
    1492714895    mov bx, word [bp+004h]                    ; 8b 5e 04
    1492814896    mov es, [bp+026h]                         ; 8e 46 26
     
    1493114899    mov cx, word [0f370h]                     ; 8b 0e 70 f3
    1493214900    cmp cx, word [es:bx]                      ; 26 3b 0f
    14933     jbe short 09e88h                          ; 76 11
     14901    jbe short 09e49h                          ; 76 11
    1493414902    mov ax, word [bp+020h]                    ; 8b 46 20
    1493514903    xor ah, ah                                ; 30 e4
     
    1493714905    mov word [bp+020h], ax                    ; 89 46 20
    1493814906    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    14939     jmp short 09e9ch                          ; eb 14
     14907    jmp short 09e5dh                          ; eb 14
    1494014908    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1494114909    mov si, 0f190h                            ; be 90 f1
     
    1494914917    les bx, [bp-008h]                         ; c4 5e f8
    1495014918    mov word [es:bx], ax                      ; 26 89 07
    14951     jmp short 09ed4h                          ; eb 2d
    14952     mov bx, 00e14h                            ; bb 14 0e
     14919    jmp short 09e95h                          ; eb 2d
     14920    mov bx, 00db8h                            ; bb b8 0d
    1495314921    mov cx, ds                                ; 8c d9
    1495414922    mov ax, strict word 00004h                ; b8 04 00
    14955     call 01a2ah                               ; e8 78 7b
     14923    call 01a2ah                               ; e8 b7 7b
    1495614924    mov ax, word [bp+014h]                    ; 8b 46 14
    1495714925    push ax                                   ; 50
    1495814926    mov ax, word [bp+020h]                    ; 8b 46 20
    1495914927    push ax                                   ; 50
    14960     push 00dd0h                               ; 68 d0 0d
     14928    push 00d6eh                               ; 68 6e 0d
    1496114929    push strict byte 00004h                   ; 6a 04
    14962     call 01a6bh                               ; e8 a9 7b
     14930    call 01a6bh                               ; e8 e8 7b
    1496314931    add sp, strict byte 00008h                ; 83 c4 08
    1496414932    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1497214940    pop bp                                    ; 5d
    1497314941    retn                                      ; c3
    14974 pci_find_classcode_:                         ; 0xf9edb LB 0x2b
     14942pci_find_classcode_:                         ; 0xf9e9c LB 0x2b
    1497514943    push bp                                   ; 55
    1497614944    mov bp, sp                                ; 89 e5
     
    1498714955    int 01ah                                  ; cd 1a
    1498814956    cmp ah, 000h                              ; 80 fc 00
    14989     je near 09efch                            ; 0f 84 03 00
     14957    je near 09ebdh                            ; 0f 84 03 00
    1499014958    mov bx, strict word 0ffffh                ; bb ff ff
    1499114959    mov ax, bx                                ; 89 d8
     
    1499614964    pop bp                                    ; 5d
    1499714965    retn                                      ; c3
    14998 pci_find_device_:                            ; 0xf9f06 LB 0x25
     14966pci_find_device_:                            ; 0xf9ec7 LB 0x25
    1499914967    push bp                                   ; 55
    1500014968    mov bp, sp                                ; 89 e5
     
    1500814976    int 01ah                                  ; cd 1a
    1500914977    cmp ah, 000h                              ; 80 fc 00
    15010     je near 09f21h                            ; 0f 84 03 00
     14978    je near 09ee2h                            ; 0f 84 03 00
    1501114979    mov bx, strict word 0ffffh                ; bb ff ff
    1501214980    mov ax, bx                                ; 89 d8
     
    1501714985    pop bp                                    ; 5d
    1501814986    retn                                      ; c3
    15019 pci_read_config_byte_:                       ; 0xf9f2b LB 0x24
     14987pci_read_config_byte_:                       ; 0xf9eec LB 0x24
    1502014988    push bp                                   ; 55
    1502114989    mov bp, sp                                ; 89 e5
     
    1503615004    pop bp                                    ; 5d
    1503715005    retn                                      ; c3
    15038 pci_read_config_word_:                       ; 0xf9f4f LB 0x22
     15006pci_read_config_word_:                       ; 0xf9f10 LB 0x22
    1503915007    push bp                                   ; 55
    1504015008    mov bp, sp                                ; 89 e5
     
    1505515023    pop bp                                    ; 5d
    1505615024    retn                                      ; c3
    15057 pci_read_config_dword_:                      ; 0xf9f71 LB 0x27
     15025pci_read_config_dword_:                      ; 0xf9f32 LB 0x27
    1505815026    push bp                                   ; 55
    1505915027    mov bp, sp                                ; 89 e5
     
    1507615044    pop bp                                    ; 5d
    1507715045    retn                                      ; c3
    15078 pci_write_config_word_:                      ; 0xf9f98 LB 0x1c
     15046pci_write_config_word_:                      ; 0xf9f59 LB 0x1c
    1507915047    push bp                                   ; 55
    1508015048    mov bp, sp                                ; 89 e5
     
    1509115059    pop bp                                    ; 5d
    1509215060    retn                                      ; c3
    15093 vds_is_present_:                             ; 0xf9fb4 LB 0x1d
     15061vds_is_present_:                             ; 0xf9f75 LB 0x1d
    1509415062    push bx                                   ; 53
    1509515063    push bp                                   ; 55
     
    1509915067    mov es, ax                                ; 8e c0
    1510015068    test byte [es:bx], 020h                   ; 26 f6 07 20
    15101     je short 09fcch                           ; 74 06
     15069    je short 09f8dh                           ; 74 06
    1510215070    mov ax, strict word 00001h                ; b8 01 00
    1510315071    pop bp                                    ; 5d
     
    1510815076    pop bx                                    ; 5b
    1510915077    retn                                      ; c3
    15110 vds_real_to_lin_:                            ; 0xf9fd1 LB 0x1e
     15078vds_real_to_lin_:                            ; 0xf9f92 LB 0x1e
    1511115079    push bx                                   ; 53
    1511215080    push cx                                   ; 51
     
    1511915087    sal ax, 1                                 ; d1 e0
    1512015088    rcl dx, 1                                 ; d1 d2
    15121     loop 09fdfh                               ; e2 fa
     15089    loop 09fa0h                               ; e2 fa
    1512215090    xor cx, cx                                ; 31 c9
    1512315091    add ax, bx                                ; 01 d8
     
    1512715095    pop bx                                    ; 5b
    1512815096    retn                                      ; c3
    15129 vds_build_sg_list_:                          ; 0xf9fef LB 0x79
     15097vds_build_sg_list_:                          ; 0xf9fb0 LB 0x79
    1513015098    push bp                                   ; 55
    1513115099    mov bp, sp                                ; 89 e5
     
    1514115109    mov bx, word [bp+006h]                    ; 8b 5e 06
    1514215110    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15143     call 09fd1h                               ; e8 c3 ff
     15111    call 09f92h                               ; e8 c3 ff
    1514415112    mov es, si                                ; 8e c6
    1514515113    mov word [es:di+004h], ax                 ; 26 89 45 04
    1514615114    mov word [es:di+006h], dx                 ; 26 89 55 06
    1514715115    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15148     call 09fb4h                               ; e8 93 ff
     15116    call 09f75h                               ; e8 93 ff
    1514915117    test ax, ax                               ; 85 c0
    15150     je short 0a038h                           ; 74 13
     15118    je short 09ff9h                           ; 74 13
    1515115119    mov es, si                                ; 8e c6
    1515215120    mov ax, 08105h                            ; b8 05 81
    1515315121    mov dx, strict word 00000h                ; ba 00 00
    1515415122    int 04bh                                  ; cd 4b
    15155     jc near 0a035h                            ; 0f 82 02 00
     15123    jc near 09ff6h                            ; 0f 82 02 00
    1515615124    db  032h, 0c0h
    1515715125    ; xor al, al                                ; 32 c0
    1515815126    cbw                                       ; 98
    15159     jmp short 0a05fh                          ; eb 27
     15127    jmp short 0a020h                          ; eb 27
    1516015128    mov es, si                                ; 8e c6
    1516115129    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1517415142    pop bp                                    ; 5d
    1517515143    retn 00004h                               ; c2 04 00
    15176 vds_free_sg_list_:                           ; 0xfa068 LB 0x38
     15144vds_free_sg_list_:                           ; 0xfa029 LB 0x37
    1517715145    push bp                                   ; 55
    1517815146    mov bp, sp                                ; 89 e5
     
    1518015148    push di                                   ; 57
    1518115149    mov bx, ax                                ; 89 c3
    15182     call 09fb4h                               ; e8 42 ff
     15150    call 09f75h                               ; e8 42 ff
    1518315151    test ax, ax                               ; 85 c0
    15184     je short 0a089h                           ; 74 13
     15152    je short 0a04ah                           ; 74 13
    1518515153    mov di, bx                                ; 89 df
    1518615154    mov es, dx                                ; 8e c2
     
    1518815156    mov dx, strict word 00000h                ; ba 00 00
    1518915157    int 04bh                                  ; cd 4b
    15190     jc near 0a088h                            ; 0f 82 02 00
     15158    jc near 0a049h                            ; 0f 82 02 00
    1519115159    db  032h, 0c0h
    1519215160    ; xor al, al                                ; 32 c0
     
    1519915167    pop bp                                    ; 5d
    1520015168    retn                                      ; c3
    15201     times 0x8 db 0
    15202 __U4M:                                       ; 0xfa0a0 LB 0x40
     15169    times 0x7 db 0
     15170__U4M:                                       ; 0xfa060 LB 0x40
    1520315171    pushfw                                    ; 9c
    1520415172    push eax                                  ; 66 50
     
    1522615194    retn                                      ; c3
    1522715195    times 0xf db 0
    15228 __U4D:                                       ; 0xfa0e0 LB 0x40
     15196__U4D:                                       ; 0xfa0a0 LB 0x40
    1522915197    pushfw                                    ; 9c
    1523015198    push eax                                  ; 66 50
     
    1525715225    retn                                      ; c3
    1525815226    times 0x7 db 0
    15259 __U8RS:                                      ; 0xfa120 LB 0x10
     15227__U8RS:                                      ; 0xfa0e0 LB 0x10
    1526015228    test si, si                               ; 85 f6
    15261     je short 0a12fh                           ; 74 0b
     15229    je short 0a0efh                           ; 74 0b
    1526215230    shr ax, 1                                 ; d1 e8
    1526315231    rcr bx, 1                                 ; d1 db
     
    1526515233    rcr dx, 1                                 ; d1 da
    1526615234    dec si                                    ; 4e
    15267     jne short 0a124h                          ; 75 f5
     15235    jne short 0a0e4h                          ; 75 f5
    1526815236    retn                                      ; c3
    15269 __U8LS:                                      ; 0xfa130 LB 0x10
     15237__U8LS:                                      ; 0xfa0f0 LB 0x10
    1527015238    test si, si                               ; 85 f6
    15271     je short 0a13fh                           ; 74 0b
     15239    je short 0a0ffh                           ; 74 0b
    1527215240    sal dx, 1                                 ; d1 e2
    1527315241    rcl cx, 1                                 ; d1 d1
     
    1527515243    rcl ax, 1                                 ; d1 d0
    1527615244    dec si                                    ; 4e
    15277     jne short 0a134h                          ; 75 f5
     15245    jne short 0a0f4h                          ; 75 f5
    1527815246    retn                                      ; c3
    15279 _fmemset_:                                   ; 0xfa140 LB 0x10
     15247_fmemset_:                                   ; 0xfa100 LB 0x10
    1528015248    push di                                   ; 57
    1528115249    mov es, dx                                ; 8e c2
     
    1528815256    retn                                      ; c3
    1528915257    times 0x3 db 0
    15290 _fmemcpy_:                                   ; 0xfa150 LB 0x3a
     15258_fmemcpy_:                                   ; 0xfa110 LB 0x3a
    1529115259    push bp                                   ; 55
    1529215260    db  08bh, 0ech
     
    1531315281    add byte [bx+si], al                      ; 00 00
    1531415282    add byte [bx+si], al                      ; 00 00
    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
    15327 apm_worker:                                  ; 0xfa18a LB 0x3a
     15283    pushaw                                    ; 60
     15284    mov ax, word [0a162h]                     ; a1 62 a1
     15285    mov eax, dword [0a166h]                   ; 66 a1 66 a1
     15286    mov eax, dword [0a168h]                   ; 66 a1 68 a1
     15287    push 06aa1h                               ; 68 a1 6a
     15288    mov ax, word [0a16eh]                     ; a1 6e a1
     15289    outsb                                     ; 6e
     15290    mov ax, word [0a170h]                     ; a1 70 a1
     15291    jne short 0a0e9h                          ; 75 a1
     15292    jnbe short 0a0ebh                         ; 77 a1
     15293apm_worker:                                  ; 0xfa14a LB 0x3a
    1532815294    sti                                       ; fb
    1532915295    push ax                                   ; 50
     
    1533715303    pop ax                                    ; 58
    1533815304    mov AH, strict byte 053h                  ; b4 53
    15339     jnc short 0a1c0h                          ; 73 25
    15340     jmp word [cs:bp-05e90h]                   ; 2e ff a6 70 a1
    15341     jmp short 0a1beh                          ; eb 1c
     15305    jnc short 0a180h                          ; 73 25
     15306    jmp word [cs:bp-05ed0h]                   ; 2e ff a6 30 a1
     15307    jmp short 0a17eh                          ; eb 1c
    1534215308    sti                                       ; fb
    1534315309    hlt                                       ; f4
    15344     jmp short 0a1beh                          ; eb 18
    15345     jmp short 0a1beh                          ; eb 16
    15346     jmp short 0a1c0h                          ; eb 16
     15310    jmp short 0a17eh                          ; eb 18
     15311    jmp short 0a17eh                          ; eb 16
     15312    jmp short 0a180h                          ; eb 16
    1534715313    mov AH, strict byte 080h                  ; b4 80
    15348     jmp short 0a1c2h                          ; eb 14
    15349     jmp short 0a1c0h                          ; eb 10
     15314    jmp short 0a182h                          ; eb 14
     15315    jmp short 0a180h                          ; eb 10
    1535015316    mov ax, 00102h                            ; b8 02 01
    15351     jmp short 0a1beh                          ; eb 09
    15352     jmp short 0a1beh                          ; eb 07
     15317    jmp short 0a17eh                          ; eb 09
     15318    jmp short 0a17eh                          ; eb 07
    1535315319    mov BL, strict byte 000h                  ; b3 00
    1535415320    mov cx, strict word 00000h                ; b9 00 00
    15355     jmp short 0a1beh                          ; eb 00
     15321    jmp short 0a17eh                          ; eb 00
    1535615322    clc                                       ; f8
    1535715323    retn                                      ; c3
     
    1535915325    stc                                       ; f9
    1536015326    retn                                      ; c3
    15361 apm_pm16_entry:                              ; 0xfa1c4 LB 0x11
     15327apm_pm16_entry:                              ; 0xfa184 LB 0x11
    1536215328    mov AH, strict byte 002h                  ; b4 02
    1536315329    push DS                                   ; 1e
     
    1536715333    add bp, strict byte 00008h                ; 83 c5 08
    1536815334    mov ds, bp                                ; 8e dd
    15369     call 0a18ah                               ; e8 b8 ff
     15335    call 0a14ah                               ; e8 b8 ff
    1537015336    pop bp                                    ; 5d
    1537115337    pop DS                                    ; 1f
    1537215338    retf                                      ; cb
    1537315339
    15374   ; Padding 0x382b bytes at 0xfa1d5
    15375   times 14379 db 0
     15340  ; Padding 0x386b bytes at 0xfa195
     15341  times 14443 db 0
    1537615342
    1537715343section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1542015386    add bp, strict byte 00008h                ; 83 c5 08
    1542115387    push ebp                                  ; 66 55
    15422     mov bp, 0a1c6h                            ; bd c6 a1
     15388    mov bp, 0a186h                            ; bd 86 a1
    1542315389    add byte [bx+si], al                      ; 00 00
    1542415390    push ebp                                  ; 66 55
     
    1615516121    call 01da8h                               ; e8 65 3a
    1615616122    call 02235h                               ; e8 ef 3e
    16157     call 099a5h                               ; e8 5c b6
    16158     call 0886eh                               ; e8 22 a5
     16123    call 09966h                               ; e8 1d b6
     16124    call 0882fh                               ; e8 e3 a4
    1615916125    call 0ed2fh                               ; e8 e0 09
    1616016126    call 0e2d2h                               ; e8 80 ff
     
    1631216278    out strict byte 0a1h, AL                  ; e6 a1
    1631316279    retn                                      ; c3
    16314 ebda_post:                                   ; 0xfe778 LB 0x45
     16280ebda_post:                                   ; 0xfe778 LB 0x51
    1631516281    mov ax, 0e746h                            ; b8 46 e7
    1631616282    mov word [00034h], ax                     ; a3 34 00
     
    1632616292    mov word [001cah], ax                     ; a3 ca 01
    1632716293    mov ax, 0e746h                            ; b8 46 e7
     16294    mov word [001cch], ax                     ; a3 cc 01
     16295    mov ax, 0f000h                            ; b8 00 f0
     16296    mov word [001ceh], ax                     ; a3 ce 01
     16297    mov ax, 0e746h                            ; b8 46 e7
    1632816298    mov word [001dch], ax                     ; a3 dc 01
    1632916299    mov ax, 0f000h                            ; b8 00 f0
     
    1633716307    mov word [0040eh], 09fc0h                 ; c7 06 0e 04 c0 9f
    1633816308    retn                                      ; c3
    16339 biosorg_check_before_or_at_0E82Ch:           ; 0xfe7bd LB 0x71
    16340     times 0x6f db 0
     16309biosorg_check_before_or_at_0E82Ch:           ; 0xfe7c9 LB 0x65
     16310    times 0x63 db 0
    1634116311    db  'XM'
    1634216312biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x3d
     
    1704417014    popfw                                     ; 9d
    1704517015    jmp short 0f8a7h                          ; eb 13
    17046     call 09af4h                               ; e8 5d a2
     17016    call 09ab5h                               ; e8 1e a2
    1704717017    jmp short 0f88eh                          ; eb f5
    1704817018int15_handler_mouse:                         ; 0xff899 LB 0x5
     
    1719817168    cld                                       ; fc
    1719917169    pushad                                    ; 66 60
    17200     call 09d04h                               ; e8 87 9e
     17170    call 09cc5h                               ; e8 48 9e
    1720117171    popad                                     ; 66 61
    1720217172    pop DS                                    ; 1f
     
    1731217282cpu_reset:                                   ; 0xffff0 LB 0x10
    1731317283    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    17314     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 037h
     17284    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 020h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum

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

    r67807 r68290  
    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, 033h, 092h
     990    db  000h, 000h, 000h, 000h, 000h, 000h, 0a1h, 02bh, 00bh, 082h, 0ech, 091h
    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, 001h, 091h, 0abh, 091h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     995    db  039h, 080h, 022h, 081h, 0bah, 090h, 064h, 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=0xd40 class=DATA group=DGROUP
     998section CONST progbits vstart=0xb0 align=1 ; size=0xcde 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
    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
     1103    db   'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
    11071104    db   'ahci_read_sectors', 000h
    11081105    db   '%s: device_id out of range %d', 00ah, 000h
     
    11171114    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    11181115
    1119 section CONST2 progbits vstart=0xdf0 align=1 ; size=0x3fa class=DATA group=DGROUP
    1120 _bios_cvs_version_string:                    ; 0xf0df0 LB 0x12
    1121     db  'VirtualBox 5.1.51', 000h
    1122 _bios_prefix_string:                         ; 0xf0e02 LB 0x8
     1116section CONST2 progbits vstart=0xd8e align=1 ; size=0x400 class=DATA group=DGROUP
     1117_bios_cvs_version_string:                    ; 0xf0d8e LB 0x18
     1118    db  'VirtualBox 5.2.0_BETA1', 000h, 000h
     1119_bios_prefix_string:                         ; 0xf0da6 LB 0x8
    11231120    db  'BIOS: ', 000h, 000h
    1124 _isotag:                                     ; 0xf0e0a LB 0x6
     1121_isotag:                                     ; 0xf0dae LB 0x6
    11251122    db  'CD001', 000h
    1126 _eltorito:                                   ; 0xf0e10 LB 0x18
     1123_eltorito:                                   ; 0xf0db4 LB 0x18
    11271124    db  'EL TORITO SPECIFICATION', 000h
    1128 _drivetypes:                                 ; 0xf0e28 LB 0x28
     1125_drivetypes:                                 ; 0xf0dcc LB 0x28
    11291126    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    11301127    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    11311128    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    1132 _scan_to_scanascii:                          ; 0xf0e50 LB 0x37a
     1129_scan_to_scanascii:                          ; 0xf0df4 LB 0x37a
    11331130    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    11341131    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    11871184    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    11881185    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    1189 _panic_msg_keyb_buffer_full:                 ; 0xf11ca LB 0x20
     1186_panic_msg_keyb_buffer_full:                 ; 0xf116e LB 0x20
    11901187    db  '%s: keyboard input buffer full', 00ah, 000h
    11911188
    1192   ; Padding 0x416 bytes at 0xf11ea
    1193   times 1046 db 0
     1189  ; Padding 0x472 bytes at 0xf118e
     1190  times 1138 db 0
    11941191
    1195 section _TEXT progbits vstart=0x1600 align=1 ; size=0x8f08 class=CODE group=AUTO
     1192section _TEXT progbits vstart=0x1600 align=1 ; size=0x8ec8 class=CODE group=AUTO
    11961193rom_scan_:                                   ; 0xf1600 LB 0x52
    11971194    push bp                                   ; 55
     
    14211418    push bp                                   ; 55
    14221419    mov bp, sp                                ; 89 e5
    1423     mov bx, 00e02h                            ; bb 02 0e
     1420    mov bx, 00da6h                            ; bb a6 0d
    14241421    mov cx, ds                                ; 8c d9
    14251422    mov ax, strict word 00004h                ; b8 04 00
    14261423    call 01933h                               ; e8 b0 01
    1427     mov ax, 00df0h                            ; b8 f0 0d
     1424    mov ax, 00d8eh                            ; b8 8e 0d
    14281425    push ax                                   ; 50
    14291426    mov ax, 000d9h                            ; b8 d9 00
     
    15991596    mov bx, strict word 0000ah                ; bb 0a 00
    16001597    xor cx, cx                                ; 31 c9
    1601     call 0a1a0h                               ; e8 c3 88
     1598    call 0a160h                               ; e8 83 88
    16021599    mov word [bp-008h], ax                    ; 89 46 f8
    16031600    mov cx, dx                                ; 89 d1
     
    18361833    mov dx, word [bp-026h]                    ; 8b 56 da
    18371834    mov si, word [bp-01eh]                    ; 8b 76 e2
    1838     call 0a1d0h                               ; e8 b8 86
     1835    call 0a190h                               ; e8 78 86
    18391836    mov ax, dx                                ; 89 d0
    18401837    xor ah, dh                                ; 30 f4
     
    22972294    mov dx, word [es:si]                      ; 26 8b 14
    22982295    mov si, strict word 00018h                ; be 18 00
    2299     call 0a1d0h                               ; e8 3e 82
     2296    call 0a190h                               ; e8 fe 81
    23002297    xor dh, dh                                ; 30 f6
    23012298    mov word [bp-014h], dx                    ; 89 56 ec
     
    23072304    mov dx, word [es:si]                      ; 26 8b 14
    23082305    mov si, strict word 00020h                ; be 20 00
    2309     call 0a1d0h                               ; e8 1e 82
     2306    call 0a190h                               ; e8 de 81
    23102307    mov bx, dx                                ; 89 d3
    23112308    mov word [bp-010h], dx                    ; 89 56 f0
     
    23392336    mov dx, word [es:si]                      ; 26 8b 14
    23402337    mov si, strict word 00008h                ; be 08 00
    2341     call 0a1d0h                               ; e8 cb 81
     2338    call 0a190h                               ; e8 8b 81
    23422339    mov word [bp-010h], dx                    ; 89 56 f0
    23432340    mov bx, word [bp-016h]                    ; 8b 5e ea
     
    23482345    mov dx, word [es:si]                      ; 26 8b 14
    23492346    mov si, strict word 00018h                ; be 18 00
    2350     call 0a1d0h                               ; e8 ad 81
     2347    call 0a190h                               ; e8 6d 81
    23512348    mov bl, dl                                ; 88 d3
    23522349    and bl, 00fh                              ; 80 e3 0f
     
    27452742    lea ax, [bp-03eh]                         ; 8d 46 c2
    27462743    call 05b7fh                               ; e8 7e 37
    2747     mov bx, 00e02h                            ; bb 02 0e
     2744    mov bx, 00da6h                            ; bb a6 0d
    27482745    mov cx, ds                                ; 8c d9
    27492746    mov ax, strict word 00004h                ; b8 04 00
     
    29262923    mov dx, word [es:di+036h]                 ; 26 8b 55 36
    29272924    mov si, strict word 0000bh                ; be 0b 00
    2928     call 0a1d0h                               ; e8 d1 7b
     2925    call 0a190h                               ; e8 91 7b
    29292926    mov word [bp-02ah], dx                    ; 89 56 d6
    29302927    mov word [bp-026h], cx                    ; 89 4e da
     
    32183215    mov dx, word [bp-022h]                    ; 8b 56 de
    32193216    mov si, strict word 00018h                ; be 18 00
    3220     call 0a1d0h                               ; e8 f4 78
     3217    call 0a190h                               ; e8 b4 78
    32213218    xor dh, dh                                ; 30 f6
    32223219    mov word [bp-014h], dx                    ; 89 56 ec
     
    32263223    mov dx, word [bp-022h]                    ; 8b 56 de
    32273224    mov si, strict word 00020h                ; be 20 00
    3228     call 0a1d0h                               ; e8 dd 78
     3225    call 0a190h                               ; e8 9d 78
    32293226    mov bx, dx                                ; 89 d3
    32303227    mov word [bp-024h], dx                    ; 89 56 dc
     
    32603257    mov dx, word [bp-022h]                    ; 8b 56 de
    32613258    mov si, strict word 00008h                ; be 08 00
    3262     call 0a1d0h                               ; e8 89 78
     3259    call 0a190h                               ; e8 49 78
    32633260    mov word [bp-00ch], ax                    ; 89 46 f4
    32643261    mov word [bp-020h], bx                    ; 89 5e e0
     
    32673264    mov word [bp-024h], dx                    ; 89 56 dc
    32683265    mov si, strict word 00010h                ; be 10 00
    3269     call 0a1d0h                               ; e8 74 78
     3266    call 0a190h                               ; e8 34 78
    32703267    mov word [bp-022h], dx                    ; 89 56 de
    32713268    mov ax, dx                                ; 89 d0
     
    35343531    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    35353532    jne short 02bf6h                          ; 75 23
    3536     mov bx, 00e02h                            ; bb 02 0e
     3533    mov bx, 00da6h                            ; bb a6 0d
    35373534    mov cx, ds                                ; 8c d9
    35383535    mov ax, strict word 00004h                ; b8 04 00
     
    43824379    cmp bh, 048h                              ; 80 ff 48
    43834380    jbe short 0333ch                          ; 76 37
    4384     mov bx, 00e02h                            ; bb 02 0e
     4381    mov bx, 00da6h                            ; bb a6 0d
    43854382    mov cx, ds                                ; 8c d9
    43864383    mov ax, strict word 00004h                ; b8 04 00
     
    53185315    mov byte [es:bx], 000h                    ; 26 c6 07 00
    53195316    jmp near 03533h                           ; e9 5d f9
    5320     mov bx, 00e02h                            ; bb 02 0e
     5317    mov bx, 00da6h                            ; bb a6 0d
    53215318    mov cx, ds                                ; 8c d9
    53225319    mov ax, strict word 00004h                ; b8 04 00
     
    54205417    cmp ax, strict word 0004ah                ; 3d 4a 00
    54215418    jne short 03cc8h                          ; 75 23
    5422     mov bx, 00e02h                            ; bb 02 0e
     5419    mov bx, 00da6h                            ; bb a6 0d
    54235420    mov cx, ds                                ; 8c d9
    54245421    mov ax, strict word 00004h                ; b8 04 00
     
    55285525    pop bp                                    ; 5d
    55295526    retn                                      ; c3
    5530     mov bx, 00e02h                            ; bb 02 0e
     5527    mov bx, 00da6h                            ; bb a6 0d
    55315528    mov cx, ds                                ; 8c d9
    55325529    mov ax, strict word 00004h                ; b8 04 00
     
    56165613    mov dx, ss                                ; 8c d2
    56175614    lea ax, [bp-026h]                         ; 8d 46 da
    5618     call 0a1f0h                               ; e8 4d 63
     5615    call 0a1b0h                               ; e8 0d 63
    56195616    mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
    56205617    mov ax, strict word 00011h                ; b8 11 00
     
    56795676    jnc short 03f51h                          ; 73 10
    56805677    mov al, byte [bp+di-00825h]               ; 8a 83 db f7
    5681     cmp al, byte [di+00e0ah]                  ; 3a 85 0a 0e
     5678    cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
    56825679    je short 03f3bh                           ; 74 f0
    56835680    mov ax, strict word 00005h                ; b8 05 00
     
    56895686    jnc short 03f6bh                          ; 73 10
    56905687    mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
    5691     cmp al, byte [di+00e10h]                  ; 3a 85 10 0e
     5688    cmp al, byte [di+00db4h]                  ; 3a 85 b4 0d
    56925689    je short 03f55h                           ; 74 f0
    56935690    mov ax, strict word 00006h                ; b8 06 00
     
    59905987    cmp ax, dx                                ; 39 d0
    59915988    je short 04308h                           ; 74 2a
    5992     mov bx, 00e02h                            ; bb 02 0e
     5989    mov bx, 00da6h                            ; bb a6 0d
    59935990    mov cx, ds                                ; 8c d9
    59945991    mov ax, strict word 00004h                ; b8 04 00
     
    61086105    xor dl, dl                                ; 30 d2
    61096106    xor cx, cx                                ; 31 c9
    6110     call 0a180h                               ; e8 68 5d
     6107    call 0a140h                               ; e8 28 5d
    61116108    xor bx, bx                                ; 31 db
    61126109    add ax, si                                ; 01 f0
     
    61146111    mov bx, di                                ; 89 fb
    61156112    xor cx, cx                                ; 31 c9
    6116     call 0a180h                               ; e8 5b 5d
     6113    call 0a140h                               ; e8 1b 5d
    61176114    mov bx, ax                                ; 89 c3
    61186115    mov ax, word [bp-00ah]                    ; 8b 46 f6
     
    61496146    mov dx, ss                                ; 8c d2
    61506147    lea ax, [bp-030h]                         ; 8d 46 d0
    6151     call 0a1f0h                               ; e8 74 5d
     6148    call 0a1b0h                               ; e8 34 5d
    61526149    mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
    61536150    mov ax, word [bp-00eh]                    ; 8b 46 f2
     
    62196216    test al, al                               ; 84 c0
    62206217    je short 0456dh                           ; 74 38
    6221     mov bx, 00e02h                            ; bb 02 0e
     6218    mov bx, 00da6h                            ; bb a6 0d
    62226219    mov cx, ds                                ; 8c d9
    62236220    mov ax, strict word 00004h                ; b8 04 00
     
    63216318    mov word [bp+016h], bx                    ; 89 5e 16
    63226319    jmp near 04571h                           ; e9 33 ff
    6323     mov bx, 00e02h                            ; bb 02 0e
     6320    mov bx, 00da6h                            ; bb a6 0d
    63246321    mov cx, ds                                ; 8c d9
    63256322    mov ax, strict word 00004h                ; b8 04 00
     
    64456442    mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
    64466443    jmp near 04c0ch                           ; e9 49 04
    6447     mov bx, 00e02h                            ; bb 02 0e
     6444    mov bx, 00da6h                            ; bb a6 0d
    64486445    mov cx, ds                                ; 8c d9
    64496446    mov ax, strict word 00004h                ; b8 04 00
     
    65036500    mov dx, ss                                ; 8c d2
    65046501    lea ax, [bp-02eh]                         ; 8d 46 d2
    6505     call 0a1f0h                               ; e8 8c 59
     6502    call 0a1b0h                               ; e8 4c 59
    65066503    mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
    65076504    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    65606557    cmp byte [bp-016h], 000h                  ; 80 7e ea 00
    65616558    je short 04950h                           ; 74 57
    6562     mov bx, 00e02h                            ; bb 02 0e
     6559    mov bx, 00da6h                            ; bb a6 0d
    65636560    mov cx, ds                                ; 8c d9
    65646561    mov ax, strict word 00004h                ; b8 04 00
     
    68706867    je short 04caah                           ; 74 27
    68716868    mov dx, strict word 00001h                ; ba 01 00
    6872     mov bx, 00e02h                            ; bb 02 0e
     6869    mov bx, 00da6h                            ; bb a6 0d
    68736870    mov cx, ds                                ; 8c d9
    68746871    mov ax, strict word 00004h                ; b8 04 00
     
    68776874    mov dx, strict word 0000ah                ; ba 0a 00
    68786875    imul dx                                   ; f7 ea
    6879     add ax, 00e28h                            ; 05 28 0e
     6876    add ax, 00dcch                            ; 05 cc 0d
    68806877    push ax                                   ; 50
    68816878    mov ax, 00494h                            ; b8 94 04
     
    69006897    test al, al                               ; 84 c0
    69016898    je short 04ce2h                           ; 74 1f
    6902     mov bx, 00e02h                            ; bb 02 0e
     6899    mov bx, 00da6h                            ; bb a6 0d
    69036900    mov cx, ds                                ; 8c d9
    69046901    mov ax, strict word 00004h                ; b8 04 00
    69056902    call 01933h                               ; e8 65 cc
    6906     mov cx, 00e3ch                            ; b9 3c 0e
     6903    mov cx, 00de0h                            ; b9 e0 0d
    69076904    push cx                                   ; 51
    69086905    mov cx, 004a8h                            ; b9 a8 04
     
    69156912    test dl, dl                               ; 84 d2
    69166913    je short 04cf6h                           ; 74 10
    6917     mov bx, 00e02h                            ; bb 02 0e
     6914    mov bx, 00da6h                            ; bb a6 0d
    69186915    mov cx, ds                                ; 8c d9
    69196916    mov ax, strict word 00004h                ; b8 04 00
    69206917    call 01933h                               ; e8 42 cc
    6921     mov cx, 00e46h                            ; b9 46 0e
     6918    mov cx, 00deah                            ; b9 ea 0d
    69226919    jmp short 04cd1h                          ; eb db
    69236920    test bl, 080h                             ; f6 c3 80
    69246921    je short 04d0ch                           ; 74 11
    6925     mov bx, 00e02h                            ; bb 02 0e
     6922    mov bx, 00da6h                            ; bb a6 0d
    69266923    mov cx, ds                                ; 8c d9
    69276924    mov ax, strict word 00004h                ; b8 04 00
    69286925    call 01933h                               ; e8 2d cc
    69296926    push si                                   ; 56
    6930     mov cx, 00e32h                            ; b9 32 0e
     6927    mov cx, 00dd6h                            ; b9 d6 0d
    69316928    jmp short 04d1bh                          ; eb 0f
    6932     mov bx, 00e02h                            ; bb 02 0e
     6929    mov bx, 00da6h                            ; bb a6 0d
    69336930    mov cx, ds                                ; 8c d9
    69346931    mov ax, strict word 00004h                ; b8 04 00
    69356932    call 01933h                               ; e8 1c cc
    69366933    push si                                   ; 56
    6937     mov cx, 00e28h                            ; b9 28 0e
     6934    mov cx, 00dcch                            ; b9 cc 0d
    69386935    push cx                                   ; 51
    69396936    mov cx, 004bdh                            ; b9 bd 04
     
    69666963    push dx                                   ; 52
    69676964    mov dx, ax                                ; 89 c2
    6968     mov bx, 00e02h                            ; bb 02 0e
     6965    mov bx, 00da6h                            ; bb a6 0d
    69696966    mov cx, ds                                ; 8c d9
    69706967    mov ax, strict word 00004h                ; b8 04 00
     
    70567053    mov byte [bp-008h], al                    ; 88 46 f8
    70577054    mov byte [bp-00ah], al                    ; 88 46 f6
    7058     mov bx, 00e02h                            ; bb 02 0e
     7055    mov bx, 00da6h                            ; bb a6 0d
    70597056    mov cx, ds                                ; 8c d9
    70607057    mov ax, strict word 00004h                ; b8 04 00
     
    76247621    test al, al                               ; 84 c0
    76257622    jne short 05351h                          ; 75 1c
    7626     mov bx, 00e02h                            ; bb 02 0e
     7623    mov bx, 00da6h                            ; bb a6 0d
    76277624    mov cx, ds                                ; 8c d9
    76287625    mov ax, strict word 00004h                ; b8 04 00
     
    79767973    cmp byte [bp-004h], 058h                  ; 80 7e fc 58
    79777974    jbe short 056e7h                          ; 76 22
    7978     mov bx, 00e02h                            ; bb 02 0e
     7975    mov bx, 00da6h                            ; bb a6 0d
    79797976    mov cx, ds                                ; 8c d9
    79807977    mov ax, strict word 00004h                ; b8 04 00
     
    79987995    imul bx                                   ; f7 eb
    79997996    mov bx, ax                                ; 89 c3
    8000     mov al, byte [bx+00e56h]                  ; 8a 87 56 0e
     7997    mov al, byte [bx+00dfah]                  ; 8a 87 fa 0d
    80017998    mov byte [bp-012h], al                    ; 88 46 ee
    8002     mov al, byte [bx+00e57h]                  ; 8a 87 57 0e
     7999    mov al, byte [bx+00dfbh]                  ; 8a 87 fb 0d
    80038000    jmp near 057bah                           ; e9 b2 00
    80048001    test AL, strict byte 004h                 ; a8 04
     
    80098006    imul dx                                   ; f7 ea
    80108007    mov bx, ax                                ; 89 c3
    8011     mov al, byte [bx+00e54h]                  ; 8a 87 54 0e
     8008    mov al, byte [bx+00df8h]                  ; 8a 87 f8 0d
    80128009    mov byte [bp-012h], al                    ; 88 46 ee
    8013     mov al, byte [bx+00e55h]                  ; 8a 87 55 0e
     8010    mov al, byte [bx+00df9h]                  ; 8a 87 f9 0d
    80148011    jmp near 057bah                           ; e9 94 00
    80158012    mov al, byte [bp-010h]                    ; 8a 46 f0
     
    80358032    imul dx                                   ; f7 ea
    80368033    mov bx, ax                                ; 89 c3
    8037     mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
     8034    mov al, byte [bx+00dfch]                  ; 8a 87 fc 0d
    80388035    xor ah, ah                                ; 30 e4
    80398036    mov dx, ax                                ; 89 c2
     
    80418038    test ax, dx                               ; 85 d0
    80428039    je short 05777h                           ; 74 0d
    8043     mov al, byte [bx+00e50h]                  ; 8a 87 50 0e
     8040    mov al, byte [bx+00df4h]                  ; 8a 87 f4 0d
    80448041    mov byte [bp-012h], al                    ; 88 46 ee
    8045     mov al, byte [bx+00e51h]                  ; 8a 87 51 0e
     8042    mov al, byte [bx+00df5h]                  ; 8a 87 f5 0d
    80468043    jmp short 05782h                          ; eb 0b
    8047     mov al, byte [bx+00e52h]                  ; 8a 87 52 0e
     8044    mov al, byte [bx+00df6h]                  ; 8a 87 f6 0d
    80488045    mov byte [bp-012h], al                    ; 88 46 ee
    8049     mov al, byte [bx+00e53h]                  ; 8a 87 53 0e
     8046    mov al, byte [bx+00df7h]                  ; 8a 87 f7 0d
    80508047    mov byte [bp-004h], al                    ; 88 46 fc
    80518048    jmp short 057bdh                          ; eb 36
     
    80558052    imul bx                                   ; f7 eb
    80568053    mov bx, ax                                ; 89 c3
    8057     mov al, byte [bx+00e58h]                  ; 8a 87 58 0e
     8054    mov al, byte [bx+00dfch]                  ; 8a 87 fc 0d
    80588055    xor ah, ah                                ; 30 e4
    80598056    mov dx, ax                                ; 89 c2
     
    80618058    test ax, dx                               ; 85 d0
    80628059    je short 057afh                           ; 74 0d
    8063     mov al, byte [bx+00e52h]                  ; 8a 87 52 0e
     8060    mov al, byte [bx+00df6h]                  ; 8a 87 f6 0d
    80648061    mov byte [bp-012h], al                    ; 88 46 ee
    8065     mov al, byte [bx+00e53h]                  ; 8a 87 53 0e
     8062    mov al, byte [bx+00df7h]                  ; 8a 87 f7 0d
    80668063    jmp short 057bah                          ; eb 0b
    8067     mov al, byte [bx+00e50h]                  ; 8a 87 50 0e
     8064    mov al, byte [bx+00df4h]                  ; 8a 87 f4 0d
    80688065    mov byte [bp-012h], al                    ; 88 46 ee
    8069     mov al, byte [bx+00e51h]                  ; 8a 87 51 0e
     8066    mov al, byte [bx+00df5h]                  ; 8a 87 f5 0d
    80708067    mov byte [bp-004h], al                    ; 88 46 fc
    80718068    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
     
    80738070    cmp byte [bp-012h], 000h                  ; 80 7e ee 00
    80748071    jne short 057e2h                          ; 75 19
    8075     mov bx, 00e02h                            ; bb 02 0e
     8072    mov bx, 00da6h                            ; bb a6 0d
    80768073    mov cx, ds                                ; 8c d9
    80778074    mov ax, strict word 00004h                ; b8 04 00
     
    82768273    mov word [bp+012h], ax                    ; 89 46 12
    82778274    jmp near 059d7h                           ; e9 4a 00
    8278     mov bx, 00e02h                            ; bb 02 0e
     8275    mov bx, 00da6h                            ; bb a6 0d
    82798276    mov cx, ds                                ; 8c d9
    82808277    mov ax, strict word 00004h                ; b8 04 00
     
    82908287    call 01976h                               ; e8 cb bf
    82918288    add sp, strict byte 00006h                ; 83 c4 06
    8292     mov bx, 00e02h                            ; bb 02 0e
     8289    mov bx, 00da6h                            ; bb a6 0d
    82938290    mov cx, ds                                ; 8c d9
    82948291    mov ax, strict word 00004h                ; b8 04 00
     
    85048501    mov dx, word [bp+00ch]                    ; 8b 56 0c
    85058502    mov si, strict word 00020h                ; be 20 00
    8506     call 0a1d0h                               ; e8 22 46
     8503    call 0a190h                               ; e8 e2 45
    85078504    test ax, ax                               ; 85 c0
    85088505    jne short 05bbeh                          ; 75 0c
     
    85428539    mov bx, strict word 0003fh                ; bb 3f 00
    85438540    xor cx, cx                                ; 31 c9
    8544     call 0a180h                               ; e8 79 45
     8541    call 0a140h                               ; e8 39 45
    85458542    mov bx, ax                                ; 89 c3
    85468543    mov cx, dx                                ; 89 d1
    85478544    mov ax, word [bp-004h]                    ; 8b 46 fc
    85488545    mov dx, si                                ; 89 f2
    8549     call 0a1a0h                               ; e8 8d 45
     8546    call 0a160h                               ; e8 4d 45
    85508547    mov word [es:di+002h], ax                 ; 26 89 45 02
    85518548    cmp ax, 00400h                            ; 3d 00 04
     
    86988695    test ax, ax                               ; 85 c0
    86998696    jne short 05d8eh                          ; 75 29
    8700     mov bx, 00e02h                            ; bb 02 0e
     8697    mov bx, 00da6h                            ; bb a6 0d
    87018698    mov cx, ds                                ; 8c d9
    87028699    mov ax, strict word 00004h                ; b8 04 00
     
    87328729    cmp di, dx                                ; 39 d7
    87338730    jbe short 05dedh                          ; 76 31
    8734     mov bx, 00e02h                            ; bb 02 0e
     8731    mov bx, 00da6h                            ; bb a6 0d
    87358732    mov cx, ds                                ; 8c d9
    87368733    mov ax, strict word 00004h                ; b8 04 00
     
    87768773    mov bx, cx                                ; 89 cb
    87778774    xor cx, cx                                ; 31 c9
    8778     call 0a180h                               ; e8 54 43
     8775    call 0a140h                               ; e8 14 43
    87798776    xor bx, bx                                ; 31 db
    87808777    add ax, word [bp-008h]                    ; 03 46 f8
     
    87828779    mov bx, word [bp-00eh]                    ; 8b 5e f2
    87838780    xor cx, cx                                ; 31 c9
    8784     call 0a180h                               ; e8 45 43
     8781    call 0a140h                               ; e8 05 43
    87858782    xor bx, bx                                ; 31 db
    87868783    add ax, di                                ; 01 f8
     
    88408837    test dl, dl                               ; 84 d2
    88418838    je short 05f36h                           ; 74 4a
    8842     mov bx, 00e02h                            ; bb 02 0e
     8839    mov bx, 00da6h                            ; bb a6 0d
    88438840    mov cx, ds                                ; 8c d9
    88448841    mov ax, strict word 00004h                ; b8 04 00
     
    88618858    or ah, 00ch                               ; 80 cc 0c
    88628859    jmp near 0607ch                           ; e9 5f 01
    8863     mov bx, 00e02h                            ; bb 02 0e
     8860    mov bx, 00da6h                            ; bb a6 0d
    88648861    mov cx, ds                                ; 8c d9
    88658862    mov ax, strict word 00004h                ; b8 04 00
     
    89568953    mov bx, word [bp-008h]                    ; 8b 5e f8
    89578954    xor cx, cx                                ; 31 c9
    8958     call 0a180h                               ; e8 6e 41
     8955    call 0a140h                               ; e8 2e 41
    89598956    mov bx, di                                ; 89 fb
    89608957    xor cx, cx                                ; 31 c9
    8961     call 0a180h                               ; e8 67 41
     8958    call 0a140h                               ; e8 27 41
    89628959    mov word [bp-010h], ax                    ; 89 46 f0
    89638960    mov word [bp-004h], dx                    ; 89 56 fc
     
    89698966    mov word [bp+016h], ax                    ; 89 46 16
    89708967    jmp near 05f3ah                           ; e9 07 ff
    8971     mov bx, 00e02h                            ; bb 02 0e
     8968    mov bx, 00da6h                            ; bb a6 0d
    89728969    mov cx, ds                                ; 8c d9
    89738970    mov ax, strict word 00004h                ; b8 04 00
     
    89858982    add sp, strict byte 00008h                ; 83 c4 08
    89868983    jmp near 05f36h                           ; e9 dd fe
    8987     mov bx, 00e02h                            ; bb 02 0e
     8984    mov bx, 00da6h                            ; bb a6 0d
    89888985    mov cx, ds                                ; 8c d9
    89898986    mov ax, strict word 00004h                ; b8 04 00
     
    90929089    mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
    90939090    jmp near 06597h                           ; e9 31 04
    9094     mov bx, 00e02h                            ; bb 02 0e
     9091    mov bx, 00da6h                            ; bb a6 0d
    90959092    mov cx, ds                                ; 8c d9
    90969093    mov ax, strict word 00004h                ; b8 04 00
     
    91189115    xor bx, bx                                ; 31 db
    91199116    mov si, strict word 00020h                ; be 20 00
    9120     call 0a1e0h                               ; e8 2c 40
     9117    call 0a1a0h                               ; e8 ec 3f
    91219118    mov word [bp-00eh], ax                    ; 89 46 f2
    91229119    mov word [bp-010h], bx                    ; 89 5e f0
     
    91489145    cmp si, word [es:bx+036h]                 ; 26 3b 77 36
    91499146    jc short 0622ch                           ; 72 26
    9150     mov bx, 00e02h                            ; bb 02 0e
     9147    mov bx, 00da6h                            ; bb a6 0d
    91519148    mov cx, ds                                ; 8c d9
    91529149    mov ax, strict word 00004h                ; b8 04 00
     
    92109207    test dl, dl                               ; 84 d2
    92119208    je short 0631ah                           ; 74 54
    9212     mov bx, 00e02h                            ; bb 02 0e
     9209    mov bx, 00da6h                            ; bb a6 0d
    92139210    mov cx, ds                                ; 8c d9
    92149211    mov ax, strict word 00004h                ; b8 04 00
     
    92839280    mov dx, si                                ; 89 f2
    92849281    mov si, strict word 00020h                ; be 20 00
    9285     call 0a1d0h                               ; e8 25 3e
     9282    call 0a190h                               ; e8 e5 3d
    92869283    mov bx, di                                ; 89 fb
    92879284    mov word [es:bx+014h], dx                 ; 26 89 57 14
     
    96479644    mov bx, strict word 0000fh                ; bb 0f 00
    96489645    xor cx, cx                                ; 31 c9
    9649     call 0a1a0h                               ; e8 57 3a
     9646    call 0a160h                               ; e8 17 3a
    96509647    mov cx, ax                                ; 89 c1
    96519648    mov bx, dx                                ; 89 d3
     
    98119808    mov word [bp+00ch], ax                    ; 89 46 0c
    98129809    jmp near 0691bh                           ; e9 2e 00
    9813     mov bx, 00e02h                            ; bb 02 0e
     9810    mov bx, 00da6h                            ; bb a6 0d
    98149811    mov cx, ds                                ; 8c d9
    98159812    mov ax, strict word 00004h                ; b8 04 00
     
    100009997    retf                                      ; cb
    100019998    jmp near 0691bh                           ; e9 53 fe
    10002     mov bx, 00e02h                            ; bb 02 0e
     9999    mov bx, 00da6h                            ; bb a6 0d
    1000310000    mov cx, ds                                ; 8c d9
    1000410001    mov ax, strict word 00004h                ; b8 04 00
     
    1004310040    or byte [bp+018h], 001h                   ; 80 4e 18 01
    1004410041    jmp near 0691bh                           ; e9 d8 fd
    10045     mov bx, 00e02h                            ; bb 02 0e
     10042    mov bx, 00da6h                            ; bb a6 0d
    1004610043    mov cx, ds                                ; 8c d9
    1004710044    mov ax, strict word 00004h                ; b8 04 00
     
    1023510232    mov word [bp+014h], strict word 00002h    ; c7 46 14 02 00
    1023610233    jmp short 06d04h                          ; eb d3
    10237     mov bx, 00e02h                            ; bb 02 0e
     10234    mov bx, 00da6h                            ; bb a6 0d
    1023810235    mov cx, ds                                ; 8c d9
    1023910236    mov ax, strict word 00004h                ; b8 04 00
     
    1088210879    mov ax, 008eeh                            ; b8 ee 08
    1088310880    push ax                                   ; 50
    10884     mov ax, 011cah                            ; b8 ca 11
     10881    mov ax, 0116eh                            ; b8 6e 11
    1088510882    push ax                                   ; 50
    1088610883    mov ax, strict word 00007h                ; b8 07 00
     
    1096610963    mov ax, 008f8h                            ; b8 f8 08
    1096710964    push ax                                   ; 50
    10968     mov ax, 011cah                            ; b8 ca 11
     10965    mov ax, 0116eh                            ; b8 6e 11
    1096910966    push ax                                   ; 50
    1097010967    mov ax, strict word 00007h                ; b8 07 00
     
    1252912526    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    1253012527    jne short 08256h                          ; 75 23
    12531     mov bx, 00e02h                            ; bb 02 0e
     12528    mov bx, 00da6h                            ; bb a6 0d
    1253212529    mov cx, ds                                ; 8c d9
    1253312530    mov ax, strict word 00004h                ; b8 04 00
     
    1269212689    mov dx, ss                                ; 8c d2
    1269312690    lea ax, [bp-048h]                         ; 8d 46 b8
    12694     call 0a1f0h                               ; e8 3d 1e
     12691    call 0a1b0h                               ; e8 fd 1d
    1269512692    mov byte [bp-048h], 09eh                  ; c6 46 b8 9e
    1269612693    mov byte [bp-047h], 010h                  ; c6 46 b9 10
     
    1276212759    cmp bx, 00200h                            ; 81 fb 00 02
    1276312760    je short 08487h                           ; 74 23
    12764     mov bx, 00e02h                            ; bb 02 0e
     12761    mov bx, 00da6h                            ; bb a6 0d
    1276512762    mov cx, ds                                ; 8c d9
    1276612763    mov ax, strict word 00004h                ; b8 04 00
     
    1283012827    mov dx, word [bp-024h]                    ; 8b 56 dc
    1283112828    mov si, strict word 0000ch                ; be 0c 00
    12832     call 0a1d0h                               ; e8 cd 1c
     12829    call 0a190h                               ; e8 8d 1c
    1283312830    mov word [bp-02ah], ax                    ; 89 46 d6
    1283412831    mov word [bp-02ch], bx                    ; 89 5e d4
     
    1285212849    mov dx, word [bp-024h]                    ; 8b 56 dc
    1285312850    mov si, strict word 00006h                ; be 06 00
    12854     call 0a1d0h                               ; e8 8c 1c
     12851    call 0a190h                               ; e8 4c 1c
    1285512852    mov si, word [bp-018h]                    ; 8b 76 e8
    1285612853    add si, dx                                ; 01 d6
     
    1287012867    mov dx, si                                ; 89 f2
    1287112868    mov si, strict word 00008h                ; be 08 00
    12872     call 0a1d0h                               ; e8 5c 1c
     12869    call 0a190h                               ; e8 1c 1c
    1287312870    mov word [bp-02eh], bx                    ; 89 5e d2
    1287412871    mov word [bp-030h], cx                    ; 89 4e d0
     
    1287912876    mov dx, word [bp-01eh]                    ; 8b 56 e2
    1288012877    mov si, strict word 00010h                ; be 10 00
    12881     call 0a1d0h                               ; e8 41 1c
     12878    call 0a190h                               ; e8 01 1c
    1288212879    mov si, word [bp-032h]                    ; 8b 76 ce
    1288312880    add si, dx                                ; 01 d6
     
    1290412901    mov dx, word [bp-024h]                    ; 8b 56 dc
    1290512902    mov si, strict word 0000bh                ; be 0b 00
    12906     call 0a1d0h                               ; e8 f7 1b
     12903    call 0a190h                               ; e8 b7 1b
    1290712904    mov si, dx                                ; 89 d6
    1290812905    mov word [bp-026h], cx                    ; 89 4e da
     
    1294912946    mov word [es:bx+02ch], si                 ; 26 89 77 2c
    1295012947    mov word [es:bx+032h], si                 ; 26 89 77 32
    12951     mov bx, 00e02h                            ; bb 02 0e
     12948    mov bx, 00da6h                            ; bb a6 0d
    1295212949    mov cx, ds                                ; 8c d9
    1295312950    mov ax, strict word 00004h                ; b8 04 00
     
    1300813005    inc byte [bp-00ch]                        ; fe 46 f4
    1300913006    jmp near 087a2h                           ; e9 97 00
    13010     mov bx, 00e02h                            ; bb 02 0e
     13007    mov bx, 00da6h                            ; bb a6 0d
    1301113008    mov cx, ds                                ; 8c d9
    1301213009    mov ax, strict word 00004h                ; b8 04 00
     
    1312513122    pop bp                                    ; 5d
    1312613123    retn                                      ; c3
    13127 scsi_pci_init_:                              ; 0xf8846 LB 0x72
     13124scsi_pci_init_:                              ; 0xf8846 LB 0x2b
    1312813125    push bp                                   ; 55
    1312913126    mov bp, sp                                ; 89 e5
     
    1313113128    push cx                                   ; 51
    1313213129    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
     13130    call 09f87h                               ; e8 38 17
    1313713131    mov dx, ax                                ; 89 c2
    1313813132    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
     13133    je short 08869h                           ; 74 13
    1317013134    mov al, dl                                ; 88 d0
    1317113135    xor ah, ah                                ; 30 e4
     
    1317513139    mov bx, strict word 00004h                ; bb 04 00
    1317613140    mov dx, si                                ; 89 f2
    13177     call 0a07ch                               ; e8 cd 17
    13178     lea sp, [bp-008h]                         ; 8d 66 f8
    13179     pop di                                    ; 5f
     13141    call 0a035h                               ; e8 cc 17
     13142    lea sp, [bp-006h]                         ; 8d 66 fa
    1318013143    pop si                                    ; 5e
    1318113144    pop cx                                    ; 59
     
    1318313146    pop bp                                    ; 5d
    1318413147    retn                                      ; c3
    13185 _scsi_init:                                  ; 0xf88b8 LB 0x81
     13148_scsi_init:                                  ; 0xf8871 LB 0x81
    1318613149    push bp                                   ; 55
    1318713150    mov bp, sp                                ; 89 e5
    1318813151    mov dx, strict word 0000eh                ; ba 0e 00
    1318913152    mov ax, strict word 00040h                ; b8 40 00
    13190     call 0166eh                               ; e8 aa 8d
     13153    call 0166eh                               ; e8 f1 8d
    1319113154    mov bx, 00122h                            ; bb 22 01
    1319213155    mov es, ax                                ; 8e c0
     
    1319913162    ; sub ah, ah                                ; 2a e4
    1320013163    cmp AL, strict byte 055h                  ; 3c 55
    13201     jne short 088f1h                          ; 75 15
     13164    jne short 088aah                          ; 75 15
    1320213165    xor al, al                                ; 30 c0
    1320313166    mov dx, 00433h                            ; ba 33 04
    1320413167    out DX, AL                                ; ee
    1320513168    mov ax, 00430h                            ; b8 30 04
    13206     call 0837bh                               ; e8 93 fa
     13169    call 0837bh                               ; e8 da fa
    1320713170    mov dx, 01040h                            ; ba 40 10
    1320813171    mov ax, 0104bh                            ; b8 4b 10
    13209     call 08846h                               ; e8 55 ff
     13172    call 08846h                               ; e8 9c ff
    1321013173    mov AL, strict byte 055h                  ; b0 55
    1321113174    mov dx, 00436h                            ; ba 36 04
     
    1321513178    ; sub ah, ah                                ; 2a e4
    1321613179    cmp AL, strict byte 055h                  ; 3c 55
    13217     jne short 08913h                          ; 75 15
     13180    jne short 088cch                          ; 75 15
    1321813181    xor al, al                                ; 30 c0
    1321913182    mov dx, 00437h                            ; ba 37 04
    1322013183    out DX, AL                                ; ee
    1322113184    mov ax, 00434h                            ; b8 34 04
    13222     call 0837bh                               ; e8 71 fa
     13185    call 0837bh                               ; e8 b8 fa
    1322313186    mov dx, strict word 00030h                ; ba 30 00
    1322413187    mov ax, 01000h                            ; b8 00 10
    13225     call 08846h                               ; e8 33 ff
     13188    call 08846h                               ; e8 7a ff
    1322613189    mov AL, strict byte 055h                  ; b0 55
    1322713190    mov dx, 0043ah                            ; ba 3a 04
     
    1323113194    ; sub ah, ah                                ; 2a e4
    1323213195    cmp AL, strict byte 055h                  ; 3c 55
    13233     jne short 08935h                          ; 75 15
     13196    jne short 088eeh                          ; 75 15
    1323413197    xor al, al                                ; 30 c0
    1323513198    mov dx, 0043bh                            ; ba 3b 04
    1323613199    out DX, AL                                ; ee
    1323713200    mov ax, 00438h                            ; b8 38 04
    13238     call 0837bh                               ; e8 4f fa
     13201    call 0837bh                               ; e8 96 fa
    1323913202    mov dx, strict word 00054h                ; ba 54 00
    1324013203    mov ax, 01000h                            ; b8 00 10
    13241     call 08846h                               ; e8 11 ff
     13204    call 08846h                               ; e8 58 ff
    1324213205    mov sp, bp                                ; 89 ec
    1324313206    pop bp                                    ; 5d
    1324413207    retn                                      ; c3
    13245 ahci_ctrl_extract_bits_:                     ; 0xf8939 LB 0x1c
     13208ahci_ctrl_extract_bits_:                     ; 0xf88f2 LB 0x1c
    1324613209    push si                                   ; 56
    1324713210    push bp                                   ; 55
     
    1325213215    mov cl, byte [bp+006h]                    ; 8a 4e 06
    1325313216    xor ch, ch                                ; 30 ed
    13254     jcxz 08950h                               ; e3 06
     13217    jcxz 08909h                               ; e3 06
    1325513218    shr dx, 1                                 ; d1 ea
    1325613219    rcr ax, 1                                 ; d1 d8
    13257     loop 0894ah                               ; e2 fa
     13220    loop 08903h                               ; e2 fa
    1325813221    pop bp                                    ; 5d
    1325913222    pop si                                    ; 5e
    1326013223    retn 00002h                               ; c2 02 00
    13261 ahci_addr_to_phys_:                          ; 0xf8955 LB 0x1e
     13224ahci_addr_to_phys_:                          ; 0xf890e LB 0x1e
    1326213225    push bx                                   ; 53
    1326313226    push cx                                   ; 51
     
    1327013233    sal ax, 1                                 ; d1 e0
    1327113234    rcl dx, 1                                 ; d1 d2
    13272     loop 08963h                               ; e2 fa
     13235    loop 0891ch                               ; e2 fa
    1327313236    xor cx, cx                                ; 31 c9
    1327413237    add ax, bx                                ; 01 d8
     
    1327813241    pop bx                                    ; 5b
    1327913242    retn                                      ; c3
    13280 ahci_port_cmd_sync_:                         ; 0xf8973 LB 0x159
     13243ahci_port_cmd_sync_:                         ; 0xf892c LB 0x159
    1328113244    push bp                                   ; 55
    1328213245    mov bp, sp                                ; 89 e5
     
    1329313256    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
    1329413257    cmp AL, strict byte 0ffh                  ; 3c ff
    13295     jne short 08996h                          ; 75 03
    13296     jmp near 08ac4h                           ; e9 2e 01
     13258    jne short 0894fh                          ; 75 03
     13259    jmp near 08a7dh                           ; e9 2e 01
    1329713260    mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
    1329813261    xor ah, ah                                ; 30 e4
     
    1330713270    lea ax, [si+00080h]                       ; 8d 84 80 00
    1330813271    mov dx, cx                                ; 89 ca
    13309     call 08955h                               ; e8 92 ff
     13272    call 0890eh                               ; e8 92 ff
    1331013273    mov es, cx                                ; 8e c1
    1331113274    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1337513338    xchg dx, ax                               ; 92
    1337613339    test dh, 040h                             ; f6 c6 40
    13377     jne short 08a56h                          ; 75 04
     13340    jne short 08a0fh                          ; 75 04
    1337813341    test AL, strict byte 001h                 ; a8 01
    13379     je short 08a5ah                           ; 74 04
     13342    je short 08a13h                           ; 74 04
    1338013343    mov AL, strict byte 001h                  ; b0 01
    13381     jmp short 08a5ch                          ; eb 02
     13344    jmp short 08a15h                          ; eb 02
    1338213345    xor al, al                                ; 30 c0
    1338313346    test al, al                               ; 84 c0
    13384     je short 08a28h                           ; 74 c8
     13347    je short 089e1h                           ; 74 c8
    1338513348    mov al, byte [bp-008h]                    ; 8a 46 f8
    1338613349    xor ah, ah                                ; 30 e4
     
    1343913402    pop bp                                    ; 5d
    1344013403    retn                                      ; c3
    13441 ahci_cmd_data_:                              ; 0xf8acc LB 0x262
     13404ahci_cmd_data_:                              ; 0xf8a85 LB 0x262
    1344213405    push bp                                   ; 55
    1344313406    mov bp, sp                                ; 89 e5
     
    1346413427    mov ax, 00080h                            ; b8 80 00
    1346513428    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13466     call 0a1f0h                               ; e8 e6 16
     13429    call 0a1b0h                               ; e8 ed 16
    1346713430    mov es, [bp-00ah]                         ; 8e 46 f6
    1346813431    mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     
    1348213445    mov dx, word [es:si]                      ; 26 8b 14
    1348313446    mov si, strict word 00008h                ; be 08 00
    13484     call 0a1d0h                               ; e8 82 16
     13447    call 0a190h                               ; e8 89 16
    1348513448    mov es, [bp-00ah]                         ; 8e 46 f6
    1348613449    mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     
    1349313456    mov dx, word [es:si]                      ; 26 8b 14
    1349413457    mov si, strict word 00010h                ; be 10 00
    13495     call 0a1d0h                               ; e8 5c 16
     13458    call 0a190h                               ; e8 63 16
    1349613459    mov es, [bp-00ah]                         ; 8e 46 f6
    1349713460    mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     
    1350513468    mov dx, word [es:si]                      ; 26 8b 14
    1350613469    mov si, strict word 00018h                ; be 18 00
    13507     call 0a1d0h                               ; e8 30 16
     13470    call 0a190h                               ; e8 37 16
    1350813471    mov es, [bp-00ah]                         ; 8e 46 f6
    1350913472    mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     
    1351613479    mov dx, word [es:si]                      ; 26 8b 14
    1351713480    mov si, strict word 00020h                ; be 20 00
    13518     call 0a1d0h                               ; e8 0a 16
     13481    call 0a190h                               ; e8 11 16
    1351913482    mov es, [bp-00ah]                         ; 8e 46 f6
    1352013483    mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     
    1352713490    mov dx, word [es:si]                      ; 26 8b 14
    1352813491    mov si, strict word 00028h                ; be 28 00
    13529     call 0a1d0h                               ; e8 e4 15
     13492    call 0a190h                               ; e8 eb 15
    1353013493    mov es, [bp-00ah]                         ; 8e 46 f6
    1353113494    mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     
    1354013503    mov bx, word [bp-012h]                    ; 8b 5e ee
    1354113504    xor cx, cx                                ; 31 c9
    13542     call 0a180h                               ; e8 62 15
     13505    call 0a140h                               ; e8 69 15
    1354313506    push dx                                   ; 52
    1354413507    push ax                                   ; 50
     
    1355013513    mov ax, 0026ah                            ; b8 6a 02
    1355113514    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13552     call 0a0d5h                               ; e8 9b 14
     13515    call 0a08eh                               ; e8 9b 14
    1355313516    mov es, [bp-00ah]                         ; 8e 46 f6
    1355413517    mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     
    1357413537    mov ax, word [es:bx+020h]                 ; 26 8b 47 20
    1357513538    test ax, ax                               ; 85 c0
    13576     je short 08ccah                           ; 74 39
     13539    je short 08c83h                           ; 74 39
    1357713540    dec ax                                    ; 48
    1357813541    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1359213555    mov al, byte [bp-008h]                    ; 8a 46 f8
    1359313556    cmp AL, strict byte 035h                  ; 3c 35
    13594     jne short 08cd7h                          ; 75 06
     13557    jne short 08c90h                          ; 75 06
    1359513558    mov byte [bp-008h], 040h                  ; c6 46 f8 40
    13596     jmp short 08ceeh                          ; eb 17
     13559    jmp short 08ca7h                          ; eb 17
    1359713560    cmp AL, strict byte 0a0h                  ; 3c a0
    13598     jne short 08ceah                          ; 75 0f
     13561    jne short 08ca3h                          ; 75 0f
    1359913562    or byte [bp-008h], 020h                   ; 80 4e f8 20
    1360013563    les bx, [bp-00eh]                         ; c4 5e f2
    1360113564    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    13602     jmp short 08ceeh                          ; eb 04
     13565    jmp short 08ca7h                          ; eb 04
    1360313566    mov byte [bp-008h], 000h                  ; c6 46 f8 00
    1360413567    or byte [bp-008h], 005h                   ; 80 4e f8 05
     
    1360713570    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1360813571    mov dx, word [bp-00ch]                    ; 8b 56 f4
    13609     call 08973h                               ; e8 73 fc
     13572    call 0892ch                               ; e8 73 fc
    1361013573    mov cx, word [bp-00ch]                    ; 8b 4e f4
    1361113574    mov bx, word [bp-00eh]                    ; 8b 5e f2
     
    1361413577    add ax, 0026ah                            ; 05 6a 02
    1361513578    mov dx, cx                                ; 89 ca
    13616     call 0a14ch                               ; e8 37 14
     13579    call 0a105h                               ; e8 37 14
    1361713580    mov es, cx                                ; 8e c1
    1361813581    mov al, byte [es:bx+003h]                 ; 26 8a 47 03
    1361913582    test al, al                               ; 84 c0
    13620     je short 08d24h                           ; 74 05
     13583    je short 08cddh                           ; 74 05
    1362113584    mov ax, strict word 00004h                ; b8 04 00
    13622     jmp short 08d26h                          ; eb 02
     13585    jmp short 08cdfh                          ; eb 02
    1362313586    xor ah, ah                                ; 30 e4
    1362413587    lea sp, [bp-006h]                         ; 8d 66 fa
     
    1362813591    pop bp                                    ; 5d
    1362913592    retn                                      ; c3
    13630 ahci_port_deinit_current_:                   ; 0xf8d2e LB 0x183
     13593ahci_port_deinit_current_:                   ; 0xf8ce7 LB 0x183
    1363113594    push bp                                   ; 55
    1363213595    mov bp, sp                                ; 89 e5
     
    1364313606    mov byte [bp-00ah], al                    ; 88 46 f6
    1364413607    cmp AL, strict byte 0ffh                  ; 3c ff
    13645     je short 08db1h                           ; 74 61
     13608    je short 08d6ah                           ; 74 61
    1364613609    xor ah, ah                                ; 30 e4
    1364713610    mov CL, strict byte 007h                  ; b1 07
     
    1368913652    xchg dx, ax                               ; 92
    1369013653    test ax, 0c011h                           ; a9 11 c0
    13691     je short 08db4h                           ; 74 07
     13654    je short 08d6dh                           ; 74 07
    1369213655    mov AL, strict byte 001h                  ; b0 01
    13693     jmp short 08db6h                          ; eb 05
    13694     jmp near 08ea8h                           ; e9 f4 00
     13656    jmp short 08d6fh                          ; eb 05
     13657    jmp near 08e61h                           ; e9 f4 00
    1369513658    xor al, al                                ; 30 c0
    1369613659    cmp AL, strict byte 001h                  ; 3c 01
    13697     je short 08d83h                           ; 74 c9
     13660    je short 08d3ch                           ; 74 c9
    1369813661    mov cx, strict word 00020h                ; b9 20 00
    1369913662    xor bx, bx                                ; 31 db
    1370013663    mov ax, di                                ; 89 f8
    1370113664    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13702     call 0a1f0h                               ; e8 29 14
     13665    call 0a1b0h                               ; e8 30 14
    1370313666    lea ax, [di+00080h]                       ; 8d 85 80 00
    1370413667    mov cx, strict word 00040h                ; b9 40 00
    1370513668    xor bx, bx                                ; 31 db
    1370613669    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13707     call 0a1f0h                               ; e8 1a 14
     13670    call 0a1b0h                               ; e8 21 14
    1370813671    lea ax, [di+00200h]                       ; 8d 85 00 02
    1370913672    mov cx, strict word 00060h                ; b9 60 00
    1371013673    xor bx, bx                                ; 31 db
    1371113674    mov dx, word [bp-00eh]                    ; 8b 56 f2
    13712     call 0a1f0h                               ; e8 0b 14
     13675    call 0a1b0h                               ; e8 12 14
    1371313676    mov al, byte [bp-00ah]                    ; 8a 46 f6
    1371413677    xor ah, ah                                ; 30 e4
     
    1381613779    pop bp                                    ; 5d
    1381713780    retn                                      ; c3
    13818 ahci_port_init_:                             ; 0xf8eb1 LB 0x250
     13781ahci_port_init_:                             ; 0xf8e6a LB 0x250
    1381913782    push bp                                   ; 55
    1382013783    mov bp, sp                                ; 89 e5
     
    1382613789    mov word [bp-00ah], dx                    ; 89 56 f6
    1382713790    mov byte [bp-008h], bl                    ; 88 5e f8
    13828     call 08d2eh                               ; e8 69 fe
     13791    call 08ce7h                               ; e8 69 fe
    1382913792    mov al, bl                                ; 88 d8
    1383013793    xor ah, ah                                ; 30 e4
     
    1387713840    xchg dx, ax                               ; 92
    1387813841    test ax, 0c011h                           ; a9 11 c0
    13879     je short 08f38h                           ; 74 04
     13842    je short 08ef1h                           ; 74 04
    1388013843    mov AL, strict byte 001h                  ; b0 01
    13881     jmp short 08f3ah                          ; eb 02
     13844    jmp short 08ef3h                          ; eb 02
    1388213845    xor al, al                                ; 30 c0
    1388313846    cmp AL, strict byte 001h                  ; 3c 01
    13884     je short 08f02h                           ; 74 c4
     13847    je short 08ebbh                           ; 74 c4
    1388513848    mov cx, strict word 00020h                ; b9 20 00
    1388613849    xor bx, bx                                ; 31 db
    1388713850    mov ax, si                                ; 89 f0
    1388813851    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13889     call 0a1f0h                               ; e8 a5 12
     13852    call 0a1b0h                               ; e8 ac 12
    1389013853    lea ax, [si+00080h]                       ; 8d 84 80 00
    1389113854    mov cx, strict word 00040h                ; b9 40 00
    1389213855    xor bx, bx                                ; 31 db
    1389313856    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13894     call 0a1f0h                               ; e8 96 12
     13857    call 0a1b0h                               ; e8 9d 12
    1389513858    lea di, [si+00200h]                       ; 8d bc 00 02
    1389613859    mov cx, strict word 00060h                ; b9 60 00
     
    1389813861    mov ax, di                                ; 89 f8
    1389913862    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13900     call 0a1f0h                               ; e8 85 12
     13863    call 0a1b0h                               ; e8 8c 12
    1390113864    mov bl, byte [bp-008h]                    ; 8a 5e f8
    1390213865    xor bh, bh                                ; 30 ff
     
    1391713880    mov ax, di                                ; 89 f8
    1391813881    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13919     call 08955h                               ; e8 bb f9
     13882    call 0890eh                               ; e8 bb f9
    1392013883    mov es, [bp-00ah]                         ; 8e 46 f6
    1392113884    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1396213925    mov ax, si                                ; 89 f0
    1396313926    mov dx, word [bp-00ah]                    ; 8b 56 f6
    13964     call 08955h                               ; e8 4f f9
     13927    call 0890eh                               ; e8 4f f9
    1396513928    mov es, [bp-00ah]                         ; 8e 46 f6
    1396613929    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     
    1406714030    pop bp                                    ; 5d
    1406814031    retn                                      ; c3
    14069 @ahci_read_sectors:                          ; 0xf9101 LB 0xaa
     14032@ahci_read_sectors:                          ; 0xf90ba LB 0xaa
    1407014033    push bp                                   ; 55
    1407114034    mov bp, sp                                ; 89 e5
     
    1407814041    sub di, strict byte 0000ch                ; 83 ef 0c
    1407914042    cmp di, strict byte 00004h                ; 83 ff 04
    14080     jbe short 0912ch                          ; 76 13
     14043    jbe short 090e5h                          ; 76 13
    1408114044    push di                                   ; 57
    14082     mov ax, 00cc4h                            ; b8 c4 0c
    14083     push ax                                   ; 50
    14084     mov ax, 00cd6h                            ; b8 d6 0c
     14045    mov ax, 00c62h                            ; b8 62 0c
     14046    push ax                                   ; 50
     14047    mov ax, 00c74h                            ; b8 74 0c
    1408514048    push ax                                   ; 50
    1408614049    mov ax, strict word 00007h                ; b8 07 00
    1408714050    push ax                                   ; 50
    14088     call 01976h                               ; e8 4d 88
     14051    call 01976h                               ; e8 94 88
    1408914052    add sp, strict byte 00008h                ; 83 c4 08
    1409014053    xor bx, bx                                ; 31 db
     
    1410014063    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1410114064    xor ax, ax                                ; 31 c0
    14102     call 08eb1h                               ; e8 5a fd
     14065    call 08e6ah                               ; e8 5a fd
    1410314066    mov bx, strict word 00025h                ; bb 25 00
    1410414067    mov ax, si                                ; 89 f0
    1410514068    mov dx, word [bp+006h]                    ; 8b 56 06
    14106     call 08acch                               ; e8 6a f9
     14069    call 08a85h                               ; e8 6a f9
    1410714070    mov bx, ax                                ; 89 c3
    1410814071    mov es, [bp+006h]                         ; 8e 46 06
     
    1413414097    pop bp                                    ; 5d
    1413514098    retn 00004h                               ; c2 04 00
    14136 @ahci_write_sectors:                         ; 0xf91ab LB 0x88
     14099@ahci_write_sectors:                         ; 0xf9164 LB 0x88
    1413714100    push bp                                   ; 55
    1413814101    mov bp, sp                                ; 89 e5
     
    1414614109    sub bx, strict byte 0000ch                ; 83 eb 0c
    1414714110    cmp bx, strict byte 00004h                ; 83 fb 04
    14148     jbe short 091d9h                          ; 76 13
     14111    jbe short 09192h                          ; 76 13
    1414914112    push bx                                   ; 53
    14150     mov ax, 00cf5h                            ; b8 f5 0c
    14151     push ax                                   ; 50
    14152     mov ax, 00cd6h                            ; b8 d6 0c
     14113    mov ax, 00c93h                            ; b8 93 0c
     14114    push ax                                   ; 50
     14115    mov ax, 00c74h                            ; b8 74 0c
    1415314116    push ax                                   ; 50
    1415414117    mov ax, strict word 00007h                ; b8 07 00
    1415514118    push ax                                   ; 50
    14156     call 01976h                               ; e8 a0 87
     14119    call 01976h                               ; e8 e7 87
    1415714120    add sp, strict byte 00008h                ; 83 c4 08
    1415814121    xor di, di                                ; 31 ff
     
    1416814131    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1416914132    xor ax, ax                                ; 31 c0
    14170     call 08eb1h                               ; e8 af fc
     14133    call 08e6ah                               ; e8 af fc
    1417114134    mov bx, strict word 00035h                ; bb 35 00
    1417214135    mov ax, si                                ; 89 f0
    1417314136    mov dx, cx                                ; 89 ca
    14174     call 08acch                               ; e8 c0 f8
     14137    call 08a85h                               ; e8 c0 f8
    1417514138    mov dx, ax                                ; 89 c2
    1417614139    mov es, cx                                ; 8e c1
     
    1418714150    pop bp                                    ; 5d
    1418814151    retn 00004h                               ; c2 04 00
    14189 ahci_cmd_packet_:                            ; 0xf9233 LB 0x18c
     14152ahci_cmd_packet_:                            ; 0xf91ec LB 0x18c
    1419014153    push bp                                   ; 55
    1419114154    mov bp, sp                                ; 89 e5
     
    1419914162    mov dx, strict word 0000eh                ; ba 0e 00
    1420014163    mov ax, strict word 00040h                ; b8 40 00
    14201     call 0166eh                               ; e8 20 84
     14164    call 0166eh                               ; e8 67 84
    1420214165    mov si, 00122h                            ; be 22 01
    1420314166    mov word [bp-008h], ax                    ; 89 46 f8
    1420414167    cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
    14205     jne short 0927dh                          ; 75 23
    14206     mov bx, 00e02h                            ; bb 02 0e
     14168    jne short 09236h                          ; 75 23
     14169    mov bx, 00da6h                            ; bb a6 0d
    1420714170    mov cx, ds                                ; 8c d9
    1420814171    mov ax, strict word 00004h                ; b8 04 00
    14209     call 01933h                               ; e8 ce 86
    14210     mov ax, 00d08h                            ; b8 08 0d
    14211     push ax                                   ; 50
    14212     mov ax, 00d18h                            ; b8 18 0d
     14172    call 01933h                               ; e8 15 87
     14173    mov ax, 00ca6h                            ; b8 a6 0c
     14174    push ax                                   ; 50
     14175    mov ax, 00cb6h                            ; b8 b6 0c
    1421314176    push ax                                   ; 50
    1421414177    mov ax, strict word 00004h                ; b8 04 00
    1421514178    push ax                                   ; 50
    14216     call 01976h                               ; e8 02 87
     14179    call 01976h                               ; e8 49 87
    1421714180    add sp, strict byte 00006h                ; 83 c4 06
    1421814181    mov ax, strict word 00001h                ; b8 01 00
    14219     jmp near 093b6h                           ; e9 39 01
     14182    jmp near 0936fh                           ; e9 39 01
    1422014183    test byte [bp+004h], 001h                 ; f6 46 04 01
    14221     jne short 09277h                          ; 75 f4
     14184    jne short 09230h                          ; 75 f4
    1422214185    mov bx, word [bp+006h]                    ; 8b 5e 06
    1422314186    mov di, word [bp+008h]                    ; 8b 7e 08
     
    1422514188    sal bx, 1                                 ; d1 e3
    1422614189    rcl di, 1                                 ; d1 d7
    14227     loop 0928ch                               ; e2 fa
     14190    loop 09245h                               ; e2 fa
    1422814191    mov es, [bp-008h]                         ; 8e 46 f8
    1422914192    mov word [es:si], bx                      ; 26 89 1c
     
    1423914202    mov dx, word [bp+008h]                    ; 8b 56 08
    1424014203    xor cx, cx                                ; 31 c9
    14241     call 0a1a0h                               ; e8 db 0e
     14204    call 0a160h                               ; e8 e2 0e
    1424214205    mov word [es:si+00eh], ax                 ; 26 89 44 0e
    1424314206    xor di, di                                ; 31 ff
     
    1425714220    mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
    1425814221    xor ax, ax                                ; 31 c0
    14259     call 08eb1h                               ; e8 af fb
     14222    call 08e6ah                               ; e8 af fb
    1426014223    mov al, byte [bp-006h]                    ; 8a 46 fa
    1426114224    xor ah, ah                                ; 30 e4
     
    1426514228    mov ax, 000c0h                            ; b8 c0 00
    1426614229    mov dx, word [bp-00ah]                    ; 8b 56 f6
    14267     call 0a200h                               ; e8 e9 0e
     14230    call 0a1c0h                               ; e8 f0 0e
    1426814231    mov es, [bp-008h]                         ; 8e 46 f8
    1426914232    mov word [es:si+018h], di                 ; 26 89 7c 18
     
    1427214235    mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
    1427314236    test ax, ax                               ; 85 c0
    14274     je short 09355h                           ; 74 27
     14237    je short 0930eh                           ; 74 27
    1427514238    dec ax                                    ; 48
    1427614239    mov es, [bp-00ah]                         ; 8e 46 f6
     
    1428514248    mov ax, si                                ; 89 f0
    1428614249    mov dx, word [bp-008h]                    ; 8b 56 f8
    14287     call 08acch                               ; e8 6c f7
     14250    call 08a85h                               ; e8 6c f7
    1428814251    les bx, [bp-00eh]                         ; c4 5e f2
    1428914252    mov dx, word [es:bx+004h]                 ; 26 8b 57 04
     
    1431214275    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1431314276    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    14314     jne short 093b4h                          ; 75 05
     14277    jne short 0936dh                          ; 75 05
    1431514278    mov ax, strict word 00004h                ; b8 04 00
    14316     jmp short 093b6h                          ; eb 02
     14279    jmp short 0936fh                          ; eb 02
    1431714280    xor ax, ax                                ; 31 c0
    1431814281    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1432114284    pop bp                                    ; 5d
    1432214285    retn 0000ch                               ; c2 0c 00
    14323 ahci_port_detect_device_:                    ; 0xf93bf LB 0x4fe
     14286ahci_port_detect_device_:                    ; 0xf9378 LB 0x4fe
    1432414287    push bp                                   ; 55
    1432514288    mov bp, sp                                ; 89 e5
     
    1433714300    mov bx, word [bp-020h]                    ; 8b 5e e0
    1433814301    mov ax, si                                ; 89 f0
    14339     call 08eb1h                               ; e8 ce fa
     14302    call 08e6ah                               ; e8 ce fa
    1434014303    mov dx, strict word 0000eh                ; ba 0e 00
    1434114304    mov ax, strict word 00040h                ; b8 40 00
    14342     call 0166eh                               ; e8 82 82
     14305    call 0166eh                               ; e8 c9 82
    1434314306    mov word [bp-01ah], 00122h                ; c7 46 e6 22 01
    1434414307    mov word [bp-00eh], ax                    ; 89 46 f2
     
    1441214375    mov bx, strict word 0000fh                ; bb 0f 00
    1441314376    xor cx, cx                                ; 31 c9
    14414     call 08939h                               ; e8 9f f4
     14377    call 088f2h                               ; e8 9f f4
    1441514378    test ax, ax                               ; 85 c0
    14416     jne short 094a1h                          ; 75 03
    14417     jmp near 098b5h                           ; e9 14 04
     14379    jne short 0945ah                          ; 75 03
     14380    jmp near 0986eh                           ; e9 14 04
    1441814381    mov al, byte [bp-008h]                    ; 8a 46 f8
    1441914382    xor ah, ah                                ; 30 e4
     
    1444714410    xor cx, cx                                ; 31 c9
    1444814411    mov ax, di                                ; 89 f8
    14449     call 08939h                               ; e8 4d f4
     14412    call 088f2h                               ; e8 4d f4
    1445014413    cmp ax, strict word 00001h                ; 3d 01 00
    14451     je short 094a1h                           ; 74 b0
     14414    je short 0945ah                           ; 74 b0
    1445214415    xor ax, ax                                ; 31 c0
    1445314416    push ax                                   ; 50
     
    1445614419    mov ax, di                                ; 89 f8
    1445714420    mov dx, word [bp-01ch]                    ; 8b 56 e4
    14458     call 08939h                               ; e8 38 f4
     14421    call 088f2h                               ; e8 38 f4
    1445914422    cmp ax, strict word 00003h                ; 3d 03 00
    14460     jne short 0949eh                          ; 75 98
     14423    jne short 09457h                          ; 75 98
    1446114424    mov ax, word [bp-016h]                    ; 8b 46 ea
    1446214425    add ax, 00130h                            ; 05 30 01
     
    1448614449    mov byte [bp-00ch], al                    ; 88 46 f4
    1448714450    cmp AL, strict byte 004h                  ; 3c 04
    14488     jc short 09550h                           ; 72 03
    14489     jmp near 098b5h                           ; e9 65 03
     14451    jc short 09509h                           ; 72 03
     14452    jmp near 0986eh                           ; e9 65 03
    1449014453    mov ax, word [bp-016h]                    ; 8b 46 ea
    1449114454    add ax, 00118h                            ; 05 18 01
     
    1453914502    add cl, 00ch                              ; 80 c1 0c
    1454014503    test dx, dx                               ; 85 d2
    14541     jne short 0961bh                          ; 75 55
     14504    jne short 095d4h                          ; 75 55
    1454214505    cmp bx, 00101h                            ; 81 fb 01 01
    14543     jne short 0961bh                          ; 75 4f
     14506    jne short 095d4h                          ; 75 4f
    1454414507    mov es, [bp-00eh]                         ; 8e 46 f2
    1454514508    mov bx, word [bp-01ah]                    ; 8b 5e e6
     
    1455614519    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1455714520    mov dx, es                                ; 8c c2
    14558     call 08acch                               ; e8 c0 f4
     14521    call 08a85h                               ; e8 c0 f4
    1455914522    mov byte [bp-00ah], cl                    ; 88 4e f6
    1456014523    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14561     je short 0961eh                           ; 74 08
     14524    je short 095d7h                           ; 74 08
    1456214525    mov ax, strict word 00001h                ; b8 01 00
    14563     jmp short 09620h                          ; eb 05
    14564     jmp near 097f0h                           ; e9 d2 01
     14526    jmp short 095d9h                          ; eb 05
     14527    jmp near 097a9h                           ; e9 d2 01
    1456514528    xor ax, ax                                ; 31 c0
    1456614529    mov cl, al                                ; 88 c1
     
    1457814541    mov word [bp-012h], ax                    ; 89 46 ee
    1457914542    cmp di, 00fffh                            ; 81 ff ff 0f
    14580     jne short 0966fh                          ; 75 1f
     14543    jne short 09628h                          ; 75 1f
    1458114544    cmp word [bp-014h], strict byte 0ffffh    ; 83 7e ec ff
    14582     jne short 0966fh                          ; 75 19
     14545    jne short 09628h                          ; 75 19
    1458314546    mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
    1458414547    mov word [bp-012h], ax                    ; 89 46 ee
     
    1462014583    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1462114584    cmp AL, strict byte 001h                  ; 3c 01
    14622     jc short 096ech                           ; 72 0c
    14623     jbe short 096f4h                          ; 76 12
     14585    jc short 096a5h                           ; 72 0c
     14586    jbe short 096adh                          ; 76 12
    1462414587    cmp AL, strict byte 003h                  ; 3c 03
    14625     je short 096fch                           ; 74 16
     14588    je short 096b5h                           ; 74 16
    1462614589    cmp AL, strict byte 002h                  ; 3c 02
    14627     je short 096f8h                           ; 74 0e
    14628     jmp short 0973fh                          ; eb 53
     14590    je short 096b1h                           ; 74 0e
     14591    jmp short 096f8h                          ; eb 53
    1462914592    test al, al                               ; 84 c0
    14630     jne short 0973fh                          ; 75 4f
     14593    jne short 096f8h                          ; 75 4f
    1463114594    mov DL, strict byte 040h                  ; b2 40
    14632     jmp short 096feh                          ; eb 0a
     14595    jmp short 096b7h                          ; eb 0a
    1463314596    mov DL, strict byte 048h                  ; b2 48
    14634     jmp short 096feh                          ; eb 06
     14597    jmp short 096b7h                          ; eb 06
    1463514598    mov DL, strict byte 050h                  ; b2 50
    14636     jmp short 096feh                          ; eb 02
     14599    jmp short 096b7h                          ; eb 02
    1463714600    mov DL, strict byte 058h                  ; b2 58
    1463814601    mov bl, dl                                ; 88 d3
     
    1464014603    xor bh, bh                                ; 30 ff
    1464114604    mov ax, bx                                ; 89 d8
    14642     call 016aeh                               ; e8 a4 7f
     14605    call 016aeh                               ; e8 eb 7f
    1464314606    test al, al                               ; 84 c0
    14644     je short 0973fh                           ; 74 31
     14607    je short 096f8h                           ; 74 31
    1464514608    mov al, dl                                ; 88 d0
    1464614609    db  0feh, 0c0h
    1464714610    ; inc al                                    ; fe c0
    1464814611    xor ah, ah                                ; 30 e4
    14649     call 016aeh                               ; e8 97 7f
     14612    call 016aeh                               ; e8 de 7f
    1465014613    mov ch, al                                ; 88 c5
    1465114614    mov al, dl                                ; 88 d0
    1465214615    xor ah, ah                                ; 30 e4
    14653     call 016aeh                               ; e8 8e 7f
     14616    call 016aeh                               ; e8 d5 7f
    1465414617    mov ah, ch                                ; 88 ec
    1465514618    mov word [bp-028h], ax                    ; 89 46 d8
     
    1465714620    add AL, strict byte 002h                  ; 04 02
    1465814621    xor ah, ah                                ; 30 e4
    14659     call 016aeh                               ; e8 80 7f
     14622    call 016aeh                               ; e8 c7 7f
    1466014623    xor ah, ah                                ; 30 e4
    1466114624    mov word [bp-02ah], ax                    ; 89 46 d6
    1466214625    mov ax, bx                                ; 89 d8
    14663     call 016aeh                               ; e8 76 7f
     14626    call 016aeh                               ; e8 bd 7f
    1466414627    xor ah, ah                                ; 30 e4
    1466514628    mov word [bp-026h], ax                    ; 89 46 da
    14666     jmp short 09751h                          ; eb 12
     14629    jmp short 0970ah                          ; eb 12
    1466714630    push word [bp-012h]                       ; ff 76 ee
    1466814631    push word [bp-01eh]                       ; ff 76 e2
     
    1467114634    mov dx, ss                                ; 8c d2
    1467214635    lea ax, [bp-02ah]                         ; 8d 46 d6
    14673     call 05b7fh                               ; e8 2e c4
    14674     mov bx, 00e02h                            ; bb 02 0e
     14636    call 05b7fh                               ; e8 75 c4
     14637    mov bx, 00da6h                            ; bb a6 0d
    1467514638    mov cx, ds                                ; 8c d9
    1467614639    mov ax, strict word 00004h                ; b8 04 00
    14677     call 01933h                               ; e8 d7 81
     14640    call 01933h                               ; e8 1e 82
    1467814641    push word [bp-012h]                       ; ff 76 ee
    1467914642    push word [bp-01eh]                       ; ff 76 e2
     
    1469414657    mov al, byte [bp-00ch]                    ; 8a 46 f4
    1469514658    push ax                                   ; 50
    14696     mov ax, 00d38h                            ; b8 38 0d
     14659    mov ax, 00cd6h                            ; b8 d6 0c
    1469714660    push ax                                   ; 50
    1469814661    mov ax, strict word 00004h                ; b8 04 00
    1469914662    push ax                                   ; 50
    14700     call 01976h                               ; e8 e6 81
     14663    call 01976h                               ; e8 2d 82
    1470114664    add sp, strict byte 0001ch                ; 83 c4 1c
    1470214665    mov al, byte [bp-00ah]                    ; 8a 46 f6
     
    1473014693    mov dx, strict word 00075h                ; ba 75 00
    1473114694    mov ax, strict word 00040h                ; b8 40 00
    14732     call 01652h                               ; e8 74 7e
     14695    call 01652h                               ; e8 bb 7e
    1473314696    mov bl, al                                ; 88 c3
    1473414697    db  0feh, 0c3h
     
    1473714700    mov dx, strict word 00075h                ; ba 75 00
    1473814701    mov ax, strict word 00040h                ; b8 40 00
    14739     call 01660h                               ; e8 73 7e
    14740     jmp near 098a4h                           ; e9 b4 00
     14702    call 01660h                               ; e8 ba 7e
     14703    jmp near 0985dh                           ; e9 b4 00
    1474114704    cmp dx, 0eb14h                            ; 81 fa 14 eb
    14742     jne short 0984bh                          ; 75 55
     14705    jne short 09804h                          ; 75 55
    1474314706    cmp bx, 00101h                            ; 81 fb 01 01
    14744     jne short 0984bh                          ; 75 4f
     14707    jne short 09804h                          ; 75 4f
    1474514708    mov es, [bp-00eh]                         ; 8e 46 f2
    1474614709    mov bx, word [bp-01ah]                    ; 8b 5e e6
     
    1475714720    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1475814721    mov dx, es                                ; 8c c2
    14759     call 08acch                               ; e8 90 f2
     14722    call 08a85h                               ; e8 90 f2
    1476014723    mov byte [bp-00ah], cl                    ; 88 4e f6
    1476114724    test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
    14762     je short 0984dh                           ; 74 07
     14725    je short 09806h                           ; 74 07
    1476314726    mov cx, strict word 00001h                ; b9 01 00
    14764     jmp short 0984fh                          ; eb 04
    14765     jmp short 098a4h                          ; eb 57
     14727    jmp short 09808h                          ; eb 04
     14728    jmp short 0985dh                          ; eb 57
    1476614729    xor cx, cx                                ; 31 c9
    1476714730    mov bl, byte [bp-00ch]                    ; 8a 5e f4
     
    1480314766    pop bp                                    ; 5d
    1480414767    retn                                      ; c3
    14805 ahci_mem_alloc_:                             ; 0xf98bd LB 0x43
     14768ahci_mem_alloc_:                             ; 0xf9876 LB 0x43
    1480614769    push bp                                   ; 55
    1480714770    mov bp, sp                                ; 89 e5
     
    1481314776    mov dx, 00413h                            ; ba 13 04
    1481414777    xor ax, ax                                ; 31 c0
    14815     call 0166eh                               ; e8 a1 7d
     14778    call 0166eh                               ; e8 e8 7d
    1481614779    test ax, ax                               ; 85 c0
    14817     je short 098f6h                           ; 74 25
     14780    je short 098afh                           ; 74 25
    1481814781    dec ax                                    ; 48
    1481914782    mov bx, ax                                ; 89 c3
     
    1482214785    sal ax, 1                                 ; d1 e0
    1482314786    rcl dx, 1                                 ; d1 d2
    14824     loop 098d9h                               ; e2 fa
     14787    loop 09892h                               ; e2 fa
    1482514788    mov si, ax                                ; 89 c6
    1482614789    mov di, dx                                ; 89 d7
     
    1482814791    shr di, 1                                 ; d1 ef
    1482914792    rcr si, 1                                 ; d1 de
    14830     loop 098e6h                               ; e2 fa
     14793    loop 0989fh                               ; e2 fa
    1483114794    mov dx, 00413h                            ; ba 13 04
    1483214795    xor ax, ax                                ; 31 c0
    14833     call 0167ch                               ; e8 88 7d
     14796    call 0167ch                               ; e8 cf 7d
    1483414797    mov ax, si                                ; 89 f0
    1483514798    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1484114804    pop bp                                    ; 5d
    1484214805    retn                                      ; c3
    14843 ahci_hba_init_:                              ; 0xf9900 LB 0x16e
     14806ahci_hba_init_:                              ; 0xf98b9 LB 0x16e
    1484414807    push bp                                   ; 55
    1484514808    mov bp, sp                                ; 89 e5
     
    1485314816    mov dx, strict word 0000eh                ; ba 0e 00
    1485414817    mov ax, strict word 00040h                ; b8 40 00
    14855     call 0166eh                               ; e8 58 7d
     14818    call 0166eh                               ; e8 9f 7d
    1485614819    mov bx, 00122h                            ; bb 22 01
    1485714820    mov di, ax                                ; 89 c7
     
    1487014833    shr eax, 010h                             ; 66 c1 e8 10
    1487114834    xchg dx, ax                               ; 92
    14872     call 098bdh                               ; e8 83 ff
     14835    call 09876h                               ; e8 83 ff
    1487314836    mov word [bp-010h], ax                    ; 89 46 f0
    1487414837    test ax, ax                               ; 85 c0
    14875     jne short 09944h                          ; 75 03
    14876     jmp near 09a4dh                           ; e9 09 01
     14838    jne short 098fdh                          ; 75 03
     14839    jmp near 09a06h                           ; e9 09 01
    1487714840    mov ax, word [bp-010h]                    ; 8b 46 f0
    1487814841    mov es, di                                ; 8e c7
     
    1492414887    xchg dx, ax                               ; 92
    1492514888    test AL, strict byte 001h                 ; a8 01
    14926     jne short 0999eh                          ; 75 de
     14889    jne short 09957h                          ; 75 de
    1492714890    xor ax, ax                                ; 31 c0
    1492814891    xor cx, cx                                ; 31 c9
     
    1494314906    mov bx, strict word 0001fh                ; bb 1f 00
    1494414907    xor cx, cx                                ; 31 c9
    14945     call 08939h                               ; e8 54 ef
     14908    call 088f2h                               ; e8 54 ef
    1494614909    db  0feh, 0c0h
    1494714910    ; inc al                                    ; fe c0
    1494814911    mov byte [bp-00eh], al                    ; 88 46 f2
    1494914912    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
    14950     jmp short 09a11h                          ; eb 21
     14913    jmp short 099cah                          ; eb 21
    1495114914    xor al, al                                ; 30 c0
    1495214915    test al, al                               ; 84 c0
    14953     je short 09a08h                           ; 74 12
     14916    je short 099c1h                           ; 74 12
    1495414917    mov bl, byte [bp-00ch]                    ; 8a 5e f4
    1495514918    xor bh, bh                                ; 30 ff
    1495614919    xor ax, ax                                ; 31 c0
    1495714920    mov dx, word [bp-010h]                    ; 8b 56 f0
    14958     call 093bfh                               ; e8 bc f9
     14921    call 09378h                               ; e8 bc f9
    1495914922    dec byte [bp-00eh]                        ; fe 4e f2
    14960     je short 09a4bh                           ; 74 43
     14923    je short 09a04h                           ; 74 43
    1496114924    inc byte [bp-00ch]                        ; fe 46 f4
    1496214925    cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
    14963     jnc short 09a4bh                          ; 73 3a
     14926    jnc short 09a04h                          ; 73 3a
    1496414927    mov cl, byte [bp-00ch]                    ; 8a 4e f4
    1496514928    xor ch, ch                                ; 30 ed
    1496614929    mov bx, strict word 00001h                ; bb 01 00
    1496714930    xor di, di                                ; 31 ff
    14968     jcxz 09a23h                               ; e3 06
     14931    jcxz 099dch                               ; e3 06
    1496914932    sal bx, 1                                 ; d1 e3
    1497014933    rcl di, 1                                 ; d1 d7
    14971     loop 09a1dh                               ; e2 fa
     14934    loop 099d6h                               ; e2 fa
    1497214935    mov ax, strict word 0000ch                ; b8 0c 00
    1497314936    xor cx, cx                                ; 31 c9
     
    1498514948    xchg dx, ax                               ; 92
    1498614949    test dx, di                               ; 85 fa
    14987     jne short 09a47h                          ; 75 04
     14950    jne short 09a00h                          ; 75 04
    1498814951    test ax, bx                               ; 85 d8
    14989     je short 099f0h                           ; 74 a9
     14952    je short 099a9h                           ; 74 a9
    1499014953    mov AL, strict byte 001h                  ; b0 01
    14991     jmp short 099f2h                          ; eb a7
     14954    jmp short 099abh                          ; eb a7
    1499214955    xor ax, ax                                ; 31 c0
    1499314956    lea sp, [bp-00ah]                         ; 8d 66 f6
     
    1499914962    pop bp                                    ; 5d
    1500014963    retn                                      ; c3
    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
     14964    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 00dh, 09bh, 0ebh, 09ah, 0f1h, 09ah, 0f7h, 09ah, 0fdh
     14965    db  09ah, 003h, 09bh, 009h, 09bh, 00dh, 09bh
     14966_ahci_init:                                  ; 0xf9a27 LB 0x139
    1500414967    push bp                                   ; 55
    1500514968    mov bp, sp                                ; 89 e5
     
    1500914972    mov ax, 00601h                            ; b8 01 06
    1501014973    mov dx, strict word 00001h                ; ba 01 00
    15011     call 09fc6h                               ; e8 47 05
     14974    call 09f7fh                               ; e8 47 05
    1501214975    mov dx, ax                                ; 89 c2
    1501314976    cmp ax, strict word 0ffffh                ; 3d ff ff
    15014     je short 09acfh                           ; 74 49
     14977    je short 09a88h                           ; 74 49
    1501514978    mov al, ah                                ; 88 e0
    1501614979    mov byte [bp-008h], ah                    ; 88 66 f8
     
    1501914982    xor ah, ah                                ; 30 e4
    1502014983    mov bx, strict word 00034h                ; bb 34 00
    15021     call 09ff1h                               ; e8 59 05
     14984    call 09faah                               ; e8 59 05
    1502214985    mov cl, al                                ; 88 c1
    1502314986    test cl, cl                               ; 84 c9
    15024     je short 09ad2h                           ; 74 34
     14987    je short 09a8bh                           ; 74 34
    1502514988    mov bl, cl                                ; 88 cb
    1502614989    xor bh, bh                                ; 30 ff
     
    1503314996    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1503414997    mov ax, word [bp-012h]                    ; 8b 46 ee
    15035     call 09ff1h                               ; e8 34 05
     14998    call 09faah                               ; e8 34 05
    1503614999    cmp AL, strict byte 012h                  ; 3c 12
    15037     je short 09ad2h                           ; 74 11
     15000    je short 09a8bh                           ; 74 11
    1503815001    mov bl, cl                                ; 88 cb
    1503915002    db  0feh, 0c3h
     
    1504215005    mov dx, word [bp-00ch]                    ; 8b 56 f4
    1504315006    mov ax, word [bp-012h]                    ; 8b 46 ee
    15044     jmp short 09a95h                          ; eb c6
    15045     jmp near 09ba0h                           ; e9 ce 00
     15007    jmp short 09a4eh                          ; eb c6
     15008    jmp near 09b59h                           ; e9 ce 00
    1504615009    test cl, cl                               ; 84 c9
    15047     je short 09acfh                           ; 74 f9
     15010    je short 09a88h                           ; 74 f9
    1504815011    add cl, 002h                              ; 80 c1 02
    1504915012    mov bl, cl                                ; 88 cb
     
    1505715020    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1505815021    mov ax, word [bp-014h]                    ; 8b 46 ec
    15059     call 09ff1h                               ; e8 f9 04
     15022    call 09faah                               ; e8 f9 04
    1506015023    cmp AL, strict byte 010h                  ; 3c 10
    15061     jne short 09acfh                          ; 75 d3
     15024    jne short 09a88h                          ; 75 d3
    1506215025    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1506315026    mov bl, cl                                ; 88 cb
     
    1506615029    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1506715030    mov ax, word [bp-014h]                    ; 8b 46 ec
    15068     call 0a018h                               ; e8 08 05
     15031    call 09fd1h                               ; e8 08 05
    1506915032    mov dx, ax                                ; 89 c2
    1507015033    and ax, strict word 0000fh                ; 25 0f 00
    1507115034    sub ax, strict word 00004h                ; 2d 04 00
    1507215035    cmp ax, strict word 0000bh                ; 3d 0b 00
    15073     jnbe short 09b54h                         ; 77 37
     15036    jnbe short 09b0dh                         ; 77 37
    1507415037    push CS                                   ; 0e
    1507515038    pop ES                                    ; 07
    1507615039    mov cx, strict word 00008h                ; b9 08 00
    15077     mov di, 09a57h                            ; bf 57 9a
     15040    mov di, 09a10h                            ; bf 10 9a
    1507815041    repne scasb                               ; f2 ae
    1507915042    sal cx, 1                                 ; d1 e1
    1508015043    mov di, cx                                ; 89 cf
    15081     mov ax, word [cs:di-065a2h]               ; 2e 8b 85 5e 9a
     15044    mov ax, word [cs:di-065e9h]               ; 2e 8b 85 17 9a
    1508215045    jmp ax                                    ; ff e0
    1508315046    mov byte [bp-006h], 010h                  ; c6 46 fa 10
    15084     jmp short 09b54h                          ; eb 1c
     15047    jmp short 09b0dh                          ; eb 1c
    1508515048    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    15086     jmp short 09b54h                          ; eb 16
     15049    jmp short 09b0dh                          ; eb 16
    1508715050    mov byte [bp-006h], 018h                  ; c6 46 fa 18
    15088     jmp short 09b54h                          ; eb 10
     15051    jmp short 09b0dh                          ; eb 10
    1508915052    mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
    15090     jmp short 09b54h                          ; eb 0a
     15053    jmp short 09b0dh                          ; eb 0a
    1509115054    mov byte [bp-006h], 020h                  ; c6 46 fa 20
    15092     jmp short 09b54h                          ; eb 04
     15055    jmp short 09b0dh                          ; eb 04
    1509315056    mov byte [bp-006h], 024h                  ; c6 46 fa 24
    1509415057    mov CL, strict byte 004h                  ; b1 04
     
    1509915062    mov al, byte [bp-006h]                    ; 8a 46 fa
    1510015063    test al, al                               ; 84 c0
    15101     je short 09ba0h                           ; 74 3b
     15064    je short 09b59h                           ; 74 3b
    1510215065    mov bl, al                                ; 88 c3
    1510315066    xor bh, bh                                ; 30 ff
     
    1511015073    mov dx, word [bp-010h]                    ; 8b 56 f0
    1511115074    mov ax, word [bp-016h]                    ; 8b 46 ea
    15112     call 0a03dh                               ; e8 b9 04
     15075    call 09ff6h                               ; e8 b9 04
    1511315076    test AL, strict byte 001h                 ; a8 01
    15114     je short 09ba0h                           ; 74 18
     15077    je short 09b59h                           ; 74 18
    1511515078    and AL, strict byte 0f0h                  ; 24 f0
    1511615079    add si, ax                                ; 01 c6
     
    1511915082    mov dx, word [bp-010h]                    ; 8b 56 f0
    1512015083    mov ax, word [bp-016h]                    ; 8b 46 ea
    15121     call 0a07ch                               ; e8 e1 04
     15084    call 0a035h                               ; e8 e1 04
    1512215085    mov ax, si                                ; 89 f0
    15123     call 09900h                               ; e8 60 fd
     15086    call 098b9h                               ; e8 60 fd
    1512415087    lea sp, [bp-004h]                         ; 8d 66 fc
    1512515088    pop di                                    ; 5f
     
    1512715090    pop bp                                    ; 5d
    1512815091    retn                                      ; c3
    15129 apm_out_str_:                                ; 0xf9ba7 LB 0x39
     15092apm_out_str_:                                ; 0xf9b60 LB 0x39
    1513015093    push bp                                   ; 55
    1513115094    mov bp, sp                                ; 89 e5
     
    1513315096    mov bx, ax                                ; 89 c3
    1513415097    cmp byte [bx], 000h                       ; 80 3f 00
    15135     je short 09bbch                           ; 74 0a
     15098    je short 09b75h                           ; 74 0a
    1513615099    mov al, byte [bx]                         ; 8a 07
    1513715100    out DX, AL                                ; ee
     
    1514015103    db  00ah, 0c0h
    1514115104    ; or al, al                                 ; 0a c0
    15142     jne short 09bb4h                          ; 75 f8
     15105    jne short 09b6dh                          ; 75 f8
    1514315106    lea sp, [bp-002h]                         ; 8d 66 fe
    1514415107    pop bx                                    ; 5b
    1514515108    pop bp                                    ; 5d
    1514615109    retn                                      ; c3
    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
     15110    mov dx, 0459bh                            ; ba 9b 45
    1515215111    pushfw                                    ; 9c
    15153     pop si                                    ; 5e
     15112    int3                                      ; cc
     15113    wait                                      ; 9b
     15114    out 09bh, ax                              ; e7 9b
     15115    inc bp                                    ; 45
    1515415116    pushfw                                    ; 9c
    15155     pop si                                    ; 5e
     15117    adc bl, byte [si-063bbh]                  ; 12 9c 45 9c
     15118    dec bx                                    ; 4b
    1515615119    pushfw                                    ; 9c
    15157     rcr word [si-063a2h], 1                   ; d1 9c 5e 9c
    15158     pop si                                    ; 5e
     15120    pop SS                                    ; 17
    1515915121    pushfw                                    ; 9c
    15160     db  0cah
     15122    pop SS                                    ; 17
    1516115123    pushfw                                    ; 9c
    15162 _apm_function:                               ; 0xf9be0 LB 0xf6
     15124    pop SS                                    ; 17
     15125    pushfw                                    ; 9c
     15126    mov bl, byte [si-063e9h]                  ; 8a 9c 17 9c
     15127    pop SS                                    ; 17
     15128    pushfw                                    ; 9c
     15129    db  083h
     15130    pushfw                                    ; 9c
     15131_apm_function:                               ; 0xf9b99 LB 0xf6
    1516315132    push bp                                   ; 55
    1516415133    mov bp, sp                                ; 89 e5
     
    1516815137    xor ah, ah                                ; 30 e4
    1516915138    cmp ax, strict word 0000eh                ; 3d 0e 00
    15170     jnbe short 09c5eh                         ; 77 6c
     15139    jnbe short 09c17h                         ; 77 6c
    1517115140    mov bx, ax                                ; 89 c3
    1517215141    sal bx, 1                                 ; d1 e3
    1517315142    mov dx, word [bp+018h]                    ; 8b 56 18
    1517415143    or dl, 001h                               ; 80 ca 01
    15175     jmp word [cs:bx-0643eh]                   ; 2e ff a7 c2 9b
     15144    jmp word [cs:bx-06485h]                   ; 2e ff a7 7b 9b
    1517615145    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    1517715146    mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
    1517815147    mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
    15179     jmp near 09c8ch                           ; e9 79 00
     15148    jmp near 09c45h                           ; e9 79 00
    1518015149    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    15181     mov word [bp+00ch], 0a274h                ; c7 46 0c 74 a2
     15150    mov word [bp+00ch], 0a234h                ; c7 46 0c 34 a2
    1518215151    mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
    1518315152    mov ax, strict word 0fff0h                ; b8 f0 ff
    1518415153    mov word [bp+006h], ax                    ; 89 46 06
    1518515154    mov word [bp+004h], ax                    ; 89 46 04
    15186     jmp near 09c8ch                           ; e9 5e 00
     15155    jmp near 09c45h                           ; e9 5e 00
    1518715156    mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
    1518815157    mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     
    1519715166    mov si, ax                                ; 89 c6
    1519815167    sal esi, 010h                             ; 66 c1 e6 10
    15199     jmp near 09c8ch                           ; e9 33 00
     15168    jmp near 09c45h                           ; e9 33 00
    1520015169    sti                                       ; fb
    1520115170    hlt                                       ; f4
    15202     jmp near 09c8ch                           ; e9 2e 00
    15203     mov bx, 00e02h                            ; bb 02 0e
     15171    jmp near 09c45h                           ; e9 2e 00
     15172    mov bx, 00da6h                            ; bb a6 0d
    1520415173    mov cx, ds                                ; 8c d9
    1520515174    mov ax, strict word 00004h                ; b8 04 00
    15206     call 01933h                               ; e8 ca 7c
     15175    call 01933h                               ; e8 11 7d
    1520715176    push word [bp+00ch]                       ; ff 76 0c
    1520815177    push word [bp+012h]                       ; ff 76 12
    15209     mov ax, 00d8bh                            ; b8 8b 0d
     15178    mov ax, 00d29h                            ; b8 29 0d
    1521015179    push ax                                   ; 50
    1521115180    mov ax, strict word 00004h                ; b8 04 00
    1521215181    push ax                                   ; 50
    15213     call 01976h                               ; e8 fc 7c
     15182    call 01976h                               ; e8 43 7d
    1521415183    add sp, strict byte 00008h                ; 83 c4 08
    1521515184    mov ax, word [bp+012h]                    ; 8b 46 12
     
    1522315192    retn                                      ; c3
    1522415193    cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
    15225     je short 09cb7h                           ; 74 1f
     15194    je short 09c70h                           ; 74 1f
    1522615195    cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
    15227     je short 09cafh                           ; 74 11
     15196    je short 09c68h                           ; 74 11
    1522815197    cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
    15229     jne short 09cbfh                          ; 75 1b
     15198    jne short 09c78h                          ; 75 1b
    1523015199    mov dx, 0040fh                            ; ba 0f 04
    15231     mov ax, 00d72h                            ; b8 72 0d
    15232     call 09ba7h                               ; e8 fa fe
    15233     jmp short 09c8ch                          ; eb dd
     15200    mov ax, 00d10h                            ; b8 10 0d
     15201    call 09b60h                               ; e8 fa fe
     15202    jmp short 09c45h                          ; eb dd
    1523415203    mov dx, 0040fh                            ; ba 0f 04
    15235     mov ax, 00d7ah                            ; b8 7a 0d
    15236     jmp short 09caah                          ; eb f3
     15204    mov ax, 00d18h                            ; b8 18 0d
     15205    jmp short 09c63h                          ; eb f3
    1523715206    mov dx, 0040fh                            ; ba 0f 04
    15238     mov ax, 00d82h                            ; b8 82 0d
    15239     jmp short 09caah                          ; eb eb
     15207    mov ax, 00d20h                            ; b8 20 0d
     15208    jmp short 09c63h                          ; eb eb
    1524015209    or ah, 00ah                               ; 80 cc 0a
    1524115210    mov word [bp+012h], ax                    ; 89 46 12
    1524215211    mov word [bp+018h], dx                    ; 89 56 18
    15243     jmp short 09c8ch                          ; eb c2
     15212    jmp short 09c45h                          ; eb c2
    1524415213    mov word [bp+012h], 00102h                ; c7 46 12 02 01
    15245     jmp short 09c8ch                          ; eb bb
     15214    jmp short 09c45h                          ; eb bb
    1524615215    or ah, 080h                               ; 80 cc 80
    15247     jmp short 09cc2h                          ; eb ec
    15248 pci16_select_reg_:                           ; 0xf9cd6 LB 0x24
     15216    jmp short 09c7bh                          ; eb ec
     15217pci16_select_reg_:                           ; 0xf9c8f LB 0x24
    1524915218    push bp                                   ; 55
    1525015219    mov bp, sp                                ; 89 e5
     
    1526315232    pop bp                                    ; 5d
    1526415233    retn                                      ; c3
    15265 pci16_find_device_:                          ; 0xf9cfa LB 0xf7
     15234pci16_find_device_:                          ; 0xf9cb3 LB 0xf7
    1526615235    push bp                                   ; 55
    1526715236    mov bp, sp                                ; 89 e5
     
    1527715246    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    1527815247    test bl, 007h                             ; f6 c3 07
    15279     jne short 09d42h                          ; 75 2d
     15248    jne short 09cfbh                          ; 75 2d
    1528015249    mov dx, strict word 0000eh                ; ba 0e 00
    1528115250    mov ax, bx                                ; 89 d8
    15282     call 09cd6h                               ; e8 b9 ff
     15251    call 09c8fh                               ; e8 b9 ff
    1528315252    mov dx, 00cfeh                            ; ba fe 0c
    1528415253    in AL, DX                                 ; ec
     
    1528715256    mov byte [bp-008h], al                    ; 88 46 f8
    1528815257    cmp AL, strict byte 0ffh                  ; 3c ff
    15289     jne short 09d30h                          ; 75 06
     15258    jne short 09ce9h                          ; 75 06
    1529015259    add bx, strict byte 00008h                ; 83 c3 08
    15291     jmp near 09dc2h                           ; e9 92 00
     15260    jmp near 09d7bh                           ; e9 92 00
    1529215261    test byte [bp-008h], 080h                 ; f6 46 f8 80
    15293     je short 09d3dh                           ; 74 07
     15262    je short 09cf6h                           ; 74 07
    1529415263    mov word [bp-00eh], strict word 00001h    ; c7 46 f2 01 00
    15295     jmp short 09d42h                          ; eb 05
     15264    jmp short 09cfbh                          ; eb 05
    1529615265    mov word [bp-00eh], strict word 00008h    ; c7 46 f2 08 00
    1529715266    mov al, byte [bp-008h]                    ; 8a 46 f8
    1529815267    and AL, strict byte 007h                  ; 24 07
    1529915268    cmp AL, strict byte 001h                  ; 3c 01
    15300     jne short 09d69h                          ; 75 1e
     15269    jne short 09d22h                          ; 75 1e
    1530115270    mov al, bh                                ; 88 f8
    1530215271    xor ah, ah                                ; 30 e4
    1530315272    test ax, ax                               ; 85 c0
    15304     jne short 09d69h                          ; 75 16
     15273    jne short 09d22h                          ; 75 16
    1530515274    mov dx, strict word 0001ah                ; ba 1a 00
    1530615275    mov ax, bx                                ; 89 d8
    15307     call 09cd6h                               ; e8 7b ff
     15276    call 09c8fh                               ; e8 7b ff
    1530815277    mov dx, 00cfeh                            ; ba fe 0c
    1530915278    in AL, DX                                 ; ec
     
    1531115280    ; sub ah, ah                                ; 2a e4
    1531215281    cmp al, byte [bp-006h]                    ; 3a 46 fa
    15313     jbe short 09d69h                          ; 76 03
     15282    jbe short 09d22h                          ; 76 03
    1531415283    mov byte [bp-006h], al                    ; 88 46 fa
    1531515284    test di, di                               ; 85 ff
    15316     je short 09d72h                           ; 74 05
     15285    je short 09d2bh                           ; 74 05
    1531715286    mov dx, strict word 00008h                ; ba 08 00
    15318     jmp short 09d74h                          ; eb 02
     15287    jmp short 09d2dh                          ; eb 02
    1531915288    xor dx, dx                                ; 31 d2
    1532015289    mov ax, bx                                ; 89 d8
    15321     call 09cd6h                               ; e8 5d ff
     15290    call 09c8fh                               ; e8 5d ff
    1532215291    mov dx, 00cfch                            ; ba fc 0c
    1532315292    in eax, DX                                ; 66 ed
     
    1533015299    mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
    1533115300    test di, di                               ; 85 ff
    15332     je short 09da3h                           ; 74 0f
     15301    je short 09d5ch                           ; 74 0f
    1533315302    mov cx, strict word 00008h                ; b9 08 00
    1533415303    shr dx, 1                                 ; d1 ea
    1533515304    rcr ax, 1                                 ; d1 d8
    15336     loop 09d97h                               ; e2 fa
     15305    loop 09d50h                               ; e2 fa
    1533715306    mov word [bp-00ah], ax                    ; 89 46 f6
    1533815307    mov word [bp-010h], dx                    ; 89 56 f0
    1533915308    mov ax, word [bp-010h]                    ; 8b 46 f0
    1534015309    cmp ax, word [bp-014h]                    ; 3b 46 ec
    15341     jne short 09db3h                          ; 75 08
     15310    jne short 09d6ch                          ; 75 08
    1534215311    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1534315312    cmp ax, word [bp-012h]                    ; 3b 46 ee
    15344     je short 09db9h                           ; 74 06
     15313    je short 09d72h                           ; 74 06
    1534515314    cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
    15346     je short 09dbfh                           ; 74 06
     15315    je short 09d78h                           ; 74 06
    1534715316    dec si                                    ; 4e
    1534815317    cmp si, strict byte 0ffffh                ; 83 fe ff
    15349     je short 09dd2h                           ; 74 13
     15318    je short 09d8bh                           ; 74 13
    1535015319    add bx, word [bp-00eh]                    ; 03 5e f2
    1535115320    mov al, bh                                ; 88 f8
     
    1535415323    xor dh, dh                                ; 30 f6
    1535515324    cmp ax, dx                                ; 39 d0
    15356     jnbe short 09dd2h                         ; 77 03
    15357     jmp near 09d10h                           ; e9 3e ff
     15325    jnbe short 09d8bh                         ; 77 03
     15326    jmp near 09cc9h                           ; e9 3e ff
    1535815327    cmp si, strict byte 0ffffh                ; 83 fe ff
    15359     jne short 09ddbh                          ; 75 04
     15328    jne short 09d94h                          ; 75 04
    1536015329    mov ax, bx                                ; 89 d8
    15361     jmp short 09ddeh                          ; eb 03
     15330    jmp short 09d97h                          ; eb 03
    1536215331    mov ax, strict word 0ffffh                ; b8 ff ff
    1536315332    lea sp, [bp-004h]                         ; 8d 66 fc
     
    1536615335    pop bp                                    ; 5d
    1536715336    retn                                      ; c3
    15368     rcr byte [bp-06115h], CL                  ; d2 9e eb 9e
    15369     std                                       ; fd
     15337    mov bx, word [bp-0615ch]                  ; 8b 9e a4 9e
     15338    mov DH, strict byte 09eh                  ; b6 9e
     15339    retf 0dc9eh                               ; ca 9e dc
    1537015340    sahf                                      ; 9e
    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
     15341    out DX, ax                                ; ef
     15342    sahf                                      ; 9e
     15343_pci16_function:                             ; 0xf9daa LB 0x1d5
    1537515344    push bp                                   ; 55
    1537615345    mov bp, sp                                ; 89 e5
     
    1538615355    xor ah, ah                                ; 30 e4
    1538715356    cmp bx, strict byte 00003h                ; 83 fb 03
    15388     jc short 09e23h                           ; 72 13
    15389     jbe short 09e76h                          ; 76 64
     15357    jc short 09ddch                           ; 72 13
     15358    jbe short 09e2fh                          ; 76 64
    1539015359    cmp bx, strict byte 0000eh                ; 83 fb 0e
    15391     je short 09e7eh                           ; 74 67
     15360    je short 09e37h                           ; 74 67
    1539215361    cmp bx, strict byte 00008h                ; 83 fb 08
    15393     jc short 09e2dh                           ; 72 11
     15362    jc short 09de6h                           ; 72 11
    1539415363    cmp bx, strict byte 0000dh                ; 83 fb 0d
    15395     jbe short 09e81h                          ; 76 60
    15396     jmp short 09e2dh                          ; eb 0a
     15364    jbe short 09e3ah                          ; 76 60
     15365    jmp short 09de6h                          ; eb 0a
    1539715366    cmp bx, strict byte 00002h                ; 83 fb 02
    15398     je short 09e4ch                           ; 74 24
     15367    je short 09e05h                           ; 74 24
    1539915368    cmp bx, strict byte 00001h                ; 83 fb 01
    15400     je short 09e30h                           ; 74 03
    15401     jmp near 09f8fh                           ; e9 5f 01
     15369    je short 09de9h                           ; 74 03
     15370    jmp near 09f48h                           ; e9 5f 01
    1540215371    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
    1540315372    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     
    1540515374    mov word [bp+018h], 04350h                ; c7 46 18 50 43
    1540615375    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
    15407     jmp near 09fbfh                           ; e9 73 01
     15376    jmp near 09f78h                           ; e9 73 01
    1540815377    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
    15409     jne short 09e58h                          ; 75 06
     15378    jne short 09e11h                          ; 75 06
    1541015379    or ah, 083h                               ; 80 cc 83
    15411     jmp near 09fb8h                           ; e9 60 01
     15380    jmp near 09f71h                           ; e9 60 01
    1541215381    mov bx, word [bp+008h]                    ; 8b 5e 08
    1541315382    mov dx, word [bp+01ch]                    ; 8b 56 1c
    1541415383    mov ax, word [bp+018h]                    ; 8b 46 18
    1541515384    xor cx, cx                                ; 31 c9
    15416     call 09cfah                               ; e8 94 fe
     15385    call 09cb3h                               ; e8 94 fe
    1541715386    cmp ax, strict word 0ffffh                ; 3d ff ff
    15418     jne short 09e78h                          ; 75 0d
     15387    jne short 09e31h                          ; 75 0d
    1541915388    mov ax, word [bp+020h]                    ; 8b 46 20
    1542015389    xor ah, ah                                ; 30 e4
    1542115390    or ah, 086h                               ; 80 cc 86
    15422     jmp near 09fb8h                           ; e9 42 01
    15423     jmp short 09e83h                          ; eb 0b
     15391    jmp near 09f71h                           ; e9 42 01
     15392    jmp short 09e3ch                          ; eb 0b
    1542415393    mov word [bp+014h], ax                    ; 89 46 14
    15425     jmp near 09fbfh                           ; e9 41 01
    15426     jmp near 09f4ah                           ; e9 c9 00
    15427     jmp short 09ea8h                          ; eb 25
     15394    jmp near 09f78h                           ; e9 41 01
     15395    jmp near 09f03h                           ; e9 c9 00
     15396    jmp short 09e61h                          ; eb 25
    1542815397    mov bx, word [bp+008h]                    ; 8b 5e 08
    1542915398    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1543015399    mov dx, word [bp+01eh]                    ; 8b 56 1e
    1543115400    mov cx, strict word 00001h                ; b9 01 00
    15432     call 09cfah                               ; e8 68 fe
     15401    call 09cb3h                               ; e8 68 fe
    1543315402    cmp ax, strict word 0ffffh                ; 3d ff ff
    15434     jne short 09ea2h                          ; 75 0b
     15403    jne short 09e5bh                          ; 75 0b
    1543515404    mov ax, word [bp+020h]                    ; 8b 46 20
    1543615405    xor ah, ah                                ; 30 e4
    1543715406    or ah, 086h                               ; 80 cc 86
    15438     jmp near 09fb8h                           ; e9 16 01
     15407    jmp near 09f71h                           ; e9 16 01
    1543915408    mov word [bp+014h], ax                    ; 89 46 14
    15440     jmp near 09fbfh                           ; e9 17 01
     15409    jmp near 09f78h                           ; e9 17 01
    1544115410    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
    15442     jc short 09eb5h                           ; 72 06
     15411    jc short 09e6eh                           ; 72 06
    1544315412    or ah, 087h                               ; 80 cc 87
    15444     jmp near 09fb8h                           ; e9 03 01
     15413    jmp near 09f71h                           ; e9 03 01
    1544515414    mov dx, word [bp+004h]                    ; 8b 56 04
    1544615415    mov ax, word [bp+014h]                    ; 8b 46 14
    15447     call 09cd6h                               ; e8 18 fe
     15416    call 09c8fh                               ; e8 18 fe
    1544815417    mov bx, word [bp+020h]                    ; 8b 5e 20
    1544915418    xor bh, bh                                ; 30 ff
    1545015419    sub bx, strict byte 00008h                ; 83 eb 08
    1545115420    cmp bx, strict byte 00005h                ; 83 fb 05
    15452     jnbe short 09f33h                         ; 77 68
     15421    jnbe short 09eech                         ; 77 68
    1545315422    sal bx, 1                                 ; d1 e3
    15454     jmp word [cs:bx-0621bh]                   ; 2e ff a7 e5 9d
     15423    jmp word [cs:bx-06262h]                   ; 2e ff a7 9e 9d
    1545515424    mov bx, word [bp+01ch]                    ; 8b 5e 1c
    1545615425    xor bl, bl                                ; 30 db
     
    1546315432    or bx, ax                                 ; 09 c3
    1546415433    mov word [bp+01ch], bx                    ; 89 5e 1c
    15465     jmp short 09f33h                          ; eb 48
     15434    jmp short 09eech                          ; eb 48
    1546615435    mov dx, word [bp+004h]                    ; 8b 56 04
    1546715436    xor dh, dh                                ; 30 f6
     
    1547015439    in ax, DX                                 ; ed
    1547115440    mov word [bp+01ch], ax                    ; 89 46 1c
    15472     jmp short 09f33h                          ; eb 36
     15441    jmp short 09eech                          ; eb 36
    1547315442    mov dx, 00cfch                            ; ba fc 0c
    1547415443    in eax, DX                                ; 66 ed
     
    1547915448    mov word [bp+01ch], ax                    ; 89 46 1c
    1548015449    mov word [bp+01eh], dx                    ; 89 56 1e
    15481     jmp short 09f33h                          ; eb 22
     15450    jmp short 09eech                          ; eb 22
    1548215451    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1548315452    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1548615455    add dx, 00cfch                            ; 81 c2 fc 0c
    1548715456    out DX, AL                                ; ee
    15488     jmp short 09f33h                          ; eb 10
     15457    jmp short 09eech                          ; eb 10
    1548915458    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1549015459    mov dx, word [bp+004h]                    ; 8b 56 04
     
    1549315462    add dx, 00cfch                            ; 81 c2 fc 0c
    1549415463    out DX, ax                                ; ef
    15495     jmp near 09fbfh                           ; e9 89 00
     15464    jmp near 09f78h                           ; e9 89 00
    1549615465    mov ax, word [bp+01ch]                    ; 8b 46 1c
    1549715466    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     
    1550215471    ; mov ax, cx                                ; 8b c1
    1550315472    out DX, eax                               ; 66 ef
    15504     jmp short 09fbfh                          ; eb 75
     15473    jmp short 09f78h                          ; eb 75
    1550515474    mov bx, word [bp+004h]                    ; 8b 5e 04
    1550615475    mov es, [bp+026h]                         ; 8e 46 26
     
    1550915478    mov cx, word [0f380h]                     ; 8b 0e 80 f3
    1551015479    cmp cx, word [es:bx]                      ; 26 3b 0f
    15511     jbe short 09f70h                          ; 76 11
     15480    jbe short 09f29h                          ; 76 11
    1551215481    mov ax, word [bp+020h]                    ; 8b 46 20
    1551315482    xor ah, ah                                ; 30 e4
     
    1551515484    mov word [bp+020h], ax                    ; 89 46 20
    1551615485    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
    15517     jmp short 09f84h                          ; eb 14
     15486    jmp short 09f3dh                          ; eb 14
    1551815487    les di, [es:bx+002h]                      ; 26 c4 7f 02
    1551915488    mov si, 0f1a0h                            ; be a0 f1
     
    1552715496    les bx, [bp-008h]                         ; c4 5e f8
    1552815497    mov word [es:bx], ax                      ; 26 89 07
    15529     jmp short 09fbfh                          ; eb 30
    15530     mov bx, 00e02h                            ; bb 02 0e
     15498    jmp short 09f78h                          ; eb 30
     15499    mov bx, 00da6h                            ; bb a6 0d
    1553115500    mov cx, ds                                ; 8c d9
    1553215501    mov ax, strict word 00004h                ; b8 04 00
    15533     call 01933h                               ; e8 99 79
     15502    call 01933h                               ; e8 e0 79
    1553415503    mov ax, word [bp+014h]                    ; 8b 46 14
    1553515504    push ax                                   ; 50
    1553615505    mov ax, word [bp+020h]                    ; 8b 46 20
    1553715506    push ax                                   ; 50
    15538     mov ax, 00dbeh                            ; b8 be 0d
     15507    mov ax, 00d5ch                            ; b8 5c 0d
    1553915508    push ax                                   ; 50
    1554015509    mov ax, strict word 00004h                ; b8 04 00
    1554115510    push ax                                   ; 50
    15542     call 01976h                               ; e8 c9 79
     15511    call 01976h                               ; e8 10 7a
    1554315512    add sp, strict byte 00008h                ; 83 c4 08
    1554415513    mov ax, word [bp+020h]                    ; 8b 46 20
     
    1555215521    pop bp                                    ; 5d
    1555315522    retn                                      ; c3
    15554 pci_find_classcode_:                         ; 0xf9fc6 LB 0x8
     15523pci_find_classcode_:                         ; 0xf9f7f LB 0x8
    1555515524    push bp                                   ; 55
    1555615525    mov bp, sp                                ; 89 e5
     
    1555815527    pop bp                                    ; 5d
    1555915528    retn                                      ; c3
    15560 pci_find_device_:                            ; 0xf9fce LB 0x23
     15529pci_find_device_:                            ; 0xf9f87 LB 0x23
    1556115530    push bp                                   ; 55
    1556215531    mov bp, sp                                ; 89 e5
     
    1557015539    int 01ah                                  ; cd 1a
    1557115540    cmp ah, 000h                              ; 80 fc 00
    15572     je short 09fe7h                           ; 74 03
     15541    je short 09fa0h                           ; 74 03
    1557315542    mov bx, strict word 0ffffh                ; bb ff ff
    1557415543    mov ax, bx                                ; 89 d8
     
    1557915548    pop bp                                    ; 5d
    1558015549    retn                                      ; c3
    15581 pci_read_config_byte_:                       ; 0xf9ff1 LB 0x27
     15550pci_read_config_byte_:                       ; 0xf9faa LB 0x27
    1558215551    push bp                                   ; 55
    1558315552    mov bp, sp                                ; 89 e5
     
    1560215571    pop bp                                    ; 5d
    1560315572    retn                                      ; c3
    15604 pci_read_config_word_:                       ; 0xfa018 LB 0x25
     15573pci_read_config_word_:                       ; 0xf9fd1 LB 0x25
    1560515574    push bp                                   ; 55
    1560615575    mov bp, sp                                ; 89 e5
     
    1562415593    pop bp                                    ; 5d
    1562515594    retn                                      ; c3
    15626 pci_read_config_dword_:                      ; 0xfa03d LB 0x3f
     15595pci_read_config_dword_:                      ; 0xf9ff6 LB 0x3f
    1562715596    push bp                                   ; 55
    1562815597    mov bp, sp                                ; 89 e5
     
    1563915608    int 01ah                                  ; cd 1a
    1564015609    test cx, cx                               ; 85 c9
    15641     jne short 0a06dh                          ; 75 14
     15610    jne short 0a026h                          ; 75 14
    1564215611    mov al, byte [bp-006h]                    ; 8a 46 fa
    1564315612    xor ah, ah                                ; 30 e4
     
    1564915618    int 01ah                                  ; cd 1a
    1565015619    test cx, cx                               ; 85 c9
    15651     je short 0a072h                           ; 74 05
     15620    je short 0a02bh                           ; 74 05
    1565215621    mov ax, strict word 00001h                ; b8 01 00
    15653     jmp short 0a074h                          ; eb 02
     15622    jmp short 0a02dh                          ; eb 02
    1565415623    xor ax, ax                                ; 31 c0
    1565515624    cwd                                       ; 99
     
    1565915628    pop bp                                    ; 5d
    1566015629    retn                                      ; c3
    15661 pci_write_config_word_:                      ; 0xfa07c LB 0x1e
     15630pci_write_config_word_:                      ; 0xfa035 LB 0x1e
    1566215631    push bp                                   ; 55
    1566315632    mov bp, sp                                ; 89 e5
     
    1567615645    pop bp                                    ; 5d
    1567715646    retn                                      ; c3
    15678 vds_is_present_:                             ; 0xfa09a LB 0x1d
     15647vds_is_present_:                             ; 0xfa053 LB 0x1d
    1567915648    push bx                                   ; 53
    1568015649    push bp                                   ; 55
     
    1568415653    mov es, ax                                ; 8e c0
    1568515654    test byte [es:bx], 020h                   ; 26 f6 07 20
    15686     je short 0a0b2h                           ; 74 06
     15655    je short 0a06bh                           ; 74 06
    1568715656    mov ax, strict word 00001h                ; b8 01 00
    1568815657    pop bp                                    ; 5d
     
    1569315662    pop bx                                    ; 5b
    1569415663    retn                                      ; c3
    15695 vds_real_to_lin_:                            ; 0xfa0b7 LB 0x1e
     15664vds_real_to_lin_:                            ; 0xfa070 LB 0x1e
    1569615665    push bx                                   ; 53
    1569715666    push cx                                   ; 51
     
    1570415673    sal ax, 1                                 ; d1 e0
    1570515674    rcl dx, 1                                 ; d1 d2
    15706     loop 0a0c5h                               ; e2 fa
     15675    loop 0a07eh                               ; e2 fa
    1570715676    xor cx, cx                                ; 31 c9
    1570815677    add ax, bx                                ; 01 d8
     
    1571215681    pop bx                                    ; 5b
    1571315682    retn                                      ; c3
    15714 vds_build_sg_list_:                          ; 0xfa0d5 LB 0x77
     15683vds_build_sg_list_:                          ; 0xfa08e LB 0x77
    1571515684    push bp                                   ; 55
    1571615685    mov bp, sp                                ; 89 e5
     
    1572615695    mov bx, word [bp+006h]                    ; 8b 5e 06
    1572715696    mov word [es:di+002h], bx                 ; 26 89 5d 02
    15728     call 0a0b7h                               ; e8 c3 ff
     15697    call 0a070h                               ; e8 c3 ff
    1572915698    mov es, si                                ; 8e c6
    1573015699    mov word [es:di+004h], ax                 ; 26 89 45 04
    1573115700    mov word [es:di+006h], dx                 ; 26 89 55 06
    1573215701    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    15733     call 0a09ah                               ; e8 93 ff
     15702    call 0a053h                               ; e8 93 ff
    1573415703    test ax, ax                               ; 85 c0
    15735     je short 0a11ch                           ; 74 11
     15704    je short 0a0d5h                           ; 74 11
    1573615705    mov es, si                                ; 8e c6
    1573715706    mov ax, 08105h                            ; b8 05 81
    1573815707    mov dx, strict word 00000h                ; ba 00 00
    1573915708    int 04bh                                  ; cd 4b
    15740     jc short 0a119h                           ; 72 02
     15709    jc short 0a0d2h                           ; 72 02
    1574115710    db  032h, 0c0h
    1574215711    ; xor al, al                                ; 32 c0
    1574315712    cbw                                       ; 98
    15744     jmp short 0a143h                          ; eb 27
     15713    jmp short 0a0fch                          ; eb 27
    1574515714    mov es, si                                ; 8e c6
    1574615715    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1575915728    pop bp                                    ; 5d
    1576015729    retn 00004h                               ; c2 04 00
    15761 vds_free_sg_list_:                           ; 0xfa14c LB 0x34
     15730vds_free_sg_list_:                           ; 0xfa105 LB 0x3b
    1576215731    push bp                                   ; 55
    1576315732    mov bp, sp                                ; 89 e5
     
    1576515734    push di                                   ; 57
    1576615735    mov bx, ax                                ; 89 c3
    15767     call 0a09ah                               ; e8 44 ff
     15736    call 0a053h                               ; e8 44 ff
    1576815737    test ax, ax                               ; 85 c0
    15769     je short 0a16bh                           ; 74 11
     15738    je short 0a124h                           ; 74 11
    1577015739    mov di, bx                                ; 89 df
    1577115740    mov es, dx                                ; 8e c2
     
    1577315742    mov dx, strict word 00000h                ; ba 00 00
    1577415743    int 04bh                                  ; cd 4b
    15775     jc short 0a16ah                           ; 72 02
     15744    jc short 0a123h                           ; 72 02
    1577615745    db  032h, 0c0h
    1577715746    ; xor al, al                                ; 32 c0
     
    1578415753    pop bp                                    ; 5d
    1578515754    retn                                      ; c3
    15786     times 0x6 db 0
    15787 __U4M:                                       ; 0xfa180 LB 0x20
     15755    times 0xd db 0
     15756__U4M:                                       ; 0xfa140 LB 0x20
    1578815757    pushfw                                    ; 9c
    1578915758    push si                                   ; 56
     
    1581215781    retn                                      ; c3
    1581315782    times 0x4 db 0
    15814 __U4D:                                       ; 0xfa1a0 LB 0x30
     15783__U4D:                                       ; 0xfa160 LB 0x30
    1581515784    pushfw                                    ; 9c
    1581615785    push DS                                   ; 1e
     
    1582715796    push dx                                   ; 52
    1582815797    push ax                                   ; 50
    15829     call 0a285h                               ; e8 d0 00
     15798    call 0a245h                               ; e8 d0 00
    1583015799    mov cx, word [bp-002h]                    ; 8b 4e fe
    1583115800    mov bx, word [bp-004h]                    ; 8b 5e fc
     
    1583815807    retn                                      ; c3
    1583915808    times 0xe db 0
    15840 __U8RS:                                      ; 0xfa1d0 LB 0x10
     15809__U8RS:                                      ; 0xfa190 LB 0x10
    1584115810    test si, si                               ; 85 f6
    15842     je short 0a1dfh                           ; 74 0b
     15811    je short 0a19fh                           ; 74 0b
    1584315812    shr ax, 1                                 ; d1 e8
    1584415813    rcr bx, 1                                 ; d1 db
     
    1584615815    rcr dx, 1                                 ; d1 da
    1584715816    dec si                                    ; 4e
    15848     jne short 0a1d4h                          ; 75 f5
     15817    jne short 0a194h                          ; 75 f5
    1584915818    retn                                      ; c3
    15850 __U8LS:                                      ; 0xfa1e0 LB 0x10
     15819__U8LS:                                      ; 0xfa1a0 LB 0x10
    1585115820    test si, si                               ; 85 f6
    15852     je short 0a1efh                           ; 74 0b
     15821    je short 0a1afh                           ; 74 0b
    1585315822    sal dx, 1                                 ; d1 e2
    1585415823    rcl cx, 1                                 ; d1 d1
     
    1585615825    rcl ax, 1                                 ; d1 d0
    1585715826    dec si                                    ; 4e
    15858     jne short 0a1e4h                          ; 75 f5
     15827    jne short 0a1a4h                          ; 75 f5
    1585915828    retn                                      ; c3
    15860 _fmemset_:                                   ; 0xfa1f0 LB 0x10
     15829_fmemset_:                                   ; 0xfa1b0 LB 0x10
    1586115830    push di                                   ; 57
    1586215831    mov es, dx                                ; 8e c2
     
    1586915838    retn                                      ; c3
    1587015839    times 0x3 db 0
    15871 _fmemcpy_:                                   ; 0xfa200 LB 0x3a
     15840_fmemcpy_:                                   ; 0xfa1c0 LB 0x3a
    1587215841    push bp                                   ; 55
    1587315842    db  08bh, 0ech
     
    1589415863    add byte [bx+si], al                      ; 00 00
    1589515864    add byte [bx+si], al                      ; 00 00
    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
     15865    adc byte [bp+si-05deeh], ah               ; 10 a2 12 a2
     15866    push SS                                   ; 16
     15867    mov byte [0a216h], AL                     ; a2 16 a2
     15868    push SS                                   ; 16
     15869    mov byte [0a218h], AL                     ; a2 18 a2
     15870    sbb byte [bp+si-05de6h], ah               ; 18 a2 1a a2
     15871    push DS                                   ; 1e
     15872    mov byte [0a21eh], AL                     ; a2 1e a2
     15873    and byte [bp+si-05ddbh], ah               ; 20 a2 25 a2
     15874    daa                                       ; 27
    1590915875    db  0a2h
    15910 apm_worker:                                  ; 0xfa23a LB 0x3a
     15876apm_worker:                                  ; 0xfa1fa LB 0x3a
    1591115877    sti                                       ; fb
    1591215878    push ax                                   ; 50
     
    1592015886    pop ax                                    ; 58
    1592115887    mov AH, strict byte 053h                  ; b4 53
    15922     jnc short 0a270h                          ; 73 25
    15923     jmp word [cs:bp-05de0h]                   ; 2e ff a6 20 a2
    15924     jmp short 0a26eh                          ; eb 1c
     15888    jnc short 0a230h                          ; 73 25
     15889    jmp word [cs:bp-05e20h]                   ; 2e ff a6 e0 a1
     15890    jmp short 0a22eh                          ; eb 1c
    1592515891    sti                                       ; fb
    1592615892    hlt                                       ; f4
    15927     jmp short 0a26eh                          ; eb 18
    15928     jmp short 0a26eh                          ; eb 16
    15929     jmp short 0a270h                          ; eb 16
     15893    jmp short 0a22eh                          ; eb 18
     15894    jmp short 0a22eh                          ; eb 16
     15895    jmp short 0a230h                          ; eb 16
    1593015896    mov AH, strict byte 080h                  ; b4 80
    15931     jmp short 0a272h                          ; eb 14
    15932     jmp short 0a270h                          ; eb 10
     15897    jmp short 0a232h                          ; eb 14
     15898    jmp short 0a230h                          ; eb 10
    1593315899    mov ax, 00102h                            ; b8 02 01
    15934     jmp short 0a26eh                          ; eb 09
    15935     jmp short 0a26eh                          ; eb 07
     15900    jmp short 0a22eh                          ; eb 09
     15901    jmp short 0a22eh                          ; eb 07
    1593615902    mov BL, strict byte 000h                  ; b3 00
    1593715903    mov cx, strict word 00000h                ; b9 00 00
    15938     jmp short 0a26eh                          ; eb 00
     15904    jmp short 0a22eh                          ; eb 00
    1593915905    clc                                       ; f8
    1594015906    retn                                      ; c3
     
    1594215908    stc                                       ; f9
    1594315909    retn                                      ; c3
    15944 apm_pm16_entry:                              ; 0xfa274 LB 0x11
     15910apm_pm16_entry:                              ; 0xfa234 LB 0x11
    1594515911    mov AH, strict byte 002h                  ; b4 02
    1594615912    push DS                                   ; 1e
     
    1595015916    add bp, strict byte 00008h                ; 83 c5 08
    1595115917    mov ds, bp                                ; 8e dd
    15952     call 0a23ah                               ; e8 b8 ff
     15918    call 0a1fah                               ; e8 b8 ff
    1595315919    pop bp                                    ; 5d
    1595415920    pop DS                                    ; 1f
    1595515921    retf                                      ; cb
    15956 _DoUInt32Div:                                ; 0xfa285 LB 0x26b
     15922_DoUInt32Div:                                ; 0xfa245 LB 0x26b
    1595715923    push bp                                   ; 55
    1595815924    mov bp, sp                                ; 89 e5
     
    1597215938    mov [bp-006h], ds                         ; 8c 5e fa
    1597315939    cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
    15974     jne short 0a2d5h                          ; 75 22
     15940    jne short 0a295h                          ; 75 22
    1597515941    mov ax, word [bx]                         ; 8b 07
    1597615942    test ax, ax                               ; 85 c0
    15977     je short 0a2d2h                           ; 74 19
     15943    je short 0a292h                           ; 74 19
    1597815944    cmp ax, strict word 00001h                ; 3d 01 00
    15979     jne short 0a2d5h                          ; 75 17
     15945    jne short 0a295h                          ; 75 17
    1598015946    xor ax, ax                                ; 31 c0
    1598115947    mov word [bp+00ah], ax                    ; 89 46 0a
     
    1598515951    mov ax, word [bp-01ah]                    ; 8b 46 e6
    1598615952    mov word [bp+006h], ax                    ; 89 46 06
    15987     jmp near 0a4ddh                           ; e9 08 02
     15953    jmp near 0a49dh                           ; e9 08 02
    1598815954    lds bx, [bp-00ch]                         ; c5 5e f4
    1598915955    mov ax, word [bx+002h]                    ; 8b 47 02
    1599015956    mov ds, [bp-006h]                         ; 8e 5e fa
    1599115957    cmp ax, word [si+002h]                    ; 3b 44 02
    15992     je short 0a2fbh                           ; 74 18
     15958    je short 0a2bbh                           ; 74 18
    1599315959    mov ds, [bp-00ah]                         ; 8e 5e f6
    1599415960    mov ax, word [bx+002h]                    ; 8b 47 02
    1599515961    mov ds, [bp-006h]                         ; 8e 5e fa
    1599615962    cmp ax, word [si+002h]                    ; 3b 44 02
    15997     jbe short 0a2f6h                          ; 76 05
     15963    jbe short 0a2b6h                          ; 76 05
    1599815964    mov ax, strict word 00001h                ; b8 01 00
    15999     jmp short 0a31ch                          ; eb 26
     15965    jmp short 0a2dch                          ; eb 26
    1600015966    mov ax, strict word 0ffffh                ; b8 ff ff
    16001     jmp short 0a31ch                          ; eb 21
     15967    jmp short 0a2dch                          ; eb 21
    1600215968    mov ds, [bp-00ah]                         ; 8e 5e f6
    1600315969    mov ax, word [bx]                         ; 8b 07
    1600415970    mov ds, [bp-006h]                         ; 8e 5e fa
    1600515971    cmp ax, word [si]                         ; 3b 04
    16006     je short 0a31ah                           ; 74 13
     15972    je short 0a2dah                           ; 74 13
    1600715973    mov ds, [bp-00ah]                         ; 8e 5e f6
    1600815974    mov ax, word [bx]                         ; 8b 07
    1600915975    mov ds, [bp-006h]                         ; 8e 5e fa
    1601015976    cmp ax, word [si]                         ; 3b 04
    16011     jbe short 0a315h                          ; 76 02
    16012     jmp short 0a2f1h                          ; eb dc
     15977    jbe short 0a2d5h                          ; 76 02
     15978    jmp short 0a2b1h                          ; eb dc
    1601315979    mov ax, strict word 0ffffh                ; b8 ff ff
    16014     jmp short 0a31ch                          ; eb 02
     15980    jmp short 0a2dch                          ; eb 02
    1601515981    xor ax, ax                                ; 31 c0
    1601615982    test ax, ax                               ; 85 c0
    16017     jnl short 0a33eh                          ; 7d 1e
     15983    jnl short 0a2feh                          ; 7d 1e
    1601815984    lds bx, [bp-00ch]                         ; c5 5e f4
    1601915985    mov ax, word [bx]                         ; 8b 07
     
    1602515991    mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
    1602615992    mov word [bx], strict word 00000h         ; c7 07 00 00
    16027     jmp short 0a2d2h                          ; eb 94
    16028     jne short 0a355h                          ; 75 15
     15993    jmp short 0a292h                          ; eb 94
     15994    jne short 0a315h                          ; 75 15
    1602915995    mov ds, [bp-008h]                         ; 8e 5e f8
    1603015996    mov word [di+002h], ax                    ; 89 45 02
     
    1603315999    mov word [bx], strict word 00001h         ; c7 07 01 00
    1603416000    mov word [bx+002h], ax                    ; 89 47 02
    16035     jmp near 0a4ddh                           ; e9 88 01
     16001    jmp near 0a49dh                           ; e9 88 01
    1603616002    lds bx, [bp-00ch]                         ; c5 5e f4
    1603716003    mov ax, word [bx+002h]                    ; 8b 47 02
    1603816004    test ax, ax                               ; 85 c0
    16039     je short 0a370h                           ; 74 11
     16005    je short 0a330h                           ; 74 11
    1604016006    push ax                                   ; 50
    1604116007    mov ax, 0f000h                            ; b8 00 f0
    1604216008    mov ds, ax                                ; 8e d8
    16043     call 0a4f0h                               ; e8 88 01
     16009    call 0a4b0h                               ; e8 88 01
    1604416010    add sp, strict byte 00002h                ; 83 c4 02
    1604516011    add ax, strict word 00010h                ; 05 10 00
    16046     jmp short 0a37dh                          ; eb 0d
     16012    jmp short 0a33dh                          ; eb 0d
    1604716013    push word [bx]                            ; ff 37
    1604816014    mov ax, 0f000h                            ; b8 00 f0
    1604916015    mov ds, ax                                ; 8e d8
    16050     call 0a4f0h                               ; e8 76 01
     16016    call 0a4b0h                               ; e8 76 01
    1605116017    add sp, strict byte 00002h                ; 83 c4 02
    1605216018    mov word [bp-014h], ax                    ; 89 46 ec
     
    1605416020    mov ax, word [si+002h]                    ; 8b 44 02
    1605516021    test ax, ax                               ; 85 c0
    16056     je short 0a39bh                           ; 74 11
     16022    je short 0a35bh                           ; 74 11
    1605716023    push ax                                   ; 50
    1605816024    mov ax, 0f000h                            ; b8 00 f0
    1605916025    mov ds, ax                                ; 8e d8
    16060     call 0a4f0h                               ; e8 5d 01
     16026    call 0a4b0h                               ; e8 5d 01
    1606116027    add sp, strict byte 00002h                ; 83 c4 02
    1606216028    add ax, strict word 00010h                ; 05 10 00
    16063     jmp short 0a3a8h                          ; eb 0d
     16029    jmp short 0a368h                          ; eb 0d
    1606416030    push word [si]                            ; ff 34
    1606516031    mov ax, 0f000h                            ; b8 00 f0
    1606616032    mov ds, ax                                ; 8e d8
    16067     call 0a4f0h                               ; e8 4b 01
     16033    call 0a4b0h                               ; e8 4b 01
    1606816034    add sp, strict byte 00002h                ; 83 c4 02
    1606916035    mov dx, word [bp-014h]                    ; 8b 56 ec
     
    1607616042    mov word [bp-016h], ax                    ; 89 46 ea
    1607716043    test dx, dx                               ; 85 d2
    16078     je short 0a418h                           ; 74 56
     16044    je short 0a3d8h                           ; 74 56
    1607916045    mov cx, dx                                ; 89 d1
    1608016046    xor ch, dh                                ; 30 f5
     
    1608216048    mov ax, word [si]                         ; 8b 04
    1608316049    mov dx, word [si+002h]                    ; 8b 54 02
    16084     jcxz 0a3d6h                               ; e3 06
     16050    jcxz 0a396h                               ; e3 06
    1608516051    sal ax, 1                                 ; d1 e0
    1608616052    rcl dx, 1                                 ; d1 d2
    16087     loop 0a3d0h                               ; e2 fa
     16053    loop 0a390h                               ; e2 fa
    1608816054    mov word [bp-018h], ax                    ; 89 46 e8
    1608916055    mov word [bp-016h], dx                    ; 89 56 ea
     
    1609116057    lds bx, [bp-00ch]                         ; c5 5e f4
    1609216058    cmp ax, word [bx+002h]                    ; 3b 47 02
    16093     jnbe short 0a3f6h                         ; 77 0f
     16059    jnbe short 0a3b6h                         ; 77 0f
    1609416060    mov ax, word [bp-016h]                    ; 8b 46 ea
    1609516061    cmp ax, word [bx+002h]                    ; 3b 47 02
    16096     jne short 0a3fah                          ; 75 0b
     16062    jne short 0a3bah                          ; 75 0b
    1609716063    mov ax, word [bp-018h]                    ; 8b 46 e8
    1609816064    cmp ax, word [bx]                         ; 3b 07
    16099     jbe short 0a3fah                          ; 76 04
     16065    jbe short 0a3bah                          ; 76 04
    1610016066    mov AL, strict byte 001h                  ; b0 01
    16101     jmp short 0a3fch                          ; eb 02
     16067    jmp short 0a3bch                          ; eb 02
    1610216068    xor al, al                                ; 30 c0
    1610316069    test al, al                               ; 84 c0
    16104     je short 0a423h                           ; 74 23
     16070    je short 0a3e3h                           ; 74 23
    1610516071    shr word [bp-016h], 1                     ; d1 6e ea
    1610616072    rcr word [bp-018h], 1                     ; d1 5e e8
    1610716073    dec word [bp-012h]                        ; ff 4e ee
    16108     jmp short 0a423h                          ; eb 18
     16074    jmp short 0a3e3h                          ; eb 18
    1610916075    mov cx, strict word 0001fh                ; b9 1f 00
    1611016076    sal word [bp-018h], 1                     ; d1 66 e8
    1611116077    rcl word [bp-016h], 1                     ; d1 56 ea
    16112     loop 0a40eh                               ; e2 f8
    16113     jmp short 0a406h                          ; eb ee
     16078    loop 0a3ceh                               ; e2 f8
     16079    jmp short 0a3c6h                          ; eb ee
    1611416080    mov ax, word [si]                         ; 8b 04
    1611516081    mov word [bp-018h], ax                    ; 89 46 e8
     
    1612816094    mov ds, [bp-006h]                         ; 8e 5e fa
    1612916095    cmp ax, word [si+002h]                    ; 3b 44 02
    16130     jnbe short 0a44fh                         ; 77 06
    16131     jne short 0a453h                          ; 75 08
     16096    jnbe short 0a40fh                         ; 77 06
     16097    jne short 0a413h                          ; 75 08
    1613216098    cmp dx, word [si]                         ; 3b 14
    16133     jc short 0a453h                           ; 72 04
     16099    jc short 0a413h                           ; 72 04
    1613416100    mov AL, strict byte 001h                  ; b0 01
    16135     jmp short 0a455h                          ; eb 02
     16101    jmp short 0a415h                          ; eb 02
    1613616102    xor al, al                                ; 30 c0
    1613716103    test al, al                               ; 84 c0
    16138     je short 0a4bah                           ; 74 61
     16104    je short 0a47ah                           ; 74 61
    1613916105    mov ds, [bp-008h]                         ; 8e 5e f8
    1614016106    mov ax, word [di+002h]                    ; 8b 45 02
    1614116107    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16142     jnbe short 0a470h                         ; 77 0c
     16108    jnbe short 0a430h                         ; 77 0c
    1614316109    cmp ax, word [bp-016h]                    ; 3b 46 ea
    16144     jne short 0a474h                          ; 75 0b
     16110    jne short 0a434h                          ; 75 0b
    1614516111    mov ax, word [di]                         ; 8b 05
    1614616112    cmp ax, word [bp-018h]                    ; 3b 46 e8
    16147     jc short 0a474h                           ; 72 04
     16113    jc short 0a434h                           ; 72 04
    1614816114    mov AL, strict byte 001h                  ; b0 01
    16149     jmp short 0a476h                          ; eb 02
     16115    jmp short 0a436h                          ; eb 02
    1615016116    xor al, al                                ; 30 c0
    1615116117    test al, al                               ; 84 c0
    16152     je short 0a4a0h                           ; 74 26
     16118    je short 0a460h                           ; 74 26
    1615316119    mov ax, word [bp-018h]                    ; 8b 46 e8
    1615416120    mov ds, [bp-008h]                         ; 8e 5e f8
     
    1615916125    xor dx, dx                                ; 31 d2
    1616016126    mov cx, word [bp-012h]                    ; 8b 4e ee
    16161     jcxz 0a498h                               ; e3 06
     16127    jcxz 0a458h                               ; e3 06
    1616216128    sal ax, 1                                 ; d1 e0
    1616316129    rcl dx, 1                                 ; d1 d2
    16164     loop 0a492h                               ; e2 fa
     16130    loop 0a452h                               ; e2 fa
    1616516131    lds bx, [bp-010h]                         ; c5 5e f0
    1616616132    or word [bx], ax                          ; 09 07
     
    1617116137    mov ds, [bp-006h]                         ; 8e 5e fa
    1617216138    cmp ax, word [si+002h]                    ; 3b 44 02
    16173     jc short 0a4b6h                           ; 72 06
    16174     jne short 0a4bch                          ; 75 0a
     16139    jc short 0a476h                           ; 72 06
     16140    jne short 0a47ch                          ; 75 0a
    1617516141    cmp dx, word [si]                         ; 3b 14
    16176     jnc short 0a4bch                          ; 73 06
     16142    jnc short 0a47ch                          ; 73 06
    1617716143    mov AL, strict byte 001h                  ; b0 01
    16178     jmp short 0a4beh                          ; eb 04
    16179     jmp short 0a4ddh                          ; eb 21
     16144    jmp short 0a47eh                          ; eb 04
     16145    jmp short 0a49dh                          ; eb 21
    1618016146    xor al, al                                ; 30 c0
    1618116147    test al, al                               ; 84 c0
    16182     je short 0a4d1h                           ; 74 0f
    16183     jmp short 0a4ddh                          ; eb 19
     16148    je short 0a491h                           ; 74 0f
     16149    jmp short 0a49dh                          ; eb 19
    1618416150    mov cx, strict word 0001fh                ; b9 1f 00
    1618516151    sal word [bp-018h], 1                     ; d1 66 e8
    1618616152    rcl word [bp-016h], 1                     ; d1 56 ea
    16187     loop 0a4c7h                               ; e2 f8
    16188     jmp short 0a4d7h                          ; eb 06
     16153    loop 0a487h                               ; e2 f8
     16154    jmp short 0a497h                          ; eb 06
    1618916155    shr word [bp-016h], 1                     ; d1 6e ea
    1619016156    rcr word [bp-018h], 1                     ; d1 5e e8
    1619116157    dec word [bp-012h]                        ; ff 4e ee
    16192     jmp near 0a459h                           ; e9 7c ff
     16158    jmp near 0a419h                           ; e9 7c ff
    1619316159    mov ax, word [bp-01ch]                    ; 8b 46 e4
    1619416160    mov dx, word [bp-01ah]                    ; 8b 56 e6
     
    1619916165    retn                                      ; c3
    1620016166    times 0x6 db 0
    16201 _ASMBitLastSetU16:                           ; 0xfa4f0 LB 0x18
     16167_ASMBitLastSetU16:                           ; 0xfa4b0 LB 0x18
    1620216168    push bp                                   ; 55
    1620316169    db  08bh, 0ech
     
    1620516171    mov cx, word [bp+004h]                    ; 8b 4e 04
    1620616172    test cx, cx                               ; 85 c9
    16207     je short 0a504h                           ; 74 0a
     16173    je short 0a4c4h                           ; 74 0a
    1620816174    mov ax, strict word 00010h                ; b8 10 00
    1620916175    sal cx, 1                                 ; d1 e1
    16210     jc short 0a506h                           ; 72 05
     16176    jc short 0a4c6h                           ; 72 05
    1621116177    dec ax                                    ; 48
    16212     jmp short 0a4fdh                          ; eb f9
     16178    jmp short 0a4bdh                          ; eb f9
    1621316179    db  033h, 0c0h
    1621416180    ; xor ax, ax                                ; 33 c0
     
    1621616182    retn                                      ; c3
    1621716183
    16218   ; Padding 0x34f8 bytes at 0xfa508
    16219   times 13560 db 0
     16184  ; Padding 0x3538 bytes at 0xfa4c8
     16185  times 13624 db 0
    1622016186
    1622116187section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
     
    1626416230    add bp, strict byte 00008h                ; 83 c5 08
    1626516231    push ebp                                  ; 66 55
    16266     mov bp, 0a276h                            ; bd 76 a2
     16232    mov bp, 0a236h                            ; bd 36 a2
    1626716233    add byte [bx+si], al                      ; 00 00
    1626816234    push ebp                                  ; 66 55
     
    1699416960    call 01cc5h                               ; e8 89 39
    1699516961    call 02154h                               ; e8 15 3e
    16996     call 09a6eh                               ; e8 2c b7
    16997     call 088b8h                               ; e8 73 a5
     16962    call 09a27h                               ; e8 e5 b6
     16963    call 08871h                               ; e8 2c a5
    1699816964    call 0ed4ch                               ; e8 04 0a
    1699916965    call 0e2d2h                               ; e8 87 ff
     
    1717117137    out strict byte 0a1h, AL                  ; e6 a1
    1717217138    retn                                      ; c3
    17173 ebda_post:                                   ; 0xfe794 LB 0x45
     17139ebda_post:                                   ; 0xfe794 LB 0x51
    1717417140    mov ax, 0e754h                            ; b8 54 e7
    1717517141    mov word [00034h], ax                     ; a3 34 00
     
    1718517151    mov word [001cah], ax                     ; a3 ca 01
    1718617152    mov ax, 0e754h                            ; b8 54 e7
     17153    mov word [001cch], ax                     ; a3 cc 01
     17154    mov ax, 0f000h                            ; b8 00 f0
     17155    mov word [001ceh], ax                     ; a3 ce 01
     17156    mov ax, 0e754h                            ; b8 54 e7
    1718717157    mov word [001dch], ax                     ; a3 dc 01
    1718817158    mov ax, 0f000h                            ; b8 00 f0
     
    1719617166    mov word [0040eh], 09fc0h                 ; c7 06 0e 04 c0 9f
    1719717167    retn                                      ; c3
    17198 biosorg_check_before_or_at_0E82Ch:           ; 0xfe7d9 LB 0x55
    17199     times 0x53 db 0
     17168biosorg_check_before_or_at_0E82Ch:           ; 0xfe7e5 LB 0x49
     17169    times 0x47 db 0
    1720017170    db  'XM'
    1720117171biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x52
     
    1795017920    popfw                                     ; 9d
    1795117921    jmp short 0f8afh                          ; eb 1f
    17952     call 09be0h                               ; e8 4d a3
     17922    call 09b99h                               ; e8 06 a3
    1795317923    jmp short 0f883h                          ; eb ee
    1795417924int15_handler_mouse:                         ; 0xff895 LB 0x5
     
    1827418244cpu_reset:                                   ; 0xffff0 LB 0x10
    1827518245    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    18276     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 023h
     18246    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0f9h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum

    r67807 r68290  
    1 269f62de83976f5a734bb5219dc89ba4 *VBoxPcBios8086.rom
     1e5b242e719ad26ca22448575914e8257 *VBoxPcBios8086.rom
Note: See TracChangeset for help on using the changeset viewer.

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