VirtualBox

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


Ignore:
Timestamp:
Jul 13, 2012 1:59:20 PM (13 years ago)
Author:
vboxsync
Message:

Share kBuild template for the VGA and System BIOSes as well as the alternative source generator code.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS/Makefile.kmk

    r42127 r42147  
    2323
    2424 #
    25  # VBoxBios - Template for building the BIOS bits.
    26  #
    27  TEMPLATE_VBoxBios = PXE ROM
    28  TEMPLATE_VBoxBios_TOOL    = OPENWATCOM-16
    29  TEMPLATE_VBoxBios_LDTOOL  = OPENWATCOM-WL
    30  TEMPLATE_VBoxBios_ASTOOL  = OPENWATCOM-16
    31  TEMPLATE_VBoxBios_BLD_TRG = os-agnostic
    32  TEMPLATE_VBoxBios_BLD_TRG_ARCH = x86
    33  TEMPLATE_VBoxBios_BINSUFF = .rom
    34  TEMPLATE_VBoxBios_INCS    = .
    35  TEMPLATE_VBoxBios_ASFLAGS = -q -wx
    36  TEMPLATE_VBoxBios_CFLAGS  = -q -3 -wx -zl -zu -s -oas -d1+ -ms
    37  TEMPLATE_VBoxBios_DEFS    = \
    38         VBOX_PC_BIOS \
    39         VBOX_LANBOOT_SEG=0xE200 \
    40         VBOX_VERSION_STRING=\"$(VBOX_VERSION_STRING)\" \
    41         VBOX_WITH_SCSI \
    42         VBOX_WITH_AHCI
    43  TEMPLATE_VBoxBios_LDFLAGS = system dos  \
    44         debug all \
    45         option quiet, nofarcalls, map, verbose, statics, symfile \
    46         output raw offset=0xF0000 order \
    47         clname DATA segaddr=0xF000 segment _DATA \
    48         clname CODE \
    49         segment _TEXT segaddr=0xF000 offset=0x1600 \
    50         segment BIOS32 segaddr=0xF000 offset=0xDE00 \
    51         segment BIOSSEG segaddr=0xF000 offset=0xE000 \
    52         disable 1014, 1023, 2120
    53  TEMPLATE_VBoxBios_LNK_DEPS = $(VBOX_BIOSSUMS)
    54  TEMPLATE_VBoxBios_POST_CMDS = \
    55         $(QUIET)$(MV_EXT) -f $(out) $(out).tmp \
    56         && $(VBOX_BIOSSUMS) $(out).tmp $(out) \
    57         && $(RM_EXT) -f $(out).tmp
    58 
    59 
    60  #
    6125 # VBoxPcBios - The PC BIOS.
    6226 #
    6327 MISCBINS += VBoxPcBios
    6428 VBoxPcBios_TEMPLATE = VBoxBios
     29 VBoxPcBios_DEFS = \
     30        VBOX_PC_BIOS \
     31        VBOX_LANBOOT_SEG=0xE200 \
     32        VBOX_WITH_SCSI \
     33        VBOX_WITH_AHCI
     34 VBoxPcBios_LDFLAGS = \
     35        output raw offset=0xF0000 \
     36        order \
     37         clname DATA segaddr=0xF000 \
     38          segment _DATA \
     39         clname CODE \
     40          segment _TEXT   segaddr=0xF000 offset=0x1600 \
     41          segment BIOS32  segaddr=0xF000 offset=0xDE00 \
     42          segment BIOSSEG segaddr=0xF000 offset=0xE000
    6543 VBoxPcBios_SOURCES = \
    6644        bios.c \
     
    8361        pciutil.c \
    8462        vds.c \
    85         support.asm \
     63        ../../BiosCommonCode/support.asm \
    8664        pcibio32.asm \
    8765        orgs.asm
     
    9068 # Updates the alternative source file.
    9169 #
    92  update-bios-source | $(PATH_SUB_CURRENT)/VBoxBiosAlternative.asm $(PATH_SUB_CURRENT)/VBoxBiosAlternative.md5sum: \
     70 update-pcbios-source +| $(PATH_SUB_CURRENT)/VBoxBiosAlternative.asm $(PATH_SUB_CURRENT)/VBoxBiosAlternative.md5sum: \
    9371                $$(VBoxPcBios_1_TARGET) \
    94                 $$(MakeDebianBiosAssembly_1_TARGET) \
     72                $(VBOX_MAKE_ALTERNATIVE_SOURCE) \
    9573                $(VBOX_VBOXCMP)
    9674 if1of ($(KBUILD_TYPE), release)
    97         $(MakeDebianBiosAssembly_1_TARGET) \
     75        $(VBOX_MAKE_ALTERNATIVE_SOURCE) \
    9876                --bios-image $< \
    9977                --bios-map $(basename $<).map \
    10078                --bios-sym $(basename $<).sym \
     79                --bios-type system \
    10180                --output $(VBoxPcBios_0_OUTDIR)/VBoxBiosAlternative.asm
    10281        $(QUIET)yasm -f bin -o $(VBoxPcBios_0_OUTDIR)/VBoxBiosAlternative.bin $(VBoxPcBios_0_OUTDIR)/VBoxBiosAlternative.asm
     
    143122endif
    144123
    145 
    146 #
    147 # MakeDebianBiosAssembly - For distros without OpenWatcom.
    148 #
    149 BLDPROGS += MakeDebianBiosAssembly
    150 MakeDebianBiosAssembly_TEMPLATE = VBoxAdvBldProg
    151 MakeDebianBiosAssembly_DEFS     = IN_DIS
    152 MakeDebianBiosAssembly_SOURCES  = MakeDebianBiosAssembly.cpp
    153 MakeDebianBiosAssembly_LIBS     = \
    154         $(PATH_STAGE_LIB)/DisasmBldProg$(VBOX_SUFF_LIB)
    155 
    156124include $(FILE_KBUILD_SUB_FOOTER)
    157125
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.asm

    r42057 r42147  
    465465;   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
    466466
     467
     468;
     469; Source file: pcibios.c
     470;
     471;  $Id$
     472;  PCI BIOS support.
     473
     474
     475
     476;  Copyright (C) 2004-2012 Oracle Corporation
     477
     478;  This file is part of VirtualBox Open Source Edition (OSE), as
     479;  available from http://www.virtualbox.org. This file is free software;
     480;  you can redistribute it and/or modify it under the terms of the GNU
     481;  General Public License (GPL) as published by the Free Software
     482;  Foundation, in version 2 as it comes in the "COPYING" file of the
     483;  VirtualBox OSE distribution. VirtualBox OSE is distributed in the
     484;  hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
    467485
    468486;
     
    749767_dskacc:                                     ; 0xf0000 LB 0x18
    750768    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 059h, 027h, 0d0h, 027h, 000h, 000h, 000h, 000h
    751     db  041h, 073h, 0e3h, 073h, 05eh, 07eh, 0e9h, 07eh
     769    db  0d6h, 075h, 078h, 076h, 0f3h, 080h, 07eh, 081h
    752770
    753 section CONST progbits vstart=0x18 align=1 ; size=0xbde class=DATA group=DGROUP
     771section CONST progbits vstart=0x18 align=1 ; size=0xc10 class=DATA group=DGROUP
    754772    db   'NMI Handler called', 00ah, 000h
    755773    db   'INT18: BOOT FAILURE', 00ah, 000h
     
    821839    db   'EISA BIOS not present', 00ah, 000h
    822840    db   '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h
     841    db   'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
    823842    db   'sendmouse', 000h
    824843    db   'setkbdcomm', 000h
     
    857876    db   '%s: DATA_OUT not supported yet', 00ah, 000h
    858877
    859 section CONST2 progbits vstart=0xbf6 align=1 ; size=0x3fa class=DATA group=DGROUP
    860 _bios_cvs_version_string:                    ; 0xf0bf6 LB 0x12
     878section CONST2 progbits vstart=0xc28 align=1 ; size=0x3fa class=DATA group=DGROUP
     879_bios_cvs_version_string:                    ; 0xf0c28 LB 0x12
    861880    db  'VirtualBox 4.1.51', 000h
    862 _bios_prefix_string:                         ; 0xf0c08 LB 0x8
     881_bios_prefix_string:                         ; 0xf0c3a LB 0x8
    863882    db  'BIOS: ', 000h, 000h
    864 _isotag:                                     ; 0xf0c10 LB 0x6
     883_isotag:                                     ; 0xf0c42 LB 0x6
    865884    db  'CD001', 000h
    866 _eltorito:                                   ; 0xf0c16 LB 0x18
     885_eltorito:                                   ; 0xf0c48 LB 0x18
    867886    db  'EL TORITO SPECIFICATION', 000h
    868 _drivetypes:                                 ; 0xf0c2e LB 0x28
     887_drivetypes:                                 ; 0xf0c60 LB 0x28
    869888    db  046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
    870889    db  069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
    871890    db  04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
    872 _scan_to_scanascii:                          ; 0xf0c56 LB 0x37a
     891_scan_to_scanascii:                          ; 0xf0c88 LB 0x37a
    873892    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
    874893    db  000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
     
    927946    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
    928947    db  000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
    929 _panic_msg_keyb_buffer_full:                 ; 0xf0fd0 LB 0x20
     948_panic_msg_keyb_buffer_full:                 ; 0xf1002 LB 0x20
    930949    db  '%s: keyboard input buffer full', 00ah, 000h
    931950
    932   ; Padding 0x610 bytes at 0xf0ff0
    933   times 1552 db 0
     951  ; Padding 0x5de bytes at 0xf1022
     952  times 1502 db 0
    934953
    935 section _TEXT progbits vstart=0x1600 align=1 ; size=0x727f class=CODE group=AUTO
     954section _TEXT progbits vstart=0x1600 align=1 ; size=0x750f class=CODE group=AUTO
    936955read_byte_:                                  ; 0xf1600 LB 0xe
    937956    push bx                                   ; 53
     
    10951114    push bp                                   ; 55
    10961115    mov bp, sp                                ; 89 e5
    1097     mov bx, 00c08h                            ; bb 08 0c
     1116    mov bx, 00c3ah                            ; bb 3a 0c
    10981117    mov cx, ds                                ; 8c d9
    10991118    mov ax, strict word 00004h                ; b8 04 00
    11001119    call 018aeh                               ; e8 99 01
    1101     push 00bf6h                               ; 68 f6 0b
     1120    push 00c28h                               ; 68 28 0c
    11021121    push strict word 00041h                   ; 68 41 00
    11031122    push strict byte 00004h                   ; 6a 04
     
    11241143    pop bp                                    ; 5d
    11251144    retn                                      ; c3
    1126     call 0700fh                               ; e8 c0 58
     1145    call 072a4h                               ; e8 55 5b
    11271146    pop bp                                    ; 5d
    11281147    retn                                      ; c3
     
    12571276    mov bx, strict word 0000ah                ; bb 0a 00
    12581277    xor cx, cx                                ; 31 c9
    1259     call 087f0h                               ; e8 97 6f
     1278    call 08a80h                               ; e8 27 72
    12601279    mov word [bp-004h], ax                    ; 89 46 fc
    12611280    mov cx, dx                                ; 89 d1
     
    22202239    xor dx, dx                                ; 31 d2
    22212240    mov word [bp-01ah], di                    ; 89 7e e6
    2222     mov bx, 00c08h                            ; bb 08 0c
     2241    mov bx, 00c3ah                            ; bb 3a 0c
    22232242    mov cx, ds                                ; 8c d9
    22242243    mov ax, strict word 00004h                ; b8 04 00
     
    28542873    cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
    28552874    jne short 0285ah                          ; 75 1f
    2856     mov bx, 00c08h                            ; bb 08 0c
     2875    mov bx, 00c3ah                            ; bb 3a 0c
    28572876    mov cx, ds                                ; 8c d9
    28582877    mov ax, strict word 00004h                ; b8 04 00
     
    36383657    cmp AL, strict byte 048h                  ; 3c 48
    36393658    jbe short 02f58h                          ; 76 29
    3640     mov bx, 00c08h                            ; bb 08 0c
     3659    mov bx, 00c3ah                            ; bb 3a 0c
    36413660    mov cx, ds                                ; 8c d9
    36423661    mov ax, strict word 00004h                ; b8 04 00
     
    42764295    mov ax, strict word 00006h                ; b8 06 00
    42774296    jmp near 02e83h                           ; e9 19 f9
    4278     mov bx, 00c08h                            ; bb 08 0c
     4297    mov bx, 00c3ah                            ; bb 3a 0c
    42794298    mov cx, ds                                ; 8c d9
    42804299    mov ax, strict word 00004h                ; b8 04 00
     
    44334452    pop si                                    ; 5e
    44344453    retn                                      ; c3
    4435     mov bx, 00c08h                            ; bb 08 0c
     4454    mov bx, 00c3ah                            ; bb 3a 0c
    44364455    mov cx, ds                                ; 8c d9
    44374456    mov ax, strict word 00004h                ; b8 04 00
     
    45124531    mov dx, ss                                ; 8c d2
    45134532    lea ax, [bp-01ah]                         ; 8d 46 e6
    4514     call 0885ah                               ; e8 8a 50
     4533    call 08aeah                               ; e8 1a 53
    45154534    mov word [bp-01ah], strict word 00028h    ; c7 46 e6 28 00
    45164535    mov ax, strict word 00011h                ; b8 11 00
     
    45594578    lea bx, [bp-01ah]                         ; 8d 5e e6
    45604579    mov dx, strict word 0000ch                ; ba 0c 00
    4561     call 07f4eh                               ; e8 00 47
     4580    call 081e3h                               ; e8 95 49
    45624581    jmp short 0381dh                          ; eb cd
    45634582    test ax, ax                               ; 85 c0
     
    45754594    jnc short 03881h                          ; 73 10
    45764595    mov al, byte [bp+di-00819h]               ; 8a 83 e7 f7
    4577     cmp al, byte [di+00c10h]                  ; 3a 85 10 0c
     4596    cmp al, byte [di+00c42h]                  ; 3a 85 42 0c
    45784597    je short 0386bh                           ; 74 f0
    45794598    mov ax, strict word 00005h                ; b8 05 00
     
    45854604    jnc short 0389bh                          ; 73 10
    45864605    mov al, byte [bp+di-00813h]               ; 8a 83 ed f7
    4587     cmp al, byte [di+00c16h]                  ; 3a 85 16 0c
     4606    cmp al, byte [di+00c48h]                  ; 3a 85 48 0c
    45884607    je short 03885h                           ; 74 f0
    45894608    mov ax, strict word 00006h                ; b8 06 00
     
    46134632    lea bx, [bp-01ah]                         ; 8d 5e e6
    46144633    mov dx, strict word 0000ch                ; ba 0c 00
    4615     call 07f4eh                               ; e8 6f 46
     4634    call 081e3h                               ; e8 04 49
    46164635    jmp short 038ffh                          ; eb 1e
    46174636    lea dx, [bp-0081ah]                       ; 8d 96 e6 f7
     
    47274746    lea bx, [bp-01ah]                         ; 8d 5e e6
    47284747    mov dx, strict word 0000ch                ; ba 0c 00
    4729     call 07f4eh                               ; e8 24 45
     4748    call 081e3h                               ; e8 b9 47
    47304749    jmp short 03a51h                          ; eb 25
    47314750    push di                                   ; 57
     
    49264945    cmp ax, dx                                ; 39 d0
    49274946    je short 03c26h                           ; 74 29
    4928     mov bx, 00c08h                            ; bb 08 0c
     4947    mov bx, 00c3ah                            ; bb 3a 0c
    49294948    mov cx, ds                                ; 8c d9
    49304949    mov ax, strict word 00004h                ; b8 04 00
     
    50215040    xor dl, dl                                ; 30 d2
    50225041    xor cx, cx                                ; 31 c9
    5023     call 08829h                               ; e8 1d 4b
     5042    call 08ab9h                               ; e8 ad 4d
    50245043    xor bx, bx                                ; 31 db
    50255044    add ax, si                                ; 01 f0
     
    50275046    mov bx, di                                ; 89 fb
    50285047    xor cx, cx                                ; 31 c9
    5029     call 08829h                               ; e8 10 4b
     5048    call 08ab9h                               ; e8 a0 4d
    50305049    mov bx, word [bp-010h]                    ; 8b 5e f0
    50315050    dec bx                                    ; 4b
     
    50645083    mov dx, ss                                ; 8c d2
    50655084    lea ax, [bp-02ah]                         ; 8d 46 d6
    5066     call 0885ah                               ; e8 e6 4a
     5085    call 08aeah                               ; e8 76 4d
    50675086    mov word [bp-02ah], strict word 00028h    ; c7 46 d6 28 00
    50685087    mov ax, word [bp-014h]                    ; 8b 46 ec
     
    51165135    lea bx, [bp-02ah]                         ; 8d 5e d6
    51175136    mov dx, strict word 0000ch                ; ba 0c 00
    5118     call 07f4eh                               ; e8 4e 41
     5137    call 081e3h                               ; e8 e3 43
    51195138    jmp short 03e2ah                          ; eb 28
    51205139    push word [bp-00eh]                       ; ff 76 f2
     
    51415160    test dl, dl                               ; 84 d2
    51425161    je near 03f0eh                            ; 0f 84 d0 00
    5143     mov bx, 00c08h                            ; bb 08 0c
     5162    mov bx, 00c3ah                            ; bb 3a 0c
    51445163    mov cx, ds                                ; 8c d9
    51455164    mov ax, strict word 00004h                ; b8 04 00
     
    52315250    mov word [bp+01ah], bx                    ; 89 5e 1a
    52325251    jmp short 03f12h                          ; eb e5
    5233     mov bx, 00c08h                            ; bb 08 0c
     5252    mov bx, 00c3ah                            ; bb 3a 0c
    52345253    mov cx, ds                                ; 8c d9
    52355254    mov ax, strict word 00004h                ; b8 04 00
     
    54445463    mov dx, ss                                ; 8c d2
    54455464    lea ax, [bp-028h]                         ; 8d 46 d8
    5446     call 0885ah                               ; e8 24 47
     5465    call 08aeah                               ; e8 b4 49
    54475466    mov word [bp-028h], strict word 00028h    ; c7 46 d8 28 00
    54485467    mov ax, word [bp-010h]                    ; 8b 46 f0
     
    54755494    lea bx, [bp-028h]                         ; 8d 5e d8
    54765495    mov dx, strict word 0000ch                ; ba 0c 00
    5477     call 07f4eh                               ; e8 c3 3d
     5496    call 081e3h                               ; e8 58 40
    54785497    jmp short 041b1h                          ; eb 24
    54795498    push dword [bp-016h]                      ; 66 ff 76 ea
     
    55045523    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    55055524    je near 04296h                            ; 0f 84 bf 00
    5506     mov bx, 00c08h                            ; bb 08 0c
     5525    mov bx, 00c3ah                            ; bb 3a 0c
    55075526    mov cx, ds                                ; 8c d9
    55085527    mov ax, strict word 00004h                ; b8 04 00
     
    57815800    or byte [bp+022h], 001h                   ; 80 4e 22 01
    57825801    jmp near 042a9h                           ; e9 91 fd
    5783     mov bx, 00c08h                            ; bb 08 0c
     5802    mov bx, 00c3ah                            ; bb 3a 0c
    57845803    mov cx, ds                                ; 8c d9
    57855804    mov ax, strict word 00004h                ; b8 04 00
     
    58115830    je short 0457ah                           ; 74 21
    58125831    mov dx, strict word 00001h                ; ba 01 00
    5813     mov bx, 00c08h                            ; bb 08 0c
     5832    mov bx, 00c3ah                            ; bb 3a 0c
    58145833    mov cx, ds                                ; 8c d9
    58155834    mov ax, strict word 00004h                ; b8 04 00
    58165835    call 018aeh                               ; e8 47 d3
    58175836    imul dx, dx, strict byte 0000ah           ; 6b d2 0a
    5818     add dx, 00c2eh                            ; 81 c2 2e 0c
     5837    add dx, 00c60h                            ; 81 c2 60 0c
    58195838    push dx                                   ; 52
    58205839    push 003eah                               ; 68 ea 03
     
    58355854    test al, al                               ; 84 c0
    58365855    je short 045aah                           ; 74 1b
    5837     mov bx, 00c08h                            ; bb 08 0c
     5856    mov bx, 00c3ah                            ; bb 3a 0c
    58385857    mov cx, ds                                ; 8c d9
    58395858    mov ax, strict word 00004h                ; b8 04 00
    58405859    call 018aeh                               ; e8 14 d3
    5841     push 00c42h                               ; 68 42 0c
     5860    push 00c74h                               ; 68 74 0c
    58425861    push 003feh                               ; 68 fe 03
    58435862    push strict byte 00004h                   ; 6a 04
     
    58475866    test dl, dl                               ; 84 d2
    58485867    je short 045beh                           ; 74 10
    5849     mov bx, 00c08h                            ; bb 08 0c
     5868    mov bx, 00c3ah                            ; bb 3a 0c
    58505869    mov cx, ds                                ; 8c d9
    58515870    mov ax, strict word 00004h                ; b8 04 00
    58525871    call 018aeh                               ; e8 f5 d2
    5853     push 00c4ch                               ; 68 4c 0c
     5872    push 00c7eh                               ; 68 7e 0c
    58545873    jmp short 0459dh                          ; eb df
    58555874    test bl, 080h                             ; f6 c3 80
    58565875    je short 045d4h                           ; 74 11
    5857     mov bx, 00c08h                            ; bb 08 0c
     5876    mov bx, 00c3ah                            ; bb 3a 0c
    58585877    mov cx, ds                                ; 8c d9
    58595878    mov ax, strict word 00004h                ; b8 04 00
    58605879    call 018aeh                               ; e8 e0 d2
    58615880    push si                                   ; 56
    5862     push 00c38h                               ; 68 38 0c
     5881    push 00c6ah                               ; 68 6a 0c
    58635882    jmp short 045e3h                          ; eb 0f
    5864     mov bx, 00c08h                            ; bb 08 0c
     5883    mov bx, 00c3ah                            ; bb 3a 0c
    58655884    mov cx, ds                                ; 8c d9
    58665885    mov ax, strict word 00004h                ; b8 04 00
    58675886    call 018aeh                               ; e8 cf d2
    58685887    push si                                   ; 56
    5869     push 00c2eh                               ; 68 2e 0c
     5888    push 00c60h                               ; 68 60 0c
    58705889    push 00413h                               ; 68 13 04
    58715890    push strict byte 00004h                   ; 6a 04
     
    58925911    mov bp, sp                                ; 89 e5
    58935912    mov dx, ax                                ; 89 c2
    5894     mov bx, 00c08h                            ; bb 08 0c
     5913    mov bx, 00c3ah                            ; bb 3a 0c
    58955914    mov cx, ds                                ; 8c d9
    58965915    mov ax, strict word 00004h                ; b8 04 00
     
    59475966    xor ah, ah                                ; 30 e4
    59485967    sar ax, 004h                              ; c1 f8 04
    5949     call 07216h                               ; e8 79 2b
     5968    call 074abh                               ; e8 0e 2e
    59505969    cmp byte [bp+008h], 002h                  ; 80 7e 08 02
    59515970    jne short 046a6h                          ; 75 03
     
    59645983    mov byte [bp-006h], al                    ; 88 46 fa
    59655984    mov byte [bp-008h], al                    ; 88 46 f8
    5966     mov bx, 00c08h                            ; bb 08 0c
     5985    mov bx, 00c3ah                            ; bb 3a 0c
    59675986    mov cx, ds                                ; 8c d9
    59685987    mov ax, strict word 00004h                ; b8 04 00
     
    65256544    test al, al                               ; 84 c0
    65266545    jne short 04bc6h                          ; 75 19
    6527     mov bx, 00c08h                            ; bb 08 0c
     6546    mov bx, 00c3ah                            ; bb 3a 0c
    65286547    mov cx, ds                                ; 8c d9
    65296548    mov ax, strict word 00004h                ; b8 04 00
     
    67286747    cmp byte [bp-006h], 058h                  ; 80 7e fa 58
    67296748    jbe short 04e01h                          ; 76 1e
    6730     mov bx, 00c08h                            ; bb 08 0c
     6749    mov bx, 00c3ah                            ; bb 3a 0c
    67316750    mov cx, ds                                ; 8c d9
    67326751    mov ax, strict word 00004h                ; b8 04 00
     
    67436762    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    67446763    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6745     mov dl, byte [si+00c5ch]                  ; 8a 94 5c 0c
    6746     mov ax, word [si+00c5ch]                  ; 8b 84 5c 0c
     6764    mov dl, byte [si+00c8eh]                  ; 8a 94 8e 0c
     6765    mov ax, word [si+00c8eh]                  ; 8b 84 8e 0c
    67476766    jmp near 04ea4h                           ; e9 8c 00
    67486767    test bl, 004h                             ; f6 c3 04
     
    67506769    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    67516770    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6752     mov dl, byte [si+00c5ah]                  ; 8a 94 5a 0c
    6753     mov ax, word [si+00c5ah]                  ; 8b 84 5a 0c
     6771    mov dl, byte [si+00c8ch]                  ; 8a 94 8c 0c
     6772    mov ax, word [si+00c8ch]                  ; 8b 84 8c 0c
    67546773    jmp near 04ea4h                           ; e9 75 00
    67556774    mov al, byte [bp-002h]                    ; 8a 46 fe
     
    67706789    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    67716790    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6772     movzx ax, byte [si+00c5eh]                ; 0f b6 84 5e 0c
     6791    movzx ax, byte [si+00c90h]                ; 0f b6 84 90 0c
    67736792    movzx dx, bl                              ; 0f b6 d3
    67746793    test dx, ax                               ; 85 c2
    67756794    je short 04e6fh                           ; 74 0a
    6776     mov dl, byte [si+00c56h]                  ; 8a 94 56 0c
    6777     mov ax, word [si+00c56h]                  ; 8b 84 56 0c
     6795    mov dl, byte [si+00c88h]                  ; 8a 94 88 0c
     6796    mov ax, word [si+00c88h]                  ; 8b 84 88 0c
    67786797    jmp short 04e77h                          ; eb 08
    6779     mov dl, byte [si+00c58h]                  ; 8a 94 58 0c
    6780     mov ax, word [si+00c58h]                  ; 8b 84 58 0c
     6798    mov dl, byte [si+00c8ah]                  ; 8a 94 8a 0c
     6799    mov ax, word [si+00c8ah]                  ; 8b 84 8a 0c
    67816800    shr ax, 008h                              ; c1 e8 08
    67826801    mov byte [bp-006h], al                    ; 88 46 fa
     
    67846803    movzx si, byte [bp-006h]                  ; 0f b6 76 fa
    67856804    imul si, si, strict byte 0000ah           ; 6b f6 0a
    6786     movzx ax, byte [si+00c5eh]                ; 0f b6 84 5e 0c
     6805    movzx ax, byte [si+00c90h]                ; 0f b6 84 90 0c
    67876806    movzx dx, bl                              ; 0f b6 d3
    67886807    test dx, ax                               ; 85 c2
    67896808    je short 04e9ch                           ; 74 0a
    6790     mov dl, byte [si+00c58h]                  ; 8a 94 58 0c
    6791     mov ax, word [si+00c58h]                  ; 8b 84 58 0c
     6809    mov dl, byte [si+00c8ah]                  ; 8a 94 8a 0c
     6810    mov ax, word [si+00c8ah]                  ; 8b 84 8a 0c
    67926811    jmp short 04ea4h                          ; eb 08
    6793     mov dl, byte [si+00c56h]                  ; 8a 94 56 0c
    6794     mov ax, word [si+00c56h]                  ; 8b 84 56 0c
     6812    mov dl, byte [si+00c88h]                  ; 8a 94 88 0c
     6813    mov ax, word [si+00c88h]                  ; 8b 84 88 0c
    67956814    shr ax, 008h                              ; c1 e8 08
    67966815    mov byte [bp-006h], al                    ; 88 46 fa
     
    67996818    test dl, dl                               ; 84 d2
    68006819    jne short 04ecah                          ; 75 16
    6801     mov bx, 00c08h                            ; bb 08 0c
     6820    mov bx, 00c3ah                            ; bb 3a 0c
    68026821    mov cx, ds                                ; 8c d9
    68036822    mov ax, strict word 00004h                ; b8 04 00
     
    71727191    or ah, 080h                               ; 80 cc 80
    71737192    jmp near 050f6h                           ; e9 d5 fe
    7174     mov bx, 00c08h                            ; bb 08 0c
     7193    mov bx, 00c3ah                            ; bb 3a 0c
    71757194    mov cx, ds                                ; 8c d9
    71767195    mov ax, strict word 00004h                ; b8 04 00
     
    71837202    call 018e9h                               ; e8 ae c6
    71847203    add sp, strict byte 00006h                ; 83 c4 06
    7185     mov bx, 00c08h                            ; bb 08 0c
     7204    mov bx, 00c3ah                            ; bb 3a 0c
    71867205    mov cx, ds                                ; 8c d9
    71877206    mov ax, strict word 00004h                ; b8 04 00
     
    73337352    test ax, ax                               ; 85 c0
    73347353    jne short 053d0h                          ; 75 23
    7335     mov bx, 00c08h                            ; bb 08 0c
     7354    mov bx, 00c3ah                            ; bb 3a 0c
    73367355    mov cx, ds                                ; 8c d9
    73377356    mov ax, strict word 00004h                ; b8 04 00
     
    73627381    cmp ax, dx                                ; 39 d0
    73637382    jbe short 0542bh                          ; 76 2e
    7364     mov bx, 00c08h                            ; bb 08 0c
     7383    mov bx, 00c3ah                            ; bb 3a 0c
    73657384    mov cx, ds                                ; 8c d9
    73667385    mov ax, strict word 00004h                ; b8 04 00
     
    74007419    mov bx, cx                                ; 89 cb
    74017420    xor cx, cx                                ; 31 c9
    7402     call 08829h                               ; e8 c4 33
     7421    call 08ab9h                               ; e8 54 36
    74037422    xor bx, bx                                ; 31 db
    74047423    add ax, word [bp-008h]                    ; 03 46 f8
     
    74067425    mov bx, word [bp-00ah]                    ; 8b 5e f6
    74077426    xor cx, cx                                ; 31 c9
    7408     call 08829h                               ; e8 b5 33
     7427    call 08ab9h                               ; e8 45 36
    74097428    xor bx, bx                                ; 31 db
    74107429    add ax, word [bp-006h]                    ; 03 46 fa
     
    74197438    db  0c0h, 001h, 0c3h, 006h, 056h, 0ffh, 097h, 0fch, 0ffh, 089h, 0c2h, 08bh, 046h, 016h, 030h, 0c0h
    74207439    db  08eh, 046h, 0fch, 026h, 08bh, 05ch, 014h, 009h, 0c3h, 089h, 05eh, 016h, 084h, 0d2h, 00fh, 084h
    7421     db  015h, 0feh, 0bbh, 008h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 088h, 0c3h, 00fh, 0b6h, 0c2h
     7440    db  015h, 0feh, 0bbh, 03ah, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 088h, 0c3h, 00fh, 0b6h, 0c2h
    74227441    db  050h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0d4h, 005h, 068h, 0afh, 006h, 06ah, 004h
    74237442    db  0e8h, 0adh, 0c3h, 083h, 0c4h, 00ah, 08bh, 046h, 016h, 030h, 0e4h, 080h, 0cch, 00ch, 0e9h, 051h
    7424     db  001h, 0bbh, 008h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 059h, 0c3h, 068h, 0d0h, 006h, 06ah
     7443    db  001h, 0bbh, 03ah, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 059h, 0c3h, 068h, 0d0h, 006h, 06ah
    74257444    db  004h, 0e8h, 08ch, 0c3h, 083h, 0c4h, 004h, 0e9h, 0cdh, 0fdh, 00fh, 0b6h, 046h, 0feh, 06bh, 0c0h
    74267445    db  018h, 08eh, 046h, 0fch, 089h, 0f3h, 001h, 0c3h, 026h, 08bh, 07fh, 028h, 026h, 08bh, 04fh, 026h
     
    74367455    db  00fh, 0b6h, 046h, 0feh, 06bh, 0c0h, 018h, 08eh, 046h, 0fch, 001h, 0c6h, 026h, 08bh, 07ch, 02eh
    74377456    db  026h, 08bh, 044h, 02ch, 089h, 046h, 0f8h, 026h, 08bh, 044h, 030h, 089h, 046h, 0fah, 089h, 0f8h
    7438     db  031h, 0d2h, 08bh, 05eh, 0f8h, 031h, 0c9h, 0e8h, 0f6h, 031h, 08bh, 05eh, 0fah, 031h, 0c9h, 0e8h
    7439     db  0eeh, 031h, 089h, 046h, 0f0h, 089h, 056h, 0f2h, 089h, 056h, 014h, 089h, 046h, 012h, 08bh, 046h
    7440     db  016h, 030h, 0e4h, 080h, 0cch, 003h, 089h, 046h, 016h, 0e9h, 0dfh, 0fch, 0bbh, 008h, 00ch, 08ch
     7457    db  031h, 0d2h, 08bh, 05eh, 0f8h, 031h, 0c9h, 0e8h, 086h, 034h, 08bh, 05eh, 0fah, 031h, 0c9h, 0e8h
     7458    db  07eh, 034h, 089h, 046h, 0f0h, 089h, 056h, 0f2h, 089h, 056h, 014h, 089h, 046h, 012h, 08bh, 046h
     7459    db  016h, 030h, 0e4h, 080h, 0cch, 003h, 089h, 046h, 016h, 0e9h, 0dfh, 0fch, 0bbh, 03ah, 00ch, 08ch
    74417460    db  0d9h, 0b8h, 004h, 000h, 0e8h, 04eh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h, 050h, 068h, 0d4h
    74427461    db  005h, 068h, 0eah, 006h, 06ah, 004h, 0e8h, 077h, 0c2h, 083h, 0c4h, 008h, 0e9h, 0b8h, 0fch, 0bbh
    7443     db  008h, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 02bh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h
     7462    db  03ah, 00ch, 08ch, 0d9h, 0b8h, 004h, 000h, 0e8h, 02bh, 0c2h, 08bh, 046h, 016h, 0c1h, 0e8h, 008h
    74447463    db  050h, 068h, 0d4h, 005h, 068h, 01dh, 007h, 0e9h, 032h, 0fdh, 08bh, 046h, 016h, 030h, 0e4h, 080h
    74457464    db  0cch, 001h, 089h, 046h, 016h, 08bh, 05eh, 016h, 0c1h, 0ebh, 008h, 030h, 0ffh, 0bah, 074h, 000h
     
    75497568    cmp dx, word [es:bx+032h]                 ; 26 3b 57 32
    75507569    jc short 0581ah                           ; 72 23
    7551     mov bx, 00c08h                            ; bb 08 0c
     7570    mov bx, 00c3ah                            ; bb 3a 0c
    75527571    mov cx, ds                                ; 8c d9
    75537572    mov ax, strict word 00004h                ; b8 04 00
     
    76017620    test dl, dl                               ; 84 d2
    76027621    je near 05b35h                            ; 0f 84 97 02
    7603     mov bx, 00c08h                            ; bb 08 0c
     7622    mov bx, 00c3ah                            ; bb 3a 0c
    76047623    mov cx, ds                                ; 8c d9
    76057624    mov ax, strict word 00004h                ; b8 04 00
     
    78377856    leave                                     ; c9
    78387857    retn                                      ; c3
    7839     mov bx, 00c08h                            ; bb 08 0c
     7858    mov bx, 00c3ah                            ; bb 3a 0c
    78407859    mov cx, ds                                ; 8c d9
    78417860    mov ax, strict word 00004h                ; b8 04 00
     
    81658184    mov word [bp+010h], ax                    ; 89 46 10
    81668185    jmp near 05e85h                           ; e9 2b 00
    8167     mov bx, 00c08h                            ; bb 08 0c
     8186    mov bx, 00c3ah                            ; bb 3a 0c
    81688187    mov cx, ds                                ; 8c d9
    81698188    mov ax, strict word 00004h                ; b8 04 00
     
    85068525    retf                                      ; cb
    85078526    jmp near 05e85h                           ; e9 ba fc
    8508     mov bx, 00c08h                            ; bb 08 0c
     8527    mov bx, 00c3ah                            ; bb 3a 0c
    85098528    mov cx, ds                                ; 8c d9
    85108529    mov ax, strict word 00004h                ; b8 04 00
     
    85468565    or byte [bp+01ch], 001h                   ; 80 4e 1c 01
    85478566    jmp near 05e85h                           ; e9 44 fc
    8548     mov bx, 00c08h                            ; bb 08 0c
     8567    mov bx, 00c3ah                            ; bb 3a 0c
    85498568    mov cx, ds                                ; 8c d9
    85508569    mov ax, strict word 00004h                ; b8 04 00
     
    88348853    pop si                                    ; 5e
    88358854    retn                                      ; c3
    8836     mov bx, 00c08h                            ; bb 08 0c
     8855    mov bx, 00c3ah                            ; bb 3a 0c
    88378856    mov cx, ds                                ; 8c d9
    88388857    mov ax, strict word 00004h                ; b8 04 00
     
    91539172    movzx dx, al                              ; 0f b6 d0
    91549173    jmp near 0676ch                           ; e9 14 ff
    9155 send_to_mouse_ctrl_:                         ; 0xf6858 LB 0x31
     9174pci16_select_reg_:                           ; 0xf6858 LB 0x21
     9175    push bx                                   ; 53
     9176    push bp                                   ; 55
     9177    mov bp, sp                                ; 89 e5
     9178    and dl, 0fch                              ; 80 e2 fc
     9179    mov bx, dx                                ; 89 d3
     9180    mov dx, 00cf8h                            ; ba f8 0c
     9181    movzx eax, ax                             ; 66 0f b7 c0
     9182    sal eax, 008h                             ; 66 c1 e0 08
     9183    or eax, strict dword 080000000h           ; 66 0d 00 00 00 80
     9184    db  08ah, 0c3h
     9185    ; mov al, bl                                ; 8a c3
     9186    out DX, eax                               ; 66 ef
     9187    pop bp                                    ; 5d
     9188    pop bx                                    ; 5b
     9189    retn                                      ; c3
     9190pci16_find_device_:                          ; 0xf6879 LB 0xf2
     9191    push si                                   ; 56
     9192    push di                                   ; 57
     9193    enter 0000ch, 000h                        ; c8 0c 00 00
     9194    push ax                                   ; 50
     9195    push dx                                   ; 52
     9196    mov si, bx                                ; 89 de
     9197    mov di, cx                                ; 89 cf
     9198    test cx, cx                               ; 85 c9
     9199    xor bx, bx                                ; 31 db
     9200    mov byte [bp-004h], 000h                  ; c6 46 fc 00
     9201    test bl, 007h                             ; f6 c3 07
     9202    jne short 068bfh                          ; 75 2d
     9203    mov dx, strict word 0000eh                ; ba 0e 00
     9204    mov ax, bx                                ; 89 d8
     9205    call 06858h                               ; e8 be ff
     9206    mov dx, 00cfeh                            ; ba fe 0c
     9207    in AL, DX                                 ; ec
     9208    db  02ah, 0e4h
     9209    ; sub ah, ah                                ; 2a e4
     9210    mov byte [bp-002h], al                    ; 88 46 fe
     9211    cmp AL, strict byte 0ffh                  ; 3c ff
     9212    jne short 068adh                          ; 75 06
     9213    add bx, strict byte 00008h                ; 83 c3 08
     9214    jmp near 06940h                           ; e9 93 00
     9215    test byte [bp-002h], 080h                 ; f6 46 fe 80
     9216    je short 068bah                           ; 74 07
     9217    mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
     9218    jmp short 068bfh                          ; eb 05
     9219    mov word [bp-006h], strict word 00008h    ; c7 46 fa 08 00
     9220    mov al, byte [bp-002h]                    ; 8a 46 fe
     9221    and AL, strict byte 007h                  ; 24 07
     9222    cmp AL, strict byte 001h                  ; 3c 01
     9223    jne short 068e7h                          ; 75 1f
     9224    mov ax, bx                                ; 89 d8
     9225    shr ax, 008h                              ; c1 e8 08
     9226    test ax, ax                               ; 85 c0
     9227    jne short 068e7h                          ; 75 16
     9228    mov dx, strict word 0001ah                ; ba 1a 00
     9229    mov ax, bx                                ; 89 d8
     9230    call 06858h                               ; e8 7f ff
     9231    mov dx, 00cfeh                            ; ba fe 0c
     9232    in AL, DX                                 ; ec
     9233    db  02ah, 0e4h
     9234    ; sub ah, ah                                ; 2a e4
     9235    cmp al, byte [bp-004h]                    ; 3a 46 fc
     9236    jbe short 068e7h                          ; 76 03
     9237    mov byte [bp-004h], al                    ; 88 46 fc
     9238    test di, di                               ; 85 ff
     9239    je short 068f0h                           ; 74 05
     9240    mov dx, strict word 00008h                ; ba 08 00
     9241    jmp short 068f2h                          ; eb 02
     9242    xor dx, dx                                ; 31 d2
     9243    mov ax, bx                                ; 89 d8
     9244    call 06858h                               ; e8 61 ff
     9245    mov dx, 00cfch                            ; ba fc 0c
     9246    in eax, DX                                ; 66 ed
     9247    db  08bh, 0d0h
     9248    ; mov dx, ax                                ; 8b d0
     9249    shr eax, 010h                             ; 66 c1 e8 10
     9250    xchg dx, ax                               ; 92
     9251    mov word [bp-00ah], ax                    ; 89 46 f6
     9252    mov word [bp-008h], dx                    ; 89 56 f8
     9253    mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
     9254    test di, di                               ; 85 ff
     9255    je short 06921h                           ; 74 0f
     9256    mov cx, strict word 00008h                ; b9 08 00
     9257    shr dx, 1                                 ; d1 ea
     9258    rcr ax, 1                                 ; d1 d8
     9259    loop 06915h                               ; e2 fa
     9260    mov word [bp-00ah], ax                    ; 89 46 f6
     9261    mov word [bp-008h], dx                    ; 89 56 f8
     9262    mov ax, word [bp-008h]                    ; 8b 46 f8
     9263    cmp ax, word [bp-010h]                    ; 3b 46 f0
     9264    jne short 06931h                          ; 75 08
     9265    mov ax, word [bp-00ah]                    ; 8b 46 f6
     9266    cmp ax, word [bp-00eh]                    ; 3b 46 f2
     9267    je short 06937h                           ; 74 06
     9268    cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
     9269    je short 0693dh                           ; 74 06
     9270    dec si                                    ; 4e
     9271    cmp si, strict byte 0ffffh                ; 83 fe ff
     9272    je short 0694fh                           ; 74 12
     9273    add bx, word [bp-006h]                    ; 03 5e fa
     9274    mov dx, bx                                ; 89 da
     9275    shr dx, 008h                              ; c1 ea 08
     9276    movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     9277    cmp dx, ax                                ; 39 c2
     9278    jbe near 0688dh                           ; 0f 86 3e ff
     9279    cmp si, strict byte 0ffffh                ; 83 fe ff
     9280    jne short 06958h                          ; 75 04
     9281    mov ax, bx                                ; 89 d8
     9282    jmp short 0695bh                          ; eb 03
     9283    mov ax, strict word 0ffffh                ; b8 ff ff
     9284    leave                                     ; c9
     9285    pop di                                    ; 5f
     9286    pop si                                    ; 5e
     9287    retn                                      ; c3
     9288    inc di                                    ; 47
     9289    push strict byte 00060h                   ; 6a 60
     9290    push strict byte 00072h                   ; 6a 72
     9291    push strict byte 0ff86h                   ; 6a 86
     9292    push strict byte 0ff98h                   ; 6a 98
     9293    push strict byte 0ffaah                   ; 6a aa
     9294    db  06ah
     9295_pci16_function:                             ; 0xf696b LB 0x182
     9296    push bp                                   ; 55
     9297    mov bp, sp                                ; 89 e5
     9298    and word [bp+020h], 000ffh                ; 81 66 20 ff 00
     9299    and word [bp+02ch], strict byte 0fffeh    ; 83 66 2c fe
     9300    mov ax, word [bp+020h]                    ; 8b 46 20
     9301    xor ah, ah                                ; 30 e4
     9302    cmp ax, strict word 00002h                ; 3d 02 00
     9303    jc short 069a1h                           ; 72 20
     9304    mov bx, word [bp+020h]                    ; 8b 5e 20
     9305    xor bh, bh                                ; 30 ff
     9306    cmp ax, strict word 00002h                ; 3d 02 00
     9307    jbe short 069c3h                          ; 76 38
     9308    cmp ax, strict word 00003h                ; 3d 03 00
     9309    jbe short 069f4h                          ; 76 64
     9310    cmp ax, strict word 00008h                ; 3d 08 00
     9311    jc near 06abeh                            ; 0f 82 27 01
     9312    cmp ax, strict word 0000dh                ; 3d 0d 00
     9313    jbe near 06a18h                           ; 0f 86 7a 00
     9314    jmp near 06abeh                           ; e9 1d 01
     9315    cmp ax, strict word 00001h                ; 3d 01 00
     9316    jne near 06abeh                           ; 0f 85 16 01
     9317    mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
     9318    mov word [bp+014h], 00210h                ; c7 46 14 10 02
     9319    mov word [bp+01ch], strict word 00000h    ; c7 46 1c 00 00
     9320    mov word [bp+018h], 04350h                ; c7 46 18 50 43
     9321    mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
     9322    pop bp                                    ; 5d
     9323    retn                                      ; c3
     9324    cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
     9325    jne short 069ceh                          ; 75 05
     9326    or bh, 083h                               ; 80 cf 83
     9327    jmp short 06a22h                          ; eb 54
     9328    mov bx, word [bp+008h]                    ; 8b 5e 08
     9329    mov dx, word [bp+01ch]                    ; 8b 56 1c
     9330    mov ax, word [bp+018h]                    ; 8b 46 18
     9331    xor cx, cx                                ; 31 c9
     9332    call 06879h                               ; e8 9d fe
     9333    cmp ax, strict word 0ffffh                ; 3d ff ff
     9334    jne short 069efh                          ; 75 0e
     9335    mov ax, word [bp+020h]                    ; 8b 46 20
     9336    xor ah, ah                                ; 30 e4
     9337    or ah, 086h                               ; 80 cc 86
     9338    mov word [bp+020h], ax                    ; 89 46 20
     9339    jmp near 06ae7h                           ; e9 f8 00
     9340    mov word [bp+014h], ax                    ; 89 46 14
     9341    pop bp                                    ; 5d
     9342    retn                                      ; c3
     9343    mov bx, word [bp+008h]                    ; 8b 5e 08
     9344    mov ax, word [bp+01ch]                    ; 8b 46 1c
     9345    mov dx, word [bp+01eh]                    ; 8b 56 1e
     9346    mov cx, strict word 00001h                ; b9 01 00
     9347    call 06879h                               ; e8 76 fe
     9348    cmp ax, strict word 0ffffh                ; 3d ff ff
     9349    jne short 06a13h                          ; 75 0b
     9350    mov ax, word [bp+020h]                    ; 8b 46 20
     9351    xor ah, ah                                ; 30 e4
     9352    or ah, 086h                               ; 80 cc 86
     9353    jmp near 06ae4h                           ; e9 d1 00
     9354    mov word [bp+014h], ax                    ; 89 46 14
     9355    pop bp                                    ; 5d
     9356    retn                                      ; c3
     9357    cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
     9358    jc short 06a28h                           ; 72 09
     9359    or bh, 087h                               ; 80 cf 87
     9360    mov word [bp+020h], bx                    ; 89 5e 20
     9361    jmp near 06ae7h                           ; e9 bf 00
     9362    mov dx, word [bp+004h]                    ; 8b 56 04
     9363    mov ax, word [bp+014h]                    ; 8b 46 14
     9364    call 06858h                               ; e8 27 fe
     9365    mov bx, word [bp+020h]                    ; 8b 5e 20
     9366    xor bh, bh                                ; 30 ff
     9367    sub bx, strict byte 00008h                ; 83 eb 08
     9368    cmp bx, strict byte 00005h                ; 83 fb 05
     9369    jnbe near 06aebh                          ; 0f 87 ab 00
     9370    add bx, bx                                ; 01 db
     9371    jmp word [cs:bx+0695fh]                   ; 2e ff a7 5f 69
     9372    mov bx, word [bp+01ch]                    ; 8b 5e 1c
     9373    xor bl, bl                                ; 30 db
     9374    mov dx, word [bp+004h]                    ; 8b 56 04
     9375    and dx, strict byte 00003h                ; 83 e2 03
     9376    add dx, 00cfch                            ; 81 c2 fc 0c
     9377    in AL, DX                                 ; ec
     9378    db  02ah, 0e4h
     9379    ; sub ah, ah                                ; 2a e4
     9380    or bx, ax                                 ; 09 c3
     9381    mov word [bp+01ch], bx                    ; 89 5e 1c
     9382    pop bp                                    ; 5d
     9383    retn                                      ; c3
     9384    mov dx, word [bp+004h]                    ; 8b 56 04
     9385    xor dh, dh                                ; 30 f6
     9386    and dl, 002h                              ; 80 e2 02
     9387    add dx, 00cfch                            ; 81 c2 fc 0c
     9388    in ax, DX                                 ; ed
     9389    mov word [bp+01ch], ax                    ; 89 46 1c
     9390    pop bp                                    ; 5d
     9391    retn                                      ; c3
     9392    mov dx, 00cfch                            ; ba fc 0c
     9393    in eax, DX                                ; 66 ed
     9394    db  08bh, 0d0h
     9395    ; mov dx, ax                                ; 8b d0
     9396    shr eax, 010h                             ; 66 c1 e8 10
     9397    xchg dx, ax                               ; 92
     9398    mov word [bp+01ch], ax                    ; 89 46 1c
     9399    mov word [bp+01eh], dx                    ; 89 56 1e
     9400    pop bp                                    ; 5d
     9401    retn                                      ; c3
     9402    mov ax, word [bp+01ch]                    ; 8b 46 1c
     9403    mov dx, word [bp+004h]                    ; 8b 56 04
     9404    xor dh, dh                                ; 30 f6
     9405    and dl, 003h                              ; 80 e2 03
     9406    add dx, 00cfch                            ; 81 c2 fc 0c
     9407    out DX, AL                                ; ee
     9408    pop bp                                    ; 5d
     9409    retn                                      ; c3
     9410    mov ax, word [bp+01ch]                    ; 8b 46 1c
     9411    mov dx, word [bp+004h]                    ; 8b 56 04
     9412    xor dh, dh                                ; 30 f6
     9413    and dl, 002h                              ; 80 e2 02
     9414    add dx, 00cfch                            ; 81 c2 fc 0c
     9415    out DX, ax                                ; ef
     9416    pop bp                                    ; 5d
     9417    retn                                      ; c3
     9418    mov ax, word [bp+01ch]                    ; 8b 46 1c
     9419    mov cx, word [bp+01eh]                    ; 8b 4e 1e
     9420    mov dx, 00cfch                            ; ba fc 0c
     9421    xchg cx, ax                               ; 91
     9422    sal eax, 010h                             ; 66 c1 e0 10
     9423    db  08bh, 0c1h
     9424    ; mov ax, cx                                ; 8b c1
     9425    out DX, eax                               ; 66 ef
     9426    pop bp                                    ; 5d
     9427    retn                                      ; c3
     9428    mov bx, 00c3ah                            ; bb 3a 0c
     9429    mov cx, ds                                ; 8c d9
     9430    mov ax, strict word 00004h                ; b8 04 00
     9431    call 018aeh                               ; e8 e5 ad
     9432    mov ax, word [bp+014h]                    ; 8b 46 14
     9433    push ax                                   ; 50
     9434    mov ax, word [bp+020h]                    ; 8b 46 20
     9435    push ax                                   ; 50
     9436    push 0086ch                               ; 68 6c 08
     9437    push strict byte 00004h                   ; 6a 04
     9438    call 018e9h                               ; e8 10 ae
     9439    add sp, strict byte 00008h                ; 83 c4 08
     9440    mov ax, word [bp+020h]                    ; 8b 46 20
     9441    xor ah, ah                                ; 30 e4
     9442    or ah, 081h                               ; 80 cc 81
     9443    mov word [bp+020h], ax                    ; 89 46 20
     9444    or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
     9445    pop bp                                    ; 5d
     9446    retn                                      ; c3
     9447send_to_mouse_ctrl_:                         ; 0xf6aed LB 0x31
    91569448    push bx                                   ; 53
    91579449    push dx                                   ; 52
     
    91649456    ; sub ah, ah                                ; 2a e4
    91659457    test AL, strict byte 002h                 ; a8 02
    9166     je short 06877h                           ; 74 0e
    9167     push 0086ch                               ; 68 6c 08
    9168     push 00fd0h                               ; 68 d0 0f
     9458    je short 06b0ch                           ; 74 0e
     9459    push 0089eh                               ; 68 9e 08
     9460    push 01002h                               ; 68 02 10
    91699461    push strict byte 00007h                   ; 6a 07
    9170     call 018e9h                               ; e8 75 b0
     9462    call 018e9h                               ; e8 e0 ad
    91719463    add sp, strict byte 00006h                ; 83 c4 06
    91729464    mov AL, strict byte 0d4h                  ; b0 d4
     
    91819473    pop bx                                    ; 5b
    91829474    retn                                      ; c3
    9183 get_mouse_data_:                             ; 0xf6889 LB 0x38
     9475get_mouse_data_:                             ; 0xf6b1e LB 0x38
    91849476    push bx                                   ; 53
    91859477    push cx                                   ; 51
     
    91959487    and ax, strict word 00021h                ; 25 21 00
    91969488    cmp ax, strict word 00021h                ; 3d 21 00
    9197     je short 068aah                           ; 74 07
     9489    je short 06b3fh                           ; 74 07
    91989490    test cx, cx                               ; 85 c9
    9199     je short 068aah                           ; 74 03
     9491    je short 06b3fh                           ; 74 03
    92009492    dec cx                                    ; 49
    9201     jmp short 06895h                          ; eb eb
     9493    jmp short 06b2ah                          ; eb eb
    92029494    test cx, cx                               ; 85 c9
    9203     jne short 068b2h                          ; 75 04
     9495    jne short 06b47h                          ; 75 04
    92049496    mov AL, strict byte 001h                  ; b0 01
    9205     jmp short 068bdh                          ; eb 0b
     9497    jmp short 06b52h                          ; eb 0b
    92069498    mov dx, strict word 00060h                ; ba 60 00
    92079499    in AL, DX                                 ; ec
     
    92149506    pop bx                                    ; 5b
    92159507    retn                                      ; c3
    9216 set_kbd_command_byte_:                       ; 0xf68c1 LB 0x2f
     9508set_kbd_command_byte_:                       ; 0xf6b56 LB 0x2f
    92179509    push bx                                   ; 53
    92189510    push dx                                   ; 52
     
    92259517    ; sub ah, ah                                ; 2a e4
    92269518    test AL, strict byte 002h                 ; a8 02
    9227     je short 068e0h                           ; 74 0e
    9228     push 00876h                               ; 68 76 08
    9229     push 00fd0h                               ; 68 d0 0f
     9519    je short 06b75h                           ; 74 0e
     9520    push 008a8h                               ; 68 a8 08
     9521    push 01002h                               ; 68 02 10
    92309522    push strict byte 00007h                   ; 6a 07
    9231     call 018e9h                               ; e8 0c b0
     9523    call 018e9h                               ; e8 77 ad
    92329524    add sp, strict byte 00006h                ; 83 c4 06
    92339525    mov AL, strict byte 060h                  ; b0 60
     
    92419533    pop bx                                    ; 5b
    92429534    retn                                      ; c3
    9243 _int74_function:                             ; 0xf68f0 LB 0xc6
     9535_int74_function:                             ; 0xf6b85 LB 0xc6
    92449536    enter 00008h, 000h                        ; c8 08 00 00
    92459537    mov dx, strict word 0000eh                ; ba 0e 00
    92469538    mov ax, strict word 00040h                ; b8 40 00
    9247     call 0161ch                               ; e8 1f ad
     9539    call 0161ch                               ; e8 8a aa
    92489540    mov cx, ax                                ; 89 c1
    92499541    mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
     
    92549546    and AL, strict byte 021h                  ; 24 21
    92559547    cmp AL, strict byte 021h                  ; 3c 21
    9256     jne near 069a4h                           ; 0f 85 92 00
     9548    jne near 06c39h                           ; 0f 85 92 00
    92579549    mov dx, strict word 00060h                ; ba 60 00
    92589550    in AL, DX                                 ; ec
     
    92629554    mov dx, strict word 00026h                ; ba 26 00
    92639555    mov ax, cx                                ; 89 c8
    9264     call 01600h                               ; e8 de ac
     9556    call 01600h                               ; e8 49 aa
    92659557    mov byte [bp-006h], al                    ; 88 46 fa
    92669558    mov dx, strict word 00027h                ; ba 27 00
    92679559    mov ax, cx                                ; 89 c8
    9268     call 01600h                               ; e8 d3 ac
     9560    call 01600h                               ; e8 3e aa
    92699561    mov byte [bp-008h], al                    ; 88 46 f8
    92709562    test AL, strict byte 080h                 ; a8 80
    9271     je short 069a4h                           ; 74 70
     9563    je short 06c39h                           ; 74 70
    92729564    mov al, byte [bp-008h]                    ; 8a 46 f8
    92739565    and AL, strict byte 007h                  ; 24 07
     
    92809572    add dx, strict byte 00028h                ; 83 c2 28
    92819573    mov ax, cx                                ; 89 c8
    9282     call 0160eh                               ; e8 bd ac
     9574    call 0160eh                               ; e8 28 aa
    92839575    mov al, byte [bp-004h]                    ; 8a 46 fc
    92849576    cmp al, byte [bp-002h]                    ; 3a 46 fe
    9285     jc short 06995h                           ; 72 3c
     9577    jc short 06c2ah                           ; 72 3c
    92869578    mov dx, strict word 00028h                ; ba 28 00
    92879579    mov ax, cx                                ; 89 c8
    9288     call 01600h                               ; e8 9f ac
     9580    call 01600h                               ; e8 0a aa
    92899581    xor ah, ah                                ; 30 e4
    92909582    mov word [bp+00ch], ax                    ; 89 46 0c
    92919583    mov dx, strict word 00029h                ; ba 29 00
    92929584    mov ax, cx                                ; 89 c8
    9293     call 01600h                               ; e8 92 ac
     9585    call 01600h                               ; e8 fd a9
    92949586    xor ah, ah                                ; 30 e4
    92959587    mov word [bp+00ah], ax                    ; 89 46 0a
    92969588    mov dx, strict word 0002ah                ; ba 2a 00
    92979589    mov ax, cx                                ; 89 c8
    9298     call 01600h                               ; e8 85 ac
     9590    call 01600h                               ; e8 f0 a9
    92999591    xor ah, ah                                ; 30 e4
    93009592    mov word [bp+008h], ax                    ; 89 46 08
     
    93039595    mov byte [bp-006h], ah                    ; 88 66 fa
    93049596    test byte [bp-008h], 080h                 ; f6 46 f8 80
    9305     je short 06998h                           ; 74 0a
     9597    je short 06c2dh                           ; 74 0a
    93069598    mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
    9307     jmp short 06998h                          ; eb 03
     9599    jmp short 06c2dh                          ; eb 03
    93089600    inc byte [bp-006h]                        ; fe 46 fa
    93099601    movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
    93109602    mov dx, strict word 00026h                ; ba 26 00
    93119603    mov ax, cx                                ; 89 c8
    9312     call 0160eh                               ; e8 6a ac
     9604    call 0160eh                               ; e8 d5 a9
    93139605    leave                                     ; c9
    93149606    retn                                      ; c3
    9315     clc                                       ; f8
    9316     imul bp, word [bp+06ah], 06af1h           ; 69 6e 6a f1 6a
    9317     db  082h, 06bh, 0f0h, 06bh
    9318     ; sub byte [bp+di-010h], 06bh               ; 82 6b f0 6b
    9319     inc sp                                    ; 44
    9320     push strict byte 00018h                   ; 6a 18
     9607    lea bp, [si+003h]                         ; 8d 6c 03
     9608    insw                                      ; 6d
     9609    xchg byte [di+017h], ch                   ; 86 6d 17
     9610    outsb                                     ; 6e
     9611    test word [bp-027h], bp                   ; 85 6e d9
    93219612    insb                                      ; 6c
    9322     db  0ddh
    9323     insb                                      ; 6c
    9324 _int15_function_mouse:                       ; 0xf69b6 LB 0x386
     9613    lodsw                                     ; ad
     9614    outsb                                     ; 6e
     9615    jc short 06cbah                           ; 72 6f
     9616_int15_function_mouse:                       ; 0xf6c4b LB 0x386
    93259617    push si                                   ; 56
    93269618    enter 00006h, 000h                        ; c8 06 00 00
    93279619    mov dx, strict word 0000eh                ; ba 0e 00
    93289620    mov ax, strict word 00040h                ; b8 40 00
    9329     call 0161ch                               ; e8 58 ac
     9621    call 0161ch                               ; e8 c3 a9
    93309622    mov cx, ax                                ; 89 c1
    93319623    cmp byte [bp+014h], 007h                  ; 80 7e 14 07
    9332     jbe short 069d7h                          ; 76 0b
     9624    jbe short 06c6ch                          ; 76 0b
    93339625    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    93349626    mov byte [bp+015h], 001h                  ; c6 46 15 01
     
    93379629    retn                                      ; c3
    93389630    mov ax, strict word 00065h                ; b8 65 00
    9339     call 068c1h                               ; e8 e4 fe
     9631    call 06b56h                               ; e8 e4 fe
    93409632    and word [bp+01ah], strict byte 0fffeh    ; 83 66 1a fe
    93419633    mov byte [bp+015h], 000h                  ; c6 46 15 00
    93429634    mov al, byte [bp+014h]                    ; 8a 46 14
    93439635    cmp AL, strict byte 007h                  ; 3c 07
    9344     jnbe near 06d20h                          ; 0f 87 32 03
     9636    jnbe near 06fb5h                          ; 0f 87 32 03
    93459637    movzx si, al                              ; 0f b6 f0
    93469638    add si, si                                ; 01 f6
    9347     jmp word [cs:si+069a6h]                   ; 2e ff a4 a6 69
     9639    jmp word [cs:si+06c3bh]                   ; 2e ff a4 3b 6c
    93489640    cmp byte [bp+00fh], 001h                  ; 80 7e 0f 01
    9349     jnbe near 06d2bh                          ; 0f 87 2b 03
     9641    jnbe near 06fc0h                          ; 0f 87 2b 03
    93509642    mov dx, strict word 00027h                ; ba 27 00
    93519643    mov ax, cx                                ; 89 c8
    9352     call 01600h                               ; e8 f8 ab
     9644    call 01600h                               ; e8 63 a9
    93539645    test AL, strict byte 080h                 ; a8 80
    9354     jne short 06a17h                          ; 75 0b
     9646    jne short 06cach                          ; 75 0b
    93559647    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    93569648    mov byte [bp+015h], 005h                  ; c6 46 15 05
    9357     jmp near 06d33h                           ; e9 1c 03
     9649    jmp near 06fc8h                           ; e9 1c 03
    93589650    cmp byte [bp+00fh], 000h                  ; 80 7e 0f 00
    93599651    db  00fh, 094h, 0c0h
     
    93619653    add AL, strict byte 0f4h                  ; 04 f4
    93629654    xor ah, ah                                ; 30 e4
    9363     call 06858h                               ; e8 33 fe
     9655    call 06aedh                               ; e8 33 fe
    93649656    test al, al                               ; 84 c0
    9365     jne near 06cb9h                           ; 0f 85 8e 02
     9657    jne near 06f4eh                           ; 0f 85 8e 02
    93669658    mov dx, ss                                ; 8c d2
    93679659    lea ax, [bp-006h]                         ; 8d 46 fa
    9368     call 06889h                               ; e8 56 fe
     9660    call 06b1eh                               ; e8 56 fe
    93699661    test al, al                               ; 84 c0
    9370     je near 06d33h                            ; 0f 84 fa 02
     9662    je near 06fc8h                            ; 0f 84 fa 02
    93719663    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9372     jne near 06cb9h                           ; 0f 85 78 02
    9373     jmp near 06d33h                           ; e9 ef 02
     9664    jne near 06f4eh                           ; 0f 85 78 02
     9665    jmp near 06fc8h                           ; e9 ef 02
    93749666    mov al, byte [bp+00fh]                    ; 8a 46 0f
    93759667    cmp AL, strict byte 001h                  ; 3c 01
    9376     jc short 06a4fh                           ; 72 04
     9668    jc short 06ce4h                           ; 72 04
    93779669    cmp AL, strict byte 008h                  ; 3c 08
    9378     jbe short 06a52h                          ; 76 03
    9379     jmp near 06be5h                           ; e9 93 01
     9670    jbe short 06ce7h                          ; 76 03
     9671    jmp near 06e7ah                           ; e9 93 01
    93809672    mov dx, strict word 00027h                ; ba 27 00
    93819673    mov ax, cx                                ; 89 c8
    9382     call 01600h                               ; e8 a6 ab
     9674    call 01600h                               ; e8 11 a9
    93839675    mov ah, byte [bp+00fh]                    ; 8a 66 0f
    93849676    db  0feh, 0cch
     
    93899681    mov dx, strict word 00027h                ; ba 27 00
    93909682    mov ax, cx                                ; 89 c8
    9391     call 0160eh                               ; e8 a0 ab
     9683    call 0160eh                               ; e8 0b a9
    93929684    mov dx, strict word 00026h                ; ba 26 00
    93939685    mov ax, cx                                ; 89 c8
    9394     call 01600h                               ; e8 8a ab
     9686    call 01600h                               ; e8 f5 a8
    93959687    and AL, strict byte 0f8h                  ; 24 f8
    93969688    movzx bx, al                              ; 0f b6 d8
    93979689    mov dx, strict word 00026h                ; ba 26 00
    93989690    mov ax, cx                                ; 89 c8
    9399     call 0160eh                               ; e8 8b ab
     9691    call 0160eh                               ; e8 f6 a8
    94009692    mov ax, 000ffh                            ; b8 ff 00
    9401     call 06858h                               ; e8 cf fd
     9693    call 06aedh                               ; e8 cf fd
    94029694    test al, al                               ; 84 c0
    9403     jne near 06cb9h                           ; 0f 85 2a 02
     9695    jne near 06f4eh                           ; 0f 85 2a 02
    94049696    mov dx, ss                                ; 8c d2
    94059697    lea ax, [bp-002h]                         ; 8d 46 fe
    9406     call 06889h                               ; e8 f2 fd
     9698    call 06b1eh                               ; e8 f2 fd
    94079699    mov cl, al                                ; 88 c1
    94089700    cmp byte [bp-002h], 0feh                  ; 80 7e fe fe
    9409     jne short 06aaah                          ; 75 0b
     9701    jne short 06d3fh                          ; 75 0b
    94109702    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    94119703    mov byte [bp+015h], 004h                  ; c6 46 15 04
    9412     jmp near 06d33h                           ; e9 89 02
     9704    jmp near 06fc8h                           ; e9 89 02
    94139705    cmp byte [bp-002h], 0fah                  ; 80 7e fe fa
    9414     je short 06ac0h                           ; 74 10
     9706    je short 06d55h                           ; 74 10
    94159707    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    94169708    push ax                                   ; 50
    9417     push 00881h                               ; 68 81 08
     9709    push 008b3h                               ; 68 b3 08
    94189710    push strict byte 00007h                   ; 6a 07
    9419     call 018e9h                               ; e8 2c ae
     9711    call 018e9h                               ; e8 97 ab
    94209712    add sp, strict byte 00006h                ; 83 c4 06
    94219713    test cl, cl                               ; 84 c9
    9422     jne near 06cb9h                           ; 0f 85 f3 01
     9714    jne near 06f4eh                           ; 0f 85 f3 01
    94239715    mov dx, ss                                ; 8c d2
    94249716    lea ax, [bp-006h]                         ; 8d 46 fa
    9425     call 06889h                               ; e8 bb fd
     9717    call 06b1eh                               ; e8 bb fd
    94269718    test al, al                               ; 84 c0
    9427     jne near 06cb9h                           ; 0f 85 e5 01
     9719    jne near 06f4eh                           ; 0f 85 e5 01
    94289720    mov dx, ss                                ; 8c d2
    94299721    lea ax, [bp-004h]                         ; 8d 46 fc
    9430     call 06889h                               ; e8 ad fd
     9722    call 06b1eh                               ; e8 ad fd
    94319723    test al, al                               ; 84 c0
    9432     jne near 06cb9h                           ; 0f 85 d7 01
     9724    jne near 06f4eh                           ; 0f 85 d7 01
    94339725    mov al, byte [bp-006h]                    ; 8a 46 fa
    94349726    mov byte [bp+00eh], al                    ; 88 46 0e
    94359727    mov al, byte [bp-004h]                    ; 8a 46 fc
    94369728    mov byte [bp+00fh], al                    ; 88 46 0f
    9437     jmp near 06d33h                           ; e9 42 02
     9729    jmp near 06fc8h                           ; e9 42 02
    94389730    mov al, byte [bp+00fh]                    ; 8a 46 0f
    94399731    cmp AL, strict byte 003h                  ; 3c 03
    9440     jc short 06b08h                           ; 72 10
    9441     jbe short 06b26h                          ; 76 2c
     9732    jc short 06d9dh                           ; 72 10
     9733    jbe short 06dbbh                          ; 76 2c
    94429734    cmp AL, strict byte 006h                  ; 3c 06
    9443     je short 06b38h                           ; 74 3a
     9735    je short 06dcdh                           ; 74 3a
    94449736    cmp AL, strict byte 005h                  ; 3c 05
    9445     je short 06b32h                           ; 74 30
     9737    je short 06dc7h                           ; 74 30
    94469738    cmp AL, strict byte 004h                  ; 3c 04
    9447     je short 06b2ch                           ; 74 26
    9448     jmp short 06b3eh                          ; eb 36
     9739    je short 06dc1h                           ; 74 26
     9740    jmp short 06dd3h                          ; eb 36
    94499741    cmp AL, strict byte 002h                  ; 3c 02
    9450     je short 06b20h                           ; 74 14
     9742    je short 06db5h                           ; 74 14
    94519743    cmp AL, strict byte 001h                  ; 3c 01
    9452     je short 06b1ah                           ; 74 0a
     9744    je short 06dafh                           ; 74 0a
    94539745    test al, al                               ; 84 c0
    9454     jne short 06b3eh                          ; 75 2a
     9746    jne short 06dd3h                          ; 75 2a
    94559747    mov byte [bp-006h], 00ah                  ; c6 46 fa 0a
    9456     jmp short 06b42h                          ; eb 28
     9748    jmp short 06dd7h                          ; eb 28
    94579749    mov byte [bp-006h], 014h                  ; c6 46 fa 14
    9458     jmp short 06b42h                          ; eb 22
     9750    jmp short 06dd7h                          ; eb 22
    94599751    mov byte [bp-006h], 028h                  ; c6 46 fa 28
    9460     jmp short 06b42h                          ; eb 1c
     9752    jmp short 06dd7h                          ; eb 1c
    94619753    mov byte [bp-006h], 03ch                  ; c6 46 fa 3c
    9462     jmp short 06b42h                          ; eb 16
     9754    jmp short 06dd7h                          ; eb 16
    94639755    mov byte [bp-006h], 050h                  ; c6 46 fa 50
    9464     jmp short 06b42h                          ; eb 10
     9756    jmp short 06dd7h                          ; eb 10
    94659757    mov byte [bp-006h], 064h                  ; c6 46 fa 64
    9466     jmp short 06b42h                          ; eb 0a
     9758    jmp short 06dd7h                          ; eb 0a
    94679759    mov byte [bp-006h], 0c8h                  ; c6 46 fa c8
    9468     jmp short 06b42h                          ; eb 04
     9760    jmp short 06dd7h                          ; eb 04
    94699761    mov byte [bp-006h], 000h                  ; c6 46 fa 00
    94709762    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    9471     jbe short 06b77h                          ; 76 2f
     9763    jbe short 06e0ch                          ; 76 2f
    94729764    mov ax, 000f3h                            ; b8 f3 00
    9473     call 06858h                               ; e8 0a fd
     9765    call 06aedh                               ; e8 0a fd
    94749766    test al, al                               ; 84 c0
    9475     jne short 06b6ch                          ; 75 1a
     9767    jne short 06e01h                          ; 75 1a
    94769768    mov dx, ss                                ; 8c d2
    94779769    lea ax, [bp-004h]                         ; 8d 46 fc
    9478     call 06889h                               ; e8 2f fd
     9770    call 06b1eh                               ; e8 2f fd
    94799771    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    9480     call 06858h                               ; e8 f7 fc
     9772    call 06aedh                               ; e8 f7 fc
    94819773    mov dx, ss                                ; 8c d2
    94829774    lea ax, [bp-004h]                         ; 8d 46 fc
    9483     call 06889h                               ; e8 20 fd
    9484     jmp near 06d33h                           ; e9 c7 01
     9775    call 06b1eh                               ; e8 20 fd
     9776    jmp near 06fc8h                           ; e9 c7 01
    94859777    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    94869778    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9487     jmp near 06d33h                           ; e9 bc 01
     9779    jmp near 06fc8h                           ; e9 bc 01
    94889780    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    94899781    mov byte [bp+015h], 002h                  ; c6 46 15 02
    9490     jmp near 06d33h                           ; e9 b1 01
     9782    jmp near 06fc8h                           ; e9 b1 01
    94919783    cmp byte [bp+00fh], 004h                  ; 80 7e 0f 04
    9492     jnc short 06be5h                          ; 73 5d
     9784    jnc short 06e7ah                          ; 73 5d
    94939785    mov ax, 000e8h                            ; b8 e8 00
    9494     call 06858h                               ; e8 ca fc
     9786    call 06aedh                               ; e8 ca fc
    94959787    test al, al                               ; 84 c0
    9496     jne short 06bdah                          ; 75 48
     9788    jne short 06e6fh                          ; 75 48
    94979789    mov dx, ss                                ; 8c d2
    94989790    lea ax, [bp-006h]                         ; 8d 46 fa
    9499     call 06889h                               ; e8 ef fc
     9791    call 06b1eh                               ; e8 ef fc
    95009792    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9501     je short 06bb0h                           ; 74 10
     9793    je short 06e45h                           ; 74 10
    95029794    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    95039795    push ax                                   ; 50
    9504     push 008ach                               ; 68 ac 08
     9796    push 008deh                               ; 68 de 08
    95059797    push strict byte 00007h                   ; 6a 07
    9506     call 018e9h                               ; e8 3c ad
     9798    call 018e9h                               ; e8 a7 aa
    95079799    add sp, strict byte 00006h                ; 83 c4 06
    95089800    movzx ax, byte [bp+00fh]                  ; 0f b6 46 0f
    9509     call 06858h                               ; e8 a1 fc
     9801    call 06aedh                               ; e8 a1 fc
    95109802    mov dx, ss                                ; 8c d2
    95119803    lea ax, [bp-006h]                         ; 8d 46 fa
    9512     call 06889h                               ; e8 ca fc
     9804    call 06b1eh                               ; e8 ca fc
    95139805    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9514     je near 06d33h                            ; 0f 84 6c 01
     9806    je near 06fc8h                            ; 0f 84 6c 01
    95159807    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    95169808    push ax                                   ; 50
    9517     push 008ach                               ; 68 ac 08
     9809    push 008deh                               ; 68 de 08
    95189810    push strict byte 00007h                   ; 6a 07
    9519     call 018e9h                               ; e8 15 ad
     9811    call 018e9h                               ; e8 80 aa
    95209812    add sp, strict byte 00006h                ; 83 c4 06
    9521     jmp near 06d33h                           ; e9 59 01
     9813    jmp near 06fc8h                           ; e9 59 01
    95229814    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95239815    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9524     jmp near 06d33h                           ; e9 4e 01
     9816    jmp near 06fc8h                           ; e9 4e 01
    95259817    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95269818    mov byte [bp+015h], 002h                  ; c6 46 15 02
    9527     jmp near 06d33h                           ; e9 43 01
     9819    jmp near 06fc8h                           ; e9 43 01
    95289820    mov ax, 000f2h                            ; b8 f2 00
    9529     call 06858h                               ; e8 62 fc
     9821    call 06aedh                               ; e8 62 fc
    95309822    test al, al                               ; 84 c0
    9531     jne short 06c0dh                          ; 75 13
     9823    jne short 06ea2h                          ; 75 13
    95329824    mov dx, ss                                ; 8c d2
    95339825    lea ax, [bp-006h]                         ; 8d 46 fa
    9534     call 06889h                               ; e8 87 fc
     9826    call 06b1eh                               ; e8 87 fc
    95359827    mov dx, ss                                ; 8c d2
    95369828    lea ax, [bp-004h]                         ; 8d 46 fc
    9537     call 06889h                               ; e8 7f fc
    9538     jmp near 06ae8h                           ; e9 db fe
     9829    call 06b1eh                               ; e8 7f fc
     9830    jmp near 06d7dh                           ; e9 db fe
    95399831    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    95409832    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9541     jmp near 06d33h                           ; e9 1b 01
     9833    jmp near 06fc8h                           ; e9 1b 01
    95429834    mov al, byte [bp+00fh]                    ; 8a 46 0f
    95439835    test al, al                               ; 84 c0
    9544     jbe short 06c26h                          ; 76 07
     9836    jbe short 06ebbh                          ; 76 07
    95459837    cmp AL, strict byte 002h                  ; 3c 02
    9546     jbe short 06c8fh                          ; 76 6c
    9547     jmp near 06cc3h                           ; e9 9d 00
     9838    jbe short 06f24h                          ; 76 6c
     9839    jmp near 06f58h                           ; e9 9d 00
    95489840    mov ax, 000e9h                            ; b8 e9 00
    9549     call 06858h                               ; e8 2c fc
     9841    call 06aedh                               ; e8 2c fc
    95509842    test al, al                               ; 84 c0
    9551     jne near 06cb9h                           ; 0f 85 87 00
     9843    jne near 06f4eh                           ; 0f 85 87 00
    95529844    mov dx, ss                                ; 8c d2
    95539845    lea ax, [bp-006h]                         ; 8d 46 fa
    9554     call 06889h                               ; e8 4f fc
     9846    call 06b1eh                               ; e8 4f fc
    95559847    mov cl, al                                ; 88 c1
    95569848    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    9557     je short 06c52h                           ; 74 10
     9849    je short 06ee7h                           ; 74 10
    95589850    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    95599851    push ax                                   ; 50
    9560     push 008ach                               ; 68 ac 08
     9852    push 008deh                               ; 68 de 08
    95619853    push strict byte 00007h                   ; 6a 07
    9562     call 018e9h                               ; e8 9a ac
     9854    call 018e9h                               ; e8 05 aa
    95639855    add sp, strict byte 00006h                ; 83 c4 06
    95649856    test cl, cl                               ; 84 c9
    9565     jne short 06cb9h                          ; 75 63
     9857    jne short 06f4eh                          ; 75 63
    95669858    mov dx, ss                                ; 8c d2
    95679859    lea ax, [bp-006h]                         ; 8d 46 fa
    9568     call 06889h                               ; e8 2b fc
     9860    call 06b1eh                               ; e8 2b fc
    95699861    test al, al                               ; 84 c0
    9570     jne short 06cb9h                          ; 75 57
     9862    jne short 06f4eh                          ; 75 57
    95719863    mov dx, ss                                ; 8c d2
    95729864    lea ax, [bp-004h]                         ; 8d 46 fc
    9573     call 06889h                               ; e8 1f fc
     9865    call 06b1eh                               ; e8 1f fc
    95749866    test al, al                               ; 84 c0
    9575     jne short 06cb9h                          ; 75 4b
     9867    jne short 06f4eh                          ; 75 4b
    95769868    mov dx, ss                                ; 8c d2
    95779869    lea ax, [bp-002h]                         ; 8d 46 fe
    9578     call 06889h                               ; e8 13 fc
     9870    call 06b1eh                               ; e8 13 fc
    95799871    test al, al                               ; 84 c0
    9580     jne short 06cb9h                          ; 75 3f
     9872    jne short 06f4eh                          ; 75 3f
    95819873    mov al, byte [bp-006h]                    ; 8a 46 fa
    95829874    mov byte [bp+00eh], al                    ; 88 46 0e
     
    95859877    mov al, byte [bp-002h]                    ; 8a 46 fe
    95869878    mov byte [bp+010h], al                    ; 88 46 10
    9587     jmp near 06d33h                           ; e9 a4 00
     9879    jmp near 06fc8h                           ; e9 a4 00
    95889880    cmp AL, strict byte 001h                  ; 3c 01
    9589     jne short 06c98h                          ; 75 05
     9881    jne short 06f2dh                          ; 75 05
    95909882    mov ax, 000e6h                            ; b8 e6 00
    9591     jmp short 06c9bh                          ; eb 03
     9883    jmp short 06f30h                          ; eb 03
    95929884    mov ax, 000e7h                            ; b8 e7 00
    9593     call 06858h                               ; e8 ba fb
     9885    call 06aedh                               ; e8 ba fb
    95949886    mov cl, al                                ; 88 c1
    95959887    test cl, cl                               ; 84 c9
    9596     jne short 06cb3h                          ; 75 0f
     9888    jne short 06f48h                          ; 75 0f
    95979889    mov dx, ss                                ; 8c d2
    95989890    lea ax, [bp-006h]                         ; 8d 46 fa
    9599     call 06889h                               ; e8 dd fb
     9891    call 06b1eh                               ; e8 dd fb
    96009892    cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
    96019893    db  00fh, 095h, 0c1h
    96029894    ; setne cl                                  ; 0f 95 c1
    96039895    test cl, cl                               ; 84 c9
    9604     je near 06d33h                            ; 0f 84 7a 00
     9896    je near 06fc8h                            ; 0f 84 7a 00
    96059897    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    96069898    mov byte [bp+015h], 003h                  ; c6 46 15 03
    9607     jmp short 06d33h                          ; eb 70
     9899    jmp short 06fc8h                          ; eb 70
    96089900    movzx ax, byte [bp+00fh]                  ; 0f b6 46 0f
    96099901    push ax                                   ; 50
    9610     push 008d8h                               ; 68 d8 08
     9902    push 0090ah                               ; 68 0a 09
    96119903    push strict byte 00007h                   ; 6a 07
    9612     call 018e9h                               ; e8 19 ac
     9904    call 018e9h                               ; e8 84 a9
    96139905    add sp, strict byte 00006h                ; 83 c4 06
    96149906    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    96159907    mov byte [bp+015h], 001h                  ; c6 46 15 01
    9616     jmp short 06d33h                          ; eb 56
     9908    jmp short 06fc8h                          ; eb 56
    96179909    mov si, word [bp+00eh]                    ; 8b 76 0e
    96189910    mov bx, si                                ; 89 f3
    96199911    mov dx, strict word 00022h                ; ba 22 00
    96209912    mov ax, cx                                ; 89 c8
    9621     call 0162ah                               ; e8 40 a9
     9913    call 0162ah                               ; e8 ab a6
    96229914    mov bx, word [bp+016h]                    ; 8b 5e 16
    96239915    mov dx, strict word 00024h                ; ba 24 00
    96249916    mov ax, cx                                ; 89 c8
    9625     call 0162ah                               ; e8 35 a9
     9917    call 0162ah                               ; e8 a0 a6
    96269918    mov dx, strict word 00027h                ; ba 27 00
    96279919    mov ax, cx                                ; 89 c8
    9628     call 01600h                               ; e8 03 a9
     9920    call 01600h                               ; e8 6e a6
    96299921    mov ah, al                                ; 88 c4
    96309922    test si, si                               ; 85 f6
    9631     jne short 06d11h                          ; 75 0e
     9923    jne short 06fa6h                          ; 75 0e
    96329924    cmp word [bp+016h], strict byte 00000h    ; 83 7e 16 00
    9633     jne short 06d11h                          ; 75 08
     9925    jne short 06fa6h                          ; 75 08
    96349926    test AL, strict byte 080h                 ; a8 80
    9635     je short 06d13h                           ; 74 06
     9927    je short 06fa8h                           ; 74 06
    96369928    and AL, strict byte 07fh                  ; 24 7f
    9637     jmp short 06d13h                          ; eb 02
     9929    jmp short 06fa8h                          ; eb 02
    96389930    or AL, strict byte 080h                   ; 0c 80
    96399931    movzx bx, al                              ; 0f b6 d8
    96409932    mov dx, strict word 00027h                ; ba 27 00
    96419933    mov ax, cx                                ; 89 c8
    9642     call 0160eh                               ; e8 f0 a8
    9643     jmp short 06d33h                          ; eb 13
    9644     push 008f2h                               ; 68 f2 08
     9934    call 0160eh                               ; e8 5b a6
     9935    jmp short 06fc8h                          ; eb 13
     9936    push 00924h                               ; 68 24 09
    96459937    push strict byte 00007h                   ; 6a 07
    9646     call 018e9h                               ; e8 c1 ab
     9938    call 018e9h                               ; e8 2c a9
    96479939    add sp, strict byte 00004h                ; 83 c4 04
    96489940    or word [bp+01ah], strict byte 00001h     ; 83 4e 1a 01
    96499941    mov byte [bp+015h], 001h                  ; c6 46 15 01
    96509942    mov ax, strict word 00047h                ; b8 47 00
    9651     call 068c1h                               ; e8 88 fb
     9943    call 06b56h                               ; e8 88 fb
    96529944    leave                                     ; c9
    96539945    pop si                                    ; 5e
    96549946    retn                                      ; c3
    9655 _int17_function:                             ; 0xf6d3c LB 0xb1
     9947_int17_function:                             ; 0xf6fd1 LB 0xb1
    96569948    push si                                   ; 56
    96579949    enter 00002h, 000h                        ; c8 02 00 00
     
    96619953    add dx, strict byte 00008h                ; 83 c2 08
    96629954    mov ax, strict word 00040h                ; b8 40 00
    9663     call 0161ch                               ; e8 cc a8
     9955    call 0161ch                               ; e8 37 a6
    96649956    mov bx, ax                                ; 89 c3
    96659957    mov si, ax                                ; 89 c6
    96669958    cmp byte [bp+015h], 003h                  ; 80 7e 15 03
    9667     jnc near 06de6h                           ; 0f 83 8a 00
     9959    jnc near 0707bh                           ; 0f 83 8a 00
    96689960    mov ax, word [bp+010h]                    ; 8b 46 10
    96699961    cmp ax, strict word 00003h                ; 3d 03 00
    9670     jnc near 06de6h                           ; 0f 83 80 00
     9962    jnc near 0707bh                           ; 0f 83 80 00
    96719963    test bx, bx                               ; 85 db
    9672     jbe near 06de6h                           ; 0f 86 7a 00
     9964    jbe near 0707bh                           ; 0f 86 7a 00
    96739965    mov dx, ax                                ; 89 c2
    96749966    add dx, strict byte 00078h                ; 83 c2 78
    96759967    mov ax, strict word 00040h                ; b8 40 00
    9676     call 01600h                               ; e8 89 a8
     9968    call 01600h                               ; e8 f4 a5
    96779969    movzx cx, al                              ; 0f b6 c8
    96789970    sal cx, 008h                              ; c1 e1 08
    96799971    cmp byte [bp+015h], 000h                  ; 80 7e 15 00
    9680     jne short 06db0h                          ; 75 2d
     9972    jne short 07045h                          ; 75 2d
    96819973    mov al, byte [bp+014h]                    ; 8a 46 14
    96829974    mov dx, bx                                ; 89 da
     
    96989990    ; sub ah, ah                                ; 2a e4
    96999991    test AL, strict byte 040h                 ; a8 40
    9700     je short 06db0h                           ; 74 07
     9992    je short 07045h                           ; 74 07
    97019993    test cx, cx                               ; 85 c9
    9702     je short 06db0h                           ; 74 03
     9994    je short 07045h                           ; 74 03
    97039995    dec cx                                    ; 49
    9704     jmp short 06d9fh                          ; eb ef
     9996    jmp short 07034h                          ; eb ef
    97059997    cmp byte [bp+015h], 001h                  ; 80 7e 15 01
    9706     jne short 06dcch                          ; 75 16
     9998    jne short 07061h                          ; 75 16
    97079999    lea dx, [si+002h]                         ; 8d 54 02
    970810000    in AL, DX                                 ; ec
     
    972310015    mov byte [bp+015h], al                    ; 88 46 15
    972410016    test cx, cx                               ; 85 c9
    9725     jne short 06ddfh                          ; 75 04
     10017    jne short 07074h                          ; 75 04
    972610018    or byte [bp+015h], 001h                   ; 80 4e 15 01
    972710019    and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     
    973310025    pop si                                    ; 5e
    973410026    retn                                      ; c3
    9735 wait_:                                       ; 0xf6ded LB 0xad
     10027wait_:                                       ; 0xf7082 LB 0xad
    973610028    push bx                                   ; 53
    973710029    push cx                                   ; 51
     
    974910041    mov dx, 0046ch                            ; ba 6c 04
    975010042    xor ax, ax                                ; 31 c0
    9751     call 01638h                               ; e8 2a a8
     10043    call 01638h                               ; e8 95 a5
    975210044    mov word [bp-006h], ax                    ; 89 46 fa
    975310045    mov bx, dx                                ; 89 d3
     
    975510047    mov dx, 0046ch                            ; ba 6c 04
    975610048    xor ax, ax                                ; 31 c0
    9757     call 01638h                               ; e8 1c a8
     10049    call 01638h                               ; e8 87 a5
    975810050    mov word [bp-00ah], ax                    ; 89 46 f6
    975910051    mov di, dx                                ; 89 d7
    976010052    cmp dx, bx                                ; 39 da
    9761     jnbe short 06e2ch                         ; 77 07
    9762     jne short 06e33h                          ; 75 0c
     10053    jnbe short 070c1h                         ; 77 07
     10054    jne short 070c8h                          ; 75 0c
    976310055    cmp ax, word [bp-006h]                    ; 3b 46 fa
    9764     jbe short 06e33h                          ; 76 07
     10056    jbe short 070c8h                          ; 76 07
    976510057    sub ax, word [bp-006h]                    ; 2b 46 fa
    976610058    sbb dx, bx                                ; 19 da
    9767     jmp short 06e3eh                          ; eb 0b
     10059    jmp short 070d3h                          ; eb 0b
    976810060    cmp dx, bx                                ; 39 da
    9769     jc short 06e3eh                           ; 72 07
    9770     jne short 06e42h                          ; 75 09
     10061    jc short 070d3h                           ; 72 07
     10062    jne short 070d7h                          ; 75 09
    977110063    cmp ax, word [bp-006h]                    ; 3b 46 fa
    9772     jnc short 06e42h                          ; 73 04
     10064    jnc short 070d7h                          ; 73 04
    977310065    sub si, ax                                ; 29 c6
    977410066    sbb cx, dx                                ; 19 d1
     
    977810070    mov ax, 00100h                            ; b8 00 01
    977910071    int 016h                                  ; cd 16
    9780     je near 06e58h                            ; 0f 84 05 00
     10072    je near 070edh                            ; 0f 84 05 00
    978110073    mov AL, strict byte 001h                  ; b0 01
    9782     jmp near 06e5ah                           ; e9 02 00
     10074    jmp near 070efh                           ; e9 02 00
    978310075    db  032h, 0c0h
    978410076    ; xor al, al                                ; 32 c0
    978510077    test al, al                               ; 84 c0
    9786     je short 06e82h                           ; 74 24
     10078    je short 07117h                           ; 74 24
    978710079    db  033h, 0c0h
    978810080    ; xor ax, ax                                ; 33 c0
     
    979310085    movzx ax, dl                              ; 0f b6 c2
    979410086    push ax                                   ; 50
    9795     push 00914h                               ; 68 14 09
     10087    push 00946h                               ; 68 46 09
    979610088    push strict byte 00004h                   ; 6a 04
    9797     call 018e9h                               ; e8 74 aa
     10089    call 018e9h                               ; e8 df a7
    979810090    add sp, strict byte 00006h                ; 83 c4 06
    979910091    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    9800     je short 06e82h                           ; 74 04
     10092    je short 07117h                           ; 74 04
    980110093    mov al, dl                                ; 88 d0
    9802     jmp short 06e94h                          ; eb 12
     10094    jmp short 07129h                          ; eb 12
    980310095    test cx, cx                               ; 85 c9
    9804     jnle short 06e13h                         ; 7f 8d
    9805     jne short 06e8ch                          ; 75 04
     10096    jnle short 070a8h                         ; 7f 8d
     10097    jne short 07121h                          ; 75 04
    980610098    test si, si                               ; 85 f6
    9807     jnbe short 06e13h                         ; 77 87
     10099    jnbe short 070a8h                         ; 77 87
    980810100    mov ax, word [bp-008h]                    ; 8b 46 f8
    980910101    push ax                                   ; 50
     
    981610108    pop bx                                    ; 5b
    981710109    retn                                      ; c3
    9818 read_logo_byte_:                             ; 0xf6e9a LB 0x13
     10110read_logo_byte_:                             ; 0xf712f LB 0x13
    981910111    push dx                                   ; 52
    982010112    push bp                                   ; 55
     
    983010122    pop dx                                    ; 5a
    983110123    retn                                      ; c3
    9832 read_logo_word_:                             ; 0xf6ead LB 0x11
     10124read_logo_word_:                             ; 0xf7142 LB 0x11
    983310125    push dx                                   ; 52
    983410126    push bp                                   ; 55
     
    984210134    pop dx                                    ; 5a
    984310135    retn                                      ; c3
    9844 print_detected_harddisks_:                   ; 0xf6ebe LB 0x12c
     10136print_detected_harddisks_:                   ; 0xf7153 LB 0x12c
    984510137    push bx                                   ; 53
    984610138    push cx                                   ; 51
     
    985110143    mov dx, strict word 0000eh                ; ba 0e 00
    985210144    mov ax, strict word 00040h                ; b8 40 00
    9853     call 0161ch                               ; e8 4c a7
     10145    call 0161ch                               ; e8 b7 a4
    985410146    mov si, ax                                ; 89 c6
    985510147    mov byte [bp-002h], 000h                  ; c6 46 fe 00
     
    985710149    xor ch, ch                                ; 30 ed
    985810150    mov dx, 002c0h                            ; ba c0 02
    9859     call 01600h                               ; e8 20 a7
     10151    call 01600h                               ; e8 8b a4
    986010152    mov byte [bp-004h], al                    ; 88 46 fc
    986110153    xor bl, bl                                ; 30 db
    986210154    cmp bl, byte [bp-004h]                    ; 3a 5e fc
    9863     jnc near 06fbfh                           ; 0f 83 d3 00
     10155    jnc near 07254h                           ; 0f 83 d3 00
    986410156    movzx dx, bl                              ; 0f b6 d3
    986510157    add dx, 002c1h                            ; 81 c2 c1 02
    986610158    mov ax, si                                ; 89 f0
    9867     call 01600h                               ; e8 08 a7
     10159    call 01600h                               ; e8 73 a4
    986810160    mov bh, al                                ; 88 c7
    986910161    cmp AL, strict byte 00ch                  ; 3c 0c
    9870     jc short 06f22h                           ; 72 24
     10162    jc short 071b7h                           ; 72 24
    987110163    test cl, cl                               ; 84 c9
    9872     jne short 06f0fh                          ; 75 0d
    9873     push 00925h                               ; 68 25 09
     10164    jne short 071a4h                          ; 75 0d
     10165    push 00957h                               ; 68 57 09
    987410166    push strict byte 00002h                   ; 6a 02
    9875     call 018e9h                               ; e8 df a9
     10167    call 018e9h                               ; e8 4a a7
    987610168    add sp, strict byte 00004h                ; 83 c4 04
    987710169    mov CL, strict byte 001h                  ; b1 01
     
    987910171    inc ax                                    ; 40
    988010172    push ax                                   ; 50
    9881     push 00939h                               ; 68 39 09
     10173    push 0096bh                               ; 68 6b 09
    988210174    push strict byte 00002h                   ; 6a 02
    9883     call 018e9h                               ; e8 cd a9
     10175    call 018e9h                               ; e8 38 a7
    988410176    add sp, strict byte 00006h                ; 83 c4 06
    9885     jmp near 06fbah                           ; e9 98 00
     10177    jmp near 0724fh                           ; e9 98 00
    988610178    cmp AL, strict byte 008h                  ; 3c 08
    9887     jc short 06f39h                           ; 72 13
     10179    jc short 071ceh                           ; 72 13
    988810180    test ch, ch                               ; 84 ed
    9889     jne short 06f37h                          ; 75 0d
    9890     push 0094ch                               ; 68 4c 09
     10181    jne short 071cch                          ; 75 0d
     10182    push 0097eh                               ; 68 7e 09
    989110183    push strict byte 00002h                   ; 6a 02
    9892     call 018e9h                               ; e8 b7 a9
     10184    call 018e9h                               ; e8 22 a7
    989310185    add sp, strict byte 00004h                ; 83 c4 04
    989410186    mov CH, strict byte 001h                  ; b5 01
    9895     jmp short 06f0fh                          ; eb d6
     10187    jmp short 071a4h                          ; eb d6
    989610188    cmp AL, strict byte 004h                  ; 3c 04
    9897     jnc short 06f54h                          ; 73 17
     10189    jnc short 071e9h                          ; 73 17
    989810190    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    9899     jne short 06f54h                          ; 75 11
    9900     push 00960h                               ; 68 60 09
     10191    jne short 071e9h                          ; 75 11
     10192    push 00992h                               ; 68 92 09
    990110193    push strict byte 00002h                   ; 6a 02
    9902     call 018e9h                               ; e8 9e a9
     10194    call 018e9h                               ; e8 09 a7
    990310195    add sp, strict byte 00004h                ; 83 c4 04
    990410196    mov byte [bp-002h], 001h                  ; c6 46 fe 01
    9905     jmp short 06f6ah                          ; eb 16
     10197    jmp short 071ffh                          ; eb 16
    990610198    cmp bh, 004h                              ; 80 ff 04
    9907     jc short 06f6ah                           ; 72 11
     10199    jc short 071ffh                           ; 72 11
    990810200    test cl, cl                               ; 84 c9
    9909     jne short 06f6ah                          ; 75 0d
    9910     push 00925h                               ; 68 25 09
     10201    jne short 071ffh                          ; 75 0d
     10202    push 00957h                               ; 68 57 09
    991110203    push strict byte 00002h                   ; 6a 02
    9912     call 018e9h                               ; e8 84 a9
     10204    call 018e9h                               ; e8 ef a6
    991310205    add sp, strict byte 00004h                ; 83 c4 04
    991410206    mov CL, strict byte 001h                  ; b1 01
     
    991610208    inc ax                                    ; 40
    991710209    push ax                                   ; 50
    9918     push 00971h                               ; 68 71 09
     10210    push 009a3h                               ; 68 a3 09
    991910211    push strict byte 00002h                   ; 6a 02
    9920     call 018e9h                               ; e8 72 a9
     10212    call 018e9h                               ; e8 dd a6
    992110213    add sp, strict byte 00006h                ; 83 c4 06
    992210214    cmp bh, 004h                              ; 80 ff 04
    9923     jc short 06f82h                           ; 72 03
     10215    jc short 07217h                           ; 72 03
    992410216    sub bh, 004h                              ; 80 ef 04
    992510217    movzx ax, bh                              ; 0f b6 c7
     
    992910221    sar ax, 1                                 ; d1 f8
    993010222    test ax, ax                               ; 85 c0
    9931     je short 06f93h                           ; 74 05
    9932     push 0097bh                               ; 68 7b 09
    9933     jmp short 06f96h                          ; eb 03
    9934     push 00986h                               ; 68 86 09
     10223    je short 07228h                           ; 74 05
     10224    push 009adh                               ; 68 ad 09
     10225    jmp short 0722bh                          ; eb 03
     10226    push 009b8h                               ; 68 b8 09
    993510227    push strict byte 00002h                   ; 6a 02
    9936     call 018e9h                               ; e8 4e a9
     10228    call 018e9h                               ; e8 b9 a6
    993710229    add sp, strict byte 00004h                ; 83 c4 04
    993810230    movzx ax, bh                              ; 0f b6 c7
     
    994110233    idiv di                                   ; f7 ff
    994210234    test dx, dx                               ; 85 d2
    9943     je short 06fb0h                           ; 74 05
    9944     push 0098fh                               ; 68 8f 09
    9945     jmp short 06fb3h                          ; eb 03
    9946     push 00995h                               ; 68 95 09
     10235    je short 07245h                           ; 74 05
     10236    push 009c1h                               ; 68 c1 09
     10237    jmp short 07248h                          ; eb 03
     10238    push 009c7h                               ; 68 c7 09
    994710239    push di                                   ; 57
    9948     call 018e9h                               ; e8 32 a9
     10240    call 018e9h                               ; e8 9d a6
    994910241    add sp, strict byte 00004h                ; 83 c4 04
    995010242    db  0feh, 0c3h
    995110243    ; inc bl                                    ; fe c3
    9952     jmp near 06ee5h                           ; e9 26 ff
     10244    jmp near 0717ah                           ; e9 26 ff
    995310245    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    9954     jne short 06fd8h                          ; 75 13
     10246    jne short 0726dh                          ; 75 13
    995510247    test cl, cl                               ; 84 c9
    9956     jne short 06fd8h                          ; 75 0f
     10248    jne short 0726dh                          ; 75 0f
    995710249    test ch, ch                               ; 84 ed
    9958     jne short 06fd8h                          ; 75 0b
    9959     push 0099ch                               ; 68 9c 09
     10250    jne short 0726dh                          ; 75 0b
     10251    push 009ceh                               ; 68 ce 09
    996010252    push strict byte 00002h                   ; 6a 02
    9961     call 018e9h                               ; e8 14 a9
     10253    call 018e9h                               ; e8 7f a6
    996210254    add sp, strict byte 00004h                ; 83 c4 04
    9963     push 009b0h                               ; 68 b0 09
     10255    push 009e2h                               ; 68 e2 09
    996410256    push strict byte 00002h                   ; 6a 02
    9965     call 018e9h                               ; e8 09 a9
     10257    call 018e9h                               ; e8 74 a6
    996610258    add sp, strict byte 00004h                ; 83 c4 04
    996710259    leave                                     ; c9
     
    997210264    pop bx                                    ; 5b
    997310265    retn                                      ; c3
    9974 get_boot_drive_:                             ; 0xf6fea LB 0x25
     10266get_boot_drive_:                             ; 0xf727f LB 0x25
    997510267    push bx                                   ; 53
    997610268    push dx                                   ; 52
     
    998010272    mov dx, strict word 0000eh                ; ba 0e 00
    998110273    mov ax, strict word 00040h                ; b8 40 00
    9982     call 0161ch                               ; e8 22 a6
     10274    call 0161ch                               ; e8 8d a3
    998310275    mov dx, 002c0h                            ; ba c0 02
    9984     call 01600h                               ; e8 00 a6
     10276    call 01600h                               ; e8 6b a3
    998510277    sub bl, 002h                              ; 80 eb 02
    998610278    cmp bl, al                                ; 38 c3
    9987     jc short 07009h                           ; 72 02
     10279    jc short 0729eh                           ; 72 02
    998810280    mov BL, strict byte 0ffh                  ; b3 ff
    998910281    mov al, bl                                ; 88 d8
     
    999210284    pop bx                                    ; 5b
    999310285    retn                                      ; c3
    9994 show_logo_:                                  ; 0xf700f LB 0x207
     10286show_logo_:                                  ; 0xf72a4 LB 0x207
    999510287    push bx                                   ; 53
    999610288    push cx                                   ; 51
     
    1000110293    mov dx, strict word 0000eh                ; ba 0e 00
    1000210294    mov ax, strict word 00040h                ; b8 40 00
    10003     call 0161ch                               ; e8 fb a5
     10295    call 0161ch                               ; e8 66 a3
    1000410296    mov si, ax                                ; 89 c6
    1000510297    xor cl, cl                                ; 30 c9
     
    1001210304    out strict byte 040h, AL                  ; e6 40
    1001310305    movzx ax, bl                              ; 0f b6 c3
    10014     call 06eadh                               ; e8 74 fe
     10306    call 07142h                               ; e8 74 fe
    1001510307    cmp ax, 066bbh                            ; 3d bb 66
    10016     jne near 070fbh                           ; 0f 85 bb 00
     10308    jne near 07390h                           ; 0f 85 bb 00
    1001710309    mov al, bl                                ; 88 d8
    1001810310    add AL, strict byte 004h                  ; 04 04
    1001910311    xor ah, ah                                ; 30 e4
    10020     call 06e9ah                               ; e8 51 fe
     10312    call 0712fh                               ; e8 51 fe
    1002110313    mov bh, al                                ; 88 c7
    1002210314    mov byte [bp-006h], al                    ; 88 46 fa
     
    1002410316    add AL, strict byte 005h                  ; 04 05
    1002510317    xor ah, ah                                ; 30 e4
    10026     call 06e9ah                               ; e8 43 fe
     10318    call 0712fh                               ; e8 43 fe
    1002710319    mov ch, al                                ; 88 c5
    1002810320    mov byte [bp-008h], al                    ; 88 46 f8
     
    1003010322    add AL, strict byte 002h                  ; 04 02
    1003110323    xor ah, ah                                ; 30 e4
    10032     call 06eadh                               ; e8 48 fe
     10324    call 07142h                               ; e8 48 fe
    1003310325    mov dx, ax                                ; 89 c2
    1003410326    mov di, ax                                ; 89 c7
    1003510327    add bl, 006h                              ; 80 c3 06
    1003610328    movzx ax, bl                              ; 0f b6 c3
    10037     call 06e9ah                               ; e8 28 fe
     10329    call 0712fh                               ; e8 28 fe
    1003810330    mov byte [bp-004h], al                    ; 88 46 fc
    1003910331    test bh, bh                               ; 84 ff
    10040     jne short 07083h                          ; 75 0a
     10332    jne short 07318h                          ; 75 0a
    1004110333    test ch, ch                               ; 84 ed
    10042     jne short 07083h                          ; 75 06
     10334    jne short 07318h                          ; 75 06
    1004310335    test dx, dx                               ; 85 d2
    10044     je near 070fbh                            ; 0f 84 78 00
     10336    je near 07390h                            ; 0f 84 78 00
    1004510337    mov bx, 00142h                            ; bb 42 01
    1004610338    mov ax, 04f02h                            ; b8 02 4f
    1004710339    int 010h                                  ; cd 10
    1004810340    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    10049     je short 070b4h                           ; 74 23
     10341    je short 07349h                           ; 74 23
    1005010342    xor bx, bx                                ; 31 db
    10051     jmp short 0709bh                          ; eb 06
     10343    jmp short 07330h                          ; eb 06
    1005210344    inc bx                                    ; 43
    1005310345    cmp bx, strict byte 00010h                ; 83 fb 10
    10054     jnbe short 070bbh                         ; 77 20
     10346    jnbe short 07350h                         ; 77 20
    1005510347    mov ax, bx                                ; 89 d8
    1005610348    or ah, 002h                               ; 80 cc 02
     
    1005910351    xor dx, dx                                ; 31 d2
    1006010352    mov ax, strict word 00001h                ; b8 01 00
    10061     call 06dedh                               ; e8 41 fd
     10353    call 07082h                               ; e8 41 fd
    1006210354    cmp AL, strict byte 086h                  ; 3c 86
    10063     jne short 07095h                          ; 75 e5
     10355    jne short 0732ah                          ; 75 e5
    1006410356    mov CL, strict byte 001h                  ; b1 01
    10065     jmp short 070bbh                          ; eb 07
     10357    jmp short 07350h                          ; eb 07
    1006610358    mov ax, 00210h                            ; b8 10 02
    1006710359    mov dx, 003b8h                            ; ba b8 03
    1006810360    out DX, ax                                ; ef
    1006910361    test cl, cl                               ; 84 c9
    10070     jne short 070d0h                          ; 75 11
     10362    jne short 07365h                          ; 75 11
    1007110363    mov ax, di                                ; 89 f8
    1007210364    shr ax, 004h                              ; c1 e8 04
    1007310365    mov dx, strict word 00001h                ; ba 01 00
    10074     call 06dedh                               ; e8 23 fd
     10366    call 07082h                               ; e8 23 fd
    1007510367    cmp AL, strict byte 086h                  ; 3c 86
    10076     jne short 070d0h                          ; 75 02
     10368    jne short 07365h                          ; 75 02
    1007710369    mov CL, strict byte 001h                  ; b1 01
    1007810370    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
    10079     je short 070fbh                           ; 74 25
     10371    je short 07390h                           ; 74 25
    1008010372    test cl, cl                               ; 84 c9
    10081     jne short 070fbh                          ; 75 21
     10373    jne short 07390h                          ; 75 21
    1008210374    mov bx, strict word 00010h                ; bb 10 00
    10083     jmp short 070e4h                          ; eb 05
     10375    jmp short 07379h                          ; eb 05
    1008410376    dec bx                                    ; 4b
    1008510377    test bx, bx                               ; 85 db
    10086     jbe short 070fbh                          ; 76 17
     10378    jbe short 07390h                          ; 76 17
    1008710379    mov ax, bx                                ; 89 d8
    1008810380    or ah, 002h                               ; 80 cc 02
     
    1009110383    xor dx, dx                                ; 31 d2
    1009210384    mov ax, strict word 00001h                ; b8 01 00
    10093     call 06dedh                               ; e8 f8 fc
     10385    call 07082h                               ; e8 f8 fc
    1009410386    cmp AL, strict byte 086h                  ; 3c 86
    10095     jne short 070dfh                          ; 75 e6
     10387    jne short 07374h                          ; 75 e6
    1009610388    mov CL, strict byte 001h                  ; b1 01
    1009710389    xor bx, bx                                ; 31 db
    1009810390    mov dx, 00339h                            ; ba 39 03
    1009910391    mov ax, si                                ; 89 f0
    10100     call 0160eh                               ; e8 09 a5
     10392    call 0160eh                               ; e8 74 a2
    1010110393    mov AL, strict byte 003h                  ; b0 03
    1010210394    mov AH, strict byte 000h                  ; b4 00
    1010310395    int 010h                                  ; cd 10
    1010410396    cmp byte [bp-004h], 000h                  ; 80 7e fc 00
    10105     je near 071fah                            ; 0f 84 e7 00
     10397    je near 0748fh                            ; 0f 84 e7 00
    1010610398    cmp byte [bp-006h], 000h                  ; 80 7e fa 00
    10107     jne short 07147h                          ; 75 2e
     10399    jne short 073dch                          ; 75 2e
    1010810400    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
    10109     jne short 07147h                          ; 75 28
     10401    jne short 073dch                          ; 75 28
    1011010402    test di, di                               ; 85 ff
    10111     jne short 07147h                          ; 75 24
     10403    jne short 073dch                          ; 75 24
    1011210404    cmp byte [bp-004h], 002h                  ; 80 7e fc 02
    10113     jne short 07134h                          ; 75 0b
    10114     push 009b2h                               ; 68 b2 09
     10405    jne short 073c9h                          ; 75 0b
     10406    push 009e4h                               ; 68 e4 09
    1011510407    push strict byte 00002h                   ; 6a 02
    10116     call 018e9h                               ; e8 b8 a7
     10408    call 018e9h                               ; e8 23 a5
    1011710409    add sp, strict byte 00004h                ; 83 c4 04
    1011810410    test cl, cl                               ; 84 c9
    10119     jne short 07147h                          ; 75 0f
     10411    jne short 073dch                          ; 75 0f
    1012010412    mov dx, strict word 00001h                ; ba 01 00
    1012110413    mov ax, 000c0h                            ; b8 c0 00
    10122     call 06dedh                               ; e8 ac fc
     10414    call 07082h                               ; e8 ac fc
    1012310415    cmp AL, strict byte 086h                  ; 3c 86
    10124     jne short 07147h                          ; 75 02
     10416    jne short 073dch                          ; 75 02
    1012510417    mov CL, strict byte 001h                  ; b1 01
    1012610418    test cl, cl                               ; 84 c9
    10127     je near 071fah                            ; 0f 84 ad 00
     10419    je near 0748fh                            ; 0f 84 ad 00
    1012810420    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    1012910421    mov ax, 00100h                            ; b8 00 01
     
    1014210434    ; xor dx, dx                                ; 33 d2
    1014310435    int 010h                                  ; cd 10
    10144     push 009d4h                               ; 68 d4 09
     10436    push 00a06h                               ; 68 06 0a
    1014510437    push strict byte 00002h                   ; 6a 02
    10146     call 018e9h                               ; e8 73 a7
     10438    call 018e9h                               ; e8 de a4
    1014710439    add sp, strict byte 00004h                ; 83 c4 04
    10148     call 06ebeh                               ; e8 42 fd
    10149     push 00a18h                               ; 68 18 0a
     10440    call 07153h                               ; e8 42 fd
     10441    push 00a4ah                               ; 68 4a 0a
    1015010442    push strict byte 00002h                   ; 6a 02
    10151     call 018e9h                               ; e8 65 a7
     10443    call 018e9h                               ; e8 d0 a4
    1015210444    add sp, strict byte 00004h                ; 83 c4 04
    1015310445    mov dx, strict word 00001h                ; ba 01 00
    1015410446    mov ax, strict word 00040h                ; b8 40 00
    10155     call 06dedh                               ; e8 5d fc
     10447    call 07082h                               ; e8 5d fc
    1015610448    mov bl, al                                ; 88 c3
    1015710449    test al, al                               ; 84 c0
    10158     je short 07187h                           ; 74 f1
     10450    je short 0741ch                           ; 74 f1
    1015910451    cmp AL, strict byte 030h                  ; 3c 30
    10160     je short 071e8h                           ; 74 4e
     10452    je short 0747dh                           ; 74 4e
    1016110453    cmp bl, 002h                              ; 80 fb 02
    10162     jc short 071c1h                           ; 72 22
     10454    jc short 07456h                           ; 72 22
    1016310455    cmp bl, 009h                              ; 80 fb 09
    10164     jnbe short 071c1h                         ; 77 1d
     10456    jnbe short 07456h                         ; 77 1d
    1016510457    movzx ax, bl                              ; 0f b6 c3
    10166     call 06feah                               ; e8 40 fe
     10458    call 0727fh                               ; e8 40 fe
    1016710459    cmp AL, strict byte 0ffh                  ; 3c ff
    10168     jne short 071b0h                          ; 75 02
    10169     jmp short 07187h                          ; eb d7
     10460    jne short 07445h                          ; 75 02
     10461    jmp short 0741ch                          ; eb d7
    1017010462    movzx bx, al                              ; 0f b6 d8
    1017110463    mov dx, 00338h                            ; ba 38 03
    1017210464    mov ax, si                                ; 89 f0
    10173     call 0160eh                               ; e8 53 a4
     10465    call 0160eh                               ; e8 be a1
    1017410466    mov byte [bp-002h], 002h                  ; c6 46 fe 02
    10175     jmp short 071e8h                          ; eb 27
     10467    jmp short 0747dh                          ; eb 27
    1017610468    cmp bl, 02eh                              ; 80 fb 2e
    10177     je short 071d6h                           ; 74 10
     10469    je short 0746bh                           ; 74 10
    1017810470    cmp bl, 026h                              ; 80 fb 26
    10179     je short 071dch                           ; 74 11
     10471    je short 07471h                           ; 74 11
    1018010472    cmp bl, 021h                              ; 80 fb 21
    10181     jne short 071e2h                          ; 75 12
     10473    jne short 07477h                          ; 75 12
    1018210474    mov byte [bp-002h], 001h                  ; c6 46 fe 01
    10183     jmp short 071e8h                          ; eb 12
     10475    jmp short 0747dh                          ; eb 12
    1018410476    mov byte [bp-002h], 003h                  ; c6 46 fe 03
    10185     jmp short 071e8h                          ; eb 0c
     10477    jmp short 0747dh                          ; eb 0c
    1018610478    mov byte [bp-002h], 004h                  ; c6 46 fe 04
    10187     jmp short 071e8h                          ; eb 06
     10479    jmp short 0747dh                          ; eb 06
    1018810480    cmp byte [bp-002h], 000h                  ; 80 7e fe 00
    10189     je short 07187h                           ; 74 9f
     10481    je short 0741ch                           ; 74 9f
    1019010482    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    1019110483    mov dx, 00339h                            ; ba 39 03
    1019210484    mov ax, si                                ; 89 f0
    10193     call 0160eh                               ; e8 1a a4
     10485    call 0160eh                               ; e8 85 a1
    1019410486    mov AL, strict byte 003h                  ; b0 03
    1019510487    mov AH, strict byte 000h                  ; b4 00
     
    1020410496    push DS                                   ; 1e
    1020510497    mov ds, ax                                ; 8e d8
    10206     call 0edbfh                               ; e8 b3 7b
     10498    call 0edbfh                               ; e8 1e 79
    1020710499    pop DS                                    ; 1f
    1020810500    popad                                     ; 66 61
     
    1021410506    pop bx                                    ; 5b
    1021510507    retn                                      ; c3
    10216 delay_boot_:                                 ; 0xf7216 LB 0x64
     10508delay_boot_:                                 ; 0xf74ab LB 0x64
    1021710509    push bx                                   ; 53
    1021810510    push dx                                   ; 52
     
    1022110513    mov dx, ax                                ; 89 c2
    1022210514    test ax, ax                               ; 85 c0
    10223     je short 07276h                           ; 74 55
     10515    je short 0750bh                           ; 74 55
    1022410516    mov AL, strict byte 034h                  ; b0 34
    1022510517    out strict byte 043h, AL                  ; e6 43
     
    1022910521    out strict byte 040h, AL                  ; e6 40
    1023010522    push dx                                   ; 52
    10231     push 00a62h                               ; 68 62 0a
     10523    push 00a94h                               ; 68 94 0a
    1023210524    push strict byte 00002h                   ; 6a 02
    10233     call 018e9h                               ; e8 b3 a6
     10525    call 018e9h                               ; e8 1e a4
    1023410526    add sp, strict byte 00006h                ; 83 c4 06
    1023510527    mov bx, dx                                ; 89 d3
    1023610528    test bx, bx                               ; 85 db
    10237     jbe short 07256h                          ; 76 17
     10529    jbe short 074ebh                          ; 76 17
    1023810530    push bx                                   ; 53
    10239     push 00a80h                               ; 68 80 0a
     10531    push 00ab2h                               ; 68 b2 0a
    1024010532    push strict byte 00002h                   ; 6a 02
    10241     call 018e9h                               ; e8 a1 a6
     10533    call 018e9h                               ; e8 0c a4
    1024210534    add sp, strict byte 00006h                ; 83 c4 06
    1024310535    xor dx, dx                                ; 31 d2
    1024410536    mov ax, strict word 00040h                ; b8 40 00
    10245     call 06dedh                               ; e8 9a fb
     10537    call 07082h                               ; e8 9a fb
    1024610538    dec bx                                    ; 4b
    10247     jmp short 0723bh                          ; eb e5
    10248     push 009b0h                               ; 68 b0 09
     10539    jmp short 074d0h                          ; eb e5
     10540    push 009e2h                               ; 68 e2 09
    1024910541    push strict byte 00002h                   ; 6a 02
    10250     call 018e9h                               ; e8 8b a6
     10542    call 018e9h                               ; e8 f6 a3
    1025110543    add sp, strict byte 00004h                ; 83 c4 04
    1025210544    mov AL, strict byte 034h                  ; b0 34
     
    1025910551    push DS                                   ; 1e
    1026010552    mov ds, ax                                ; 8e d8
    10261     call 0edbfh                               ; e8 4c 7b
     10553    call 0edbfh                               ; e8 b7 78
    1026210554    pop DS                                    ; 1f
    1026310555    popad                                     ; 66 61
     
    1026610558    pop bx                                    ; 5b
    1026710559    retn                                      ; c3
    10268 scsi_cmd_data_in_:                           ; 0xf727a LB 0x63
     10560scsi_cmd_data_in_:                           ; 0xf750f LB 0x63
    1026910561    push si                                   ; 56
    1027010562    push di                                   ; 57
     
    1027810570    ; sub ah, ah                                ; 2a e4
    1027910571    test AL, strict byte 001h                 ; a8 01
    10280     jne short 07288h                          ; 75 f7
     10572    jne short 0751dh                          ; 75 f7
    1028110573    mov al, byte [bp-002h]                    ; 8a 46 fe
    1028210574    out DX, AL                                ; ee
     
    1029310585    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    1029410586    cmp bx, ax                                ; 39 c3
    10295     jnc short 072c1h                          ; 73 10
     10587    jnc short 07556h                          ; 73 10
    1029610588    mov es, cx                                ; 8e c1
    1029710589    mov di, word [bp-004h]                    ; 8b 7e fc
     
    1030110593    out DX, AL                                ; ee
    1030210594    inc bx                                    ; 43
    10303     jmp short 072a9h                          ; eb e8
     10595    jmp short 0753eh                          ; eb e8
    1030410596    mov dx, si                                ; 89 f2
    1030510597    in AL, DX                                 ; ec
     
    1030710599    ; sub ah, ah                                ; 2a e4
    1030810600    test AL, strict byte 001h                 ; a8 01
    10309     jne short 072c1h                          ; 75 f7
     10601    jne short 07556h                          ; 75 f7
    1031010602    lea dx, [si+001h]                         ; 8d 54 01
    1031110603    mov cx, word [bp+00eh]                    ; 8b 4e 0e
     
    1031710609    pop si                                    ; 5e
    1031810610    retn 00008h                               ; c2 08 00
    10319 scsi_cmd_data_out_:                          ; 0xf72dd LB 0x64
     10611scsi_cmd_data_out_:                          ; 0xf7572 LB 0x64
    1032010612    push si                                   ; 56
    1032110613    push di                                   ; 57
     
    1032910621    ; sub ah, ah                                ; 2a e4
    1033010622    test AL, strict byte 001h                 ; a8 01
    10331     jne short 072ebh                          ; 75 f7
     10623    jne short 07580h                          ; 75 f7
    1033210624    mov al, byte [bp-002h]                    ; 8a 46 fe
    1033310625    out DX, AL                                ; ee
     
    1034410636    movzx ax, byte [bp+008h]                  ; 0f b6 46 08
    1034510637    cmp bx, ax                                ; 39 c3
    10346     jnc short 07324h                          ; 73 10
     10638    jnc short 075b9h                          ; 73 10
    1034710639    mov es, cx                                ; 8e c1
    1034810640    mov si, word [bp-004h]                    ; 8b 76 fc
     
    1035210644    out DX, AL                                ; ee
    1035310645    inc bx                                    ; 43
    10354     jmp short 0730ch                          ; eb e8
     10646    jmp short 075a1h                          ; eb e8
    1035510647    lea dx, [di+001h]                         ; 8d 55 01
    1035610648    mov cx, word [bp+00eh]                    ; 8b 4e 0e
     
    1036310655    ; sub ah, ah                                ; 2a e4
    1036410656    test AL, strict byte 001h                 ; a8 01
    10365     jne short 07330h                          ; 75 f7
     10657    jne short 075c5h                          ; 75 f7
    1036610658    xor ax, ax                                ; 31 c0
    1036710659    leave                                     ; c9
     
    1036910661    pop si                                    ; 5e
    1037010662    retn 00008h                               ; c2 08 00
    10371 @scsi_read_sectors:                          ; 0xf7341 LB 0xa2
     10663@scsi_read_sectors:                          ; 0xf75d6 LB 0xa2
    1037210664    push si                                   ; 56
    1037310665    push di                                   ; 57
     
    1037810670    sub bl, 008h                              ; 80 eb 08
    1037910671    cmp bl, 004h                              ; 80 fb 04
    10380     jbe short 07368h                          ; 76 0f
     10672    jbe short 075fdh                          ; 76 0f
    1038110673    movzx ax, bl                              ; 0f b6 c3
    1038210674    push ax                                   ; 50
    10383     push 00a84h                               ; 68 84 0a
     10675    push 00ab6h                               ; 68 b6 0a
    1038410676    push strict byte 00007h                   ; 6a 07
    10385     call 018e9h                               ; e8 84 a5
     10677    call 018e9h                               ; e8 ef a2
    1038610678    add sp, strict byte 00006h                ; 83 c4 06
    1038710679    mov es, [bp+00ah]                         ; 8e 46 0a
     
    1041510707    mov cx, ss                                ; 8c d1
    1041610708    lea bx, [bp-00ch]                         ; 8d 5e f4
    10417     call 0727ah                               ; e8 ba fe
     10709    call 0750fh                               ; e8 ba fe
    1041810710    mov ah, al                                ; 88 c4
    1041910711    test al, al                               ; 84 c0
    10420     jne short 073dah                          ; 75 14
     10712    jne short 0766fh                          ; 75 14
    1042110713    mov es, [bp+00ah]                         ; 8e 46 0a
    1042210714    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1042910721    pop si                                    ; 5e
    1043010722    retn 00004h                               ; c2 04 00
    10431 @scsi_write_sectors:                         ; 0xf73e3 LB 0xa2
     10723@scsi_write_sectors:                         ; 0xf7678 LB 0xa2
    1043210724    push si                                   ; 56
    1043310725    push di                                   ; 57
     
    1043810730    sub bl, 008h                              ; 80 eb 08
    1043910731    cmp bl, 004h                              ; 80 fb 04
    10440     jbe short 0740ah                          ; 76 0f
     10732    jbe short 0769fh                          ; 76 0f
    1044110733    movzx ax, bl                              ; 0f b6 c3
    1044210734    push ax                                   ; 50
    10443     push 00ab2h                               ; 68 b2 0a
     10735    push 00ae4h                               ; 68 e4 0a
    1044410736    push strict byte 00007h                   ; 6a 07
    10445     call 018e9h                               ; e8 e2 a4
     10737    call 018e9h                               ; e8 4d a2
    1044610738    add sp, strict byte 00006h                ; 83 c4 06
    1044710739    mov es, [bp+00ah]                         ; 8e 46 0a
     
    1047510767    mov cx, ss                                ; 8c d1
    1047610768    lea bx, [bp-00ch]                         ; 8d 5e f4
    10477     call 072ddh                               ; e8 7b fe
     10769    call 07572h                               ; e8 7b fe
    1047810770    mov ah, al                                ; 88 c4
    1047910771    test al, al                               ; 84 c0
    10480     jne short 0747ch                          ; 75 14
     10772    jne short 07711h                          ; 75 14
    1048110773    mov es, [bp+00ah]                         ; 8e 46 0a
    1048210774    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1048910781    pop si                                    ; 5e
    1049010782    retn 00004h                               ; c2 04 00
    10491 scsi_enumerate_attached_devices_:            ; 0xf7485 LB 0x285
     10783scsi_enumerate_attached_devices_:            ; 0xf771a LB 0x285
    1049210784    push bx                                   ; 53
    1049310785    push cx                                   ; 51
     
    1049910791    mov dx, strict word 0000eh                ; ba 0e 00
    1050010792    mov ax, strict word 00040h                ; b8 40 00
    10501     call 0161ch                               ; e8 84 a1
     10793    call 0161ch                               ; e8 ef 9e
    1050210794    mov si, 00122h                            ; be 22 01
    1050310795    mov word [bp-006h], ax                    ; 89 46 fa
    1050410796    mov word [bp-008h], strict word 00000h    ; c7 46 f8 00 00
    10505     jmp near 076b2h                           ; e9 0c 02
     10797    jmp near 07947h                           ; e9 0c 02
    1050610798    mov es, [bp-006h]                         ; 8e 46 fa
    1050710799    cmp byte [es:si+001e8h], 004h             ; 26 80 bc e8 01 04
    10508     jnc near 07703h                           ; 0f 83 50 02
     10800    jnc near 07998h                           ; 0f 83 50 02
    1050910801    mov cx, strict word 0000ah                ; b9 0a 00
    1051010802    xor bx, bx                                ; 31 db
    1051110803    mov dx, ss                                ; 8c d2
    1051210804    lea ax, [bp-01ah]                         ; 8d 46 e6
    10513     call 0885ah                               ; e8 9a 13
     10805    call 08aeah                               ; e8 95 13
    1051410806    mov byte [bp-01ah], 025h                  ; c6 46 e6 25
    1051510807    push strict byte 00008h                   ; 6a 08
     
    1052210814    lea bx, [bp-01ah]                         ; 8d 5e e6
    1052310815    mov ax, word [bp-0021ch]                  ; 8b 86 e4 fd
    10524     call 0727ah                               ; e8 9c fd
     10816    call 0750fh                               ; e8 9c fd
    1052510817    test al, al                               ; 84 c0
    10526     je short 074edh                           ; 74 0b
    10527     push 00b17h                               ; 68 17 0b
     10818    je short 07782h                           ; 74 0b
     10819    push 00b49h                               ; 68 49 0b
    1052810820    push strict byte 00007h                   ; 6a 07
    10529     call 018e9h                               ; e8 ff a3
     10821    call 018e9h                               ; e8 6a a1
    1053010822    add sp, strict byte 00004h                ; 83 c4 04
    1053110823    movzx dx, byte [bp-00219h]                ; 0f b6 96 e7 fd
     
    1053910831    sal ax, 1                                 ; d1 e0
    1054010832    rcl dx, 1                                 ; d1 d2
    10541     loop 07508h                               ; e2 fa
     10833    loop 0779dh                               ; e2 fa
    1054210834    or bx, ax                                 ; 09 c3
    1054310835    or di, dx                                 ; 09 d7
     
    1055510847    sal ax, 1                                 ; d1 e0
    1055610848    rcl dx, 1                                 ; d1 d2
    10557     loop 0753ah                               ; e2 fa
     10849    loop 077cfh                               ; e2 fa
    1055810850    mov cx, word [bp-010h]                    ; 8b 4e f0
    1055910851    or cx, ax                                 ; 09 c1
     
    1056410856    mov word [bp-00ch], bx                    ; 89 5e f4
    1056510857    test dx, dx                               ; 85 d2
    10566     jne short 0755dh                          ; 75 06
     10858    jne short 077f2h                          ; 75 06
    1056710859    cmp bx, 00200h                            ; 81 fb 00 02
    10568     je short 0757dh                           ; 74 20
    10569     mov bx, 00c08h                            ; bb 08 0c
     10860    je short 07812h                           ; 74 20
     10861    mov bx, 00c3ah                            ; bb 3a 0c
    1057010862    mov cx, ds                                ; 8c d9
    1057110863    mov ax, strict word 00004h                ; b8 04 00
    10572     call 018aeh                               ; e8 46 a3
     10864    call 018aeh                               ; e8 b1 a0
    1057310865    push dx                                   ; 52
    1057410866    push word [bp-00ch]                       ; ff 76 f4
    1057510867    push word [bp-008h]                       ; ff 76 f8
    10576     push 00b53h                               ; 68 53 0b
     10868    push 00b85h                               ; 68 85 0b
    1057710869    push strict byte 00004h                   ; 6a 04
    10578     call 018e9h                               ; e8 72 a3
     10870    call 018e9h                               ; e8 dd a0
    1057910871    add sp, strict byte 0000ah                ; 83 c4 0a
    10580     jmp near 076a9h                           ; e9 2c 01
     10872    jmp near 0793eh                           ; e9 2c 01
    1058110873    cmp di, strict byte 00040h                ; 83 ff 40
    10582     jnbe short 07584h                         ; 77 02
    10583     jne short 0758eh                          ; 75 0a
     10874    jnbe short 07819h                         ; 77 02
     10875    jne short 07823h                          ; 75 0a
    1058410876    mov dword [bp-004h], strict dword 000ff003fh ; 66 c7 46 fc 3f 00 ff 00
    10585     jmp short 075a7h                          ; eb 19
     10877    jmp short 0783ch                          ; eb 19
    1058610878    cmp di, strict byte 00020h                ; 83 ff 20
    10587     jnbe short 07595h                         ; 77 02
    10588     jne short 0759fh                          ; 75 0a
     10879    jnbe short 0782ah                         ; 77 02
     10880    jne short 07834h                          ; 75 0a
    1058910881    mov dword [bp-004h], strict dword 000800020h ; 66 c7 46 fc 20 00 80 00
    10590     jmp short 075a7h                          ; eb 08
     10882    jmp short 0783ch                          ; eb 08
    1059110883    mov dword [bp-004h], strict dword 000400020h ; 66 c7 46 fc 20 00 40 00
    1059210884    mov bx, word [bp-002h]                    ; 8b 5e fe
     
    1059510887    mov dx, di                                ; 89 fa
    1059610888    xor cx, cx                                ; 31 c9
    10597     call 087f0h                               ; e8 38 12
     10889    call 08a80h                               ; e8 33 12
    1059810890    mov word [bp-00eh], dx                    ; 89 56 f2
    1059910891    mov es, [bp-006h]                         ; 8e 46 fa
     
    1062310915    mov word [es:bx+02ah], dx                 ; 26 89 57 2a
    1062410916    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    10625     jne short 0761bh                          ; 75 05
     10917    jne short 078b0h                          ; 75 05
    1062610918    cmp ax, 00400h                            ; 3d 00 04
    10627     jbe short 07623h                          ; 76 08
     10919    jbe short 078b8h                          ; 76 08
    1062810920    mov word [es:bx+028h], 00400h             ; 26 c7 47 28 00 04
    10629     jmp short 07627h                          ; eb 04
     10921    jmp short 078bch                          ; eb 04
    1063010922    mov word [es:bx+028h], ax                 ; 26 89 47 28
    1063110923    movzx bx, ch                              ; 0f b6 dd
     
    1063810930    mov word [es:bx+030h], dx                 ; 26 89 57 30
    1063910931    cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
    10640     jne short 0764bh                          ; 75 05
     10932    jne short 078e0h                          ; 75 05
    1064110933    cmp ax, 00400h                            ; 3d 00 04
    10642     jbe short 07653h                          ; 76 08
     10934    jbe short 078e8h                          ; 76 08
    1064310935    mov word [es:bx+02eh], 00400h             ; 26 c7 47 2e 00 04
    10644     jmp short 07657h                          ; eb 04
     10936    jmp short 078ech                          ; eb 04
    1064510937    mov word [es:bx+02eh], ax                 ; 26 89 47 2e
    1064610938    movzx bx, ch                              ; 0f b6 dd
     
    1066210954    mov dx, strict word 00075h                ; ba 75 00
    1066310955    mov ax, strict word 00040h                ; b8 40 00
    10664     call 01600h                               ; e8 6f 9f
     10956    call 01600h                               ; e8 da 9c
    1066510957    db  0feh, 0c0h
    1066610958    ; inc al                                    ; fe c0
     
    1066810960    mov dx, strict word 00075h                ; ba 75 00
    1066910961    mov ax, strict word 00040h                ; b8 40 00
    10670     call 0160eh                               ; e8 6f 9f
     10962    call 0160eh                               ; e8 da 9c
    1067110963    db  0feh, 0c1h
    1067210964    ; inc cl                                    ; fe c1
     
    1067510967    inc word [bp-008h]                        ; ff 46 f8
    1067610968    cmp word [bp-008h], strict byte 00010h    ; 83 7e f8 10
    10677     jnl short 07703h                          ; 7d 51
     10969    jnl short 07998h                          ; 7d 51
    1067810970    mov byte [bp-01ah], 012h                  ; c6 46 e6 12
    1067910971    xor al, al                                ; 30 c0
     
    1069210984    lea bx, [bp-01ah]                         ; 8d 5e e6
    1069310985    mov ax, word [bp-0021ch]                  ; 8b 86 e4 fd
    10694     call 0727ah                               ; e8 98 fb
     10986    call 0750fh                               ; e8 98 fb
    1069510987    test al, al                               ; 84 c0
    10696     je short 076f1h                           ; 74 0b
    10697     push 00ae1h                               ; 68 e1 0a
     10988    je short 07986h                           ; 74 0b
     10989    push 00b13h                               ; 68 13 0b
    1069810990    push strict byte 00007h                   ; 6a 07
    10699     call 018e9h                               ; e8 fb a1
     10991    call 018e9h                               ; e8 66 9f
    1070010992    add sp, strict byte 00004h                ; 83 c4 04
    1070110993    test byte [bp-0021ah], 0e0h               ; f6 86 e6 fd e0
    10702     jne short 076a9h                          ; 75 b1
     10994    jne short 0793eh                          ; 75 b1
    1070310995    test byte [bp-0021ah], 01fh               ; f6 86 e6 fd 1f
    10704     je near 074a6h                            ; 0f 84 a5 fd
    10705     jmp short 076a9h                          ; eb a6
     10996    je near 0773bh                            ; 0f 84 a5 fd
     10997    jmp short 0793eh                          ; eb a6
    1070610998    leave                                     ; c9
    1070710999    pop di                                    ; 5f
     
    1071111003    pop bx                                    ; 5b
    1071211004    retn                                      ; c3
    10713 _scsi_init:                                  ; 0xf770a LB 0x64
     11005_scsi_init:                                  ; 0xf799f LB 0x64
    1071411006    push bp                                   ; 55
    1071511007    mov bp, sp                                ; 89 e5
    1071611008    mov dx, strict word 0000eh                ; ba 0e 00
    1071711009    mov ax, strict word 00040h                ; b8 40 00
    10718     call 0161ch                               ; e8 06 9f
     11010    call 0161ch                               ; e8 71 9c
    1071911011    mov bx, 00122h                            ; bb 22 01
    1072011012    mov es, ax                                ; 8e c0
     
    1072711019    ; sub ah, ah                                ; 2a e4
    1072811020    cmp AL, strict byte 055h                  ; 3c 55
    10729     jne short 0773ah                          ; 75 0c
     11021    jne short 079cfh                          ; 75 0c
    1073011022    xor al, al                                ; 30 c0
    1073111023    mov dx, 00333h                            ; ba 33 03
    1073211024    out DX, AL                                ; ee
    1073311025    mov ax, 00330h                            ; b8 30 03
    10734     call 07485h                               ; e8 4b fd
     11026    call 0771ah                               ; e8 4b fd
    1073511027    mov AL, strict byte 055h                  ; b0 55
    1073611028    mov dx, 00342h                            ; ba 42 03
     
    1074011032    ; sub ah, ah                                ; 2a e4
    1074111033    cmp AL, strict byte 055h                  ; 3c 55
    10742     jne short 07753h                          ; 75 0c
     11034    jne short 079e8h                          ; 75 0c
    1074311035    xor al, al                                ; 30 c0
    1074411036    mov dx, 00343h                            ; ba 43 03
    1074511037    out DX, AL                                ; ee
    1074611038    mov ax, 00340h                            ; b8 40 03
    10747     call 07485h                               ; e8 32 fd
     11039    call 0771ah                               ; e8 32 fd
    1074811040    mov AL, strict byte 055h                  ; b0 55
    1074911041    mov dx, 00352h                            ; ba 52 03
     
    1075311045    ; sub ah, ah                                ; 2a e4
    1075411046    cmp AL, strict byte 055h                  ; 3c 55
    10755     jne short 0776ch                          ; 75 0c
     11047    jne short 07a01h                          ; 75 0c
    1075611048    xor al, al                                ; 30 c0
    1075711049    mov dx, 00353h                            ; ba 53 03
    1075811050    out DX, AL                                ; ee
    1075911051    mov ax, 00350h                            ; b8 50 03
    10760     call 07485h                               ; e8 19 fd
     11052    call 0771ah                               ; e8 19 fd
    1076111053    pop bp                                    ; 5d
    1076211054    retn                                      ; c3
    10763 high_bits_save_:                             ; 0xf776e LB 0x14
     11055high_bits_save_:                             ; 0xf7a03 LB 0x14
    1076411056    push bx                                   ; 53
    1076511057    push bp                                   ; 55
     
    1077211064    pop bx                                    ; 5b
    1077311065    retn                                      ; c3
    10774 high_bits_restore_:                          ; 0xf7782 LB 0x14
     11066high_bits_restore_:                          ; 0xf7a17 LB 0x14
    1077511067    push bx                                   ; 53
    1077611068    push bp                                   ; 55
     
    1078311075    pop bx                                    ; 5b
    1078411076    retn                                      ; c3
    10785 ahci_ctrl_set_bits_:                         ; 0xf7796 LB 0x40
     11077ahci_ctrl_set_bits_:                         ; 0xf7a2b LB 0x40
    1078611078    push si                                   ; 56
    1078711079    push di                                   ; 57
     
    1081811110    pop si                                    ; 5e
    1081911111    retn                                      ; c3
    10820 ahci_ctrl_clear_bits_:                       ; 0xf77d6 LB 0x44
     11112ahci_ctrl_clear_bits_:                       ; 0xf7a6b LB 0x44
    1082111113    push si                                   ; 56
    1082211114    push di                                   ; 57
     
    1085511147    pop si                                    ; 5e
    1085611148    retn                                      ; c3
    10857 ahci_ctrl_is_bit_set_:                       ; 0xf781a LB 0x36
     11149ahci_ctrl_is_bit_set_:                       ; 0xf7aaf LB 0x36
    1085811150    push si                                   ; 56
    1085911151    push di                                   ; 57
     
    1087711169    xchg dx, ax                               ; 92
    1087811170    test dx, di                               ; 85 fa
    10879     jne short 07846h                          ; 75 04
     11171    jne short 07adbh                          ; 75 04
    1088011172    test ax, bx                               ; 85 d8
    10881     je short 0784ah                           ; 74 04
     11173    je short 07adfh                           ; 74 04
    1088211174    mov AL, strict byte 001h                  ; b0 01
    10883     jmp short 0784ch                          ; eb 02
     11175    jmp short 07ae1h                          ; eb 02
    1088411176    xor al, al                                ; 30 c0
    1088511177    pop bp                                    ; 5d
     
    1088711179    pop si                                    ; 5e
    1088811180    retn                                      ; c3
    10889 ahci_ctrl_extract_bits_:                     ; 0xf7850 LB 0x1b
     11181ahci_ctrl_extract_bits_:                     ; 0xf7ae5 LB 0x1b
    1089011182    push si                                   ; 56
    1089111183    push bp                                   ; 55
     
    1089511187    and dx, cx                                ; 21 ca
    1089611188    movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
    10897     jcxz 07866h                               ; e3 06
     11189    jcxz 07afbh                               ; e3 06
    1089811190    shr dx, 1                                 ; d1 ea
    1089911191    rcr ax, 1                                 ; d1 d8
    10900     loop 07860h                               ; e2 fa
     11192    loop 07af5h                               ; e2 fa
    1090111193    pop bp                                    ; 5d
    1090211194    pop si                                    ; 5e
    1090311195    retn 00002h                               ; c2 02 00
    10904 ahci_addr_to_phys_:                          ; 0xf786b LB 0x1e
     11196ahci_addr_to_phys_:                          ; 0xf7b00 LB 0x1e
    1090511197    push bx                                   ; 53
    1090611198    push cx                                   ; 51
     
    1091311205    sal ax, 1                                 ; d1 e0
    1091411206    rcl dx, 1                                 ; d1 d2
    10915     loop 07879h                               ; e2 fa
     11207    loop 07b0eh                               ; e2 fa
    1091611208    xor cx, cx                                ; 31 c9
    1091711209    add ax, bx                                ; 01 d8
     
    1092111213    pop bx                                    ; 5b
    1092211214    retn                                      ; c3
    10923 ahci_port_cmd_sync_:                         ; 0xf7889 LB 0xd0
     11215ahci_port_cmd_sync_:                         ; 0xf7b1e LB 0xd0
    1092411216    push cx                                   ; 51
    1092511217    push si                                   ; 56
     
    1093311225    mov di, word [es:si+00260h]               ; 26 8b bc 60 02
    1093411226    cmp AL, strict byte 0ffh                  ; 3c ff
    10935     je near 07954h                            ; 0f 84 aa 00
     11227    je near 07be9h                            ; 0f 84 aa 00
    1093611228    movzx cx, byte [es:si+00263h]             ; 26 0f b6 8c 63 02
    1093711229    xor dx, dx                                ; 31 d2
     
    1094511237    lea ax, [si+00080h]                       ; 8d 84 80 00
    1094611238    mov dx, es                                ; 8c c2
    10947     call 0786bh                               ; e8 98 ff
     11239    call 07b00h                               ; e8 98 ff
    1094811240    mov es, [bp-004h]                         ; 8e 46 fc
    1094911241    mov word [es:si+008h], ax                 ; 26 89 44 08
     
    1095511247    xor cx, cx                                ; 31 c9
    1095611248    mov ax, di                                ; 89 f8
    10957     call 07796h                               ; e8 a3 fe
     11249    call 07a2bh                               ; e8 a3 fe
    1095811250    lea ax, [si+00138h]                       ; 8d 84 38 01
    1095911251    cwd                                       ; 99
     
    1098211274    mov dx, si                                ; 89 f2
    1098311275    mov ax, di                                ; 89 f8
    10984     call 0781ah                               ; e8 e7 fe
     11276    call 07aafh                               ; e8 e7 fe
    1098511277    test al, al                               ; 84 c0
    10986     je short 07916h                           ; 74 df
     11278    je short 07babh                           ; 74 df
    1098711279    mov bx, strict word 00001h                ; bb 01 00
    1098811280    xor cx, cx                                ; 31 c9
    1098911281    mov dx, si                                ; 89 f2
    1099011282    mov ax, di                                ; 89 f8
    10991     call 07796h                               ; e8 53 fe
     11283    call 07a2bh                               ; e8 53 fe
    1099211284    mov dx, word [bp-006h]                    ; 8b 56 fa
    1099311285    add dx, 00118h                            ; 81 c2 18 01
     
    1099511287    xor cx, cx                                ; 31 c9
    1099611288    mov ax, di                                ; 89 f8
    10997     call 077d6h                               ; e8 82 fe
     11289    call 07a6bh                               ; e8 82 fe
    1099811290    leave                                     ; c9
    1099911291    pop di                                    ; 5f
     
    1100111293    pop cx                                    ; 59
    1100211294    retn                                      ; c3
    11003 ahci_cmd_data_:                              ; 0xf7959 LB 0x1c5
     11295ahci_cmd_data_:                              ; 0xf7bee LB 0x1c5
    1100411296    push cx                                   ; 51
    1100511297    push si                                   ; 56
     
    1102311315    mov ax, 00080h                            ; b8 80 00
    1102411316    mov dx, word [bp-004h]                    ; 8b 56 fc
    11025     call 0885ah                               ; e8 c4 0e
     11317    call 08aeah                               ; e8 bf 0e
    1102611318    mov es, [bp-004h]                         ; 8e 46 fc
    1102711319    mov word [es:si+00080h], 08027h           ; 26 c7 84 80 00 27 80
     
    1103911331    shr bx, 1                                 ; d1 eb
    1104011332    rcr ax, 1                                 ; d1 d8
    11041     loop 079c9h                               ; e2 fa
     11333    loop 07c5eh                               ; e2 fa
    1104211334    mov es, [bp-004h]                         ; 8e 46 fc
    1104311335    mov byte [es:si+00085h], al               ; 26 88 84 85 00
     
    1106411356    mov bx, word [bp-010h]                    ; 8b 5e f0
    1106511357    xor cx, cx                                ; 31 c9
    11066     call 08829h                               ; e8 f7 0d
     11358    call 08ab9h                               ; e8 f2 0d
    1106711359    push dx                                   ; 52
    1106811360    push ax                                   ; 50
     
    1107211364    mov ax, 0026ah                            ; b8 6a 02
    1107311365    mov dx, word [bp-004h]                    ; 8b 56 fc
    11074     call 08744h                               ; e8 fc 0c
     11366    call 089d9h                               ; e8 fc 0c
    1107511367    mov es, [bp-004h]                         ; 8e 46 fc
    1107611368    movzx ax, byte [es:si+00263h]             ; 26 0f b6 84 63 02
     
    1109211384    mov es, [bp-00ch]                         ; 8e 46 f4
    1109311385    cmp word [es:di+01ch], strict byte 00000h ; 26 83 7d 1c 00
    11094     je short 07ac1h                           ; 74 2c
     11386    je short 07d56h                           ; 74 2c
    1109511387    mov dx, word [es:di+01ch]                 ; 26 8b 55 1c
    1109611388    dec dx                                    ; 4a
     
    1111111403    movzx dx, byte [es:bx+00263h]             ; 26 0f b6 97 63 02
    1111211404    cmp ax, dx                                ; 39 d0
    11113     jnc short 07adbh                          ; 73 03
     11405    jnc short 07d70h                          ; 73 03
    1111411406    inc ax                                    ; 40
    11115     jmp short 07acbh                          ; eb f0
     11407    jmp short 07d60h                          ; eb f0
    1111611408    mov al, byte [bp-002h]                    ; 8a 46 fe
    1111711409    cmp AL, strict byte 035h                  ; 3c 35
    11118     jne short 07ae8h                          ; 75 06
     11410    jne short 07d7dh                          ; 75 06
    1111911411    mov byte [bp-002h], 040h                  ; c6 46 fe 40
    11120     jmp short 07afch                          ; eb 14
     11412    jmp short 07d91h                          ; eb 14
    1112111413    cmp AL, strict byte 0a0h                  ; 3c a0
    11122     jne short 07af8h                          ; 75 0c
     11414    jne short 07d8dh                          ; 75 0c
    1112311415    or byte [bp-002h], 020h                   ; 80 4e fe 20
    1112411416    or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
    11125     jmp short 07afch                          ; eb 04
     11417    jmp short 07d91h                          ; eb 04
    1112611418    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    1112711419    or byte [bp-002h], 005h                   ; 80 4e fe 05
     
    1112911421    mov ax, word [bp-008h]                    ; 8b 46 f8
    1113011422    mov dx, word [bp-006h]                    ; 8b 56 fa
    11131     call 07889h                               ; e8 7c fd
     11423    call 07b1eh                               ; e8 7c fd
    1113211424    mov ax, word [bp-008h]                    ; 8b 46 f8
    1113311425    add ax, 0026ah                            ; 05 6a 02
    1113411426    mov dx, word [bp-006h]                    ; 8b 56 fa
    11135     call 087bah                               ; e8 a1 0c
     11427    call 08a4fh                               ; e8 a1 0c
    1113611428    leave                                     ; c9
    1113711429    pop di                                    ; 5f
     
    1113911431    pop cx                                    ; 59
    1114011432    retn                                      ; c3
    11141 ahci_port_deinit_current_:                   ; 0xf7b1e LB 0x13f
     11433ahci_port_deinit_current_:                   ; 0xf7db3 LB 0x13f
    1114211434    push bx                                   ; 53
    1114311435    push cx                                   ; 51
     
    1115211444    mov byte [bp-002h], al                    ; 88 46 fe
    1115311445    cmp AL, strict byte 0ffh                  ; 3c ff
    11154     je near 07c57h                            ; 0f 84 17 01
     11446    je near 07eech                            ; 0f 84 17 01
    1115511447    movzx dx, al                              ; 0f b6 d0
    1115611448    sal dx, 007h                              ; c1 e2 07
     
    1115911451    xor cx, cx                                ; 31 c9
    1116011452    mov ax, si                                ; 89 f0
    11161     call 077d6h                               ; e8 82 fc
     11453    call 07a6bh                               ; e8 82 fc
    1116211454    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    1116311455    sal ax, 007h                              ; c1 e0 07
     
    1116811460    xor cx, cx                                ; 31 c9
    1116911461    mov ax, si                                ; 89 f0
    11170     call 0781ah                               ; e8 ac fc
     11462    call 07aafh                               ; e8 ac fc
    1117111463    cmp AL, strict byte 001h                  ; 3c 01
    11172     je short 07b54h                           ; 74 e2
     11464    je short 07de9h                           ; 74 e2
    1117311465    mov cx, strict word 00020h                ; b9 20 00
    1117411466    xor bx, bx                                ; 31 db
    1117511467    mov ax, di                                ; 89 f8
    1117611468    mov dx, word [bp-004h]                    ; 8b 56 fc
    11177     call 0885ah                               ; e8 db 0c
     11469    call 08aeah                               ; e8 d6 0c
    1117811470    lea ax, [di+00080h]                       ; 8d 85 80 00
    1117911471    mov cx, strict word 00040h                ; b9 40 00
    1118011472    xor bx, bx                                ; 31 db
    1118111473    mov dx, word [bp-004h]                    ; 8b 56 fc
    11182     call 0885ah                               ; e8 cc 0c
     11474    call 08aeah                               ; e8 c7 0c
    1118311475    lea ax, [di+00200h]                       ; 8d 85 00 02
    1118411476    mov cx, strict word 00060h                ; b9 60 00
    1118511477    xor bx, bx                                ; 31 db
    1118611478    mov dx, word [bp-004h]                    ; 8b 56 fc
    11187     call 0885ah                               ; e8 bd 0c
     11479    call 08aeah                               ; e8 b8 0c
    1118811480    mov ax, word [bp-006h]                    ; 8b 46 fa
    1118911481    add ax, 00108h                            ; 05 08 01
     
    1128611578    pop bx                                    ; 5b
    1128711579    retn                                      ; c3
    11288 ahci_port_init_:                             ; 0xf7c5d LB 0x201
     11580ahci_port_init_:                             ; 0xf7ef2 LB 0x201
    1128911581    push cx                                   ; 51
    1129011582    push si                                   ; 56
     
    1129411586    mov word [bp-004h], dx                    ; 89 56 fc
    1129511587    mov byte [bp-002h], bl                    ; 88 5e fe
    11296     call 07b1eh                               ; e8 af fe
     11588    call 07db3h                               ; e8 af fe
    1129711589    movzx dx, bl                              ; 0f b6 d3
    1129811590    sal dx, 007h                              ; c1 e2 07
     
    1130211594    mov bx, strict word 00011h                ; bb 11 00
    1130311595    xor cx, cx                                ; 31 c9
    11304     call 077d6h                               ; e8 4d fb
     11596    call 07a6bh                               ; e8 4d fb
    1130511597    movzx di, byte [bp-002h]                  ; 0f b6 7e fe
    1130611598    sal di, 007h                              ; c1 e7 07
     
    1131011602    mov bx, 0c011h                            ; bb 11 c0
    1131111603    xor cx, cx                                ; 31 c9
    11312     call 0781ah                               ; e8 76 fb
     11604    call 07aafh                               ; e8 76 fb
    1131311605    cmp AL, strict byte 001h                  ; 3c 01
    11314     je short 07c89h                           ; 74 e1
     11606    je short 07f1eh                           ; 74 e1
    1131511607    mov cx, strict word 00020h                ; b9 20 00
    1131611608    xor bx, bx                                ; 31 db
    1131711609    mov ax, si                                ; 89 f0
    1131811610    mov dx, word [bp-004h]                    ; 8b 56 fc
    11319     call 0885ah                               ; e8 a5 0b
     11611    call 08aeah                               ; e8 a0 0b
    1132011612    lea ax, [si+00080h]                       ; 8d 84 80 00
    1132111613    mov cx, strict word 00040h                ; b9 40 00
    1132211614    xor bx, bx                                ; 31 db
    1132311615    mov dx, word [bp-004h]                    ; 8b 56 fc
    11324     call 0885ah                               ; e8 96 0b
     11616    call 08aeah                               ; e8 91 0b
    1132511617    mov ax, si                                ; 89 f0
    1132611618    add ah, 002h                              ; 80 c4 02
     
    1132911621    xor bx, bx                                ; 31 db
    1133011622    mov dx, word [bp-004h]                    ; 8b 56 fc
    11331     call 0885ah                               ; e8 83 0b
     11623    call 08aeah                               ; e8 7e 0b
    1133211624    lea ax, [di+00108h]                       ; 8d 85 08 01
    1133311625    cwd                                       ; 99
     
    1134311635    mov ax, word [bp-006h]                    ; 8b 46 fa
    1134411636    mov dx, word [bp-004h]                    ; 8b 56 fc
    11345     call 0786bh                               ; e8 71 fb
     11637    call 07b00h                               ; e8 71 fb
    1134611638    mov es, [bp-004h]                         ; 8e 46 fc
    1134711639    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1138811680    mov ax, si                                ; 89 f0
    1138911681    mov dx, word [bp-004h]                    ; 8b 56 fc
    11390     call 0786bh                               ; e8 05 fb
     11682    call 07b00h                               ; e8 05 fb
    1139111683    mov es, [bp-004h]                         ; 8e 46 fc
    1139211684    mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     
    1149211784    pop cx                                    ; 59
    1149311785    retn                                      ; c3
    11494 @ahci_read_sectors:                          ; 0xf7e5e LB 0x8b
     11786@ahci_read_sectors:                          ; 0xf80f3 LB 0x8b
    1149511787    push si                                   ; 56
    1149611788    push di                                   ; 57
     
    1150111793    sub di, strict byte 0000ch                ; 83 ef 0c
    1150211794    cmp di, strict byte 00004h                ; 83 ff 04
    11503     jbe short 07e82h                          ; 76 0f
     11795    jbe short 08117h                          ; 76 0f
    1150411796    push di                                   ; 57
    11505     push 00b82h                               ; 68 82 0b
    11506     push 00b94h                               ; 68 94 0b
     11797    push 00bb4h                               ; 68 b4 0b
     11798    push 00bc6h                               ; 68 c6 0b
    1150711799    push strict byte 00007h                   ; 6a 07
    11508     call 018e9h                               ; e8 6a 9a
     11800    call 018e9h                               ; e8 d5 97
    1150911801    add sp, strict byte 00008h                ; 83 c4 08
    1151011802    les bx, [bp+008h]                         ; c4 5e 08
    1151111803    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
    1151211804    xor ax, ax                                ; 31 c0
    11513     call 0776eh                               ; e8 df f8
     11805    call 07a03h                               ; e8 df f8
    1151411806    mov es, [bp+00ah]                         ; 8e 46 0a
    1151511807    add di, bx                                ; 01 df
     
    1151811810    mov dx, word [es:di+001eeh]               ; 26 8b 95 ee 01
    1151911811    xor ax, ax                                ; 31 c0
    11520     call 07c5dh                               ; e8 b6 fd
     11812    call 07ef2h                               ; e8 b6 fd
    1152111813    mov bx, strict word 00025h                ; bb 25 00
    1152211814    mov ax, di                                ; 89 f8
    1152311815    mov dx, word [bp+00ah]                    ; 8b 56 0a
    11524     call 07959h                               ; e8 a7 fa
     11816    call 07beeh                               ; e8 a7 fa
    1152511817    mov es, [bp+00ah]                         ; 8e 46 0a
    1152611818    mov bx, di                                ; 89 fb
     
    1154011832    mov dx, word [es:bx+001eeh]               ; 26 8b 97 ee 01
    1154111833    xor ax, ax                                ; 31 c0
    11542     call 07782h                               ; e8 a1 f8
     11834    call 07a17h                               ; e8 a1 f8
    1154311835    xor ax, ax                                ; 31 c0
    1154411836    pop bp                                    ; 5d
     
    1154611838    pop si                                    ; 5e
    1154711839    retn 00004h                               ; c2 04 00
    11548 @ahci_write_sectors:                         ; 0xf7ee9 LB 0x65
     11840@ahci_write_sectors:                         ; 0xf817e LB 0x65
    1154911841    push si                                   ; 56
    1155011842    push bp                                   ; 55
     
    1155611848    sub bx, strict byte 0000ch                ; 83 eb 0c
    1155711849    cmp bx, strict byte 00004h                ; 83 fb 04
    11558     jbe short 07f11h                          ; 76 0f
     11850    jbe short 081a6h                          ; 76 0f
    1155911851    push bx                                   ; 53
    11560     push 00bb3h                               ; 68 b3 0b
    11561     push 00b94h                               ; 68 94 0b
     11852    push 00be5h                               ; 68 e5 0b
     11853    push 00bc6h                               ; 68 c6 0b
    1156211854    push strict byte 00007h                   ; 6a 07
    11563     call 018e9h                               ; e8 db 99
     11855    call 018e9h                               ; e8 46 97
    1156411856    add sp, strict byte 00008h                ; 83 c4 08
    1156511857    mov es, cx                                ; 8e c1
    1156611858    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1156711859    xor ax, ax                                ; 31 c0
    11568     call 0776eh                               ; e8 51 f8
     11860    call 07a03h                               ; e8 51 f8
    1156911861    mov es, cx                                ; 8e c1
    1157011862    add bx, si                                ; 01 f3
     
    1157211864    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1157311865    xor ax, ax                                ; 31 c0
    11574     call 07c5dh                               ; e8 2c fd
     11866    call 07ef2h                               ; e8 2c fd
    1157511867    mov bx, strict word 00035h                ; bb 35 00
    1157611868    mov ax, si                                ; 89 f0
    1157711869    mov dx, cx                                ; 89 ca
    11578     call 07959h                               ; e8 1e fa
     11870    call 07beeh                               ; e8 1e fa
    1157911871    mov es, cx                                ; 8e c1
    1158011872    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1158111873    xor ax, ax                                ; 31 c0
    11582     call 07782h                               ; e8 3b f8
     11874    call 07a17h                               ; e8 3b f8
    1158311875    xor ax, ax                                ; 31 c0
    1158411876    pop bp                                    ; 5d
    1158511877    pop si                                    ; 5e
    1158611878    retn 00004h                               ; c2 04 00
    11587 ahci_cmd_packet_:                            ; 0xf7f4e LB 0x16e
     11879ahci_cmd_packet_:                            ; 0xf81e3 LB 0x16e
    1158811880    push si                                   ; 56
    1158911881    push di                                   ; 57
     
    1159511887    mov dx, strict word 0000eh                ; ba 0e 00
    1159611888    mov ax, strict word 00040h                ; b8 40 00
    11597     call 0161ch                               ; e8 b5 96
     11889    call 0161ch                               ; e8 20 94
    1159811890    mov si, 00122h                            ; be 22 01
    1159911891    mov word [bp-004h], ax                    ; 89 46 fc
    1160011892    cmp byte [bp+00eh], 002h                  ; 80 7e 0e 02
    11601     jne short 07f92h                          ; 75 1f
    11602     mov bx, 00c08h                            ; bb 08 0c
     11893    jne short 08227h                          ; 75 1f
     11894    mov bx, 00c3ah                            ; bb 3a 0c
    1160311895    mov cx, ds                                ; 8c d9
    1160411896    mov ax, strict word 00004h                ; b8 04 00
    11605     call 018aeh                               ; e8 30 99
    11606     push 00bc6h                               ; 68 c6 0b
    11607     push 00bd6h                               ; 68 d6 0b
     11897    call 018aeh                               ; e8 9b 96
     11898    push 00bf8h                               ; 68 f8 0b
     11899    push 00c08h                               ; 68 08 0c
    1160811900    push strict byte 00004h                   ; 6a 04
    11609     call 018e9h                               ; e8 60 99
     11901    call 018e9h                               ; e8 cb 96
    1161011902    add sp, strict byte 00006h                ; 83 c4 06
    1161111903    mov ax, strict word 00001h                ; b8 01 00
    11612     jmp near 080b6h                           ; e9 24 01
     11904    jmp near 0834bh                           ; e9 24 01
    1161311905    test byte [bp+008h], 001h                 ; f6 46 08 01
    11614     jne short 07f8ch                          ; 75 f4
     11906    jne short 08221h                          ; 75 f4
    1161511907    mov ax, word [bp+00ah]                    ; 8b 46 0a
    1161611908    mov dx, word [bp+00ch]                    ; 8b 56 0c
     
    1161811910    sal ax, 1                                 ; d1 e0
    1161911911    rcl dx, 1                                 ; d1 d2
    11620     loop 07fa1h                               ; e2 fa
     11912    loop 08236h                               ; e2 fa
    1162111913    mov es, [bp-004h]                         ; 8e 46 fc
    1162211914    mov word [es:si], ax                      ; 26 89 04
     
    1163011922    mov dx, word [bp+00ch]                    ; 8b 56 0c
    1163111923    xor cx, cx                                ; 31 c9
    11632     call 087f0h                               ; e8 22 08
     11924    call 08a80h                               ; e8 1d 08
    1163311925    mov word [es:si+00ah], ax                 ; 26 89 44 0a
    1163411926    xor di, di                                ; 31 ff
     
    1164011932    xor ax, ax                                ; 31 c0
    1164111933    mov dx, word [bp-006h]                    ; 8b 56 fa
    11642     call 0776eh                               ; e8 80 f7
     11934    call 07a03h                               ; e8 80 f7
    1164311935    mov es, [bp-004h]                         ; 8e 46 fc
    1164411936    mov bx, word [bp-010h]                    ; 8b 5e f0
     
    1164711939    mov dx, word [es:si+001eeh]               ; 26 8b 94 ee 01
    1164811940    xor ax, ax                                ; 31 c0
    11649     call 07c5dh                               ; e8 57 fc
     11941    call 07ef2h                               ; e8 57 fc
    1165011942    movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
    1165111943    push ax                                   ; 50
     
    1165411946    mov ax, 000c0h                            ; b8 c0 00
    1165511947    mov dx, word [bp-006h]                    ; 8b 56 fa
    11656     call 08867h                               ; e8 4d 08
     11948    call 08af7h                               ; e8 48 08
    1165711949    mov es, [bp-004h]                         ; 8e 46 fc
    1165811950    mov word [es:si+014h], di                 ; 26 89 7c 14
     
    1166111953    mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
    1166211954    test ax, ax                               ; 85 c0
    11663     je short 08058h                           ; 74 27
     11955    je short 082edh                           ; 74 27
    1166411956    dec ax                                    ; 48
    1166511957    mov es, [bp-006h]                         ; 8e 46 fa
     
    1167411966    mov ax, si                                ; 89 f0
    1167511967    mov dx, word [bp-004h]                    ; 8b 56 fc
    11676     call 07959h                               ; e8 f6 f8
     11968    call 07beeh                               ; e8 f6 f8
    1167711969    les bx, [bp-00ah]                         ; c4 5e f6
    1167811970    mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     
    1169711989    mov ax, word [bp-00ah]                    ; 8b 46 f6
    1169811990    mov dx, word [bp-008h]                    ; 8b 56 f8
    11699     call 07782h                               ; e8 e0 f6
     11991    call 07a17h                               ; e8 e0 f6
    1170011992    les bx, [bp-00ah]                         ; c4 5e f6
    1170111993    mov ax, word [es:bx+006h]                 ; 26 8b 47 06
    1170211994    or ax, word [es:bx+004h]                  ; 26 0b 47 04
    11703     jne short 080b4h                          ; 75 05
     11995    jne short 08349h                          ; 75 05
    1170411996    mov ax, strict word 00004h                ; b8 04 00
    11705     jmp short 080b6h                          ; eb 02
     11997    jmp short 0834bh                          ; eb 02
    1170611998    xor ax, ax                                ; 31 c0
    1170711999    leave                                     ; c9
     
    1170912001    pop si                                    ; 5e
    1171012002    retn 0000ch                               ; c2 0c 00
    11711 ahci_port_detect_device_:                    ; 0xf80bc LB 0x368
     12003ahci_port_detect_device_:                    ; 0xf8351 LB 0x368
    1171212004    push cx                                   ; 51
    1171312005    push si                                   ; 56
     
    1171912011    movzx cx, bl                              ; 0f b6 cb
    1172012012    mov bx, cx                                ; 89 cb
    11721     call 07c5dh                               ; e8 8a fb
     12013    call 07ef2h                               ; e8 8a fb
    1172212014    mov dx, strict word 0000eh                ; ba 0e 00
    1172312015    mov ax, strict word 00040h                ; b8 40 00
    11724     call 0161ch                               ; e8 40 95
     12016    call 0161ch                               ; e8 ab 92
    1172512017    mov word [bp-016h], ax                    ; 89 46 ea
    1172612018    mov si, 00122h                            ; be 22 01
     
    1179512087    mov bx, strict word 0000fh                ; bb 0f 00
    1179612088    xor cx, cx                                ; 31 c9
    11797     call 07850h                               ; e8 c0 f6
     12089    call 07ae5h                               ; e8 c0 f6
    1179812090    cmp ax, strict word 00003h                ; 3d 03 00
    11799     jne near 0841fh                           ; 0f 85 88 02
     12091    jne near 086b4h                           ; 0f 85 88 02
    1180012092    mov es, [bp-008h]                         ; 8e 46 f8
    1180112093    mov al, byte [es:si+001edh]               ; 26 8a 84 ed 01
    1180212094    mov byte [bp-006h], al                    ; 88 46 fa
    1180312095    cmp AL, strict byte 004h                  ; 3c 04
    11804     jnc near 0841fh                           ; 0f 83 77 02
     12096    jnc near 086b4h                           ; 0f 83 77 02
    1180512097    mov dx, word [bp-00eh]                    ; 8b 56 f2
    1180612098    add dx, 00118h                            ; 81 c2 18 01
     
    1180912101    mov bx, strict word 00010h                ; bb 10 00
    1181012102    xor cx, cx                                ; 31 c9
    11811     call 07796h                               ; e8 d7 f5
     12103    call 07a2bh                               ; e8 d7 f5
    1181212104    mov ax, word [bp-00eh]                    ; 8b 46 f2
    1181312105    add ax, 00124h                            ; 05 24 01
     
    1183312125    add cl, 00ch                              ; 80 c1 0c
    1183412126    test dx, dx                               ; 85 d2
    11835     jne near 0837ch                           ; 0f 85 81 01
     12127    jne near 08611h                           ; 0f 85 81 01
    1183612128    cmp ax, 00101h                            ; 3d 01 01
    11837     jne near 0837ch                           ; 0f 85 7a 01
     12129    jne near 08611h                           ; 0f 85 7a 01
    1183812130    mov es, [bp-008h]                         ; 8e 46 f8
    1183912131    db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     
    1184712139    mov ax, si                                ; 89 f0
    1184812140    mov dx, word [bp-016h]                    ; 8b 56 ea
    11849     call 07959h                               ; e8 2c f7
     12141    call 07beeh                               ; e8 2c f7
    1185012142    mov dh, cl                                ; 88 ce
    1185112143    test byte [bp-00218h], 080h               ; f6 86 e8 fd 80
     
    1186212154    mov word [bp-012h], bx                    ; 89 5e ee
    1186312155    cmp bx, 00fffh                            ; 81 fb ff 0f
    11864     jne short 0826ah                          ; 75 0e
     12156    jne short 084ffh                          ; 75 0e
    1186512157    cmp ax, strict word 0ffffh                ; 3d ff ff
    11866     jne short 0826ah                          ; 75 09
     12158    jne short 084ffh                          ; 75 09
    1186712159    mov ax, word [bp-00150h]                  ; 8b 86 b0 fe
    1186812160    mov word [bp-012h], strict word 00000h    ; c7 46 ee 00 00
     
    1189112183    mov al, byte [bp-006h]                    ; 8a 46 fa
    1189212184    cmp AL, strict byte 001h                  ; 3c 01
    11893     jc short 082d1h                           ; 72 0c
    11894     jbe short 082d9h                          ; 76 12
     12185    jc short 08566h                           ; 72 0c
     12186    jbe short 0856eh                          ; 76 12
    1189512187    cmp AL, strict byte 003h                  ; 3c 03
    11896     je short 082e1h                           ; 74 16
     12188    je short 08576h                           ; 74 16
    1189712189    cmp AL, strict byte 002h                  ; 3c 02
    11898     je short 082ddh                           ; 74 0e
    11899     jmp short 08323h                          ; eb 52
     12190    je short 08572h                           ; 74 0e
     12191    jmp short 085b8h                          ; eb 52
    1190012192    test al, al                               ; 84 c0
    11901     jne short 08323h                          ; 75 4e
     12193    jne short 085b8h                          ; 75 4e
    1190212194    mov DL, strict byte 040h                  ; b2 40
    11903     jmp short 082e3h                          ; eb 0a
     12195    jmp short 08578h                          ; eb 0a
    1190412196    mov DL, strict byte 048h                  ; b2 48
    11905     jmp short 082e3h                          ; eb 06
     12197    jmp short 08578h                          ; eb 06
    1190612198    mov DL, strict byte 050h                  ; b2 50
    11907     jmp short 082e3h                          ; eb 02
     12199    jmp short 08578h                          ; eb 02
    1190812200    mov DL, strict byte 058h                  ; b2 58
    1190912201    mov al, dl                                ; 88 d0
     
    1191112203    movzx bx, al                              ; 0f b6 d8
    1191212204    mov ax, bx                                ; 89 d8
    11913     call 0165ch                               ; e8 6d 93
     12205    call 0165ch                               ; e8 d8 90
    1191412206    test al, al                               ; 84 c0
    11915     je short 08323h                           ; 74 30
     12207    je short 085b8h                           ; 74 30
    1191612208    mov al, dl                                ; 88 d0
    1191712209    db  0feh, 0c0h
    1191812210    ; inc al                                    ; fe c0
    1191912211    xor ah, ah                                ; 30 e4
    11920     call 0165ch                               ; e8 60 93
     12212    call 0165ch                               ; e8 cb 90
    1192112213    movzx cx, al                              ; 0f b6 c8
    1192212214    sal cx, 008h                              ; c1 e1 08
    1192312215    movzx ax, dl                              ; 0f b6 c2
    11924     call 0165ch                               ; e8 54 93
     12216    call 0165ch                               ; e8 bf 90
    1192512217    xor ah, ah                                ; 30 e4
    1192612218    add ax, cx                                ; 01 c8
     
    1192912221    add AL, strict byte 002h                  ; 04 02
    1193012222    xor ah, ah                                ; 30 e4
    11931     call 0165ch                               ; e8 44 93
     12223    call 0165ch                               ; e8 af 90
    1193212224    movzx di, al                              ; 0f b6 f8
    1193312225    mov ax, bx                                ; 89 d8
    11934     call 0165ch                               ; e8 3c 93
     12226    call 0165ch                               ; e8 a7 90
    1193512227    movzx cx, al                              ; 0f b6 c8
    1193612228    movzx si, dh                              ; 0f b6 f6
     
    1195512247    mov dx, strict word 00075h                ; ba 75 00
    1195612248    mov ax, strict word 00040h                ; b8 40 00
    11957     call 01600h                               ; e8 97 92
     12249    call 01600h                               ; e8 02 90
    1195812250    mov dl, al                                ; 88 c2
    1195912251    db  0feh, 0c2h
     
    1196212254    mov dx, strict word 00075h                ; ba 75 00
    1196312255    mov ax, strict word 00040h                ; b8 40 00
    11964     call 0160eh                               ; e8 95 92
    11965     jmp near 08411h                           ; e9 95 00
     12256    call 0160eh                               ; e8 00 90
     12257    jmp near 086a6h                           ; e9 95 00
    1196612258    cmp dx, 0eb14h                            ; 81 fa 14 eb
    11967     jne near 08411h                           ; 0f 85 8d 00
     12259    jne near 086a6h                           ; 0f 85 8d 00
    1196812260    cmp ax, 00101h                            ; 3d 01 01
    11969     jne near 08411h                           ; 0f 85 86 00
     12261    jne near 086a6h                           ; 0f 85 86 00
    1197012262    mov es, [bp-008h]                         ; 8e 46 f8
    1197112263    db  066h, 026h, 0c7h, 004h, 000h, 000h, 000h, 000h
     
    1197912271    mov ax, si                                ; 89 f0
    1198012272    mov dx, word [bp-016h]                    ; 8b 56 ea
    11981     call 07959h                               ; e8 a3 f5
     12273    call 07beeh                               ; e8 a3 f5
    1198212274    test byte [bp-00218h], 080h               ; f6 86 e8 fd 80
    1198312275    db  00fh, 095h, 0c0h
     
    1201612308    pop cx                                    ; 59
    1201712309    retn                                      ; c3
    12018 ahci_mem_alloc_:                             ; 0xf8424 LB 0x40
     12310ahci_mem_alloc_:                             ; 0xf86b9 LB 0x40
    1201912311    push bx                                   ; 53
    1202012312    push cx                                   ; 51
     
    1202612318    mov dx, 00413h                            ; ba 13 04
    1202712319    xor ax, ax                                ; 31 c0
    12028     call 0161ch                               ; e8 e8 91
     12320    call 0161ch                               ; e8 53 8f
    1202912321    test ax, ax                               ; 85 c0
    12030     je short 0845dh                           ; 74 25
     12322    je short 086f2h                           ; 74 25
    1203112323    dec ax                                    ; 48
    1203212324    mov bx, ax                                ; 89 c3
     
    1203512327    sal ax, 1                                 ; d1 e0
    1203612328    rcl dx, 1                                 ; d1 d2
    12037     loop 08440h                               ; e2 fa
     12329    loop 086d5h                               ; e2 fa
    1203812330    mov si, ax                                ; 89 c6
    1203912331    mov di, dx                                ; 89 d7
     
    1204112333    shr di, 1                                 ; d1 ef
    1204212334    rcr si, 1                                 ; d1 de
    12043     loop 0844dh                               ; e2 fa
     12335    loop 086e2h                               ; e2 fa
    1204412336    mov dx, 00413h                            ; ba 13 04
    1204512337    xor ax, ax                                ; 31 c0
    12046     call 0162ah                               ; e8 cf 91
     12338    call 0162ah                               ; e8 3a 8f
    1204712339    mov ax, si                                ; 89 f0
    1204812340    pop bp                                    ; 5d
     
    1205312345    pop bx                                    ; 5b
    1205412346    retn                                      ; c3
    12055 ahci_hba_init_:                              ; 0xf8464 LB 0x120
     12347ahci_hba_init_:                              ; 0xf86f9 LB 0x120
    1205612348    push bx                                   ; 53
    1205712349    push cx                                   ; 51
     
    1206312355    mov dx, strict word 0000eh                ; ba 0e 00
    1206412356    mov ax, strict word 00040h                ; b8 40 00
    12065     call 0161ch                               ; e8 a4 91
     12357    call 0161ch                               ; e8 0f 8f
    1206612358    mov bx, 00122h                            ; bb 22 01
    1206712359    mov word [bp-006h], ax                    ; 89 46 fa
     
    1208012372    shr eax, 010h                             ; 66 c1 e8 10
    1208112373    xchg dx, ax                               ; 92
    12082     call 08424h                               ; e8 87 ff
     12374    call 086b9h                               ; e8 87 ff
    1208312375    mov di, ax                                ; 89 c7
    1208412376    test ax, ax                               ; 85 c0
    12085     je near 08566h                            ; 0f 84 c1 00
     12377    je near 087fbh                            ; 0f 84 c1 00
    1208612378    mov es, [bp-006h]                         ; 8e 46 fa
    1208712379    mov word [es:bx+001eeh], di               ; 26 89 bf ee 01
     
    1209712389    mov dx, strict word 00004h                ; ba 04 00
    1209812390    mov ax, si                                ; 89 f0
    12099     call 07796h                               ; e8 bd f2
     12391    call 07a2bh                               ; e8 bd f2
    1210012392    mov ax, strict word 00004h                ; b8 04 00
    1210112393    xor cx, cx                                ; 31 c9
     
    1211412406    xchg dx, ax                               ; 92
    1211512407    test AL, strict byte 001h                 ; a8 01
    12116     jne short 084d9h                          ; 75 de
     12408    jne short 0876eh                          ; 75 de
    1211712409    xor ax, ax                                ; 31 c0
    1211812410    xor cx, cx                                ; 31 c9
     
    1213212424    mov bx, strict word 0001fh                ; bb 1f 00
    1213312425    xor cx, cx                                ; 31 c9
    12134     call 07850h                               ; e8 31 f3
     12426    call 07ae5h                               ; e8 31 f3
    1213512427    db  0feh, 0c0h
    1213612428    ; inc al                                    ; fe c0
    1213712429    mov byte [bp-004h], al                    ; 88 46 fc
    1213812430    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    12139     jmp short 08533h                          ; eb 09
     12431    jmp short 087c8h                          ; eb 09
    1214012432    inc byte [bp-002h]                        ; fe 46 fe
    1214112433    cmp byte [bp-002h], 020h                  ; 80 7e fe 20
    12142     jnc short 08564h                          ; 73 31
     12434    jnc short 087f9h                          ; 73 31
    1214312435    movzx cx, byte [bp-002h]                  ; 0f b6 4e fe
    1214412436    mov ax, strict word 00001h                ; b8 01 00
    1214512437    xor dx, dx                                ; 31 d2
    12146     jcxz 08544h                               ; e3 06
     12438    jcxz 087d9h                               ; e3 06
    1214712439    sal ax, 1                                 ; d1 e0
    1214812440    rcl dx, 1                                 ; d1 d2
    12149     loop 0853eh                               ; e2 fa
     12441    loop 087d3h                               ; e2 fa
    1215012442    mov bx, ax                                ; 89 c3
    1215112443    mov cx, dx                                ; 89 d1
    1215212444    mov dx, strict word 0000ch                ; ba 0c 00
    1215312445    mov ax, si                                ; 89 f0
    12154     call 0781ah                               ; e8 ca f2
     12446    call 07aafh                               ; e8 ca f2
    1215512447    test al, al                               ; 84 c0
    12156     je short 0852ah                           ; 74 d6
     12448    je short 087bfh                           ; 74 d6
    1215712449    movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
    1215812450    xor ax, ax                                ; 31 c0
    1215912451    mov dx, di                                ; 89 fa
    12160     call 080bch                               ; e8 5d fb
     12452    call 08351h                               ; e8 5d fb
    1216112453    dec byte [bp-004h]                        ; fe 4e fc
    12162     jne short 0852ah                          ; 75 c6
     12454    jne short 087bfh                          ; 75 c6
    1216312455    xor ax, ax                                ; 31 c0
    1216412456    leave                                     ; c9
     
    1217212464    add AL, strict byte 003h                  ; 04 03
    1217312465    add al, byte [bx+di]                      ; 02 01
    12174     add byte [bx+di-07ah], dl                 ; 00 51 86
    12175     das                                       ; 2f
    12176     xchg byte [di], dh                        ; 86 35
    12177     xchg byte [bp+di], bh                     ; 86 3b
    12178     xchg byte [bx+di-07ah], al                ; 86 41 86
    12179     inc di                                    ; 47
    12180     xchg byte [di-07ah], cl                   ; 86 4d 86
    12181     push cx                                   ; 51
    12182     db  086h
    12183 _ahci_init:                                  ; 0xf8584 LB 0xf9
     12466    add dh, ah                                ; 00 e6
     12467    mov ah, al                                ; 88 c4
     12468    mov dl, cl                                ; 88 ca
     12469    mov al, dl                                ; 88 d0
     12470    mov dh, dl                                ; 88 d6
     12471    mov ah, bl                                ; 88 dc
     12472    mov dl, ah                                ; 88 e2
     12473    mov dh, ah                                ; 88 e6
     12474    db  088h
     12475_ahci_init:                                  ; 0xf8819 LB 0xf9
    1218412476    push si                                   ; 56
    1218512477    push di                                   ; 57
     
    1218712479    mov ax, 00601h                            ; b8 01 06
    1218812480    mov dx, strict word 00001h                ; ba 01 00
    12189     call 0867dh                               ; e8 ea 00
     12481    call 08912h                               ; e8 ea 00
    1219012482    mov dx, ax                                ; 89 c2
    1219112483    cmp ax, strict word 0ffffh                ; 3d ff ff
    12192     je near 08679h                            ; 0f 84 dd 00
     12484    je near 0890eh                            ; 0f 84 dd 00
    1219312485    xor al, al                                ; 30 c0
    1219412486    shr ax, 008h                              ; c1 e8 08
     
    1219812490    xor ah, ah                                ; 30 e4
    1219912491    mov bx, strict word 00034h                ; bb 34 00
    12200     call 086a5h                               ; e8 f4 00
     12492    call 0893ah                               ; e8 f4 00
    1220112493    mov cl, al                                ; 88 c1
    1220212494    test cl, cl                               ; 84 c9
    12203     je short 085dah                           ; 74 23
     12495    je short 0886fh                           ; 74 23
    1220412496    movzx bx, cl                              ; 0f b6 d9
    1220512497    movzx di, byte [bp-004h]                  ; 0f b6 7e fc
     
    1220712499    mov dx, di                                ; 89 fa
    1220812500    mov ax, si                                ; 89 f0
    12209     call 086a5h                               ; e8 dc 00
     12501    call 0893ah                               ; e8 dc 00
    1221012502    cmp AL, strict byte 012h                  ; 3c 12
    12211     je short 085dah                           ; 74 0d
     12503    je short 0886fh                           ; 74 0d
    1221212504    mov al, cl                                ; 88 c8
    1221312505    db  0feh, 0c0h
     
    1221612508    mov dx, di                                ; 89 fa
    1221712509    mov ax, si                                ; 89 f0
    12218     jmp short 085aeh                          ; eb d4
     12510    jmp short 08843h                          ; eb d4
    1221912511    test cl, cl                               ; 84 c9
    12220     je near 08679h                            ; 0f 84 99 00
     12512    je near 0890eh                            ; 0f 84 99 00
    1222112513    add cl, 002h                              ; 80 c1 02
    1222212514    movzx bx, cl                              ; 0f b6 d9
     
    1222512517    mov dx, di                                ; 89 fa
    1222612518    mov ax, si                                ; 89 f0
    12227     call 086a5h                               ; e8 b0 00
     12519    call 0893ah                               ; e8 b0 00
    1222812520    cmp AL, strict byte 010h                  ; 3c 10
    12229     jne near 08679h                           ; 0f 85 7e 00
     12521    jne near 0890eh                           ; 0f 85 7e 00
    1223012522    mov byte [bp-002h], 000h                  ; c6 46 fe 00
    1223112523    mov al, cl                                ; 88 c8
     
    1223412526    mov dx, di                                ; 89 fa
    1223512527    mov ax, si                                ; 89 f0
    12236     call 086c6h                               ; e8 b9 00
     12528    call 0895bh                               ; e8 b9 00
    1223712529    mov dx, ax                                ; 89 c2
    1223812530    and ax, strict word 0000fh                ; 25 0f 00
    1223912531    sub ax, strict word 00004h                ; 2d 04 00
    1224012532    cmp ax, strict word 0000bh                ; 3d 0b 00
    12241     jnbe short 08651h                         ; 77 37
     12533    jnbe short 088e6h                         ; 77 37
    1224212534    push CS                                   ; 0e
    1224312535    pop ES                                    ; 07
    1224412536    mov cx, strict word 00008h                ; b9 08 00
    12245     mov di, 0856dh                            ; bf 6d 85
     12537    mov di, 08802h                            ; bf 02 88
    1224612538    repne scasb                               ; f2 ae
    1224712539    sal cx, 1                                 ; d1 e1
    1224812540    mov di, cx                                ; 89 cf
    12249     mov ax, word [cs:di-07a8ch]               ; 2e 8b 85 74 85
     12541    mov ax, word [cs:di-077f7h]               ; 2e 8b 85 09 88
    1225012542    jmp ax                                    ; ff e0
    1225112543    mov byte [bp-002h], 010h                  ; c6 46 fe 10
    12252     jmp short 08651h                          ; eb 1c
     12544    jmp short 088e6h                          ; eb 1c
    1225312545    mov byte [bp-002h], 014h                  ; c6 46 fe 14
    12254     jmp short 08651h                          ; eb 16
     12546    jmp short 088e6h                          ; eb 16
    1225512547    mov byte [bp-002h], 018h                  ; c6 46 fe 18
    12256     jmp short 08651h                          ; eb 10
     12548    jmp short 088e6h                          ; eb 10
    1225712549    mov byte [bp-002h], 01ch                  ; c6 46 fe 1c
    12258     jmp short 08651h                          ; eb 0a
     12550    jmp short 088e6h                          ; eb 0a
    1225912551    mov byte [bp-002h], 020h                  ; c6 46 fe 20
    12260     jmp short 08651h                          ; eb 04
     12552    jmp short 088e6h                          ; eb 04
    1226112553    mov byte [bp-002h], 024h                  ; c6 46 fe 24
    1226212554    mov si, dx                                ; 89 d6
     
    1226512557    mov al, byte [bp-002h]                    ; 8a 46 fe
    1226612558    test al, al                               ; 84 c0
    12267     je short 08679h                           ; 74 19
     12559    je short 0890eh                           ; 74 19
    1226812560    movzx bx, al                              ; 0f b6 d8
    1226912561    movzx dx, byte [bp-004h]                  ; 0f b6 56 fc
    1227012562    movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
    12271     call 086e5h                               ; e8 77 00
     12563    call 0897ah                               ; e8 77 00
    1227212564    test AL, strict byte 001h                 ; a8 01
    12273     je short 08679h                           ; 74 07
     12565    je short 0890eh                           ; 74 07
    1227412566    and AL, strict byte 0f0h                  ; 24 f0
    1227512567    add ax, si                                ; 01 f0
    12276     call 08464h                               ; e8 eb fd
     12568    call 086f9h                               ; e8 eb fd
    1227712569    leave                                     ; c9
    1227812570    pop di                                    ; 5f
    1227912571    pop si                                    ; 5e
    1228012572    retn                                      ; c3
    12281 pci_find_classcode_:                         ; 0xf867d LB 0x28
     12573pci_find_classcode_:                         ; 0xf8912 LB 0x28
    1228212574    push bx                                   ; 53
    1228312575    push cx                                   ; 51
     
    1229412586    int 01ah                                  ; cd 1a
    1229512587    cmp ah, 000h                              ; 80 fc 00
    12296     je near 0869eh                            ; 0f 84 03 00
     12588    je near 08933h                            ; 0f 84 03 00
    1229712589    mov bx, strict word 0ffffh                ; bb ff ff
    1229812590    mov ax, bx                                ; 89 d8
     
    1230212594    pop bx                                    ; 5b
    1230312595    retn                                      ; c3
    12304 pci_read_config_byte_:                       ; 0xf86a5 LB 0x21
     12596pci_read_config_byte_:                       ; 0xf893a LB 0x21
    1230512597    push cx                                   ; 51
    1230612598    push di                                   ; 57
     
    1232012612    pop cx                                    ; 59
    1232112613    retn                                      ; c3
    12322 pci_read_config_word_:                       ; 0xf86c6 LB 0x1f
     12614pci_read_config_word_:                       ; 0xf895b LB 0x1f
    1232312615    push cx                                   ; 51
    1232412616    push di                                   ; 57
     
    1233812630    pop cx                                    ; 59
    1233912631    retn                                      ; c3
    12340 pci_read_config_dword_:                      ; 0xf86e5 LB 0x24
     12632pci_read_config_dword_:                      ; 0xf897a LB 0x24
    1234112633    push cx                                   ; 51
    1234212634    push di                                   ; 57
     
    1235812650    pop cx                                    ; 59
    1235912651    retn                                      ; c3
    12360 vds_is_present_:                             ; 0xf8709 LB 0x1d
     12652vds_is_present_:                             ; 0xf899e LB 0x1d
    1236112653    push bx                                   ; 53
    1236212654    push bp                                   ; 55
     
    1236612658    mov es, ax                                ; 8e c0
    1236712659    test byte [es:bx], 020h                   ; 26 f6 07 20
    12368     je short 08721h                           ; 74 06
     12660    je short 089b6h                           ; 74 06
    1236912661    mov ax, strict word 00001h                ; b8 01 00
    1237012662    pop bp                                    ; 5d
     
    1237512667    pop bx                                    ; 5b
    1237612668    retn                                      ; c3
    12377 vds_real_to_lin_:                            ; 0xf8726 LB 0x1e
     12669vds_real_to_lin_:                            ; 0xf89bb LB 0x1e
    1237812670    push bx                                   ; 53
    1237912671    push cx                                   ; 51
     
    1238612678    sal ax, 1                                 ; d1 e0
    1238712679    rcl dx, 1                                 ; d1 d2
    12388     loop 08734h                               ; e2 fa
     12680    loop 089c9h                               ; e2 fa
    1238912681    xor cx, cx                                ; 31 c9
    1239012682    add ax, bx                                ; 01 d8
     
    1239412686    pop bx                                    ; 5b
    1239512687    retn                                      ; c3
    12396 vds_build_sg_list_:                          ; 0xf8744 LB 0x76
     12688vds_build_sg_list_:                          ; 0xf89d9 LB 0x76
    1239712689    push si                                   ; 56
    1239812690    push di                                   ; 57
     
    1240812700    mov bx, word [bp+00ah]                    ; 8b 5e 0a
    1240912701    mov word [es:di+002h], bx                 ; 26 89 5d 02
    12410     call 08726h                               ; e8 c3 ff
     12702    call 089bbh                               ; e8 c3 ff
    1241112703    mov es, si                                ; 8e c6
    1241212704    mov word [es:di+004h], ax                 ; 26 89 45 04
    1241312705    mov word [es:di+006h], dx                 ; 26 89 55 06
    1241412706    mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
    12415     call 08709h                               ; e8 93 ff
     12707    call 0899eh                               ; e8 93 ff
    1241612708    test ax, ax                               ; 85 c0
    12417     je short 0878dh                           ; 74 13
     12709    je short 08a22h                           ; 74 13
    1241812710    mov es, si                                ; 8e c6
    1241912711    mov ax, 08105h                            ; b8 05 81
    1242012712    mov dx, strict word 00000h                ; ba 00 00
    1242112713    int 04bh                                  ; cd 4b
    12422     jc near 0878ah                            ; 0f 82 02 00
     12714    jc near 08a1fh                            ; 0f 82 02 00
    1242312715    db  032h, 0c0h
    1242412716    ; xor al, al                                ; 32 c0
    1242512717    cbw                                       ; 98
    12426     jmp short 087b4h                          ; eb 27
     12718    jmp short 08a49h                          ; eb 27
    1242712719    mov es, si                                ; 8e c6
    1242812720    mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     
    1244012732    pop si                                    ; 5e
    1244112733    retn 00004h                               ; c2 04 00
    12442 vds_free_sg_list_:                           ; 0xf87ba LB 0x36
     12734vds_free_sg_list_:                           ; 0xf8a4f LB 0x31
    1244312735    push bx                                   ; 53
    1244412736    push di                                   ; 57
     
    1244612738    mov bp, sp                                ; 89 e5
    1244712739    mov bx, ax                                ; 89 c3
    12448     call 08709h                               ; e8 45 ff
     12740    call 0899eh                               ; e8 45 ff
    1244912741    test ax, ax                               ; 85 c0
    12450     je short 087dbh                           ; 74 13
     12742    je short 08a70h                           ; 74 13
    1245112743    mov di, bx                                ; 89 df
    1245212744    mov es, dx                                ; 8e c2
     
    1245412746    mov dx, strict word 00000h                ; ba 00 00
    1245512747    int 04bh                                  ; cd 4b
    12456     jc near 087dah                            ; 0f 82 02 00
     12748    jc near 08a6fh                            ; 0f 82 02 00
    1245712749    db  032h, 0c0h
    1245812750    ; xor al, al                                ; 32 c0
     
    1246412756    pop bx                                    ; 5b
    1246512757    retn                                      ; c3
    12466     times 0x9 db 0
    12467 __U4D:                                       ; 0xf87f0 LB 0x39
     12758    times 0x4 db 0
     12759__U4D:                                       ; 0xf8a80 LB 0x39
    1246812760    pushfw                                    ; 9c
    1246912761    push eax                                  ; 66 50
     
    1249512787    popfw                                     ; 9d
    1249612788    retn                                      ; c3
    12497 __U4M:                                       ; 0xf8829 LB 0x31
     12789__U4M:                                       ; 0xf8ab9 LB 0x31
    1249812790    pushfw                                    ; 9c
    1249912791    push eax                                  ; 66 50
     
    1252012812    popfw                                     ; 9d
    1252112813    retn                                      ; c3
    12522 _fmemset_:                                   ; 0xf885a LB 0xd
     12814_fmemset_:                                   ; 0xf8aea LB 0xd
    1252312815    push di                                   ; 57
    1252412816    mov es, dx                                ; 8e c2
     
    1253012822    pop di                                    ; 5f
    1253112823    retn                                      ; c3
    12532 _fmemcpy_:                                   ; 0xf8867 LB 0x18
     12824_fmemcpy_:                                   ; 0xf8af7 LB 0x18
    1253312825    push bp                                   ; 55
    1253412826    db  08bh, 0ech
     
    1255112843    retn                                      ; c3
    1255212844
    12553   ; Padding 0x5581 bytes at 0xf887f
    12554   times 21889 db 0
     12845  ; Padding 0x52f1 bytes at 0xf8b0f
     12846  times 21233 db 0
    1255512847
    1255612848section BIOS32 progbits vstart=0xde00 align=1 ; size=0x1d7 class=CODE group=AUTO
     
    1296113253    mov ax, 0f000h                            ; b8 00 f0
    1296213254    mov word [0012ah], ax                     ; a3 2a 01
    12963     mov ax, 0fe8eh                            ; b8 8e fe
     13255    mov ax, 0fe8fh                            ; b8 8f fe
    1296413256    mov word [001c0h], ax                     ; a3 c0 01
    1296513257    mov ax, 0f000h                            ; b8 00 f0
     
    1298713279    call 01b25h                               ; e8 89 38
    1298813280    call 01f23h                               ; e8 84 3c
    12989     call 0770ah                               ; e8 68 94
    12990     call 08584h                               ; e8 df a2
     13281    call 0799fh                               ; e8 fd 96
     13282    call 08819h                               ; e8 74 a5
    1299113283    call 0ed2fh                               ; e8 87 0a
    1299213284    call 0e2d2h                               ; e8 27 00
     
    1367213964    pop DS                                    ; 1f
    1367313965    cld                                       ; fc
    13674     call 06d3ch                               ; e8 61 7d
     13966    call 06fd1h                               ; e8 f6 7f
    1367513967    popaw                                     ; 61
    1367613968    pop ES                                    ; 07
     
    1429414586    jmp short 0f88fh                          ; eb 0e
    1429514587int15_handler_mouse:                         ; 0xff881 LB 0x5
    14296     call 069b6h                               ; e8 32 71
     14588    call 06c4bh                               ; e8 c7 73
    1429714589    jmp short 0f877h                          ; eb f1
    1429814590int15_handler32:                             ; 0xff886 LB 0x9
     
    1432814620    pop DS                                    ; 1f
    1432914621    cld                                       ; fc
    14330     call 068f0h                               ; e8 39 70
     14622    call 06b85h                               ; e8 ce 72
    1433114623    pop cx                                    ; 59
    1433214624    jcxz 0f8c6h                               ; e3 0c
     
    1435514647    times 0x189 db 0
    1435614648    db  'XM'
    14357 font8x8:                                     ; 0xffa6e LB 0x420
     14649font8x8:                                     ; 0xffa6e LB 0x421
    1435814650    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
    1435914651    db  07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
     
    1442014712    db  018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
    1442114713    db  076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
    14422     db  080h, 0fch, 0b1h, 075h, 00eh, 0e8h, 0a7h, 0f2h, 072h, 003h, 0e9h, 014h, 0fah, 060h, 0e8h, 0e8h
    14423     db  067h, 061h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 00eh, 068h, 061h, 01fh, 007h, 0cfh
    14424 int70_handler:                               ; 0xffe8e LB 0x17
     14714    db  080h, 0fch, 0b1h, 075h, 00fh, 006h, 01eh, 00eh, 01fh, 0fch, 066h, 060h, 0e8h, 0eeh, 06ah, 066h
     14715    db  061h, 01fh, 007h, 0cfh, 006h, 01eh, 060h, 00eh, 01fh, 0fch, 0e8h, 00dh, 068h, 061h, 01fh, 007h
     14716    db  0cfh
     14717int70_handler:                               ; 0xffe8f LB 0x16
    1442514718    push ES                                   ; 06
    1442614719    push DS                                   ; 1e
     
    1442914722    pop DS                                    ; 1f
    1443014723    cld                                       ; fc
    14431     call 065bch                               ; e8 25 67
     14724    call 065bch                               ; e8 24 67
    1443214725    popaw                                     ; 61
    1443314726    pop DS                                    ; 1f
    1443414727    pop ES                                    ; 07
    1443514728    iret                                      ; cf
    14436     times 0x8 db 0
    14437     db  'XM'
     14729    add byte [bx+si], al                      ; 00 00
     14730    add byte [bx+si], al                      ; 00 00
     14731    add byte [bx+si], al                      ; 00 00
     14732    add byte [bx+si+04dh], bl                 ; 00 58 4d
    1443814733int08_handler:                               ; 0xffea5 LB 0xae
    1443914734    sti                                       ; fb
     
    1452314818cpu_reset:                                   ; 0xffff0 LB 0x10
    1452414819    jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
    14525     db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 005h
     14820    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 076h
  • trunk/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative.md5sum

    r42057 r42147  
    1 e550fec5c488fd7c2362c348dbf107d9 *VBoxPcBios.rom
     117c56c7a9f98b53bce65dbdf7e2df09f *VBoxPcBios.rom
  • trunk/src/VBox/Devices/PC/BIOS/bios.c

    r40960 r42147  
    4343#include "inlines.h"
    4444#include "biosint.h"
     45#include <VBox/version.h>
    4546
    4647static  const char  bios_cvs_version_string[] = "VirtualBox " VBOX_VERSION_STRING;
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