summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/PC/BIOS
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 03:01:46 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 03:01:46 +0000
commitf8fe689a81f906d1b91bb3220acde2a4ecb14c5b (patch)
tree26484e9d7e2c67806c2d1760196ff01aaa858e8c /src/VBox/Devices/PC/BIOS
parentInitial commit. (diff)
downloadvirtualbox-f8fe689a81f906d1b91bb3220acde2a4ecb14c5b.tar.xz
virtualbox-f8fe689a81f906d1b91bb3220acde2a4ecb14c5b.zip
Adding upstream version 6.0.4-dfsg.upstream/6.0.4-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/Devices/PC/BIOS')
-rw-r--r--src/VBox/Devices/PC/BIOS/Makefile.kmk200
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm17427
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm17325
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm17844
-rw-r--r--src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum1
-rw-r--r--src/VBox/Devices/PC/BIOS/ahci.c1047
-rw-r--r--src/VBox/Devices/PC/BIOS/apm.c232
-rw-r--r--src/VBox/Devices/PC/BIOS/apm_pm.asm209
-rw-r--r--src/VBox/Devices/PC/BIOS/ata.c1204
-rw-r--r--src/VBox/Devices/PC/BIOS/ata.h190
-rw-r--r--src/VBox/Devices/PC/BIOS/bios.c191
-rw-r--r--src/VBox/Devices/PC/BIOS/biosint.h311
-rw-r--r--src/VBox/Devices/PC/BIOS/boot.c354
-rw-r--r--src/VBox/Devices/PC/BIOS/disk.c640
-rw-r--r--src/VBox/Devices/PC/BIOS/ebda.h382
-rw-r--r--src/VBox/Devices/PC/BIOS/eltorito.c1025
-rw-r--r--src/VBox/Devices/PC/BIOS/floppy.c1360
-rw-r--r--src/VBox/Devices/PC/BIOS/floppyt.c104
-rw-r--r--src/VBox/Devices/PC/BIOS/font8x8.inc133
-rw-r--r--src/VBox/Devices/PC/BIOS/inlines.h247
-rw-r--r--src/VBox/Devices/PC/BIOS/invop.c350
-rw-r--r--src/VBox/Devices/PC/BIOS/keyboard.c822
-rw-r--r--src/VBox/Devices/PC/BIOS/logo.c558
-rw-r--r--src/VBox/Devices/PC/BIOS/makefile72
-rw-r--r--src/VBox/Devices/PC/BIOS/notes.txt195
-rw-r--r--src/VBox/Devices/PC/BIOS/orgs.asm2069
-rw-r--r--src/VBox/Devices/PC/BIOS/parallel.c91
-rw-r--r--src/VBox/Devices/PC/BIOS/pci32.c22
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibio32.asm98
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibios.c408
-rw-r--r--src/VBox/Devices/PC/BIOS/pcibios.inc362
-rw-r--r--src/VBox/Devices/PC/BIOS/pcicfg.inc6
-rw-r--r--src/VBox/Devices/PC/BIOS/pciutil.c186
-rw-r--r--src/VBox/Devices/PC/BIOS/pciutil.h37
-rw-r--r--src/VBox/Devices/PC/BIOS/pirq.inc477
-rw-r--r--src/VBox/Devices/PC/BIOS/pmode.inc81
-rw-r--r--src/VBox/Devices/PC/BIOS/pmsetup.inc65
-rw-r--r--src/VBox/Devices/PC/BIOS/post.c183
-rw-r--r--src/VBox/Devices/PC/BIOS/print.c296
-rw-r--r--src/VBox/Devices/PC/BIOS/ps2mouse.c452
-rw-r--r--src/VBox/Devices/PC/BIOS/scsi.c700
-rw-r--r--src/VBox/Devices/PC/BIOS/serial.c128
-rw-r--r--src/VBox/Devices/PC/BIOS/smidmi.inc70
-rw-r--r--src/VBox/Devices/PC/BIOS/system.c941
-rw-r--r--src/VBox/Devices/PC/BIOS/timepci.c324
-rw-r--r--src/VBox/Devices/PC/BIOS/vbdmismi.inc27
-rw-r--r--src/VBox/Devices/PC/BIOS/vds.c118
-rw-r--r--src/VBox/Devices/PC/BIOS/vds.h122
50 files changed, 69688 insertions, 0 deletions
diff --git a/src/VBox/Devices/PC/BIOS/Makefile.kmk b/src/VBox/Devices/PC/BIOS/Makefile.kmk
new file mode 100644
index 00000000..15881995
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/Makefile.kmk
@@ -0,0 +1,200 @@
+# $Id: Makefile.kmk $
+## @file
+# Sub-Makefile for the New BIOS ROM.
+#
+
+#
+# Copyright (C) 2012-2019 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+SUB_DEPTH = ../../../../..
+include $(KBUILD_PATH)/subheader.kmk
+
+
+ifdef VBOX_WITH_OPEN_WATCOM
+
+ #
+ # VBoxPcBios - The PC BIOS.
+ #
+ MISCBINS += VBoxPcBios386
+ VBoxPcBios386_TEMPLATE = VBoxBios
+ VBoxPcBios386_BLD_TYPE = release
+ VBoxPcBios386_CFLAGS = -3
+ VBoxPcBios386_DEFS = \
+ VBOX_PC_BIOS \
+ VBOX_LANBOOT_SEG=0xE200 \
+ VBOX_WITH_SCSI \
+ VBOX_WITH_AHCI \
+ VBOX_BIOS_CPU=80386
+ #VBoxPcBios386_DEFS.debug = DEBUG_ATA DEBUG_POST DEBUG_INT13
+ VBoxPcBios386_LDFLAGS = \
+ output raw offset=0xF0000 \
+ order \
+ clname DATA segaddr=0xF000 \
+ segment _DATA \
+ clname CODE \
+ segment _TEXT segaddr=0xF000 offset=0x1600 \
+ segment BIOS32 segaddr=0xF000 offset=0xDA00 \
+ segment BIOSSEG segaddr=0xF000 offset=0xE000
+ VBoxPcBios386_SOURCES = \
+ post.c \
+ bios.c \
+ print.c \
+ ata.c \
+ floppy.c \
+ floppyt.c \
+ eltorito.c \
+ boot.c \
+ keyboard.c \
+ disk.c \
+ serial.c \
+ system.c \
+ invop.c \
+ timepci.c \
+ ps2mouse.c \
+ parallel.c \
+ logo.c \
+ scsi.c \
+ ahci.c \
+ apm.c \
+ pcibios.c \
+ pciutil.c \
+ vds.c \
+ ../../BiosCommonCode/__U4M.asm \
+ ../../BiosCommonCode/__U4D.asm \
+ ../../BiosCommonCode/__U8RS.asm \
+ ../../BiosCommonCode/__U8LS.asm \
+ ../../BiosCommonCode/fmemset.asm \
+ ../../BiosCommonCode/fmemcpy.asm \
+ pcibio32.asm \
+ apm_pm.asm \
+ $(VBoxPcBios32_0_OUTDIR)/VBoxPcBios32.lib \
+ orgs.asm
+ #$(VBoxPcBios32_1_TARGET) - reference is lost when extending the target. weird.
+
+ # For 32-bit C code in PC BIOS.
+ LIBRARIES += VBoxPcBios32
+ VBoxPcBios32_TEMPLATE = VBoxBios32Lib
+ VBoxPcBios32_SOURCES = \
+ pci32.c
+
+ ../../BiosCommonCode/DoUInt32Div.c_CFLAGS = -mc # asm.h and uint32.h both require far data pointers by default.
+
+ MISCBINS += VBoxPcBios286
+ VBoxPcBios286_EXTENDS = VBoxPcBios386
+ VBoxPcBios286_CFLAGS = -2
+ VBoxPcBios286_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=80286
+ VBoxPcBios286_SOURCES = $(VBoxPcBios386_SOURCES) \
+ ../../BiosCommonCode/DoUInt32Div.c \
+ ../../BiosCommonCode/ASMBitLastSetU16.asm
+
+ MISCBINS += VBoxPcBios8086
+ VBoxPcBios8086_EXTENDS = VBoxPcBios386
+ VBoxPcBios8086_CFLAGS = -0
+ VBoxPcBios8086_DEFS = $(filter-out VBOX_BIOS_CPU=80386,$(VBoxPcBios386_DEFS)) VBOX_BIOS_CPU=8086
+ VBoxPcBios8086_SOURCES = $(VBoxPcBios386_SOURCES) \
+ ../../BiosCommonCode/DoUInt32Div.c \
+ ../../BiosCommonCode/ASMBitLastSetU16.asm
+
+
+ #
+ # Updates the alternative source files.
+ #
+ define def_VBoxPcBiosUpdateAltSource
+
+ $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).asm +| $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).md5sum: \
+ $$$$(VBoxPcBios$(1)_1_TARGET) \
+ $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \
+ $$(VBOX_VBOXCMP)
+ if1of ($(KBUILD_TYPE), release)
+ $$(VBOX_MAKE_ALTERNATIVE_SOURCE) \
+ --bios-image $$< \
+ --bios-map $$(basename $$<).map \
+ --bios-sym $$(basename $$<).sym \
+ --bios-type system \
+ --output $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm
+ $$(QUIET)yasm -f bin -o $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).bin $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm
+ $$(VBOX_VBOXCMP) $$< $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).bin
+ $$(CP) --changed -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm $$(PATH_ROOT)/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative$(1).asm
+ $$(REDIRECT) -C $$(dir $$(VBoxPcBios$(1)_1_TARGET)) -- \
+ $$(MD5SUM_EXT) -bo $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum $$(notdir $$(VBoxPcBios$(1)_1_TARGET))
+ $$(CP) --changed -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum $$(PATH_ROOT)/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative$(1).md5sum
+ $$(RM) -f -- $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).asm $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative.bin $$(VBoxPcBios$(1)_0_OUTDIR)/VBoxBiosAlternative$(1).md5sum
+ else
+ $$(QUIET)$$(ECHO) "Fatal error: Can only update VBoxBiosAlternative$(1).asm/md5sum with a release build."
+ $$(QUIET)exit 1
+ endif
+
+ endef
+
+ $(evalcall2 def_VBoxPcBiosUpdateAltSource,386)
+ $(evalcall2 def_VBoxPcBiosUpdateAltSource,286)
+ $(evalcall2 def_VBoxPcBiosUpdateAltSource,8086)
+
+ update-pcbios-source: \
+ $(PATH_SUB_CURRENT)/VBoxBiosAlternative386.asm \
+ $(PATH_SUB_CURRENT)/VBoxBiosAlternative286.asm \
+ $(PATH_SUB_CURRENT)/VBoxBiosAlternative8086.asm
+
+endif # VBOX_WITH_OPEN_WATCOM
+
+
+#
+# The library containing the PC BIOS image.
+#
+LIBRARIES += PcBiosBin
+PcBiosBin_TEMPLATE = VBOXR3
+PcBiosBin_DEFS = IN_VBOXDD2
+
+define def_VBoxPcBiosBin
+ PcBiosBin_CLEAN += $$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c
+ PcBiosBin_SOURCES += $$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c
+
+ ifdef VBOX_WITH_OPEN_WATCOM
+ $$$$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c: $$$$(VBoxPcBios$(1)_1_TARGET) $$(VBOX_BIN2C) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,bin2c,PcBiosBin,$$<,$$@)
+ $$(QUIET)$$(VBOX_BIN2C) -min 64 -max 256 -mask 0xffff -ascii -export PcBiosBinary$(1) $$< $$@
+ else
+ PcBiosBin_CLEAN += $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom
+
+ $$$$(PcBiosBin_0_OUTDIR)/PcBiosBin$(1).c + $$$$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom: \
+ $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).asm \
+ $$(PATH_SUB_CURRENT)/VBoxBiosAlternative$(1).md5sum \
+ $$(VBOX_BIN2C) | $$$$(dir $$$$@)
+ $$(call MSG_TOOL,bin2c,PcBiosBin,$$<,$$@)
+ $$(QUIET)yasm -f bin -o $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom $$<
+ $$(QUIET)$$(REDIRECT) -C $$(PcBiosBin_0_OUTDIR) -- \
+ $$(MD5SUM_EXT) -c $$(basename $$<).md5sum
+ $$(QUIET)$$(VBOX_BIN2C) -min 64 -max 256 -mask 0xffff -ascii -export PcBiosBinary$(1) $$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom $$@
+ $$(QUIET)$$(RM) -f -- $$$$(PcBiosBin_0_OUTDIR)/VBoxPcBios$(1).rom
+ endif
+endef
+$(evalcall2 def_VBoxPcBiosBin,386)
+$(evalcall2 def_VBoxPcBiosBin,286)
+$(evalcall2 def_VBoxPcBiosBin,8086)
+
+
+
+ifdef VBOX_WITH_OPEN_WATCOM
+ #
+ # Install the symbol file for the BIOS.
+ #
+ INSTALLS += VBoxPcBiosSym
+ VBoxPcBiosSym_TEMPLATE = VBoxDbgSyms
+ VBoxPcBiosSym_SOURCES = \
+ $(basename $(VBoxPcBios386_1_TARGET)).sym \
+ $(basename $(VBoxPcBios286_1_TARGET)).sym \
+ $(basename $(VBoxPcBios8086_1_TARGET)).sym
+endif
+
+
+include $(FILE_KBUILD_SUB_FOOTER)
+
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
new file mode 100644
index 00000000..f212565d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
@@ -0,0 +1,17427 @@
+; $Id: VBoxBiosAlternative286.asm $
+;; @file
+; Auto Generated source file. Do not edit.
+;
+
+;
+; Source file: post.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BIOS POST routines. Used only during initialization.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: print.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ata.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppy.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppyt.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Floppy drive tables.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: boot.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: keyboard.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: disk.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: serial.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: system.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: invop.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Real mode invalid opcode handler.
+;
+;
+;
+; Copyright (C) 2013-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ps2mouse.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: parallel.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: logo.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Stuff for drawing the BIOS logo.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: DoUInt32Div.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ASMBitLastSetU16.asm
+;
+; $Id: VBoxBiosAlternative286.asm $
+; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT.
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative286.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xb0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xb0 -> off=0x0 cb=000000000000005b uValue=00000000000f0000 '_fd_parm'
+_fd_parm: ; 0xf0000 LB 0x5b
+ db 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 080h, 0dfh, 002h, 025h
+ db 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 040h, 0dfh, 002h, 025h, 002h, 00fh, 01bh
+ db 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 000h, 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h
+ db 00fh, 008h, 04fh, 080h, 0afh, 002h, 025h, 002h, 012h, 01bh, 0ffh, 06ch, 0f6h, 00fh, 008h, 04fh
+ db 000h, 0afh, 002h, 025h, 002h, 024h, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 0c0h, 0afh, 002h
+ db 025h, 002h, 0ffh, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 0ffh, 000h
+ ; disGetNextSymbol 0xf005b LB 0x55 -> off=0x0 cb=000000000000000f uValue=00000000000f005b '_fd_map'
+_fd_map: ; 0xf005b LB 0xf
+ db 001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
+ ; disGetNextSymbol 0xf006a LB 0x46 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 0f3h, 02ah, 053h, 07ch, 00dh, 08ch
+ ; disGetNextSymbol 0xf0076 LB 0x3a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst'
+_softrst: ; 0xf0076 LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 078h, 02dh, 03bh, 03bh, 03bh, 03bh
+ ; disGetNextSymbol 0xf0082 LB 0x2e -> off=0x0 cb=000000000000002e uValue=00000000000f0082 '_dskacc'
+_dskacc: ; 0xf0082 LB 0x2e
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0e3h, 029h, 098h, 02ah, 000h, 000h, 000h, 000h
+ db 093h, 07ah, 073h, 07bh, 0dfh, 08ah, 087h, 08bh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+ db 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00b0 LB 0xcde -> off=0xcde cb=0000000000000000 uValue=00000000000f0d8e 'bios_cvs_version_string'
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db '%s', 00ah, 000h, 000h
+ db 'FATAL: ', 000h
+ db 'bios_printf: unknown %ll format', 00ah, 000h
+ db 'bios_printf: unknown format', 00ah, 000h
+ db 'ata-detect: Failed to detect ATA device', 00ah, 000h
+ db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h
+ db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h
+ db ' slave', 000h
+ db 'master', 000h
+ db 'ata%d %s: ', 000h
+ db '%c', 000h
+ db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h
+ db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h
+ db ' ATAPI-%d Device', 00ah, 000h
+ db 'ata%d %s: Unknown device', 00ah, 000h
+ db 'ata_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'set_diskette_current_cyl: drive > 1', 00ah, 000h
+ db 'int13_diskette_function', 000h
+ db '%s: drive>1 || head>1 ...', 00ah, 000h
+ db '%s: ctrl not ready', 00ah, 000h
+ db '%s: write error', 00ah, 000h
+ db '%s: bad floppy type', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h, 000h
+ db 'int13_eltorito', 000h
+ db '%s: call with AX=%04x not implemented.', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h
+ db 'int13_cdemu', 000h
+ db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h
+ db '%s: function %02x, status %02x !', 00ah, 000h
+ db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h
+ db 'int13_cdrom', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h
+ db 'Booting from %s...', 00ah, 000h
+ db 'Boot from %s failed', 00ah, 000h
+ db 'Boot from %s %d failed', 00ah, 000h
+ db 'No bootable medium found! System halted.', 00ah, 000h
+ db 'Could not read from the boot medium! System halted.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h
+ db 'Keyboard error:%u', 00ah, 000h
+ db 'KBD: int09 handler: AL=0', 00ah, 000h
+ db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h
+ db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h
+ db 'KBD: int16h: out of keyboard input', 00ah, 000h
+ db 'KBD: unsupported int 16h function %02x', 00ah, 000h
+ db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h
+ db 'int13_harddisk', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h
+ db '%s: function %02x, count out of range!', 00ah, 000h
+ db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah
+ db 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db 'format disk track called', 00ah, 000h
+ db '%s: function %02xh unimplemented, returns success', 00ah, 000h
+ db '%s: function %02xh unsupported, returns fail', 00ah, 000h
+ db 'int13_harddisk_ext', 000h
+ db '%s: function %02x. LBA out of range', 00ah, 000h, 000h
+ db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h
+ db '*** int 15h function AH=bf not yet supported!', 00ah, 000h
+ db 'EISA BIOS not present', 00ah, 000h
+ db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h
+ db 'sendmouse', 000h
+ db 'setkbdcomm', 000h
+ db 'Mouse reset returned %02x (should be ack)', 00ah, 000h
+ db 'Mouse status returned %02x (should be ack)', 00ah, 000h
+ db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h
+ db 'INT 15h C2 default case entered', 00ah, 000h, 000h
+ db 'Key pressed: %x', 00ah, 000h
+ db 00ah, 00ah, ' AHCI controller:', 000h
+ db 00ah, ' %d) Hard disk', 000h
+ db 00ah, 00ah, ' SCSI controller:', 000h
+ db ' IDE controller:', 000h
+ db 00ah, 00ah, 'AHCI controller:', 00ah, 000h
+ db 00ah, ' %d) ', 000h
+ db 'Secondary ', 000h
+ db 'Primary ', 000h
+ db 'Slave', 000h
+ db 'Master', 000h
+ db 'No hard disks found', 000h
+ db 00ah, 000h
+ db 'Press F12 to select boot device.', 00ah, 000h
+ db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H'
+ db 'ard disks:', 00ah, 00ah, 000h
+ db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah
+ db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h
+ db 'Delaying boot for %d seconds:', 000h
+ db ' %d', 000h, 000h
+ db 'scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'scsi_write_sectors', 000h
+ db 'scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'scsi_enumerate_attached_devices', 000h
+ db '%s: SCSI_INQUIRY failed', 00ah, 000h
+ db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
+ db 'Disk %d has an unsupported sector size of %u', 00ah, 000h
+ db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
+ db 'ahci_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'ahci_write_sectors', 000h
+ db 'ahci_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'Standby', 000h
+ db 'Suspend', 000h
+ db 'Shutdown', 000h
+ db 'APM: Unsupported function AX=%04X BX=%04X called', 00ah, 000h, 000h
+ db 'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
+
+section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0d8e LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0d8e 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0d8e LB 0x12
+ db 'VirtualBox 6.0.4', 000h, 000h
+ ; disGetNextSymbol 0xf0da0 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0da0 '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0da0 LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0da8 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0da8 'isotag'
+isotag: ; 0xf0da8 LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0dae LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dae 'eltorito'
+eltorito: ; 0xf0dae LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0dc6 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0dc6 'drivetypes'
+drivetypes: ; 0xf0dc6 LB 0x28
+ db 046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
+ db 069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
+ db 04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ ; disGetNextSymbol 0xf0dee LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0dee 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0dee LB 0x37a
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
+ db 000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
+ db 040h, 003h, 000h, 003h, 000h, 079h, 000h, 000h, 033h, 004h, 023h, 004h, 000h, 000h, 000h, 07ah
+ db 000h, 000h, 034h, 005h, 024h, 005h, 000h, 000h, 000h, 07bh, 000h, 000h, 035h, 006h, 025h, 006h
+ db 000h, 000h, 000h, 07ch, 000h, 000h, 036h, 007h, 05eh, 007h, 01eh, 007h, 000h, 07dh, 000h, 000h
+ db 037h, 008h, 026h, 008h, 000h, 000h, 000h, 07eh, 000h, 000h, 038h, 009h, 02ah, 009h, 000h, 000h
+ db 000h, 07fh, 000h, 000h, 039h, 00ah, 028h, 00ah, 000h, 000h, 000h, 080h, 000h, 000h, 030h, 00bh
+ db 029h, 00bh, 000h, 000h, 000h, 081h, 000h, 000h, 02dh, 00ch, 05fh, 00ch, 01fh, 00ch, 000h, 082h
+ db 000h, 000h, 03dh, 00dh, 02bh, 00dh, 000h, 000h, 000h, 083h, 000h, 000h, 008h, 00eh, 008h, 00eh
+ db 07fh, 00eh, 000h, 000h, 000h, 000h, 009h, 00fh, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h
+ db 071h, 010h, 051h, 010h, 011h, 010h, 000h, 010h, 040h, 000h, 077h, 011h, 057h, 011h, 017h, 011h
+ db 000h, 011h, 040h, 000h, 065h, 012h, 045h, 012h, 005h, 012h, 000h, 012h, 040h, 000h, 072h, 013h
+ db 052h, 013h, 012h, 013h, 000h, 013h, 040h, 000h, 074h, 014h, 054h, 014h, 014h, 014h, 000h, 014h
+ db 040h, 000h, 079h, 015h, 059h, 015h, 019h, 015h, 000h, 015h, 040h, 000h, 075h, 016h, 055h, 016h
+ db 015h, 016h, 000h, 016h, 040h, 000h, 069h, 017h, 049h, 017h, 009h, 017h, 000h, 017h, 040h, 000h
+ db 06fh, 018h, 04fh, 018h, 00fh, 018h, 000h, 018h, 040h, 000h, 070h, 019h, 050h, 019h, 010h, 019h
+ db 000h, 019h, 040h, 000h, 05bh, 01ah, 07bh, 01ah, 01bh, 01ah, 000h, 000h, 000h, 000h, 05dh, 01bh
+ db 07dh, 01bh, 01dh, 01bh, 000h, 000h, 000h, 000h, 00dh, 01ch, 00dh, 01ch, 00ah, 01ch, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 061h, 01eh, 041h, 01eh
+ db 001h, 01eh, 000h, 01eh, 040h, 000h, 073h, 01fh, 053h, 01fh, 013h, 01fh, 000h, 01fh, 040h, 000h
+ db 064h, 020h, 044h, 020h, 004h, 020h, 000h, 020h, 040h, 000h, 066h, 021h, 046h, 021h, 006h, 021h
+ db 000h, 021h, 040h, 000h, 067h, 022h, 047h, 022h, 007h, 022h, 000h, 022h, 040h, 000h, 068h, 023h
+ db 048h, 023h, 008h, 023h, 000h, 023h, 040h, 000h, 06ah, 024h, 04ah, 024h, 00ah, 024h, 000h, 024h
+ db 040h, 000h, 06bh, 025h, 04bh, 025h, 00bh, 025h, 000h, 025h, 040h, 000h, 06ch, 026h, 04ch, 026h
+ db 00ch, 026h, 000h, 026h, 040h, 000h, 03bh, 027h, 03ah, 027h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 027h, 028h, 022h, 028h, 000h, 000h, 000h, 000h, 000h, 000h, 060h, 029h, 07eh, 029h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 02bh
+ db 07ch, 02bh, 01ch, 02bh, 000h, 000h, 000h, 000h, 07ah, 02ch, 05ah, 02ch, 01ah, 02ch, 000h, 02ch
+ db 040h, 000h, 078h, 02dh, 058h, 02dh, 018h, 02dh, 000h, 02dh, 040h, 000h, 063h, 02eh, 043h, 02eh
+ db 003h, 02eh, 000h, 02eh, 040h, 000h, 076h, 02fh, 056h, 02fh, 016h, 02fh, 000h, 02fh, 040h, 000h
+ db 062h, 030h, 042h, 030h, 002h, 030h, 000h, 030h, 040h, 000h, 06eh, 031h, 04eh, 031h, 00eh, 031h
+ db 000h, 031h, 040h, 000h, 06dh, 032h, 04dh, 032h, 00dh, 032h, 000h, 032h, 040h, 000h, 02ch, 033h
+ db 03ch, 033h, 000h, 000h, 000h, 000h, 000h, 000h, 02eh, 034h, 03eh, 034h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 02fh, 035h, 03fh, 035h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 037h, 02ah, 037h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 039h, 020h, 039h, 020h, 039h
+ db 020h, 039h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03bh
+ db 000h, 054h, 000h, 05eh, 000h, 068h, 000h, 000h, 000h, 03ch, 000h, 055h, 000h, 05fh, 000h, 069h
+ db 000h, 000h, 000h, 03dh, 000h, 056h, 000h, 060h, 000h, 06ah, 000h, 000h, 000h, 03eh, 000h, 057h
+ db 000h, 061h, 000h, 06bh, 000h, 000h, 000h, 03fh, 000h, 058h, 000h, 062h, 000h, 06ch, 000h, 000h
+ db 000h, 040h, 000h, 059h, 000h, 063h, 000h, 06dh, 000h, 000h, 000h, 041h, 000h, 05ah, 000h, 064h
+ db 000h, 06eh, 000h, 000h, 000h, 042h, 000h, 05bh, 000h, 065h, 000h, 06fh, 000h, 000h, 000h, 043h
+ db 000h, 05ch, 000h, 066h, 000h, 070h, 000h, 000h, 000h, 044h, 000h, 05dh, 000h, 067h, 000h, 071h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 047h, 037h, 047h, 000h, 077h, 000h, 000h, 020h, 000h
+ db 000h, 048h, 038h, 048h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 049h, 039h, 049h, 000h, 084h
+ db 000h, 000h, 020h, 000h, 02dh, 04ah, 02dh, 04ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04bh
+ db 034h, 04bh, 000h, 073h, 000h, 000h, 020h, 000h, 000h, 04ch, 035h, 04ch, 000h, 000h, 000h, 000h
+ db 020h, 000h, 000h, 04dh, 036h, 04dh, 000h, 074h, 000h, 000h, 020h, 000h, 02bh, 04eh, 02bh, 04eh
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04fh, 031h, 04fh, 000h, 075h, 000h, 000h, 020h, 000h
+ db 000h, 050h, 032h, 050h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 051h, 033h, 051h, 000h, 076h
+ db 000h, 000h, 020h, 000h, 000h, 052h, 030h, 052h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 053h
+ db 02eh, 053h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 056h, 07ch, 056h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
+ db 000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
+ ; disGetNextSymbol 0xf1168 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f1168 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf1168 LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x478 bytes at 0xf1188
+ times 1144 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x88c8 class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x88c8 -> off=0x0 cb=0000000000000050 uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x50
+ push bp ; 55 ; 0xf1600 post.c:73
+ mov bp, sp ; 89 e5 ; 0xf1601
+ push bx ; 53 ; 0xf1603
+ push cx ; 51 ; 0xf1604
+ push si ; 56 ; 0xf1605
+ push ax ; 50 ; 0xf1606
+ push ax ; 50 ; 0xf1607
+ mov bx, ax ; 89 c3 ; 0xf1608
+ mov cx, dx ; 89 d1 ; 0xf160a
+ cmp bx, cx ; 39 cb ; 0xf160c post.c:80
+ jnc short 01648h ; 73 38 ; 0xf160e
+ xor si, si ; 31 f6 ; 0xf1610 post.c:81
+ mov dx, bx ; 89 da ; 0xf1612
+ mov es, bx ; 8e c3 ; 0xf1614 post.c:83
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf1616
+ jne short 01642h ; 75 25 ; 0xf161b
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf161d post.c:89
+ mov word [bp-00ah], strict word 00003h ; c7 46 f6 03 00 ; 0xf1620
+ call far [bp-00ah] ; ff 5e f6 ; 0xf1625 post.c:90
+ cli ; fa ; 0xf1628 post.c:91
+ mov es, bx ; 8e c3 ; 0xf1629 post.c:95
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf162b
+ add AL, strict byte 003h ; 04 03 ; 0xf162f
+ and AL, strict byte 0fch ; 24 fc ; 0xf1631
+ xor ah, ah ; 30 e4 ; 0xf1633 post.c:96
+ cwd ; 99 ; 0xf1635
+ sal dx, 002h ; c1 e2 02 ; 0xf1636
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf1639
+ sar ax, 002h ; c1 f8 02 ; 0xf163b
+ add bx, ax ; 01 c3 ; 0xf163e
+ jmp short 0160ch ; eb ca ; 0xf1640 post.c:98
+ add bx, 00080h ; 81 c3 80 00 ; 0xf1642 post.c:100
+ jmp short 0160ch ; eb c4 ; 0xf1646 post.c:102
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf1648 post.c:103
+ pop si ; 5e ; 0xf164b
+ pop cx ; 59 ; 0xf164c
+ pop bx ; 5b ; 0xf164d
+ pop bp ; 5d ; 0xf164e
+ retn ; c3 ; 0xf164f
+ ; disGetNextSymbol 0xf1650 LB 0x8878 -> off=0x0 cb=000000000000001b uValue=00000000000f0050 'inb_cmos'
+inb_cmos: ; 0xf1650 LB 0x1b
+ push bp ; 55 ; 0xf1650 bios.c:65
+ mov bp, sp ; 89 e5 ; 0xf1651
+ push dx ; 52 ; 0xf1653
+ mov AH, strict byte 070h ; b4 70 ; 0xf1654 bios.c:67
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1656 bios.c:69
+ jc short 0165ch ; 72 02 ; 0xf1658
+ mov AH, strict byte 072h ; b4 72 ; 0xf165a bios.c:70
+ mov dl, ah ; 88 e2 ; 0xf165c bios.c:71
+ xor dh, dh ; 30 f6 ; 0xf165e
+ out DX, AL ; ee ; 0xf1660
+ inc dx ; 42 ; 0xf1661 bios.c:72
+ in AL, DX ; ec ; 0xf1662
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1663
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1665 bios.c:73
+ pop dx ; 5a ; 0xf1668
+ pop bp ; 5d ; 0xf1669
+ retn ; c3 ; 0xf166a
+ ; disGetNextSymbol 0xf166b LB 0x885d -> off=0x0 cb=000000000000001d uValue=00000000000f006b 'outb_cmos'
+outb_cmos: ; 0xf166b LB 0x1d
+ push bp ; 55 ; 0xf166b bios.c:75
+ mov bp, sp ; 89 e5 ; 0xf166c
+ push bx ; 53 ; 0xf166e
+ mov bl, dl ; 88 d3 ; 0xf166f
+ mov AH, strict byte 070h ; b4 70 ; 0xf1671 bios.c:77
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1673 bios.c:79
+ jc short 01679h ; 72 02 ; 0xf1675
+ mov AH, strict byte 072h ; b4 72 ; 0xf1677 bios.c:80
+ mov dl, ah ; 88 e2 ; 0xf1679 bios.c:81
+ xor dh, dh ; 30 f6 ; 0xf167b
+ out DX, AL ; ee ; 0xf167d
+ inc dx ; 42 ; 0xf167e bios.c:82
+ mov al, bl ; 88 d8 ; 0xf167f
+ out DX, AL ; ee ; 0xf1681
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1682 bios.c:83
+ pop bx ; 5b ; 0xf1685
+ pop bp ; 5d ; 0xf1686
+ retn ; c3 ; 0xf1687
+ ; disGetNextSymbol 0xf1688 LB 0x8840 -> off=0x0 cb=0000000000000061 uValue=00000000000f0088 'dummy_isr_function'
+dummy_isr_function: ; 0xf1688 LB 0x61
+ push bp ; 55 ; 0xf1688 bios.c:85
+ mov bp, sp ; 89 e5 ; 0xf1689
+ push ax ; 50 ; 0xf168b
+ mov CL, strict byte 0ffh ; b1 ff ; 0xf168c bios.c:93
+ mov AL, strict byte 00bh ; b0 0b ; 0xf168e bios.c:95
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1690
+ out DX, AL ; ee ; 0xf1693
+ in AL, DX ; ec ; 0xf1694 bios.c:96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1695
+ mov bx, ax ; 89 c3 ; 0xf1697
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf1699
+ test al, al ; 84 c0 ; 0xf169c bios.c:97
+ je short 016dah ; 74 3a ; 0xf169e
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16a0 bios.c:98
+ mov dx, 000a0h ; ba a0 00 ; 0xf16a2
+ out DX, AL ; ee ; 0xf16a5
+ in AL, DX ; ec ; 0xf16a6 bios.c:99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16a7
+ mov cx, ax ; 89 c1 ; 0xf16a9
+ test al, al ; 84 c0 ; 0xf16ab bios.c:100
+ je short 016c2h ; 74 13 ; 0xf16ad
+ mov dx, 000a1h ; ba a1 00 ; 0xf16af bios.c:101
+ in AL, DX ; ec ; 0xf16b2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16b3
+ mov bl, cl ; 88 cb ; 0xf16b5 bios.c:102
+ or al, bl ; 08 d8 ; 0xf16b7
+ out DX, AL ; ee ; 0xf16b9
+ mov AL, strict byte 020h ; b0 20 ; 0xf16ba bios.c:103
+ mov dx, 000a0h ; ba a0 00 ; 0xf16bc
+ out DX, AL ; ee ; 0xf16bf
+ jmp short 016d1h ; eb 0f ; 0xf16c0 bios.c:104
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf16c2 bios.c:105
+ in AL, DX ; ec ; 0xf16c5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16c6
+ and bl, 0fbh ; 80 e3 fb ; 0xf16c8 bios.c:106
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf16cb
+ or al, bl ; 08 d8 ; 0xf16ce bios.c:107
+ out DX, AL ; ee ; 0xf16d0
+ mov AL, strict byte 020h ; b0 20 ; 0xf16d1 bios.c:109
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf16d3
+ out DX, AL ; ee ; 0xf16d6
+ mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf16d7 bios.c:110
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf16da bios.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf16dd
+ mov es, ax ; 8e c0 ; 0xf16e0
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf16e2
+ mov sp, bp ; 89 ec ; 0xf16e5 bios.c:113
+ pop bp ; 5d ; 0xf16e7
+ retn ; c3 ; 0xf16e8
+ ; disGetNextSymbol 0xf16e9 LB 0x87df -> off=0x0 cb=0000000000000012 uValue=00000000000f00e9 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf16e9 LB 0x12
+ push bp ; 55 ; 0xf16e9 bios.c:116
+ mov bp, sp ; 89 e5 ; 0xf16ea
+ push 000b0h ; 68 b0 00 ; 0xf16ec bios.c:118
+ push strict byte 00007h ; 6a 07 ; 0xf16ef
+ call 018ffh ; e8 0b 02 ; 0xf16f1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf16f4
+ mov sp, bp ; 89 ec ; 0xf16f7 bios.c:119
+ pop bp ; 5d ; 0xf16f9
+ retn ; c3 ; 0xf16fa
+ ; disGetNextSymbol 0xf16fb LB 0x87cd -> off=0x0 cb=0000000000000012 uValue=00000000000f00fb 'int18_panic_msg'
+int18_panic_msg: ; 0xf16fb LB 0x12
+ push bp ; 55 ; 0xf16fb bios.c:121
+ mov bp, sp ; 89 e5 ; 0xf16fc
+ push 000c4h ; 68 c4 00 ; 0xf16fe bios.c:123
+ push strict byte 00007h ; 6a 07 ; 0xf1701
+ call 018ffh ; e8 f9 01 ; 0xf1703
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1706
+ mov sp, bp ; 89 ec ; 0xf1709 bios.c:124
+ pop bp ; 5d ; 0xf170b
+ retn ; c3 ; 0xf170c
+ ; disGetNextSymbol 0xf170d LB 0x87bb -> off=0x0 cb=0000000000000020 uValue=00000000000f010d 'log_bios_start'
+log_bios_start: ; 0xf170d LB 0x20
+ push bp ; 55 ; 0xf170d bios.c:126
+ mov bp, sp ; 89 e5 ; 0xf170e
+ mov bx, 00da0h ; bb a0 0d ; 0xf1710 bios.c:131
+ mov cx, ds ; 8c d9 ; 0xf1713
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1715
+ call 018bch ; e8 a1 01 ; 0xf1718
+ push 00d8eh ; 68 8e 0d ; 0xf171b
+ push 000d9h ; 68 d9 00 ; 0xf171e
+ push strict byte 00004h ; 6a 04 ; 0xf1721
+ call 018ffh ; e8 d9 01 ; 0xf1723
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf1726
+ mov sp, bp ; 89 ec ; 0xf1729 bios.c:132
+ pop bp ; 5d ; 0xf172b
+ retn ; c3 ; 0xf172c
+ ; disGetNextSymbol 0xf172d LB 0x879b -> off=0x0 cb=0000000000000027 uValue=00000000000f012d 'print_bios_banner'
+print_bios_banner: ; 0xf172d LB 0x27
+ push bp ; 55 ; 0xf172d bios.c:151
+ mov bp, sp ; 89 e5 ; 0xf172e
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf1730 bios.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1733
+ mov es, ax ; 8e c0 ; 0xf1736
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1738
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf173b bios.c:53
+ cmp ax, 01234h ; 3d 34 12 ; 0xf1740 bios.c:157
+ jne short 0174dh ; 75 08 ; 0xf1743
+ mov AL, strict byte 003h ; b0 03 ; 0xf1745 bios.c:160
+ mov AH, strict byte 000h ; b4 00 ; 0xf1747
+ int 010h ; cd 10 ; 0xf1749
+ jmp short 01750h ; eb 03 ; 0xf174b bios.c:161
+ call 0762ch ; e8 dc 5e ; 0xf174d bios.c:164
+ mov sp, bp ; 89 ec ; 0xf1750 bios.c:191
+ pop bp ; 5d ; 0xf1752
+ retn ; c3 ; 0xf1753
+ ; disGetNextSymbol 0xf1754 LB 0x8774 -> off=0x0 cb=000000000000003b uValue=00000000000f0154 'send'
+send: ; 0xf1754 LB 0x3b
+ push bp ; 55 ; 0xf1754 print.c:72
+ mov bp, sp ; 89 e5 ; 0xf1755
+ push bx ; 53 ; 0xf1757
+ push cx ; 51 ; 0xf1758
+ mov bx, ax ; 89 c3 ; 0xf1759
+ mov cl, dl ; 88 d1 ; 0xf175b
+ test AL, strict byte 008h ; a8 08 ; 0xf175d print.c:80
+ je short 01767h ; 74 06 ; 0xf175f
+ mov al, dl ; 88 d0 ; 0xf1761 print.c:81
+ mov dx, 00403h ; ba 03 04 ; 0xf1763
+ out DX, AL ; ee ; 0xf1766
+ test bl, 004h ; f6 c3 04 ; 0xf1767 print.c:82
+ je short 01772h ; 74 06 ; 0xf176a
+ mov al, cl ; 88 c8 ; 0xf176c print.c:83
+ mov dx, 00504h ; ba 04 05 ; 0xf176e
+ out DX, AL ; ee ; 0xf1771
+ test bl, 002h ; f6 c3 02 ; 0xf1772 print.c:85
+ je short 01788h ; 74 11 ; 0xf1775
+ cmp cl, 00ah ; 80 f9 0a ; 0xf1777 print.c:86
+ jne short 01782h ; 75 06 ; 0xf177a
+ mov AL, strict byte 00dh ; b0 0d ; 0xf177c print.c:87
+ mov AH, strict byte 00eh ; b4 0e ; 0xf177e
+ int 010h ; cd 10 ; 0xf1780
+ mov al, cl ; 88 c8 ; 0xf1782 print.c:88
+ mov AH, strict byte 00eh ; b4 0e ; 0xf1784
+ int 010h ; cd 10 ; 0xf1786
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1788 print.c:90
+ pop cx ; 59 ; 0xf178b
+ pop bx ; 5b ; 0xf178c
+ pop bp ; 5d ; 0xf178d
+ retn ; c3 ; 0xf178e
+ ; disGetNextSymbol 0xf178f LB 0x8739 -> off=0x0 cb=000000000000005f uValue=00000000000f018f 'put_int'
+put_int: ; 0xf178f LB 0x5f
+ push bp ; 55 ; 0xf178f print.c:92
+ mov bp, sp ; 89 e5 ; 0xf1790
+ push si ; 56 ; 0xf1792
+ push di ; 57 ; 0xf1793
+ push ax ; 50 ; 0xf1794
+ push ax ; 50 ; 0xf1795
+ mov si, ax ; 89 c6 ; 0xf1796
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf1798
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf179b print.c:94
+ mov ax, dx ; 89 d0 ; 0xf179e
+ cwd ; 99 ; 0xf17a0
+ idiv di ; f7 ff ; 0xf17a1
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf17a3
+ test ax, ax ; 85 c0 ; 0xf17a6 print.c:95
+ je short 017b4h ; 74 0a ; 0xf17a8
+ dec bx ; 4b ; 0xf17aa print.c:96
+ mov dx, ax ; 89 c2 ; 0xf17ab
+ mov ax, si ; 89 f0 ; 0xf17ad
+ call 0178fh ; e8 dd ff ; 0xf17af
+ jmp short 017cfh ; eb 1b ; 0xf17b2 print.c:97
+ dec bx ; 4b ; 0xf17b4 print.c:98
+ test bx, bx ; 85 db ; 0xf17b5
+ jle short 017c3h ; 7e 0a ; 0xf17b7
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17b9 print.c:99
+ mov ax, si ; 89 f0 ; 0xf17bc
+ call 01754h ; e8 93 ff ; 0xf17be
+ jmp short 017b4h ; eb f1 ; 0xf17c1
+ test cx, cx ; 85 c9 ; 0xf17c3 print.c:100
+ je short 017cfh ; 74 08 ; 0xf17c5
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf17c7 print.c:101
+ mov ax, si ; 89 f0 ; 0xf17ca
+ call 01754h ; e8 85 ff ; 0xf17cc
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf17cf print.c:103
+ mov BL, strict byte 00ah ; b3 0a ; 0xf17d2
+ mul bl ; f6 e3 ; 0xf17d4
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf17d6
+ sub bl, al ; 28 c3 ; 0xf17d9
+ add bl, 030h ; 80 c3 30 ; 0xf17db
+ xor bh, bh ; 30 ff ; 0xf17de
+ mov dx, bx ; 89 da ; 0xf17e0
+ mov ax, si ; 89 f0 ; 0xf17e2
+ call 01754h ; e8 6d ff ; 0xf17e4
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf17e7 print.c:104
+ pop di ; 5f ; 0xf17ea
+ pop si ; 5e ; 0xf17eb
+ pop bp ; 5d ; 0xf17ec
+ retn ; c3 ; 0xf17ed
+ ; disGetNextSymbol 0xf17ee LB 0x86da -> off=0x0 cb=000000000000005e uValue=00000000000f01ee 'put_uint'
+put_uint: ; 0xf17ee LB 0x5e
+ push bp ; 55 ; 0xf17ee print.c:106
+ mov bp, sp ; 89 e5 ; 0xf17ef
+ push si ; 56 ; 0xf17f1
+ push di ; 57 ; 0xf17f2
+ push ax ; 50 ; 0xf17f3
+ push ax ; 50 ; 0xf17f4
+ mov si, ax ; 89 c6 ; 0xf17f5
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf17f7
+ mov ax, dx ; 89 d0 ; 0xf17fa print.c:108
+ xor dx, dx ; 31 d2 ; 0xf17fc
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf17fe
+ div di ; f7 f7 ; 0xf1801
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1803
+ test ax, ax ; 85 c0 ; 0xf1806 print.c:109
+ je short 01814h ; 74 0a ; 0xf1808
+ dec bx ; 4b ; 0xf180a print.c:110
+ mov dx, ax ; 89 c2 ; 0xf180b
+ mov ax, si ; 89 f0 ; 0xf180d
+ call 017eeh ; e8 dc ff ; 0xf180f
+ jmp short 0182fh ; eb 1b ; 0xf1812 print.c:111
+ dec bx ; 4b ; 0xf1814 print.c:112
+ test bx, bx ; 85 db ; 0xf1815
+ jle short 01823h ; 7e 0a ; 0xf1817
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1819 print.c:113
+ mov ax, si ; 89 f0 ; 0xf181c
+ call 01754h ; e8 33 ff ; 0xf181e
+ jmp short 01814h ; eb f1 ; 0xf1821
+ test cx, cx ; 85 c9 ; 0xf1823 print.c:114
+ je short 0182fh ; 74 08 ; 0xf1825
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1827 print.c:115
+ mov ax, si ; 89 f0 ; 0xf182a
+ call 01754h ; e8 25 ff ; 0xf182c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf182f print.c:117
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1832
+ mul dl ; f6 e2 ; 0xf1834
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1836
+ sub dl, al ; 28 c2 ; 0xf1839
+ add dl, 030h ; 80 c2 30 ; 0xf183b
+ xor dh, dh ; 30 f6 ; 0xf183e
+ mov ax, si ; 89 f0 ; 0xf1840
+ call 01754h ; e8 0f ff ; 0xf1842
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1845 print.c:118
+ pop di ; 5f ; 0xf1848
+ pop si ; 5e ; 0xf1849
+ pop bp ; 5d ; 0xf184a
+ retn ; c3 ; 0xf184b
+ ; disGetNextSymbol 0xf184c LB 0x867c -> off=0x0 cb=0000000000000070 uValue=00000000000f024c 'put_luint'
+put_luint: ; 0xf184c LB 0x70
+ push bp ; 55 ; 0xf184c print.c:120
+ mov bp, sp ; 89 e5 ; 0xf184d
+ push si ; 56 ; 0xf184f
+ push di ; 57 ; 0xf1850
+ push ax ; 50 ; 0xf1851
+ push ax ; 50 ; 0xf1852
+ mov si, ax ; 89 c6 ; 0xf1853
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf1855
+ mov di, dx ; 89 d7 ; 0xf1858
+ mov ax, bx ; 89 d8 ; 0xf185a print.c:122
+ mov dx, cx ; 89 ca ; 0xf185c
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf185e
+ xor cx, cx ; 31 c9 ; 0xf1861
+ call 09b60h ; e8 fa 82 ; 0xf1863
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf1866
+ mov cx, dx ; 89 d1 ; 0xf1869
+ mov dx, ax ; 89 c2 ; 0xf186b print.c:123
+ or dx, cx ; 09 ca ; 0xf186d
+ je short 01880h ; 74 0f ; 0xf186f
+ push word [bp+004h] ; ff 76 04 ; 0xf1871 print.c:124
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf1874
+ mov bx, ax ; 89 c3 ; 0xf1877
+ mov ax, si ; 89 f0 ; 0xf1879
+ call 0184ch ; e8 ce ff ; 0xf187b
+ jmp short 0189dh ; eb 1d ; 0xf187e print.c:125
+ dec di ; 4f ; 0xf1880 print.c:126
+ test di, di ; 85 ff ; 0xf1881
+ jle short 0188fh ; 7e 0a ; 0xf1883
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1885 print.c:127
+ mov ax, si ; 89 f0 ; 0xf1888
+ call 01754h ; e8 c7 fe ; 0xf188a
+ jmp short 01880h ; eb f1 ; 0xf188d
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf188f print.c:128
+ je short 0189dh ; 74 08 ; 0xf1893
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1895 print.c:129
+ mov ax, si ; 89 f0 ; 0xf1898
+ call 01754h ; e8 b7 fe ; 0xf189a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf189d print.c:131
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18a0
+ mul dl ; f6 e2 ; 0xf18a2
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18a4
+ sub dl, al ; 28 c2 ; 0xf18a7
+ add dl, 030h ; 80 c2 30 ; 0xf18a9
+ xor dh, dh ; 30 f6 ; 0xf18ac
+ mov ax, si ; 89 f0 ; 0xf18ae
+ call 01754h ; e8 a1 fe ; 0xf18b0
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18b3 print.c:132
+ pop di ; 5f ; 0xf18b6
+ pop si ; 5e ; 0xf18b7
+ pop bp ; 5d ; 0xf18b8
+ retn 00002h ; c2 02 00 ; 0xf18b9
+ ; disGetNextSymbol 0xf18bc LB 0x860c -> off=0x0 cb=0000000000000021 uValue=00000000000f02bc 'put_str'
+put_str: ; 0xf18bc LB 0x21
+ push bp ; 55 ; 0xf18bc print.c:134
+ mov bp, sp ; 89 e5 ; 0xf18bd
+ push dx ; 52 ; 0xf18bf
+ push si ; 56 ; 0xf18c0
+ mov si, ax ; 89 c6 ; 0xf18c1
+ mov es, cx ; 8e c1 ; 0xf18c3 print.c:138
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf18c5
+ test dl, dl ; 84 d2 ; 0xf18c8
+ je short 018d6h ; 74 0a ; 0xf18ca
+ xor dh, dh ; 30 f6 ; 0xf18cc print.c:139
+ mov ax, si ; 89 f0 ; 0xf18ce
+ call 01754h ; e8 81 fe ; 0xf18d0
+ inc bx ; 43 ; 0xf18d3 print.c:140
+ jmp short 018c3h ; eb ed ; 0xf18d4 print.c:141
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18d6 print.c:142
+ pop si ; 5e ; 0xf18d9
+ pop dx ; 5a ; 0xf18da
+ pop bp ; 5d ; 0xf18db
+ retn ; c3 ; 0xf18dc
+ ; disGetNextSymbol 0xf18dd LB 0x85eb -> off=0x0 cb=0000000000000022 uValue=00000000000f02dd 'put_str_near'
+put_str_near: ; 0xf18dd LB 0x22
+ push bp ; 55 ; 0xf18dd print.c:144
+ mov bp, sp ; 89 e5 ; 0xf18de
+ push bx ; 53 ; 0xf18e0
+ push cx ; 51 ; 0xf18e1
+ mov cx, ax ; 89 c1 ; 0xf18e2
+ mov bx, dx ; 89 d3 ; 0xf18e4
+ mov al, byte [bx] ; 8a 07 ; 0xf18e6 print.c:148
+ test al, al ; 84 c0 ; 0xf18e8
+ je short 018f8h ; 74 0c ; 0xf18ea
+ xor ah, ah ; 30 e4 ; 0xf18ec print.c:149
+ mov dx, ax ; 89 c2 ; 0xf18ee
+ mov ax, cx ; 89 c8 ; 0xf18f0
+ call 01754h ; e8 5f fe ; 0xf18f2
+ inc bx ; 43 ; 0xf18f5 print.c:150
+ jmp short 018e6h ; eb ee ; 0xf18f6 print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18f8 print.c:152
+ pop cx ; 59 ; 0xf18fb
+ pop bx ; 5b ; 0xf18fc
+ pop bp ; 5d ; 0xf18fd
+ retn ; c3 ; 0xf18fe
+ ; disGetNextSymbol 0xf18ff LB 0x85c9 -> off=0x0 cb=0000000000000339 uValue=00000000000f02ff 'bios_printf'
+bios_printf: ; 0xf18ff LB 0x339
+ push bp ; 55 ; 0xf18ff print.c:165
+ mov bp, sp ; 89 e5 ; 0xf1900
+ push bx ; 53 ; 0xf1902
+ push cx ; 51 ; 0xf1903
+ push dx ; 52 ; 0xf1904
+ push si ; 56 ; 0xf1905
+ push di ; 57 ; 0xf1906
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1907
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf190a print.c:173
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf190d
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf1910
+ xor cx, cx ; 31 c9 ; 0xf1913 print.c:175
+ xor di, di ; 31 ff ; 0xf1915 print.c:176
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1917 print.c:178
+ and ax, strict word 00007h ; 25 07 00 ; 0xf191a
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf191d
+ jne short 0192dh ; 75 0b ; 0xf1920
+ push 000deh ; 68 de 00 ; 0xf1922 print.c:179
+ push strict byte 00002h ; 6a 02 ; 0xf1925
+ call 018ffh ; e8 d5 ff ; 0xf1927
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf192a
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf192d print.c:182
+ mov dl, byte [bx] ; 8a 17 ; 0xf1930
+ test dl, dl ; 84 d2 ; 0xf1932
+ je short 01991h ; 74 5b ; 0xf1934
+ cmp dl, 025h ; 80 fa 25 ; 0xf1936 print.c:183
+ jne short 01943h ; 75 08 ; 0xf1939
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf193b print.c:184
+ xor di, di ; 31 ff ; 0xf193e print.c:185
+ jmp near 01c16h ; e9 d3 02 ; 0xf1940 print.c:187
+ test cx, cx ; 85 c9 ; 0xf1943
+ je short 01994h ; 74 4d ; 0xf1945
+ cmp dl, 030h ; 80 fa 30 ; 0xf1947 print.c:188
+ jc short 01960h ; 72 14 ; 0xf194a
+ cmp dl, 039h ; 80 fa 39 ; 0xf194c
+ jnbe short 01960h ; 77 0f ; 0xf194f
+ mov al, dl ; 88 d0 ; 0xf1951 print.c:189
+ xor ah, ah ; 30 e4 ; 0xf1953
+ imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1955
+ sub ax, strict word 00030h ; 2d 30 00 ; 0xf1958
+ add di, ax ; 01 c7 ; 0xf195b
+ jmp near 01c16h ; e9 b6 02 ; 0xf195d print.c:191
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1960 print.c:192
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1963
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1966
+ les bx, [bp-016h] ; c4 5e ea ; 0xf196a
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf196d
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1971
+ cmp dl, 078h ; 80 fa 78 ; 0xf1974 print.c:193
+ je short 0197eh ; 74 05 ; 0xf1977
+ cmp dl, 058h ; 80 fa 58 ; 0xf1979
+ jne short 019d8h ; 75 5a ; 0xf197c
+ test di, di ; 85 ff ; 0xf197e print.c:194
+ jne short 01985h ; 75 03 ; 0xf1980
+ mov di, strict word 00004h ; bf 04 00 ; 0xf1982 print.c:195
+ cmp dl, 078h ; 80 fa 78 ; 0xf1985 print.c:196
+ jne short 01997h ; 75 0d ; 0xf1988
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf198a print.c:197
+ jmp short 0199ch ; eb 0b ; 0xf198f print.c:198
+ jmp near 01c1ch ; e9 88 02 ; 0xf1991
+ jmp near 01c0eh ; e9 77 02 ; 0xf1994
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1997 print.c:199
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf199c print.c:200
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf199f
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19a2
+ test ax, ax ; 85 c0 ; 0xf19a5
+ jl short 019e9h ; 7c 40 ; 0xf19a7
+ mov cx, ax ; 89 c1 ; 0xf19a9 print.c:201
+ sal cx, 002h ; c1 e1 02 ; 0xf19ab
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf19ae
+ shr ax, CL ; d3 e8 ; 0xf19b1
+ xor ah, ah ; 30 e4 ; 0xf19b3
+ and AL, strict byte 00fh ; 24 0f ; 0xf19b5
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf19b7 print.c:202
+ jnbe short 019c3h ; 77 07 ; 0xf19ba
+ mov dx, ax ; 89 c2 ; 0xf19bc
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf19be
+ jmp short 019cbh ; eb 08 ; 0xf19c1
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf19c3
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf19c6
+ add dx, ax ; 01 c2 ; 0xf19c9
+ xor dh, dh ; 30 f6 ; 0xf19cb
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19cd
+ call 01754h ; e8 81 fd ; 0xf19d0
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf19d3 print.c:203
+ jmp short 019a2h ; eb ca ; 0xf19d6
+ cmp dl, 075h ; 80 fa 75 ; 0xf19d8 print.c:205
+ jne short 019ech ; 75 0f ; 0xf19db
+ xor cx, cx ; 31 c9 ; 0xf19dd print.c:206
+ mov bx, di ; 89 fb ; 0xf19df
+ mov dx, ax ; 89 c2 ; 0xf19e1
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19e3
+ call 017eeh ; e8 05 fe ; 0xf19e6
+ jmp near 01c0ah ; e9 1e 02 ; 0xf19e9 print.c:208
+ cmp dl, 06ch ; 80 fa 6c ; 0xf19ec
+ jne short 019f9h ; 75 08 ; 0xf19ef
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf19f1
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf19f4
+ je short 019fch ; 74 03 ; 0xf19f7
+ jmp near 01acdh ; e9 d1 00 ; 0xf19f9
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf19fc print.c:212
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a00 print.c:213
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a03
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1a05 print.c:215
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a08 print.c:216
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a0b
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a0e
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a12
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a15
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1a19
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a1c print.c:217
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a1f
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a22
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a26
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a29
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1a2d
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a30 print.c:218
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a33
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a36
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a3a
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a3d
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a41
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a44 print.c:219
+ je short 01a4eh ; 74 05 ; 0xf1a47
+ cmp dl, 058h ; 80 fa 58 ; 0xf1a49
+ jne short 01aa8h ; 75 5a ; 0xf1a4c
+ test di, di ; 85 ff ; 0xf1a4e print.c:220
+ jne short 01a55h ; 75 03 ; 0xf1a50
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1a52 print.c:221
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a55 print.c:222
+ jne short 01a61h ; 75 07 ; 0xf1a58
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1a5a print.c:223
+ jmp short 01a66h ; eb 05 ; 0xf1a5f print.c:224
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1a61 print.c:225
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1a66 print.c:226
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1a69
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1a6c
+ test ax, ax ; 85 c0 ; 0xf1a6f
+ jl short 01acah ; 7c 57 ; 0xf1a71
+ sal ax, 002h ; c1 e0 02 ; 0xf1a73 print.c:227
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1a76
+ xor ax, ax ; 31 c0 ; 0xf1a79
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1a7b
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1a7e
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1a81
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1a84
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1a87
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1a8a
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1a8d
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1a90
+ call 09b90h ; e8 fa 80 ; 0xf1a93
+ mov ax, dx ; 89 d0 ; 0xf1a96
+ xor ah, dh ; 30 f4 ; 0xf1a98
+ and AL, strict byte 00fh ; 24 0f ; 0xf1a9a
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1a9c print.c:228
+ jnbe short 01aaah ; 77 09 ; 0xf1a9f
+ mov dx, ax ; 89 c2 ; 0xf1aa1
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1aa3
+ jmp short 01ab2h ; eb 0a ; 0xf1aa6
+ jmp short 01abfh ; eb 15 ; 0xf1aa8
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1aaa
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1aad
+ add dx, ax ; 01 c2 ; 0xf1ab0
+ xor dh, dh ; 30 f6 ; 0xf1ab2
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ab4
+ call 01754h ; e8 9a fc ; 0xf1ab7
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1aba print.c:229
+ jmp short 01a6ch ; eb ad ; 0xf1abd
+ push 000e6h ; 68 e6 00 ; 0xf1abf print.c:231
+ push strict byte 00007h ; 6a 07 ; 0xf1ac2
+ call 018ffh ; e8 38 fe ; 0xf1ac4
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1ac7
+ jmp near 01c0ah ; e9 3d 01 ; 0xf1aca print.c:234
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1acd
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1ad0
+ jne short 01b29h ; 75 54 ; 0xf1ad3
+ inc word [bp+006h] ; ff 46 06 ; 0xf1ad5 print.c:235
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1ad8 print.c:236
+ mov dl, byte [si] ; 8a 14 ; 0xf1adb
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1add print.c:237
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1ae0
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1ae3
+ les si, [bp-016h] ; c4 76 ea ; 0xf1ae7
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1aea
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1aee
+ cmp dl, 064h ; 80 fa 64 ; 0xf1af1 print.c:238
+ jne short 01b22h ; 75 2c ; 0xf1af4
+ test byte [bp-00dh], 080h ; f6 46 f3 80 ; 0xf1af6 print.c:239
+ je short 01b11h ; 74 15 ; 0xf1afa
+ push strict byte 00001h ; 6a 01 ; 0xf1afc print.c:240
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1afe
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1b01
+ neg cx ; f7 d9 ; 0xf1b04
+ neg ax ; f7 d8 ; 0xf1b06
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b08
+ mov dx, bx ; 89 da ; 0xf1b0b
+ mov bx, ax ; 89 c3 ; 0xf1b0d
+ jmp short 01b1ah ; eb 09 ; 0xf1b0f print.c:241
+ push strict byte 00000h ; 6a 00 ; 0xf1b11 print.c:242
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1b13
+ mov dx, di ; 89 fa ; 0xf1b16
+ mov cx, ax ; 89 c1 ; 0xf1b18
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b1a
+ call 0184ch ; e8 2c fd ; 0xf1b1d
+ jmp short 01acah ; eb a8 ; 0xf1b20 print.c:244
+ cmp dl, 075h ; 80 fa 75 ; 0xf1b22
+ jne short 01b2bh ; 75 04 ; 0xf1b25
+ jmp short 01b11h ; eb e8 ; 0xf1b27
+ jmp short 01b91h ; eb 66 ; 0xf1b29
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b2b print.c:247
+ je short 01b35h ; 74 05 ; 0xf1b2e
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b30
+ jne short 01acah ; 75 95 ; 0xf1b33
+ test di, di ; 85 ff ; 0xf1b35 print.c:249
+ jne short 01b3ch ; 75 03 ; 0xf1b37
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1b39 print.c:250
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b3c print.c:251
+ jne short 01b48h ; 75 07 ; 0xf1b3f
+ mov word [bp-012h], strict word 00061h ; c7 46 ee 61 00 ; 0xf1b41 print.c:252
+ jmp short 01b4dh ; eb 05 ; 0xf1b46 print.c:253
+ mov word [bp-012h], strict word 00041h ; c7 46 ee 41 00 ; 0xf1b48 print.c:254
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1b4d print.c:255
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b50
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1b53
+ jl short 01bb3h ; 7c 5a ; 0xf1b57
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1b59 print.c:256
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1b5c
+ sal cx, 002h ; c1 e1 02 ; 0xf1b5f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1b62
+ jcxz 01b6dh ; e3 06 ; 0xf1b65
+ shr dx, 1 ; d1 ea ; 0xf1b67
+ rcr ax, 1 ; d1 d8 ; 0xf1b69
+ loop 01b67h ; e2 fa ; 0xf1b6b
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1b6d
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b70 print.c:257
+ jnbe short 01b7ch ; 77 07 ; 0xf1b73
+ mov dx, ax ; 89 c2 ; 0xf1b75
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b77
+ jmp short 01b84h ; eb 08 ; 0xf1b7a
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b7c
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1b7f
+ add dx, ax ; 01 c2 ; 0xf1b82
+ xor dh, dh ; 30 f6 ; 0xf1b84
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b86
+ call 01754h ; e8 c8 fb ; 0xf1b89
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1b8c print.c:258
+ jmp short 01b53h ; eb c2 ; 0xf1b8f
+ cmp dl, 064h ; 80 fa 64 ; 0xf1b91 print.c:261
+ jne short 01bb5h ; 75 1f ; 0xf1b94
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1b96 print.c:262
+ je short 01ba6h ; 74 0a ; 0xf1b9a
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1b9c print.c:263
+ neg dx ; f7 da ; 0xf1b9f
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1ba1
+ jmp short 01badh ; eb 07 ; 0xf1ba4 print.c:264
+ xor cx, cx ; 31 c9 ; 0xf1ba6 print.c:265
+ mov bx, di ; 89 fb ; 0xf1ba8
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1baa
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bad
+ call 0178fh ; e8 dc fb ; 0xf1bb0
+ jmp short 01c0ah ; eb 55 ; 0xf1bb3 print.c:267
+ cmp dl, 073h ; 80 fa 73 ; 0xf1bb5
+ jne short 01bc7h ; 75 0d ; 0xf1bb8
+ mov cx, ds ; 8c d9 ; 0xf1bba print.c:268
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf1bbc
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bbf
+ call 018bch ; e8 f7 fc ; 0xf1bc2
+ jmp short 01c0ah ; eb 43 ; 0xf1bc5 print.c:270
+ cmp dl, 053h ; 80 fa 53 ; 0xf1bc7
+ jne short 01bedh ; 75 21 ; 0xf1bca
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1bcc print.c:271
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1bcf
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1bd2 print.c:272
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1bd5
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1bd8
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1bdc
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1bdf
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1be3
+ mov bx, ax ; 89 c3 ; 0xf1be6 print.c:273
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf1be8
+ jmp short 01bbfh ; eb d2 ; 0xf1beb
+ cmp dl, 063h ; 80 fa 63 ; 0xf1bed print.c:275
+ jne short 01bffh ; 75 0d ; 0xf1bf0
+ mov dl, byte [bp-010h] ; 8a 56 f0 ; 0xf1bf2 print.c:276
+ xor dh, dh ; 30 f6 ; 0xf1bf5
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bf7
+ call 01754h ; e8 57 fb ; 0xf1bfa
+ jmp short 01c0ah ; eb 0b ; 0xf1bfd print.c:278
+ push 00107h ; 68 07 01 ; 0xf1bff print.c:279
+ push strict byte 00007h ; 6a 07 ; 0xf1c02
+ call 018ffh ; e8 f8 fc ; 0xf1c04
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c07
+ xor cx, cx ; 31 c9 ; 0xf1c0a print.c:280
+ jmp short 01c16h ; eb 08 ; 0xf1c0c print.c:283
+ xor dh, dh ; 30 f6 ; 0xf1c0e print.c:284
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c10
+ call 01754h ; e8 3e fb ; 0xf1c13
+ inc word [bp+006h] ; ff 46 06 ; 0xf1c16 print.c:286
+ jmp near 0192dh ; e9 11 fd ; 0xf1c19 print.c:287
+ xor ax, ax ; 31 c0 ; 0xf1c1c print.c:288
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1c1e
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c21
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c24 print.c:289
+ je short 01c2eh ; 74 04 ; 0xf1c28
+ cli ; fa ; 0xf1c2a print.c:291
+ hlt ; f4 ; 0xf1c2b print.c:292
+ jmp short 01c2bh ; eb fd ; 0xf1c2c
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c2e print.c:294
+ pop di ; 5f ; 0xf1c31
+ pop si ; 5e ; 0xf1c32
+ pop dx ; 5a ; 0xf1c33
+ pop cx ; 59 ; 0xf1c34
+ pop bx ; 5b ; 0xf1c35
+ pop bp ; 5d ; 0xf1c36
+ retn ; c3 ; 0xf1c37
+ ; disGetNextSymbol 0xf1c38 LB 0x8290 -> off=0x0 cb=00000000000000e5 uValue=00000000000f0638 'ata_init'
+ata_init: ; 0xf1c38 LB 0xe5
+ push si ; 56 ; 0xf1c38 ata.c:97
+ push bp ; 55 ; 0xf1c39
+ mov bp, sp ; 89 e5 ; 0xf1c3a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c3c ata.c:48
+ mov si, strict word 00040h ; be 40 00 ; 0xf1c3f
+ mov es, si ; 8e c6 ; 0xf1c42
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1c44
+ mov si, 00122h ; be 22 01 ; 0xf1c47 ata.c:49
+ mov dx, bx ; 89 da ; 0xf1c4a
+ xor al, al ; 30 c0 ; 0xf1c4c ata.c:105
+ jmp short 01c54h ; eb 04 ; 0xf1c4e
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf1c50
+ jnc short 01c7dh ; 73 29 ; 0xf1c52
+ mov bl, al ; 88 c3 ; 0xf1c54 ata.c:106
+ xor bh, bh ; 30 ff ; 0xf1c56
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1c58
+ mov es, dx ; 8e c2 ; 0xf1c5b
+ add bx, si ; 01 f3 ; 0xf1c5d
+ mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf1c5f
+ mov word [es:bx+00206h], strict word 00000h ; 26 c7 87 06 02 00 00 ; 0xf1c65 ata.c:107
+ mov word [es:bx+00208h], strict word 00000h ; 26 c7 87 08 02 00 00 ; 0xf1c6c ata.c:108
+ mov byte [es:bx+00205h], 000h ; 26 c6 87 05 02 00 ; 0xf1c73 ata.c:109
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1c79 ata.c:110
+ jmp short 01c50h ; eb d3 ; 0xf1c7b
+ xor al, al ; 30 c0 ; 0xf1c7d ata.c:113
+ jmp short 01c85h ; eb 04 ; 0xf1c7f
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf1c81
+ jnc short 01cech ; 73 67 ; 0xf1c83
+ mov bl, al ; 88 c3 ; 0xf1c85 ata.c:114
+ xor bh, bh ; 30 ff ; 0xf1c87
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1c89
+ mov es, dx ; 8e c2 ; 0xf1c8c
+ add bx, si ; 01 f3 ; 0xf1c8e
+ mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00 ; 0xf1c90
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf1c96 ata.c:116
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1c9c ata.c:118
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1ca1 ata.c:119
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1ca7 ata.c:120
+ mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1cac ata.c:121
+ mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1cb2 ata.c:122
+ mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1cb8 ata.c:123
+ mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1cbe ata.c:124
+ mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1cc4 ata.c:125
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1cca ata.c:126
+ mov word [es:bx+03ch], strict word 00000h ; 26 c7 47 3c 00 00 ; 0xf1cd0 ata.c:127
+ mov word [es:bx+03ah], strict word 00000h ; 26 c7 47 3a 00 00 ; 0xf1cd6
+ mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1cdc
+ mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1ce2
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1ce8 ata.c:128
+ jmp short 01c81h ; eb 95 ; 0xf1cea
+ xor al, al ; 30 c0 ; 0xf1cec ata.c:131
+ jmp short 01cf4h ; eb 04 ; 0xf1cee
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf1cf0
+ jnc short 01d0ch ; 73 18 ; 0xf1cf2
+ mov bl, al ; 88 c3 ; 0xf1cf4 ata.c:132
+ xor bh, bh ; 30 ff ; 0xf1cf6
+ mov es, dx ; 8e c2 ; 0xf1cf8
+ add bx, si ; 01 f3 ; 0xf1cfa
+ mov byte [es:bx+001e3h], 010h ; 26 c6 87 e3 01 10 ; 0xf1cfc
+ mov byte [es:bx+001f4h], 010h ; 26 c6 87 f4 01 10 ; 0xf1d02 ata.c:133
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1d08 ata.c:134
+ jmp short 01cf0h ; eb e4 ; 0xf1d0a
+ mov es, dx ; 8e c2 ; 0xf1d0c ata.c:136
+ mov byte [es:si+001e2h], 000h ; 26 c6 84 e2 01 00 ; 0xf1d0e
+ mov byte [es:si+001f3h], 000h ; 26 c6 84 f3 01 00 ; 0xf1d14 ata.c:137
+ pop bp ; 5d ; 0xf1d1a ata.c:138
+ pop si ; 5e ; 0xf1d1b
+ retn ; c3 ; 0xf1d1c
+ ; disGetNextSymbol 0xf1d1d LB 0x81ab -> off=0x0 cb=00000000000000dd uValue=00000000000f071d 'ata_reset'
+ata_reset: ; 0xf1d1d LB 0xdd
+ push bp ; 55 ; 0xf1d1d ata.c:146
+ mov bp, sp ; 89 e5 ; 0xf1d1e
+ push bx ; 53 ; 0xf1d20
+ push cx ; 51 ; 0xf1d21
+ push dx ; 52 ; 0xf1d22
+ push si ; 56 ; 0xf1d23
+ push di ; 57 ; 0xf1d24
+ push ax ; 50 ; 0xf1d25
+ push ax ; 50 ; 0xf1d26
+ push ax ; 50 ; 0xf1d27
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d28 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1d2b
+ mov es, ax ; 8e c0 ; 0xf1d2e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1d30
+ mov di, 00122h ; bf 22 01 ; 0xf1d33 ata.c:49
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1d36
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1d39 ata.c:155
+ shr dx, 1 ; d1 ea ; 0xf1d3c
+ mov dh, byte [bp-010h] ; 8a 76 f0 ; 0xf1d3e ata.c:156
+ and dh, 001h ; 80 e6 01 ; 0xf1d41
+ mov byte [bp-00ch], dh ; 88 76 f4 ; 0xf1d44
+ xor dh, dh ; 30 f6 ; 0xf1d47 ata.c:158
+ imul bx, dx, strict byte 00006h ; 6b da 06 ; 0xf1d49
+ mov es, ax ; 8e c0 ; 0xf1d4c
+ add bx, di ; 01 fb ; 0xf1d4e
+ mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf1d50
+ mov si, word [es:bx+00208h] ; 26 8b b7 08 02 ; 0xf1d55 ata.c:159
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1d5a ata.c:164
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1d5d
+ out DX, AL ; ee ; 0xf1d5f
+ mov bx, 000ffh ; bb ff 00 ; 0xf1d60 ata.c:167
+ dec bx ; 4b ; 0xf1d63 ata.c:168
+ test bx, bx ; 85 db ; 0xf1d64
+ jbe short 01d74h ; 76 0c ; 0xf1d66
+ mov dx, cx ; 89 ca ; 0xf1d68 ata.c:169
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1d6a
+ in AL, DX ; ec ; 0xf1d6d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1d6e
+ test AL, strict byte 080h ; a8 80 ; 0xf1d70 ata.c:170
+ je short 01d63h ; 74 ef ; 0xf1d72
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1d74 ata.c:175
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1d77
+ out DX, AL ; ee ; 0xf1d79
+ imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1d7a ata.c:177
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1d7e
+ add bx, di ; 01 fb ; 0xf1d81
+ cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1d83
+ je short 01dd6h ; 74 4c ; 0xf1d88
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1d8a ata.c:180
+ je short 01d95h ; 74 05 ; 0xf1d8e
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1d90
+ jmp short 01d98h ; eb 03 ; 0xf1d93
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1d95
+ mov dx, cx ; 89 ca ; 0xf1d98
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1d9a
+ out DX, AL ; ee ; 0xf1d9d
+ mov dx, cx ; 89 ca ; 0xf1d9e ata.c:181
+ inc dx ; 42 ; 0xf1da0
+ inc dx ; 42 ; 0xf1da1
+ in AL, DX ; ec ; 0xf1da2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1da3
+ mov bx, ax ; 89 c3 ; 0xf1da5
+ mov dx, cx ; 89 ca ; 0xf1da7 ata.c:182
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1da9
+ in AL, DX ; ec ; 0xf1dac
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1dad
+ cmp bl, 001h ; 80 fb 01 ; 0xf1daf ata.c:184
+ jne short 01dd6h ; 75 22 ; 0xf1db2
+ cmp al, bl ; 38 d8 ; 0xf1db4
+ jne short 01dd6h ; 75 1e ; 0xf1db6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1db8 ata.c:186
+ dec bx ; 4b ; 0xf1dbb ata.c:187
+ test bx, bx ; 85 db ; 0xf1dbc
+ jbe short 01dd6h ; 76 16 ; 0xf1dbe
+ mov dx, cx ; 89 ca ; 0xf1dc0 ata.c:188
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1dc2
+ in AL, DX ; ec ; 0xf1dc5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1dc6
+ test AL, strict byte 080h ; a8 80 ; 0xf1dc8 ata.c:189
+ je short 01dd6h ; 74 0a ; 0xf1dca
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1dcc ata.c:191
+ dec ax ; 48 ; 0xf1dcf ata.c:192
+ test ax, ax ; 85 c0 ; 0xf1dd0
+ jnbe short 01dcfh ; 77 fb ; 0xf1dd2
+ jmp short 01dbbh ; eb e5 ; 0xf1dd4 ata.c:195
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1dd6 ata.c:200
+ dec bx ; 4b ; 0xf1dd9 ata.c:201
+ test bx, bx ; 85 db ; 0xf1dda
+ jbe short 01deah ; 76 0c ; 0xf1ddc
+ mov dx, cx ; 89 ca ; 0xf1dde ata.c:202
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1de0
+ in AL, DX ; ec ; 0xf1de3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1de4
+ test AL, strict byte 040h ; a8 40 ; 0xf1de6 ata.c:203
+ je short 01dd9h ; 74 ef ; 0xf1de8
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1dea ata.c:208
+ mov AL, strict byte 008h ; b0 08 ; 0xf1ded
+ out DX, AL ; ee ; 0xf1def
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1df0 ata.c:209
+ pop di ; 5f ; 0xf1df3
+ pop si ; 5e ; 0xf1df4
+ pop dx ; 5a ; 0xf1df5
+ pop cx ; 59 ; 0xf1df6
+ pop bx ; 5b ; 0xf1df7
+ pop bp ; 5d ; 0xf1df8
+ retn ; c3 ; 0xf1df9
+ ; disGetNextSymbol 0xf1dfa LB 0x80ce -> off=0x0 cb=00000000000002b5 uValue=00000000000f07fa 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1dfa LB 0x2b5
+ push bp ; 55 ; 0xf1dfa ata.c:223
+ mov bp, sp ; 89 e5 ; 0xf1dfb
+ push si ; 56 ; 0xf1dfd
+ push di ; 57 ; 0xf1dfe
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1dff
+ push ax ; 50 ; 0xf1e02
+ push dx ; 52 ; 0xf1e03
+ push bx ; 53 ; 0xf1e04
+ push cx ; 51 ; 0xf1e05
+ mov es, dx ; 8e c2 ; 0xf1e06 ata.c:233
+ mov bx, ax ; 89 c3 ; 0xf1e08
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e0a
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e0e
+ mov bl, al ; 88 c3 ; 0xf1e11 ata.c:235
+ xor bh, ah ; 30 e7 ; 0xf1e13
+ mov ax, bx ; 89 d8 ; 0xf1e15
+ cwd ; 99 ; 0xf1e17
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1e18
+ sar ax, 1 ; d1 f8 ; 0xf1e1a
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1e1c
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e1f
+ add di, ax ; 01 c7 ; 0xf1e22
+ mov ax, word [es:di+00206h] ; 26 8b 85 06 02 ; 0xf1e24
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e29
+ mov ax, word [es:di+00208h] ; 26 8b 85 08 02 ; 0xf1e2c ata.c:236
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e31
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1e34 ata.c:238
+ add bx, word [bp-016h] ; 03 5e ea ; 0xf1e37
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf1e3a
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e3e
+ test ax, ax ; 85 c0 ; 0xf1e41 ata.c:239
+ jne short 01e4ch ; 75 07 ; 0xf1e43
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e45 ata.c:245
+ jmp short 01e4fh ; eb 03 ; 0xf1e4a ata.c:246
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1e4c ata.c:252
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1e4f ata.c:255
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e52
+ in AL, DX ; ec ; 0xf1e55
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e56
+ test AL, strict byte 080h ; a8 80 ; 0xf1e58 ata.c:256
+ je short 01e6bh ; 74 0f ; 0xf1e5a
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1e5c ata.c:260
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e5f
+ mov AL, strict byte 008h ; b0 08 ; 0xf1e62
+ out DX, AL ; ee ; 0xf1e64
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1e65 ata.c:261
+ jmp near 020a8h ; e9 3d 02 ; 0xf1e68
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1e6b ata.c:264
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e6e
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1e71
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1e75
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1e78
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1e7c
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1e7f ata.c:265
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1e83
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1e86 ata.c:266
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1e8a
+ mov ah, byte [es:bx+014h] ; 26 8a 67 14 ; 0xf1e8d ata.c:267
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1e91 ata.c:270
+ test al, al ; 84 c0 ; 0xf1e94
+ je short 01e9bh ; 74 03 ; 0xf1e96
+ jmp near 01f7eh ; e9 e3 00 ; 0xf1e98
+ xor bx, bx ; 31 db ; 0xf1e9b ata.c:271
+ xor dx, dx ; 31 d2 ; 0xf1e9d
+ xor ah, ah ; 30 e4 ; 0xf1e9f
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ea1
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1ea4
+ add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1ea7
+ mov word [bp-014h], cx ; 89 4e ec ; 0xf1eaa
+ adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1ead
+ adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1eb1
+ adc ax, word [es:si+006h] ; 26 13 44 06 ; 0xf1eb5
+ test ax, ax ; 85 c0 ; 0xf1eb9
+ jnbe short 01ed0h ; 77 13 ; 0xf1ebb
+ je short 01ec2h ; 74 03 ; 0xf1ebd
+ jmp near 01f34h ; e9 72 00 ; 0xf1ebf
+ test dx, dx ; 85 d2 ; 0xf1ec2
+ jnbe short 01ed0h ; 77 0a ; 0xf1ec4
+ jne short 01f34h ; 75 6c ; 0xf1ec6
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf1ec8
+ jnbe short 01ed0h ; 77 02 ; 0xf1ecc
+ jne short 01f34h ; 75 64 ; 0xf1ece
+ mov bx, si ; 89 f3 ; 0xf1ed0 ata.c:273
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1ed2
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ed6
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1eda
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1ede
+ mov si, strict word 00018h ; be 18 00 ; 0xf1ee1
+ call 09b90h ; e8 a9 7c ; 0xf1ee4
+ xor dh, dh ; 30 f6 ; 0xf1ee7
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf1ee9
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1eec ata.c:274
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1eef
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ef3
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ef7
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1efa
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1efe
+ mov si, strict word 00020h ; be 20 00 ; 0xf1f01
+ call 09b90h ; e8 89 7c ; 0xf1f04
+ mov bx, dx ; 89 d3 ; 0xf1f07
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f09 ata.c:275
+ xor al, al ; 30 c0 ; 0xf1f0c
+ shr ax, 008h ; c1 e8 08 ; 0xf1f0e
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f11
+ inc dx ; 42 ; 0xf1f14
+ inc dx ; 42 ; 0xf1f15
+ out DX, AL ; ee ; 0xf1f16
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f17 ata.c:276
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f1a
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f1d
+ out DX, AL ; ee ; 0xf1f20
+ mov ax, bx ; 89 d8 ; 0xf1f21 ata.c:277
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f23
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f26
+ out DX, AL ; ee ; 0xf1f29
+ shr ax, 008h ; c1 e8 08 ; 0xf1f2a ata.c:278
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f2d
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf1f30
+ out DX, AL ; ee ; 0xf1f33
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1f34 ata.c:282
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f37
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1f3a
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1f3d
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f40 ata.c:283
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f44
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f48
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f4b
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f4f
+ mov si, strict word 00008h ; be 08 00 ; 0xf1f52
+ call 09b90h ; e8 38 7c ; 0xf1f55
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf1f58
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f5b ata.c:284
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f5e
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f62
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f66
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f69
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f6d
+ mov si, strict word 00018h ; be 18 00 ; 0xf1f70
+ call 09b90h ; e8 1a 7c ; 0xf1f73
+ mov ah, dl ; 88 d4 ; 0xf1f76
+ and ah, 00fh ; 80 e4 0f ; 0xf1f78
+ or ah, 040h ; 80 cc 40 ; 0xf1f7b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1f7e ata.c:287
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f81
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1f84
+ out DX, AL ; ee ; 0xf1f86
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f87 ata.c:288
+ inc dx ; 42 ; 0xf1f8a
+ xor al, al ; 30 c0 ; 0xf1f8b
+ out DX, AL ; ee ; 0xf1f8d
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f8e ata.c:289
+ inc dx ; 42 ; 0xf1f91
+ inc dx ; 42 ; 0xf1f92
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf1f93
+ out DX, AL ; ee ; 0xf1f96
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f97 ata.c:290
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f9a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1f9d
+ out DX, AL ; ee ; 0xf1fa0
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1fa1 ata.c:291
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fa4
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1fa7
+ mov al, bl ; 88 d8 ; 0xf1faa
+ out DX, AL ; ee ; 0xf1fac
+ mov dx, bx ; 89 da ; 0xf1fad ata.c:292
+ shr dx, 008h ; c1 ea 08 ; 0xf1faf
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf1fb2
+ add bx, strict byte 00005h ; 83 c3 05 ; 0xf1fb5
+ mov al, dl ; 88 d0 ; 0xf1fb8
+ mov dx, bx ; 89 da ; 0xf1fba
+ out DX, AL ; ee ; 0xf1fbc
+ test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf1fbd ata.c:293
+ je short 01fc8h ; 74 05 ; 0xf1fc1
+ mov dx, 000b0h ; ba b0 00 ; 0xf1fc3
+ jmp short 01fcbh ; eb 03 ; 0xf1fc6
+ mov dx, 000a0h ; ba a0 00 ; 0xf1fc8
+ mov al, ah ; 88 e0 ; 0xf1fcb
+ xor ah, ah ; 30 e4 ; 0xf1fcd
+ or ax, dx ; 09 d0 ; 0xf1fcf
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fd1
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fd4
+ out DX, AL ; ee ; 0xf1fd7
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fd8 ata.c:294
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1fdb
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf1fde
+ out DX, AL ; ee ; 0xf1fe1
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf1fe2 ata.c:296
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf1fe5
+ je short 01fefh ; 74 05 ; 0xf1fe8
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf1fea
+ jne short 01ff9h ; 75 0a ; 0xf1fed
+ mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf1fef ata.c:297
+ mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf1ff2 ata.c:298
+ jmp short 01ffch ; eb 03 ; 0xf1ff7 ata.c:299
+ mov si, strict word 00001h ; be 01 00 ; 0xf1ff9 ata.c:300
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ffc ata.c:304
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1fff
+ in AL, DX ; ec ; 0xf2002
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2003
+ mov bl, al ; 88 c3 ; 0xf2005
+ test AL, strict byte 080h ; a8 80 ; 0xf2007 ata.c:305
+ jne short 01ffch ; 75 f1 ; 0xf2009
+ test AL, strict byte 001h ; a8 01 ; 0xf200b ata.c:309
+ je short 0201eh ; 74 0f ; 0xf200d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf200f ata.c:312
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2012
+ mov AL, strict byte 008h ; b0 08 ; 0xf2015
+ out DX, AL ; ee ; 0xf2017
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2018 ata.c:313
+ jmp near 020a8h ; e9 8a 00 ; 0xf201b
+ test bl, 008h ; f6 c3 08 ; 0xf201e ata.c:314
+ jne short 02032h ; 75 0f ; 0xf2021
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2023 ata.c:317
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2026
+ mov AL, strict byte 008h ; b0 08 ; 0xf2029
+ out DX, AL ; ee ; 0xf202b
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf202c ata.c:318
+ jmp near 020a8h ; e9 76 00 ; 0xf202f
+ sti ; fb ; 0xf2032 ata.c:323
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2033 ata.c:328
+ jc short 02046h ; 72 0d ; 0xf2037
+ sub di, 00800h ; 81 ef 00 08 ; 0xf2039 ata.c:329
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf203d
+ add ax, 00080h ; 05 80 00 ; 0xf2040
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2043
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2046 ata.c:336
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2049
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf204c
+ rep insw ; f3 6d ; 0xf204f
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2051 ata.c:337
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf2054
+ add word [es:bx+018h], si ; 26 01 77 18 ; 0xf2057
+ dec word [bp-01ch] ; ff 4e e4 ; 0xf205b ata.c:338
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf205e ata.c:340
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2061
+ in AL, DX ; ec ; 0xf2064
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2065
+ mov bl, al ; 88 c3 ; 0xf2067
+ test AL, strict byte 080h ; a8 80 ; 0xf2069 ata.c:341
+ jne short 0205eh ; 75 f1 ; 0xf206b
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf206d ata.c:344
+ jne short 02087h ; 75 14 ; 0xf2071
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2073 ata.c:345
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2075
+ je short 0209dh ; 74 24 ; 0xf2077
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2079 ata.c:349
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf207c
+ mov AL, strict byte 008h ; b0 08 ; 0xf207f
+ out DX, AL ; ee ; 0xf2081
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2082 ata.c:350
+ jmp short 020a8h ; eb 21 ; 0xf2085
+ mov al, bl ; 88 d8 ; 0xf2087 ata.c:355
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2089
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf208b
+ je short 02033h ; 74 a4 ; 0xf208d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf208f ata.c:359
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2092
+ mov AL, strict byte 008h ; b0 08 ; 0xf2095
+ out DX, AL ; ee ; 0xf2097
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf2098 ata.c:360
+ jmp short 020a8h ; eb 0b ; 0xf209b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf209d ata.c:366
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20a0
+ mov AL, strict byte 008h ; b0 08 ; 0xf20a3
+ out DX, AL ; ee ; 0xf20a5
+ xor ax, ax ; 31 c0 ; 0xf20a6 ata.c:367
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf20a8 ata.c:368
+ pop di ; 5f ; 0xf20ab
+ pop si ; 5e ; 0xf20ac
+ pop bp ; 5d ; 0xf20ad
+ retn ; c3 ; 0xf20ae
+ ; disGetNextSymbol 0xf20af LB 0x7e19 -> off=0x0 cb=00000000000006aa uValue=00000000000f0aaf 'ata_detect'
+ata_detect: ; 0xf20af LB 0x6aa
+ push bp ; 55 ; 0xf20af ata.c:374
+ mov bp, sp ; 89 e5 ; 0xf20b0
+ push si ; 56 ; 0xf20b2
+ push di ; 57 ; 0xf20b3
+ sub sp, 00262h ; 81 ec 62 02 ; 0xf20b4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf20b8 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf20bb
+ mov es, ax ; 8e c0 ; 0xf20be
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf20c0
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf20c3 ata.c:49
+ mov bx, 00122h ; bb 22 01 ; 0xf20c6 ata.c:381
+ mov es, ax ; 8e c0 ; 0xf20c9
+ mov word [bp-02ch], bx ; 89 5e d4 ; 0xf20cb
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf20ce
+ mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf20d1 ata.c:384
+ mov word [es:bx+00206h], 001f0h ; 26 c7 87 06 02 f0 01 ; 0xf20d7 ata.c:385
+ mov word [es:bx+00208h], 003f0h ; 26 c7 87 08 02 f0 03 ; 0xf20de ata.c:386
+ mov byte [es:bx+00205h], 00eh ; 26 c6 87 05 02 0e ; 0xf20e5 ata.c:387
+ mov byte [es:bx+0020ah], 000h ; 26 c6 87 0a 02 00 ; 0xf20eb ata.c:390
+ mov word [es:bx+0020ch], 00170h ; 26 c7 87 0c 02 70 01 ; 0xf20f1 ata.c:391
+ mov word [es:bx+0020eh], 00370h ; 26 c7 87 0e 02 70 03 ; 0xf20f8 ata.c:392
+ mov byte [es:bx+0020bh], 00fh ; 26 c6 87 0b 02 0f ; 0xf20ff ata.c:393
+ xor al, al ; 30 c0 ; 0xf2105 ata.c:414
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf2107
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf210a
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf210d ata.c:416
+ jmp near 026d9h ; e9 c6 05 ; 0xf2110
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2113 ata.c:431
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2116
+ out DX, AL ; ee ; 0xf2119
+ lea si, [bx+002h] ; 8d 77 02 ; 0xf211a ata.c:432
+ mov AL, strict byte 055h ; b0 55 ; 0xf211d
+ mov dx, si ; 89 f2 ; 0xf211f
+ out DX, AL ; ee ; 0xf2121
+ lea di, [bx+003h] ; 8d 7f 03 ; 0xf2122 ata.c:433
+ mov AL, strict byte 0aah ; b0 aa ; 0xf2125
+ mov dx, di ; 89 fa ; 0xf2127
+ out DX, AL ; ee ; 0xf2129
+ mov dx, si ; 89 f2 ; 0xf212a ata.c:434
+ out DX, AL ; ee ; 0xf212c
+ mov AL, strict byte 055h ; b0 55 ; 0xf212d ata.c:435
+ mov dx, di ; 89 fa ; 0xf212f
+ out DX, AL ; ee ; 0xf2131
+ mov dx, si ; 89 f2 ; 0xf2132 ata.c:436
+ out DX, AL ; ee ; 0xf2134
+ mov AL, strict byte 0aah ; b0 aa ; 0xf2135 ata.c:437
+ mov dx, di ; 89 fa ; 0xf2137
+ out DX, AL ; ee ; 0xf2139
+ mov dx, si ; 89 f2 ; 0xf213a ata.c:440
+ in AL, DX ; ec ; 0xf213c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf213d
+ mov cx, ax ; 89 c1 ; 0xf213f
+ mov dx, di ; 89 fa ; 0xf2141 ata.c:441
+ in AL, DX ; ec ; 0xf2143
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2144
+ cmp cl, 055h ; 80 f9 55 ; 0xf2146 ata.c:443
+ jne short 02195h ; 75 4a ; 0xf2149
+ cmp AL, strict byte 0aah ; 3c aa ; 0xf214b
+ jne short 02195h ; 75 46 ; 0xf214d
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf214f ata.c:444
+ xor ah, ah ; 30 e4 ; 0xf2152
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2154
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2157
+ mov si, word [bp-02ch] ; 8b 76 d4 ; 0xf215a
+ add si, ax ; 01 c6 ; 0xf215d
+ mov byte [es:si+022h], 001h ; 26 c6 44 22 01 ; 0xf215f
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2164 ata.c:447
+ xor ah, ah ; 30 e4 ; 0xf2167
+ call 01d1dh ; e8 b1 fb ; 0xf2169
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf216c ata.c:450
+ je short 02177h ; 74 05 ; 0xf2170
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2172
+ jmp short 0217ah ; eb 03 ; 0xf2175
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2177
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf217a
+ out DX, AL ; ee ; 0xf217d
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf217e ata.c:451
+ in AL, DX ; ec ; 0xf2181
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2182
+ mov cx, ax ; 89 c1 ; 0xf2184
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf2186 ata.c:452
+ in AL, DX ; ec ; 0xf2189
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf218a
+ cmp cl, 001h ; 80 f9 01 ; 0xf218c ata.c:453
+ jne short 021d6h ; 75 45 ; 0xf218f
+ cmp al, cl ; 38 c8 ; 0xf2191
+ je short 02197h ; 74 02 ; 0xf2193
+ jmp short 021d6h ; eb 3f ; 0xf2195
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf2197 ata.c:454
+ in AL, DX ; ec ; 0xf219a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf219b
+ mov cx, ax ; 89 c1 ; 0xf219d
+ mov ch, al ; 88 c5 ; 0xf219f
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf21a1 ata.c:455
+ in AL, DX ; ec ; 0xf21a4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21a5
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf21a7
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf21aa
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf21ad
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf21b0 ata.c:456
+ in AL, DX ; ec ; 0xf21b3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21b4
+ cmp cl, 014h ; 80 f9 14 ; 0xf21b6 ata.c:458
+ jne short 021d8h ; 75 1d ; 0xf21b9
+ cmp byte [bp-01ah], 0ebh ; 80 7e e6 eb ; 0xf21bb
+ jne short 021d8h ; 75 17 ; 0xf21bf
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf21c1 ata.c:459
+ xor ah, ah ; 30 e4 ; 0xf21c4
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf21c6
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf21c9
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf21cc
+ add bx, ax ; 01 c3 ; 0xf21cf
+ mov byte [es:bx+022h], 003h ; 26 c6 47 22 03 ; 0xf21d1
+ jmp short 0221ch ; eb 44 ; 0xf21d6 ata.c:460
+ test ch, ch ; 84 ed ; 0xf21d8
+ jne short 021fdh ; 75 21 ; 0xf21da
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf21dc
+ jne short 021fdh ; 75 1b ; 0xf21e0
+ test al, al ; 84 c0 ; 0xf21e2
+ je short 021fdh ; 74 17 ; 0xf21e4
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf21e6 ata.c:461
+ xor ah, ah ; 30 e4 ; 0xf21e9
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf21eb
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf21ee
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf21f1
+ add bx, ax ; 01 c3 ; 0xf21f4
+ mov byte [es:bx+022h], 002h ; 26 c6 47 22 02 ; 0xf21f6
+ jmp short 0221ch ; eb 1f ; 0xf21fb ata.c:462
+ cmp ch, 0ffh ; 80 fd ff ; 0xf21fd
+ jne short 0221ch ; 75 1a ; 0xf2200
+ cmp ch, byte [bp-010h] ; 3a 6e f0 ; 0xf2202
+ jne short 0221ch ; 75 15 ; 0xf2205
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2207 ata.c:463
+ xor ah, ah ; 30 e4 ; 0xf220a
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf220c
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf220f
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2212
+ add bx, ax ; 01 c3 ; 0xf2215
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2217
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf221c ata.c:469
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf221f
+ mov AL, strict byte 008h ; b0 08 ; 0xf2222
+ out DX, AL ; ee ; 0xf2224
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2225 ata.c:471
+ xor ah, ah ; 30 e4 ; 0xf2228
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf222a
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf222d
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2230
+ add bx, ax ; 01 c3 ; 0xf2233
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf2235
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2239
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf223c ata.c:474
+ jne short 02289h ; 75 49 ; 0xf223e
+ mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf2240 ata.c:482
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf2245 ata.c:483
+ lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf224a ata.c:484
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf224e
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2251
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2255
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2259 ata.c:485
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf225c
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2260 ata.c:487
+ mov bx, 000ech ; bb ec 00 ; 0xf2263
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf2266
+ mov dx, es ; 8c c2 ; 0xf2269
+ call 01dfah ; e8 8c fb ; 0xf226b
+ test ax, ax ; 85 c0 ; 0xf226e
+ je short 0227dh ; 74 0b ; 0xf2270
+ push 00124h ; 68 24 01 ; 0xf2272 ata.c:488
+ push strict byte 00007h ; 6a 07 ; 0xf2275
+ call 018ffh ; e8 85 f6 ; 0xf2277
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf227a
+ test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf227d ata.c:490
+ je short 0228ch ; 74 08 ; 0xf2282
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2284
+ jmp short 0228eh ; eb 05 ; 0xf2287
+ jmp near 024a0h ; e9 14 02 ; 0xf2289
+ xor ax, ax ; 31 c0 ; 0xf228c
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf228e
+ mov byte [bp-018h], 000h ; c6 46 e8 00 ; 0xf2291 ata.c:494
+ mov word [bp-022h], 00200h ; c7 46 de 00 02 ; 0xf2295 ata.c:496
+ mov ax, word [bp-00264h] ; 8b 86 9c fd ; 0xf229a ata.c:498
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf229e
+ mov ax, word [bp-00260h] ; 8b 86 a0 fd ; 0xf22a1 ata.c:499
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf22a5
+ mov ax, word [bp-0025ah] ; 8b 86 a6 fd ; 0xf22a8 ata.c:500
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf22ac
+ mov ax, word [bp-001eeh] ; 8b 86 12 fe ; 0xf22af ata.c:502
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf22b3
+ mov si, word [bp-001ech] ; 8b b6 14 fe ; 0xf22b6
+ xor ax, ax ; 31 c0 ; 0xf22ba
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf22bc
+ mov word [bp-026h], ax ; 89 46 da ; 0xf22bf
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf22c2 ata.c:503
+ jne short 022e7h ; 75 1f ; 0xf22c6
+ cmp word [bp-02eh], strict byte 0ffffh ; 83 7e d2 ff ; 0xf22c8
+ jne short 022e7h ; 75 19 ; 0xf22cc
+ mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf22ce ata.c:504
+ mov word [bp-026h], ax ; 89 46 da ; 0xf22d2
+ mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf22d5
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf22d9
+ mov si, word [bp-0019ch] ; 8b b6 64 fe ; 0xf22dc
+ mov ax, word [bp-0019eh] ; 8b 86 62 fe ; 0xf22e0
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf22e4
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf22e7 ata.c:505
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf22ea
+ jc short 022fah ; 72 0c ; 0xf22ec
+ jbe short 02302h ; 76 12 ; 0xf22ee
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf22f0
+ je short 0230ah ; 74 16 ; 0xf22f2
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf22f4
+ je short 02306h ; 74 0e ; 0xf22f6
+ jmp short 02344h ; eb 4a ; 0xf22f8
+ test al, al ; 84 c0 ; 0xf22fa
+ jne short 02344h ; 75 46 ; 0xf22fc
+ mov BL, strict byte 01eh ; b3 1e ; 0xf22fe ata.c:508
+ jmp short 0230ch ; eb 0a ; 0xf2300 ata.c:509
+ mov BL, strict byte 026h ; b3 26 ; 0xf2302 ata.c:511
+ jmp short 0230ch ; eb 06 ; 0xf2304 ata.c:512
+ mov BL, strict byte 067h ; b3 67 ; 0xf2306 ata.c:514
+ jmp short 0230ch ; eb 02 ; 0xf2308 ata.c:515
+ mov BL, strict byte 070h ; b3 70 ; 0xf230a ata.c:517
+ mov al, bl ; 88 d8 ; 0xf230c ata.c:524
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf230e
+ xor ah, ah ; 30 e4 ; 0xf2310
+ call 01650h ; e8 3b f3 ; 0xf2312
+ xor ah, ah ; 30 e4 ; 0xf2315
+ mov dx, ax ; 89 c2 ; 0xf2317
+ sal dx, 008h ; c1 e2 08 ; 0xf2319
+ mov al, bl ; 88 d8 ; 0xf231c
+ call 01650h ; e8 2f f3 ; 0xf231e
+ xor ah, ah ; 30 e4 ; 0xf2321
+ add ax, dx ; 01 d0 ; 0xf2323
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf2325
+ mov al, bl ; 88 d8 ; 0xf2328 ata.c:525
+ add AL, strict byte 002h ; 04 02 ; 0xf232a
+ xor ah, ah ; 30 e4 ; 0xf232c
+ call 01650h ; e8 1f f3 ; 0xf232e
+ xor ah, ah ; 30 e4 ; 0xf2331
+ mov word [bp-03ch], ax ; 89 46 c4 ; 0xf2333
+ mov al, bl ; 88 d8 ; 0xf2336 ata.c:526
+ add AL, strict byte 007h ; 04 07 ; 0xf2338
+ call 01650h ; e8 13 f3 ; 0xf233a
+ xor ah, ah ; 30 e4 ; 0xf233d
+ mov word [bp-038h], ax ; 89 46 c8 ; 0xf233f
+ jmp short 02356h ; eb 12 ; 0xf2342 ata.c:528
+ push word [bp-026h] ; ff 76 da ; 0xf2344 ata.c:529
+ push word [bp-020h] ; ff 76 e0 ; 0xf2347
+ push si ; 56 ; 0xf234a
+ push word [bp-02eh] ; ff 76 d2 ; 0xf234b
+ mov dx, ss ; 8c d2 ; 0xf234e
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf2350
+ call 058b0h ; e8 5a 35 ; 0xf2353
+ mov bx, 00da0h ; bb a0 0d ; 0xf2356 ata.c:532
+ mov cx, ds ; 8c d9 ; 0xf2359
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf235b
+ call 018bch ; e8 5b f5 ; 0xf235e
+ mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf2361
+ push ax ; 50 ; 0xf2364
+ mov ax, word [bp-03ch] ; 8b 46 c4 ; 0xf2365
+ push ax ; 50 ; 0xf2368
+ mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2369
+ push ax ; 50 ; 0xf236c
+ push word [bp-030h] ; ff 76 d0 ; 0xf236d
+ push word [bp-024h] ; ff 76 dc ; 0xf2370
+ push word [bp-032h] ; ff 76 ce ; 0xf2373
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf2376
+ xor ah, ah ; 30 e4 ; 0xf2379
+ push ax ; 50 ; 0xf237b
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf237c
+ push ax ; 50 ; 0xf237f
+ push 0014dh ; 68 4d 01 ; 0xf2380
+ push strict byte 00004h ; 6a 04 ; 0xf2383
+ call 018ffh ; e8 77 f5 ; 0xf2385
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf2388
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf238b ata.c:534
+ xor ah, ah ; 30 e4 ; 0xf238e
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2390
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2393
+ mov di, word [bp-02ch] ; 8b 7e d4 ; 0xf2396
+ add di, ax ; 01 c7 ; 0xf2399
+ mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf239b
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf23a0 ata.c:535
+ mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf23a3
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf23a7 ata.c:536
+ mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf23aa
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf23ae ata.c:537
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf23b1
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf23b5 ata.c:538
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf23b8
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf23bc ata.c:539
+ mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf23bf
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf23c3 ata.c:540
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf23c6
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf23ca ata.c:541
+ mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf23cd
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf23d1
+ mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf23d4
+ mov word [es:di+038h], si ; 26 89 75 38 ; 0xf23d8
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf23dc
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf23df
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf23e3 ata.c:542
+ push DS ; 1e ; 0xf23e6
+ push SS ; 16 ; 0xf23e7
+ pop DS ; 1f ; 0xf23e8
+ lea si, [bp-03ch] ; 8d 76 c4 ; 0xf23e9
+ movsw ; a5 ; 0xf23ec
+ movsw ; a5 ; 0xf23ed
+ movsw ; a5 ; 0xf23ee
+ pop DS ; 1f ; 0xf23ef
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf23f0 ata.c:543
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf23f3
+ jnc short 0246ah ; 73 73 ; 0xf23f5
+ test al, al ; 84 c0 ; 0xf23f7 ata.c:549
+ jne short 02400h ; 75 05 ; 0xf23f9
+ mov bx, strict word 0003dh ; bb 3d 00 ; 0xf23fb ata.c:550
+ jmp short 02403h ; eb 03 ; 0xf23fe ata.c:551
+ mov bx, strict word 0004dh ; bb 4d 00 ; 0xf2400 ata.c:552
+ mov cx, word [bp-028h] ; 8b 4e d8 ; 0xf2403
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2406 ata.c:564
+ xor ah, ah ; 30 e4 ; 0xf2409
+ imul si, ax, strict byte 00005h ; 6b f0 05 ; 0xf240b
+ sal si, 002h ; c1 e6 02 ; 0xf240e
+ add si, 00104h ; 81 c6 04 01 ; 0xf2411
+ xor al, al ; 30 c0 ; 0xf2415
+ mov es, ax ; 8e c0 ; 0xf2417
+ mov word [es:si], bx ; 26 89 1c ; 0xf2419 ata.c:565
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf241c
+ mov es, cx ; 8e c1 ; 0xf2420 ata.c:571
+ mov word [es:bx+00ch], strict word 00000h ; 26 c7 47 0c 00 00 ; 0xf2422
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf2428
+ mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf242c
+ mov word [es:bx+007h], strict word 00000h ; 26 c7 47 07 00 00 ; 0xf2430
+ mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2436 ata.c:573
+ mov word [es:bx], ax ; 26 89 07 ; 0xf2439
+ mov al, byte [bp-03ch] ; 8a 46 c4 ; 0xf243c ata.c:574
+ mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf243f
+ mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf2443 ata.c:575
+ mov al, byte [bp-030h] ; 8a 46 d0 ; 0xf2448 ata.c:576
+ mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf244b
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf244f ata.c:577
+ mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf2452
+ mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2456 ata.c:578
+ mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf2459
+ mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf245d ata.c:579
+ mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf2460
+ xor al, al ; 30 c0 ; 0xf2464 ata.c:580
+ xor ah, ah ; 30 e4 ; 0xf2466 ata.c:581
+ jmp short 02471h ; eb 07 ; 0xf2468
+ jmp short 0248ah ; eb 1e ; 0xf246a
+ cmp ah, 00fh ; 80 fc 0f ; 0xf246c
+ jnc short 02482h ; 73 11 ; 0xf246f
+ mov dl, ah ; 88 e2 ; 0xf2471 ata.c:582
+ xor dh, dh ; 30 f6 ; 0xf2473
+ mov es, cx ; 8e c1 ; 0xf2475
+ mov si, bx ; 89 de ; 0xf2477
+ add si, dx ; 01 d6 ; 0xf2479
+ add al, byte [es:si] ; 26 02 04 ; 0xf247b
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf247e
+ jmp short 0246ch ; eb ea ; 0xf2480
+ neg al ; f6 d8 ; 0xf2482 ata.c:583
+ mov es, cx ; 8e c1 ; 0xf2484 ata.c:584
+ mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf2486
+ mov bl, byte [bp-00ah] ; 8a 5e f6 ; 0xf248a ata.c:588
+ xor bh, bh ; 30 ff ; 0xf248d
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf248f
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf2492
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2495
+ mov byte [es:bx+001e3h], al ; 26 88 87 e3 01 ; 0xf2498
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xf249d ata.c:589
+ cmp byte [bp-008h], 003h ; 80 7e f8 03 ; 0xf24a0 ata.c:593
+ jne short 02506h ; 75 60 ; 0xf24a4
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf24a6 ata.c:598
+ xor ah, ah ; 30 e4 ; 0xf24a9
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf24ab
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf24ae
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf24b1
+ add bx, ax ; 01 c3 ; 0xf24b4
+ mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf24b6
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf24bb ata.c:599
+ lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf24c0 ata.c:600
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf24c4
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf24c7
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf24cb
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf24cf ata.c:601
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf24d2
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf24d6 ata.c:603
+ mov bx, 000a1h ; bb a1 00 ; 0xf24d9
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf24dc
+ mov dx, es ; 8c c2 ; 0xf24df
+ call 01dfah ; e8 16 f9 ; 0xf24e1
+ test ax, ax ; 85 c0 ; 0xf24e4
+ je short 024f3h ; 74 0b ; 0xf24e6
+ push 00174h ; 68 74 01 ; 0xf24e8 ata.c:604
+ push strict byte 00007h ; 6a 07 ; 0xf24eb
+ call 018ffh ; e8 0f f4 ; 0xf24ed
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf24f0
+ mov cl, byte [bp-00265h] ; 8a 8e 9b fd ; 0xf24f3 ata.c:606
+ and cl, 01fh ; 80 e1 1f ; 0xf24f7
+ test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf24fa ata.c:607
+ je short 02508h ; 74 07 ; 0xf24ff
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2501
+ jmp short 0250ah ; eb 04 ; 0xf2504
+ jmp short 02540h ; eb 38 ; 0xf2506
+ xor ax, ax ; 31 c0 ; 0xf2508
+ mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf250a ata.c:615
+ xor dh, dh ; 30 f6 ; 0xf250d
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf250f
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2512
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2515
+ add bx, dx ; 01 d3 ; 0xf2518
+ mov byte [es:bx+023h], cl ; 26 88 4f 23 ; 0xf251a
+ mov byte [es:bx+024h], al ; 26 88 47 24 ; 0xf251e ata.c:616
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf2522 ata.c:617
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2527 ata.c:618
+ mov bl, byte [bp-016h] ; 8a 5e ea ; 0xf252d ata.c:621
+ xor bh, bh ; 30 ff ; 0xf2530
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf2532
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2535
+ mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf2538
+ inc byte [bp-016h] ; fe 46 ea ; 0xf253d ata.c:622
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2540 ata.c:631
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2543
+ je short 02577h ; 74 30 ; 0xf2545
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2547
+ jne short 025a7h ; 75 5c ; 0xf2549
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf254b ata.c:633
+ xor ah, ah ; 30 e4 ; 0xf254e
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2550
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2553
+ mov di, word [bp-02ch] ; 8b 7e d4 ; 0xf2556
+ add di, ax ; 01 c7 ; 0xf2559
+ mov ax, word [es:di+03ch] ; 26 8b 45 3c ; 0xf255b
+ mov bx, word [es:di+03ah] ; 26 8b 5d 3a ; 0xf255f
+ mov cx, word [es:di+038h] ; 26 8b 4d 38 ; 0xf2563
+ mov dx, word [es:di+036h] ; 26 8b 55 36 ; 0xf2567
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf256b
+ call 09b90h ; e8 1f 76 ; 0xf256e
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf2571
+ mov word [bp-034h], cx ; 89 4e cc ; 0xf2574
+ mov al, byte [bp-001c5h] ; 8a 86 3b fe ; 0xf2577 ata.c:636
+ xor ah, ah ; 30 e4 ; 0xf257b
+ mov dx, ax ; 89 c2 ; 0xf257d
+ sal dx, 008h ; c1 e2 08 ; 0xf257f
+ mov al, byte [bp-001c6h] ; 8a 86 3a fe ; 0xf2582
+ or ax, dx ; 09 d0 ; 0xf2586
+ mov byte [bp-006h], 00fh ; c6 46 fa 0f ; 0xf2588 ata.c:637
+ jmp short 02597h ; eb 09 ; 0xf258c
+ dec byte [bp-006h] ; fe 4e fa ; 0xf258e ata.c:640
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2591
+ jbe short 025a3h ; 76 0c ; 0xf2595
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2597
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf259a
+ sal dx, CL ; d3 e2 ; 0xf259d
+ test ax, dx ; 85 d0 ; 0xf259f
+ je short 0258eh ; 74 eb ; 0xf25a1
+ xor di, di ; 31 ff ; 0xf25a3 ata.c:643
+ jmp short 025aeh ; eb 07 ; 0xf25a5
+ jmp short 025ddh ; eb 34 ; 0xf25a7
+ cmp di, strict byte 00014h ; 83 ff 14 ; 0xf25a9
+ jnl short 025c3h ; 7d 15 ; 0xf25ac
+ mov si, di ; 89 fe ; 0xf25ae ata.c:644
+ add si, di ; 01 fe ; 0xf25b0
+ mov al, byte [bp+si-0022fh] ; 8a 82 d1 fd ; 0xf25b2
+ mov byte [bp+si-066h], al ; 88 42 9a ; 0xf25b6
+ mov al, byte [bp+si-00230h] ; 8a 82 d0 fd ; 0xf25b9 ata.c:645
+ mov byte [bp+si-065h], al ; 88 42 9b ; 0xf25bd
+ inc di ; 47 ; 0xf25c0 ata.c:646
+ jmp short 025a9h ; eb e6 ; 0xf25c1
+ mov byte [bp-03eh], 000h ; c6 46 c2 00 ; 0xf25c3 ata.c:649
+ mov di, strict word 00027h ; bf 27 00 ; 0xf25c7 ata.c:650
+ jmp short 025d1h ; eb 05 ; 0xf25ca
+ dec di ; 4f ; 0xf25cc ata.c:655
+ test di, di ; 85 ff ; 0xf25cd
+ jle short 025ddh ; 7e 0c ; 0xf25cf
+ cmp byte [bp+di-066h], 020h ; 80 7b 9a 20 ; 0xf25d1
+ jne short 025ddh ; 75 06 ; 0xf25d5
+ mov byte [bp+di-066h], 000h ; c6 43 9a 00 ; 0xf25d7
+ jmp short 025cch ; eb ef ; 0xf25db
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf25dd ata.c:662
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf25e0
+ je short 02641h ; 74 5d ; 0xf25e2
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf25e4
+ je short 025efh ; 74 07 ; 0xf25e6
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf25e8
+ je short 0264ch ; 74 60 ; 0xf25ea
+ jmp near 026d0h ; e9 e1 00 ; 0xf25ec
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf25ef ata.c:665
+ je short 025fah ; 74 05 ; 0xf25f3
+ mov ax, 0019fh ; b8 9f 01 ; 0xf25f5
+ jmp short 025fdh ; eb 03 ; 0xf25f8
+ mov ax, 001a6h ; b8 a6 01 ; 0xf25fa
+ push ax ; 50 ; 0xf25fd
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf25fe
+ xor ah, ah ; 30 e4 ; 0xf2601
+ push ax ; 50 ; 0xf2603
+ push 001adh ; 68 ad 01 ; 0xf2604
+ push strict byte 00002h ; 6a 02 ; 0xf2607
+ call 018ffh ; e8 f3 f2 ; 0xf2609
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf260c
+ xor di, di ; 31 ff ; 0xf260f ata.c:666
+ mov al, byte [bp+di-066h] ; 8a 43 9a ; 0xf2611 ata.c:667
+ xor ah, ah ; 30 e4 ; 0xf2614
+ inc di ; 47 ; 0xf2616
+ test ax, ax ; 85 c0 ; 0xf2617
+ je short 02629h ; 74 0e ; 0xf2619
+ push ax ; 50 ; 0xf261b ata.c:668
+ push 001b8h ; 68 b8 01 ; 0xf261c
+ push strict byte 00002h ; 6a 02 ; 0xf261f
+ call 018ffh ; e8 db f2 ; 0xf2621
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2624
+ jmp short 02611h ; eb e8 ; 0xf2627
+ push word [bp-034h] ; ff 76 cc ; 0xf2629 ata.c:669
+ push word [bp-02ah] ; ff 76 d6 ; 0xf262c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf262f
+ push ax ; 50 ; 0xf2632
+ push 001bbh ; 68 bb 01 ; 0xf2633
+ push strict byte 00002h ; 6a 02 ; 0xf2636
+ call 018ffh ; e8 c4 f2 ; 0xf2638
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf263b
+ jmp near 026d0h ; e9 8f 00 ; 0xf263e ata.c:670
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf2641 ata.c:672
+ je short 0264eh ; 74 07 ; 0xf2645
+ mov ax, 0019fh ; b8 9f 01 ; 0xf2647
+ jmp short 02651h ; eb 05 ; 0xf264a
+ jmp short 026b0h ; eb 62 ; 0xf264c
+ mov ax, 001a6h ; b8 a6 01 ; 0xf264e
+ push ax ; 50 ; 0xf2651
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2652
+ xor ah, ah ; 30 e4 ; 0xf2655
+ push ax ; 50 ; 0xf2657
+ push 001adh ; 68 ad 01 ; 0xf2658
+ push strict byte 00002h ; 6a 02 ; 0xf265b
+ call 018ffh ; e8 9f f2 ; 0xf265d
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2660
+ xor di, di ; 31 ff ; 0xf2663 ata.c:673
+ mov al, byte [bp+di-066h] ; 8a 43 9a ; 0xf2665 ata.c:674
+ xor ah, ah ; 30 e4 ; 0xf2668
+ inc di ; 47 ; 0xf266a
+ test ax, ax ; 85 c0 ; 0xf266b
+ je short 0267dh ; 74 0e ; 0xf266d
+ push ax ; 50 ; 0xf266f ata.c:675
+ push 001b8h ; 68 b8 01 ; 0xf2670
+ push strict byte 00002h ; 6a 02 ; 0xf2673
+ call 018ffh ; e8 87 f2 ; 0xf2675
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2678
+ jmp short 02665h ; eb e8 ; 0xf267b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf267d ata.c:676
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2680
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2683
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2686
+ add bx, ax ; 01 c3 ; 0xf2689
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf268b
+ jne short 0269dh ; 75 0b ; 0xf2690
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2692 ata.c:677
+ xor ah, ah ; 30 e4 ; 0xf2695
+ push ax ; 50 ; 0xf2697
+ push 001dbh ; 68 db 01 ; 0xf2698
+ jmp short 026a6h ; eb 09 ; 0xf269b ata.c:678
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf269d ata.c:679
+ xor ah, ah ; 30 e4 ; 0xf26a0
+ push ax ; 50 ; 0xf26a2
+ push 001f5h ; 68 f5 01 ; 0xf26a3
+ push strict byte 00002h ; 6a 02 ; 0xf26a6
+ call 018ffh ; e8 54 f2 ; 0xf26a8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26ab
+ jmp short 026d0h ; eb 20 ; 0xf26ae ata.c:680
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf26b0 ata.c:682
+ je short 026bbh ; 74 05 ; 0xf26b4
+ mov ax, 0019fh ; b8 9f 01 ; 0xf26b6
+ jmp short 026beh ; eb 03 ; 0xf26b9
+ mov ax, 001a6h ; b8 a6 01 ; 0xf26bb
+ push ax ; 50 ; 0xf26be
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf26bf
+ xor ah, ah ; 30 e4 ; 0xf26c2
+ push ax ; 50 ; 0xf26c4
+ push 00207h ; 68 07 02 ; 0xf26c5
+ push strict byte 00002h ; 6a 02 ; 0xf26c8
+ call 018ffh ; e8 32 f2 ; 0xf26ca
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf26cd
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf26d0 ata.c:687
+ cmp byte [bp-00ch], 008h ; 80 7e f4 08 ; 0xf26d3
+ jnc short 0272eh ; 73 55 ; 0xf26d7
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf26d9
+ xor bh, bh ; 30 ff ; 0xf26dc
+ mov ax, bx ; 89 d8 ; 0xf26de
+ cwd ; 99 ; 0xf26e0
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf26e1
+ sar ax, 1 ; d1 f8 ; 0xf26e3
+ mov cx, ax ; 89 c1 ; 0xf26e5
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf26e7
+ mov ax, bx ; 89 d8 ; 0xf26ea
+ cwd ; 99 ; 0xf26ec
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf26ed
+ idiv bx ; f7 fb ; 0xf26f0
+ mov word [bp-036h], dx ; 89 56 ca ; 0xf26f2
+ mov al, byte [bp-036h] ; 8a 46 ca ; 0xf26f5
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf26f8
+ mov al, cl ; 88 c8 ; 0xf26fb
+ xor ah, ah ; 30 e4 ; 0xf26fd
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf26ff
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2702
+ mov si, word [bp-02ch] ; 8b 76 d4 ; 0xf2705
+ add si, ax ; 01 c6 ; 0xf2708
+ mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf270a
+ mov ax, word [es:si+00208h] ; 26 8b 84 08 02 ; 0xf270f
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf2714
+ mov dx, ax ; 89 c2 ; 0xf2717
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2719
+ mov AL, strict byte 00ah ; b0 0a ; 0xf271c
+ out DX, AL ; ee ; 0xf271e
+ cmp byte [bp-036h], 000h ; 80 7e ca 00 ; 0xf271f
+ jne short 02728h ; 75 03 ; 0xf2723
+ jmp near 02113h ; e9 eb f9 ; 0xf2725
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2728
+ jmp near 02116h ; e9 e8 f9 ; 0xf272b
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf272e ata.c:690
+ mov es, [bp-01ch] ; 8e 46 e4 ; 0xf2731
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf2734
+ mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf2737
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf273c ata.c:691
+ mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf273f
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf2744 ata.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2747
+ mov es, ax ; 8e c0 ; 0xf274a
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf274c
+ mov byte [es:bx], al ; 26 88 07 ; 0xf274f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2752 ata.c:704
+ pop di ; 5f ; 0xf2755
+ pop si ; 5e ; 0xf2756
+ pop bp ; 5d ; 0xf2757
+ retn ; c3 ; 0xf2758
+ ; disGetNextSymbol 0xf2759 LB 0x776f -> off=0x0 cb=000000000000028a uValue=00000000000f1159 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf2759 LB 0x28a
+ push bp ; 55 ; 0xf2759 ata.c:718
+ mov bp, sp ; 89 e5 ; 0xf275a
+ push si ; 56 ; 0xf275c
+ push di ; 57 ; 0xf275d
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf275e
+ mov di, ax ; 89 c7 ; 0xf2761
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf2763
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf2766
+ mov word [bp-022h], cx ; 89 4e de ; 0xf2769
+ mov es, dx ; 8e c2 ; 0xf276c ata.c:730
+ mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf276e
+ xor ah, ah ; 30 e4 ; 0xf2772
+ mov dx, ax ; 89 c2 ; 0xf2774
+ shr ax, 1 ; d1 e8 ; 0xf2776 ata.c:731
+ and dl, 001h ; 80 e2 01 ; 0xf2778 ata.c:732
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf277b
+ xor ah, ah ; 30 e4 ; 0xf277e ata.c:734
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf2780
+ mov bx, di ; 89 fb ; 0xf2783
+ add bx, ax ; 01 c3 ; 0xf2785
+ mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf2787
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf278c
+ mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf278f ata.c:735
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf2794
+ mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf2797 ata.c:743
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf279c ata.c:745
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf279f
+ in AL, DX ; ec ; 0xf27a2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf27a3
+ test AL, strict byte 080h ; a8 80 ; 0xf27a5 ata.c:746
+ je short 027b8h ; 74 0f ; 0xf27a7
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf27a9 ata.c:749
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf27ac
+ mov AL, strict byte 008h ; b0 08 ; 0xf27af
+ out DX, AL ; ee ; 0xf27b1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf27b2 ata.c:750
+ jmp near 029dch ; e9 24 02 ; 0xf27b5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf27b8 ata.c:753
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf27bb
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf27bf
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf27c2
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf27c6
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf27c9
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf27cd
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf27d0
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf27d3
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf27d6 ata.c:754
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf27da
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf27dd
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf27e1
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf27e4 ata.c:755
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf27e8
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf27eb ata.c:756
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf27ef
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf27f2 ata.c:757
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf27f6
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf27f9 ata.c:760
+ test ax, ax ; 85 c0 ; 0xf27fc
+ je short 02803h ; 74 03 ; 0xf27fe
+ jmp near 028cah ; e9 c7 00 ; 0xf2800
+ xor bx, bx ; 31 db ; 0xf2803 ata.c:761
+ xor dx, dx ; 31 d2 ; 0xf2805
+ mov si, word [bp-024h] ; 8b 76 dc ; 0xf2807
+ add si, word [bp-022h] ; 03 76 de ; 0xf280a
+ adc bx, word [bp-010h] ; 13 5e f0 ; 0xf280d
+ adc ax, word [bp-00eh] ; 13 46 f2 ; 0xf2810
+ adc dx, word [bp-00ch] ; 13 56 f4 ; 0xf2813
+ test dx, dx ; 85 d2 ; 0xf2816
+ jnbe short 0282ah ; 77 10 ; 0xf2818
+ jne short 0288dh ; 75 71 ; 0xf281a
+ test ax, ax ; 85 c0 ; 0xf281c
+ jnbe short 0282ah ; 77 0a ; 0xf281e
+ jne short 0288dh ; 75 6b ; 0xf2820
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf2822
+ jnbe short 0282ah ; 77 02 ; 0xf2826
+ jne short 0288dh ; 75 63 ; 0xf2828
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf282a ata.c:763
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf282d
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2830
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf2833
+ mov si, strict word 00018h ; be 18 00 ; 0xf2836
+ call 09b90h ; e8 54 73 ; 0xf2839
+ xor dh, dh ; 30 f6 ; 0xf283c
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf283e
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2841 ata.c:764
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2844
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2847
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf284a
+ mov si, strict word 00020h ; be 20 00 ; 0xf284d
+ call 09b90h ; e8 3d 73 ; 0xf2850
+ mov bx, dx ; 89 d3 ; 0xf2853
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf2855 ata.c:765
+ xor al, al ; 30 c0 ; 0xf2858
+ shr ax, 008h ; c1 e8 08 ; 0xf285a
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf285d
+ inc dx ; 42 ; 0xf2860
+ inc dx ; 42 ; 0xf2861
+ out DX, AL ; ee ; 0xf2862
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2863 ata.c:766
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2866
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf2869
+ out DX, AL ; ee ; 0xf286c
+ mov ax, bx ; 89 d8 ; 0xf286d ata.c:767
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf286f
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2872
+ out DX, AL ; ee ; 0xf2875
+ shr ax, 008h ; c1 e8 08 ; 0xf2876 ata.c:768
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2879
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf287c
+ out DX, AL ; ee ; 0xf287f
+ xor al, al ; 30 c0 ; 0xf2880 ata.c:771
+ mov byte [bp-00fh], al ; 88 46 f1 ; 0xf2882
+ xor ah, ah ; 30 e4 ; 0xf2885
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2887
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf288a
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf288d ata.c:773
+ xor ah, ah ; 30 e4 ; 0xf2890
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2892
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2895 ata.c:774
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf2898
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf289b
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf289e
+ mov si, strict word 00008h ; be 08 00 ; 0xf28a1
+ call 09b90h ; e8 e9 72 ; 0xf28a4
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28a7
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf28aa
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf28ad
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28b0
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf28b3 ata.c:775
+ mov si, strict word 00010h ; be 10 00 ; 0xf28b6 ata.c:776
+ call 09b90h ; e8 d4 72 ; 0xf28b9
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28bc
+ mov ax, dx ; 89 d0 ; 0xf28bf ata.c:777
+ xor ah, dh ; 30 f4 ; 0xf28c1
+ and AL, strict byte 00fh ; 24 0f ; 0xf28c3
+ or AL, strict byte 040h ; 0c 40 ; 0xf28c5
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf28c7
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf28ca ata.c:780
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf28cd
+ mov AL, strict byte 00ah ; b0 0a ; 0xf28d0
+ out DX, AL ; ee ; 0xf28d2
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28d3 ata.c:781
+ inc dx ; 42 ; 0xf28d6
+ xor al, al ; 30 c0 ; 0xf28d7
+ out DX, AL ; ee ; 0xf28d9
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28da ata.c:782
+ inc dx ; 42 ; 0xf28dd
+ inc dx ; 42 ; 0xf28de
+ mov al, byte [bp-022h] ; 8a 46 de ; 0xf28df
+ out DX, AL ; ee ; 0xf28e2
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28e3 ata.c:783
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf28e6
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf28e9
+ out DX, AL ; ee ; 0xf28ec
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf28ed ata.c:784
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28f0
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf28f3
+ out DX, AL ; ee ; 0xf28f6
+ shr ax, 008h ; c1 e8 08 ; 0xf28f7 ata.c:785
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28fa
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf28fd
+ out DX, AL ; ee ; 0xf2900
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2901 ata.c:786
+ je short 0290ch ; 74 05 ; 0xf2905
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2907
+ jmp short 0290fh ; eb 03 ; 0xf290a
+ mov ax, 000a0h ; b8 a0 00 ; 0xf290c
+ mov dl, byte [bp-01ch] ; 8a 56 e4 ; 0xf290f
+ xor dh, dh ; 30 f6 ; 0xf2912
+ or ax, dx ; 09 d0 ; 0xf2914
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2916
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2919
+ out DX, AL ; ee ; 0xf291c
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf291d ata.c:787
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2920
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2923
+ out DX, AL ; ee ; 0xf2926
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2927 ata.c:790
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf292a
+ in AL, DX ; ec ; 0xf292d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf292e
+ mov bl, al ; 88 c3 ; 0xf2930
+ test AL, strict byte 080h ; a8 80 ; 0xf2932 ata.c:791
+ jne short 02927h ; 75 f1 ; 0xf2934
+ test AL, strict byte 001h ; a8 01 ; 0xf2936 ata.c:795
+ je short 02949h ; 74 0f ; 0xf2938
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf293a ata.c:798
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf293d
+ mov AL, strict byte 008h ; b0 08 ; 0xf2940
+ out DX, AL ; ee ; 0xf2942
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2943 ata.c:799
+ jmp near 029dch ; e9 93 00 ; 0xf2946
+ test bl, 008h ; f6 c3 08 ; 0xf2949 ata.c:800
+ jne short 0295dh ; 75 0f ; 0xf294c
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf294e ata.c:803
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2951
+ mov AL, strict byte 008h ; b0 08 ; 0xf2954
+ out DX, AL ; ee ; 0xf2956
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2957 ata.c:804
+ jmp near 029dch ; e9 7f 00 ; 0xf295a
+ sti ; fb ; 0xf295d ata.c:809
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf295e ata.c:814
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf2961
+ jc short 02976h ; 72 10 ; 0xf2964
+ sub ax, 00800h ; 2d 00 08 ; 0xf2966 ata.c:815
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2969
+ add dx, 00080h ; 81 c2 80 00 ; 0xf296c
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2970
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf2973
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2976 ata.c:822
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2979
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf297c
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf297f
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2982
+ mov word [bp-016h], si ; 89 76 ea ; 0xf2985
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2988 ata.c:824
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf298b
+ dec word [bp-022h] ; ff 4e de ; 0xf298f ata.c:825
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2992 ata.c:827
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2995
+ in AL, DX ; ec ; 0xf2998
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2999
+ mov bl, al ; 88 c3 ; 0xf299b
+ test AL, strict byte 080h ; a8 80 ; 0xf299d ata.c:828
+ jne short 02992h ; 75 f1 ; 0xf299f
+ cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf29a1 ata.c:831
+ jne short 029bbh ; 75 14 ; 0xf29a5
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf29a7 ata.c:832
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf29a9
+ je short 029d1h ; 74 24 ; 0xf29ab
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29ad ata.c:836
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29b0
+ mov AL, strict byte 008h ; b0 08 ; 0xf29b3
+ out DX, AL ; ee ; 0xf29b5
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf29b6 ata.c:837
+ jmp short 029dch ; eb 21 ; 0xf29b9
+ mov al, bl ; 88 d8 ; 0xf29bb ata.c:842
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf29bd
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf29bf
+ je short 0295eh ; 74 9b ; 0xf29c1
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29c3 ata.c:846
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29c6
+ mov AL, strict byte 008h ; b0 08 ; 0xf29c9
+ out DX, AL ; ee ; 0xf29cb
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf29cc ata.c:847
+ jmp short 029dch ; eb 0b ; 0xf29cf
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf29d1 ata.c:853
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29d4
+ mov AL, strict byte 008h ; b0 08 ; 0xf29d7
+ out DX, AL ; ee ; 0xf29d9
+ xor ax, ax ; 31 c0 ; 0xf29da ata.c:854
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf29dc ata.c:855
+ pop di ; 5f ; 0xf29df
+ pop si ; 5e ; 0xf29e0
+ pop bp ; 5d ; 0xf29e1
+ retn ; c3 ; 0xf29e2
+ ; disGetNextSymbol 0xf29e3 LB 0x74e5 -> off=0x0 cb=00000000000000b5 uValue=00000000000f13e3 'ata_read_sectors'
+ata_read_sectors: ; 0xf29e3 LB 0xb5
+ push bp ; 55 ; 0xf29e3 ata.c:865
+ mov bp, sp ; 89 e5 ; 0xf29e4
+ push si ; 56 ; 0xf29e6
+ push di ; 57 ; 0xf29e7
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf29e8
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf29eb
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf29ee ata.c:871
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf29f1
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf29f5 ata.c:872
+ mov dx, cx ; 89 ca ; 0xf29f9
+ sal dx, 009h ; c1 e2 09 ; 0xf29fb
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf29fe ata.c:874
+ je short 02a24h ; 74 1f ; 0xf2a03
+ xor ah, ah ; 30 e4 ; 0xf2a05 ata.c:876
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a07
+ mov [bp-00ch], es ; 8c 46 f4 ; 0xf2a0a
+ mov di, si ; 89 f7 ; 0xf2a0d
+ add di, ax ; 01 c7 ; 0xf2a0f
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2a11
+ mov bx, 000c4h ; bb c4 00 ; 0xf2a15 ata.c:878
+ mov ax, si ; 89 f0 ; 0xf2a18
+ mov dx, es ; 8c c2 ; 0xf2a1a
+ call 01dfah ; e8 db f3 ; 0xf2a1c
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2a1f ata.c:879
+ jmp short 02a89h ; eb 65 ; 0xf2a22 ata.c:880
+ xor bx, bx ; 31 db ; 0xf2a24 ata.c:882
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2a26
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf2a29
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2a2c
+ add di, cx ; 01 cf ; 0xf2a2f
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf2a31
+ mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2a34
+ adc di, bx ; 11 df ; 0xf2a38
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2a3a
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2a3d
+ adc bx, word [bp-00ch] ; 13 5e f4 ; 0xf2a41
+ mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2a44
+ adc di, word [bp-006h] ; 13 7e fa ; 0xf2a48
+ test di, di ; 85 ff ; 0xf2a4b
+ jnbe short 02a60h ; 77 11 ; 0xf2a4d
+ jne short 02a6ch ; 75 1b ; 0xf2a4f
+ test bx, bx ; 85 db ; 0xf2a51
+ jnbe short 02a60h ; 77 0b ; 0xf2a53
+ jne short 02a6ch ; 75 15 ; 0xf2a55
+ cmp word [bp-008h], 01000h ; 81 7e f8 00 10 ; 0xf2a57
+ jnbe short 02a60h ; 77 02 ; 0xf2a5c
+ jne short 02a6ch ; 75 0c ; 0xf2a5e
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2a60 ata.c:884
+ mov ax, si ; 89 f0 ; 0xf2a63
+ mov dx, es ; 8c c2 ; 0xf2a65
+ call 01dfah ; e8 90 f3 ; 0xf2a67
+ jmp short 02a8fh ; eb 23 ; 0xf2a6a ata.c:885
+ xor ah, ah ; 30 e4 ; 0xf2a6c ata.c:886
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2a6e
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2a71
+ mov di, si ; 89 f7 ; 0xf2a74
+ add di, ax ; 01 c7 ; 0xf2a76
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2a78
+ mov bx, 000c4h ; bb c4 00 ; 0xf2a7c ata.c:888
+ mov ax, si ; 89 f0 ; 0xf2a7f
+ mov dx, es ; 8c c2 ; 0xf2a81
+ call 01dfah ; e8 74 f3 ; 0xf2a83
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2a86 ata.c:889
+ mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2a89
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a8f ata.c:893
+ pop di ; 5f ; 0xf2a92
+ pop si ; 5e ; 0xf2a93
+ pop bp ; 5d ; 0xf2a94
+ retn 00004h ; c2 04 00 ; 0xf2a95
+ ; disGetNextSymbol 0xf2a98 LB 0x7430 -> off=0x0 cb=000000000000005b uValue=00000000000f1498 'ata_write_sectors'
+ata_write_sectors: ; 0xf2a98 LB 0x5b
+ push bp ; 55 ; 0xf2a98 ata.c:902
+ mov bp, sp ; 89 e5 ; 0xf2a99
+ push si ; 56 ; 0xf2a9b
+ push di ; 57 ; 0xf2a9c
+ push ax ; 50 ; 0xf2a9d
+ les si, [bp+004h] ; c4 76 04 ; 0xf2a9e
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2aa1 ata.c:906
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2aa5 ata.c:908
+ je short 02ab8h ; 74 0c ; 0xf2aaa
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2aac ata.c:910
+ mov ax, si ; 89 f0 ; 0xf2aaf
+ mov dx, es ; 8c c2 ; 0xf2ab1
+ call 02759h ; e8 a3 fc ; 0xf2ab3
+ jmp short 02aeah ; eb 32 ; 0xf2ab6
+ xor ax, ax ; 31 c0 ; 0xf2ab8 ata.c:913
+ xor bx, bx ; 31 db ; 0xf2aba
+ xor dx, dx ; 31 d2 ; 0xf2abc
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2abe
+ add di, cx ; 01 cf ; 0xf2ac1
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2ac3
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2ac6
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2aca
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2ace
+ test dx, dx ; 85 d2 ; 0xf2ad2
+ jnbe short 02ae5h ; 77 0f ; 0xf2ad4
+ jne short 02aach ; 75 d4 ; 0xf2ad6
+ test bx, bx ; 85 db ; 0xf2ad8
+ jnbe short 02ae5h ; 77 09 ; 0xf2ada
+ jne short 02aach ; 75 ce ; 0xf2adc
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2ade
+ jnbe short 02ae5h ; 77 02 ; 0xf2ae1
+ jne short 02aach ; 75 c7 ; 0xf2ae3
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2ae5 ata.c:914
+ jmp short 02aafh ; eb c5 ; 0xf2ae8
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2aea ata.c:918
+ pop di ; 5f ; 0xf2aed
+ pop si ; 5e ; 0xf2aee
+ pop bp ; 5d ; 0xf2aef
+ retn 00004h ; c2 04 00 ; 0xf2af0
+ ; disGetNextSymbol 0xf2af3 LB 0x73d5 -> off=0x0 cb=0000000000000285 uValue=00000000000f14f3 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2af3 LB 0x285
+ push bp ; 55 ; 0xf2af3 ata.c:930
+ mov bp, sp ; 89 e5 ; 0xf2af4
+ push si ; 56 ; 0xf2af6
+ push di ; 57 ; 0xf2af7
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf2af8
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2afb
+ mov si, bx ; 89 de ; 0xf2afe
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b00 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2b03
+ mov es, dx ; 8e c2 ; 0xf2b06
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b08
+ mov word [bp-010h], 00122h ; c7 46 f0 22 01 ; 0xf2b0b ata.c:49
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf2b10
+ mov dx, ax ; 89 c2 ; 0xf2b13 ata.c:942
+ shr dx, 1 ; d1 ea ; 0xf2b15
+ mov ah, dl ; 88 d4 ; 0xf2b17
+ and AL, strict byte 001h ; 24 01 ; 0xf2b19 ata.c:943
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2b1b
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2b1e ata.c:946
+ jne short 02b43h ; 75 1f ; 0xf2b22
+ mov bx, 00da0h ; bb a0 0d ; 0xf2b24 ata.c:947
+ mov cx, ds ; 8c d9 ; 0xf2b27
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2b29
+ call 018bch ; e8 8d ed ; 0xf2b2c
+ push 00221h ; 68 21 02 ; 0xf2b2f
+ push 00230h ; 68 30 02 ; 0xf2b32
+ push strict byte 00004h ; 6a 04 ; 0xf2b35
+ call 018ffh ; e8 c5 ed ; 0xf2b37
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2b3a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2b3d ata.c:948
+ jmp near 02d6fh ; e9 2c 02 ; 0xf2b40
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2b43 ata.c:952
+ jne short 02b3dh ; 75 f4 ; 0xf2b47
+ mov al, ah ; 88 e0 ; 0xf2b49 ata.c:957
+ xor ah, ah ; 30 e4 ; 0xf2b4b
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf2b4d
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf2b50
+ add bx, ax ; 01 c3 ; 0xf2b53
+ mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf2b55
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf2b5a
+ mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf2b5d ata.c:958
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2b62
+ xor ax, ax ; 31 c0 ; 0xf2b65 ata.c:960
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2b67
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2b6a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2b6d ata.c:962
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2b70
+ jnc short 02b7ah ; 73 06 ; 0xf2b72
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2b74 ata.c:963
+ jmp short 02b80h ; eb 06 ; 0xf2b78
+ jbe short 02b80h ; 76 04 ; 0xf2b7a ata.c:964
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2b7c ata.c:965
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2b80 ata.c:966
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf2b83 ata.c:970
+ mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2b86
+ mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2b8c ata.c:971
+ mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2b92
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2b98 ata.c:973
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2b9b
+ in AL, DX ; ec ; 0xf2b9e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2b9f
+ test AL, strict byte 080h ; a8 80 ; 0xf2ba1 ata.c:974
+ je short 02babh ; 74 06 ; 0xf2ba3
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2ba5 ata.c:975
+ jmp near 02d6fh ; e9 c4 01 ; 0xf2ba8
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2bab ata.c:977
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bae
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2bb1
+ out DX, AL ; ee ; 0xf2bb3
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bb4 ata.c:981
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2bb7
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2bba
+ out DX, AL ; ee ; 0xf2bbc
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bbd ata.c:982
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2bc0
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2bc3
+ out DX, AL ; ee ; 0xf2bc5
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2bc6 ata.c:983
+ je short 02bd1h ; 74 05 ; 0xf2bca
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2bcc
+ jmp short 02bd4h ; eb 03 ; 0xf2bcf
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2bd1
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bd4
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bd7
+ out DX, AL ; ee ; 0xf2bda
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2bdb ata.c:984
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2bde
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2be1
+ out DX, AL ; ee ; 0xf2be3
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2be4 ata.c:988
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2be7
+ in AL, DX ; ec ; 0xf2bea
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2beb
+ mov bl, al ; 88 c3 ; 0xf2bed
+ test AL, strict byte 080h ; a8 80 ; 0xf2bef ata.c:989
+ jne short 02be4h ; 75 f1 ; 0xf2bf1
+ test AL, strict byte 001h ; a8 01 ; 0xf2bf3 ata.c:992
+ je short 02c06h ; 74 0f ; 0xf2bf5
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2bf7 ata.c:995
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2bfa
+ mov AL, strict byte 008h ; b0 08 ; 0xf2bfd
+ out DX, AL ; ee ; 0xf2bff
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2c00 ata.c:996
+ jmp near 02d6fh ; e9 69 01 ; 0xf2c03
+ test bl, 008h ; f6 c3 08 ; 0xf2c06 ata.c:997
+ jne short 02c1ah ; 75 0f ; 0xf2c09
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c0b ata.c:1000
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c0e
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c11
+ out DX, AL ; ee ; 0xf2c13
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2c14 ata.c:1001
+ jmp near 02d6fh ; e9 55 01 ; 0xf2c17
+ sti ; fb ; 0xf2c1a ata.c:1004
+ mov ax, si ; 89 f0 ; 0xf2c1b ata.c:1008
+ shr ax, 004h ; c1 e8 04 ; 0xf2c1d
+ add ax, cx ; 01 c8 ; 0xf2c20
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2c22
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2c25 ata.c:1013
+ xor ch, ch ; 30 ed ; 0xf2c28
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c2a
+ mov es, ax ; 8e c0 ; 0xf2c2d
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2c2f
+ cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2c32 ata.c:1015
+ jne short 02c43h ; 75 0b ; 0xf2c36
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c38 ata.c:1016
+ in AL, DX ; ec ; 0xf2c3b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c3c
+ mov bl, al ; 88 c3 ; 0xf2c3e
+ jmp near 02d50h ; e9 0d 01 ; 0xf2c40 ata.c:1018
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c43 ata.c:1022
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c46
+ in AL, DX ; ec ; 0xf2c49
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c4a
+ mov bl, al ; 88 c3 ; 0xf2c4c
+ test AL, strict byte 080h ; a8 80 ; 0xf2c4e ata.c:1023
+ jne short 02c43h ; 75 f1 ; 0xf2c50
+ test AL, strict byte 088h ; a8 88 ; 0xf2c52 ata.c:1028
+ je short 02cb6h ; 74 60 ; 0xf2c54
+ test AL, strict byte 001h ; a8 01 ; 0xf2c56 ata.c:1031
+ je short 02c65h ; 74 0b ; 0xf2c58
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c5a ata.c:1034
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c5d
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c60
+ out DX, AL ; ee ; 0xf2c62
+ jmp short 02c00h ; eb 9b ; 0xf2c63
+ mov al, bl ; 88 d8 ; 0xf2c65 ata.c:1039
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2c67
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2c69
+ je short 02c78h ; 74 0b ; 0xf2c6b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2c6d ata.c:1043
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c70
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c73
+ out DX, AL ; ee ; 0xf2c75
+ jmp short 02c14h ; eb 9c ; 0xf2c76
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2c78 ata.c:1049
+ shr ax, 004h ; c1 e8 04 ; 0xf2c7b
+ add ax, word [bp+00eh] ; 03 46 0e ; 0xf2c7e
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2c81
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2c84
+ mov word [bp+00ch], dx ; 89 56 0c ; 0xf2c87
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf2c8a
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c8d ata.c:1054
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2c90
+ in AL, DX ; ec ; 0xf2c93
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c94
+ mov bx, ax ; 89 c3 ; 0xf2c96
+ sal bx, 008h ; c1 e3 08 ; 0xf2c98
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2c9b
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2c9e
+ in AL, DX ; ec ; 0xf2ca1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ca2
+ add bx, ax ; 01 c3 ; 0xf2ca4
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2ca6 ata.c:1057
+ cmp bx, ax ; 39 c3 ; 0xf2ca9
+ jnc short 02cb9h ; 73 0c ; 0xf2cab
+ mov cx, bx ; 89 d9 ; 0xf2cad ata.c:1058
+ sub word [bp+004h], bx ; 29 5e 04 ; 0xf2caf ata.c:1059
+ xor bx, bx ; 31 db ; 0xf2cb2 ata.c:1060
+ jmp short 02cc2h ; eb 0c ; 0xf2cb4 ata.c:1062
+ jmp near 02d50h ; e9 97 00 ; 0xf2cb6
+ mov cx, ax ; 89 c1 ; 0xf2cb9 ata.c:1063
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2cbb ata.c:1064
+ sub bx, ax ; 29 c3 ; 0xf2cc0 ata.c:1065
+ xor ax, ax ; 31 c0 ; 0xf2cc2 ata.c:1068
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2cc4
+ jne short 02ce0h ; 75 16 ; 0xf2cc8
+ cmp bx, word [bp+006h] ; 3b 5e 06 ; 0xf2cca
+ jbe short 02ce0h ; 76 11 ; 0xf2ccd
+ sub bx, word [bp+006h] ; 2b 5e 06 ; 0xf2ccf ata.c:1069
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf2cd2
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf2cd5 ata.c:1070
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf2cd8 ata.c:1071
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf2cdb
+ jmp short 02ce9h ; eb 09 ; 0xf2cde ata.c:1073
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2ce0 ata.c:1074
+ sub word [bp+006h], bx ; 29 5e 06 ; 0xf2ce3 ata.c:1075
+ sbb word [bp+008h], ax ; 19 46 08 ; 0xf2ce6
+ mov si, bx ; 89 de ; 0xf2ce9 ata.c:1079
+ test cl, 003h ; f6 c1 03 ; 0xf2ceb ata.c:1086
+ test bl, 003h ; f6 c3 03 ; 0xf2cee ata.c:1088
+ test byte [bp-016h], 003h ; f6 46 ea 03 ; 0xf2cf1 ata.c:1090
+ test bl, 001h ; f6 c3 01 ; 0xf2cf5 ata.c:1094
+ je short 02d0ah ; 74 10 ; 0xf2cf8
+ inc bx ; 43 ; 0xf2cfa ata.c:1095
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf2cfb ata.c:1096
+ jbe short 02d0ah ; 76 09 ; 0xf2cff
+ test byte [bp-016h], 001h ; f6 46 ea 01 ; 0xf2d01
+ je short 02d0ah ; 74 03 ; 0xf2d05
+ dec word [bp-016h] ; ff 4e ea ; 0xf2d07 ata.c:1097
+ shr bx, 1 ; d1 eb ; 0xf2d0a ata.c:1109
+ shr cx, 1 ; d1 e9 ; 0xf2d0c ata.c:1110
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xf2d0e ata.c:1111
+ test cx, cx ; 85 c9 ; 0xf2d11 ata.c:1124
+ je short 02d1bh ; 74 06 ; 0xf2d13
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2d15 ata.c:1125
+ in ax, DX ; ed ; 0xf2d18
+ loop 02d18h ; e2 fd ; 0xf2d19
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2d1b ata.c:1126
+ mov cx, bx ; 89 d9 ; 0xf2d1e
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2d20
+ rep insw ; f3 6d ; 0xf2d23
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2d25 ata.c:1127
+ test ax, ax ; 85 c0 ; 0xf2d28
+ je short 02d31h ; 74 05 ; 0xf2d2a
+ mov cx, ax ; 89 c1 ; 0xf2d2c ata.c:1128
+ in ax, DX ; ed ; 0xf2d2e
+ loop 02d2eh ; e2 fd ; 0xf2d2f
+ add word [bp+00ch], si ; 01 76 0c ; 0xf2d31 ata.c:1133
+ xor ax, ax ; 31 c0 ; 0xf2d34 ata.c:1136
+ add word [bp-014h], si ; 01 76 ec ; 0xf2d36
+ adc word [bp-012h], ax ; 11 46 ee ; 0xf2d39
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2d3c ata.c:1137
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf2d3f
+ mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2d42
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2d46
+ mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2d49
+ jmp near 02c43h ; e9 f3 fe ; 0xf2d4d ata.c:1138
+ mov al, bl ; 88 d8 ; 0xf2d50 ata.c:1142
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2d52
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2d54
+ je short 02d64h ; 74 0c ; 0xf2d56
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d58 ata.c:1146
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d5b
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d5e
+ out DX, AL ; ee ; 0xf2d60
+ jmp near 02c14h ; e9 b0 fe ; 0xf2d61
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2d64 ata.c:1151
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d67
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d6a
+ out DX, AL ; ee ; 0xf2d6c
+ xor ax, ax ; 31 c0 ; 0xf2d6d ata.c:1152
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2d6f ata.c:1153
+ pop di ; 5f ; 0xf2d72
+ pop si ; 5e ; 0xf2d73
+ pop bp ; 5d ; 0xf2d74
+ retn 0000ch ; c2 0c 00 ; 0xf2d75
+ ; disGetNextSymbol 0xf2d78 LB 0x7150 -> off=0x0 cb=000000000000007f uValue=00000000000f1778 'ata_soft_reset'
+ata_soft_reset: ; 0xf2d78 LB 0x7f
+ push bp ; 55 ; 0xf2d78 ata.c:1161
+ mov bp, sp ; 89 e5 ; 0xf2d79
+ push bx ; 53 ; 0xf2d7b
+ push cx ; 51 ; 0xf2d7c
+ push dx ; 52 ; 0xf2d7d
+ push ax ; 50 ; 0xf2d7e
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2d7f ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2d82
+ mov es, dx ; 8e c2 ; 0xf2d85
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2d87
+ mov dx, ax ; 89 c2 ; 0xf2d8a ata.c:1170
+ shr dx, 1 ; d1 ea ; 0xf2d8c
+ and AL, strict byte 001h ; 24 01 ; 0xf2d8e ata.c:1171
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2d90
+ mov al, dl ; 88 d0 ; 0xf2d93 ata.c:1173
+ xor ah, ah ; 30 e4 ; 0xf2d95
+ imul bx, ax, strict byte 00006h ; 6b d8 06 ; 0xf2d97
+ add bx, 00122h ; 81 c3 22 01 ; 0xf2d9a
+ mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf2d9e
+ mov bx, word [es:bx+00208h] ; 26 8b 9f 08 02 ; 0xf2da3 ata.c:1174
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2da8 ata.c:1177
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2dab
+ out DX, AL ; ee ; 0xf2dad
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2dae ata.c:1178
+ je short 02db9h ; 74 05 ; 0xf2db2
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2db4
+ jmp short 02dbch ; eb 03 ; 0xf2db7
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2db9
+ mov dx, cx ; 89 ca ; 0xf2dbc
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dbe
+ out DX, AL ; ee ; 0xf2dc1
+ mov dx, cx ; 89 ca ; 0xf2dc2 ata.c:1179
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2dc4
+ mov AL, strict byte 008h ; b0 08 ; 0xf2dc7
+ out DX, AL ; ee ; 0xf2dc9
+ mov dx, cx ; 89 ca ; 0xf2dca ata.c:1183
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2dcc
+ in AL, DX ; ec ; 0xf2dcf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2dd0
+ test AL, strict byte 080h ; a8 80 ; 0xf2dd2 ata.c:1184
+ jne short 02dcah ; 75 f4 ; 0xf2dd4
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2dd6 ata.c:1188
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2dd8
+ je short 02de7h ; 74 0b ; 0xf2dda
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2ddc ata.c:1192
+ mov AL, strict byte 008h ; b0 08 ; 0xf2ddf
+ out DX, AL ; ee ; 0xf2de1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2de2 ata.c:1193
+ jmp short 02defh ; eb 08 ; 0xf2de5
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2de7 ata.c:1197
+ mov AL, strict byte 008h ; b0 08 ; 0xf2dea
+ out DX, AL ; ee ; 0xf2dec
+ xor ax, ax ; 31 c0 ; 0xf2ded ata.c:1198
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2def ata.c:1199
+ pop dx ; 5a ; 0xf2df2
+ pop cx ; 59 ; 0xf2df3
+ pop bx ; 5b ; 0xf2df4
+ pop bp ; 5d ; 0xf2df5
+ retn ; c3 ; 0xf2df6
+ ; disGetNextSymbol 0xf2df7 LB 0x70d1 -> off=0x0 cb=000000000000002b uValue=00000000000f17f7 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2df7 LB 0x2b
+ push bp ; 55 ; 0xf2df7 floppy.c:71
+ mov bp, sp ; 89 e5 ; 0xf2df8
+ push bx ; 53 ; 0xf2dfa
+ mov dh, al ; 88 c6 ; 0xf2dfb
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2dfd floppy.c:73
+ jbe short 02e0ch ; 76 0b ; 0xf2dff
+ push 00250h ; 68 50 02 ; 0xf2e01 floppy.c:74
+ push strict byte 00007h ; 6a 07 ; 0xf2e04
+ call 018ffh ; e8 f6 ea ; 0xf2e06
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2e09
+ mov bl, dh ; 88 f3 ; 0xf2e0c floppy.c:75
+ xor bh, bh ; 30 ff ; 0xf2e0e
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2e10
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e14 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf2e17
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2e19
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e1c floppy.c:76
+ pop bx ; 5b ; 0xf2e1f
+ pop bp ; 5d ; 0xf2e20
+ retn ; c3 ; 0xf2e21
+ ; disGetNextSymbol 0xf2e22 LB 0x70a6 -> off=0x0 cb=0000000000000023 uValue=00000000000f1822 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2e22 LB 0x23
+ push bp ; 55 ; 0xf2e22 floppy.c:96
+ mov bp, sp ; 89 e5 ; 0xf2e23
+ push bx ; 53 ; 0xf2e25
+ cli ; fa ; 0xf2e26 floppy.c:98
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e27 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e2a
+ mov es, ax ; 8e c0 ; 0xf2e2d
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e2f
+ test AL, strict byte 080h ; a8 80 ; 0xf2e32 floppy.c:102
+ je short 02e3ah ; 74 04 ; 0xf2e34
+ and AL, strict byte 080h ; 24 80 ; 0xf2e36 floppy.c:103
+ jmp short 02e3fh ; eb 05 ; 0xf2e38
+ sti ; fb ; 0xf2e3a floppy.c:104
+ hlt ; f4 ; 0xf2e3b
+ cli ; fa ; 0xf2e3c
+ jmp short 02e27h ; eb e8 ; 0xf2e3d floppy.c:105
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e3f floppy.c:106
+ pop bx ; 5b ; 0xf2e42
+ pop bp ; 5d ; 0xf2e43
+ retn ; c3 ; 0xf2e44
+ ; disGetNextSymbol 0xf2e45 LB 0x7083 -> off=0x0 cb=0000000000000038 uValue=00000000000f1845 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2e45 LB 0x38
+ push bp ; 55 ; 0xf2e45 floppy.c:116
+ mov bp, sp ; 89 e5 ; 0xf2e46
+ push bx ; 53 ; 0xf2e48
+ cli ; fa ; 0xf2e49 floppy.c:118
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2e4a floppy.c:38
+ mov es, bx ; 8e c3 ; 0xf2e4d
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e4f
+ test al, al ; 84 c0 ; 0xf2e52 floppy.c:122
+ jne short 02e59h ; 75 03 ; 0xf2e54
+ sti ; fb ; 0xf2e56 floppy.c:123
+ jmp short 02e77h ; eb 1e ; 0xf2e57 floppy.c:124
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e59 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e5c
+ mov es, ax ; 8e c0 ; 0xf2e5f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e61
+ test AL, strict byte 080h ; a8 80 ; 0xf2e64 floppy.c:128
+ je short 02e72h ; 74 0a ; 0xf2e66
+ mov ah, al ; 88 c4 ; 0xf2e68 floppy.c:129
+ and ah, 07fh ; 80 e4 7f ; 0xf2e6a
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf2e6d floppy.c:43
+ jmp short 02e77h ; eb 05 ; 0xf2e70 floppy.c:130
+ sti ; fb ; 0xf2e72 floppy.c:132
+ hlt ; f4 ; 0xf2e73
+ cli ; fa ; 0xf2e74
+ jmp short 02e4ah ; eb d3 ; 0xf2e75 floppy.c:133
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e77 floppy.c:134
+ pop bx ; 5b ; 0xf2e7a
+ pop bp ; 5d ; 0xf2e7b
+ retn ; c3 ; 0xf2e7c
+ ; disGetNextSymbol 0xf2e7d LB 0x704b -> off=0x0 cb=000000000000003f uValue=00000000000f187d 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf2e7d LB 0x3f
+ push bp ; 55 ; 0xf2e7d floppy.c:138
+ mov bp, sp ; 89 e5 ; 0xf2e7e
+ push bx ; 53 ; 0xf2e80
+ push cx ; 51 ; 0xf2e81
+ push dx ; 52 ; 0xf2e82
+ mov cx, ax ; 89 c1 ; 0xf2e83
+ mov dx, 003f2h ; ba f2 03 ; 0xf2e85 floppy.c:143
+ in AL, DX ; ec ; 0xf2e88
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e89
+ mov bx, ax ; 89 c3 ; 0xf2e8b
+ and AL, strict byte 0fbh ; 24 fb ; 0xf2e8d floppy.c:144
+ out DX, AL ; ee ; 0xf2e8f
+ mov al, bl ; 88 d8 ; 0xf2e90 floppy.c:145
+ or AL, strict byte 004h ; 0c 04 ; 0xf2e92
+ out DX, AL ; ee ; 0xf2e94
+ mov dx, 003f4h ; ba f4 03 ; 0xf2e95 floppy.c:149
+ in AL, DX ; ec ; 0xf2e98
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e99
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2e9b floppy.c:150
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2e9d
+ jne short 02e95h ; 75 f4 ; 0xf2e9f
+ mov bx, cx ; 89 cb ; 0xf2ea1 floppy.c:153
+ add bx, 00090h ; 81 c3 90 00 ; 0xf2ea3
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ea7 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2eaa
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2eac
+ and AL, strict byte 0efh ; 24 ef ; 0xf2eaf floppy.c:154
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2eb1 floppy.c:43
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2eb4 floppy.c:157
+ pop dx ; 5a ; 0xf2eb7
+ pop cx ; 59 ; 0xf2eb8
+ pop bx ; 5b ; 0xf2eb9
+ pop bp ; 5d ; 0xf2eba
+ retn ; c3 ; 0xf2ebb
+ ; disGetNextSymbol 0xf2ebc LB 0x700c -> off=0x0 cb=0000000000000074 uValue=00000000000f18bc 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf2ebc LB 0x74
+ push bp ; 55 ; 0xf2ebc floppy.c:159
+ mov bp, sp ; 89 e5 ; 0xf2ebd
+ push bx ; 53 ; 0xf2ebf
+ push cx ; 51 ; 0xf2ec0
+ push dx ; 52 ; 0xf2ec1
+ push ax ; 50 ; 0xf2ec2
+ mov cx, ax ; 89 c1 ; 0xf2ec3
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ec5 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ec8
+ mov es, ax ; 8e c0 ; 0xf2ecb
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ecd
+ and AL, strict byte 07fh ; 24 7f ; 0xf2ed0 floppy.c:165
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2ed2 floppy.c:43
+ mov dx, 003f2h ; ba f2 03 ; 0xf2ed5 floppy.c:169
+ in AL, DX ; ec ; 0xf2ed8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ed9
+ and AL, strict byte 004h ; 24 04 ; 0xf2edb
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2edd
+ test cx, cx ; 85 c9 ; 0xf2ee0 floppy.c:170
+ je short 02ee8h ; 74 04 ; 0xf2ee2
+ mov AL, strict byte 020h ; b0 20 ; 0xf2ee4 floppy.c:171
+ jmp short 02eeah ; eb 02 ; 0xf2ee6 floppy.c:172
+ mov AL, strict byte 010h ; b0 10 ; 0xf2ee8 floppy.c:173
+ or AL, strict byte 00ch ; 0c 0c ; 0xf2eea floppy.c:174
+ or al, cl ; 08 c8 ; 0xf2eec floppy.c:175
+ mov dx, 003f2h ; ba f2 03 ; 0xf2eee floppy.c:176
+ out DX, AL ; ee ; 0xf2ef1
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2ef2 floppy.c:43
+ mov es, bx ; 8e c3 ; 0xf2ef5
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2ef7
+ mov bx, 0008bh ; bb 8b 00 ; 0xf2efb floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2efe
+ shr al, 006h ; c0 e8 06 ; 0xf2f01 floppy.c:183
+ mov dx, 003f7h ; ba f7 03 ; 0xf2f04 floppy.c:184
+ out DX, AL ; ee ; 0xf2f07
+ mov dx, 003f4h ; ba f4 03 ; 0xf2f08 floppy.c:188
+ in AL, DX ; ec ; 0xf2f0b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f0c
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2f0e floppy.c:189
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2f10
+ jne short 02f08h ; 75 f4 ; 0xf2f12
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2f14 floppy.c:191
+ jne short 02f28h ; 75 0e ; 0xf2f18
+ call 02e22h ; e8 05 ff ; 0xf2f1a floppy.c:202
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f1d floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f20
+ mov es, dx ; 8e c2 ; 0xf2f23
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f25
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f28 floppy.c:206
+ pop dx ; 5a ; 0xf2f2b
+ pop cx ; 59 ; 0xf2f2c
+ pop bx ; 5b ; 0xf2f2d
+ pop bp ; 5d ; 0xf2f2e
+ retn ; c3 ; 0xf2f2f
+ ; disGetNextSymbol 0xf2f30 LB 0x6f98 -> off=0x0 cb=0000000000000049 uValue=00000000000f1930 'floppy_media_known'
+floppy_media_known: ; 0xf2f30 LB 0x49
+ push bx ; 53 ; 0xf2f30 floppy.c:208
+ push dx ; 52 ; 0xf2f31
+ push bp ; 55 ; 0xf2f32
+ mov bp, sp ; 89 e5 ; 0xf2f33
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f35 floppy.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f38
+ mov es, dx ; 8e c2 ; 0xf2f3b
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2f3d
+ mov bl, bh ; 88 fb ; 0xf2f40 floppy.c:39
+ test ax, ax ; 85 c0 ; 0xf2f42 floppy.c:214
+ je short 02f48h ; 74 02 ; 0xf2f44
+ shr bl, 1 ; d0 eb ; 0xf2f46 floppy.c:215
+ and bl, 001h ; 80 e3 01 ; 0xf2f48 floppy.c:216
+ jne short 02f51h ; 75 04 ; 0xf2f4b floppy.c:217
+ xor bh, bh ; 30 ff ; 0xf2f4d floppy.c:218
+ jmp short 02f73h ; eb 22 ; 0xf2f4f
+ mov bx, 00090h ; bb 90 00 ; 0xf2f51 floppy.c:220
+ test ax, ax ; 85 c0 ; 0xf2f54 floppy.c:221
+ je short 02f5bh ; 74 03 ; 0xf2f56
+ mov bx, 00091h ; bb 91 00 ; 0xf2f58 floppy.c:222
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f5b floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2f5e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f60
+ xor ah, ah ; 30 e4 ; 0xf2f63 floppy.c:225
+ sar ax, 004h ; c1 f8 04 ; 0xf2f65
+ and AL, strict byte 001h ; 24 01 ; 0xf2f68
+ jne short 02f70h ; 75 04 ; 0xf2f6a floppy.c:226
+ xor bx, bx ; 31 db ; 0xf2f6c floppy.c:227
+ jmp short 02f73h ; eb 03 ; 0xf2f6e
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2f70 floppy.c:230
+ mov ax, bx ; 89 d8 ; 0xf2f73 floppy.c:231
+ pop bp ; 5d ; 0xf2f75
+ pop dx ; 5a ; 0xf2f76
+ pop bx ; 5b ; 0xf2f77
+ retn ; c3 ; 0xf2f78
+ ; disGetNextSymbol 0xf2f79 LB 0x6f4f -> off=0x0 cb=0000000000000052 uValue=00000000000f1979 'floppy_read_id'
+floppy_read_id: ; 0xf2f79 LB 0x52
+ push bp ; 55 ; 0xf2f79 floppy.c:233
+ mov bp, sp ; 89 e5 ; 0xf2f7a
+ push bx ; 53 ; 0xf2f7c
+ push dx ; 52 ; 0xf2f7d
+ push si ; 56 ; 0xf2f7e
+ mov bx, ax ; 89 c3 ; 0xf2f7f
+ call 02ebch ; e8 38 ff ; 0xf2f81 floppy.c:240
+ mov AL, strict byte 04ah ; b0 4a ; 0xf2f84 floppy.c:243
+ mov dx, 003f5h ; ba f5 03 ; 0xf2f86
+ out DX, AL ; ee ; 0xf2f89
+ mov al, bl ; 88 d8 ; 0xf2f8a floppy.c:244
+ out DX, AL ; ee ; 0xf2f8c
+ call 02e22h ; e8 92 fe ; 0xf2f8d floppy.c:259
+ xor bx, bx ; 31 db ; 0xf2f90 floppy.c:263
+ jmp short 02f99h ; eb 05 ; 0xf2f92
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2f94
+ jnl short 02fadh ; 7d 14 ; 0xf2f97
+ mov dx, 003f5h ; ba f5 03 ; 0xf2f99 floppy.c:264
+ in AL, DX ; ec ; 0xf2f9c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f9d
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf2f9f
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2fa2 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf2fa5
+ mov byte [es:si], al ; 26 88 04 ; 0xf2fa7
+ inc bx ; 43 ; 0xf2faa floppy.c:264
+ jmp short 02f94h ; eb e7 ; 0xf2fab
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf2fad floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fb0
+ mov es, ax ; 8e c0 ; 0xf2fb3
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fb5
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf2fb8 floppy.c:39
+ je short 02fc0h ; 74 04 ; 0xf2fba
+ xor ax, ax ; 31 c0 ; 0xf2fbc floppy.c:267
+ jmp short 02fc3h ; eb 03 ; 0xf2fbe
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2fc0 floppy.c:269
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2fc3 floppy.c:270
+ pop si ; 5e ; 0xf2fc6
+ pop dx ; 5a ; 0xf2fc7
+ pop bx ; 5b ; 0xf2fc8
+ pop bp ; 5d ; 0xf2fc9
+ retn ; c3 ; 0xf2fca
+ ; disGetNextSymbol 0xf2fcb LB 0x6efd -> off=0x0 cb=0000000000000041 uValue=00000000000f19cb 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf2fcb LB 0x41
+ push bp ; 55 ; 0xf2fcb floppy.c:272
+ mov bp, sp ; 89 e5 ; 0xf2fcc
+ push bx ; 53 ; 0xf2fce
+ push dx ; 52 ; 0xf2fcf
+ push si ; 56 ; 0xf2fd0
+ mov bx, ax ; 89 c3 ; 0xf2fd1
+ call 02ebch ; e8 e6 fe ; 0xf2fd3 floppy.c:277
+ mov AL, strict byte 007h ; b0 07 ; 0xf2fd6 floppy.c:280
+ mov dx, 003f5h ; ba f5 03 ; 0xf2fd8
+ out DX, AL ; ee ; 0xf2fdb
+ mov al, bl ; 88 d8 ; 0xf2fdc floppy.c:281
+ out DX, AL ; ee ; 0xf2fde
+ call 02e22h ; e8 40 fe ; 0xf2fdf floppy.c:300
+ test bx, bx ; 85 db ; 0xf2fe2 floppy.c:304
+ je short 02fedh ; 74 07 ; 0xf2fe4
+ or AL, strict byte 002h ; 0c 02 ; 0xf2fe6 floppy.c:305
+ mov bx, 00095h ; bb 95 00 ; 0xf2fe8 floppy.c:306
+ jmp short 02ff2h ; eb 05 ; 0xf2feb floppy.c:307
+ or AL, strict byte 001h ; 0c 01 ; 0xf2fed floppy.c:308
+ mov bx, 00094h ; bb 94 00 ; 0xf2fef floppy.c:309
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf2ff2 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2ff5
+ mov es, dx ; 8e c2 ; 0xf2ff8
+ mov byte [es:si], al ; 26 88 04 ; 0xf2ffa
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf2ffd floppy.c:43
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3001 floppy.c:315
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3004
+ pop si ; 5e ; 0xf3007
+ pop dx ; 5a ; 0xf3008
+ pop bx ; 5b ; 0xf3009
+ pop bp ; 5d ; 0xf300a
+ retn ; c3 ; 0xf300b
+ ; disGetNextSymbol 0xf300c LB 0x6ebc -> off=0x0 cb=00000000000000e6 uValue=00000000000f1a0c 'floppy_media_sense'
+floppy_media_sense: ; 0xf300c LB 0xe6
+ push bp ; 55 ; 0xf300c floppy.c:318
+ mov bp, sp ; 89 e5 ; 0xf300d
+ push bx ; 53 ; 0xf300f
+ push cx ; 51 ; 0xf3010
+ push dx ; 52 ; 0xf3011
+ push si ; 56 ; 0xf3012
+ push di ; 57 ; 0xf3013
+ mov cx, ax ; 89 c1 ; 0xf3014
+ call 02fcbh ; e8 b2 ff ; 0xf3016 floppy.c:324
+ test ax, ax ; 85 c0 ; 0xf3019
+ jne short 03022h ; 75 05 ; 0xf301b
+ xor dx, dx ; 31 d2 ; 0xf301d floppy.c:325
+ jmp near 030e6h ; e9 c4 00 ; 0xf301f
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3022 floppy.c:360
+ call 01650h ; e8 28 e6 ; 0xf3025
+ test cx, cx ; 85 c9 ; 0xf3028 floppy.c:361
+ jne short 03033h ; 75 07 ; 0xf302a
+ mov dl, al ; 88 c2 ; 0xf302c floppy.c:362
+ shr dl, 004h ; c0 ea 04 ; 0xf302e
+ jmp short 03038h ; eb 05 ; 0xf3031 floppy.c:363
+ mov dl, al ; 88 c2 ; 0xf3033 floppy.c:364
+ and dl, 00fh ; 80 e2 0f ; 0xf3035
+ cmp dl, 001h ; 80 fa 01 ; 0xf3038 floppy.c:365
+ jne short 03046h ; 75 09 ; 0xf303b
+ xor dl, dl ; 30 d2 ; 0xf303d floppy.c:367
+ mov DH, strict byte 015h ; b6 15 ; 0xf303f floppy.c:368
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf3041 floppy.c:369
+ jmp short 03084h ; eb 3e ; 0xf3044 floppy.c:371
+ cmp dl, 002h ; 80 fa 02 ; 0xf3046
+ jne short 03051h ; 75 06 ; 0xf3049
+ xor dl, dl ; 30 d2 ; 0xf304b floppy.c:373
+ mov DH, strict byte 035h ; b6 35 ; 0xf304d floppy.c:374
+ jmp short 03041h ; eb f0 ; 0xf304f
+ cmp dl, 003h ; 80 fa 03 ; 0xf3051 floppy.c:377
+ jne short 0305ch ; 75 06 ; 0xf3054
+ xor dl, dl ; 30 d2 ; 0xf3056 floppy.c:379
+ mov DH, strict byte 017h ; b6 17 ; 0xf3058 floppy.c:380
+ jmp short 03041h ; eb e5 ; 0xf305a
+ cmp dl, 004h ; 80 fa 04 ; 0xf305c floppy.c:383
+ jne short 03067h ; 75 06 ; 0xf305f
+ xor dl, dl ; 30 d2 ; 0xf3061 floppy.c:385
+ mov DH, strict byte 017h ; b6 17 ; 0xf3063 floppy.c:386
+ jmp short 03041h ; eb da ; 0xf3065
+ cmp dl, 005h ; 80 fa 05 ; 0xf3067 floppy.c:389
+ jne short 03072h ; 75 06 ; 0xf306a
+ mov DL, strict byte 0cch ; b2 cc ; 0xf306c floppy.c:391
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf306e floppy.c:392
+ jmp short 03041h ; eb cf ; 0xf3070
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3072 floppy.c:396
+ je short 0307ch ; 74 05 ; 0xf3075
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3077
+ jne short 0307eh ; 75 02 ; 0xf307a
+ jmp short 0306ch ; eb ee ; 0xf307c
+ xor dl, dl ; 30 d2 ; 0xf307e floppy.c:404
+ xor dh, dh ; 30 f6 ; 0xf3080 floppy.c:405
+ xor bx, bx ; 31 db ; 0xf3082 floppy.c:406
+ mov si, 0008bh ; be 8b 00 ; 0xf3084 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3087
+ mov es, ax ; 8e c0 ; 0xf308a
+ mov byte [es:si], dl ; 26 88 14 ; 0xf308c
+ mov ax, cx ; 89 c8 ; 0xf308f floppy.c:410
+ call 02f79h ; e8 e5 fe ; 0xf3091
+ test ax, ax ; 85 c0 ; 0xf3094
+ jne short 030cah ; 75 32 ; 0xf3096
+ mov al, dl ; 88 d0 ; 0xf3098 floppy.c:411
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf309a
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf309c
+ je short 030cah ; 74 2a ; 0xf309e
+ mov al, dl ; 88 d0 ; 0xf30a0 floppy.c:415
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf30a2
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf30a4
+ je short 030b7h ; 74 0f ; 0xf30a6
+ mov ah, dl ; 88 d4 ; 0xf30a8
+ and ah, 03fh ; 80 e4 3f ; 0xf30aa
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf30ad
+ je short 030c3h ; 74 12 ; 0xf30af
+ test al, al ; 84 c0 ; 0xf30b1
+ je short 030bch ; 74 07 ; 0xf30b3
+ jmp short 03084h ; eb cd ; 0xf30b5
+ and dl, 03fh ; 80 e2 3f ; 0xf30b7 floppy.c:417
+ jmp short 03084h ; eb c8 ; 0xf30ba floppy.c:418
+ mov dl, ah ; 88 e2 ; 0xf30bc floppy.c:420
+ or dl, 040h ; 80 ca 40 ; 0xf30be
+ jmp short 03084h ; eb c1 ; 0xf30c1 floppy.c:421
+ mov dl, ah ; 88 e2 ; 0xf30c3 floppy.c:423
+ or dl, 080h ; 80 ca 80 ; 0xf30c5
+ jmp short 03084h ; eb ba ; 0xf30c8 floppy.c:427
+ test cx, cx ; 85 c9 ; 0xf30ca floppy.c:429
+ jne short 030d3h ; 75 05 ; 0xf30cc
+ mov si, 00090h ; be 90 00 ; 0xf30ce floppy.c:430
+ jmp short 030d6h ; eb 03 ; 0xf30d1 floppy.c:431
+ mov si, 00091h ; be 91 00 ; 0xf30d3 floppy.c:432
+ mov di, 0008bh ; bf 8b 00 ; 0xf30d6 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30d9
+ mov es, ax ; 8e c0 ; 0xf30dc
+ mov byte [es:di], dl ; 26 88 15 ; 0xf30de
+ mov byte [es:si], dh ; 26 88 34 ; 0xf30e1 floppy.c:43
+ mov dx, bx ; 89 da ; 0xf30e4 floppy.c:436
+ mov ax, dx ; 89 d0 ; 0xf30e6 floppy.c:437
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf30e8
+ pop di ; 5f ; 0xf30eb
+ pop si ; 5e ; 0xf30ec
+ pop dx ; 5a ; 0xf30ed
+ pop cx ; 59 ; 0xf30ee
+ pop bx ; 5b ; 0xf30ef
+ pop bp ; 5d ; 0xf30f0
+ retn ; c3 ; 0xf30f1
+ ; disGetNextSymbol 0xf30f2 LB 0x6dd6 -> off=0x0 cb=0000000000000028 uValue=00000000000f1af2 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf30f2 LB 0x28
+ push bp ; 55 ; 0xf30f2 floppy.c:440
+ mov bp, sp ; 89 e5 ; 0xf30f3
+ push dx ; 52 ; 0xf30f5
+ mov dx, ax ; 89 c2 ; 0xf30f6
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf30f8 floppy.c:446
+ call 01650h ; e8 52 e5 ; 0xf30fb
+ test dx, dx ; 85 d2 ; 0xf30fe floppy.c:447
+ jne short 03107h ; 75 05 ; 0xf3100
+ shr al, 004h ; c0 e8 04 ; 0xf3102 floppy.c:448
+ jmp short 03109h ; eb 02 ; 0xf3105 floppy.c:449
+ and AL, strict byte 00fh ; 24 0f ; 0xf3107 floppy.c:450
+ test al, al ; 84 c0 ; 0xf3109 floppy.c:451
+ je short 03112h ; 74 05 ; 0xf310b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf310d
+ jmp short 03114h ; eb 02 ; 0xf3110
+ xor ah, ah ; 30 e4 ; 0xf3112
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf3114 floppy.c:452
+ pop dx ; 5a ; 0xf3117
+ pop bp ; 5d ; 0xf3118
+ retn ; c3 ; 0xf3119
+ ; disGetNextSymbol 0xf311a LB 0x6dae -> off=0x23 cb=00000000000009ce uValue=00000000000f1b3d 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0e8h, 03ah, 07bh, 031h, 0fch
+ db 031h, 01dh, 032h, 01dh, 032h, 01dh, 032h, 0d1h, 035h, 09bh, 037h, 089h, 038h, 0cbh, 038h, 0ffh
+ db 038h, 073h, 039h
+int13_diskette_function: ; 0xf313d LB 0x9ce
+ push bp ; 55 ; 0xf313d floppy.c:467
+ mov bp, sp ; 89 e5 ; 0xf313e
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf3140
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf3143 floppy.c:478
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3147 floppy.c:480
+ shr ax, 008h ; c1 e8 08 ; 0xf314a
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf314d
+ jnbe short 031aeh ; 77 5c ; 0xf3150
+ push CS ; 0e ; 0xf3152
+ pop ES ; 07 ; 0xf3153
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3154
+ mov di, 0311ah ; bf 1a 31 ; 0xf3157
+ repne scasb ; f2 ae ; 0xf315a
+ sal cx, 1 ; d1 e1 ; 0xf315c
+ mov di, cx ; 89 cf ; 0xf315e
+ mov di, word [cs:di+03125h] ; 2e 8b bd 25 31 ; 0xf3160
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf3165
+ xor dh, dh ; 30 f6 ; 0xf3168
+ mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf316a
+ mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf316d
+ or cl, 001h ; 80 c9 01 ; 0xf3170
+ mov si, dx ; 89 d6 ; 0xf3173
+ or si, 00100h ; 81 ce 00 01 ; 0xf3175
+ jmp di ; ff e7 ; 0xf3179
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf317b floppy.c:483
+ cmp bl, 001h ; 80 fb 01 ; 0xf317e floppy.c:484
+ jbe short 0319dh ; 76 1a ; 0xf3181
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3183 floppy.c:485
+ xor ah, ah ; 30 e4 ; 0xf3186
+ or ah, 001h ; 80 cc 01 ; 0xf3188
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf318b
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf318e floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3191
+ mov es, ax ; 8e c0 ; 0xf3194
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3196
+ jmp near 039d5h ; e9 38 08 ; 0xf319a
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf319d floppy.c:491
+ call 01650h ; e8 ad e4 ; 0xf31a0
+ test bl, bl ; 84 db ; 0xf31a3 floppy.c:492
+ jne short 031b1h ; 75 0a ; 0xf31a5
+ mov dl, al ; 88 c2 ; 0xf31a7 floppy.c:493
+ shr dl, 004h ; c0 ea 04 ; 0xf31a9
+ jmp short 031b6h ; eb 08 ; 0xf31ac floppy.c:494
+ jmp near 03ae8h ; e9 37 09 ; 0xf31ae
+ mov dl, al ; 88 c2 ; 0xf31b1 floppy.c:495
+ and dl, 00fh ; 80 e2 0f ; 0xf31b3
+ test dl, dl ; 84 d2 ; 0xf31b6 floppy.c:496
+ jne short 031d4h ; 75 1a ; 0xf31b8
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31ba floppy.c:497
+ xor ah, ah ; 30 e4 ; 0xf31bd
+ or ah, 080h ; 80 cc 80 ; 0xf31bf
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf31c2
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf31c5 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31c8
+ mov es, ax ; 8e c0 ; 0xf31cb
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf31cd
+ jmp near 039d5h ; e9 01 08 ; 0xf31d1
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf31d4 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31d7
+ mov es, ax ; 8e c0 ; 0xf31da
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf31dc
+ xor al, al ; 30 c0 ; 0xf31e0 floppy.c:506
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf31e2
+ mov si, strict word 00041h ; be 41 00 ; 0xf31e5 floppy.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf31e8
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31eb floppy.c:508
+ mov al, bl ; 88 d8 ; 0xf31ef floppy.c:509
+ xor ah, ah ; 30 e4 ; 0xf31f1
+ xor dx, dx ; 31 d2 ; 0xf31f3
+ call 02df7h ; e8 ff fb ; 0xf31f5
+ mov sp, bp ; 89 ec ; 0xf31f8 floppy.c:510
+ pop bp ; 5d ; 0xf31fa
+ retn ; c3 ; 0xf31fb
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf31fc floppy.c:513
+ mov bx, 00441h ; bb 41 04 ; 0xf3200 floppy.c:38
+ xor ax, ax ; 31 c0 ; 0xf3203
+ mov es, ax ; 8e c0 ; 0xf3205
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3207
+ mov al, bl ; 88 d8 ; 0xf320a floppy.c:515
+ xor ah, ah ; 30 e4 ; 0xf320c
+ sal ax, 008h ; c1 e0 08 ; 0xf320e
+ or dx, ax ; 09 c2 ; 0xf3211
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf3213
+ test bl, bl ; 84 db ; 0xf3216 floppy.c:516
+ je short 031f8h ; 74 de ; 0xf3218
+ jmp near 039d5h ; e9 b8 07 ; 0xf321a
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf321d floppy.c:524
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf3220 floppy.c:525
+ shr ax, 008h ; c1 e8 08 ; 0xf3223
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf3226
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf3229 floppy.c:526
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf322c
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf322f floppy.c:527
+ shr ax, 008h ; c1 e8 08 ; 0xf3232
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3235
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3238 floppy.c:528
+ cmp bl, 001h ; 80 fb 01 ; 0xf323b floppy.c:530
+ jnbe short 0324dh ; 77 0d ; 0xf323e
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf3240
+ jnbe short 0324dh ; 77 09 ; 0xf3242
+ test bh, bh ; 84 ff ; 0xf3244
+ je short 0324dh ; 74 05 ; 0xf3246
+ cmp bh, 048h ; 80 ff 48 ; 0xf3248
+ jbe short 03280h ; 76 33 ; 0xf324b
+ mov bx, 00da0h ; bb a0 0d ; 0xf324d floppy.c:532
+ mov cx, ds ; 8c d9 ; 0xf3250
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3252
+ call 018bch ; e8 64 e6 ; 0xf3255
+ push 00275h ; 68 75 02 ; 0xf3258
+ push 0028dh ; 68 8d 02 ; 0xf325b
+ push strict byte 00004h ; 6a 04 ; 0xf325e
+ call 018ffh ; e8 9c e6 ; 0xf3260
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3263
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3266 floppy.c:533
+ xor ah, ah ; 30 e4 ; 0xf3269
+ or ah, 001h ; 80 cc 01 ; 0xf326b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf326e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3271 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3274
+ mov es, ax ; 8e c0 ; 0xf3277
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3279
+ jmp near 0332ah ; e9 aa 00 ; 0xf327d
+ mov al, bl ; 88 d8 ; 0xf3280 floppy.c:535
+ xor ah, ah ; 30 e4 ; 0xf3282
+ call 030f2h ; e8 6b fe ; 0xf3284
+ test ax, ax ; 85 c0 ; 0xf3287
+ jne short 032a5h ; 75 1a ; 0xf3289
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf328b floppy.c:543
+ xor ah, ah ; 30 e4 ; 0xf328e
+ or ah, 080h ; 80 cc 80 ; 0xf3290
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3293
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3296 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3299
+ mov es, ax ; 8e c0 ; 0xf329c
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf329e
+ jmp near 0332ah ; e9 85 00 ; 0xf32a2
+ mov cl, bl ; 88 d9 ; 0xf32a5 floppy.c:551
+ xor ch, ch ; 30 ed ; 0xf32a7
+ mov ax, cx ; 89 c8 ; 0xf32a9
+ call 02f30h ; e8 82 fc ; 0xf32ab
+ test ax, ax ; 85 c0 ; 0xf32ae
+ jne short 032d8h ; 75 26 ; 0xf32b0
+ mov ax, cx ; 89 c8 ; 0xf32b2 floppy.c:552
+ call 0300ch ; e8 55 fd ; 0xf32b4
+ test ax, ax ; 85 c0 ; 0xf32b7
+ jne short 032d8h ; 75 1d ; 0xf32b9
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32bb floppy.c:554
+ xor ah, ah ; 30 e4 ; 0xf32be
+ or ah, 00ch ; 80 cc 0c ; 0xf32c0
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32c3
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32c6 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32c9
+ mov es, ax ; 8e c0 ; 0xf32cc
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf32ce
+ mov byte [bp+016h], ch ; 88 6e 16 ; 0xf32d2
+ jmp near 039d5h ; e9 fd 06 ; 0xf32d5
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d8 floppy.c:556
+ shr ax, 008h ; c1 e8 08 ; 0xf32db
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf32de
+ jne short 03331h ; 75 4e ; 0xf32e1
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf32e3 floppy.c:573
+ shr dx, 00ch ; c1 ea 0c ; 0xf32e6
+ mov ah, dl ; 88 d4 ; 0xf32e9
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf32eb floppy.c:574
+ sal cx, 004h ; c1 e1 04 ; 0xf32ee
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf32f1 floppy.c:575
+ add si, cx ; 01 ce ; 0xf32f4
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf32f6
+ cmp cx, si ; 39 f1 ; 0xf32f9 floppy.c:577
+ jbe short 032ffh ; 76 02 ; 0xf32fb
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf32fd floppy.c:579
+ mov dl, bh ; 88 fa ; 0xf32ff floppy.c:581
+ xor dh, dh ; 30 f6 ; 0xf3301
+ mov cx, dx ; 89 d1 ; 0xf3303
+ sal cx, 009h ; c1 e1 09 ; 0xf3305
+ dec cx ; 49 ; 0xf3308
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3309 floppy.c:584
+ add dx, cx ; 01 ca ; 0xf330c
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf330e floppy.c:585
+ jnc short 03334h ; 73 21 ; 0xf3311
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3313 floppy.c:586
+ xor ah, ah ; 30 e4 ; 0xf3316
+ or ah, 009h ; 80 cc 09 ; 0xf3318
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf331b
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf331e floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3321
+ mov es, ax ; 8e c0 ; 0xf3324
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3326
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf332a
+ jmp near 039d5h ; e9 a4 06 ; 0xf332e
+ jmp near 03481h ; e9 4d 01 ; 0xf3331
+ mov AL, strict byte 006h ; b0 06 ; 0xf3334 floppy.c:594
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3336
+ out DX, AL ; ee ; 0xf3339
+ xor al, al ; 30 c0 ; 0xf333a floppy.c:597
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf333c
+ out DX, AL ; ee ; 0xf333f
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3340 floppy.c:598
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3343
+ out DX, AL ; ee ; 0xf3346
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3347 floppy.c:599
+ shr dx, 008h ; c1 ea 08 ; 0xf334a
+ mov al, dl ; 88 d0 ; 0xf334d
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf334f
+ out DX, AL ; ee ; 0xf3352
+ xor al, al ; 30 c0 ; 0xf3353 floppy.c:601
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3355
+ out DX, AL ; ee ; 0xf3358
+ mov al, cl ; 88 c8 ; 0xf3359 floppy.c:602
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf335b
+ out DX, AL ; ee ; 0xf335e
+ shr cx, 008h ; c1 e9 08 ; 0xf335f floppy.c:603
+ mov al, cl ; 88 c8 ; 0xf3362
+ out DX, AL ; ee ; 0xf3364
+ mov AL, strict byte 046h ; b0 46 ; 0xf3365 floppy.c:611
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3367
+ out DX, AL ; ee ; 0xf336a
+ mov al, ah ; 88 e0 ; 0xf336b floppy.c:615
+ mov dx, 00081h ; ba 81 00 ; 0xf336d
+ out DX, AL ; ee ; 0xf3370
+ mov AL, strict byte 002h ; b0 02 ; 0xf3371 floppy.c:618
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3373
+ out DX, AL ; ee ; 0xf3376
+ mov cl, bl ; 88 d9 ; 0xf3377 floppy.c:623
+ xor ch, ch ; 30 ed ; 0xf3379
+ mov ax, cx ; 89 c8 ; 0xf337b
+ call 02ebch ; e8 3c fb ; 0xf337d
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf3380 floppy.c:626
+ mov dx, 003f5h ; ba f5 03 ; 0xf3382
+ out DX, AL ; ee ; 0xf3385
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3386 floppy.c:627
+ xor ah, ah ; 30 e4 ; 0xf3389
+ mov dx, ax ; 89 c2 ; 0xf338b
+ sal dx, 002h ; c1 e2 02 ; 0xf338d
+ mov al, bl ; 88 d8 ; 0xf3390
+ or ax, dx ; 09 d0 ; 0xf3392
+ mov dx, 003f5h ; ba f5 03 ; 0xf3394
+ out DX, AL ; ee ; 0xf3397
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3398 floppy.c:628
+ out DX, AL ; ee ; 0xf339b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf339c floppy.c:629
+ out DX, AL ; ee ; 0xf339f
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33a0 floppy.c:630
+ out DX, AL ; ee ; 0xf33a3
+ mov AL, strict byte 002h ; b0 02 ; 0xf33a4 floppy.c:631
+ out DX, AL ; ee ; 0xf33a6
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf33a7 floppy.c:632
+ xor ah, ah ; 30 e4 ; 0xf33aa
+ mov dl, bh ; 88 fa ; 0xf33ac
+ xor dh, dh ; 30 f6 ; 0xf33ae
+ add ax, dx ; 01 d0 ; 0xf33b0
+ dec ax ; 48 ; 0xf33b2
+ mov dx, 003f5h ; ba f5 03 ; 0xf33b3
+ out DX, AL ; ee ; 0xf33b6
+ xor al, al ; 30 c0 ; 0xf33b7 floppy.c:633
+ out DX, AL ; ee ; 0xf33b9
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf33ba floppy.c:634
+ out DX, AL ; ee ; 0xf33bc
+ call 02e45h ; e8 85 fa ; 0xf33bd floppy.c:666
+ test al, al ; 84 c0 ; 0xf33c0 floppy.c:667
+ jne short 033e3h ; 75 1f ; 0xf33c2
+ mov ax, cx ; 89 c8 ; 0xf33c4 floppy.c:669
+ call 02e7dh ; e8 b4 fa ; 0xf33c6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33c9 floppy.c:670
+ xor ah, ah ; 30 e4 ; 0xf33cc
+ or ah, 080h ; 80 cc 80 ; 0xf33ce
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf33d1
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf33d4 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf33d7
+ mov es, ax ; 8e c0 ; 0xf33da
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf33dc
+ jmp near 032d2h ; e9 ef fe ; 0xf33e0
+ mov dx, 003f4h ; ba f4 03 ; 0xf33e3 floppy.c:679
+ in AL, DX ; ec ; 0xf33e6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf33e7
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf33e9 floppy.c:680
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf33eb
+ je short 033fdh ; 74 0e ; 0xf33ed
+ push 00275h ; 68 75 02 ; 0xf33ef floppy.c:681
+ push 002a8h ; 68 a8 02 ; 0xf33f2
+ push strict byte 00007h ; 6a 07 ; 0xf33f5
+ call 018ffh ; e8 05 e5 ; 0xf33f7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf33fa
+ xor cx, cx ; 31 c9 ; 0xf33fd floppy.c:684
+ jmp short 03406h ; eb 05 ; 0xf33ff
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3401
+ jnl short 0341ch ; 7d 16 ; 0xf3404
+ mov dx, 003f5h ; ba f5 03 ; 0xf3406 floppy.c:685
+ in AL, DX ; ec ; 0xf3409
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf340a
+ mov si, cx ; 89 ce ; 0xf340c
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf340e
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3411 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3414
+ mov byte [es:si], al ; 26 88 04 ; 0xf3416
+ inc cx ; 41 ; 0xf3419 floppy.c:685
+ jmp short 03401h ; eb e5 ; 0xf341a
+ mov si, strict word 00042h ; be 42 00 ; 0xf341c floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf341f
+ mov es, ax ; 8e c0 ; 0xf3422
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3424
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3427 floppy.c:39
+ je short 0344ch ; 74 21 ; 0xf3429
+ mov al, bl ; 88 d8 ; 0xf342b floppy.c:689
+ xor ah, ah ; 30 e4 ; 0xf342d
+ call 02e7dh ; e8 4b fa ; 0xf342f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3432 floppy.c:690
+ xor ah, ah ; 30 e4 ; 0xf3435
+ or ah, 020h ; 80 cc 20 ; 0xf3437
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf343a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf343d floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3440
+ mov es, ax ; 8e c0 ; 0xf3443
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf3445
+ jmp near 0332ah ; e9 de fe ; 0xf3449
+ mov al, bh ; 88 f8 ; 0xf344c floppy.c:698
+ xor ah, ah ; 30 e4 ; 0xf344e
+ sal ax, 009h ; c1 e0 09 ; 0xf3450
+ cwd ; 99 ; 0xf3453
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf3454
+ sar ax, 1 ; d1 f8 ; 0xf3456
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3458
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf345b
+ mov di, si ; 89 f7 ; 0xf345e
+ mov cx, ax ; 89 c1 ; 0xf3460
+ mov es, dx ; 8e c2 ; 0xf3462
+ push DS ; 1e ; 0xf3464
+ mov ds, dx ; 8e da ; 0xf3465
+ rep movsw ; f3 a5 ; 0xf3467
+ pop DS ; 1f ; 0xf3469
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf346a floppy.c:702
+ xor dh, dh ; 30 f6 ; 0xf346d
+ mov al, bl ; 88 d8 ; 0xf346f
+ xor ah, ah ; 30 e4 ; 0xf3471
+ call 02df7h ; e8 81 f9 ; 0xf3473
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3476 floppy.c:704
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf347a floppy.c:705
+ jmp near 031f8h ; e9 77 fd ; 0xf347e floppy.c:706
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3481 floppy.c:707
+ shr ax, 008h ; c1 e8 08 ; 0xf3484
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf3487
+ je short 0348fh ; 74 03 ; 0xf348a
+ jmp near 035bah ; e9 2b 01 ; 0xf348c
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf348f floppy.c:718
+ shr cx, 00ch ; c1 e9 0c ; 0xf3492
+ mov ah, cl ; 88 cc ; 0xf3495
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3497 floppy.c:719
+ sal dx, 004h ; c1 e2 04 ; 0xf349a
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf349d floppy.c:720
+ add si, dx ; 01 d6 ; 0xf34a0
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf34a2
+ cmp dx, si ; 39 f2 ; 0xf34a5 floppy.c:722
+ jbe short 034abh ; 76 02 ; 0xf34a7
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf34a9 floppy.c:724
+ mov dl, bh ; 88 fa ; 0xf34ab floppy.c:726
+ xor dh, dh ; 30 f6 ; 0xf34ad
+ mov cx, dx ; 89 d1 ; 0xf34af
+ sal cx, 009h ; c1 e1 09 ; 0xf34b1
+ dec cx ; 49 ; 0xf34b4
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34b5 floppy.c:729
+ add dx, cx ; 01 ca ; 0xf34b8
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf34ba floppy.c:730
+ jnc short 034c2h ; 73 03 ; 0xf34bd
+ jmp near 03313h ; e9 51 fe ; 0xf34bf
+ mov AL, strict byte 006h ; b0 06 ; 0xf34c2 floppy.c:739
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34c4
+ out DX, AL ; ee ; 0xf34c7
+ xor al, al ; 30 c0 ; 0xf34c8 floppy.c:741
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34ca
+ out DX, AL ; ee ; 0xf34cd
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf34ce floppy.c:742
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34d1
+ out DX, AL ; ee ; 0xf34d4
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34d5 floppy.c:743
+ shr dx, 008h ; c1 ea 08 ; 0xf34d8
+ mov al, dl ; 88 d0 ; 0xf34db
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34dd
+ out DX, AL ; ee ; 0xf34e0
+ xor al, al ; 30 c0 ; 0xf34e1 floppy.c:744
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34e3
+ out DX, AL ; ee ; 0xf34e6
+ mov al, cl ; 88 c8 ; 0xf34e7 floppy.c:745
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf34e9
+ out DX, AL ; ee ; 0xf34ec
+ shr cx, 008h ; c1 e9 08 ; 0xf34ed floppy.c:746
+ mov al, cl ; 88 c8 ; 0xf34f0
+ out DX, AL ; ee ; 0xf34f2
+ mov AL, strict byte 04ah ; b0 4a ; 0xf34f3 floppy.c:753
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34f5
+ out DX, AL ; ee ; 0xf34f8
+ mov al, ah ; 88 e0 ; 0xf34f9 floppy.c:756
+ mov dx, 00081h ; ba 81 00 ; 0xf34fb
+ out DX, AL ; ee ; 0xf34fe
+ mov AL, strict byte 002h ; b0 02 ; 0xf34ff floppy.c:759
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3501
+ out DX, AL ; ee ; 0xf3504
+ mov cl, bl ; 88 d9 ; 0xf3505 floppy.c:764
+ xor ch, ch ; 30 ed ; 0xf3507
+ mov ax, cx ; 89 c8 ; 0xf3509
+ call 02ebch ; e8 ae f9 ; 0xf350b
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf350e floppy.c:767
+ mov dx, 003f5h ; ba f5 03 ; 0xf3510
+ out DX, AL ; ee ; 0xf3513
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3514 floppy.c:768
+ xor ah, ah ; 30 e4 ; 0xf3517
+ mov dx, ax ; 89 c2 ; 0xf3519
+ sal dx, 002h ; c1 e2 02 ; 0xf351b
+ mov al, bl ; 88 d8 ; 0xf351e
+ or ax, dx ; 09 d0 ; 0xf3520
+ mov dx, 003f5h ; ba f5 03 ; 0xf3522
+ out DX, AL ; ee ; 0xf3525
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3526 floppy.c:769
+ out DX, AL ; ee ; 0xf3529
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf352a floppy.c:770
+ out DX, AL ; ee ; 0xf352d
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf352e floppy.c:771
+ out DX, AL ; ee ; 0xf3531
+ mov AL, strict byte 002h ; b0 02 ; 0xf3532 floppy.c:772
+ out DX, AL ; ee ; 0xf3534
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf3535 floppy.c:773
+ xor dh, dh ; 30 f6 ; 0xf3538
+ mov al, bh ; 88 f8 ; 0xf353a
+ xor ah, ah ; 30 e4 ; 0xf353c
+ add ax, dx ; 01 d0 ; 0xf353e
+ dec ax ; 48 ; 0xf3540
+ mov dx, 003f5h ; ba f5 03 ; 0xf3541
+ out DX, AL ; ee ; 0xf3544
+ xor al, al ; 30 c0 ; 0xf3545 floppy.c:774
+ out DX, AL ; ee ; 0xf3547
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf3548 floppy.c:775
+ out DX, AL ; ee ; 0xf354a
+ call 02e45h ; e8 f7 f8 ; 0xf354b floppy.c:804
+ test al, al ; 84 c0 ; 0xf354e floppy.c:805
+ jne short 03555h ; 75 03 ; 0xf3550
+ jmp near 033c4h ; e9 6f fe ; 0xf3552
+ mov dx, 003f4h ; ba f4 03 ; 0xf3555 floppy.c:816
+ in AL, DX ; ec ; 0xf3558
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3559
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf355b floppy.c:817
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf355d
+ je short 0356fh ; 74 0e ; 0xf355f
+ push 00275h ; 68 75 02 ; 0xf3561 floppy.c:818
+ push 002a8h ; 68 a8 02 ; 0xf3564
+ push strict byte 00007h ; 6a 07 ; 0xf3567
+ call 018ffh ; e8 93 e3 ; 0xf3569
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf356c
+ xor cx, cx ; 31 c9 ; 0xf356f floppy.c:821
+ jmp short 03578h ; eb 05 ; 0xf3571
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3573
+ jnl short 0358eh ; 7d 16 ; 0xf3576
+ mov dx, 003f5h ; ba f5 03 ; 0xf3578 floppy.c:822
+ in AL, DX ; ec ; 0xf357b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf357c
+ mov si, cx ; 89 ce ; 0xf357e
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3580
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3583 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3586
+ mov byte [es:si], al ; 26 88 04 ; 0xf3588
+ inc cx ; 41 ; 0xf358b floppy.c:822
+ jmp short 03573h ; eb e5 ; 0xf358c
+ mov si, strict word 00042h ; be 42 00 ; 0xf358e floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3591
+ mov es, ax ; 8e c0 ; 0xf3594
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3596
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3599 floppy.c:39
+ jne short 035a0h ; 75 03 ; 0xf359b
+ jmp near 0346ah ; e9 ca fe ; 0xf359d
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf35a0 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf35a3
+ test AL, strict byte 002h ; a8 02 ; 0xf35a6 floppy.c:39
+ je short 035b2h ; 74 08 ; 0xf35a8
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf35aa floppy.c:829
+ jmp near 039d5h ; e9 23 04 ; 0xf35af
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf35b2 floppy.c:832
+ jmp near 039d5h ; e9 1b 04 ; 0xf35b7 floppy.c:833
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf35ba floppy.c:848
+ xor dh, dh ; 30 f6 ; 0xf35bd
+ mov al, bl ; 88 d8 ; 0xf35bf
+ xor ah, ah ; 30 e4 ; 0xf35c1
+ call 02df7h ; e8 31 f8 ; 0xf35c3
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf35c6 floppy.c:850
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf35ca floppy.c:851
+ jmp near 031f8h ; e9 27 fc ; 0xf35ce floppy.c:852
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf35d1 floppy.c:859
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf35d4 floppy.c:860
+ shr ax, 008h ; c1 e8 08 ; 0xf35d7
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf35da
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf35dd floppy.c:861
+ shr dx, 008h ; c1 ea 08 ; 0xf35e0
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf35e3
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf35e6 floppy.c:862
+ cmp bl, 001h ; 80 fb 01 ; 0xf35e9 floppy.c:864
+ jnbe short 03600h ; 77 12 ; 0xf35ec
+ cmp dl, 001h ; 80 fa 01 ; 0xf35ee
+ jnbe short 03600h ; 77 0d ; 0xf35f1
+ cmp AL, strict byte 04fh ; 3c 4f ; 0xf35f3
+ jnbe short 03600h ; 77 09 ; 0xf35f5
+ test bh, bh ; 84 ff ; 0xf35f7
+ je short 03600h ; 74 05 ; 0xf35f9
+ cmp bh, 012h ; 80 ff 12 ; 0xf35fb
+ jbe short 0361bh ; 76 1b ; 0xf35fe
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3600 floppy.c:866
+ xor ah, ah ; 30 e4 ; 0xf3603
+ or ah, 001h ; 80 cc 01 ; 0xf3605
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3608
+ mov si, strict word 00041h ; be 41 00 ; 0xf360b floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf360e
+ mov es, ax ; 8e c0 ; 0xf3611
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3613
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3617 floppy.c:868
+ mov al, bl ; 88 d8 ; 0xf361b floppy.c:872
+ xor ah, ah ; 30 e4 ; 0xf361d
+ call 030f2h ; e8 d0 fa ; 0xf361f
+ test ax, ax ; 85 c0 ; 0xf3622
+ jne short 03640h ; 75 1a ; 0xf3624
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3626 floppy.c:873
+ xor ah, ah ; 30 e4 ; 0xf3629
+ or ah, 080h ; 80 cc 80 ; 0xf362b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf362e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3631 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3634
+ mov es, ax ; 8e c0 ; 0xf3637
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3639
+ jmp near 039d5h ; e9 95 03 ; 0xf363d
+ mov cl, bl ; 88 d9 ; 0xf3640 floppy.c:880
+ xor ch, ch ; 30 ed ; 0xf3642
+ mov ax, cx ; 89 c8 ; 0xf3644
+ call 02f30h ; e8 e7 f8 ; 0xf3646
+ test ax, ax ; 85 c0 ; 0xf3649
+ jne short 03659h ; 75 0c ; 0xf364b
+ mov ax, cx ; 89 c8 ; 0xf364d floppy.c:881
+ call 0300ch ; e8 ba f9 ; 0xf364f
+ test ax, ax ; 85 c0 ; 0xf3652
+ jne short 03659h ; 75 03 ; 0xf3654
+ jmp near 032bbh ; e9 62 fc ; 0xf3656
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3659 floppy.c:892
+ shr cx, 00ch ; c1 e9 0c ; 0xf365c
+ mov ah, cl ; 88 cc ; 0xf365f
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3661 floppy.c:893
+ sal dx, 004h ; c1 e2 04 ; 0xf3664
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3667 floppy.c:894
+ add si, dx ; 01 d6 ; 0xf366a
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf366c
+ cmp dx, si ; 39 f2 ; 0xf366f floppy.c:896
+ jbe short 03675h ; 76 02 ; 0xf3671
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf3673 floppy.c:898
+ mov dl, bh ; 88 fa ; 0xf3675 floppy.c:900
+ xor dh, dh ; 30 f6 ; 0xf3677
+ mov cx, dx ; 89 d1 ; 0xf3679
+ sal cx, 002h ; c1 e1 02 ; 0xf367b
+ dec cx ; 49 ; 0xf367e
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf367f floppy.c:903
+ add dx, cx ; 01 ca ; 0xf3682
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3684 floppy.c:904
+ jnc short 0368ch ; 73 03 ; 0xf3687
+ jmp near 03313h ; e9 87 fc ; 0xf3689
+ mov AL, strict byte 006h ; b0 06 ; 0xf368c floppy.c:912
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf368e
+ out DX, AL ; ee ; 0xf3691
+ xor al, al ; 30 c0 ; 0xf3692 floppy.c:913
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3694
+ out DX, AL ; ee ; 0xf3697
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3698 floppy.c:914
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf369b
+ out DX, AL ; ee ; 0xf369e
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf369f floppy.c:915
+ shr dx, 008h ; c1 ea 08 ; 0xf36a2
+ mov al, dl ; 88 d0 ; 0xf36a5
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf36a7
+ out DX, AL ; ee ; 0xf36aa
+ xor al, al ; 30 c0 ; 0xf36ab floppy.c:916
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf36ad
+ out DX, AL ; ee ; 0xf36b0
+ mov al, cl ; 88 c8 ; 0xf36b1 floppy.c:917
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf36b3
+ out DX, AL ; ee ; 0xf36b6
+ shr cx, 008h ; c1 e9 08 ; 0xf36b7 floppy.c:918
+ mov al, cl ; 88 c8 ; 0xf36ba
+ out DX, AL ; ee ; 0xf36bc
+ mov AL, strict byte 04ah ; b0 4a ; 0xf36bd floppy.c:921
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf36bf
+ out DX, AL ; ee ; 0xf36c2
+ mov al, ah ; 88 e0 ; 0xf36c3 floppy.c:923
+ mov dx, 00081h ; ba 81 00 ; 0xf36c5
+ out DX, AL ; ee ; 0xf36c8
+ mov AL, strict byte 002h ; b0 02 ; 0xf36c9 floppy.c:924
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf36cb
+ out DX, AL ; ee ; 0xf36ce
+ mov cl, bl ; 88 d9 ; 0xf36cf floppy.c:927
+ xor ch, ch ; 30 ed ; 0xf36d1
+ mov ax, cx ; 89 c8 ; 0xf36d3
+ call 02ebch ; e8 e4 f7 ; 0xf36d5
+ mov AL, strict byte 00fh ; b0 0f ; 0xf36d8 floppy.c:930
+ mov dx, 003f5h ; ba f5 03 ; 0xf36da
+ out DX, AL ; ee ; 0xf36dd
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf36de floppy.c:931
+ xor ah, ah ; 30 e4 ; 0xf36e1
+ mov dx, ax ; 89 c2 ; 0xf36e3
+ sal dx, 002h ; c1 e2 02 ; 0xf36e5
+ mov al, bl ; 88 d8 ; 0xf36e8
+ or dx, ax ; 09 c2 ; 0xf36ea
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf36ec
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36ef
+ mov dx, 003f5h ; ba f5 03 ; 0xf36f2
+ out DX, AL ; ee ; 0xf36f5
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf36f6 floppy.c:932
+ out DX, AL ; ee ; 0xf36f9
+ mov AL, strict byte 04dh ; b0 4d ; 0xf36fa floppy.c:935
+ out DX, AL ; ee ; 0xf36fc
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf36fd floppy.c:936
+ out DX, AL ; ee ; 0xf3700
+ mov AL, strict byte 002h ; b0 02 ; 0xf3701 floppy.c:937
+ out DX, AL ; ee ; 0xf3703
+ mov al, bh ; 88 f8 ; 0xf3704 floppy.c:938
+ out DX, AL ; ee ; 0xf3706
+ xor al, bh ; 30 f8 ; 0xf3707 floppy.c:939
+ out DX, AL ; ee ; 0xf3709
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf370a floppy.c:940
+ out DX, AL ; ee ; 0xf370c
+ call 02e45h ; e8 35 f7 ; 0xf370d floppy.c:968
+ test al, al ; 84 c0 ; 0xf3710 floppy.c:969
+ jne short 0371ch ; 75 08 ; 0xf3712
+ mov ax, cx ; 89 c8 ; 0xf3714 floppy.c:970
+ call 02e7dh ; e8 64 f7 ; 0xf3716
+ jmp near 03626h ; e9 0a ff ; 0xf3719 floppy.c:68
+ mov dx, 003f4h ; ba f4 03 ; 0xf371c floppy.c:979
+ in AL, DX ; ec ; 0xf371f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3720
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3722 floppy.c:980
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3724
+ je short 03736h ; 74 0e ; 0xf3726
+ push 00275h ; 68 75 02 ; 0xf3728 floppy.c:981
+ push 002a8h ; 68 a8 02 ; 0xf372b
+ push strict byte 00007h ; 6a 07 ; 0xf372e
+ call 018ffh ; e8 cc e1 ; 0xf3730
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3733
+ xor cx, cx ; 31 c9 ; 0xf3736 floppy.c:984
+ jmp short 0373fh ; eb 05 ; 0xf3738
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf373a
+ jnl short 03755h ; 7d 16 ; 0xf373d
+ mov dx, 003f5h ; ba f5 03 ; 0xf373f floppy.c:985
+ in AL, DX ; ec ; 0xf3742
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3743
+ mov si, cx ; 89 ce ; 0xf3745
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3747
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf374a floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf374d
+ mov byte [es:si], al ; 26 88 04 ; 0xf374f
+ inc cx ; 41 ; 0xf3752 floppy.c:985
+ jmp short 0373ah ; eb e5 ; 0xf3753
+ mov si, strict word 00042h ; be 42 00 ; 0xf3755 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3758
+ mov es, ax ; 8e c0 ; 0xf375b
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf375d
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3760 floppy.c:39
+ je short 0377fh ; 74 1b ; 0xf3762
+ mov si, strict word 00043h ; be 43 00 ; 0xf3764 floppy.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3767
+ test AL, strict byte 002h ; a8 02 ; 0xf376a floppy.c:39
+ je short 03771h ; 74 03 ; 0xf376c
+ jmp near 035aah ; e9 39 fe ; 0xf376e
+ push 00275h ; 68 75 02 ; 0xf3771 floppy.c:996
+ push 002bch ; 68 bc 02 ; 0xf3774
+ push strict byte 00007h ; 6a 07 ; 0xf3777
+ call 018ffh ; e8 83 e1 ; 0xf3779
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf377c
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf377f floppy.c:1000
+ mov si, strict word 00041h ; be 41 00 ; 0xf3783 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3786
+ mov es, ax ; 8e c0 ; 0xf3789
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf378b
+ mov al, bl ; 88 d8 ; 0xf378f floppy.c:1002
+ xor ah, ah ; 30 e4 ; 0xf3791
+ xor dx, dx ; 31 d2 ; 0xf3793
+ call 02df7h ; e8 5f f6 ; 0xf3795
+ jmp near 0347ah ; e9 df fc ; 0xf3798
+ mov bl, ah ; 88 e3 ; 0xf379b floppy.c:1009
+ cmp ah, 001h ; 80 fc 01 ; 0xf379d floppy.c:1011
+ jbe short 037c0h ; 76 1e ; 0xf37a0
+ xor ax, ax ; 31 c0 ; 0xf37a2 floppy.c:1012
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf37a4
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf37a7 floppy.c:1013
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf37aa floppy.c:1014
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf37ad floppy.c:1015
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf37b0 floppy.c:1016
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf37b3 floppy.c:1017
+ mov al, bh ; 88 f8 ; 0xf37b6 floppy.c:1018
+ xor ah, ah ; 30 e4 ; 0xf37b8
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf37ba
+ jmp near 038dfh ; e9 1f 01 ; 0xf37bd
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf37c0 floppy.c:1019
+ call 01650h ; e8 8a de ; 0xf37c3
+ mov dl, al ; 88 c2 ; 0xf37c6
+ xor bh, bh ; 30 ff ; 0xf37c8 floppy.c:1025
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf37ca floppy.c:1026
+ je short 037d0h ; 74 02 ; 0xf37cc
+ mov BH, strict byte 001h ; b7 01 ; 0xf37ce floppy.c:1027
+ test dl, 00fh ; f6 c2 0f ; 0xf37d0 floppy.c:1028
+ je short 037d7h ; 74 02 ; 0xf37d3
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf37d5 floppy.c:1029
+ test bl, bl ; 84 db ; 0xf37d7 floppy.c:1031
+ jne short 037e0h ; 75 05 ; 0xf37d9
+ shr dl, 004h ; c0 ea 04 ; 0xf37db floppy.c:1032
+ jmp short 037e3h ; eb 03 ; 0xf37de floppy.c:1033
+ and dl, 00fh ; 80 e2 0f ; 0xf37e0 floppy.c:1034
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf37e3 floppy.c:1037
+ mov al, dl ; 88 d0 ; 0xf37e7
+ xor ah, ah ; 30 e4 ; 0xf37e9
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf37eb
+ xor al, dl ; 30 d0 ; 0xf37ee floppy.c:1038
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf37f0
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf37f3 floppy.c:1040
+ mov cl, bh ; 88 f9 ; 0xf37f6
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf37f8
+ mov ax, cx ; 89 c8 ; 0xf37fb floppy.c:1041
+ xor ah, ch ; 30 ec ; 0xf37fd
+ or ah, 001h ; 80 cc 01 ; 0xf37ff
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf3802
+ cmp dl, 003h ; 80 fa 03 ; 0xf3805 floppy.c:1043
+ jc short 0381fh ; 72 15 ; 0xf3808
+ jbe short 03846h ; 76 3a ; 0xf380a
+ cmp dl, 005h ; 80 fa 05 ; 0xf380c
+ jc short 0384dh ; 72 3c ; 0xf380f
+ jbe short 03854h ; 76 41 ; 0xf3811
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3813
+ je short 03862h ; 74 4a ; 0xf3816
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3818
+ je short 0385bh ; 74 3e ; 0xf381b
+ jmp short 03869h ; eb 4a ; 0xf381d
+ cmp dl, 002h ; 80 fa 02 ; 0xf381f
+ je short 0383fh ; 74 1b ; 0xf3822
+ cmp dl, 001h ; 80 fa 01 ; 0xf3824
+ je short 03838h ; 74 0f ; 0xf3827
+ test dl, dl ; 84 d2 ; 0xf3829
+ jne short 03869h ; 75 3c ; 0xf382b
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf382d floppy.c:1045
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf3832 floppy.c:1046
+ jmp short 03877h ; eb 3f ; 0xf3836 floppy.c:1047
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf3838 floppy.c:1050
+ jmp short 03877h ; eb 38 ; 0xf383d floppy.c:1051
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf383f floppy.c:1054
+ jmp short 03877h ; eb 31 ; 0xf3844 floppy.c:1055
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf3846 floppy.c:1058
+ jmp short 03877h ; eb 2a ; 0xf384b floppy.c:1059
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf384d floppy.c:1062
+ jmp short 03877h ; eb 23 ; 0xf3852 floppy.c:1063
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf3854 floppy.c:1066
+ jmp short 03877h ; eb 1c ; 0xf3859 floppy.c:1067
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf385b floppy.c:1070
+ jmp short 03877h ; eb 15 ; 0xf3860 floppy.c:1071
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf3862 floppy.c:1074
+ jmp short 03877h ; eb 0e ; 0xf3867 floppy.c:1075
+ push 00275h ; 68 75 02 ; 0xf3869 floppy.c:1079
+ push 002cdh ; 68 cd 02 ; 0xf386c
+ push strict byte 00007h ; 6a 07 ; 0xf386f
+ call 018ffh ; e8 8b e0 ; 0xf3871
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3874
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3877 floppy.c:1083
+ mov al, dl ; 88 d0 ; 0xf387c floppy.c:1084
+ xor ah, ah ; 30 e4 ; 0xf387e
+ call 03b0bh ; e8 88 02 ; 0xf3880
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3883
+ jmp near 0347ah ; e9 f1 fb ; 0xf3886
+ mov bl, ah ; 88 e3 ; 0xf3889 floppy.c:1091
+ cmp ah, 001h ; 80 fc 01 ; 0xf388b floppy.c:1092
+ jbe short 03895h ; 76 05 ; 0xf388e
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf3890 floppy.c:1093
+ jmp short 038dfh ; eb 4a ; 0xf3893
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3895 floppy.c:1099
+ call 01650h ; e8 b5 dd ; 0xf3898
+ test bl, bl ; 84 db ; 0xf389b floppy.c:1100
+ jne short 038a6h ; 75 07 ; 0xf389d
+ mov dl, al ; 88 c2 ; 0xf389f floppy.c:1101
+ shr dl, 004h ; c0 ea 04 ; 0xf38a1
+ jmp short 038abh ; eb 05 ; 0xf38a4 floppy.c:1102
+ mov dl, al ; 88 c2 ; 0xf38a6 floppy.c:1103
+ and dl, 00fh ; 80 e2 0f ; 0xf38a8
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf38ab floppy.c:1104
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf38af
+ xor ah, ah ; 30 e4 ; 0xf38b2
+ test dl, dl ; 84 d2 ; 0xf38b4 floppy.c:1105
+ je short 038c5h ; 74 0d ; 0xf38b6
+ cmp dl, 001h ; 80 fa 01 ; 0xf38b8 floppy.c:1106
+ jbe short 038c2h ; 76 05 ; 0xf38bb
+ or ah, 002h ; 80 cc 02 ; 0xf38bd floppy.c:1108
+ jmp short 038c5h ; eb 03 ; 0xf38c0 floppy.c:1109
+ or ah, 001h ; 80 cc 01 ; 0xf38c2 floppy.c:1110
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf38c5
+ jmp near 031f8h ; e9 2d f9 ; 0xf38c8 floppy.c:1113
+ cmp ah, 001h ; 80 fc 01 ; 0xf38cb floppy.c:1118
+ jbe short 038e5h ; 76 15 ; 0xf38ce
+ mov word [bp+016h], si ; 89 76 16 ; 0xf38d0 floppy.c:1119
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf38d3 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38d6
+ mov es, ax ; 8e c0 ; 0xf38d9
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf38db
+ mov word [bp+01ch], cx ; 89 4e 1c ; 0xf38df
+ jmp near 031f8h ; e9 13 f9 ; 0xf38e2
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf38e5 floppy.c:1125
+ xor ah, ah ; 30 e4 ; 0xf38e8
+ or ah, 006h ; 80 cc 06 ; 0xf38ea
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf38ed
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf38f0 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38f3
+ mov es, ax ; 8e c0 ; 0xf38f6
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf38f8
+ jmp near 039d5h ; e9 d6 00 ; 0xf38fc
+ mov bl, ah ; 88 e3 ; 0xf38ff floppy.c:1134
+ mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3901 floppy.c:1142
+ cmp ah, 001h ; 80 fc 01 ; 0xf3904 floppy.c:1146
+ jnbe short 038d0h ; 77 c7 ; 0xf3907
+ mov al, bl ; 88 d8 ; 0xf3909 floppy.c:1154
+ xor ah, ah ; 30 e4 ; 0xf390b
+ call 030f2h ; e8 e2 f7 ; 0xf390d
+ test ax, ax ; 85 c0 ; 0xf3910
+ jne short 03917h ; 75 03 ; 0xf3912
+ jmp near 03626h ; e9 0f fd ; 0xf3914
+ test bl, bl ; 84 db ; 0xf3917 floppy.c:1162
+ je short 03920h ; 74 05 ; 0xf3919
+ mov bx, 00091h ; bb 91 00 ; 0xf391b
+ jmp short 03923h ; eb 03 ; 0xf391e
+ mov bx, 00090h ; bb 90 00 ; 0xf3920
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf3923
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3926 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3929
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf392b
+ and bl, 00fh ; 80 e3 0f ; 0xf392e floppy.c:1166
+ cmp dl, 002h ; 80 fa 02 ; 0xf3931 floppy.c:1168
+ jc short 03945h ; 72 0f ; 0xf3934
+ jbe short 03952h ; 76 1a ; 0xf3936
+ cmp dl, 004h ; 80 fa 04 ; 0xf3938
+ je short 0394dh ; 74 10 ; 0xf393b
+ cmp dl, 003h ; 80 fa 03 ; 0xf393d
+ je short 03957h ; 74 15 ; 0xf3940
+ jmp near 03183h ; e9 3e f8 ; 0xf3942
+ cmp dl, 001h ; 80 fa 01 ; 0xf3945
+ je short 0394dh ; 74 03 ; 0xf3948
+ jmp near 03183h ; e9 36 f8 ; 0xf394a
+ or bl, 090h ; 80 cb 90 ; 0xf394d floppy.c:1171
+ jmp short 0395ah ; eb 08 ; 0xf3950 floppy.c:1172
+ or bl, 070h ; 80 cb 70 ; 0xf3952 floppy.c:1175
+ jmp short 0395ah ; eb 03 ; 0xf3955 floppy.c:1176
+ or bl, 010h ; 80 cb 10 ; 0xf3957 floppy.c:1179
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf395a floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf395d
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf395f
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3962
+ xor al, al ; 30 c0 ; 0xf3965 floppy.c:1198
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3967
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf396a floppy.c:43
+ mov byte [es:bx], al ; 26 88 07 ; 0xf396d
+ jmp near 0347ah ; e9 07 fb ; 0xf3970
+ mov bl, ah ; 88 e3 ; 0xf3973 floppy.c:1208
+ mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3975 floppy.c:1210
+ mov bh, dl ; 88 d7 ; 0xf3978 floppy.c:1211
+ and bh, 03fh ; 80 e7 3f ; 0xf397a
+ sar dx, 006h ; c1 fa 06 ; 0xf397d floppy.c:1212
+ sal dx, 008h ; c1 e2 08 ; 0xf3980
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3983
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf3986
+ shr dx, 008h ; c1 ea 08 ; 0xf3989
+ add dx, word [bp-00ch] ; 03 56 f4 ; 0xf398c
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf398f
+ cmp ah, 001h ; 80 fc 01 ; 0xf3992 floppy.c:1217
+ jbe short 0399ah ; 76 03 ; 0xf3995
+ jmp near 038d0h ; e9 36 ff ; 0xf3997
+ mov al, bl ; 88 d8 ; 0xf399a floppy.c:1225
+ xor ah, ah ; 30 e4 ; 0xf399c
+ call 030f2h ; e8 51 f7 ; 0xf399e
+ test ax, ax ; 85 c0 ; 0xf39a1
+ jne short 039a8h ; 75 03 ; 0xf39a3
+ jmp near 03626h ; e9 7e fc ; 0xf39a5
+ mov cl, bl ; 88 d9 ; 0xf39a8 floppy.c:1233
+ xor ch, ch ; 30 ed ; 0xf39aa
+ mov ax, cx ; 89 c8 ; 0xf39ac
+ call 02f30h ; e8 7f f5 ; 0xf39ae
+ test ax, ax ; 85 c0 ; 0xf39b1
+ jne short 039dch ; 75 27 ; 0xf39b3
+ mov ax, cx ; 89 c8 ; 0xf39b5 floppy.c:1234
+ call 0300ch ; e8 52 f6 ; 0xf39b7
+ test ax, ax ; 85 c0 ; 0xf39ba
+ jne short 039dch ; 75 1e ; 0xf39bc
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39be floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf39c1
+ or ah, 00ch ; 80 cc 0c ; 0xf39c3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf39c6
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf39c9 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39cc
+ mov es, ax ; 8e c0 ; 0xf39cf
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf39d1
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf39d5
+ jmp near 031f8h ; e9 1c f8 ; 0xf39d9
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf39dc floppy.c:1243
+ call 01650h ; e8 6e dc ; 0xf39df
+ test bl, bl ; 84 db ; 0xf39e2 floppy.c:1244
+ jne short 039edh ; 75 07 ; 0xf39e4
+ mov dl, al ; 88 c2 ; 0xf39e6 floppy.c:1245
+ shr dl, 004h ; c0 ea 04 ; 0xf39e8
+ jmp short 039f2h ; eb 05 ; 0xf39eb floppy.c:1246
+ mov dl, al ; 88 c2 ; 0xf39ed floppy.c:1247
+ and dl, 00fh ; 80 e2 0f ; 0xf39ef
+ test bl, bl ; 84 db ; 0xf39f2 floppy.c:1250
+ je short 039fbh ; 74 05 ; 0xf39f4
+ mov si, 00091h ; be 91 00 ; 0xf39f6
+ jmp short 039feh ; eb 03 ; 0xf39f9
+ mov si, 00090h ; be 90 00 ; 0xf39fb
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf39fe
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a01 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3a04
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3a06
+ and bl, 00fh ; 80 e3 0f ; 0xf3a09 floppy.c:39
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a0c floppy.c:1256
+ jc short 03a2ch ; 72 1b ; 0xf3a0f
+ mov al, bl ; 88 d8 ; 0xf3a11
+ or AL, strict byte 090h ; 0c 90 ; 0xf3a13
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a15
+ jbe short 03a68h ; 76 4e ; 0xf3a18
+ mov ah, bl ; 88 dc ; 0xf3a1a
+ or ah, 010h ; 80 cc 10 ; 0xf3a1c
+ cmp dl, 005h ; 80 fa 05 ; 0xf3a1f
+ je short 03a66h ; 74 42 ; 0xf3a22
+ cmp dl, 004h ; 80 fa 04 ; 0xf3a24
+ je short 03a75h ; 74 4c ; 0xf3a27
+ jmp near 03aadh ; e9 81 00 ; 0xf3a29
+ cmp dl, 002h ; 80 fa 02 ; 0xf3a2c
+ je short 03a46h ; 74 15 ; 0xf3a2f
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a31
+ jne short 03a79h ; 75 43 ; 0xf3a34
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a36 floppy.c:1258
+ jne short 03a79h ; 75 3d ; 0xf3a3a
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a3c
+ jne short 03a8fh ; 75 4e ; 0xf3a3f
+ or bl, 090h ; 80 cb 90 ; 0xf3a41 floppy.c:1259
+ jmp short 03a8fh ; eb 49 ; 0xf3a44 floppy.c:1261
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3a46 floppy.c:1263
+ jne short 03a56h ; 75 0a ; 0xf3a4a
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a4c
+ jne short 03a56h ; 75 05 ; 0xf3a4f
+ or bl, 070h ; 80 cb 70 ; 0xf3a51 floppy.c:1264
+ jmp short 03a8fh ; eb 39 ; 0xf3a54 floppy.c:1265
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a56
+ jne short 03aadh ; 75 51 ; 0xf3a5a
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3a5c
+ jne short 03aadh ; 75 4c ; 0xf3a5f
+ or bl, 010h ; 80 cb 10 ; 0xf3a61 floppy.c:1266
+ jmp short 03aadh ; eb 47 ; 0xf3a64 floppy.c:1268
+ jmp short 03a91h ; eb 29 ; 0xf3a66
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a68 floppy.c:1270
+ jne short 03aadh ; 75 3f ; 0xf3a6c
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a6e
+ je short 03a77h ; 74 04 ; 0xf3a71
+ jmp short 03aadh ; eb 38 ; 0xf3a73
+ jmp short 03a7bh ; eb 04 ; 0xf3a75
+ mov bl, al ; 88 c3 ; 0xf3a77 floppy.c:1271
+ jmp short 03aadh ; eb 32 ; 0xf3a79 floppy.c:1273
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a7b floppy.c:1275
+ jne short 03aadh ; 75 2c ; 0xf3a7f
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a81 floppy.c:1276
+ jne short 03a88h ; 75 02 ; 0xf3a84
+ jmp short 03a77h ; eb ef ; 0xf3a86
+ cmp bh, 012h ; 80 ff 12 ; 0xf3a88 floppy.c:1277
+ jne short 03aadh ; 75 20 ; 0xf3a8b
+ mov bl, ah ; 88 e3 ; 0xf3a8d floppy.c:1279
+ jmp short 03aadh ; eb 1c ; 0xf3a8f floppy.c:1282
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3a91 floppy.c:1284
+ jne short 03aadh ; 75 16 ; 0xf3a95
+ cmp bh, 009h ; 80 ff 09 ; 0xf3a97 floppy.c:1285
+ jne short 03a9eh ; 75 02 ; 0xf3a9a
+ jmp short 03a77h ; eb d9 ; 0xf3a9c
+ cmp bh, 012h ; 80 ff 12 ; 0xf3a9e floppy.c:1286
+ jne short 03aa5h ; 75 02 ; 0xf3aa1
+ jmp short 03a8dh ; eb e8 ; 0xf3aa3
+ cmp bh, 024h ; 80 ff 24 ; 0xf3aa5 floppy.c:1288
+ jne short 03aadh ; 75 03 ; 0xf3aa8
+ or bl, 0d0h ; 80 cb d0 ; 0xf3aaa floppy.c:1290
+ mov al, bl ; 88 d8 ; 0xf3aad floppy.c:1299
+ xor ah, ah ; 30 e4 ; 0xf3aaf
+ sar ax, 004h ; c1 f8 04 ; 0xf3ab1
+ test AL, strict byte 001h ; a8 01 ; 0xf3ab4
+ jne short 03abbh ; 75 03 ; 0xf3ab6
+ jmp near 039beh ; e9 03 ff ; 0xf3ab8
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3abb floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3abe
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3ac0
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3ac3
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3ac6 floppy.c:1312
+ mov al, dl ; 88 d0 ; 0xf3acb floppy.c:1313
+ xor ah, ah ; 30 e4 ; 0xf3acd
+ call 03b0bh ; e8 39 00 ; 0xf3acf
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3ad2
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3ad5 floppy.c:1316
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3ad9 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3adc
+ mov es, ax ; 8e c0 ; 0xf3adf
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ae1
+ jmp near 0347ah ; e9 92 f9 ; 0xf3ae5
+ mov bx, 00da0h ; bb a0 0d ; 0xf3ae8 floppy.c:1322
+ mov cx, ds ; 8c d9 ; 0xf3aeb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3aed
+ call 018bch ; e8 c9 dd ; 0xf3af0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3af3
+ shr ax, 008h ; c1 e8 08 ; 0xf3af6
+ push ax ; 50 ; 0xf3af9
+ push 00275h ; 68 75 02 ; 0xf3afa
+ push 002e2h ; 68 e2 02 ; 0xf3afd
+ push strict byte 00004h ; 6a 04 ; 0xf3b00
+ call 018ffh ; e8 fa dd ; 0xf3b02
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3b05
+ jmp near 03183h ; e9 78 f6 ; 0xf3b08 floppy.c:68
+ ; disGetNextSymbol 0xf3b0b LB 0x63bd -> off=0x0 cb=0000000000000030 uValue=00000000000f250b 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3b0b LB 0x30
+ push bx ; 53 ; 0xf3b0b floppyt.c:94
+ push dx ; 52 ; 0xf3b0c
+ push bp ; 55 ; 0xf3b0d
+ mov bp, sp ; 89 e5 ; 0xf3b0e
+ mov dl, al ; 88 c2 ; 0xf3b10
+ xor ax, ax ; 31 c0 ; 0xf3b12 floppyt.c:98
+ jmp short 03b1ch ; eb 06 ; 0xf3b14
+ inc ax ; 40 ; 0xf3b16 floppyt.c:100
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3b17
+ jnc short 03b34h ; 73 18 ; 0xf3b1a
+ mov bx, ax ; 89 c3 ; 0xf3b1c
+ add bx, ax ; 01 c3 ; 0xf3b1e
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3b20
+ jne short 03b16h ; 75 f0 ; 0xf3b24
+ mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3b26
+ xor ah, ah ; 30 e4 ; 0xf3b2a
+ imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3b2c
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3b2f
+ jmp short 03b37h ; eb 03 ; 0xf3b32
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3b34 floppyt.c:103
+ pop bp ; 5d ; 0xf3b37 floppyt.c:104
+ pop dx ; 5a ; 0xf3b38
+ pop bx ; 5b ; 0xf3b39
+ retn ; c3 ; 0xf3b3a
+ ; disGetNextSymbol 0xf3b3b LB 0x638d -> off=0x0 cb=0000000000000007 uValue=00000000000f253b 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3b3b LB 0x7
+ push bp ; 55 ; 0xf3b3b eltorito.c:126
+ mov bp, sp ; 89 e5 ; 0xf3b3c
+ xor ax, ax ; 31 c0 ; 0xf3b3e eltorito.c:129
+ pop bp ; 5d ; 0xf3b40
+ retn ; c3 ; 0xf3b41
+ ; disGetNextSymbol 0xf3b42 LB 0x6386 -> off=0x0 cb=0000000000000017 uValue=00000000000f2542 'cdemu_init'
+cdemu_init: ; 0xf3b42 LB 0x17
+ push bp ; 55 ; 0xf3b42 eltorito.c:155
+ mov bp, sp ; 89 e5 ; 0xf3b43
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b45 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b48
+ mov es, ax ; 8e c0 ; 0xf3b4b
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b4d
+ mov bx, 00366h ; bb 66 03 ; 0xf3b50 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b53
+ pop bp ; 5d ; 0xf3b57 eltorito.c:162
+ retn ; c3 ; 0xf3b58
+ ; disGetNextSymbol 0xf3b59 LB 0x636f -> off=0x0 cb=0000000000000016 uValue=00000000000f2559 'cdemu_isactive'
+cdemu_isactive: ; 0xf3b59 LB 0x16
+ push bp ; 55 ; 0xf3b59 eltorito.c:164
+ mov bp, sp ; 89 e5 ; 0xf3b5a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b5c eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b5f
+ mov es, ax ; 8e c0 ; 0xf3b62
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b64
+ mov bx, 00366h ; bb 66 03 ; 0xf3b67 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b6a
+ pop bp ; 5d ; 0xf3b6d eltorito.c:170
+ retn ; c3 ; 0xf3b6e
+ ; disGetNextSymbol 0xf3b6f LB 0x6359 -> off=0x0 cb=0000000000000016 uValue=00000000000f256f 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3b6f LB 0x16
+ push bp ; 55 ; 0xf3b6f eltorito.c:172
+ mov bp, sp ; 89 e5 ; 0xf3b70
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b72 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b75
+ mov es, ax ; 8e c0 ; 0xf3b78
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3b7a
+ mov bx, 00368h ; bb 68 03 ; 0xf3b7d eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3b80
+ pop bp ; 5d ; 0xf3b83 eltorito.c:178
+ retn ; c3 ; 0xf3b84
+ ; disGetNextSymbol 0xf3b85 LB 0x6343 -> off=0x0 cb=000000000000017b uValue=00000000000f2585 'int13_eltorito'
+int13_eltorito: ; 0xf3b85 LB 0x17b
+ push bp ; 55 ; 0xf3b85 eltorito.c:184
+ mov bp, sp ; 89 e5 ; 0xf3b86
+ push si ; 56 ; 0xf3b88
+ push di ; 57 ; 0xf3b89
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3b8a eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b8d
+ mov es, ax ; 8e c0 ; 0xf3b90
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3b92
+ mov bx, 00366h ; bb 66 03 ; 0xf3b95 eltorito.c:190
+ mov si, word [bp+016h] ; 8b 76 16 ; 0xf3b98 eltorito.c:196
+ shr si, 008h ; c1 ee 08 ; 0xf3b9b
+ cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3b9e
+ jc short 03badh ; 72 0a ; 0xf3ba1
+ jbe short 03bd4h ; 76 2f ; 0xf3ba3
+ cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3ba5
+ jbe short 03bb2h ; 76 08 ; 0xf3ba8
+ jmp near 03cc6h ; e9 19 01 ; 0xf3baa
+ cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3bad
+ jne short 03bd1h ; 75 1f ; 0xf3bb0
+ mov bx, 00da0h ; bb a0 0d ; 0xf3bb2 eltorito.c:202
+ mov cx, ds ; 8c d9 ; 0xf3bb5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3bb7
+ call 018bch ; e8 ff dc ; 0xf3bba
+ push word [bp+016h] ; ff 76 16 ; 0xf3bbd
+ push 002fch ; 68 fc 02 ; 0xf3bc0
+ push 0030bh ; 68 0b 03 ; 0xf3bc3
+ push strict byte 00004h ; 6a 04 ; 0xf3bc6
+ call 018ffh ; e8 34 dd ; 0xf3bc8
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3bcb
+ jmp near 03ce1h ; e9 10 01 ; 0xf3bce eltorito.c:203
+ jmp near 03cc6h ; e9 f2 00 ; 0xf3bd1
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3bd4 eltorito.c:41
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bd7
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3bda
+ inc si ; 46 ; 0xf3bde eltorito.c:210
+ mov ax, es ; 8c c0 ; 0xf3bdf eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3be1
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3be3
+ mov es, ax ; 8e c0 ; 0xf3be7 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3be9
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bec eltorito.c:211
+ inc si ; 46 ; 0xf3bef
+ inc si ; 46 ; 0xf3bf0
+ mov es, di ; 8e c7 ; 0xf3bf1 eltorito.c:41
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3bf3
+ mov es, ax ; 8e c0 ; 0xf3bf7 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3bf9
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3bfc eltorito.c:212
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3bff
+ mov es, di ; 8e c7 ; 0xf3c02 eltorito.c:41
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3c04
+ mov es, ax ; 8e c0 ; 0xf3c08 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c0a
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c0d eltorito.c:213
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3c10
+ mov es, di ; 8e c7 ; 0xf3c13 eltorito.c:61
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3c15
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3c19
+ mov es, ax ; 8e c0 ; 0xf3c1d eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c1f
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3c22
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c26 eltorito.c:214
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3c29
+ mov es, di ; 8e c7 ; 0xf3c2c eltorito.c:51
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3c2e
+ mov es, ax ; 8e c0 ; 0xf3c32 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c34
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c37 eltorito.c:215
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3c3a
+ mov es, di ; 8e c7 ; 0xf3c3d eltorito.c:51
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3c3f
+ mov es, ax ; 8e c0 ; 0xf3c43 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c45
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c48 eltorito.c:216
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3c4b
+ mov es, di ; 8e c7 ; 0xf3c4e eltorito.c:51
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3c50
+ mov es, ax ; 8e c0 ; 0xf3c54 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c56
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c59 eltorito.c:217
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3c5c
+ mov es, di ; 8e c7 ; 0xf3c5f eltorito.c:51
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3c61
+ mov es, ax ; 8e c0 ; 0xf3c65 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3c67
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c6a eltorito.c:218
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3c6d
+ mov es, di ; 8e c7 ; 0xf3c70 eltorito.c:41
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3c72
+ mov es, ax ; 8e c0 ; 0xf3c76 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c78
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c7b eltorito.c:219
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3c7e
+ mov es, di ; 8e c7 ; 0xf3c81 eltorito.c:41
+ mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3c83
+ mov es, ax ; 8e c0 ; 0xf3c87 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c89
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c8c eltorito.c:220
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3c8f
+ mov dx, ax ; 89 c2 ; 0xf3c92 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3c94
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3c96
+ mov es, dx ; 8e c2 ; 0xf3c9a eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3c9c
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3c9f eltorito.c:223
+ jne short 03cabh ; 75 06 ; 0xf3ca3
+ mov es, di ; 8e c7 ; 0xf3ca5 eltorito.c:225
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3ca7
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3cab eltorito.c:228
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3caf
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb2
+ mov es, ax ; 8e c0 ; 0xf3cb5
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3cb7
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3cbb
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3cbf
+ pop di ; 5f ; 0xf3cc2
+ pop si ; 5e ; 0xf3cc3
+ pop bp ; 5d ; 0xf3cc4
+ retn ; c3 ; 0xf3cc5
+ mov bx, 00da0h ; bb a0 0d ; 0xf3cc6 eltorito.c:232
+ mov cx, ds ; 8c d9 ; 0xf3cc9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3ccb
+ call 018bch ; e8 eb db ; 0xf3cce
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3cd1
+ shr bx, 008h ; c1 eb 08 ; 0xf3cd4
+ push bx ; 53 ; 0xf3cd7
+ push 002fch ; 68 fc 02 ; 0xf3cd8
+ push 00333h ; 68 33 03 ; 0xf3cdb
+ jmp near 03bc6h ; e9 e5 fe ; 0xf3cde
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3ce1 eltorito.c:238
+ xor ah, ah ; 30 e4 ; 0xf3ce4
+ or ah, 001h ; 80 cc 01 ; 0xf3ce6
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3ce9
+ shr ax, 008h ; c1 e8 08 ; 0xf3cec eltorito.c:239
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3cef eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3cf2
+ mov es, dx ; 8e c2 ; 0xf3cf5
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3cf7
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3cfa eltorito.c:240
+ jmp short 03cbfh ; eb bf ; 0xf3cfe eltorito.c:241
+ ; disGetNextSymbol 0xf3d00 LB 0x61c8 -> off=0x0 cb=0000000000000033 uValue=00000000000f2700 'device_is_cdrom'
+device_is_cdrom: ; 0xf3d00 LB 0x33
+ push bx ; 53 ; 0xf3d00 eltorito.c:256
+ push dx ; 52 ; 0xf3d01
+ push bp ; 55 ; 0xf3d02
+ mov bp, sp ; 89 e5 ; 0xf3d03
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d05 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3d08
+ mov es, dx ; 8e c2 ; 0xf3d0b
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3d0d
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf3d10 eltorito.c:262
+ jc short 03d18h ; 72 04 ; 0xf3d12
+ xor ax, ax ; 31 c0 ; 0xf3d14 eltorito.c:263
+ jmp short 03d2fh ; eb 17 ; 0xf3d16
+ xor ah, ah ; 30 e4 ; 0xf3d18 eltorito.c:268
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3d1a
+ mov es, bx ; 8e c3 ; 0xf3d1d
+ mov bx, ax ; 89 c3 ; 0xf3d1f
+ add bx, 00122h ; 81 c3 22 01 ; 0xf3d21
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3d25
+ jne short 03d14h ; 75 e8 ; 0xf3d2a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3d2c eltorito.c:269
+ pop bp ; 5d ; 0xf3d2f eltorito.c:272
+ pop dx ; 5a ; 0xf3d30
+ pop bx ; 5b ; 0xf3d31
+ retn ; c3 ; 0xf3d32
+ ; disGetNextSymbol 0xf3d33 LB 0x6195 -> off=0x0 cb=00000000000003c1 uValue=00000000000f2733 'cdrom_boot'
+cdrom_boot: ; 0xf3d33 LB 0x3c1
+ push bp ; 55 ; 0xf3d33 eltorito.c:282
+ mov bp, sp ; 89 e5 ; 0xf3d34
+ push bx ; 53 ; 0xf3d36
+ push cx ; 51 ; 0xf3d37
+ push dx ; 52 ; 0xf3d38
+ push si ; 56 ; 0xf3d39
+ push di ; 57 ; 0xf3d3a
+ sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3d3b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3d3f eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3d42
+ mov es, ax ; 8e c0 ; 0xf3d45
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3d47
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf3d4a eltorito.c:49
+ mov si, 00366h ; be 66 03 ; 0xf3d4d eltorito.c:295
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3d50
+ mov word [bp-014h], 00122h ; c7 46 ec 22 01 ; 0xf3d53 eltorito.c:296
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3d58
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3d5b eltorito.c:299
+ jmp short 03d6ah ; eb 09 ; 0xf3d5f
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf3d61 eltorito.c:302
+ cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3d64
+ jnc short 03d76h ; 73 0c ; 0xf3d68
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3d6a
+ xor ah, ah ; 30 e4 ; 0xf3d6d
+ call 03d00h ; e8 8e ff ; 0xf3d6f
+ test ax, ax ; 85 c0 ; 0xf3d72
+ je short 03d61h ; 74 eb ; 0xf3d74
+ cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3d76 eltorito.c:305
+ jc short 03d82h ; 72 06 ; 0xf3d7a
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf3d7c eltorito.c:306
+ jmp near 040eah ; e9 68 03 ; 0xf3d7f
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3d82 eltorito.c:309
+ xor bx, bx ; 31 db ; 0xf3d85
+ mov dx, ss ; 8c d2 ; 0xf3d87
+ lea ax, [bp-026h] ; 8d 46 da ; 0xf3d89
+ call 09bb0h ; e8 21 5e ; 0xf3d8c
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3d8f eltorito.c:310
+ mov ax, strict word 00011h ; b8 11 00 ; 0xf3d94 eltorito.c:311
+ xor dx, dx ; 31 d2 ; 0xf3d97
+ xchg ah, al ; 86 c4 ; 0xf3d99
+ xchg dh, dl ; 86 d6 ; 0xf3d9b
+ xchg dx, ax ; 92 ; 0xf3d9d
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3d9e
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3da1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3da4 eltorito.c:312
+ xchg ah, al ; 86 c4 ; 0xf3da7
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3da9
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3dac eltorito.c:314
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3daf
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf3db2
+ mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3db8 eltorito.c:315
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3dbe eltorito.c:317
+ jmp short 03dcdh ; eb 09 ; 0xf3dc2
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf3dc4 eltorito.c:322
+ cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3dc7
+ jnbe short 03e09h ; 77 3c ; 0xf3dcb
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3dcd
+ xor ah, ah ; 30 e4 ; 0xf3dd0
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3dd2
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3dd5
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3dd8
+ add bx, ax ; 01 c3 ; 0xf3ddb
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3ddd
+ xor ah, ah ; 30 e4 ; 0xf3de1
+ mov di, ax ; 89 c7 ; 0xf3de3
+ add di, ax ; 01 c7 ; 0xf3de5
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3de7
+ push SS ; 16 ; 0xf3deb
+ push dx ; 52 ; 0xf3dec
+ push strict byte 00001h ; 6a 01 ; 0xf3ded
+ push strict byte 00000h ; 6a 00 ; 0xf3def
+ push 00800h ; 68 00 08 ; 0xf3df1
+ push strict byte 00000h ; 6a 00 ; 0xf3df4
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3df6
+ mov cx, ss ; 8c d1 ; 0xf3df9
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3dfb
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3dfe
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3e01
+ test ax, ax ; 85 c0 ; 0xf3e05
+ jne short 03dc4h ; 75 bb ; 0xf3e07
+ test ax, ax ; 85 c0 ; 0xf3e09 eltorito.c:323
+ je short 03e13h ; 74 06 ; 0xf3e0b
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf3e0d eltorito.c:324
+ jmp near 040eah ; e9 d7 02 ; 0xf3e10
+ cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3e13 eltorito.c:327
+ je short 03e20h ; 74 06 ; 0xf3e18
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3e1a eltorito.c:328
+ jmp near 040eah ; e9 ca 02 ; 0xf3e1d
+ xor di, di ; 31 ff ; 0xf3e20 eltorito.c:330
+ jmp short 03e2ah ; eb 06 ; 0xf3e22
+ inc di ; 47 ; 0xf3e24 eltorito.c:332
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3e25
+ jnc short 03e3ah ; 73 10 ; 0xf3e28
+ mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3e2a
+ cmp al, byte [di+00da8h] ; 3a 85 a8 0d ; 0xf3e2e
+ je short 03e24h ; 74 f0 ; 0xf3e32
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf3e34
+ jmp near 040eah ; e9 b0 02 ; 0xf3e37
+ xor di, di ; 31 ff ; 0xf3e3a eltorito.c:334
+ jmp short 03e44h ; eb 06 ; 0xf3e3c
+ inc di ; 47 ; 0xf3e3e eltorito.c:336
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3e3f
+ jnc short 03e54h ; 73 10 ; 0xf3e42
+ mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3e44
+ cmp al, byte [di+00daeh] ; 3a 85 ae 0d ; 0xf3e48
+ je short 03e3eh ; 74 f0 ; 0xf3e4c
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf3e4e
+ jmp near 040eah ; e9 96 02 ; 0xf3e51
+ mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3e54 eltorito.c:339
+ mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3e58
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3e5c eltorito.c:343
+ xchg ah, al ; 86 c4 ; 0xf3e61 eltorito.c:344
+ xchg dh, dl ; 86 d6 ; 0xf3e63
+ xchg dx, ax ; 92 ; 0xf3e65
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3e66
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3e69
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e6c eltorito.c:345
+ xchg ah, al ; 86 c4 ; 0xf3e6f
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3e71
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e74 eltorito.c:352
+ xor ah, ah ; 30 e4 ; 0xf3e77
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3e79
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3e7c
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3e7f
+ add bx, ax ; 01 c3 ; 0xf3e82
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3e84
+ xor ah, ah ; 30 e4 ; 0xf3e88
+ mov di, ax ; 89 c7 ; 0xf3e8a
+ add di, ax ; 01 c7 ; 0xf3e8c
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3e8e
+ push SS ; 16 ; 0xf3e92
+ push dx ; 52 ; 0xf3e93
+ push strict byte 00001h ; 6a 01 ; 0xf3e94
+ push strict byte 00000h ; 6a 00 ; 0xf3e96
+ push 00800h ; 68 00 08 ; 0xf3e98
+ push strict byte 00000h ; 6a 00 ; 0xf3e9b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e9d
+ mov cx, ss ; 8c d1 ; 0xf3ea0
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3ea2
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ea5
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3ea8
+ test ax, ax ; 85 c0 ; 0xf3eac eltorito.c:353
+ je short 03eb6h ; 74 06 ; 0xf3eae
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3eb0 eltorito.c:354
+ jmp near 040eah ; e9 34 02 ; 0xf3eb3
+ cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3eb6 eltorito.c:359
+ je short 03ec3h ; 74 06 ; 0xf3ebb
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf3ebd eltorito.c:360
+ jmp near 040eah ; e9 27 02 ; 0xf3ec0
+ cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3ec3 eltorito.c:361
+ je short 03ed0h ; 74 06 ; 0xf3ec8
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf3eca eltorito.c:362
+ jmp near 040eah ; e9 1a 02 ; 0xf3ecd
+ cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3ed0 eltorito.c:363
+ je short 03eddh ; 74 06 ; 0xf3ed5
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf3ed7 eltorito.c:364
+ jmp near 040eah ; e9 0d 02 ; 0xf3eda
+ cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf3edd eltorito.c:365
+ jne short 03ed7h ; 75 f3 ; 0xf3ee2
+ cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf3ee4 eltorito.c:366
+ je short 03ef1h ; 74 06 ; 0xf3ee9
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf3eeb eltorito.c:370
+ jmp near 040eah ; e9 f9 01 ; 0xf3eee
+ mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf3ef1 eltorito.c:372
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf3ef5
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf3ef8
+ cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf3efc eltorito.c:373
+ jne short 03f0ah ; 75 07 ; 0xf3f01
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf3f03 eltorito.c:376
+ jmp short 03f1dh ; eb 13 ; 0xf3f08 eltorito.c:378
+ cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf3f0a
+ jnc short 03f18h ; 73 07 ; 0xf3f0f
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf3f11 eltorito.c:379
+ jmp short 03f1dh ; eb 05 ; 0xf3f16 eltorito.c:380
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf3f18 eltorito.c:381
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf3f1d eltorito.c:383
+ xor bh, bh ; 30 ff ; 0xf3f20
+ mov ax, bx ; 89 d8 ; 0xf3f22
+ cwd ; 99 ; 0xf3f24
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf3f25
+ sar ax, 1 ; d1 f8 ; 0xf3f27
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf3f29
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf3f2c
+ mov ax, bx ; 89 d8 ; 0xf3f30 eltorito.c:384
+ cwd ; 99 ; 0xf3f32
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf3f33
+ idiv bx ; f7 fb ; 0xf3f36
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf3f38
+ mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf3f3c eltorito.c:386
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3f40
+ test ax, ax ; 85 c0 ; 0xf3f43 eltorito.c:387
+ jne short 03f4ch ; 75 05 ; 0xf3f45
+ mov word [bp-016h], 007c0h ; c7 46 ea c0 07 ; 0xf3f47 eltorito.c:388
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf3f4c eltorito.c:390
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf3f4f
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf3f52
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf3f56 eltorito.c:391
+ mov di, word [bp-00800h] ; 8b be 00 f8 ; 0xf3f5c eltorito.c:393
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf3f60 eltorito.c:394
+ test di, di ; 85 ff ; 0xf3f64 eltorito.c:399
+ je short 03f6eh ; 74 06 ; 0xf3f66
+ cmp di, 00400h ; 81 ff 00 04 ; 0xf3f68
+ jbe short 03f74h ; 76 06 ; 0xf3f6c
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf3f6e eltorito.c:400
+ jmp near 040eah ; e9 76 01 ; 0xf3f71
+ mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf3f74 eltorito.c:402
+ mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf3f78
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf3f7c eltorito.c:403
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf3f80
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f84 eltorito.c:409
+ xchg ah, al ; 86 c4 ; 0xf3f89 eltorito.c:410
+ xchg dh, dl ; 86 d6 ; 0xf3f8b
+ xchg dx, ax ; 92 ; 0xf3f8d
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3f8e
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3f91
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf3f94 eltorito.c:411
+ shr dx, 002h ; c1 ea 02 ; 0xf3f97
+ inc dx ; 42 ; 0xf3f9a
+ mov ax, dx ; 89 d0 ; 0xf3f9b
+ xchg ah, al ; 86 c4 ; 0xf3f9d
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3f9f
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf3fa2 eltorito.c:413
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf3fa5
+ mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf3fa8
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf3fac eltorito.c:414
+ mov ax, di ; 89 f8 ; 0xf3fb2 eltorito.c:416
+ sal ax, 009h ; c1 e0 09 ; 0xf3fb4
+ mov dx, 00800h ; ba 00 08 ; 0xf3fb7
+ sub dx, ax ; 29 c2 ; 0xf3fba
+ mov ax, dx ; 89 d0 ; 0xf3fbc
+ and ah, 007h ; 80 e4 07 ; 0xf3fbe
+ mov word [es:bx+020h], ax ; 26 89 47 20 ; 0xf3fc1
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3fc5 eltorito.c:418
+ xor ah, ah ; 30 e4 ; 0xf3fc8
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3fca
+ add bx, ax ; 01 c3 ; 0xf3fcd
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3fcf
+ xor ah, ah ; 30 e4 ; 0xf3fd3
+ add ax, ax ; 01 c0 ; 0xf3fd5
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf3fd7
+ push word [bp-016h] ; ff 76 ea ; 0xf3fda
+ push strict byte 00000h ; 6a 00 ; 0xf3fdd
+ push strict byte 00001h ; 6a 01 ; 0xf3fdf
+ mov ax, di ; 89 f8 ; 0xf3fe1
+ xor di, di ; 31 ff ; 0xf3fe3
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf3fe5
+ sal ax, 1 ; d1 e0 ; 0xf3fe8
+ rcl di, 1 ; d1 d7 ; 0xf3fea
+ loop 03fe8h ; e2 fa ; 0xf3fec
+ push di ; 57 ; 0xf3fee
+ push ax ; 50 ; 0xf3fef
+ push strict byte 00000h ; 6a 00 ; 0xf3ff0
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3ff2
+ xor ah, ah ; 30 e4 ; 0xf3ff5
+ mov cx, ss ; 8c d1 ; 0xf3ff7
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3ff9
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ffc
+ mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf3fff
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4002
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4006 eltorito.c:420
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf4009
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf400c
+ test ax, ax ; 85 c0 ; 0xf4012 eltorito.c:422
+ je short 0401ch ; 74 06 ; 0xf4014
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf4016 eltorito.c:423
+ jmp near 040eah ; e9 ce 00 ; 0xf4019
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf401c eltorito.c:428
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf401f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf4023
+ jc short 04033h ; 72 0c ; 0xf4025
+ jbe short 0404eh ; 76 25 ; 0xf4027
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf4029
+ je short 0405eh ; 74 31 ; 0xf402b
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf402d
+ je short 04056h ; 74 25 ; 0xf402f
+ jmp short 040a2h ; eb 6f ; 0xf4031
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4033
+ jne short 040a2h ; 75 6b ; 0xf4035
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4037 eltorito.c:430
+ mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf403a
+ mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf4040 eltorito.c:431
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf4046 eltorito.c:432
+ jmp short 040a2h ; eb 54 ; 0xf404c eltorito.c:433
+ mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf404e eltorito.c:435
+ jmp short 04040h ; eb ea ; 0xf4054
+ mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf4056 eltorito.c:440
+ jmp short 04040h ; eb e2 ; 0xf405c
+ mov bx, 001c4h ; bb c4 01 ; 0xf405e eltorito.c:38
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4061
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4064
+ and AL, strict byte 03fh ; 24 3f ; 0xf4067 eltorito.c:39
+ xor ah, ah ; 30 e4 ; 0xf4069
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf406b
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf406e
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4072 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4075
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf4078 eltorito.c:39
+ mov dx, ax ; 89 c2 ; 0xf407a
+ sal dx, 002h ; c1 e2 02 ; 0xf407c
+ mov bx, 001c5h ; bb c5 01 ; 0xf407f eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4082
+ add ax, dx ; 01 d0 ; 0xf4085 eltorito.c:39
+ inc ax ; 40 ; 0xf4087
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4088
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf408b
+ mov bx, 001c3h ; bb c3 01 ; 0xf408f eltorito.c:38
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4092
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4095
+ xor ah, ah ; 30 e4 ; 0xf4098 eltorito.c:39
+ inc ax ; 40 ; 0xf409a
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf409b
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf409e
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40a2 eltorito.c:453
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf40a5
+ je short 040d0h ; 74 24 ; 0xf40aa
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf40ac eltorito.c:455
+ jne short 040c2h ; 75 0f ; 0xf40b1
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf40b3 eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf40b6
+ mov es, ax ; 8e c0 ; 0xf40b9
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf40bb
+ or AL, strict byte 041h ; 0c 41 ; 0xf40be eltorito.c:39
+ jmp short 040cdh ; eb 0b ; 0xf40c0 eltorito.c:457
+ mov bx, 00304h ; bb 04 03 ; 0xf40c2 eltorito.c:38
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf40c5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf40c8
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf40cb eltorito.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf40cd eltorito.c:43
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40d0 eltorito.c:462
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf40d3
+ je short 040deh ; 74 04 ; 0xf40d8
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf40da eltorito.c:463
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf40de eltorito.c:466
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf40e1
+ xor ah, ah ; 30 e4 ; 0xf40e5
+ sal ax, 008h ; c1 e0 08 ; 0xf40e7
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf40ea eltorito.c:467
+ pop di ; 5f ; 0xf40ed
+ pop si ; 5e ; 0xf40ee
+ pop dx ; 5a ; 0xf40ef
+ pop cx ; 59 ; 0xf40f0
+ pop bx ; 5b ; 0xf40f1
+ pop bp ; 5d ; 0xf40f2
+ retn ; c3 ; 0xf40f3
+ ; disGetNextSymbol 0xf40f4 LB 0x5dd4 -> off=0x59 cb=00000000000005e8 uValue=00000000000f2b4d 'int13_cdemu'
+ db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
+ db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 018h, 047h, 0f7h
+ db 041h, 02ah, 042h, 052h, 042h, 01fh, 042h, 052h, 042h, 01fh, 042h, 06dh, 044h, 052h, 044h, 018h
+ db 047h, 018h, 047h, 052h, 044h, 052h, 044h, 052h, 044h, 052h, 044h, 052h, 044h, 014h, 045h, 052h
+ db 044h, 018h, 047h, 01dh, 045h, 030h, 045h, 018h, 047h, 030h, 045h, 018h, 047h, 018h, 047h, 030h
+ db 045h, 0ddh, 046h, 018h, 047h, 018h, 047h, 018h, 047h
+int13_cdemu: ; 0xf414d LB 0x5e8
+ push bp ; 55 ; 0xf414d eltorito.c:477
+ mov bp, sp ; 89 e5 ; 0xf414e
+ push si ; 56 ; 0xf4150
+ push di ; 57 ; 0xf4151
+ sub sp, strict byte 00038h ; 83 ec 38 ; 0xf4152
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4155 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4158
+ mov es, ax ; 8e c0 ; 0xf415b
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf415d
+ mov dx, 00366h ; ba 66 03 ; 0xf4160 eltorito.c:493
+ mov cx, ax ; 89 c1 ; 0xf4163
+ mov bx, dx ; 89 d3 ; 0xf4165
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4167
+ mov si, 00122h ; be 22 01 ; 0xf416a eltorito.c:494
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf416d
+ mov es, ax ; 8e c0 ; 0xf4170 eltorito.c:501
+ mov di, dx ; 89 d7 ; 0xf4172
+ mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf4174
+ add al, al ; 00 c0 ; 0xf4178
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf417a
+ mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf417d eltorito.c:502
+ add byte [bp-006h], al ; 00 46 fa ; 0xf4181
+ mov di, strict word 00074h ; bf 74 00 ; 0xf4184 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4187
+ mov es, ax ; 8e c0 ; 0xf418a
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf418c
+ mov es, cx ; 8e c1 ; 0xf4190 eltorito.c:507
+ mov di, dx ; 89 d7 ; 0xf4192
+ cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf4194
+ je short 041a9h ; 74 0f ; 0xf4198
+ mov al, byte [es:di+002h] ; 26 8a 45 02 ; 0xf419a
+ xor ah, ah ; 30 e4 ; 0xf419e
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf41a0
+ xor dh, dh ; 30 f6 ; 0xf41a3
+ cmp ax, dx ; 39 d0 ; 0xf41a5
+ je short 041d2h ; 74 29 ; 0xf41a7
+ mov bx, 00da0h ; bb a0 0d ; 0xf41a9 eltorito.c:508
+ mov cx, ds ; 8c d9 ; 0xf41ac
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf41ae
+ call 018bch ; e8 08 d7 ; 0xf41b1
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf41b4
+ xor ah, ah ; 30 e4 ; 0xf41b7
+ push ax ; 50 ; 0xf41b9
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf41ba
+ shr ax, 008h ; c1 e8 08 ; 0xf41bd
+ push ax ; 50 ; 0xf41c0
+ push 0034ch ; 68 4c 03 ; 0xf41c1
+ push 00358h ; 68 58 03 ; 0xf41c4
+ push strict byte 00004h ; 6a 04 ; 0xf41c7
+ call 018ffh ; e8 33 d7 ; 0xf41c9
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf41cc
+ jmp near 046f5h ; e9 23 05 ; 0xf41cf eltorito.c:509
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf41d2 eltorito.c:512
+ shr ax, 008h ; c1 e8 08 ; 0xf41d5
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf41d8
+ jnbe short 0424fh ; 77 72 ; 0xf41db
+ push CS ; 0e ; 0xf41dd
+ pop ES ; 07 ; 0xf41de
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf41df
+ mov di, 040f4h ; bf f4 40 ; 0xf41e2
+ repne scasb ; f2 ae ; 0xf41e5
+ sal cx, 1 ; d1 e1 ; 0xf41e7
+ mov di, cx ; 89 cf ; 0xf41e9
+ mov ax, word [cs:di+04111h] ; 2e 8b 85 11 41 ; 0xf41eb
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf41f0
+ xor dh, dh ; 30 f6 ; 0xf41f3
+ jmp ax ; ff e0 ; 0xf41f5
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf41f7 eltorito.c:515
+ xor ah, ah ; 30 e4 ; 0xf41fa
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf41fc
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf41ff
+ add si, ax ; 01 c6 ; 0xf4202
+ mov bl, byte [es:si+022h] ; 26 8a 5c 22 ; 0xf4204
+ xor bh, bh ; 30 ff ; 0xf4208
+ add bx, bx ; 01 db ; 0xf420a
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf420c
+ je short 0421ch ; 74 09 ; 0xf4211
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4213 eltorito.c:517
+ xor ah, ah ; 30 e4 ; 0xf4216
+ call word [word bx+00076h] ; ff 97 76 00 ; 0xf4218
+ jmp near 04452h ; e9 33 02 ; 0xf421c eltorito.c:519
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf421f eltorito.c:535
+ xor ah, ah ; 30 e4 ; 0xf4222
+ or ah, 003h ; 80 cc 03 ; 0xf4224
+ jmp near 046fdh ; e9 d3 04 ; 0xf4227 eltorito.c:536
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf422a eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf422d
+ mov es, ax ; 8e c0 ; 0xf4230
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4232
+ mov bl, al ; 88 c3 ; 0xf4235 eltorito.c:541
+ xor bh, bh ; 30 ff ; 0xf4237
+ sal bx, 008h ; c1 e3 08 ; 0xf4239
+ or dx, bx ; 09 da ; 0xf423c
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf423e
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4241 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4244
+ test al, al ; 84 c0 ; 0xf4248 eltorito.c:545
+ je short 042b0h ; 74 64 ; 0xf424a
+ jmp near 04711h ; e9 c2 04 ; 0xf424c eltorito.c:546
+ jmp near 04718h ; e9 c6 04 ; 0xf424f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4252 eltorito.c:553
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4255
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4259
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf425c eltorito.c:554
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4260 eltorito.c:555
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4264
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf4267 eltorito.c:556
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf426b
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf426e
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf4272
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf4275 eltorito.c:558
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf4278
+ mov word [bp-022h], ax ; 89 46 de ; 0xf427b
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf427e eltorito.c:559
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf4281
+ sal bx, 002h ; c1 e3 02 ; 0xf4285
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf4288
+ shr ax, 008h ; c1 e8 08 ; 0xf428b
+ or ax, bx ; 09 d8 ; 0xf428e
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf4290 eltorito.c:560
+ shr bx, 008h ; c1 eb 08 ; 0xf4293
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf4296
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf4299 eltorito.c:561
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf429c
+ je short 042c9h ; 74 27 ; 0xf42a0 eltorito.c:569
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf42a2 eltorito.c:573
+ cmp bx, word [bp-00eh] ; 3b 5e f2 ; 0xf42a5
+ jnbe short 042bbh ; 77 11 ; 0xf42a8
+ cmp ax, dx ; 39 d0 ; 0xf42aa
+ jc short 042b3h ; 72 05 ; 0xf42ac
+ jmp short 042bbh ; eb 0b ; 0xf42ae
+ jmp near 04456h ; e9 a3 01 ; 0xf42b0
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf42b3
+ cmp dx, word [bp-00ch] ; 3b 56 f4 ; 0xf42b6
+ jc short 042beh ; 72 03 ; 0xf42b9
+ jmp near 046f5h ; e9 37 04 ; 0xf42bb eltorito.c:576
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf42be eltorito.c:580
+ shr dx, 008h ; c1 ea 08 ; 0xf42c1
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf42c4
+ jne short 042cch ; 75 03 ; 0xf42c7
+ jmp near 04452h ; e9 86 01 ; 0xf42c9 eltorito.c:581
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf42cc eltorito.c:583
+ shr dx, 004h ; c1 ea 04 ; 0xf42cf
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf42d2
+ add bx, dx ; 01 d3 ; 0xf42d5
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf42d7
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf42da eltorito.c:584
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf42dd
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf42e0
+ xor dl, dl ; 30 d2 ; 0xf42e3 eltorito.c:587
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf42e5
+ xor cx, cx ; 31 c9 ; 0xf42e8
+ call 09b40h ; e8 53 58 ; 0xf42ea
+ xor bx, bx ; 31 db ; 0xf42ed
+ add ax, word [bp-012h] ; 03 46 ee ; 0xf42ef
+ adc dx, bx ; 11 da ; 0xf42f2
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf42f4
+ xor cx, cx ; 31 c9 ; 0xf42f7
+ call 09b40h ; e8 44 58 ; 0xf42f9
+ mov bx, dx ; 89 d3 ; 0xf42fc
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf42fe
+ dec dx ; 4a ; 0xf4301
+ mov word [bp-024h], strict word 00000h ; c7 46 dc 00 00 ; 0xf4302
+ add dx, ax ; 01 c2 ; 0xf4307
+ adc bx, word [bp-024h] ; 13 5e dc ; 0xf4309
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf430c eltorito.c:590
+ xor al, al ; 30 c0 ; 0xf430f
+ or ax, di ; 09 f8 ; 0xf4311
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4313
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf4316 eltorito.c:593
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xf4319
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf431c
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf431f
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4322
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4325
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf4328
+ mov word [bp-026h], ax ; 89 46 da ; 0xf432b
+ mov ax, dx ; 89 d0 ; 0xf432e eltorito.c:594
+ xor ah, dh ; 30 f4 ; 0xf4330
+ and AL, strict byte 003h ; 24 03 ; 0xf4332
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf4334
+ xor cx, cx ; 31 c9 ; 0xf4337 eltorito.c:597
+ mov ax, dx ; 89 d0 ; 0xf4339
+ add ax, di ; 01 f8 ; 0xf433b
+ mov dx, bx ; 89 da ; 0xf433d
+ adc dx, cx ; 11 ca ; 0xf433f
+ mov bx, ax ; 89 c3 ; 0xf4341
+ add bx, strict byte 0ffffh ; 83 c3 ff ; 0xf4343
+ mov ax, dx ; 89 d0 ; 0xf4346
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf4348
+ mov word [bp-02ch], bx ; 89 5e d4 ; 0xf434b
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf434e
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4351
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4354
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4357
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf435a
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf435d eltorito.c:599
+ xor bx, bx ; 31 db ; 0xf4360
+ mov dx, ss ; 8c d2 ; 0xf4362
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf4364
+ call 09bb0h ; e8 46 58 ; 0xf4367
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf436a eltorito.c:600
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf436f eltorito.c:601
+ add ax, word [bp-030h] ; 03 46 d0 ; 0xf4372
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf4375
+ adc dx, word [bp-026h] ; 13 56 da ; 0xf4378
+ xchg ah, al ; 86 c4 ; 0xf437b
+ xchg dh, dl ; 86 d6 ; 0xf437d
+ xchg dx, ax ; 92 ; 0xf437f
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4380
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf4383
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf4386 eltorito.c:602
+ sub ax, word [bp-030h] ; 2b 46 d0 ; 0xf4389
+ inc ax ; 40 ; 0xf438c
+ xchg ah, al ; 86 c4 ; 0xf438d
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf438f
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4392 eltorito.c:604
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf4395
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf4399 eltorito.c:605
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf439f eltorito.c:607
+ sal dx, 009h ; c1 e2 09 ; 0xf43a2
+ mov word [es:si+01eh], dx ; 26 89 54 1e ; 0xf43a5
+ mov ax, di ; 89 f8 ; 0xf43a9 eltorito.c:608
+ xor ah, ah ; 30 e4 ; 0xf43ab
+ and AL, strict byte 003h ; 24 03 ; 0xf43ad
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf43af
+ sub bx, ax ; 29 c3 ; 0xf43b2
+ mov ax, bx ; 89 d8 ; 0xf43b4
+ sub ax, word [bp-028h] ; 2b 46 d8 ; 0xf43b6
+ sal ax, 009h ; c1 e0 09 ; 0xf43b9
+ and ah, 007h ; 80 e4 07 ; 0xf43bc
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf43bf
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43c3 eltorito.c:610
+ xor ah, ah ; 30 e4 ; 0xf43c6
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf43c8
+ mov bx, si ; 89 f3 ; 0xf43cb
+ add bx, ax ; 01 c3 ; 0xf43cd
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf43cf
+ xor ah, ah ; 30 e4 ; 0xf43d3
+ add ax, ax ; 01 c0 ; 0xf43d5
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf43d7
+ push word [bp-014h] ; ff 76 ec ; 0xf43da
+ push word [bp-016h] ; ff 76 ea ; 0xf43dd
+ push strict byte 00001h ; 6a 01 ; 0xf43e0
+ mov bx, di ; 89 fb ; 0xf43e2
+ xor di, di ; 31 ff ; 0xf43e4
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf43e6
+ sal bx, 1 ; d1 e3 ; 0xf43e9
+ rcl di, 1 ; d1 d7 ; 0xf43eb
+ loop 043e9h ; e2 fa ; 0xf43ed
+ push di ; 57 ; 0xf43ef
+ push bx ; 53 ; 0xf43f0
+ push dx ; 52 ; 0xf43f1
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf43f2
+ xor ah, ah ; 30 e4 ; 0xf43f5
+ mov cx, ss ; 8c d1 ; 0xf43f7
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf43f9
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf43fc
+ mov di, word [bp-024h] ; 8b 7e dc ; 0xf43ff
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4402
+ mov dx, ax ; 89 c2 ; 0xf4406
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4408 eltorito.c:612
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf440b
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf4411 eltorito.c:613
+ test al, al ; 84 c0 ; 0xf4417 eltorito.c:615
+ je short 04452h ; 74 37 ; 0xf4419
+ mov bx, 00da0h ; bb a0 0d ; 0xf441b eltorito.c:616
+ mov cx, ds ; 8c d9 ; 0xf441e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4420
+ call 018bch ; e8 96 d4 ; 0xf4423
+ mov al, dl ; 88 d0 ; 0xf4426
+ xor ah, ah ; 30 e4 ; 0xf4428
+ push ax ; 50 ; 0xf442a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf442b
+ shr ax, 008h ; c1 e8 08 ; 0xf442e
+ push ax ; 50 ; 0xf4431
+ push 0034ch ; 68 4c 03 ; 0xf4432
+ push 0038eh ; 68 8e 03 ; 0xf4435
+ push strict byte 00004h ; 6a 04 ; 0xf4438
+ call 018ffh ; e8 c2 d4 ; 0xf443a
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf443d
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4440 eltorito.c:617
+ xor ah, ah ; 30 e4 ; 0xf4443
+ or ah, 002h ; 80 cc 02 ; 0xf4445
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4448
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf444b eltorito.c:618
+ jmp near 04700h ; e9 ae 02 ; 0xf444f eltorito.c:619
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf4452
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4456
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4459
+ mov es, ax ; 8e c0 ; 0xf445c
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf445e
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf4462
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4466
+ pop di ; 5f ; 0xf4469
+ pop si ; 5e ; 0xf446a
+ pop bp ; 5d ; 0xf446b
+ retn ; c3 ; 0xf446c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf446d eltorito.c:626
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4470
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4474
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4477 eltorito.c:627
+ dec dx ; 4a ; 0xf447b
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf447c eltorito.c:628
+ dec ax ; 48 ; 0xf4480
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4481
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4484 eltorito.c:630
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4488 eltorito.c:631
+ xor al, al ; 30 c0 ; 0xf448b
+ mov si, word [bp+014h] ; 8b 76 14 ; 0xf448d eltorito.c:632
+ and si, 000ffh ; 81 e6 ff 00 ; 0xf4490
+ mov cx, dx ; 89 d1 ; 0xf4494
+ xor ch, dh ; 30 f5 ; 0xf4496
+ sal cx, 008h ; c1 e1 08 ; 0xf4498
+ or si, cx ; 09 ce ; 0xf449b
+ mov word [bp+014h], si ; 89 76 14 ; 0xf449d
+ mov cx, dx ; 89 d1 ; 0xf44a0 eltorito.c:633
+ shr cx, 002h ; c1 e9 02 ; 0xf44a2
+ and cl, 0c0h ; 80 e1 c0 ; 0xf44a5
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf44a8
+ and dl, 03fh ; 80 e2 3f ; 0xf44ab
+ or cl, dl ; 08 d1 ; 0xf44ae
+ mov dx, si ; 89 f2 ; 0xf44b0
+ mov dl, cl ; 88 ca ; 0xf44b2
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf44b4
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf44b7 eltorito.c:634
+ xor ch, ch ; 30 ed ; 0xf44ba
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf44bc
+ sal dx, 008h ; c1 e2 08 ; 0xf44bf
+ or cx, dx ; 09 d1 ; 0xf44c2
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf44c4
+ mov dx, cx ; 89 ca ; 0xf44c7 eltorito.c:635
+ xor dl, cl ; 30 ca ; 0xf44c9
+ or dl, 002h ; 80 ca 02 ; 0xf44cb
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf44ce
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf44d1 eltorito.c:638
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf44d5
+ cmp dl, 003h ; 80 fa 03 ; 0xf44d8
+ je short 044f7h ; 74 1a ; 0xf44db
+ cmp dl, 002h ; 80 fa 02 ; 0xf44dd
+ je short 044f3h ; 74 11 ; 0xf44e0
+ cmp dl, 001h ; 80 fa 01 ; 0xf44e2
+ jne short 044fbh ; 75 14 ; 0xf44e5
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf44e7 eltorito.c:639
+ xor al, al ; 30 c0 ; 0xf44ea
+ or AL, strict byte 002h ; 0c 02 ; 0xf44ec
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf44ee
+ jmp short 044fbh ; eb 08 ; 0xf44f1
+ or AL, strict byte 004h ; 0c 04 ; 0xf44f3 eltorito.c:640
+ jmp short 044eeh ; eb f7 ; 0xf44f5
+ or AL, strict byte 005h ; 0c 05 ; 0xf44f7 eltorito.c:641
+ jmp short 044eeh ; eb f3 ; 0xf44f9
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf44fb eltorito.c:645
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf44fe
+ jc short 04508h ; 72 03 ; 0xf4503
+ jmp near 04452h ; e9 4a ff ; 0xf4505
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf4508 eltorito.c:646
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf450d eltorito.c:647
+ jmp short 04505h ; eb f1 ; 0xf4512 eltorito.c:649
+ or dh, 003h ; 80 ce 03 ; 0xf4514 eltorito.c:654
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf4517
+ jmp near 04456h ; e9 39 ff ; 0xf451a eltorito.c:655
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf451d eltorito.c:659
+ or dh, 030h ; 80 ce 30 ; 0xf4522 eltorito.c:660
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf4525
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4528 eltorito.c:661
+ jmp near 04456h ; e9 26 ff ; 0xf452d eltorito.c:662
+ mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf4530 eltorito.c:670
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf4533
+ mov word [bp-01ah], di ; 89 7e e6 ; 0xf4536
+ mov [bp-018h], es ; 8c 46 e8 ; 0xf4539
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf453c eltorito.c:672
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4540
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf4543 eltorito.c:673
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf4547
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf454a eltorito.c:674
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf454e
+ mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf4551 eltorito.c:677
+ mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4555
+ or ax, dx ; 09 d0 ; 0xf4559 eltorito.c:678
+ je short 04575h ; 74 18 ; 0xf455b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf455d eltorito.c:679
+ shr ax, 008h ; c1 e8 08 ; 0xf4560
+ push ax ; 50 ; 0xf4563
+ push 0034ch ; 68 4c 03 ; 0xf4564
+ push 003afh ; 68 af 03 ; 0xf4567
+ push strict byte 00007h ; 6a 07 ; 0xf456a
+ call 018ffh ; e8 90 d3 ; 0xf456c
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf456f
+ jmp near 046f5h ; e9 80 01 ; 0xf4572 eltorito.c:680
+ les di, [bp-01ah] ; c4 7e e6 ; 0xf4575 eltorito.c:684
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf4578
+ mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf457c
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf4580 eltorito.c:687
+ shr cx, 008h ; c1 e9 08 ; 0xf4583
+ mov word [bp-01eh], cx ; 89 4e e2 ; 0xf4586
+ cmp cx, strict byte 00044h ; 83 f9 44 ; 0xf4589
+ jne short 04591h ; 75 03 ; 0xf458c
+ jmp near 04452h ; e9 c1 fe ; 0xf458e
+ cmp cx, strict byte 00047h ; 83 f9 47 ; 0xf4591
+ jne short 04598h ; 75 02 ; 0xf4594
+ jmp short 0458eh ; eb f6 ; 0xf4596 eltorito.c:688
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4598 eltorito.c:695
+ mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf459b
+ mov word [bp-01ch], cx ; 89 4e e4 ; 0xf459f
+ mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf45a2
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xf45a6
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf45a9 eltorito.c:698
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf45ac
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf45af
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf45b2
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf45b5
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf45b8
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf45bb
+ mov word [bp-026h], bx ; 89 5e da ; 0xf45be
+ mov di, ax ; 89 c7 ; 0xf45c1 eltorito.c:699
+ and di, strict byte 00003h ; 83 e7 03 ; 0xf45c3
+ xor bx, bx ; 31 db ; 0xf45c6 eltorito.c:702
+ add ax, word [bp-010h] ; 03 46 f0 ; 0xf45c8
+ adc dx, bx ; 11 da ; 0xf45cb
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf45cd
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf45d0
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf45d3
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf45d6
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf45d9
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf45dc
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf45df
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf45e2
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf45e5 eltorito.c:704
+ mov dx, ss ; 8c d2 ; 0xf45e8
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf45ea
+ call 09bb0h ; e8 c0 55 ; 0xf45ed
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf45f0 eltorito.c:705
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf45f5 eltorito.c:706
+ add ax, word [bp-02ch] ; 03 46 d4 ; 0xf45f8
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf45fb
+ adc dx, word [bp-026h] ; 13 56 da ; 0xf45fe
+ xchg ah, al ; 86 c4 ; 0xf4601
+ xchg dh, dl ; 86 d6 ; 0xf4603
+ xchg dx, ax ; 92 ; 0xf4605
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4606
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf4609
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf460c eltorito.c:707
+ sub ax, word [bp-02ch] ; 2b 46 d4 ; 0xf460f
+ inc ax ; 40 ; 0xf4612
+ xchg ah, al ; 86 c4 ; 0xf4613
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf4615
+ mov dx, di ; 89 fa ; 0xf4618 eltorito.c:709
+ sal dx, 009h ; c1 e2 09 ; 0xf461a
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf461d
+ mov word [es:si+01eh], dx ; 26 89 54 1e ; 0xf4620
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf4624 eltorito.c:710
+ xor ah, ah ; 30 e4 ; 0xf4627
+ and AL, strict byte 003h ; 24 03 ; 0xf4629
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf462b
+ sub bx, ax ; 29 c3 ; 0xf462e
+ mov ax, bx ; 89 d8 ; 0xf4630
+ sub ax, di ; 29 f8 ; 0xf4632
+ sal ax, 009h ; c1 e0 09 ; 0xf4634
+ and ah, 007h ; 80 e4 07 ; 0xf4637
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf463a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf463e eltorito.c:712
+ xor ah, ah ; 30 e4 ; 0xf4641
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4643
+ mov bx, si ; 89 f3 ; 0xf4646
+ add bx, ax ; 01 c3 ; 0xf4648
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf464a
+ xor ah, ah ; 30 e4 ; 0xf464e
+ add ax, ax ; 01 c0 ; 0xf4650
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4652
+ push word [bp-014h] ; ff 76 ec ; 0xf4655
+ push word [bp-016h] ; ff 76 ea ; 0xf4658
+ push strict byte 00001h ; 6a 01 ; 0xf465b
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf465d
+ xor di, di ; 31 ff ; 0xf4660
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4662
+ sal bx, 1 ; d1 e3 ; 0xf4665
+ rcl di, 1 ; d1 d7 ; 0xf4667
+ loop 04665h ; e2 fa ; 0xf4669
+ push di ; 57 ; 0xf466b
+ push bx ; 53 ; 0xf466c
+ push dx ; 52 ; 0xf466d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf466e
+ xor ah, ah ; 30 e4 ; 0xf4671
+ mov cx, ss ; 8c d1 ; 0xf4673
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4675
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4678
+ mov di, word [bp-024h] ; 8b 7e dc ; 0xf467b
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf467e
+ mov dx, ax ; 89 c2 ; 0xf4682
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4684 eltorito.c:714
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf4687
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf468d eltorito.c:715
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf4693 eltorito.c:717
+ mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf4697
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf469b
+ shr di, 1 ; d1 ef ; 0xf469e
+ rcr bx, 1 ; d1 db ; 0xf46a0
+ loop 0469eh ; e2 fa ; 0xf46a2
+ les si, [bp-01ah] ; c4 76 e6 ; 0xf46a4 eltorito.c:718
+ mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf46a7
+ test al, al ; 84 c0 ; 0xf46ab eltorito.c:720
+ jne short 046b2h ; 75 03 ; 0xf46ad
+ jmp near 04452h ; e9 a0 fd ; 0xf46af
+ mov bx, 00da0h ; bb a0 0d ; 0xf46b2 eltorito.c:721
+ mov cx, ds ; 8c d9 ; 0xf46b5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf46b7
+ call 018bch ; e8 ff d1 ; 0xf46ba
+ mov al, dl ; 88 d0 ; 0xf46bd
+ xor ah, ah ; 30 e4 ; 0xf46bf
+ push ax ; 50 ; 0xf46c1
+ push word [bp-01eh] ; ff 76 e2 ; 0xf46c2
+ push 0034ch ; 68 4c 03 ; 0xf46c5
+ push 003d8h ; 68 d8 03 ; 0xf46c8
+ push strict byte 00004h ; 6a 04 ; 0xf46cb
+ call 018ffh ; e8 2f d2 ; 0xf46cd
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf46d0
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46d3 eltorito.c:722
+ xor ah, ah ; 30 e4 ; 0xf46d6
+ or ah, 00ch ; 80 cc 0c ; 0xf46d8
+ jmp short 046fdh ; eb 20 ; 0xf46db
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf46dd eltorito.c:730
+ xor ah, ah ; 30 e4 ; 0xf46e0
+ push ax ; 50 ; 0xf46e2
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf46e3
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf46e6
+ mov bx, si ; 89 f3 ; 0xf46e9
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf46eb
+ call 05965h ; e8 74 12 ; 0xf46ee
+ test ax, ax ; 85 c0 ; 0xf46f1
+ je short 046afh ; 74 ba ; 0xf46f3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf46f5 eltorito.c:731
+ xor ah, ah ; 30 e4 ; 0xf46f8
+ or ah, 001h ; 80 cc 01 ; 0xf46fa
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf46fd
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4700
+ shr ax, 008h ; c1 e8 08 ; 0xf4703
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4706
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4709
+ mov es, dx ; 8e c2 ; 0xf470c
+ mov byte [es:bx], al ; 26 88 07 ; 0xf470e
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf4711
+ jmp near 04466h ; e9 4e fd ; 0xf4715
+ mov bx, 00da0h ; bb a0 0d ; 0xf4718 eltorito.c:747
+ mov cx, ds ; 8c d9 ; 0xf471b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf471d
+ call 018bch ; e8 99 d1 ; 0xf4720
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4723
+ shr ax, 008h ; c1 e8 08 ; 0xf4726
+ push ax ; 50 ; 0xf4729
+ push 0034ch ; 68 4c 03 ; 0xf472a
+ push 003fah ; 68 fa 03 ; 0xf472d
+ push strict byte 00004h ; 6a 04 ; 0xf4730
+ jmp near 0456ch ; e9 37 fe ; 0xf4732
+ ; disGetNextSymbol 0xf4735 LB 0x5793 -> off=0x59 cb=0000000000000379 uValue=00000000000f318e 'int13_cdrom'
+ db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
+ db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 06fh, 048h, 0ech
+ db 04ah, 034h, 048h, 06fh, 048h, 029h, 048h, 06fh, 048h, 029h, 048h, 06fh, 048h, 0ech, 04ah, 06fh
+ db 048h, 06fh, 048h, 0ech, 04ah, 0ech, 04ah, 0ech, 04ah, 0ech, 04ah, 0ech, 04ah, 056h, 048h, 0ech
+ db 04ah, 06fh, 048h, 05ch, 048h, 08bh, 048h, 029h, 048h, 08bh, 048h, 0c9h, 049h, 06fh, 04ah, 08bh
+ db 048h, 094h, 04ah, 0ach, 04ah, 0b4h, 04ah, 06fh, 048h
+int13_cdrom: ; 0xf478e LB 0x379
+ push bp ; 55 ; 0xf478e eltorito.c:772
+ mov bp, sp ; 89 e5 ; 0xf478f
+ push si ; 56 ; 0xf4791
+ push di ; 57 ; 0xf4792
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf4793
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4796 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4799
+ mov es, ax ; 8e c0 ; 0xf479c
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf479e
+ mov si, 00122h ; be 22 01 ; 0xf47a1 eltorito.c:782
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf47a4
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf47a7 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf47aa
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47ae eltorito.c:789
+ xor ah, ah ; 30 e4 ; 0xf47b1
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf47b3
+ jc short 047bdh ; 72 05 ; 0xf47b6
+ cmp ax, 000f0h ; 3d f0 00 ; 0xf47b8
+ jc short 047dbh ; 72 1e ; 0xf47bb
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47bd eltorito.c:790
+ xor ah, ah ; 30 e4 ; 0xf47c0
+ push ax ; 50 ; 0xf47c2
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47c3
+ shr ax, 008h ; c1 e8 08 ; 0xf47c6
+ push ax ; 50 ; 0xf47c9
+ push 0042ah ; 68 2a 04 ; 0xf47ca
+ push 00436h ; 68 36 04 ; 0xf47cd
+ push strict byte 00004h ; 6a 04 ; 0xf47d0
+ call 018ffh ; e8 2a d1 ; 0xf47d2
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47d5
+ jmp near 04acah ; e9 ef 02 ; 0xf47d8 eltorito.c:791
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf47db eltorito.c:795
+ xor ah, ah ; 30 e4 ; 0xf47de
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf47e0
+ mov bx, si ; 89 f3 ; 0xf47e3
+ add bx, ax ; 01 c3 ; 0xf47e5
+ mov dl, byte [es:bx+00114h] ; 26 8a 97 14 01 ; 0xf47e7
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf47ec
+ cmp dl, 010h ; 80 fa 10 ; 0xf47ef eltorito.c:798
+ jc short 04804h ; 72 10 ; 0xf47f2
+ push ax ; 50 ; 0xf47f4 eltorito.c:799
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf47f5
+ shr ax, 008h ; c1 e8 08 ; 0xf47f8
+ push ax ; 50 ; 0xf47fb
+ push 0042ah ; 68 2a 04 ; 0xf47fc
+ push 00461h ; 68 61 04 ; 0xf47ff
+ jmp short 047d0h ; eb cc ; 0xf4802
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4804 eltorito.c:803
+ shr ax, 008h ; c1 e8 08 ; 0xf4807
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf480a
+ jnbe short 0486fh ; 77 60 ; 0xf480d
+ push CS ; 0e ; 0xf480f
+ pop ES ; 07 ; 0xf4810
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4811
+ mov di, 04735h ; bf 35 47 ; 0xf4814
+ repne scasb ; f2 ae ; 0xf4817
+ sal cx, 1 ; d1 e1 ; 0xf4819
+ mov di, cx ; 89 cf ; 0xf481b
+ mov dx, word [cs:di+04752h] ; 2e 8b 95 52 47 ; 0xf481d
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4822
+ xor ah, ah ; 30 e4 ; 0xf4825
+ jmp dx ; ff e2 ; 0xf4827
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4829 eltorito.c:821
+ xor ah, ah ; 30 e4 ; 0xf482c
+ or ah, 003h ; 80 cc 03 ; 0xf482e
+ jmp near 04ad2h ; e9 9e 02 ; 0xf4831
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4834 eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4837
+ mov es, dx ; 8e c2 ; 0xf483a
+ mov cl, byte [es:bx] ; 26 8a 0f ; 0xf483c
+ mov dl, cl ; 88 ca ; 0xf483f eltorito.c:827
+ xor dh, dh ; 30 f6 ; 0xf4841
+ sal dx, 008h ; c1 e2 08 ; 0xf4843
+ or ax, dx ; 09 d0 ; 0xf4846
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4848
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf484b eltorito.c:43
+ test cl, cl ; 84 c9 ; 0xf484f eltorito.c:831
+ je short 0486ch ; 74 19 ; 0xf4851
+ jmp near 04ae6h ; e9 90 02 ; 0xf4853 eltorito.c:832
+ or ah, 002h ; 80 cc 02 ; 0xf4856 eltorito.c:838
+ jmp near 04ad2h ; e9 76 02 ; 0xf4859
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf485c eltorito.c:843
+ or ah, 030h ; 80 cc 30 ; 0xf4861 eltorito.c:844
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4864
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf4867 eltorito.c:845
+ jmp near 04af0h ; e9 81 02 ; 0xf486c eltorito.c:846
+ mov bx, 00da0h ; bb a0 0d ; 0xf486f
+ mov cx, ds ; 8c d9 ; 0xf4872
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4874
+ call 018bch ; e8 42 d0 ; 0xf4877
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf487a
+ shr ax, 008h ; c1 e8 08 ; 0xf487d
+ push ax ; 50 ; 0xf4880
+ push 0042ah ; 68 2a 04 ; 0xf4881
+ push 00333h ; 68 33 03 ; 0xf4884
+ push strict byte 00004h ; 6a 04 ; 0xf4887
+ jmp short 048cbh ; eb 40 ; 0xf4889
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf488b eltorito.c:854
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf488e
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf4891
+ mov [bp-00ch], es ; 8c 46 f4 ; 0xf4894
+ mov di, word [es:bx+002h] ; 26 8b 7f 02 ; 0xf4897 eltorito.c:856
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf489b eltorito.c:857
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf489f
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf48a2 eltorito.c:858
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf48a6
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf48a9 eltorito.c:861
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf48ad
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf48b0
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf48b4
+ or ax, word [bp-012h] ; 0b 46 ee ; 0xf48b7 eltorito.c:862
+ je short 048d4h ; 74 18 ; 0xf48ba
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48bc eltorito.c:863
+ shr ax, 008h ; c1 e8 08 ; 0xf48bf
+ push ax ; 50 ; 0xf48c2
+ push 0042ah ; 68 2a 04 ; 0xf48c3
+ push 003afh ; 68 af 03 ; 0xf48c6
+ push strict byte 00007h ; 6a 07 ; 0xf48c9
+ call 018ffh ; e8 31 d0 ; 0xf48cb
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf48ce
+ jmp near 04acah ; e9 f6 01 ; 0xf48d1 eltorito.c:864
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf48d4 eltorito.c:868
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf48d7
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf48da
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf48de
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf48e1
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf48e5
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48e8 eltorito.c:871
+ shr ax, 008h ; c1 e8 08 ; 0xf48eb
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf48ee
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf48f1
+ je short 048fbh ; 74 05 ; 0xf48f4
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf48f6
+ jne short 048feh ; 75 03 ; 0xf48f9
+ jmp near 04aech ; e9 ee 01 ; 0xf48fb eltorito.c:872
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf48fe eltorito.c:877
+ xor bx, bx ; 31 db ; 0xf4901
+ mov dx, ss ; 8c d2 ; 0xf4903
+ lea ax, [bp-024h] ; 8d 46 dc ; 0xf4905
+ call 09bb0h ; e8 a5 52 ; 0xf4908
+ mov word [bp-024h], strict word 00028h ; c7 46 dc 28 00 ; 0xf490b eltorito.c:878
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf4910 eltorito.c:879
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf4913
+ xchg ah, al ; 86 c4 ; 0xf4916
+ xchg dh, dl ; 86 d6 ; 0xf4918
+ xchg dx, ax ; 92 ; 0xf491a
+ mov word [bp-022h], ax ; 89 46 de ; 0xf491b
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf491e
+ mov ax, di ; 89 f8 ; 0xf4921 eltorito.c:880
+ xchg ah, al ; 86 c4 ; 0xf4923
+ mov word [bp-01dh], ax ; 89 46 e3 ; 0xf4925
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4928 eltorito.c:882
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf492b
+ mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf492f eltorito.c:883
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4935 eltorito.c:885
+ xor ah, ah ; 30 e4 ; 0xf4938
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf493a
+ mov bx, si ; 89 f3 ; 0xf493d
+ add bx, ax ; 01 c3 ; 0xf493f
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4941
+ xor ah, ah ; 30 e4 ; 0xf4945
+ add ax, ax ; 01 c0 ; 0xf4947
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf4949
+ push word [bp-016h] ; ff 76 ea ; 0xf494c
+ push word [bp-014h] ; ff 76 ec ; 0xf494f
+ push strict byte 00001h ; 6a 01 ; 0xf4952
+ mov ax, di ; 89 f8 ; 0xf4954
+ xor bx, bx ; 31 db ; 0xf4956
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4958
+ sal ax, 1 ; d1 e0 ; 0xf495b
+ rcl bx, 1 ; d1 d3 ; 0xf495d
+ loop 0495bh ; e2 fa ; 0xf495f
+ push bx ; 53 ; 0xf4961
+ push ax ; 50 ; 0xf4962
+ push strict byte 00000h ; 6a 00 ; 0xf4963
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4965
+ xor ah, ah ; 30 e4 ; 0xf4968
+ mov cx, ss ; 8c d1 ; 0xf496a
+ lea bx, [bp-024h] ; 8d 5e dc ; 0xf496c
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf496f
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf4972
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4975
+ mov dx, ax ; 89 c2 ; 0xf4979
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf497b eltorito.c:887
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf497e
+ mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf4982
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4986
+ shr bx, 1 ; d1 eb ; 0xf4989
+ rcr ax, 1 ; d1 d8 ; 0xf498b
+ loop 04989h ; e2 fa ; 0xf498d
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf498f eltorito.c:888
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf4992
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4995
+ test dl, dl ; 84 d2 ; 0xf4999 eltorito.c:890
+ je short 04a06h ; 74 69 ; 0xf499b
+ mov bx, 00da0h ; bb a0 0d ; 0xf499d eltorito.c:891
+ mov cx, ds ; 8c d9 ; 0xf49a0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf49a2
+ call 018bch ; e8 14 cf ; 0xf49a5
+ mov al, dl ; 88 d0 ; 0xf49a8
+ xor ah, ah ; 30 e4 ; 0xf49aa
+ push ax ; 50 ; 0xf49ac
+ push word [bp-00eh] ; ff 76 f2 ; 0xf49ad
+ push 0042ah ; 68 2a 04 ; 0xf49b0
+ push 003d8h ; 68 d8 03 ; 0xf49b3
+ push strict byte 00004h ; 6a 04 ; 0xf49b6
+ call 018ffh ; e8 44 cf ; 0xf49b8
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf49bb
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49be eltorito.c:892
+ xor ah, ah ; 30 e4 ; 0xf49c1
+ or ah, 00ch ; 80 cc 0c ; 0xf49c3
+ jmp near 04ad2h ; e9 09 01 ; 0xf49c6
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf49c9 eltorito.c:900
+ jnbe short 04a38h ; 77 6a ; 0xf49cc
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf49ce eltorito.c:903
+ xor dh, dh ; 30 f6 ; 0xf49d1
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf49d3
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf49d6
+ mov bx, si ; 89 f3 ; 0xf49d9
+ add bx, dx ; 01 d3 ; 0xf49db
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf49dd
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf49e1 eltorito.c:905
+ je short 04a3bh ; 74 55 ; 0xf49e4
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf49e6
+ je short 04a28h ; 74 3d ; 0xf49e9
+ test ax, ax ; 85 c0 ; 0xf49eb
+ jne short 04a25h ; 75 36 ; 0xf49ed
+ cmp bl, 0ffh ; 80 fb ff ; 0xf49ef eltorito.c:907
+ jne short 04a08h ; 75 14 ; 0xf49f2
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49f4 eltorito.c:908
+ xor ah, ah ; 30 e4 ; 0xf49f7
+ or ah, 0b4h ; 80 cc b4 ; 0xf49f9
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf49fc
+ xor al, al ; 30 c0 ; 0xf49ff eltorito.c:909
+ or AL, strict byte 001h ; 0c 01 ; 0xf4a01
+ jmp near 04ad2h ; e9 cc 00 ; 0xf4a03
+ jmp short 04a25h ; eb 1d ; 0xf4a06
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a08 eltorito.c:911
+ xor ah, ah ; 30 e4 ; 0xf4a0b
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a0d
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf4a10 eltorito.c:912
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a12
+ add si, ax ; 01 c6 ; 0xf4a15
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4a17
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a1b eltorito.c:913
+ xor al, al ; 30 c0 ; 0xf4a1e
+ or AL, strict byte 001h ; 0c 01 ; 0xf4a20
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a22
+ jmp near 04aech ; e9 c4 00 ; 0xf4a25 eltorito.c:914
+ test bl, bl ; 84 db ; 0xf4a28 eltorito.c:916
+ jne short 04a3dh ; 75 11 ; 0xf4a2a
+ or ah, 0b0h ; 80 cc b0 ; 0xf4a2c eltorito.c:917
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4a2f
+ mov byte [bp+018h], bl ; 88 5e 18 ; 0xf4a32 eltorito.c:918
+ jmp near 04ad5h ; e9 9d 00 ; 0xf4a35 eltorito.c:919
+ jmp near 04acah ; e9 8f 00 ; 0xf4a38
+ jmp short 04a67h ; eb 2a ; 0xf4a3b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a3d eltorito.c:920
+ xor ah, ah ; 30 e4 ; 0xf4a40
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a42
+ db 0feh, 0cbh
+ ; dec bl ; fe cb ; 0xf4a45 eltorito.c:921
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a47
+ add si, ax ; 01 c6 ; 0xf4a4a
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4a4c
+ test bl, bl ; 84 db ; 0xf4a50 eltorito.c:922
+ jne short 04a58h ; 75 04 ; 0xf4a52
+ xor ax, ax ; 31 c0 ; 0xf4a54
+ jmp short 04a5bh ; eb 03 ; 0xf4a56
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4a58
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4a5b
+ xor dl, dl ; 30 d2 ; 0xf4a5e
+ or dx, ax ; 09 c2 ; 0xf4a60
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf4a62
+ jmp short 04a25h ; eb be ; 0xf4a65 eltorito.c:923
+ test bl, bl ; 84 db ; 0xf4a67 eltorito.c:925
+ jne short 04a58h ; 75 ed ; 0xf4a69
+ xor al, al ; 30 c0 ; 0xf4a6b
+ jmp short 04a5bh ; eb ec ; 0xf4a6d
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4a6f eltorito.c:932
+ xor dh, dh ; 30 f6 ; 0xf4a72
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4a74
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a77
+ mov bx, si ; 89 f3 ; 0xf4a7a
+ add bx, dx ; 01 d3 ; 0xf4a7c
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4a7e
+ test bl, bl ; 84 db ; 0xf4a82 eltorito.c:934
+ je short 04a8bh ; 74 05 ; 0xf4a84
+ or ah, 0b1h ; 80 cc b1 ; 0xf4a86 eltorito.c:935
+ jmp short 04ad2h ; eb 47 ; 0xf4a89
+ je short 04aech ; 74 5f ; 0xf4a8b eltorito.c:957
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a8d eltorito.c:958
+ xor ah, ah ; 30 e4 ; 0xf4a90
+ jmp short 04a86h ; eb f2 ; 0xf4a92
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a94 eltorito.c:966
+ push ax ; 50 ; 0xf4a97
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4a98
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4a9b
+ mov bx, si ; 89 f3 ; 0xf4a9e
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4aa0
+ call 05965h ; e8 bf 0e ; 0xf4aa3
+ test ax, ax ; 85 c0 ; 0xf4aa6
+ je short 04aech ; 74 42 ; 0xf4aa8
+ jmp short 04acah ; eb 1e ; 0xf4aaa eltorito.c:967
+ or ah, 006h ; 80 cc 06 ; 0xf4aac eltorito.c:974
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4aaf
+ jmp short 04ae6h ; eb 32 ; 0xf4ab2 eltorito.c:975
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4ab4 eltorito.c:980
+ je short 04aech ; 74 33 ; 0xf4ab7
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4ab9
+ jc short 04acah ; 72 0c ; 0xf4abc
+ jbe short 04aech ; 76 2c ; 0xf4abe
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4ac0
+ jc short 04acah ; 72 05 ; 0xf4ac3
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4ac5
+ jbe short 04aech ; 76 22 ; 0xf4ac8
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4aca eltorito.c:1007
+ xor ah, ah ; 30 e4 ; 0xf4acd
+ or ah, 001h ; 80 cc 01 ; 0xf4acf
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4ad2
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ad5 eltorito.c:1009
+ shr ax, 008h ; c1 e8 08 ; 0xf4ad8
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4adb eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4ade
+ mov es, dx ; 8e c2 ; 0xf4ae1
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4ae3
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4ae6 eltorito.c:1011
+ jmp short 04b00h ; eb 14 ; 0xf4aea eltorito.c:1012
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4aec eltorito.c:1015
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4af0 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4af3
+ mov es, ax ; 8e c0 ; 0xf4af6
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4af8
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4afc eltorito.c:1018
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4b00 eltorito.c:1020
+ pop di ; 5f ; 0xf4b03
+ pop si ; 5e ; 0xf4b04
+ pop bp ; 5d ; 0xf4b05
+ retn ; c3 ; 0xf4b06
+ ; disGetNextSymbol 0xf4b07 LB 0x53c1 -> off=0x0 cb=000000000000004b uValue=00000000000f3507 'print_boot_device'
+print_boot_device: ; 0xf4b07 LB 0x4b
+ push bp ; 55 ; 0xf4b07 boot.c:109
+ mov bp, sp ; 89 e5 ; 0xf4b08
+ push cx ; 51 ; 0xf4b0a
+ test al, al ; 84 c0 ; 0xf4b0b boot.c:117
+ je short 04b14h ; 74 05 ; 0xf4b0d
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4b0f
+ jmp short 04b2eh ; eb 1a ; 0xf4b12 boot.c:118
+ test dl, dl ; 84 d2 ; 0xf4b14
+ je short 04b1dh ; 74 05 ; 0xf4b16
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4b18
+ jmp short 04b2eh ; eb 11 ; 0xf4b1b boot.c:119
+ test bl, 080h ; f6 c3 80 ; 0xf4b1d
+ jne short 04b26h ; 75 04 ; 0xf4b20
+ xor dh, dh ; 30 f6 ; 0xf4b22
+ jmp short 04b2eh ; eb 08 ; 0xf4b24 boot.c:120
+ test bl, 080h ; f6 c3 80 ; 0xf4b26
+ je short 04b4ch ; 74 21 ; 0xf4b29
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4b2b
+ mov bx, 00da0h ; bb a0 0d ; 0xf4b2e boot.c:123
+ mov cx, ds ; 8c d9 ; 0xf4b31
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b33
+ call 018bch ; e8 83 cd ; 0xf4b36
+ imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4b39
+ add dx, 00dc6h ; 81 c2 c6 0d ; 0xf4b3c
+ push dx ; 52 ; 0xf4b40
+ push 00494h ; 68 94 04 ; 0xf4b41
+ push strict byte 00004h ; 6a 04 ; 0xf4b44
+ call 018ffh ; e8 b6 cd ; 0xf4b46
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b49
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4b4c boot.c:124
+ pop cx ; 59 ; 0xf4b4f
+ pop bp ; 5d ; 0xf4b50
+ retn ; c3 ; 0xf4b51
+ ; disGetNextSymbol 0xf4b52 LB 0x5376 -> off=0x0 cb=0000000000000096 uValue=00000000000f3552 'print_boot_failure'
+print_boot_failure: ; 0xf4b52 LB 0x96
+ push bp ; 55 ; 0xf4b52 boot.c:131
+ mov bp, sp ; 89 e5 ; 0xf4b53
+ push si ; 56 ; 0xf4b55
+ mov ah, dl ; 88 d4 ; 0xf4b56
+ mov dl, cl ; 88 ca ; 0xf4b58
+ mov cl, bl ; 88 d9 ; 0xf4b5a boot.c:134
+ and cl, 07fh ; 80 e1 7f ; 0xf4b5c
+ xor ch, ch ; 30 ed ; 0xf4b5f
+ mov si, cx ; 89 ce ; 0xf4b61
+ test al, al ; 84 c0 ; 0xf4b63 boot.c:142
+ je short 04b82h ; 74 1b ; 0xf4b65
+ mov bx, 00da0h ; bb a0 0d ; 0xf4b67 boot.c:143
+ mov cx, ds ; 8c d9 ; 0xf4b6a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b6c
+ call 018bch ; e8 4a cd ; 0xf4b6f
+ push 00ddah ; 68 da 0d ; 0xf4b72
+ push 004a8h ; 68 a8 04 ; 0xf4b75
+ push strict byte 00004h ; 6a 04 ; 0xf4b78
+ call 018ffh ; e8 82 cd ; 0xf4b7a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4b7d
+ jmp short 04bc6h ; eb 44 ; 0xf4b80 boot.c:144
+ test ah, ah ; 84 e4 ; 0xf4b82
+ je short 04b96h ; 74 10 ; 0xf4b84
+ mov bx, 00da0h ; bb a0 0d ; 0xf4b86 boot.c:145
+ mov cx, ds ; 8c d9 ; 0xf4b89
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4b8b
+ call 018bch ; e8 2b cd ; 0xf4b8e
+ push 00de4h ; 68 e4 0d ; 0xf4b91
+ jmp short 04b75h ; eb df ; 0xf4b94
+ test bl, 080h ; f6 c3 80 ; 0xf4b96 boot.c:146
+ je short 04bach ; 74 11 ; 0xf4b99
+ mov bx, 00da0h ; bb a0 0d ; 0xf4b9b boot.c:147
+ mov cx, ds ; 8c d9 ; 0xf4b9e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4ba0
+ call 018bch ; e8 16 cd ; 0xf4ba3
+ push si ; 56 ; 0xf4ba6
+ push 00dd0h ; 68 d0 0d ; 0xf4ba7
+ jmp short 04bbbh ; eb 0f ; 0xf4baa boot.c:148
+ mov bx, 00da0h ; bb a0 0d ; 0xf4bac boot.c:149
+ mov cx, ds ; 8c d9 ; 0xf4baf
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bb1
+ call 018bch ; e8 05 cd ; 0xf4bb4
+ push si ; 56 ; 0xf4bb7
+ push 00dc6h ; 68 c6 0d ; 0xf4bb8
+ push 004bdh ; 68 bd 04 ; 0xf4bbb
+ push strict byte 00004h ; 6a 04 ; 0xf4bbe
+ call 018ffh ; e8 3c cd ; 0xf4bc0
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4bc3
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4bc6 boot.c:151
+ jne short 04be0h ; 75 14 ; 0xf4bca
+ test dl, dl ; 84 d2 ; 0xf4bcc boot.c:152
+ jne short 04bd5h ; 75 05 ; 0xf4bce
+ push 004d5h ; 68 d5 04 ; 0xf4bd0 boot.c:153
+ jmp short 04bd8h ; eb 03 ; 0xf4bd3 boot.c:154
+ push 004ffh ; 68 ff 04 ; 0xf4bd5 boot.c:155
+ push strict byte 00007h ; 6a 07 ; 0xf4bd8
+ call 018ffh ; e8 22 cd ; 0xf4bda
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4bdd
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4be0 boot.c:157
+ pop si ; 5e ; 0xf4be3
+ pop bp ; 5d ; 0xf4be4
+ retn 00002h ; c2 02 00 ; 0xf4be5
+ ; disGetNextSymbol 0xf4be8 LB 0x52e0 -> off=0x0 cb=0000000000000027 uValue=00000000000f35e8 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4be8 LB 0x27
+ push bp ; 55 ; 0xf4be8 boot.c:163
+ mov bp, sp ; 89 e5 ; 0xf4be9
+ push bx ; 53 ; 0xf4beb
+ push cx ; 51 ; 0xf4bec
+ push dx ; 52 ; 0xf4bed
+ mov dx, ax ; 89 c2 ; 0xf4bee
+ mov bx, 00da0h ; bb a0 0d ; 0xf4bf0 boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4bf3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bf5
+ call 018bch ; e8 c1 cc ; 0xf4bf8
+ push dx ; 52 ; 0xf4bfb
+ push 00534h ; 68 34 05 ; 0xf4bfc
+ push strict byte 00004h ; 6a 04 ; 0xf4bff
+ call 018ffh ; e8 fb cc ; 0xf4c01
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c04
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4c07 boot.c:167
+ pop dx ; 5a ; 0xf4c0a
+ pop cx ; 59 ; 0xf4c0b
+ pop bx ; 5b ; 0xf4c0c
+ pop bp ; 5d ; 0xf4c0d
+ retn ; c3 ; 0xf4c0e
+ ; disGetNextSymbol 0xf4c0f LB 0x52b9 -> off=0x0 cb=000000000000025b uValue=00000000000f360f 'int19_function'
+int19_function: ; 0xf4c0f LB 0x25b
+ push bp ; 55 ; 0xf4c0f boot.c:170
+ mov bp, sp ; 89 e5 ; 0xf4c10
+ push si ; 56 ; 0xf4c12
+ push di ; 57 ; 0xf4c13
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf4c14
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4c17 boot.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4c1a
+ mov es, ax ; 8e c0 ; 0xf4c1d
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf4c1f
+ mov di, cx ; 89 cf ; 0xf4c22 boot.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4c24 boot.c:181
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4c28 boot.c:204
+ call 01650h ; e8 22 ca ; 0xf4c2b
+ mov dl, al ; 88 c2 ; 0xf4c2e
+ xor dh, dh ; 30 f6 ; 0xf4c30
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4c32 boot.c:205
+ call 01650h ; e8 18 ca ; 0xf4c35
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4c38
+ xor ah, ah ; 30 e4 ; 0xf4c3a
+ sal ax, 004h ; c1 e0 04 ; 0xf4c3c
+ or dx, ax ; 09 c2 ; 0xf4c3f
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c41 boot.c:206
+ call 01650h ; e8 09 ca ; 0xf4c44
+ and AL, strict byte 00fh ; 24 0f ; 0xf4c47
+ xor ah, ah ; 30 e4 ; 0xf4c49
+ sal ax, 00ch ; c1 e0 0c ; 0xf4c4b
+ or dx, ax ; 09 c2 ; 0xf4c4e
+ mov bx, 0037dh ; bb 7d 03 ; 0xf4c50 boot.c:38
+ mov es, cx ; 8e c1 ; 0xf4c53
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4c55
+ test al, al ; 84 c0 ; 0xf4c58 boot.c:39
+ je short 04c60h ; 74 04 ; 0xf4c5a
+ mov dl, al ; 88 c2 ; 0xf4c5c boot.c:38
+ xor dh, dh ; 30 f6 ; 0xf4c5e boot.c:39
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4c60 boot.c:210
+ jne short 04c76h ; 75 10 ; 0xf4c64
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4c66 boot.c:211
+ call 01650h ; e8 e4 c9 ; 0xf4c69
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4c6c
+ xor ah, ah ; 30 e4 ; 0xf4c6e
+ sar ax, 004h ; c1 f8 04 ; 0xf4c70
+ call 0787eh ; e8 08 2c ; 0xf4c73
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4c76 boot.c:213
+ jne short 04c7fh ; 75 03 ; 0xf4c7a
+ shr dx, 004h ; c1 ea 04 ; 0xf4c7c
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4c7f boot.c:214
+ jne short 04c88h ; 75 03 ; 0xf4c83
+ shr dx, 008h ; c1 ea 08 ; 0xf4c85
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4c88 boot.c:215
+ jne short 04c91h ; 75 03 ; 0xf4c8c
+ shr dx, 00ch ; c1 ea 0c ; 0xf4c8e
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4c91 boot.c:216
+ jnc short 04c9ah ; 73 04 ; 0xf4c94
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4c96
+ xor al, al ; 30 c0 ; 0xf4c9a boot.c:217
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4c9c
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4c9f
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4ca2 boot.c:218
+ mov bx, 00da0h ; bb a0 0d ; 0xf4ca5 boot.c:219
+ mov cx, ds ; 8c d9 ; 0xf4ca8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4caa
+ call 018bch ; e8 0c cc ; 0xf4cad
+ push dx ; 52 ; 0xf4cb0
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4cb1
+ xor ah, ah ; 30 e4 ; 0xf4cb4
+ push ax ; 50 ; 0xf4cb6
+ push 00554h ; 68 54 05 ; 0xf4cb7
+ push strict byte 00004h ; 6a 04 ; 0xf4cba
+ call 018ffh ; e8 40 cc ; 0xf4cbc
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4cbf
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4cc2 boot.c:221
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4cc5
+ jc short 04cd8h ; 72 0e ; 0xf4cc8
+ jbe short 04ce7h ; 76 1b ; 0xf4cca
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4ccc
+ je short 04d03h ; 74 32 ; 0xf4ccf
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4cd1
+ je short 04cf9h ; 74 23 ; 0xf4cd4
+ jmp short 04d32h ; eb 5a ; 0xf4cd6
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4cd8
+ jne short 04d32h ; 75 55 ; 0xf4cdb
+ xor al, al ; 30 c0 ; 0xf4cdd boot.c:223
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4cdf
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4ce2 boot.c:224
+ jmp short 04d47h ; eb 60 ; 0xf4ce5 boot.c:225
+ mov bx, 0037ch ; bb 7c 03 ; 0xf4ce7 boot.c:38
+ mov es, di ; 8e c7 ; 0xf4cea
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4cec
+ add AL, strict byte 080h ; 04 80 ; 0xf4cef boot.c:231
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4cf1
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4cf4 boot.c:232
+ jmp short 04d47h ; eb 4e ; 0xf4cf7 boot.c:233
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4cf9 boot.c:236
+ mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4cfd boot.c:237
+ jmp short 04d0dh ; eb 0a ; 0xf4d01 boot.c:238
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4d03 boot.c:239
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4d07 boot.c:255
+ je short 04d47h ; 74 3a ; 0xf4d0b
+ call 03d33h ; e8 23 f0 ; 0xf4d0d boot.c:256
+ mov dx, ax ; 89 c2 ; 0xf4d10
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4d12 boot.c:259
+ je short 04d39h ; 74 23 ; 0xf4d14
+ call 04be8h ; e8 cf fe ; 0xf4d16 boot.c:260
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4d19 boot.c:261
+ xor ah, ah ; 30 e4 ; 0xf4d1c
+ push ax ; 50 ; 0xf4d1e
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d1f
+ xor bh, bh ; 30 ff ; 0xf4d22
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d24
+ xor dh, dh ; 30 f6 ; 0xf4d27
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d29
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4d2c
+ call 04b52h ; e8 20 fe ; 0xf4d2f
+ xor ax, ax ; 31 c0 ; 0xf4d32
+ xor dx, dx ; 31 d2 ; 0xf4d34
+ jmp near 04e63h ; e9 2a 01 ; 0xf4d36
+ mov bx, 00372h ; bb 72 03 ; 0xf4d39 boot.c:48
+ mov es, di ; 8e c7 ; 0xf4d3c
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4d3e
+ shr dx, 008h ; c1 ea 08 ; 0xf4d41 boot.c:266
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf4d44
+ cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4d47 boot.c:272
+ jne short 04da2h ; 75 55 ; 0xf4d4b
+ xor si, si ; 31 f6 ; 0xf4d4d boot.c:275
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4d4f
+ mov es, ax ; 8e c0 ; 0xf4d52
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4d54 boot.c:276
+ jne short 04d19h ; 75 be ; 0xf4d59
+ mov cx, ax ; 89 c1 ; 0xf4d5b boot.c:282
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4d5d
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4d61 boot.c:283
+ jne short 04d19h ; 75 b0 ; 0xf4d67
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4d69
+ jne short 04d19h ; 75 a9 ; 0xf4d6e
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4d70 boot.c:285
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4d74
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4d77
+ cmp ax, 06568h ; 3d 68 65 ; 0xf4d7b boot.c:286
+ jne short 04da4h ; 75 24 ; 0xf4d7e
+ cmp dx, 07445h ; 81 fa 45 74 ; 0xf4d80
+ jne short 04da4h ; 75 1e ; 0xf4d84
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4d86 boot.c:288
+ xor bh, bh ; 30 ff ; 0xf4d89
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4d8b
+ xor dh, dh ; 30 f6 ; 0xf4d8e
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4d90
+ xor ah, ah ; 30 e4 ; 0xf4d93
+ call 04b07h ; e8 6f fd ; 0xf4d95
+ mov word [bp-010h], strict word 00006h ; c7 46 f0 06 00 ; 0xf4d98 boot.c:289
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4d9d
+ jmp short 04dc3h ; eb 21 ; 0xf4da0 boot.c:292
+ jmp short 04dc9h ; eb 25 ; 0xf4da2
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4da4 boot.c:295
+ xor bh, bh ; 30 ff ; 0xf4da7
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4da9
+ xor dh, dh ; 30 f6 ; 0xf4dac
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4dae
+ xor ah, ah ; 30 e4 ; 0xf4db1
+ call 04b07h ; e8 51 fd ; 0xf4db3
+ sti ; fb ; 0xf4db6 boot.c:296
+ mov word [bp-00eh], cx ; 89 4e f2 ; 0xf4db7 boot.c:297
+ mov es, cx ; 8e c1 ; 0xf4dba
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4dbc
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf4dc0
+ call far [bp-010h] ; ff 5e f0 ; 0xf4dc3 boot.c:298
+ jmp near 04d19h ; e9 50 ff ; 0xf4dc6 boot.c:301
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dc9 boot.c:309
+ jne short 04df6h ; 75 27 ; 0xf4dcd
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4dcf
+ jne short 04df6h ; 75 21 ; 0xf4dd3
+ mov si, 007c0h ; be c0 07 ; 0xf4dd5 boot.c:310
+ mov es, si ; 8e c6 ; 0xf4dd8 boot.c:312
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4dda
+ mov ax, 00201h ; b8 01 02 ; 0xf4ddd
+ mov DH, strict byte 000h ; b6 00 ; 0xf4de0
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4de2
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4de5
+ int 013h ; cd 13 ; 0xf4de7
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4de9
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4dec
+ test ax, ax ; 85 c0 ; 0xf4def boot.c:313
+ je short 04df6h ; 74 03 ; 0xf4df1
+ jmp near 04d19h ; e9 23 ff ; 0xf4df3
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4df6 boot.c:328
+ je short 04e00h ; 74 04 ; 0xf4dfa
+ xor al, al ; 30 c0 ; 0xf4dfc
+ jmp short 04e02h ; eb 02 ; 0xf4dfe boot.c:329
+ mov AL, strict byte 001h ; b0 01 ; 0xf4e00
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4e02 boot.c:333
+ je short 04e0ah ; 74 02 ; 0xf4e06
+ mov AL, strict byte 001h ; b0 01 ; 0xf4e08 boot.c:334
+ xor bx, bx ; 31 db ; 0xf4e0a boot.c:48
+ mov es, si ; 8e c6 ; 0xf4e0c
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf4e0e
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4e11 boot.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4e14
+ cmp cx, dx ; 39 d1 ; 0xf4e17 boot.c:49
+ je short 04e2ah ; 74 0f ; 0xf4e19
+ test al, al ; 84 c0 ; 0xf4e1b
+ jne short 04e42h ; 75 23 ; 0xf4e1d
+ mov bx, 001feh ; bb fe 01 ; 0xf4e1f boot.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4e22
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4e25 boot.c:49
+ je short 04e42h ; 74 18 ; 0xf4e28
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4e2a boot.c:340
+ xor ah, ah ; 30 e4 ; 0xf4e2d
+ push ax ; 50 ; 0xf4e2f
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e30
+ xor bh, bh ; 30 ff ; 0xf4e33
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e35
+ xor dh, dh ; 30 f6 ; 0xf4e38
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e3a
+ xor cx, cx ; 31 c9 ; 0xf4e3d
+ jmp near 04d2fh ; e9 ed fe ; 0xf4e3f
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e42 boot.c:346
+ xor bh, bh ; 30 ff ; 0xf4e45
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e47
+ xor dh, dh ; 30 f6 ; 0xf4e4a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e4c
+ xor ah, ah ; 30 e4 ; 0xf4e4f
+ call 04b07h ; e8 b3 fc ; 0xf4e51
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4e54 boot.c:352
+ xor ah, ah ; 30 e4 ; 0xf4e57
+ mov bx, ax ; 89 c3 ; 0xf4e59
+ xor dx, dx ; 31 d2 ; 0xf4e5b
+ xor al, al ; 30 c0 ; 0xf4e5d
+ add ax, si ; 01 f0 ; 0xf4e5f
+ adc dx, bx ; 11 da ; 0xf4e61
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4e63 boot.c:353
+ pop di ; 5f ; 0xf4e66
+ pop si ; 5e ; 0xf4e67
+ pop bp ; 5d ; 0xf4e68
+ retn ; c3 ; 0xf4e69
+ ; disGetNextSymbol 0xf4e6a LB 0x505e -> off=0x0 cb=0000000000000013 uValue=00000000000f386a 'keyboard_panic'
+keyboard_panic: ; 0xf4e6a LB 0x13
+ push bp ; 55 ; 0xf4e6a keyboard.c:194
+ mov bp, sp ; 89 e5 ; 0xf4e6b
+ push ax ; 50 ; 0xf4e6d keyboard.c:199
+ push 00574h ; 68 74 05 ; 0xf4e6e
+ push strict byte 00007h ; 6a 07 ; 0xf4e71
+ call 018ffh ; e8 89 ca ; 0xf4e73
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4e76
+ mov sp, bp ; 89 ec ; 0xf4e79 keyboard.c:200
+ pop bp ; 5d ; 0xf4e7b
+ retn ; c3 ; 0xf4e7c
+ ; disGetNextSymbol 0xf4e7d LB 0x504b -> off=0x0 cb=000000000000026a uValue=00000000000f387d 'keyboard_init'
+keyboard_init: ; 0xf4e7d LB 0x26a
+ push bp ; 55 ; 0xf4e7d keyboard.c:208
+ mov bp, sp ; 89 e5 ; 0xf4e7e
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4e80 keyboard.c:214
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e82
+ out DX, AL ; ee ; 0xf4e85
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4e86 keyboard.c:217
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4e89 keyboard.c:218
+ in AL, DX ; ec ; 0xf4e8c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4e8d
+ test AL, strict byte 002h ; a8 02 ; 0xf4e8f
+ je short 04ea0h ; 74 0d ; 0xf4e91
+ dec bx ; 4b ; 0xf4e93
+ test bx, bx ; 85 db ; 0xf4e94
+ jbe short 04ea0h ; 76 08 ; 0xf4e96
+ xor al, al ; 30 c0 ; 0xf4e98
+ mov dx, 00080h ; ba 80 00 ; 0xf4e9a
+ out DX, AL ; ee ; 0xf4e9d
+ jmp short 04e89h ; eb e9 ; 0xf4e9e
+ test bx, bx ; 85 db ; 0xf4ea0 keyboard.c:219
+ jne short 04ea9h ; 75 05 ; 0xf4ea2
+ xor ax, ax ; 31 c0 ; 0xf4ea4
+ call 04e6ah ; e8 c1 ff ; 0xf4ea6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ea9 keyboard.c:222
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4eac keyboard.c:223
+ in AL, DX ; ec ; 0xf4eaf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4eb0
+ test AL, strict byte 001h ; a8 01 ; 0xf4eb2
+ jne short 04ec3h ; 75 0d ; 0xf4eb4
+ dec bx ; 4b ; 0xf4eb6
+ test bx, bx ; 85 db ; 0xf4eb7
+ jbe short 04ec3h ; 76 08 ; 0xf4eb9
+ mov AL, strict byte 001h ; b0 01 ; 0xf4ebb
+ mov dx, 00080h ; ba 80 00 ; 0xf4ebd
+ out DX, AL ; ee ; 0xf4ec0
+ jmp short 04each ; eb e9 ; 0xf4ec1
+ test bx, bx ; 85 db ; 0xf4ec3 keyboard.c:224
+ jne short 04ecdh ; 75 06 ; 0xf4ec5
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4ec7
+ call 04e6ah ; e8 9d ff ; 0xf4eca
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4ecd keyboard.c:227
+ in AL, DX ; ec ; 0xf4ed0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ed1
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4ed3
+ je short 04edeh ; 74 06 ; 0xf4ed6
+ mov ax, 003dfh ; b8 df 03 ; 0xf4ed8 keyboard.c:228
+ call 04e6ah ; e8 8c ff ; 0xf4edb
+ mov AL, strict byte 0abh ; b0 ab ; 0xf4ede keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ee0
+ out DX, AL ; ee ; 0xf4ee3
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ee4 keyboard.c:235
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ee7 keyboard.c:236
+ in AL, DX ; ec ; 0xf4eea
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4eeb
+ test AL, strict byte 002h ; a8 02 ; 0xf4eed
+ je short 04efeh ; 74 0d ; 0xf4eef
+ dec bx ; 4b ; 0xf4ef1
+ test bx, bx ; 85 db ; 0xf4ef2
+ jbe short 04efeh ; 76 08 ; 0xf4ef4
+ mov AL, strict byte 010h ; b0 10 ; 0xf4ef6
+ mov dx, 00080h ; ba 80 00 ; 0xf4ef8
+ out DX, AL ; ee ; 0xf4efb
+ jmp short 04ee7h ; eb e9 ; 0xf4efc
+ test bx, bx ; 85 db ; 0xf4efe keyboard.c:237
+ jne short 04f08h ; 75 06 ; 0xf4f00
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4f02
+ call 04e6ah ; e8 62 ff ; 0xf4f05
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f08 keyboard.c:240
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f0b keyboard.c:241
+ in AL, DX ; ec ; 0xf4f0e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f0f
+ test AL, strict byte 001h ; a8 01 ; 0xf4f11
+ jne short 04f22h ; 75 0d ; 0xf4f13
+ dec bx ; 4b ; 0xf4f15
+ test bx, bx ; 85 db ; 0xf4f16
+ jbe short 04f22h ; 76 08 ; 0xf4f18
+ mov AL, strict byte 011h ; b0 11 ; 0xf4f1a
+ mov dx, 00080h ; ba 80 00 ; 0xf4f1c
+ out DX, AL ; ee ; 0xf4f1f
+ jmp short 04f0bh ; eb e9 ; 0xf4f20
+ test bx, bx ; 85 db ; 0xf4f22 keyboard.c:242
+ jne short 04f2ch ; 75 06 ; 0xf4f24
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4f26
+ call 04e6ah ; e8 3e ff ; 0xf4f29
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f2c keyboard.c:246
+ in AL, DX ; ec ; 0xf4f2f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f30
+ test ax, ax ; 85 c0 ; 0xf4f32
+ je short 04f3ch ; 74 06 ; 0xf4f34
+ mov ax, 003e0h ; b8 e0 03 ; 0xf4f36 keyboard.c:247
+ call 04e6ah ; e8 2e ff ; 0xf4f39
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf4f3c keyboard.c:253
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f3e
+ out DX, AL ; ee ; 0xf4f41
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f42 keyboard.c:256
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f45 keyboard.c:257
+ in AL, DX ; ec ; 0xf4f48
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f49
+ test AL, strict byte 002h ; a8 02 ; 0xf4f4b
+ je short 04f5ch ; 74 0d ; 0xf4f4d
+ dec bx ; 4b ; 0xf4f4f
+ test bx, bx ; 85 db ; 0xf4f50
+ jbe short 04f5ch ; 76 08 ; 0xf4f52
+ mov AL, strict byte 020h ; b0 20 ; 0xf4f54
+ mov dx, 00080h ; ba 80 00 ; 0xf4f56
+ out DX, AL ; ee ; 0xf4f59
+ jmp short 04f45h ; eb e9 ; 0xf4f5a
+ test bx, bx ; 85 db ; 0xf4f5c keyboard.c:258
+ jne short 04f66h ; 75 06 ; 0xf4f5e
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf4f60
+ call 04e6ah ; e8 04 ff ; 0xf4f63
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f66 keyboard.c:261
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f69 keyboard.c:262
+ in AL, DX ; ec ; 0xf4f6c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f6d
+ test AL, strict byte 001h ; a8 01 ; 0xf4f6f
+ jne short 04f80h ; 75 0d ; 0xf4f71
+ dec bx ; 4b ; 0xf4f73
+ test bx, bx ; 85 db ; 0xf4f74
+ jbe short 04f80h ; 76 08 ; 0xf4f76
+ mov AL, strict byte 021h ; b0 21 ; 0xf4f78
+ mov dx, 00080h ; ba 80 00 ; 0xf4f7a
+ out DX, AL ; ee ; 0xf4f7d
+ jmp short 04f69h ; eb e9 ; 0xf4f7e
+ test bx, bx ; 85 db ; 0xf4f80 keyboard.c:263
+ jne short 04f8ah ; 75 06 ; 0xf4f82
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf4f84
+ call 04e6ah ; e8 e0 fe ; 0xf4f87
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4f8a keyboard.c:266
+ in AL, DX ; ec ; 0xf4f8d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f8e
+ cmp ax, 000fah ; 3d fa 00 ; 0xf4f90
+ je short 04f9bh ; 74 06 ; 0xf4f93
+ mov ax, 003e1h ; b8 e1 03 ; 0xf4f95 keyboard.c:267
+ call 04e6ah ; e8 cf fe ; 0xf4f98
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f9b keyboard.c:271
+ in AL, DX ; ec ; 0xf4f9e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f9f
+ test AL, strict byte 001h ; a8 01 ; 0xf4fa1
+ jne short 04fadh ; 75 08 ; 0xf4fa3
+ mov AL, strict byte 031h ; b0 31 ; 0xf4fa5
+ mov dx, 00080h ; ba 80 00 ; 0xf4fa7
+ out DX, AL ; ee ; 0xf4faa
+ jmp short 04f9bh ; eb ee ; 0xf4fab
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fad keyboard.c:273
+ in AL, DX ; ec ; 0xf4fb0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fb1
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4fb3
+ je short 04fc6h ; 74 0e ; 0xf4fb6
+ in AL, DX ; ec ; 0xf4fb8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fb9
+ cmp ax, 000aah ; 3d aa 00 ; 0xf4fbb
+ je short 04fc6h ; 74 06 ; 0xf4fbe
+ mov ax, 003e2h ; b8 e2 03 ; 0xf4fc0 keyboard.c:274
+ call 04e6ah ; e8 a4 fe ; 0xf4fc3
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf4fc6 keyboard.c:278
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fc8
+ out DX, AL ; ee ; 0xf4fcb
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fcc keyboard.c:281
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fcf keyboard.c:282
+ in AL, DX ; ec ; 0xf4fd2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fd3
+ test AL, strict byte 002h ; a8 02 ; 0xf4fd5
+ je short 04fe6h ; 74 0d ; 0xf4fd7
+ dec bx ; 4b ; 0xf4fd9
+ test bx, bx ; 85 db ; 0xf4fda
+ jbe short 04fe6h ; 76 08 ; 0xf4fdc
+ mov AL, strict byte 040h ; b0 40 ; 0xf4fde
+ mov dx, 00080h ; ba 80 00 ; 0xf4fe0
+ out DX, AL ; ee ; 0xf4fe3
+ jmp short 04fcfh ; eb e9 ; 0xf4fe4
+ test bx, bx ; 85 db ; 0xf4fe6 keyboard.c:283
+ jne short 04ff0h ; 75 06 ; 0xf4fe8
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf4fea
+ call 04e6ah ; e8 7a fe ; 0xf4fed
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ff0 keyboard.c:286
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ff3 keyboard.c:287
+ in AL, DX ; ec ; 0xf4ff6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ff7
+ test AL, strict byte 001h ; a8 01 ; 0xf4ff9
+ jne short 0500ah ; 75 0d ; 0xf4ffb
+ dec bx ; 4b ; 0xf4ffd
+ test bx, bx ; 85 db ; 0xf4ffe
+ jbe short 0500ah ; 76 08 ; 0xf5000
+ mov AL, strict byte 041h ; b0 41 ; 0xf5002
+ mov dx, 00080h ; ba 80 00 ; 0xf5004
+ out DX, AL ; ee ; 0xf5007
+ jmp short 04ff3h ; eb e9 ; 0xf5008
+ test bx, bx ; 85 db ; 0xf500a keyboard.c:288
+ jne short 05014h ; 75 06 ; 0xf500c
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf500e
+ call 04e6ah ; e8 56 fe ; 0xf5011
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5014 keyboard.c:291
+ in AL, DX ; ec ; 0xf5017
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5018
+ cmp ax, 000fah ; 3d fa 00 ; 0xf501a
+ je short 05025h ; 74 06 ; 0xf501d
+ mov ax, 003e3h ; b8 e3 03 ; 0xf501f keyboard.c:292
+ call 04e6ah ; e8 45 fe ; 0xf5022
+ mov AL, strict byte 060h ; b0 60 ; 0xf5025 keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5027
+ out DX, AL ; ee ; 0xf502a
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf502b keyboard.c:299
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf502e keyboard.c:300
+ in AL, DX ; ec ; 0xf5031
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5032
+ test AL, strict byte 002h ; a8 02 ; 0xf5034
+ je short 05045h ; 74 0d ; 0xf5036
+ dec bx ; 4b ; 0xf5038
+ test bx, bx ; 85 db ; 0xf5039
+ jbe short 05045h ; 76 08 ; 0xf503b
+ mov AL, strict byte 050h ; b0 50 ; 0xf503d
+ mov dx, 00080h ; ba 80 00 ; 0xf503f
+ out DX, AL ; ee ; 0xf5042
+ jmp short 0502eh ; eb e9 ; 0xf5043
+ test bx, bx ; 85 db ; 0xf5045 keyboard.c:301
+ jne short 0504fh ; 75 06 ; 0xf5047
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf5049
+ call 04e6ah ; e8 1b fe ; 0xf504c
+ mov AL, strict byte 065h ; b0 65 ; 0xf504f keyboard.c:304
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5051
+ out DX, AL ; ee ; 0xf5054
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5055 keyboard.c:307
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5058 keyboard.c:308
+ in AL, DX ; ec ; 0xf505b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf505c
+ test AL, strict byte 002h ; a8 02 ; 0xf505e
+ je short 0506fh ; 74 0d ; 0xf5060
+ dec bx ; 4b ; 0xf5062
+ test bx, bx ; 85 db ; 0xf5063
+ jbe short 0506fh ; 76 08 ; 0xf5065
+ mov AL, strict byte 060h ; b0 60 ; 0xf5067
+ mov dx, 00080h ; ba 80 00 ; 0xf5069
+ out DX, AL ; ee ; 0xf506c
+ jmp short 05058h ; eb e9 ; 0xf506d
+ test bx, bx ; 85 db ; 0xf506f keyboard.c:309
+ jne short 05079h ; 75 06 ; 0xf5071
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf5073
+ call 04e6ah ; e8 f1 fd ; 0xf5076
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf5079 keyboard.c:312
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf507b
+ out DX, AL ; ee ; 0xf507e
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf507f keyboard.c:315
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5082 keyboard.c:316
+ in AL, DX ; ec ; 0xf5085
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5086
+ test AL, strict byte 002h ; a8 02 ; 0xf5088
+ je short 05099h ; 74 0d ; 0xf508a
+ dec bx ; 4b ; 0xf508c
+ test bx, bx ; 85 db ; 0xf508d
+ jbe short 05099h ; 76 08 ; 0xf508f
+ mov AL, strict byte 070h ; b0 70 ; 0xf5091
+ mov dx, 00080h ; ba 80 00 ; 0xf5093
+ out DX, AL ; ee ; 0xf5096
+ jmp short 05082h ; eb e9 ; 0xf5097
+ test bx, bx ; 85 db ; 0xf5099 keyboard.c:317
+ jne short 050a3h ; 75 06 ; 0xf509b
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf509d
+ call 04e6ah ; e8 c7 fd ; 0xf50a0
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50a3 keyboard.c:320
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50a6 keyboard.c:321
+ in AL, DX ; ec ; 0xf50a9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50aa
+ test AL, strict byte 001h ; a8 01 ; 0xf50ac
+ jne short 050bdh ; 75 0d ; 0xf50ae
+ dec bx ; 4b ; 0xf50b0
+ test bx, bx ; 85 db ; 0xf50b1
+ jbe short 050bdh ; 76 08 ; 0xf50b3
+ mov AL, strict byte 071h ; b0 71 ; 0xf50b5
+ mov dx, 00080h ; ba 80 00 ; 0xf50b7
+ out DX, AL ; ee ; 0xf50ba
+ jmp short 050a6h ; eb e9 ; 0xf50bb
+ test bx, bx ; 85 db ; 0xf50bd keyboard.c:322
+ jne short 050c7h ; 75 06 ; 0xf50bf
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf50c1
+ call 04e6ah ; e8 a3 fd ; 0xf50c4
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50c7 keyboard.c:325
+ in AL, DX ; ec ; 0xf50ca
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50cb
+ cmp ax, 000fah ; 3d fa 00 ; 0xf50cd
+ je short 050d8h ; 74 06 ; 0xf50d0
+ mov ax, 003e4h ; b8 e4 03 ; 0xf50d2 keyboard.c:326
+ call 04e6ah ; e8 92 fd ; 0xf50d5
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf50d8 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50da
+ out DX, AL ; ee ; 0xf50dd
+ xor ax, ax ; 31 c0 ; 0xf50de keyboard.c:335
+ call 06511h ; e8 2e 14 ; 0xf50e0
+ mov sp, bp ; 89 ec ; 0xf50e3 keyboard.c:336
+ pop bp ; 5d ; 0xf50e5
+ retn ; c3 ; 0xf50e6
+ ; disGetNextSymbol 0xf50e7 LB 0x4de1 -> off=0x0 cb=0000000000000053 uValue=00000000000f3ae7 'enqueue_key'
+enqueue_key: ; 0xf50e7 LB 0x53
+ push bx ; 53 ; 0xf50e7 keyboard.c:339
+ push cx ; 51 ; 0xf50e8
+ push si ; 56 ; 0xf50e9
+ push di ; 57 ; 0xf50ea
+ push bp ; 55 ; 0xf50eb
+ mov bp, sp ; 89 e5 ; 0xf50ec
+ mov dh, al ; 88 c6 ; 0xf50ee
+ mov bx, 00080h ; bb 80 00 ; 0xf50f0 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf50f3
+ mov es, ax ; 8e c0 ; 0xf50f6
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf50f8
+ mov bx, 00082h ; bb 82 00 ; 0xf50fb keyboard.c:48
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf50fe
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5101 keyboard.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf5104
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5107 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf510a
+ mov bx, ax ; 89 c3 ; 0xf510d keyboard.c:354
+ inc ax ; 40 ; 0xf510f keyboard.c:355
+ inc ax ; 40 ; 0xf5110
+ cmp ax, si ; 39 f0 ; 0xf5111 keyboard.c:356
+ jc short 05117h ; 72 02 ; 0xf5113
+ mov ax, di ; 89 f8 ; 0xf5115 keyboard.c:357
+ cmp ax, cx ; 39 c8 ; 0xf5117 keyboard.c:359
+ jne short 0511fh ; 75 04 ; 0xf5119
+ xor ax, cx ; 31 c8 ; 0xf511b keyboard.c:360
+ jmp short 05134h ; eb 15 ; 0xf511d
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf511f keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf5122
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5124
+ inc bx ; 43 ; 0xf5127 keyboard.c:363
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5128 keyboard.c:43
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf512b keyboard.c:53
+ mov word [es:bx], ax ; 26 89 07 ; 0xf512e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5131 keyboard.c:365
+ pop bp ; 5d ; 0xf5134 keyboard.c:366
+ pop di ; 5f ; 0xf5135
+ pop si ; 5e ; 0xf5136
+ pop cx ; 59 ; 0xf5137
+ pop bx ; 5b ; 0xf5138
+ retn ; c3 ; 0xf5139
+ ; disGetNextSymbol 0xf513a LB 0x4d8e -> off=0x35 cb=00000000000003c4 uValue=00000000000f3b6f 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 0e7h, 053h, 026h, 052h, 0f4h, 051h, 0f4h, 051h, 086h, 052h, 0cfh, 051h, 0f7h, 052h, 052h
+ db 053h, 0cch, 053h, 0b1h, 053h, 055h, 052h, 0f4h, 051h, 0f4h, 051h, 0d4h, 052h, 0e6h, 051h, 03ah
+ db 053h, 09ch, 053h, 0c7h, 053h
+int09_function: ; 0xf516f LB 0x3c4
+ push bp ; 55 ; 0xf516f keyboard.c:371
+ mov bp, sp ; 89 e5 ; 0xf5170
+ push si ; 56 ; 0xf5172
+ push di ; 57 ; 0xf5173
+ push ax ; 50 ; 0xf5174
+ push ax ; 50 ; 0xf5175
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5176 keyboard.c:382
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf5179
+ test al, al ; 84 c0 ; 0xf517c keyboard.c:384
+ jne short 05199h ; 75 19 ; 0xf517e
+ mov bx, 00da0h ; bb a0 0d ; 0xf5180 keyboard.c:385
+ mov cx, ds ; 8c d9 ; 0xf5183
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5185
+ call 018bch ; e8 31 c7 ; 0xf5188
+ push 00587h ; 68 87 05 ; 0xf518b
+ push strict byte 00004h ; 6a 04 ; 0xf518e
+ call 018ffh ; e8 6c c7 ; 0xf5190
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5193
+ jmp near 052cdh ; e9 34 01 ; 0xf5196 keyboard.c:386
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5199 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf519c
+ mov es, ax ; 8e c0 ; 0xf519f
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf51a1
+ mov dl, bl ; 88 da ; 0xf51a4 keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf51a6 keyboard.c:38
+ mov bh, byte [es:si] ; 26 8a 3c ; 0xf51a9
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf51ac keyboard.c:39
+ mov si, strict word 00017h ; be 17 00 ; 0xf51af keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf51b2
+ mov dh, ah ; 88 e6 ; 0xf51b5 keyboard.c:39
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf51b7 keyboard.c:394
+ push CS ; 0e ; 0xf51ba
+ pop ES ; 07 ; 0xf51bb
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf51bc
+ mov di, 0513ah ; bf 3a 51 ; 0xf51bf
+ repne scasb ; f2 ae ; 0xf51c2
+ sal cx, 1 ; d1 e1 ; 0xf51c4
+ mov di, cx ; 89 cf ; 0xf51c6
+ mov cx, word [cs:di+0514bh] ; 2e 8b 8d 4b 51 ; 0xf51c8
+ jmp cx ; ff e1 ; 0xf51cd
+ xor dh, 040h ; 80 f6 40 ; 0xf51cf keyboard.c:396
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf51d2 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51d5
+ mov es, ax ; 8e c0 ; 0xf51d8
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf51da
+ or dl, 040h ; 80 ca 40 ; 0xf51dd keyboard.c:398
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51e0 keyboard.c:43
+ jmp near 053c1h ; e9 db 01 ; 0xf51e3
+ and dl, 0bfh ; 80 e2 bf ; 0xf51e6 keyboard.c:402
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf51e9 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51ec
+ mov es, ax ; 8e c0 ; 0xf51ef
+ jmp near 053c1h ; e9 cd 01 ; 0xf51f1
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf51f4 keyboard.c:411
+ jne short 05253h ; 75 59 ; 0xf51f8
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf51fa keyboard.c:412
+ and AL, strict byte 07fh ; 24 7f ; 0xf51fd
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf51ff
+ jne short 05208h ; 75 05 ; 0xf5201
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf5203
+ jmp short 0520bh ; eb 03 ; 0xf5206
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5208
+ test byte [bp-008h], 080h ; f6 46 f8 80 ; 0xf520b keyboard.c:413
+ je short 05217h ; 74 06 ; 0xf520f
+ not al ; f6 d0 ; 0xf5211 keyboard.c:414
+ and dh, al ; 20 c6 ; 0xf5213
+ jmp short 05219h ; eb 02 ; 0xf5215 keyboard.c:415
+ or dh, al ; 08 c6 ; 0xf5217 keyboard.c:416
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5219 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf521c
+ mov es, ax ; 8e c0 ; 0xf521f
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5221
+ jmp short 05253h ; eb 2d ; 0xf5224 keyboard.c:419
+ test bh, 001h ; f6 c7 01 ; 0xf5226 keyboard.c:422
+ jne short 05284h ; 75 59 ; 0xf5229
+ or dh, 004h ; 80 ce 04 ; 0xf522b keyboard.c:423
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf522e keyboard.c:41
+ mov bx, si ; 89 f3 ; 0xf5231
+ mov es, ax ; 8e c0 ; 0xf5233 keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5235
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5238 keyboard.c:425
+ je short 0524ah ; 74 0c ; 0xf523c
+ or byte [bp-006h], 004h ; 80 4e fa 04 ; 0xf523e keyboard.c:426
+ mov bx, 00096h ; bb 96 00 ; 0xf5242 keyboard.c:41
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf5245
+ jmp short 05250h ; eb 06 ; 0xf5248 keyboard.c:428
+ or dl, 001h ; 80 ca 01 ; 0xf524a keyboard.c:429
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf524d keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5250 keyboard.c:43
+ jmp short 05284h ; eb 2f ; 0xf5253 keyboard.c:433
+ test bh, 001h ; f6 c7 01 ; 0xf5255 keyboard.c:435
+ jne short 052aeh ; 75 54 ; 0xf5258
+ and dh, 0fbh ; 80 e6 fb ; 0xf525a keyboard.c:436
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf525d keyboard.c:43
+ mov es, ax ; 8e c0 ; 0xf5260
+ mov byte [es:si], dh ; 26 88 34 ; 0xf5262
+ test bh, 002h ; f6 c7 02 ; 0xf5265 keyboard.c:438
+ je short 0527bh ; 74 11 ; 0xf5268
+ and bh, 0fbh ; 80 e7 fb ; 0xf526a keyboard.c:439
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf526d
+ mov bx, 00096h ; bb 96 00 ; 0xf5270 keyboard.c:43
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5273
+ mov byte [es:bx], al ; 26 88 07 ; 0xf5276
+ jmp short 052aeh ; eb 33 ; 0xf5279 keyboard.c:441
+ and dl, 0feh ; 80 e2 fe ; 0xf527b keyboard.c:442
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf527e keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5281
+ jmp short 052aeh ; eb 28 ; 0xf5284 keyboard.c:446
+ or dh, 008h ; 80 ce 08 ; 0xf5286 keyboard.c:449
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5289 keyboard.c:41
+ mov bx, si ; 89 f3 ; 0xf528c
+ mov es, ax ; 8e c0 ; 0xf528e keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5290
+ test byte [bp-006h], 002h ; f6 46 fa 02 ; 0xf5293 keyboard.c:451
+ je short 052a5h ; 74 0c ; 0xf5297
+ or byte [bp-006h], 008h ; 80 4e fa 08 ; 0xf5299 keyboard.c:452
+ mov bx, 00096h ; bb 96 00 ; 0xf529d keyboard.c:41
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf52a0
+ jmp short 052abh ; eb 06 ; 0xf52a3 keyboard.c:454
+ or dl, 002h ; 80 ca 02 ; 0xf52a5 keyboard.c:455
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52a8 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52ab keyboard.c:43
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf52ae keyboard.c:458
+ and AL, strict byte 07fh ; 24 7f ; 0xf52b1
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf52b3
+ je short 052bbh ; 74 04 ; 0xf52b5
+ and byte [bp-006h], 0feh ; 80 66 fa fe ; 0xf52b7
+ and byte [bp-006h], 0fdh ; 80 66 fa fd ; 0xf52bb
+ mov bx, 00096h ; bb 96 00 ; 0xf52bf
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52c2
+ mov es, ax ; 8e c0 ; 0xf52c5
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52c7
+ mov byte [es:bx], al ; 26 88 07 ; 0xf52ca
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf52cd
+ pop di ; 5f ; 0xf52d0
+ pop si ; 5e ; 0xf52d1
+ pop bp ; 5d ; 0xf52d2
+ retn ; c3 ; 0xf52d3
+ and dh, 0f7h ; 80 e6 f7 ; 0xf52d4 keyboard.c:460
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52d7 keyboard.c:43
+ mov es, ax ; 8e c0 ; 0xf52da
+ mov byte [es:si], dh ; 26 88 34 ; 0xf52dc
+ test bh, 002h ; f6 c7 02 ; 0xf52df keyboard.c:462
+ je short 052ech ; 74 08 ; 0xf52e2
+ and bh, 0f7h ; 80 e7 f7 ; 0xf52e4 keyboard.c:463
+ mov byte [bp-006h], bh ; 88 7e fa ; 0xf52e7
+ jmp short 05270h ; eb 84 ; 0xf52ea keyboard.c:464
+ and dl, 0fdh ; 80 e2 fd ; 0xf52ec keyboard.c:466
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52ef keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf52f2
+ jmp short 052aeh ; eb b7 ; 0xf52f5 keyboard.c:469
+ test bh, 003h ; f6 c7 03 ; 0xf52f7 keyboard.c:472
+ jne short 05310h ; 75 14 ; 0xf52fa
+ or dl, 020h ; 80 ca 20 ; 0xf52fc keyboard.c:474
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52ff keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5302
+ mov es, ax ; 8e c0 ; 0xf5305 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5307
+ xor dh, 020h ; 80 f6 20 ; 0xf530a keyboard.c:476
+ jmp near 05395h ; e9 85 00 ; 0xf530d keyboard.c:477
+ or dl, 008h ; 80 ca 08 ; 0xf5310 keyboard.c:480
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5313 keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf5316
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5318
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf531b keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf531e keyboard.c:484
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5321
+ out DX, AL ; ee ; 0xf5324
+ call 0e034h ; e8 0c 8d ; 0xf5325 keyboard.c:485
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5328 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf532b
+ mov es, ax ; 8e c0 ; 0xf532e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5330
+ test AL, strict byte 008h ; a8 08 ; 0xf5333 keyboard.c:39
+ jne short 05328h ; 75 f1 ; 0xf5335
+ jmp near 052aeh ; e9 74 ff ; 0xf5337 keyboard.c:492
+ test bh, 003h ; f6 c7 03 ; 0xf533a keyboard.c:494
+ je short 05342h ; 74 03 ; 0xf533d
+ jmp near 052aeh ; e9 6c ff ; 0xf533f
+ and dl, 0dfh ; 80 e2 df ; 0xf5342 keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5345 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5348
+ mov es, ax ; 8e c0 ; 0xf534b
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf534d
+ jmp short 0533fh ; eb ed ; 0xf5350 keyboard.c:498
+ test bh, 002h ; f6 c7 02 ; 0xf5352 keyboard.c:501
+ je short 05384h ; 74 2d ; 0xf5355
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5357 keyboard.c:46
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf535a
+ mov es, ax ; 8e c0 ; 0xf535d keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf535f
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5362 keyboard.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf5365 keyboard.c:53
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf5368 keyboard.c:41
+ mov AL, strict byte 080h ; b0 80 ; 0xf536b
+ mov byte [es:bx], al ; 26 88 07 ; 0xf536d keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf5370 keyboard.c:506
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5373
+ out DX, AL ; ee ; 0xf5376
+ push bp ; 55 ; 0xf5377 keyboard.c:507
+ int 01bh ; cd 1b ; 0xf5378
+ pop bp ; 5d ; 0xf537a
+ xor dx, dx ; 31 d2 ; 0xf537b keyboard.c:508
+ xor ax, ax ; 31 c0 ; 0xf537d
+ call 050e7h ; e8 65 fd ; 0xf537f
+ jmp short 0533fh ; eb bb ; 0xf5382 keyboard.c:509
+ or dl, 010h ; 80 ca 10 ; 0xf5384 keyboard.c:510
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5387 keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf538a
+ mov es, ax ; 8e c0 ; 0xf538d keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf538f
+ xor dh, 010h ; 80 f6 10 ; 0xf5392 keyboard.c:512
+ mov bx, si ; 89 f3 ; 0xf5395 keyboard.c:41
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5397 keyboard.c:43
+ jmp short 0533fh ; eb a3 ; 0xf539a keyboard.c:515
+ test bh, 002h ; f6 c7 02 ; 0xf539c keyboard.c:518
+ jne short 0533fh ; 75 9e ; 0xf539f
+ and dl, 0efh ; 80 e2 ef ; 0xf53a1 keyboard.c:519
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53a4 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53a7
+ mov es, ax ; 8e c0 ; 0xf53aa
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53ac
+ jmp short 0533fh ; eb 8e ; 0xf53af keyboard.c:522
+ test bl, 004h ; f6 c3 04 ; 0xf53b1 keyboard.c:525
+ jne short 0533fh ; 75 89 ; 0xf53b4
+ or dl, 004h ; 80 ca 04 ; 0xf53b6 keyboard.c:526
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53b9 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53bc
+ mov es, ax ; 8e c0 ; 0xf53bf
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53c1
+ jmp near 052aeh ; e9 e7 fe ; 0xf53c4 keyboard.c:530
+ and dl, 0fbh ; 80 e2 fb ; 0xf53c7 keyboard.c:533
+ jmp short 053b9h ; eb ed ; 0xf53ca keyboard.c:534
+ mov al, ah ; 88 e0 ; 0xf53cc keyboard.c:539
+ and AL, strict byte 00ch ; 24 0c ; 0xf53ce
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf53d0
+ jne short 053e7h ; 75 13 ; 0xf53d2
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53d4 keyboard.c:51
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf53d7
+ mov cx, 01234h ; b9 34 12 ; 0xf53da
+ mov es, ax ; 8e c0 ; 0xf53dd keyboard.c:53
+ mov word [es:bx], cx ; 26 89 0f ; 0xf53df
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf53e2 keyboard.c:542
+ test dl, 008h ; f6 c2 08 ; 0xf53e7 keyboard.c:548
+ je short 053fdh ; 74 11 ; 0xf53ea
+ and dl, 0f7h ; 80 e2 f7 ; 0xf53ec keyboard.c:550
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53ef keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53f2
+ mov es, ax ; 8e c0 ; 0xf53f5
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53f7
+ jmp near 052cdh ; e9 d0 fe ; 0xf53fa keyboard.c:552
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53fd keyboard.c:555
+ test AL, strict byte 080h ; a8 80 ; 0xf5400
+ je short 05432h ; 74 2e ; 0xf5402
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf5404 keyboard.c:557
+ jne short 05418h ; 75 10 ; 0xf5406
+ mov bx, 00097h ; bb 97 00 ; 0xf5408 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf540b
+ mov es, ax ; 8e c0 ; 0xf540e
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5410
+ or ah, 010h ; 80 cc 10 ; 0xf5413 keyboard.c:39
+ jmp short 0542dh ; eb 15 ; 0xf5416 keyboard.c:560
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf5418
+ je short 0541fh ; 74 03 ; 0xf541a
+ jmp near 052aeh ; e9 8f fe ; 0xf541c
+ mov bx, 00097h ; bb 97 00 ; 0xf541f keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5422
+ mov es, ax ; 8e c0 ; 0xf5425
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5427
+ or ah, 020h ; 80 cc 20 ; 0xf542a keyboard.c:39
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf542d keyboard.c:43
+ jmp short 0541ch ; eb ea ; 0xf5430 keyboard.c:564
+ cmp byte [bp-008h], 058h ; 80 7e f8 58 ; 0xf5432 keyboard.c:566
+ jbe short 05457h ; 76 1f ; 0xf5436
+ mov bx, 00da0h ; bb a0 0d ; 0xf5438 keyboard.c:567
+ mov cx, ds ; 8c d9 ; 0xf543b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf543d
+ call 018bch ; e8 79 c4 ; 0xf5440
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5443
+ xor ah, ah ; 30 e4 ; 0xf5446
+ push ax ; 50 ; 0xf5448
+ push 005a1h ; 68 a1 05 ; 0xf5449
+ push strict byte 00004h ; 6a 04 ; 0xf544c
+ call 018ffh ; e8 ae c4 ; 0xf544e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5451
+ jmp near 052cdh ; e9 76 fe ; 0xf5454 keyboard.c:568
+ test dh, 008h ; f6 c6 08 ; 0xf5457 keyboard.c:570
+ je short 0546fh ; 74 13 ; 0xf545a
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf545c keyboard.c:571
+ xor bh, bh ; 30 ff ; 0xf545f
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5461
+ mov dl, byte [bx+00df4h] ; 8a 97 f4 0d ; 0xf5464
+ mov ax, word [bx+00df4h] ; 8b 87 f4 0d ; 0xf5468 keyboard.c:572
+ jmp near 05503h ; e9 94 00 ; 0xf546c keyboard.c:573
+ test dh, 004h ; f6 c6 04 ; 0xf546f
+ je short 05487h ; 74 13 ; 0xf5472
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf5474 keyboard.c:574
+ xor bh, bh ; 30 ff ; 0xf5477
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5479
+ mov dl, byte [bx+00df2h] ; 8a 97 f2 0d ; 0xf547c
+ mov ax, word [bx+00df2h] ; 8b 87 f2 0d ; 0xf5480 keyboard.c:575
+ jmp near 05503h ; e9 7c 00 ; 0xf5484 keyboard.c:576
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5487
+ and AL, strict byte 002h ; 24 02 ; 0xf548a
+ test al, al ; 84 c0 ; 0xf548c
+ jbe short 054a6h ; 76 16 ; 0xf548e
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5490
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf5493
+ jc short 054a6h ; 72 0f ; 0xf5495
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf5497
+ jnbe short 054a6h ; 77 0b ; 0xf5499
+ mov DL, strict byte 0e0h ; b2 e0 ; 0xf549b keyboard.c:578
+ mov bl, al ; 88 c3 ; 0xf549d keyboard.c:579
+ xor bh, bh ; 30 ff ; 0xf549f
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54a1
+ jmp short 054ffh ; eb 59 ; 0xf54a4 keyboard.c:580
+ test dh, 003h ; f6 c6 03 ; 0xf54a6
+ je short 054dbh ; 74 30 ; 0xf54a9
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf54ab keyboard.c:584
+ xor bh, bh ; 30 ff ; 0xf54ae
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54b0
+ mov cl, byte [bx+00df6h] ; 8a 8f f6 0d ; 0xf54b3
+ xor ch, ch ; 30 ed ; 0xf54b7
+ mov al, dh ; 88 f0 ; 0xf54b9
+ xor ah, ah ; 30 e4 ; 0xf54bb
+ test ax, cx ; 85 c8 ; 0xf54bd
+ je short 054cbh ; 74 0a ; 0xf54bf
+ mov dl, byte [bx+00deeh] ; 8a 97 ee 0d ; 0xf54c1 keyboard.c:585
+ mov ax, word [bx+00deeh] ; 8b 87 ee 0d ; 0xf54c5 keyboard.c:586
+ jmp short 054d3h ; eb 08 ; 0xf54c9 keyboard.c:587
+ mov dl, byte [bx+00df0h] ; 8a 97 f0 0d ; 0xf54cb keyboard.c:588
+ mov ax, word [bx+00df0h] ; 8b 87 f0 0d ; 0xf54cf keyboard.c:589
+ shr ax, 008h ; c1 e8 08 ; 0xf54d3
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf54d6
+ jmp short 05509h ; eb 2e ; 0xf54d9 keyboard.c:591
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf54db keyboard.c:593
+ xor bh, bh ; 30 ff ; 0xf54de
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf54e0
+ mov al, byte [bx+00df6h] ; 8a 87 f6 0d ; 0xf54e3
+ xor ah, ah ; 30 e4 ; 0xf54e7
+ mov dl, dh ; 88 f2 ; 0xf54e9
+ xor dh, dh ; 30 f6 ; 0xf54eb
+ test dx, ax ; 85 c2 ; 0xf54ed
+ je short 054fbh ; 74 0a ; 0xf54ef
+ mov dl, byte [bx+00df0h] ; 8a 97 f0 0d ; 0xf54f1 keyboard.c:594
+ mov ax, word [bx+00df0h] ; 8b 87 f0 0d ; 0xf54f5 keyboard.c:595
+ jmp short 05503h ; eb 08 ; 0xf54f9 keyboard.c:596
+ mov dl, byte [bx+00deeh] ; 8a 97 ee 0d ; 0xf54fb keyboard.c:597
+ mov ax, word [bx+00deeh] ; 8b 87 ee 0d ; 0xf54ff keyboard.c:598
+ shr ax, 008h ; c1 e8 08 ; 0xf5503
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf5506
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf5509 keyboard.c:601
+ jne short 05529h ; 75 1a ; 0xf550d
+ test dl, dl ; 84 d2 ; 0xf550f
+ jne short 05529h ; 75 16 ; 0xf5511
+ mov bx, 00da0h ; bb a0 0d ; 0xf5513 keyboard.c:602
+ mov cx, ds ; 8c d9 ; 0xf5516
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5518
+ call 018bch ; e8 9e c3 ; 0xf551b
+ push 005d8h ; 68 d8 05 ; 0xf551e
+ push strict byte 00004h ; 6a 04 ; 0xf5521
+ call 018ffh ; e8 d9 c3 ; 0xf5523
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5526
+ xor dh, dh ; 30 f6 ; 0xf5529 keyboard.c:604
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf552b
+ xor ah, ah ; 30 e4 ; 0xf552e
+ jmp near 0537fh ; e9 4c fe ; 0xf5530
+ ; disGetNextSymbol 0xf5533 LB 0x4995 -> off=0x0 cb=000000000000006c uValue=00000000000f3f33 'dequeue_key'
+dequeue_key: ; 0xf5533 LB 0x6c
+ push si ; 56 ; 0xf5533 keyboard.c:614
+ push di ; 57 ; 0xf5534
+ enter 00002h, 000h ; c8 02 00 00 ; 0xf5535
+ push ax ; 50 ; 0xf5539
+ push dx ; 52 ; 0xf553a
+ mov si, bx ; 89 de ; 0xf553b
+ mov bx, 00080h ; bb 80 00 ; 0xf553d keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5540
+ mov es, ax ; 8e c0 ; 0xf5543
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5545
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5548
+ mov bx, 00082h ; bb 82 00 ; 0xf554b keyboard.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf554e
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5551 keyboard.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf5554
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf5557 keyboard.c:48
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf555a
+ cmp bx, ax ; 39 c3 ; 0xf555d keyboard.c:630
+ je short 05597h ; 74 36 ; 0xf555f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5561 keyboard.c:38
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf5564 keyboard.c:632
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf5567 keyboard.c:38
+ mov es, cx ; 8e c1 ; 0xf556a keyboard.c:633
+ mov byte [es:si], al ; 26 88 04 ; 0xf556c
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf556f keyboard.c:634
+ mov si, word [bp-004h] ; 8b 76 fc ; 0xf5572
+ mov byte [es:si], ah ; 26 88 24 ; 0xf5575
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf5578 keyboard.c:637
+ je short 05592h ; 74 14 ; 0xf557c
+ inc bx ; 43 ; 0xf557e keyboard.c:638
+ inc bx ; 43 ; 0xf557f
+ cmp bx, dx ; 39 d3 ; 0xf5580 keyboard.c:639
+ jc short 05587h ; 72 03 ; 0xf5582
+ mov bx, word [bp-002h] ; 8b 5e fe ; 0xf5584 keyboard.c:640
+ mov si, strict word 0001ah ; be 1a 00 ; 0xf5587 keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf558a
+ mov es, ax ; 8e c0 ; 0xf558d
+ mov word [es:si], bx ; 26 89 1c ; 0xf558f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5592 keyboard.c:643
+ jmp short 05599h ; eb 02 ; 0xf5595
+ xor ax, ax ; 31 c0 ; 0xf5597 keyboard.c:646
+ leave ; c9 ; 0xf5599 keyboard.c:648
+ pop di ; 5f ; 0xf559a
+ pop si ; 5e ; 0xf559b
+ retn 00002h ; c2 02 00 ; 0xf559c
+ ; disGetNextSymbol 0xf559f LB 0x4929 -> off=0x23 cb=00000000000002ee uValue=00000000000f3fc2 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 0c3h, 056h, 07ah, 056h, 00dh
+ db 057h, 05ah, 057h, 06dh, 057h, 096h, 057h, 09fh, 057h, 010h, 058h, 042h, 058h, 072h, 058h, 0a5h
+ db 058h, 006h, 057h
+int16_function: ; 0xf55c2 LB 0x2ee
+ push bp ; 55 ; 0xf55c2 keyboard.c:665
+ mov bp, sp ; 89 e5 ; 0xf55c3
+ push si ; 56 ; 0xf55c5
+ push di ; 57 ; 0xf55c6
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf55c7
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf55ca keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf55cd
+ mov es, ax ; 8e c0 ; 0xf55d0
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf55d2
+ mov bl, al ; 88 c3 ; 0xf55d5 keyboard.c:39
+ mov si, 00097h ; be 97 00 ; 0xf55d7 keyboard.c:38
+ mov dl, byte [es:si] ; 26 8a 14 ; 0xf55da
+ mov bh, dl ; 88 d7 ; 0xf55dd keyboard.c:39
+ xor ah, ah ; 30 e4 ; 0xf55df keyboard.c:674
+ mov cx, ax ; 89 c1 ; 0xf55e1
+ sar cx, 004h ; c1 f9 04 ; 0xf55e3
+ and cl, 007h ; 80 e1 07 ; 0xf55e6
+ mov al, dl ; 88 d0 ; 0xf55e9
+ and AL, strict byte 007h ; 24 07 ; 0xf55eb
+ xor al, cl ; 30 c8 ; 0xf55ed
+ test ax, ax ; 85 c0 ; 0xf55ef
+ je short 0565ah ; 74 67 ; 0xf55f1
+ cli ; fa ; 0xf55f3 keyboard.c:675
+ mov AL, strict byte 0edh ; b0 ed ; 0xf55f4 keyboard.c:676
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf55f6
+ out DX, AL ; ee ; 0xf55f9
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf55fa keyboard.c:677
+ in AL, DX ; ec ; 0xf55fd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf55fe
+ test AL, strict byte 001h ; a8 01 ; 0xf5600
+ jne short 0560ch ; 75 08 ; 0xf5602
+ mov AL, strict byte 021h ; b0 21 ; 0xf5604
+ mov dx, 00080h ; ba 80 00 ; 0xf5606
+ out DX, AL ; ee ; 0xf5609
+ jmp short 055fah ; eb ee ; 0xf560a
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf560c keyboard.c:678
+ in AL, DX ; ec ; 0xf560f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5610
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5612
+ jne short 05659h ; 75 42 ; 0xf5615
+ mov dl, bh ; 88 fa ; 0xf5617 keyboard.c:679
+ and dl, 0c8h ; 80 e2 c8 ; 0xf5619
+ mov al, bl ; 88 d8 ; 0xf561c keyboard.c:680
+ xor ah, ah ; 30 e4 ; 0xf561e
+ mov cx, ax ; 89 c1 ; 0xf5620
+ sar cx, 004h ; c1 f9 04 ; 0xf5622
+ and cl, 007h ; 80 e1 07 ; 0xf5625
+ xor dh, dh ; 30 f6 ; 0xf5628
+ mov ax, dx ; 89 d0 ; 0xf562a
+ or al, cl ; 08 c8 ; 0xf562c
+ mov bh, al ; 88 c7 ; 0xf562e
+ and AL, strict byte 007h ; 24 07 ; 0xf5630 keyboard.c:681
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5632
+ out DX, AL ; ee ; 0xf5635
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5636 keyboard.c:682
+ in AL, DX ; ec ; 0xf5639
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf563a
+ test AL, strict byte 001h ; a8 01 ; 0xf563c
+ jne short 05648h ; 75 08 ; 0xf563e
+ mov AL, strict byte 021h ; b0 21 ; 0xf5640 keyboard.c:683
+ mov dx, 00080h ; ba 80 00 ; 0xf5642
+ out DX, AL ; ee ; 0xf5645
+ jmp short 05636h ; eb ee ; 0xf5646
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5648 keyboard.c:684
+ in AL, DX ; ec ; 0xf564b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf564c
+ mov si, 00097h ; be 97 00 ; 0xf564e keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5651
+ mov es, ax ; 8e c0 ; 0xf5654
+ mov byte [es:si], bh ; 26 88 3c ; 0xf5656
+ sti ; fb ; 0xf5659 keyboard.c:687
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf565a keyboard.c:690
+ shr ax, 008h ; c1 e8 08 ; 0xf565d
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf5660
+ jnbe short 056c3h ; 77 5e ; 0xf5663
+ push CS ; 0e ; 0xf5665
+ pop ES ; 07 ; 0xf5666
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5667
+ mov di, 0559fh ; bf 9f 55 ; 0xf566a
+ repne scasb ; f2 ae ; 0xf566d
+ sal cx, 1 ; d1 e1 ; 0xf566f
+ mov di, cx ; 89 cf ; 0xf5671
+ mov ax, word [cs:di+055aah] ; 2e 8b 85 aa 55 ; 0xf5673
+ jmp ax ; ff e0 ; 0xf5678
+ push strict byte 00001h ; 6a 01 ; 0xf567a keyboard.c:692
+ mov cx, ss ; 8c d1 ; 0xf567c
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf567e
+ mov dx, ss ; 8c d2 ; 0xf5681
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5683
+ call 05533h ; e8 aa fe ; 0xf5686
+ test ax, ax ; 85 c0 ; 0xf5689
+ jne short 05698h ; 75 0b ; 0xf568b
+ push 0060fh ; 68 0f 06 ; 0xf568d keyboard.c:693
+ push strict byte 00007h ; 6a 07 ; 0xf5690
+ call 018ffh ; e8 6a c2 ; 0xf5692
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5695
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5698 keyboard.c:695
+ je short 056a4h ; 74 06 ; 0xf569c
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf569e
+ je short 056aah ; 74 06 ; 0xf56a2
+ cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf56a4 keyboard.c:697
+ jne short 056aeh ; 75 04 ; 0xf56a8
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf56aa keyboard.c:698
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf56ae keyboard.c:699
+ xor ah, ah ; 30 e4 ; 0xf56b1
+ mov dx, ax ; 89 c2 ; 0xf56b3
+ sal dx, 008h ; c1 e2 08 ; 0xf56b5
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf56b8
+ or dx, ax ; 09 c2 ; 0xf56bb
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf56bd
+ jmp near 05706h ; e9 43 00 ; 0xf56c0 keyboard.c:700
+ mov bx, 00da0h ; bb a0 0d ; 0xf56c3
+ mov cx, ds ; 8c d9 ; 0xf56c6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf56c8
+ call 018bch ; e8 ee c1 ; 0xf56cb
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56ce
+ shr ax, 008h ; c1 e8 08 ; 0xf56d1
+ push ax ; 50 ; 0xf56d4
+ push 00633h ; 68 33 06 ; 0xf56d5
+ push strict byte 00004h ; 6a 04 ; 0xf56d8
+ call 018ffh ; e8 22 c2 ; 0xf56da
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf56dd
+ mov bx, 00da0h ; bb a0 0d ; 0xf56e0
+ mov cx, ds ; 8c d9 ; 0xf56e3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf56e5
+ call 018bch ; e8 d1 c1 ; 0xf56e8
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf56eb
+ push ax ; 50 ; 0xf56ee
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf56ef
+ push ax ; 50 ; 0xf56f2
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf56f3
+ push ax ; 50 ; 0xf56f6
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf56f7
+ push ax ; 50 ; 0xf56fa
+ push 0065bh ; 68 5b 06 ; 0xf56fb
+ push strict byte 00004h ; 6a 04 ; 0xf56fe
+ call 018ffh ; e8 fc c1 ; 0xf5700
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5703
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5706
+ pop di ; 5f ; 0xf5709
+ pop si ; 5e ; 0xf570a
+ pop bp ; 5d ; 0xf570b
+ retn ; c3 ; 0xf570c
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf570d keyboard.c:704
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5710
+ push strict byte 00000h ; 6a 00 ; 0xf5713 keyboard.c:705
+ mov cx, ss ; 8c d1 ; 0xf5715
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf5717
+ mov dx, ss ; 8c d2 ; 0xf571a
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf571c
+ call 05533h ; e8 11 fe ; 0xf571f
+ test ax, ax ; 85 c0 ; 0xf5722
+ jne short 0572ch ; 75 06 ; 0xf5724
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf5726 keyboard.c:706
+ jmp short 05706h ; eb da ; 0xf572a keyboard.c:707
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf572c keyboard.c:709
+ je short 05738h ; 74 06 ; 0xf5730
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5732
+ je short 0573eh ; 74 06 ; 0xf5736
+ cmp byte [bp-006h], 0e0h ; 80 7e fa e0 ; 0xf5738 keyboard.c:711
+ jne short 05742h ; 75 04 ; 0xf573c
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf573e keyboard.c:712
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf5742 keyboard.c:713
+ xor ah, ah ; 30 e4 ; 0xf5745
+ mov dx, ax ; 89 c2 ; 0xf5747
+ sal dx, 008h ; c1 e2 08 ; 0xf5749
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf574c
+ or dx, ax ; 09 c2 ; 0xf574f
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5751
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf5754 keyboard.c:714
+ jmp short 05706h ; eb ac ; 0xf5758 keyboard.c:715
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf575a keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf575d
+ mov es, ax ; 8e c0 ; 0xf5760
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5762
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5765 keyboard.c:719
+ mov dl, al ; 88 c2 ; 0xf5768
+ jmp near 056bdh ; e9 50 ff ; 0xf576a
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf576d keyboard.c:723
+ xor dh, dh ; 30 f6 ; 0xf5770
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5772
+ shr ax, 008h ; c1 e8 08 ; 0xf5775
+ xor ah, ah ; 30 e4 ; 0xf5778
+ call 050e7h ; e8 6a f9 ; 0xf577a
+ test ax, ax ; 85 c0 ; 0xf577d
+ jne short 0578eh ; 75 0d ; 0xf577f
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5781 keyboard.c:724
+ xor al, al ; 30 c0 ; 0xf5784
+ or AL, strict byte 001h ; 0c 01 ; 0xf5786
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf5788
+ jmp near 05706h ; e9 78 ff ; 0xf578b keyboard.c:726
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf578e keyboard.c:727
+ jmp near 05706h ; e9 70 ff ; 0xf5793 keyboard.c:729
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5796 keyboard.c:742
+ xor al, al ; 30 c0 ; 0xf5799
+ or AL, strict byte 030h ; 0c 30 ; 0xf579b
+ jmp short 05788h ; eb e9 ; 0xf579d
+ mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf579f keyboard.c:746
+ xor cx, cx ; 31 c9 ; 0xf57a3 keyboard.c:747
+ cli ; fa ; 0xf57a5 keyboard.c:749
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf57a6 keyboard.c:750
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57a8
+ out DX, AL ; ee ; 0xf57ab
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf57ac keyboard.c:752
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf57af keyboard.c:753
+ in AL, DX ; ec ; 0xf57b2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57b3
+ test AL, strict byte 001h ; a8 01 ; 0xf57b5
+ jne short 057c6h ; 75 0d ; 0xf57b7
+ dec bx ; 4b ; 0xf57b9
+ test bx, bx ; 85 db ; 0xf57ba
+ jbe short 057c6h ; 76 08 ; 0xf57bc
+ mov dx, 00080h ; ba 80 00 ; 0xf57be keyboard.c:754
+ in AL, DX ; ec ; 0xf57c1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57c2
+ jmp short 057afh ; eb e9 ; 0xf57c4
+ test bx, bx ; 85 db ; 0xf57c6 keyboard.c:755
+ jbe short 0580ah ; 76 40 ; 0xf57c8
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57ca keyboard.c:756
+ in AL, DX ; ec ; 0xf57cd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57ce
+ cmp ax, 000fah ; 3d fa 00 ; 0xf57d0
+ jne short 0580ah ; 75 35 ; 0xf57d3
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf57d5 keyboard.c:758
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf57d8 keyboard.c:759
+ in AL, DX ; ec ; 0xf57db
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57dc
+ test AL, strict byte 001h ; a8 01 ; 0xf57de
+ jne short 057efh ; 75 0d ; 0xf57e0
+ dec bx ; 4b ; 0xf57e2
+ test bx, bx ; 85 db ; 0xf57e3
+ jbe short 057efh ; 76 08 ; 0xf57e5
+ mov dx, 00080h ; ba 80 00 ; 0xf57e7 keyboard.c:760
+ in AL, DX ; ec ; 0xf57ea
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57eb
+ jmp short 057d8h ; eb e9 ; 0xf57ed
+ test bx, bx ; 85 db ; 0xf57ef keyboard.c:761
+ jbe short 05801h ; 76 0e ; 0xf57f1
+ shr cx, 008h ; c1 e9 08 ; 0xf57f3 keyboard.c:762
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf57f6 keyboard.c:763
+ in AL, DX ; ec ; 0xf57f9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf57fa
+ sal ax, 008h ; c1 e0 08 ; 0xf57fc
+ or cx, ax ; 09 c1 ; 0xf57ff
+ dec byte [bp-008h] ; fe 4e f8 ; 0xf5801 keyboard.c:765
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf5804
+ jnbe short 057d5h ; 77 cb ; 0xf5808
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf580a keyboard.c:768
+ jmp near 05706h ; e9 f6 fe ; 0xf580d keyboard.c:769
+ push strict byte 00001h ; 6a 01 ; 0xf5810 keyboard.c:772
+ mov cx, ss ; 8c d1 ; 0xf5812
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf5814
+ mov dx, ss ; 8c d2 ; 0xf5817
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5819
+ call 05533h ; e8 14 fd ; 0xf581c
+ test ax, ax ; 85 c0 ; 0xf581f
+ jne short 0582eh ; 75 0b ; 0xf5821
+ push 0060fh ; 68 0f 06 ; 0xf5823 keyboard.c:773
+ push strict byte 00007h ; 6a 07 ; 0xf5826
+ call 018ffh ; e8 d4 c0 ; 0xf5828
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf582b
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf582e keyboard.c:775
+ jne short 05837h ; 75 03 ; 0xf5832
+ jmp near 056aeh ; e9 77 fe ; 0xf5834
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5837
+ jne short 05840h ; 75 03 ; 0xf583b
+ jmp near 056aah ; e9 6a fe ; 0xf583d
+ jmp short 05834h ; eb f2 ; 0xf5840
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5842 keyboard.c:782
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5845
+ push strict byte 00000h ; 6a 00 ; 0xf5848 keyboard.c:783
+ mov cx, ss ; 8c d1 ; 0xf584a
+ lea bx, [bp-006h] ; 8d 5e fa ; 0xf584c
+ mov dx, ss ; 8c d2 ; 0xf584f
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5851
+ call 05533h ; e8 dc fc ; 0xf5854
+ test ax, ax ; 85 c0 ; 0xf5857
+ jne short 0585eh ; 75 03 ; 0xf5859
+ jmp near 05726h ; e9 c8 fe ; 0xf585b
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf585e keyboard.c:787
+ jne short 05867h ; 75 03 ; 0xf5862
+ jmp near 05742h ; e9 db fe ; 0xf5864
+ cmp byte [bp-006h], 0f0h ; 80 7e fa f0 ; 0xf5867
+ jne short 05870h ; 75 03 ; 0xf586b
+ jmp near 0573eh ; e9 ce fe ; 0xf586d
+ jmp short 05864h ; eb f2 ; 0xf5870
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5872 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5875
+ mov es, ax ; 8e c0 ; 0xf5878
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf587a
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf587d keyboard.c:795
+ mov dl, al ; 88 c2 ; 0xf5880
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5882
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5885 keyboard.c:38
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf5888
+ and bl, 073h ; 80 e3 73 ; 0xf588b keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf588e keyboard.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5891
+ and AL, strict byte 00ch ; 24 0c ; 0xf5894 keyboard.c:39
+ or al, bl ; 08 d8 ; 0xf5896
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5898 keyboard.c:798
+ xor dh, dh ; 30 f6 ; 0xf589b
+ xor ah, ah ; 30 e4 ; 0xf589d
+ sal ax, 008h ; c1 e0 08 ; 0xf589f
+ jmp near 056bbh ; e9 16 fe ; 0xf58a2
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58a5 keyboard.c:803
+ xor ah, ah ; 30 e4 ; 0xf58a8
+ or ah, 080h ; 80 cc 80 ; 0xf58aa
+ jmp near 05788h ; e9 d8 fe ; 0xf58ad
+ ; disGetNextSymbol 0xf58b0 LB 0x4618 -> off=0x0 cb=00000000000000b5 uValue=00000000000f42b0 'set_geom_lba'
+set_geom_lba: ; 0xf58b0 LB 0xb5
+ push bx ; 53 ; 0xf58b0 disk.c:115
+ push cx ; 51 ; 0xf58b1
+ push si ; 56 ; 0xf58b2
+ push di ; 57 ; 0xf58b3
+ enter 00008h, 000h ; c8 08 00 00 ; 0xf58b4
+ mov di, ax ; 89 c7 ; 0xf58b8
+ mov es, dx ; 8e c2 ; 0xf58ba
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf58bc disk.c:117
+ mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf58c1
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf58c6 disk.c:119
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58cb disk.c:122
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf58ce
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf58d1
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf58d4
+ mov si, strict word 00020h ; be 20 00 ; 0xf58d7
+ call 09b90h ; e8 b3 42 ; 0xf58da
+ test ax, ax ; 85 c0 ; 0xf58dd
+ jne short 058edh ; 75 0c ; 0xf58df
+ test bx, bx ; 85 db ; 0xf58e1
+ jne short 058edh ; 75 08 ; 0xf58e3
+ test cx, cx ; 85 c9 ; 0xf58e5
+ jne short 058edh ; 75 04 ; 0xf58e7
+ test dx, dx ; 85 d2 ; 0xf58e9
+ je short 058f4h ; 74 07 ; 0xf58eb
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf58ed
+ mov si, bx ; 89 de ; 0xf58f0
+ jmp short 058fah ; eb 06 ; 0xf58f2
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf58f4
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf58f7
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf58fa
+ xor bx, bx ; 31 db ; 0xf58fd disk.c:124
+ jmp short 05906h ; eb 05 ; 0xf58ff
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5901
+ jnl short 05929h ; 7d 23 ; 0xf5904
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5906 disk.c:125
+ cmp si, ax ; 39 c6 ; 0xf5909
+ jc short 05917h ; 72 0a ; 0xf590b
+ jne short 05920h ; 75 11 ; 0xf590d
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf590f
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf5912
+ jnbe short 05920h ; 77 09 ; 0xf5915
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5917 disk.c:126
+ inc ax ; 40 ; 0xf591a
+ shr ax, 1 ; d1 e8 ; 0xf591b
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf591d
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf5920 disk.c:127
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5923
+ inc bx ; 43 ; 0xf5926 disk.c:128
+ jmp short 05901h ; eb d8 ; 0xf5927
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5929 disk.c:130
+ xor dx, dx ; 31 d2 ; 0xf592c
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf592e
+ xor cx, cx ; 31 c9 ; 0xf5931
+ call 09b40h ; e8 0a 42 ; 0xf5933
+ mov bx, ax ; 89 c3 ; 0xf5936
+ mov cx, dx ; 89 d1 ; 0xf5938
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf593a
+ mov dx, si ; 89 f2 ; 0xf593d
+ call 09b60h ; e8 1e 42 ; 0xf593f
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5942
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5946 disk.c:131
+ jbe short 05951h ; 76 06 ; 0xf5949
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf594b disk.c:132
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5951 disk.c:133
+ mov word [es:di], ax ; 26 89 05 ; 0xf5954
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5957 disk.c:134
+ leave ; c9 ; 0xf595d disk.c:135
+ pop di ; 5f ; 0xf595e
+ pop si ; 5e ; 0xf595f
+ pop cx ; 59 ; 0xf5960
+ pop bx ; 5b ; 0xf5961
+ retn 00008h ; c2 08 00 ; 0xf5962
+ ; disGetNextSymbol 0xf5965 LB 0x4563 -> off=0x0 cb=00000000000002fc uValue=00000000000f4365 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf5965 LB 0x2fc
+ push si ; 56 ; 0xf5965 disk.c:137
+ push di ; 57 ; 0xf5966
+ enter 0000ch, 000h ; c8 0c 00 00 ; 0xf5967
+ mov di, ax ; 89 c7 ; 0xf596b
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf596d
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf5970
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5973
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5976 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5979
+ mov es, ax ; 8e c0 ; 0xf597c
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf597e
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5981 disk.c:49
+ mov es, dx ; 8e c2 ; 0xf5984 disk.c:142
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5986
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5989
+ jnc short 05994h ; 73 06 ; 0xf598c
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf598e disk.c:143
+ jmp near 05c5bh ; e9 c7 02 ; 0xf5991
+ jc short 05a05h ; 72 6f ; 0xf5994 disk.c:146
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5996 disk.c:149
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf599b disk.c:150
+ xor ah, ah ; 30 e4 ; 0xf599e
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf59a0
+ mov dx, cx ; 89 ca ; 0xf59a3
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf59a5
+ add bx, ax ; 01 c3 ; 0xf59a8
+ mov es, cx ; 8e c1 ; 0xf59aa
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf59ac
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59b0
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf59b3
+ mov es, cx ; 8e c1 ; 0xf59b7 disk.c:152
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf59b9
+ jne short 05a07h ; 75 47 ; 0xf59be
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf59c0 disk.c:153
+ mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf59c3
+ mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf59c9 disk.c:154
+ mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf59cf
+ mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf59d5 disk.c:155
+ mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf59db
+ mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf59e1 disk.c:156
+ mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf59e7
+ mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf59ed disk.c:157
+ mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf59f3
+ mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf59f9 disk.c:158
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf59ff
+ jmp short 05a76h ; eb 6f ; 0xf5a05 disk.c:159
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a07 disk.c:160
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5a0a
+ mov es, cx ; 8e c1 ; 0xf5a10 disk.c:161
+ mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5a12
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a16
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5a19
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5a1d
+ mov es, cx ; 8e c1 ; 0xf5a23 disk.c:162
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5a25
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a29
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5a2c
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5a30
+ mov es, cx ; 8e c1 ; 0xf5a36 disk.c:163
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5a38
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a3c
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5a3f
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5a43
+ mov es, cx ; 8e c1 ; 0xf5a49 disk.c:164
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5a4b
+ mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5a4f
+ mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5a53
+ mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5a57
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a5b disk.c:165
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5a5e
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5a62
+ mov bx, si ; 89 f3 ; 0xf5a66 disk.c:166
+ mov si, strict word 00020h ; be 20 00 ; 0xf5a68
+ call 09b90h ; e8 22 41 ; 0xf5a6b
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5a6e
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5a72
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a76 disk.c:171
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5a79
+ jc short 05aceh ; 72 4f ; 0xf5a7d
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5a7f disk.c:175
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5a84 disk.c:176
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5a87
+ mov word [es:di+01ah], 00356h ; 26 c7 45 1a 56 03 ; 0xf5a8b disk.c:177
+ mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5a91 disk.c:180
+ xor ch, ch ; 30 ed ; 0xf5a94
+ mov ax, cx ; 89 c8 ; 0xf5a96
+ cwd ; 99 ; 0xf5a98
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5a99
+ sar ax, 1 ; d1 f8 ; 0xf5a9b
+ xor ah, ah ; 30 e4 ; 0xf5a9d disk.c:181
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5a9f
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5aa2
+ add bx, ax ; 01 c3 ; 0xf5aa5
+ mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5aa7
+ mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf5aac disk.c:182
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5ab1
+ mov al, byte [es:bx+00205h] ; 26 8a 87 05 02 ; 0xf5ab4 disk.c:183
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5ab9
+ imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5abc disk.c:185
+ add bx, word [bp-008h] ; 03 5e f8 ; 0xf5abf
+ mov cl, byte [es:bx+027h] ; 26 8a 4f 27 ; 0xf5ac2
+ test cl, cl ; 84 c9 ; 0xf5ac6 disk.c:187
+ jne short 05ad1h ; 75 07 ; 0xf5ac8
+ xor bx, bx ; 31 db ; 0xf5aca
+ jmp short 05ad4h ; eb 06 ; 0xf5acc
+ jmp near 05b8ah ; e9 b9 00 ; 0xf5ace
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf5ad1
+ or bl, 010h ; 80 cb 10 ; 0xf5ad4 disk.c:188
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5ad7 disk.c:189
+ xor ah, ah ; 30 e4 ; 0xf5ada
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5adc
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5adf
+ add si, ax ; 01 c6 ; 0xf5ae2
+ cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5ae4
+ jne short 05aeeh ; 75 03 ; 0xf5ae9
+ or bl, 060h ; 80 cb 60 ; 0xf5aeb disk.c:190
+ cmp cl, 001h ; 80 f9 01 ; 0xf5aee disk.c:196
+ jne short 05af8h ; 75 05 ; 0xf5af1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5af3
+ jmp short 05afah ; eb 02 ; 0xf5af6
+ xor ax, ax ; 31 c0 ; 0xf5af8
+ or bx, ax ; 09 c3 ; 0xf5afa
+ cmp cl, 003h ; 80 f9 03 ; 0xf5afc disk.c:197
+ jne short 05b06h ; 75 05 ; 0xf5aff
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5b01
+ jmp short 05b08h ; eb 02 ; 0xf5b04
+ xor ax, ax ; 31 c0 ; 0xf5b06
+ or bx, ax ; 09 c3 ; 0xf5b08
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5b0a disk.c:199
+ mov word [es:si+00234h], dx ; 26 89 94 34 02 ; 0xf5b0d
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5b12 disk.c:200
+ mov word [es:si+00236h], ax ; 26 89 84 36 02 ; 0xf5b15
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b1a disk.c:201
+ xor ah, ah ; 30 e4 ; 0xf5b1d
+ cwd ; 99 ; 0xf5b1f
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf5b20
+ idiv cx ; f7 f9 ; 0xf5b23
+ or dl, 00eh ; 80 ca 0e ; 0xf5b25
+ sal dx, 004h ; c1 e2 04 ; 0xf5b28
+ mov byte [es:si+00238h], dl ; 26 88 94 38 02 ; 0xf5b2b
+ mov byte [es:si+00239h], 0cbh ; 26 c6 84 39 02 cb ; 0xf5b30 disk.c:202
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5b36 disk.c:203
+ mov byte [es:si+0023ah], al ; 26 88 84 3a 02 ; 0xf5b39
+ mov word [es:si+0023bh], strict word 00001h ; 26 c7 84 3b 02 01 00 ; 0xf5b3e disk.c:204
+ mov byte [es:si+0023dh], 000h ; 26 c6 84 3d 02 00 ; 0xf5b45 disk.c:206
+ mov word [es:si+0023eh], bx ; 26 89 9c 3e 02 ; 0xf5b4b disk.c:207
+ mov bx, si ; 89 f3 ; 0xf5b50 disk.c:208
+ mov word [es:bx+00240h], strict word 00000h ; 26 c7 87 40 02 00 00 ; 0xf5b52
+ mov byte [es:bx+00242h], 011h ; 26 c6 87 42 02 11 ; 0xf5b59 disk.c:209
+ xor bl, bl ; 30 db ; 0xf5b5f disk.c:211
+ xor bh, bh ; 30 ff ; 0xf5b61 disk.c:212
+ jmp short 05b6ah ; eb 05 ; 0xf5b63
+ cmp bh, 00fh ; 80 ff 0f ; 0xf5b65
+ jnc short 05b80h ; 73 16 ; 0xf5b68
+ mov al, bh ; 88 f8 ; 0xf5b6a disk.c:213
+ xor ah, ah ; 30 e4 ; 0xf5b6c
+ mov si, ax ; 89 c6 ; 0xf5b6e
+ add si, 00356h ; 81 c6 56 03 ; 0xf5b70
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf5b74 disk.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5b77
+ add bl, al ; 00 c3 ; 0xf5b7a disk.c:39
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5b7c disk.c:213
+ jmp short 05b65h ; eb e5 ; 0xf5b7e
+ neg bl ; f6 db ; 0xf5b80 disk.c:214
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5b82 disk.c:215
+ mov byte [es:si+00243h], bl ; 26 88 9c 43 02 ; 0xf5b85
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b8a disk.c:219
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5b8d
+ jnc short 05b96h ; 73 03 ; 0xf5b91
+ jmp near 05c59h ; e9 c3 00 ; 0xf5b93
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5b96 disk.c:223
+ xor ah, ah ; 30 e4 ; 0xf5b99
+ cwd ; 99 ; 0xf5b9b
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5b9c
+ sar ax, 1 ; d1 f8 ; 0xf5b9e
+ xor ah, ah ; 30 e4 ; 0xf5ba0 disk.c:224
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5ba2
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5ba5
+ add bx, ax ; 01 c3 ; 0xf5ba8
+ mov al, byte [es:bx+00204h] ; 26 8a 87 04 02 ; 0xf5baa
+ mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5baf disk.c:225
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bb4 disk.c:227
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5bb7
+ mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5bbc disk.c:228
+ mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5bc2 disk.c:229
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5bc8 disk.c:231
+ test al, al ; 84 c0 ; 0xf5bce disk.c:233
+ jne short 05bdeh ; 75 0c ; 0xf5bd0
+ mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5bd2 disk.c:234
+ mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5bd8 disk.c:236
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5bde disk.c:242
+ mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5be1
+ mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5be7 disk.c:244
+ mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5bed disk.c:246
+ mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5bf3 disk.c:248
+ test al, al ; 84 c0 ; 0xf5bf9 disk.c:251
+ jne short 05c13h ; 75 16 ; 0xf5bfb
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5bfd disk.c:252
+ mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5c01 disk.c:253
+ mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5c07 disk.c:254
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5c0d
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c13 disk.c:259
+ and AL, strict byte 001h ; 24 01 ; 0xf5c16
+ xor ah, ah ; 30 e4 ; 0xf5c18
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c1a
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5c1d
+ mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5c21 disk.c:260
+ mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5c27 disk.c:261
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5c2d
+ xor bl, bl ; 30 db ; 0xf5c33 disk.c:263
+ mov BH, strict byte 01eh ; b7 1e ; 0xf5c35 disk.c:264
+ jmp short 05c3eh ; eb 05 ; 0xf5c37
+ cmp bh, 040h ; 80 ff 40 ; 0xf5c39
+ jnc short 05c50h ; 73 12 ; 0xf5c3c
+ mov al, bh ; 88 f8 ; 0xf5c3e disk.c:265
+ xor ah, ah ; 30 e4 ; 0xf5c40
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c42
+ mov si, di ; 89 fe ; 0xf5c45
+ add si, ax ; 01 c6 ; 0xf5c47
+ add bl, byte [es:si] ; 26 02 1c ; 0xf5c49
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5c4c
+ jmp short 05c39h ; eb e9 ; 0xf5c4e
+ neg bl ; f6 db ; 0xf5c50 disk.c:266
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c52 disk.c:267
+ mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5c55
+ xor ax, ax ; 31 c0 ; 0xf5c59 disk.c:269
+ leave ; c9 ; 0xf5c5b disk.c:270
+ pop di ; 5f ; 0xf5c5c
+ pop si ; 5e ; 0xf5c5d
+ retn 00002h ; c2 02 00 ; 0xf5c5e
+ ; disGetNextSymbol 0xf5c61 LB 0x4267 -> off=0x32 cb=0000000000000431 uValue=00000000000f4693 'int13_harddisk'
+ db 01fh, 05dh, 030h, 05dh, 05dh, 05dh, 05dh, 05dh, 05dh, 05dh, 04fh, 05fh, 086h, 060h, 086h, 060h
+ db 07dh, 05fh, 063h, 060h, 086h, 060h, 086h, 060h, 063h, 060h, 063h, 060h, 086h, 060h, 086h, 060h
+ db 0e8h, 05fh, 063h, 060h, 086h, 060h, 086h, 060h, 063h, 060h, 019h, 060h, 086h, 060h, 086h, 060h
+ db 086h, 060h
+int13_harddisk: ; 0xf5c93 LB 0x431
+ push bp ; 55 ; 0xf5c93 disk.c:272
+ mov bp, sp ; 89 e5 ; 0xf5c94
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5c96
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5c99 disk.c:283
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5c9d disk.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf5ca0
+ mov es, dx ; 8e c2 ; 0xf5ca3
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5ca5
+ mov si, 00122h ; be 22 01 ; 0xf5ca8 disk.c:49
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf5cab
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5cae disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5cb1
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5cb5 disk.c:289
+ xor dh, dh ; 30 f6 ; 0xf5cb8
+ cmp dx, 00080h ; 81 fa 80 00 ; 0xf5cba
+ jc short 05cc6h ; 72 06 ; 0xf5cbe
+ cmp dx, 00090h ; 81 fa 90 00 ; 0xf5cc0
+ jc short 05ce4h ; 72 1e ; 0xf5cc4
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5cc6 disk.c:290
+ xor ah, ah ; 30 e4 ; 0xf5cc9
+ push ax ; 50 ; 0xf5ccb
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ccc
+ shr ax, 008h ; c1 e8 08 ; 0xf5ccf
+ push ax ; 50 ; 0xf5cd2
+ push 0067eh ; 68 7e 06 ; 0xf5cd3
+ push 0068dh ; 68 8d 06 ; 0xf5cd6
+ push strict byte 00004h ; 6a 04 ; 0xf5cd9
+ call 018ffh ; e8 21 bc ; 0xf5cdb
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5cde
+ jmp near 060a1h ; e9 bd 03 ; 0xf5ce1 disk.c:291
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5ce4 disk.c:295
+ xor dh, dh ; 30 f6 ; 0xf5ce7
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5ce9
+ mov bx, si ; 89 f3 ; 0xf5cec
+ add bx, dx ; 01 d3 ; 0xf5cee
+ mov bl, byte [es:bx+00163h] ; 26 8a 9f 63 01 ; 0xf5cf0
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf5cf5
+ cmp bl, 010h ; 80 fb 10 ; 0xf5cf8 disk.c:298
+ jc short 05d0dh ; 72 10 ; 0xf5cfb
+ push dx ; 52 ; 0xf5cfd disk.c:299
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5cfe
+ shr ax, 008h ; c1 e8 08 ; 0xf5d01
+ push ax ; 50 ; 0xf5d04
+ push 0067eh ; 68 7e 06 ; 0xf5d05
+ push 006b8h ; 68 b8 06 ; 0xf5d08
+ jmp short 05cd9h ; eb cc ; 0xf5d0b
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5d0d disk.c:303
+ shr bx, 008h ; c1 eb 08 ; 0xf5d10
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5d13
+ jnbe short 05d5ah ; 77 42 ; 0xf5d16
+ add bx, bx ; 01 db ; 0xf5d18
+ jmp word [cs:bx+05c61h] ; 2e ff a7 61 5c ; 0xf5d1a
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5d1f disk.c:308
+ jnc short 05d2dh ; 73 08 ; 0xf5d23
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5d25 disk.c:310
+ xor ah, ah ; 30 e4 ; 0xf5d28
+ call 01d1dh ; e8 f0 bf ; 0xf5d2a
+ jmp near 05f65h ; e9 35 02 ; 0xf5d2d disk.c:311
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d30 disk.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5d33
+ mov es, ax ; 8e c0 ; 0xf5d36
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5d38
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5d3b disk.c:316
+ xor bh, bh ; 30 ff ; 0xf5d3e
+ mov dl, al ; 88 c2 ; 0xf5d40
+ xor dh, dh ; 30 f6 ; 0xf5d42
+ sal dx, 008h ; c1 e2 08 ; 0xf5d44
+ or bx, dx ; 09 d3 ; 0xf5d47
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5d49
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5d4c disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d4f
+ test al, al ; 84 c0 ; 0xf5d53 disk.c:319
+ je short 05dbch ; 74 65 ; 0xf5d55
+ jmp near 060bdh ; e9 63 03 ; 0xf5d57
+ jmp near 06086h ; e9 29 03 ; 0xf5d5a
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5d5d disk.c:327
+ xor dh, dh ; 30 f6 ; 0xf5d60
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5d62
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5d65 disk.c:328
+ shr di, 008h ; c1 ef 08 ; 0xf5d68
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d6b disk.c:329
+ xor dh, dh ; 30 f6 ; 0xf5d6e
+ sal dx, 002h ; c1 e2 02 ; 0xf5d70
+ xor dl, dl ; 30 d2 ; 0xf5d73
+ and dh, 003h ; 80 e6 03 ; 0xf5d75
+ or di, dx ; 09 d7 ; 0xf5d78
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5d7a disk.c:330
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5d7d
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5d80
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5d83 disk.c:331
+ shr dx, 008h ; c1 ea 08 ; 0xf5d86
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf5d89
+ cmp word [bp-00ah], 00080h ; 81 7e f6 80 00 ; 0xf5d8c disk.c:334
+ jnbe short 05d99h ; 77 06 ; 0xf5d91
+ cmp word [bp-00ah], strict byte 00000h ; 83 7e f6 00 ; 0xf5d93
+ jne short 05dbfh ; 75 26 ; 0xf5d97
+ mov bx, 00da0h ; bb a0 0d ; 0xf5d99 disk.c:335
+ mov cx, ds ; 8c d9 ; 0xf5d9c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5d9e
+ call 018bch ; e8 18 bb ; 0xf5da1
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5da4
+ shr ax, 008h ; c1 e8 08 ; 0xf5da7
+ push ax ; 50 ; 0xf5daa
+ push 0067eh ; 68 7e 06 ; 0xf5dab
+ push 006eah ; 68 ea 06 ; 0xf5dae
+ push strict byte 00004h ; 6a 04 ; 0xf5db1
+ call 018ffh ; e8 49 bb ; 0xf5db3
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5db6
+ jmp near 060a1h ; e9 e5 02 ; 0xf5db9 disk.c:336
+ jmp near 05f69h ; e9 aa 01 ; 0xf5dbc
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5dbf disk.c:340
+ xor dh, dh ; 30 f6 ; 0xf5dc2
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5dc4
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5dc7
+ mov bx, si ; 89 f3 ; 0xf5dca
+ add bx, dx ; 01 d3 ; 0xf5dcc
+ mov dx, word [es:bx+02ch] ; 26 8b 57 2c ; 0xf5dce
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5dd2
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5dd5 disk.c:341
+ mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5dd9 disk.c:342
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf5ddd
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf5de0 disk.c:345
+ jnc short 05df2h ; 73 0d ; 0xf5de3
+ cmp cx, word [bp-006h] ; 3b 4e fa ; 0xf5de5
+ jbe short 05df2h ; 76 08 ; 0xf5de8
+ mov dx, word [bp-004h] ; 8b 56 fc ; 0xf5dea
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf5ded
+ jbe short 05e22h ; 76 30 ; 0xf5df0
+ mov bx, 00da0h ; bb a0 0d ; 0xf5df2 disk.c:346
+ mov cx, ds ; 8c d9 ; 0xf5df5
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5df7
+ call 018bch ; e8 bf ba ; 0xf5dfa
+ push word [bp-004h] ; ff 76 fc ; 0xf5dfd
+ push word [bp-006h] ; ff 76 fa ; 0xf5e00
+ push di ; 57 ; 0xf5e03
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5e04
+ xor ah, ah ; 30 e4 ; 0xf5e07
+ push ax ; 50 ; 0xf5e09
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5e0a
+ shr ax, 008h ; c1 e8 08 ; 0xf5e0d
+ push ax ; 50 ; 0xf5e10
+ push 0067eh ; 68 7e 06 ; 0xf5e11
+ push 00712h ; 68 12 07 ; 0xf5e14
+ push strict byte 00004h ; 6a 04 ; 0xf5e17
+ call 018ffh ; e8 e3 ba ; 0xf5e19
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5e1c
+ jmp near 060a1h ; e9 7f 02 ; 0xf5e1f disk.c:347
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5e22 disk.c:351
+ shr dx, 008h ; c1 ea 08 ; 0xf5e25
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5e28
+ je short 05e4dh ; 74 20 ; 0xf5e2b
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf5e2d disk.c:356
+ xor dh, dh ; 30 f6 ; 0xf5e30
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5e32
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e35
+ mov bx, si ; 89 f3 ; 0xf5e38
+ add bx, dx ; 01 d3 ; 0xf5e3a
+ cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5e3c
+ jne short 05e56h ; 75 14 ; 0xf5e40
+ mov dx, word [es:bx+034h] ; 26 8b 57 34 ; 0xf5e42
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf5e46
+ je short 05e50h ; 74 05 ; 0xf5e49
+ jmp short 05e56h ; eb 09 ; 0xf5e4b
+ jmp near 05f65h ; e9 15 01 ; 0xf5e4d
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e50
+ jc short 05e85h ; 72 2f ; 0xf5e54
+ mov ax, di ; 89 f8 ; 0xf5e56 disk.c:357
+ xor dx, dx ; 31 d2 ; 0xf5e58
+ mov bx, cx ; 89 cb ; 0xf5e5a
+ xor cx, cx ; 31 c9 ; 0xf5e5c
+ call 09b40h ; e8 df 3c ; 0xf5e5e
+ xor bx, bx ; 31 db ; 0xf5e61
+ add ax, word [bp-006h] ; 03 46 fa ; 0xf5e63
+ adc dx, bx ; 11 da ; 0xf5e66
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5e68
+ xor cx, cx ; 31 c9 ; 0xf5e6b
+ call 09b40h ; e8 d0 3c ; 0xf5e6d
+ xor bx, bx ; 31 db ; 0xf5e70
+ add ax, word [bp-004h] ; 03 46 fc ; 0xf5e72
+ adc dx, bx ; 11 da ; 0xf5e75
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf5e77
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5e7a
+ mov ax, dx ; 89 d0 ; 0xf5e7d
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf5e7f
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf5e82 disk.c:358
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5e85 disk.c:365
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5e88
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5e8e disk.c:366
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5e94
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf5e9a disk.c:369
+ mov word [es:si], dx ; 26 89 14 ; 0xf5e9d
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5ea0
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf5ea4
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf5eaa
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5eb0 disk.c:370
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5eb3
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5eb6
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5eba
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5ebe disk.c:371
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5ec1
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5ec5 disk.c:372
+ mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5ecb disk.c:373
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5ecf disk.c:374
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5ed2
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5ed6 disk.c:375
+ mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5ed9
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5edd disk.c:376
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5ee0
+ xor ah, ah ; 30 e4 ; 0xf5ee4 disk.c:378
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5ee6
+ mov bx, si ; 89 f3 ; 0xf5ee9
+ add bx, ax ; 01 c3 ; 0xf5eeb
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf5eed
+ xor ah, ah ; 30 e4 ; 0xf5ef1
+ mov bx, ax ; 89 c3 ; 0xf5ef3
+ sal bx, 002h ; c1 e3 02 ; 0xf5ef5
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ef8
+ shr ax, 008h ; c1 e8 08 ; 0xf5efb
+ add ax, ax ; 01 c0 ; 0xf5efe
+ add bx, ax ; 01 c3 ; 0xf5f00
+ push ES ; 06 ; 0xf5f02
+ push si ; 56 ; 0xf5f03
+ call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5f04
+ mov dx, ax ; 89 c2 ; 0xf5f08
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f0a disk.c:381
+ xor al, al ; 30 c0 ; 0xf5f0d
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5f0f
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5f12
+ or bx, ax ; 09 c3 ; 0xf5f16
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5f18
+ test dl, dl ; 84 d2 ; 0xf5f1b disk.c:383
+ je short 05f65h ; 74 46 ; 0xf5f1d
+ mov bx, 00da0h ; bb a0 0d ; 0xf5f1f disk.c:384
+ mov cx, ds ; 8c d9 ; 0xf5f22
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f24
+ call 018bch ; e8 92 b9 ; 0xf5f27
+ mov al, dl ; 88 d0 ; 0xf5f2a
+ xor ah, ah ; 30 e4 ; 0xf5f2c
+ push ax ; 50 ; 0xf5f2e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f2f
+ shr ax, 008h ; c1 e8 08 ; 0xf5f32
+ push ax ; 50 ; 0xf5f35
+ push 0067eh ; 68 7e 06 ; 0xf5f36
+ push 00759h ; 68 59 07 ; 0xf5f39
+ push strict byte 00004h ; 6a 04 ; 0xf5f3c
+ call 018ffh ; e8 be b9 ; 0xf5f3e
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5f41
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5f44 disk.c:385
+ xor ah, ah ; 30 e4 ; 0xf5f47
+ or ah, 00ch ; 80 cc 0c ; 0xf5f49
+ jmp near 060a9h ; e9 5a 01 ; 0xf5f4c disk.c:386
+ mov bx, 00da0h ; bb a0 0d ; 0xf5f4f disk.c:393
+ mov cx, ds ; 8c d9 ; 0xf5f52
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f54
+ call 018bch ; e8 62 b9 ; 0xf5f57
+ push 0077ah ; 68 7a 07 ; 0xf5f5a
+ push strict byte 00004h ; 6a 04 ; 0xf5f5d
+ call 018ffh ; e8 9d b9 ; 0xf5f5f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5f62
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5f65 disk.c:394
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5f69
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5f6c
+ mov es, ax ; 8e c0 ; 0xf5f6f
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5f71
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5f75
+ mov sp, bp ; 89 ec ; 0xf5f79
+ pop bp ; 5d ; 0xf5f7b
+ retn ; c3 ; 0xf5f7c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f7d disk.c:400
+ xor ah, ah ; 30 e4 ; 0xf5f80
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5f82
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5f85
+ mov di, si ; 89 f7 ; 0xf5f88
+ add di, ax ; 01 c7 ; 0xf5f8a
+ mov bx, word [es:di+02ch] ; 26 8b 5d 2c ; 0xf5f8c
+ mov cx, word [es:di+02ah] ; 26 8b 4d 2a ; 0xf5f90 disk.c:401
+ mov ax, word [es:di+02eh] ; 26 8b 45 2e ; 0xf5f94 disk.c:402
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5f98
+ mov al, byte [es:si+001e2h] ; 26 8a 84 e2 01 ; 0xf5f9b disk.c:404
+ xor ah, ah ; 30 e4 ; 0xf5fa0
+ mov byte [bp+016h], ah ; 88 66 16 ; 0xf5fa2 disk.c:407
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5fa5 disk.c:408
+ xor dh, dh ; 30 f6 ; 0xf5fa8
+ dec bx ; 4b ; 0xf5faa disk.c:406
+ mov si, bx ; 89 de ; 0xf5fab
+ and si, 000ffh ; 81 e6 ff 00 ; 0xf5fad
+ sal si, 008h ; c1 e6 08 ; 0xf5fb1
+ or dx, si ; 09 f2 ; 0xf5fb4
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf5fb6
+ shr bx, 002h ; c1 eb 02 ; 0xf5fb9 disk.c:409
+ and bl, 0c0h ; 80 e3 c0 ; 0xf5fbc
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf5fbf
+ and dl, 03fh ; 80 e2 3f ; 0xf5fc2
+ or dl, bl ; 08 da ; 0xf5fc5
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf5fc7
+ mov bl, dl ; 88 d3 ; 0xf5fca
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf5fcc
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5fcf disk.c:410
+ xor dh, dh ; 30 f6 ; 0xf5fd2
+ sal cx, 008h ; c1 e1 08 ; 0xf5fd4
+ sub cx, 00100h ; 81 e9 00 01 ; 0xf5fd7
+ or dx, cx ; 09 ca ; 0xf5fdb
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5fdd
+ mov dl, al ; 88 c2 ; 0xf5fe0 disk.c:411
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5fe2
+ jmp near 05f65h ; e9 7d ff ; 0xf5fe5 disk.c:416
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5fe8 disk.c:423
+ xor ah, ah ; 30 e4 ; 0xf5feb
+ cwd ; 99 ; 0xf5fed
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5fee
+ sar ax, 1 ; d1 f8 ; 0xf5ff0
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5ff2
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf5ff5
+ add si, ax ; 01 c6 ; 0xf5ff8
+ mov dx, word [es:si+00206h] ; 26 8b 94 06 02 ; 0xf5ffa
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf5fff
+ in AL, DX ; ec ; 0xf6002
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6003
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf6005 disk.c:424
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf6007
+ jne short 0600eh ; 75 03 ; 0xf6009
+ jmp near 05f65h ; e9 57 ff ; 0xf600b disk.c:425
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf600e disk.c:427
+ xor ah, ah ; 30 e4 ; 0xf6011
+ or ah, 0aah ; 80 cc aa ; 0xf6013
+ jmp near 060a9h ; e9 90 00 ; 0xf6016
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6019 disk.c:435
+ xor ah, ah ; 30 e4 ; 0xf601c
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf601e
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf6021
+ add si, ax ; 01 c6 ; 0xf6024
+ mov di, word [es:si+032h] ; 26 8b 7c 32 ; 0xf6026
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf602a disk.c:436
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf602e
+ mov ax, word [es:si+034h] ; 26 8b 44 34 ; 0xf6031 disk.c:437
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf6035
+ mov ax, di ; 89 f8 ; 0xf6038 disk.c:440
+ xor dx, dx ; 31 d2 ; 0xf603a
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf603c
+ xor cx, cx ; 31 c9 ; 0xf603f
+ call 09b40h ; e8 fc 3a ; 0xf6041
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xf6044
+ xor cx, cx ; 31 c9 ; 0xf6047
+ call 09b40h ; e8 f4 3a ; 0xf6049
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf604c
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf604f disk.c:441
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6052 disk.c:442
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6055 disk.c:444
+ xor ah, ah ; 30 e4 ; 0xf6058
+ or ah, 003h ; 80 cc 03 ; 0xf605a
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf605d
+ jmp near 05f69h ; e9 06 ff ; 0xf6060 disk.c:445
+ mov bx, 00da0h ; bb a0 0d ; 0xf6063 disk.c:453
+ mov cx, ds ; 8c d9 ; 0xf6066
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6068
+ call 018bch ; e8 4e b8 ; 0xf606b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf606e
+ shr ax, 008h ; c1 e8 08 ; 0xf6071
+ push ax ; 50 ; 0xf6074
+ push 0067eh ; 68 7e 06 ; 0xf6075
+ push 00794h ; 68 94 07 ; 0xf6078
+ push strict byte 00004h ; 6a 04 ; 0xf607b
+ call 018ffh ; e8 7f b8 ; 0xf607d
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6080
+ jmp near 05f65h ; e9 df fe ; 0xf6083 disk.c:454
+ mov bx, 00da0h ; bb a0 0d ; 0xf6086 disk.c:461
+ mov cx, ds ; 8c d9 ; 0xf6089
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf608b
+ call 018bch ; e8 2b b8 ; 0xf608e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6091
+ shr ax, 008h ; c1 e8 08 ; 0xf6094
+ push ax ; 50 ; 0xf6097
+ push 0067eh ; 68 7e 06 ; 0xf6098
+ push 007c7h ; 68 c7 07 ; 0xf609b
+ jmp near 05db1h ; e9 10 fd ; 0xf609e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60a1 disk.c:467
+ xor ah, ah ; 30 e4 ; 0xf60a4
+ or ah, 001h ; 80 cc 01 ; 0xf60a6
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf60a9
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60ac disk.c:469
+ shr ax, 008h ; c1 e8 08 ; 0xf60af
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf60b2 disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf60b5
+ mov es, dx ; 8e c2 ; 0xf60b8
+ mov byte [es:bx], al ; 26 88 07 ; 0xf60ba
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf60bd disk.c:471
+ jmp near 05f79h ; e9 b5 fe ; 0xf60c1 disk.c:472
+ ; disGetNextSymbol 0xf60c4 LB 0x3e04 -> off=0x20 cb=0000000000000297 uValue=00000000000f4ae4 'int13_harddisk_ext'
+ db 072h, 061h, 0a5h, 061h, 0a5h, 061h, 0a5h, 061h, 063h, 063h, 009h, 063h, 0a5h, 061h, 011h, 063h
+ db 063h, 063h, 08ah, 061h, 08ah, 061h, 08ah, 061h, 08ah, 061h, 02bh, 063h, 08ah, 061h, 08ah, 061h
+int13_harddisk_ext: ; 0xf60e4 LB 0x297
+ push bp ; 55 ; 0xf60e4 disk.c:482
+ mov bp, sp ; 89 e5 ; 0xf60e5
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf60e7
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf60ea disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf60ed
+ mov es, ax ; 8e c0 ; 0xf60f0
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf60f2
+ mov di, 00122h ; bf 22 01 ; 0xf60f5 disk.c:49
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf60f8
+ mov bx, 0008eh ; bb 8e 00 ; 0xf60fb disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf60fe
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6102 disk.c:506
+ xor ah, ah ; 30 e4 ; 0xf6105
+ cmp ax, 00080h ; 3d 80 00 ; 0xf6107
+ jc short 06111h ; 72 05 ; 0xf610a
+ cmp ax, 00090h ; 3d 90 00 ; 0xf610c
+ jc short 0612fh ; 72 1e ; 0xf610f
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6111 disk.c:507
+ xor ah, ah ; 30 e4 ; 0xf6114
+ push ax ; 50 ; 0xf6116
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6117
+ shr ax, 008h ; c1 e8 08 ; 0xf611a
+ push ax ; 50 ; 0xf611d
+ push 007f5h ; 68 f5 07 ; 0xf611e
+ push 0068dh ; 68 8d 06 ; 0xf6121
+ push strict byte 00004h ; 6a 04 ; 0xf6124
+ call 018ffh ; e8 d6 b7 ; 0xf6126
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6129
+ jmp near 06341h ; e9 12 02 ; 0xf612c disk.c:508
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf612f disk.c:512
+ xor ah, ah ; 30 e4 ; 0xf6132
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6134
+ mov bx, di ; 89 fb ; 0xf6137
+ add bx, ax ; 01 c3 ; 0xf6139
+ mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf613b
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf6140
+ cmp dl, 010h ; 80 fa 10 ; 0xf6143 disk.c:515
+ jc short 06158h ; 72 10 ; 0xf6146
+ push ax ; 50 ; 0xf6148 disk.c:516
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6149
+ shr ax, 008h ; c1 e8 08 ; 0xf614c
+ push ax ; 50 ; 0xf614f
+ push 007f5h ; 68 f5 07 ; 0xf6150
+ push 006b8h ; 68 b8 06 ; 0xf6153
+ jmp short 06124h ; eb cc ; 0xf6156
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf6158 disk.c:520
+ shr bx, 008h ; c1 eb 08 ; 0xf615b
+ sub bx, strict byte 00041h ; 83 eb 41 ; 0xf615e
+ cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf6161
+ jnbe short 0618ah ; 77 24 ; 0xf6164
+ add bx, bx ; 01 db ; 0xf6166
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf6168
+ xor ch, ch ; 30 ed ; 0xf616b
+ jmp word [cs:bx+060c4h] ; 2e ff a7 c4 60 ; 0xf616d
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6172 disk.c:522
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6177 disk.c:523
+ xor ah, ah ; 30 e4 ; 0xf617a
+ or ah, 030h ; 80 cc 30 ; 0xf617c
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf617f
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6182 disk.c:524
+ jmp near 06367h ; e9 dd 01 ; 0xf6187 disk.c:525
+ mov bx, 00da0h ; bb a0 0d ; 0xf618a
+ mov cx, ds ; 8c d9 ; 0xf618d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf618f
+ call 018bch ; e8 27 b7 ; 0xf6192
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6195
+ shr ax, 008h ; c1 e8 08 ; 0xf6198
+ push ax ; 50 ; 0xf619b
+ push 007f5h ; 68 f5 07 ; 0xf619c
+ push 007c7h ; 68 c7 07 ; 0xf619f
+ jmp near 06242h ; e9 9d 00 ; 0xf61a2
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf61a5 disk.c:534
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf61a8
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf61ab
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf61ae
+ mov [bp-012h], es ; 8c 46 ee ; 0xf61b1
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf61b4 disk.c:536
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf61b8
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf61bb disk.c:537
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf61bf
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf61c2 disk.c:538
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf61c6
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf61c9 disk.c:541
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf61cd
+ xor ax, ax ; 31 c0 ; 0xf61d1 disk.c:542
+ xor bx, bx ; 31 db ; 0xf61d3
+ mov si, strict word 00020h ; be 20 00 ; 0xf61d5
+ call 09ba0h ; e8 c5 39 ; 0xf61d8
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf61db
+ mov si, bx ; 89 de ; 0xf61de
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf61e0 disk.c:543
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf61e3
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf61e7
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf61ea
+ or dx, word [bp-016h] ; 0b 56 ea ; 0xf61ee
+ or cx, ax ; 09 c1 ; 0xf61f1
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf61f3 disk.c:548
+ xor ah, ah ; 30 e4 ; 0xf61f6
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf61f8
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf61fb
+ mov bx, di ; 89 fb ; 0xf61fe
+ add bx, ax ; 01 c3 ; 0xf6200
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf6202
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf6206
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6209 disk.c:549
+ cmp ax, word [es:bx+03ch] ; 26 3b 47 3c ; 0xf620c
+ jnbe short 0622ah ; 77 18 ; 0xf6210
+ jne short 0624dh ; 75 39 ; 0xf6212
+ cmp si, word [es:bx+03ah] ; 26 3b 77 3a ; 0xf6214
+ jnbe short 0622ah ; 77 10 ; 0xf6218
+ jne short 0624dh ; 75 31 ; 0xf621a
+ cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf621c
+ jnbe short 0622ah ; 77 08 ; 0xf6220
+ jne short 0624dh ; 75 29 ; 0xf6222
+ cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf6224
+ jc short 0624dh ; 72 23 ; 0xf6228
+ mov bx, 00da0h ; bb a0 0d ; 0xf622a disk.c:550
+ mov cx, ds ; 8c d9 ; 0xf622d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf622f
+ call 018bch ; e8 87 b6 ; 0xf6232
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6235
+ shr ax, 008h ; c1 e8 08 ; 0xf6238
+ push ax ; 50 ; 0xf623b
+ push 007f5h ; 68 f5 07 ; 0xf623c
+ push 00808h ; 68 08 08 ; 0xf623f
+ push strict byte 00004h ; 6a 04 ; 0xf6242
+ call 018ffh ; e8 b8 b6 ; 0xf6244
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6247
+ jmp near 06341h ; e9 f4 00 ; 0xf624a disk.c:551
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf624d disk.c:555
+ shr ax, 008h ; c1 e8 08 ; 0xf6250
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6253
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf6256
+ je short 06260h ; 74 05 ; 0xf6259
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf625b
+ jne short 06263h ; 75 03 ; 0xf625e
+ jmp near 06363h ; e9 00 01 ; 0xf6260 disk.c:556
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6263 disk.c:559
+ mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf6266
+ mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf626c disk.c:560
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6272
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6278 disk.c:563
+ mov word [es:di+006h], ax ; 26 89 45 06 ; 0xf627b
+ mov word [es:di+004h], si ; 26 89 75 04 ; 0xf627f
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf6283
+ mov word [es:di], dx ; 26 89 15 ; 0xf6287
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf628a disk.c:564
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf628d
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf6291
+ mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf6294
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf6298 disk.c:565
+ mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf629b
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf629f disk.c:566
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf62a5 disk.c:567
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf62ab disk.c:568
+ mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf62ae
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf62b2 disk.c:571
+ add bx, bx ; 01 db ; 0xf62b5
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf62b7
+ xor ah, ah ; 30 e4 ; 0xf62ba
+ sal ax, 002h ; c1 e0 02 ; 0xf62bc
+ add bx, ax ; 01 c3 ; 0xf62bf
+ push ES ; 06 ; 0xf62c1
+ push di ; 57 ; 0xf62c2
+ call word [word bx-00002h] ; ff 97 fe ff ; 0xf62c3
+ mov dx, ax ; 89 c2 ; 0xf62c7
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf62c9 disk.c:572
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf62cc
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf62d0
+ les bx, [bp-014h] ; c4 5e ec ; 0xf62d3 disk.c:573
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf62d6
+ test dl, dl ; 84 d2 ; 0xf62da disk.c:575
+ je short 06260h ; 74 82 ; 0xf62dc
+ mov bx, 00da0h ; bb a0 0d ; 0xf62de disk.c:576
+ mov cx, ds ; 8c d9 ; 0xf62e1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf62e3
+ call 018bch ; e8 d3 b5 ; 0xf62e6
+ mov al, dl ; 88 d0 ; 0xf62e9
+ xor ah, ah ; 30 e4 ; 0xf62eb
+ push ax ; 50 ; 0xf62ed
+ push word [bp-00ah] ; ff 76 f6 ; 0xf62ee
+ push 007f5h ; 68 f5 07 ; 0xf62f1
+ push 00759h ; 68 59 07 ; 0xf62f4
+ push strict byte 00004h ; 6a 04 ; 0xf62f7
+ call 018ffh ; e8 03 b6 ; 0xf62f9
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf62fc
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62ff disk.c:577
+ xor ah, ah ; 30 e4 ; 0xf6302
+ or ah, 00ch ; 80 cc 0c ; 0xf6304
+ jmp short 06349h ; eb 40 ; 0xf6307 disk.c:578
+ or ch, 0b2h ; 80 cd b2 ; 0xf6309 disk.c:590
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf630c
+ jmp short 0634ch ; eb 3b ; 0xf630f disk.c:591
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf6311 disk.c:595
+ xor ah, ah ; 30 e4 ; 0xf6314
+ push ax ; 50 ; 0xf6316
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6317
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf631a
+ mov bx, di ; 89 fb ; 0xf631d
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf631f
+ call 05965h ; e8 40 f6 ; 0xf6322
+ test ax, ax ; 85 c0 ; 0xf6325
+ je short 06363h ; 74 3a ; 0xf6327
+ jmp short 06341h ; eb 16 ; 0xf6329 disk.c:596
+ cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf632b disk.c:603
+ je short 06363h ; 74 33 ; 0xf632e
+ cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf6330
+ jc short 06341h ; 72 0c ; 0xf6333
+ jbe short 06363h ; 76 2c ; 0xf6335
+ cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6337
+ jc short 06341h ; 72 05 ; 0xf633a
+ cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf633c
+ jbe short 06363h ; 76 22 ; 0xf633f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6341 disk.c:623
+ xor ah, ah ; 30 e4 ; 0xf6344
+ or ah, 001h ; 80 cc 01 ; 0xf6346
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6349
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf634c disk.c:625
+ shr ax, 008h ; c1 e8 08 ; 0xf634f
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6352 disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6355
+ mov es, dx ; 8e c2 ; 0xf6358
+ mov byte [es:bx], al ; 26 88 07 ; 0xf635a
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf635d disk.c:626
+ jmp short 06377h ; eb 14 ; 0xf6361 disk.c:627
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6363 disk.c:630
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6367 disk.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf636a
+ mov es, ax ; 8e c0 ; 0xf636d
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf636f
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6373 disk.c:633
+ mov sp, bp ; 89 ec ; 0xf6377 disk.c:635
+ pop bp ; 5d ; 0xf6379
+ retn ; c3 ; 0xf637a
+ ; disGetNextSymbol 0xf637b LB 0x3b4d -> off=0x0 cb=0000000000000153 uValue=00000000000f4d7b 'int14_function'
+int14_function: ; 0xf637b LB 0x153
+ push bp ; 55 ; 0xf637b serial.c:60
+ mov bp, sp ; 89 e5 ; 0xf637c
+ push si ; 56 ; 0xf637e
+ push di ; 57 ; 0xf637f
+ sti ; fb ; 0xf6380 serial.c:65
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf6381 serial.c:67
+ add si, si ; 01 f6 ; 0xf6384
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6386 serial.c:48
+ mov es, ax ; 8e c0 ; 0xf6389
+ mov si, word [es:si] ; 26 8b 34 ; 0xf638b
+ mov bx, si ; 89 f3 ; 0xf638e serial.c:49
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf6390 serial.c:68
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf6393
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf6396 serial.c:38
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf6399 serial.c:69
+ jnc short 063a3h ; 73 04 ; 0xf639d
+ test si, si ; 85 f6 ; 0xf639f
+ jnbe short 063a6h ; 77 03 ; 0xf63a1
+ jmp near 064c3h ; e9 1d 01 ; 0xf63a3
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf63a6 serial.c:70
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf63a9
+ jc short 063bah ; 72 0d ; 0xf63ab
+ jbe short 0641ah ; 76 6b ; 0xf63ad
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf63af
+ je short 06412h ; 74 5f ; 0xf63b1
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf63b3
+ je short 06415h ; 74 5e ; 0xf63b5
+ jmp near 064bdh ; e9 03 01 ; 0xf63b7
+ test al, al ; 84 c0 ; 0xf63ba
+ jne short 06417h ; 75 59 ; 0xf63bc
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf63be serial.c:72
+ in AL, DX ; ec ; 0xf63c1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf63c2
+ or AL, strict byte 080h ; 0c 80 ; 0xf63c4
+ out DX, AL ; ee ; 0xf63c6
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf63c7
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63ca serial.c:73
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf63cd
+ jne short 063ddh ; 75 0c ; 0xf63cf
+ mov AL, strict byte 017h ; b0 17 ; 0xf63d1 serial.c:74
+ mov dx, bx ; 89 da ; 0xf63d3
+ out DX, AL ; ee ; 0xf63d5
+ mov AL, strict byte 004h ; b0 04 ; 0xf63d6 serial.c:75
+ mov dx, si ; 89 f2 ; 0xf63d8
+ out DX, AL ; ee ; 0xf63da
+ jmp short 063f4h ; eb 17 ; 0xf63db serial.c:76
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf63dd serial.c:77
+ xor ah, ah ; 30 e4 ; 0xf63df
+ sar ax, 005h ; c1 f8 05 ; 0xf63e1
+ mov cl, al ; 88 c1 ; 0xf63e4
+ mov ax, 00600h ; b8 00 06 ; 0xf63e6
+ sar ax, CL ; d3 f8 ; 0xf63e9
+ mov dx, bx ; 89 da ; 0xf63eb
+ out DX, AL ; ee ; 0xf63ed
+ shr ax, 008h ; c1 e8 08 ; 0xf63ee serial.c:79
+ mov dx, si ; 89 f2 ; 0xf63f1
+ out DX, AL ; ee ; 0xf63f3
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf63f4 serial.c:81
+ and AL, strict byte 01fh ; 24 1f ; 0xf63f7
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf63f9
+ out DX, AL ; ee ; 0xf63fc
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf63fd serial.c:82
+ in AL, DX ; ec ; 0xf6400
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6401
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6403
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf6406 serial.c:83
+ in AL, DX ; ec ; 0xf6409
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf640a
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf640c
+ jmp near 0649eh ; e9 8c 00 ; 0xf640f
+ jmp near 064ach ; e9 97 00 ; 0xf6412
+ jmp short 06465h ; eb 4e ; 0xf6415
+ jmp near 064bdh ; e9 a3 00 ; 0xf6417
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf641a serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf641d
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6420 serial.c:88
+ in AL, DX ; ec ; 0xf6423
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6424
+ and ax, strict word 00060h ; 25 60 00 ; 0xf6426
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6429
+ je short 06447h ; 74 19 ; 0xf642c
+ test cl, cl ; 84 c9 ; 0xf642e
+ je short 06447h ; 74 15 ; 0xf6430
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6432 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6435
+ mov es, ax ; 8e c0 ; 0xf6438
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf643a
+ cmp ax, si ; 39 f0 ; 0xf643d serial.c:90
+ je short 06420h ; 74 df ; 0xf643f
+ mov si, ax ; 89 c6 ; 0xf6441 serial.c:91
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf6443 serial.c:92
+ jmp short 06420h ; eb d9 ; 0xf6445 serial.c:94
+ test cl, cl ; 84 c9 ; 0xf6447 serial.c:95
+ je short 06451h ; 74 06 ; 0xf6449
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf644b
+ mov dx, bx ; 89 da ; 0xf644e
+ out DX, AL ; ee ; 0xf6450
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6451 serial.c:96
+ in AL, DX ; ec ; 0xf6454
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6455
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6457
+ test cl, cl ; 84 c9 ; 0xf645a serial.c:97
+ jne short 0649eh ; 75 40 ; 0xf645c
+ or AL, strict byte 080h ; 0c 80 ; 0xf645e
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6460
+ jmp short 0649eh ; eb 39 ; 0xf6463
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6465 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6468
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf646b serial.c:102
+ in AL, DX ; ec ; 0xf646e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf646f
+ test AL, strict byte 001h ; a8 01 ; 0xf6471
+ jne short 0648eh ; 75 19 ; 0xf6473
+ test cl, cl ; 84 c9 ; 0xf6475
+ je short 0648eh ; 74 15 ; 0xf6477
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6479 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf647c
+ mov es, ax ; 8e c0 ; 0xf647f
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf6481
+ cmp ax, si ; 39 f0 ; 0xf6484 serial.c:104
+ je short 0646bh ; 74 e3 ; 0xf6486
+ mov si, ax ; 89 c6 ; 0xf6488 serial.c:105
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf648a serial.c:106
+ jmp short 0646bh ; eb dd ; 0xf648c serial.c:108
+ test cl, cl ; 84 c9 ; 0xf648e serial.c:109
+ je short 064a4h ; 74 12 ; 0xf6490
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6492 serial.c:110
+ mov dx, bx ; 89 da ; 0xf6496 serial.c:111
+ in AL, DX ; ec ; 0xf6498
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6499
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf649b
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf649e serial.c:112
+ jmp short 064c7h ; eb 23 ; 0xf64a2
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf64a4 serial.c:113
+ in AL, DX ; ec ; 0xf64a7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64a8
+ jmp short 06460h ; eb b4 ; 0xf64aa
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf64ac serial.c:118
+ in AL, DX ; ec ; 0xf64af
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64b0
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf64b2
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf64b5 serial.c:119
+ in AL, DX ; ec ; 0xf64b8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64b9
+ jmp short 0649bh ; eb de ; 0xf64bb
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64bd serial.c:123
+ jmp short 064c7h ; eb 04 ; 0xf64c1 serial.c:125
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64c3 serial.c:126
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf64c7 serial.c:128
+ pop di ; 5f ; 0xf64ca
+ pop si ; 5e ; 0xf64cb
+ pop bp ; 5d ; 0xf64cc
+ retn ; c3 ; 0xf64cd
+ ; disGetNextSymbol 0xf64ce LB 0x39fa -> off=0x0 cb=0000000000000043 uValue=00000000000f4ece 'timer_wait'
+timer_wait: ; 0xf64ce LB 0x43
+ push bp ; 55 ; 0xf64ce system.c:289
+ mov bp, sp ; 89 e5 ; 0xf64cf
+ push bx ; 53 ; 0xf64d1
+ push cx ; 51 ; 0xf64d2
+ push ax ; 50 ; 0xf64d3
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf64d4 system.c:296
+ xor cx, cx ; 31 c9 ; 0xf64d7
+ call 09b60h ; e8 84 36 ; 0xf64d9
+ mov cx, ax ; 89 c1 ; 0xf64dc
+ mov bx, dx ; 89 d3 ; 0xf64de
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf64e0 system.c:298
+ in AL, DX ; ec ; 0xf64e3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64e4
+ and AL, strict byte 010h ; 24 10 ; 0xf64e6
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf64e8
+ add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf64eb system.c:299
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf64ee
+ cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf64f1
+ jne short 064fbh ; 75 05 ; 0xf64f4
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf64f6
+ je short 0650ah ; 74 0f ; 0xf64f9
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf64fb system.c:302
+ in AL, DX ; ec ; 0xf64fe
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64ff
+ and AL, strict byte 010h ; 24 10 ; 0xf6501
+ cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf6503 system.c:303
+ jne short 064fbh ; 75 f3 ; 0xf6506
+ jmp short 064ebh ; eb e1 ; 0xf6508 system.c:305
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf650a system.c:306
+ pop cx ; 59 ; 0xf650d
+ pop bx ; 5b ; 0xf650e
+ pop bp ; 5d ; 0xf650f
+ retn ; c3 ; 0xf6510
+ ; disGetNextSymbol 0xf6511 LB 0x39b7 -> off=0x0 cb=0000000000000030 uValue=00000000000f4f11 'set_enable_a20'
+set_enable_a20: ; 0xf6511 LB 0x30
+ push bp ; 55 ; 0xf6511 system.c:308
+ mov bp, sp ; 89 e5 ; 0xf6512
+ push bx ; 53 ; 0xf6514
+ push cx ; 51 ; 0xf6515
+ push dx ; 52 ; 0xf6516
+ mov bx, ax ; 89 c3 ; 0xf6517
+ mov dx, 00092h ; ba 92 00 ; 0xf6519 system.c:315
+ in AL, DX ; ec ; 0xf651c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf651d
+ mov cl, al ; 88 c1 ; 0xf651f
+ test bx, bx ; 85 db ; 0xf6521 system.c:318
+ je short 0652ah ; 74 05 ; 0xf6523
+ or AL, strict byte 002h ; 0c 02 ; 0xf6525 system.c:319
+ out DX, AL ; ee ; 0xf6527
+ jmp short 0652dh ; eb 03 ; 0xf6528 system.c:320
+ and AL, strict byte 0fdh ; 24 fd ; 0xf652a system.c:321
+ out DX, AL ; ee ; 0xf652c
+ test cl, 002h ; f6 c1 02 ; 0xf652d system.c:323
+ je short 06537h ; 74 05 ; 0xf6530
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6532
+ jmp short 06539h ; eb 02 ; 0xf6535
+ xor ax, ax ; 31 c0 ; 0xf6537
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf6539 system.c:324
+ pop dx ; 5a ; 0xf653c
+ pop cx ; 59 ; 0xf653d
+ pop bx ; 5b ; 0xf653e
+ pop bp ; 5d ; 0xf653f
+ retn ; c3 ; 0xf6540
+ ; disGetNextSymbol 0xf6541 LB 0x3987 -> off=0x3b cb=0000000000000318 uValue=00000000000f4f7c 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 076h, 068h, 0b7h, 065h, 017h, 068h, 0cbh, 065h, 017h, 068h, 06fh, 068h, 050h
+ db 066h, 060h, 066h, 000h, 067h, 00dh, 067h, 039h, 067h, 059h, 066h, 059h, 066h, 001h, 068h, 029h
+ db 068h, 03ch, 068h, 017h, 068h, 050h, 068h, 0c1h, 066h, 057h, 068h
+int15_function: ; 0xf657c LB 0x318
+ push bp ; 55 ; 0xf657c system.c:345
+ mov bp, sp ; 89 e5 ; 0xf657d
+ push si ; 56 ; 0xf657f
+ push di ; 57 ; 0xf6580
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6581 system.c:352
+ shr ax, 008h ; c1 e8 08 ; 0xf6584
+ cmp ax, 000ech ; 3d ec 00 ; 0xf6587
+ jnbe short 065c1h ; 77 35 ; 0xf658a
+ push CS ; 0e ; 0xf658c
+ pop ES ; 07 ; 0xf658d
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf658e
+ mov di, 06541h ; bf 41 65 ; 0xf6591
+ repne scasb ; f2 ae ; 0xf6594
+ sal cx, 1 ; d1 e1 ; 0xf6596
+ mov di, cx ; 89 cf ; 0xf6598
+ mov bx, word [cs:di+06554h] ; 2e 8b 9d 54 65 ; 0xf659a
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf659f
+ xor dh, dh ; 30 f6 ; 0xf65a2
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xf65a4
+ and si, strict byte 0fffeh ; 83 e6 fe ; 0xf65a7
+ mov cx, word [bp+018h] ; 8b 4e 18 ; 0xf65aa
+ or cl, 001h ; 80 c9 01 ; 0xf65ad
+ mov ax, dx ; 89 d0 ; 0xf65b0
+ or ah, 086h ; 80 cc 86 ; 0xf65b2
+ jmp bx ; ff e3 ; 0xf65b5
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65b7 system.c:354
+ xor ah, ah ; 30 e4 ; 0xf65ba
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf65bc
+ je short 065c4h ; 74 03 ; 0xf65bf
+ jmp near 06876h ; e9 b2 02 ; 0xf65c1 system.c:355
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf65c4 system.c:361
+ jmp near 06820h ; e9 55 02 ; 0xf65c8
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf65cb system.c:365
+ xor ah, ah ; 30 e4 ; 0xf65ce
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf65d0
+ jc short 065e3h ; 72 0e ; 0xf65d3
+ jbe short 065f7h ; 76 20 ; 0xf65d5
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf65d7
+ je short 06624h ; 74 48 ; 0xf65da
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf65dc
+ je short 06607h ; 74 26 ; 0xf65df
+ jmp short 06631h ; eb 4e ; 0xf65e1
+ test ax, ax ; 85 c0 ; 0xf65e3
+ jne short 06631h ; 75 4a ; 0xf65e5
+ xor ax, ax ; 31 c0 ; 0xf65e7 system.c:367
+ call 06511h ; e8 25 ff ; 0xf65e9
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65ec system.c:368
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf65f0 system.c:369
+ jmp near 06659h ; e9 62 00 ; 0xf65f4 system.c:370
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf65f7 system.c:372
+ call 06511h ; e8 14 ff ; 0xf65fa
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf65fd system.c:373
+ mov byte [bp+013h], dh ; 88 76 13 ; 0xf6601 system.c:374
+ jmp near 06659h ; e9 52 00 ; 0xf6604 system.c:375
+ mov dx, 00092h ; ba 92 00 ; 0xf6607 system.c:377
+ in AL, DX ; ec ; 0xf660a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf660b
+ shr ax, 1 ; d1 e8 ; 0xf660d
+ and ax, strict word 00001h ; 25 01 00 ; 0xf660f
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6612
+ mov dl, al ; 88 c2 ; 0xf6615
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6617
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf661a system.c:378
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf661e system.c:379
+ jmp near 06659h ; e9 35 00 ; 0xf6621 system.c:380
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6624 system.c:382
+ mov byte [bp+013h], dh ; 88 76 13 ; 0xf6628 system.c:383
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf662b system.c:384
+ jmp near 06659h ; e9 28 00 ; 0xf662e system.c:385
+ mov bx, 00da0h ; bb a0 0d ; 0xf6631 system.c:387
+ mov cx, ds ; 8c d9 ; 0xf6634
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6636
+ call 018bch ; e8 80 b2 ; 0xf6639
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf663c
+ xor ah, ah ; 30 e4 ; 0xf663f
+ push ax ; 50 ; 0xf6641
+ push 0082eh ; 68 2e 08 ; 0xf6642
+ push strict byte 00004h ; 6a 04 ; 0xf6645
+ call 018ffh ; e8 b5 b2 ; 0xf6647
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf664a
+ jmp near 06817h ; e9 c7 01 ; 0xf664d
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6650 system.c:414
+ xor al, dl ; 30 d0 ; 0xf6654 system.c:415
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6656
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6659 system.c:416
+ pop di ; 5f ; 0xf665c
+ pop si ; 5e ; 0xf665d
+ pop bp ; 5d ; 0xf665e
+ retn ; c3 ; 0xf665f
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6660 system.c:419
+ jne short 066c9h ; 75 63 ; 0xf6664
+ mov bx, 000a0h ; bb a0 00 ; 0xf6666 system.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6669
+ mov es, dx ; 8e c2 ; 0xf666c
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf666e
+ test dl, 001h ; f6 c2 01 ; 0xf6671 system.c:39
+ jne short 066c1h ; 75 4b ; 0xf6674
+ mov DL, strict byte 001h ; b2 01 ; 0xf6676 system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf6678 system.c:43
+ mov bx, 00098h ; bb 98 00 ; 0xf667b system.c:51
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf667e
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6681 system.c:53
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6684 system.c:51
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf6687
+ mov word [es:bx], dx ; 26 89 17 ; 0xf668a system.c:53
+ mov bx, 0009ch ; bb 9c 00 ; 0xf668d system.c:51
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6690
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6693 system.c:53
+ mov bx, 0009eh ; bb 9e 00 ; 0xf6696 system.c:51
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6699
+ mov word [es:bx], dx ; 26 89 17 ; 0xf669c system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf669f system.c:428
+ mov dx, 000a1h ; ba a1 00 ; 0xf66a3 system.c:429
+ in AL, DX ; ec ; 0xf66a6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf66a7
+ and AL, strict byte 0feh ; 24 fe ; 0xf66a9 system.c:430
+ out DX, AL ; ee ; 0xf66ab
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66ac system.c:431
+ call 01650h ; e8 9e af ; 0xf66af
+ mov dl, al ; 88 c2 ; 0xf66b2 system.c:432
+ or dl, 040h ; 80 ca 40 ; 0xf66b4
+ xor dh, dh ; 30 f6 ; 0xf66b7
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66b9
+ call 0166bh ; e8 ac af ; 0xf66bc
+ jmp short 06659h ; eb 98 ; 0xf66bf system.c:433
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf66c1 system.c:436
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf66c4 system.c:437
+ jmp short 06659h ; eb 90 ; 0xf66c7 system.c:439
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf66c9
+ jne short 066eah ; 75 1c ; 0xf66cc
+ mov bx, 000a0h ; bb a0 00 ; 0xf66ce system.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf66d1
+ mov es, ax ; 8e c0 ; 0xf66d4
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf66d6
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66d9 system.c:442
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf66dd system.c:443
+ call 01650h ; e8 6d af ; 0xf66e0
+ mov dl, al ; 88 c2 ; 0xf66e3 system.c:444
+ and dl, 0bfh ; 80 e2 bf ; 0xf66e5
+ jmp short 066b9h ; eb cf ; 0xf66e8
+ mov word [bp+018h], cx ; 89 4e 18 ; 0xf66ea system.c:447
+ mov bx, ax ; 89 c3 ; 0xf66ed system.c:449
+ xor bh, ah ; 30 e7 ; 0xf66ef
+ xor al, dl ; 30 d0 ; 0xf66f1
+ mov dx, ax ; 89 c2 ; 0xf66f3
+ lea ax, [bx-001h] ; 8d 47 ff ; 0xf66f5
+ or dx, ax ; 09 c2 ; 0xf66f8
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf66fa
+ jmp near 06659h ; e9 59 ff ; 0xf66fd system.c:452
+ sti ; fb ; 0xf6700 system.c:458
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6701 system.c:459
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6704
+ call 064ceh ; e8 c4 fd ; 0xf6707
+ jmp near 06659h ; e9 4c ff ; 0xf670a system.c:460
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf670d system.c:465
+ call 01650h ; e8 3d af ; 0xf6710
+ xor ah, ah ; 30 e4 ; 0xf6713
+ mov dx, ax ; 89 c2 ; 0xf6715
+ sal dx, 008h ; c1 e2 08 ; 0xf6717
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf671a
+ call 01650h ; e8 30 af ; 0xf671d
+ xor ah, ah ; 30 e4 ; 0xf6720
+ or dx, ax ; 09 c2 ; 0xf6722
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6724
+ cmp dx, 03c00h ; 81 fa 00 3c ; 0xf6727 system.c:476
+ jbe short 06732h ; 76 05 ; 0xf672b
+ mov word [bp+012h], 03c00h ; c7 46 12 00 3c ; 0xf672d system.c:477
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6732 system.c:480
+ jmp near 06659h ; e9 20 ff ; 0xf6736 system.c:485
+ cli ; fa ; 0xf6739 system.c:494
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf673a system.c:496
+ call 06511h ; e8 d1 fd ; 0xf673d
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6740 system.c:499
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf6743
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6746 system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6749 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf674e system.c:500
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf6751
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6754 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6757 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf675c system.c:501
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf675f
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6762 system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6765
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6769 system.c:502
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf676c
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf676f system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6772
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6776 system.c:503
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf6779
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf677c system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf677f system.c:53
+ mov AL, strict byte 011h ; b0 11 ; 0xf6784 system.c:506
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf6786
+ out DX, AL ; ee ; 0xf6789
+ mov dx, 000a0h ; ba a0 00 ; 0xf678a system.c:507
+ out DX, AL ; ee ; 0xf678d
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf678e system.c:508
+ shr ax, 008h ; c1 e8 08 ; 0xf6791
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6794
+ out DX, AL ; ee ; 0xf6797
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6798 system.c:509
+ mov dx, 000a1h ; ba a1 00 ; 0xf679b
+ out DX, AL ; ee ; 0xf679e
+ mov AL, strict byte 004h ; b0 04 ; 0xf679f system.c:510
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67a1
+ out DX, AL ; ee ; 0xf67a4
+ mov AL, strict byte 002h ; b0 02 ; 0xf67a5 system.c:511
+ mov dx, 000a1h ; ba a1 00 ; 0xf67a7
+ out DX, AL ; ee ; 0xf67aa
+ mov AL, strict byte 001h ; b0 01 ; 0xf67ab system.c:512
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67ad
+ out DX, AL ; ee ; 0xf67b0
+ mov dx, 000a1h ; ba a1 00 ; 0xf67b1 system.c:513
+ out DX, AL ; ee ; 0xf67b4
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf67b5 system.c:515
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf67b7
+ out DX, AL ; ee ; 0xf67ba
+ mov dx, 000a1h ; ba a1 00 ; 0xf67bb system.c:516
+ out DX, AL ; ee ; 0xf67be
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf67bf system.c:518
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf67c2
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf67c7
+ push strict byte 00038h ; 6a 38 ; 0xf67cc
+ call 067d1h ; e8 00 00 ; 0xf67ce
+ pop ax ; 58 ; 0xf67d1
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf67d2
+ push ax ; 50 ; 0xf67d5
+ smsw ax ; 0f 01 e0 ; 0xf67d6
+ or AL, strict byte 001h ; 0c 01 ; 0xf67d9
+ lmsw ax ; 0f 01 f0 ; 0xf67db
+ retf ; cb ; 0xf67de
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf67df
+ mov ds, ax ; 8e d8 ; 0xf67e2
+ add AL, strict byte 008h ; 04 08 ; 0xf67e4
+ mov es, ax ; 8e c0 ; 0xf67e6
+ add AL, strict byte 008h ; 04 08 ; 0xf67e8
+ mov ss, ax ; 8e d0 ; 0xf67ea
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf67ec system.c:519
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf67ef
+ popaw ; 61 ; 0xf67f1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf67f2
+ pop cx ; 59 ; 0xf67f5
+ pop ax ; 58 ; 0xf67f6
+ pop ax ; 58 ; 0xf67f7
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf67f8
+ push ax ; 50 ; 0xf67fb
+ push cx ; 51 ; 0xf67fc
+ retf ; cb ; 0xf67fd
+ jmp near 06659h ; e9 58 fe ; 0xf67fe system.c:525
+ mov bx, 00da0h ; bb a0 0d ; 0xf6801 system.c:532
+ mov cx, ds ; 8c d9 ; 0xf6804
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6806
+ call 018bch ; e8 b0 b0 ; 0xf6809
+ push 0086eh ; 68 6e 08 ; 0xf680c
+ push strict byte 00004h ; 6a 04 ; 0xf680f
+ call 018ffh ; e8 eb b0 ; 0xf6811
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf6814
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6817
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf681b
+ xor ah, ah ; 30 e4 ; 0xf681e
+ or ah, 086h ; 80 cc 86 ; 0xf6820
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6823
+ jmp near 06659h ; e9 30 fe ; 0xf6826
+ mov word [bp+018h], si ; 89 76 18 ; 0xf6829 system.c:538
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf682c system.c:539
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf682f system.c:540
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf6834 system.c:541
+ jmp near 06659h ; e9 1d fe ; 0xf6839 system.c:542
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf683c system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf683f
+ mov es, ax ; 8e c0 ; 0xf6842
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6844
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6847 system.c:49
+ mov word [bp+018h], si ; 89 76 18 ; 0xf684a system.c:546
+ jmp near 06659h ; e9 09 fe ; 0xf684d system.c:547
+ push 0089dh ; 68 9d 08 ; 0xf6850 system.c:550
+ push strict byte 00008h ; 6a 08 ; 0xf6853
+ jmp short 06811h ; eb ba ; 0xf6855
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf6857 system.c:562
+ jne short 06876h ; 75 19 ; 0xf685b
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf685d system.c:564
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6860 system.c:565
+ xor ah, ah ; 30 e4 ; 0xf6863
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6865
+ jc short 0686fh ; 72 05 ; 0xf6868
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf686a
+ jbe short 0684ah ; 76 db ; 0xf686d
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf686f system.c:568
+ jmp near 06659h ; e9 e3 fd ; 0xf6873 system.c:569
+ mov bx, 00da0h ; bb a0 0d ; 0xf6876 system.c:573
+ mov cx, ds ; 8c d9 ; 0xf6879
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf687b
+ call 018bch ; e8 3b b0 ; 0xf687e
+ push word [bp+00ch] ; ff 76 0c ; 0xf6881
+ push word [bp+012h] ; ff 76 12 ; 0xf6884
+ push 008b4h ; 68 b4 08 ; 0xf6887
+ push strict byte 00004h ; 6a 04 ; 0xf688a
+ call 018ffh ; e8 70 b0 ; 0xf688c
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf688f
+ jmp short 06817h ; eb 83 ; 0xf6892
+ ; disGetNextSymbol 0xf6894 LB 0x3634 -> off=0x0 cb=0000000000000167 uValue=00000000000f5294 'int15_blkmove'
+int15_blkmove: ; 0xf6894 LB 0x167
+ push bp ; 55 ; 0xf6894 system.c:858
+ mov bp, sp ; 89 e5 ; 0xf6895
+ push si ; 56 ; 0xf6897
+ push di ; 57 ; 0xf6898
+ cli ; fa ; 0xf6899 system.c:868
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf689a system.c:870
+ call 06511h ; e8 71 fc ; 0xf689d
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf68a0 system.c:893
+ sal cx, 004h ; c1 e1 04 ; 0xf68a3
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf68a6
+ add ax, cx ; 01 c8 ; 0xf68a9
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68ab system.c:894
+ shr bx, 00ch ; c1 eb 0c ; 0xf68ae
+ mov dl, bl ; 88 da ; 0xf68b1
+ cmp ax, cx ; 39 c8 ; 0xf68b3 system.c:895
+ jnc short 068b9h ; 73 02 ; 0xf68b5
+ db 0feh, 0c2h
+ ; inc dl ; fe c2 ; 0xf68b7 system.c:896
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68b9 system.c:897
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf68bc
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf68bf system.c:51
+ mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf68c2
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68c7 system.c:898
+ add bx, strict byte 0000ah ; 83 c3 0a ; 0xf68ca
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf68cd system.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf68d0
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68d3 system.c:899
+ add bx, strict byte 0000ch ; 83 c3 0c ; 0xf68d6
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf68d9 system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf68dc system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68df system.c:900
+ add bx, strict byte 0000dh ; 83 c3 0d ; 0xf68e2
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf68e5 system.c:41
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf68e8 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68ec system.c:901
+ add bx, strict byte 0000eh ; 83 c3 0e ; 0xf68ef
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf68f2 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf68f5
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf68fa system.c:904
+ add bx, strict byte 00020h ; 83 c3 20 ; 0xf68fd
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6900 system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6903
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6908 system.c:905
+ add bx, strict byte 00022h ; 83 c3 22 ; 0xf690b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf690e system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6911
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6916 system.c:906
+ add bx, strict byte 00024h ; 83 c3 24 ; 0xf6919
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf691c system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf691f
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6923 system.c:907
+ add bx, strict byte 00025h ; 83 c3 25 ; 0xf6926
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6929 system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf692c
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6930 system.c:908
+ add bx, strict byte 00026h ; 83 c3 26 ; 0xf6933
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6936 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6939
+ mov ax, ss ; 8c d0 ; 0xf693e system.c:911
+ mov dx, ax ; 89 c2 ; 0xf6940
+ sal ax, 004h ; c1 e0 04 ; 0xf6942 system.c:912
+ shr dx, 00ch ; c1 ea 0c ; 0xf6945
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6948 system.c:914
+ add bx, strict byte 00028h ; 83 c3 28 ; 0xf694b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf694e system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6951
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6956 system.c:915
+ add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6959
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf695c system.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf695f
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6962 system.c:916
+ add bx, strict byte 0002ch ; 83 c3 2c ; 0xf6965
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6968 system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf696b
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf696e system.c:917
+ add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6971
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6974 system.c:41
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6977 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf697b system.c:918
+ add bx, strict byte 0002eh ; 83 c3 2e ; 0xf697e
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6981 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6984
+ lea bx, [bp+004h] ; 8d 5e 04 ; 0xf6989 system.c:926
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf698c
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf698f
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6992
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6995
+ mov ds, ax ; 8e d8 ; 0xf6997
+ mov word [00467h], bx ; 89 1e 67 04 ; 0xf6999
+ mov [00469h], ss ; 8c 16 69 04 ; 0xf699d
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf69a1 system.c:928
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf69a6
+ push strict byte 00020h ; 6a 20 ; 0xf69ac
+ call 069b1h ; e8 00 00 ; 0xf69ae
+ pop ax ; 58 ; 0xf69b1
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf69b2
+ push ax ; 50 ; 0xf69b5
+ smsw ax ; 0f 01 e0 ; 0xf69b6
+ or AL, strict byte 001h ; 0c 01 ; 0xf69b9
+ lmsw ax ; 0f 01 f0 ; 0xf69bb
+ retf ; cb ; 0xf69be
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf69bf
+ mov ds, ax ; 8e d8 ; 0xf69c2
+ add AL, strict byte 008h ; 04 08 ; 0xf69c4
+ mov es, ax ; 8e c0 ; 0xf69c6
+ add AL, strict byte 010h ; 04 10 ; 0xf69c8
+ mov ss, ax ; 8e d0 ; 0xf69ca
+ db 033h, 0f6h
+ ; xor si, si ; 33 f6 ; 0xf69cc system.c:929
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xf69ce
+ cld ; fc ; 0xf69d0
+ rep movsw ; f3 a5 ; 0xf69d1
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf69d3 system.c:930
+ out strict byte 080h, AL ; e6 80 ; 0xf69d5
+ mov AL, strict byte 00fh ; b0 0f ; 0xf69d7
+ out strict byte 070h, AL ; e6 70 ; 0xf69d9
+ mov AL, strict byte 009h ; b0 09 ; 0xf69db
+ out strict byte 071h, AL ; e6 71 ; 0xf69dd
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf69df
+ int3 ; cc ; 0xf69e5
+ xor ax, ax ; 31 c0 ; 0xf69e6 system.c:931
+ call 06511h ; e8 26 fb ; 0xf69e8
+ sti ; fb ; 0xf69eb system.c:936
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf69ec system.c:938
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf69f0 system.c:939
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf69f4 system.c:940
+ pop di ; 5f ; 0xf69f7
+ pop si ; 5e ; 0xf69f8
+ pop bp ; 5d ; 0xf69f9
+ retn ; c3 ; 0xf69fa
+ ; disGetNextSymbol 0xf69fb LB 0x34cd -> off=0x0 cb=000000000000019b uValue=00000000000f53fb 'inv_op_handler'
+inv_op_handler: ; 0xf69fb LB 0x19b
+ push bp ; 55 ; 0xf69fb invop.c:237
+ mov bp, sp ; 89 e5 ; 0xf69fc
+ push si ; 56 ; 0xf69fe
+ push di ; 57 ; 0xf69ff
+ push ax ; 50 ; 0xf6a00
+ push ax ; 50 ; 0xf6a01
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf6a02 invop.c:239
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6a05 invop.c:241
+ jne short 06a11h ; 75 06 ; 0xf6a09
+ inc word [bp+018h] ; ff 46 18 ; 0xf6a0b invop.c:243
+ jmp near 06b8fh ; e9 7e 01 ; 0xf6a0e invop.c:244
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6a11
+ je short 06a1bh ; 74 03 ; 0xf6a16
+ jmp near 06b8bh ; e9 70 01 ; 0xf6a18
+ mov si, 00800h ; be 00 08 ; 0xf6a1b invop.c:246
+ xor ax, ax ; 31 c0 ; 0xf6a1e
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6a20
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6a23 invop.c:249
+ mov es, ax ; 8e c0 ; 0xf6a26 invop.c:257
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6a28
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6a2c
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6a2f
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6a33 invop.c:258
+ mov es, dx ; 8e c2 ; 0xf6a37
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6a39
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6a3c invop.c:259
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6a3f
+ mov es, dx ; 8e c2 ; 0xf6a43
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6a45
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6a49 invop.c:260
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6a4c
+ mov es, dx ; 8e c2 ; 0xf6a50
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6a52
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6a56 invop.c:263
+ mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6a59
+ xor bh, bh ; 30 ff ; 0xf6a5d
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6a5f
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6a63 invop.c:264
+ xor dx, dx ; 31 d2 ; 0xf6a67
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6a69
+ sal ax, 1 ; d1 e0 ; 0xf6a6c
+ rcl dx, 1 ; d1 d2 ; 0xf6a6e
+ loop 06a6ch ; e2 fa ; 0xf6a70
+ cmp bx, dx ; 39 d3 ; 0xf6a72
+ jne short 06a7ah ; 75 04 ; 0xf6a74
+ cmp di, ax ; 39 c7 ; 0xf6a76
+ je short 06a7fh ; 74 05 ; 0xf6a78
+ mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6a7a invop.c:265
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6a7f invop.c:266
+ mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6a82
+ xor bh, bh ; 30 ff ; 0xf6a86
+ mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6a88
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6a8c invop.c:267
+ xor dx, dx ; 31 d2 ; 0xf6a90
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6a92
+ sal ax, 1 ; d1 e0 ; 0xf6a95
+ rcl dx, 1 ; d1 d2 ; 0xf6a97
+ loop 06a95h ; e2 fa ; 0xf6a99
+ cmp bx, dx ; 39 d3 ; 0xf6a9b
+ jne short 06aa3h ; 75 04 ; 0xf6a9d
+ cmp di, ax ; 39 c7 ; 0xf6a9f
+ je short 06aa7h ; 74 04 ; 0xf6aa1
+ or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6aa3 invop.c:268
+ push strict byte 00000h ; 6a 00 ; 0xf6aa7 invop.c:271
+ push 00800h ; 68 00 08 ; 0xf6aa9
+ push strict byte 0001fh ; 6a 1f ; 0xf6aac
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6aae
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6ab0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6ab4
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6ab7 invop.c:274
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6aba
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6abe
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6ac2 invop.c:275
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6ac6
+ mov al, byte [es:si+039h] ; 26 8a 44 39 ; 0xf6aca invop.c:276
+ xor ah, ah ; 30 e4 ; 0xf6ace
+ mov dx, ax ; 89 c2 ; 0xf6ad0
+ sal dx, 008h ; c1 e2 08 ; 0xf6ad2
+ mov al, byte [es:si+038h] ; 26 8a 44 38 ; 0xf6ad5
+ or dx, ax ; 09 c2 ; 0xf6ad9
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6adb
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6adf invop.c:277
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6ae5 invop.c:280
+ mov word [es:si], ax ; 26 89 04 ; 0xf6ae9
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6aec invop.c:281
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6af0
+ mov al, byte [es:si+04bh] ; 26 8a 44 4b ; 0xf6af4 invop.c:282
+ xor ah, ah ; 30 e4 ; 0xf6af8
+ mov dx, ax ; 89 c2 ; 0xf6afa
+ sal dx, 008h ; c1 e2 08 ; 0xf6afc
+ mov al, byte [es:si+04ah] ; 26 8a 44 4a ; 0xf6aff
+ or dx, ax ; 09 c2 ; 0xf6b03
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6b05
+ mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf6b09 invop.c:285
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6b0d
+ push ax ; 50 ; 0xf6b11 invop.c:286
+ push dx ; 52 ; 0xf6b12
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6b13
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6b17
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf6b19
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6b1d
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6b20 invop.c:289
+ mov ax, 00080h ; b8 80 00 ; 0xf6b23
+ mov ss, ax ; 8e d0 ; 0xf6b26
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6b28
+ mov ds, ax ; 8e d8 ; 0xf6b2c
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6b2e
+ mov es, ax ; 8e c0 ; 0xf6b32
+ smsw ax ; 0f 01 e0 ; 0xf6b34 invop.c:290
+ inc ax ; 40 ; 0xf6b37
+ lmsw ax ; 0f 01 f0 ; 0xf6b38
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6b3b
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6b3e
+ je near 06b48h ; 0f 84 02 00 ; 0xf6b42
+ mov es, ax ; 8e c0 ; 0xf6b46
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6b48
+ je near 06b70h ; 0f 84 20 00 ; 0xf6b4c
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6b50
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6b55
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6b5a
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6b5f
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6b64
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6b69
+ mov ds, ax ; 8e d8 ; 0xf6b6e
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6b70
+ dec ax ; 48 ; 0xf6b73
+ mov cr0, eax ; 0f 22 c0 ; 0xf6b74
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf6b77 invop.c:291
+ popaw ; 61 ; 0xf6b7a
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6b7b
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6b80
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6b83
+ iret ; cf ; 0xf6b88
+ jmp short 06b8fh ; eb 04 ; 0xf6b89 invop.c:343
+ sti ; fb ; 0xf6b8b invop.c:347
+ hlt ; f4 ; 0xf6b8c invop.c:348
+ jmp short 06b8ch ; eb fd ; 0xf6b8d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6b8f invop.c:350
+ pop di ; 5f ; 0xf6b92
+ pop si ; 5e ; 0xf6b93
+ pop bp ; 5d ; 0xf6b94
+ retn ; c3 ; 0xf6b95
+ ; disGetNextSymbol 0xf6b96 LB 0x3332 -> off=0x0 cb=0000000000000028 uValue=00000000000f5596 'init_rtc'
+init_rtc: ; 0xf6b96 LB 0x28
+ push bp ; 55 ; 0xf6b96 timepci.c:74
+ mov bp, sp ; 89 e5 ; 0xf6b97
+ push dx ; 52 ; 0xf6b99
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf6b9a timepci.c:76
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6b9d
+ call 0166bh ; e8 c8 aa ; 0xf6ba0
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf6ba3 timepci.c:77
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6ba6
+ call 0166bh ; e8 bf aa ; 0xf6ba9
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bac timepci.c:78
+ call 01650h ; e8 9e aa ; 0xf6baf
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6bb2 timepci.c:79
+ call 01650h ; e8 98 aa ; 0xf6bb5
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bb8 timepci.c:80
+ pop dx ; 5a ; 0xf6bbb
+ pop bp ; 5d ; 0xf6bbc
+ retn ; c3 ; 0xf6bbd
+ ; disGetNextSymbol 0xf6bbe LB 0x330a -> off=0x0 cb=0000000000000021 uValue=00000000000f55be 'rtc_updating'
+rtc_updating: ; 0xf6bbe LB 0x21
+ push bp ; 55 ; 0xf6bbe timepci.c:82
+ mov bp, sp ; 89 e5 ; 0xf6bbf
+ push dx ; 52 ; 0xf6bc1
+ mov dx, 061a8h ; ba a8 61 ; 0xf6bc2 timepci.c:95
+ dec dx ; 4a ; 0xf6bc5 timepci.c:96
+ je short 06bd6h ; 74 0e ; 0xf6bc6
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6bc8 timepci.c:97
+ call 01650h ; e8 82 aa ; 0xf6bcb
+ test AL, strict byte 080h ; a8 80 ; 0xf6bce
+ jne short 06bc5h ; 75 f3 ; 0xf6bd0
+ xor ax, ax ; 31 c0 ; 0xf6bd2 timepci.c:98
+ jmp short 06bd9h ; eb 03 ; 0xf6bd4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6bd6 timepci.c:100
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bd9 timepci.c:101
+ pop dx ; 5a ; 0xf6bdc
+ pop bp ; 5d ; 0xf6bdd
+ retn ; c3 ; 0xf6bde
+ ; disGetNextSymbol 0xf6bdf LB 0x32e9 -> off=0x0 cb=0000000000000098 uValue=00000000000f55df 'int70_function'
+int70_function: ; 0xf6bdf LB 0x98
+ push bp ; 55 ; 0xf6bdf timepci.c:110
+ mov bp, sp ; 89 e5 ; 0xf6be0
+ push si ; 56 ; 0xf6be2
+ push ax ; 50 ; 0xf6be3
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6be4 timepci.c:116
+ call 01650h ; e8 66 aa ; 0xf6be7
+ mov bl, al ; 88 c3 ; 0xf6bea
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6bec
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bef timepci.c:117
+ call 01650h ; e8 5b aa ; 0xf6bf2
+ mov dl, al ; 88 c2 ; 0xf6bf5
+ test bl, 060h ; f6 c3 60 ; 0xf6bf7 timepci.c:119
+ je short 06c57h ; 74 5b ; 0xf6bfa
+ test AL, strict byte 020h ; a8 20 ; 0xf6bfc timepci.c:120
+ je short 06c04h ; 74 04 ; 0xf6bfe
+ sti ; fb ; 0xf6c00 timepci.c:122
+ int 04ah ; cd 4a ; 0xf6c01 timepci.c:123
+ cli ; fa ; 0xf6c03 timepci.c:124
+ test dl, 040h ; f6 c2 40 ; 0xf6c04 timepci.c:126
+ je short 06c6eh ; 74 65 ; 0xf6c07
+ mov bx, 000a0h ; bb a0 00 ; 0xf6c09 timepci.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6c0c
+ mov es, dx ; 8e c2 ; 0xf6c0f
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c11
+ test al, al ; 84 c0 ; 0xf6c14 timepci.c:39
+ je short 06c6eh ; 74 56 ; 0xf6c16
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6c18 timepci.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6c1b
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6c1e
+ test bx, bx ; 85 db ; 0xf6c22 timepci.c:134
+ jne short 06c59h ; 75 33 ; 0xf6c24
+ cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6c26
+ jnc short 06c59h ; 73 2d ; 0xf6c2a
+ mov bx, 00098h ; bb 98 00 ; 0xf6c2c timepci.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf6c2f
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6c32 timepci.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6c35
+ mov si, 000a0h ; be a0 00 ; 0xf6c38 timepci.c:43
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6c3b
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6c3f timepci.c:141
+ and dl, 037h ; 80 e2 37 ; 0xf6c42
+ xor dh, dh ; 30 f6 ; 0xf6c45
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c47
+ call 0166bh ; e8 1e aa ; 0xf6c4a
+ mov es, cx ; 8e c1 ; 0xf6c4d timepci.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c4f
+ or AL, strict byte 080h ; 0c 80 ; 0xf6c52 timepci.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6c54 timepci.c:43
+ jmp short 06c6eh ; eb 15 ; 0xf6c57 timepci.c:143
+ mov cx, dx ; 89 d1 ; 0xf6c59 timepci.c:145
+ add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6c5b
+ mov dx, bx ; 89 da ; 0xf6c5f
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6c61
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6c64 timepci.c:63
+ mov word [es:bx], cx ; 26 89 0f ; 0xf6c67
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6c6a
+ call 0e030h ; e8 bf 73 ; 0xf6c6e timepci.c:151
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6c71 timepci.c:152
+ pop si ; 5e ; 0xf6c74
+ pop bp ; 5d ; 0xf6c75
+ retn ; c3 ; 0xf6c76
+ ; disGetNextSymbol 0xf6c77 LB 0x3251 -> off=0x10 cb=00000000000001d9 uValue=00000000000f5687 'int1a_function'
+ db 09dh, 06ch, 0c4h, 06ch, 0e9h, 06ch, 025h, 06dh, 077h, 06dh, 0aeh, 06dh, 0f5h, 06dh, 050h, 06eh
+int1a_function: ; 0xf6c87 LB 0x1d9
+ push bp ; 55 ; 0xf6c87 timepci.c:157
+ mov bp, sp ; 89 e5 ; 0xf6c88
+ sti ; fb ; 0xf6c8a timepci.c:163
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6c8b timepci.c:165
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf6c8e
+ jnbe short 06cf0h ; 77 5e ; 0xf6c90
+ mov bl, al ; 88 c3 ; 0xf6c92
+ xor bh, bh ; 30 ff ; 0xf6c94
+ add bx, bx ; 01 db ; 0xf6c96
+ jmp word [cs:bx+06c77h] ; 2e ff a7 77 6c ; 0xf6c98
+ cli ; fa ; 0xf6c9d timepci.c:167
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6c9e timepci.c:168
+ xor ax, ax ; 31 c0 ; 0xf6ca1
+ mov es, ax ; 8e c0 ; 0xf6ca3
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6ca5
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf6ca8
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6cab timepci.c:169
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6cae
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf6cb1
+ mov bx, 00470h ; bb 70 04 ; 0xf6cb4 timepci.c:170
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6cb7
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6cba
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cbd timepci.c:171
+ sti ; fb ; 0xf6cc1 timepci.c:172
+ jmp short 06cf0h ; eb 2c ; 0xf6cc2 timepci.c:175
+ cli ; fa ; 0xf6cc4 timepci.c:178
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6cc5 timepci.c:179
+ xor ax, ax ; 31 c0 ; 0xf6cc8
+ mov es, ax ; 8e c0 ; 0xf6cca
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6ccc
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6ccf
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6cd2 timepci.c:180
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6cd5
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6cd8
+ mov bx, 00470h ; bb 70 04 ; 0xf6cdb timepci.c:181
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cde
+ sti ; fb ; 0xf6ce2 timepci.c:182
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6ce3 timepci.c:183
+ jmp short 06cf0h ; eb 07 ; 0xf6ce7 timepci.c:185
+ call 06bbeh ; e8 d2 fe ; 0xf6ce9 timepci.c:188
+ test ax, ax ; 85 c0 ; 0xf6cec
+ je short 06cf3h ; 74 03 ; 0xf6cee
+ jmp near 06d21h ; e9 2e 00 ; 0xf6cf0 timepci.c:190
+ xor ax, ax ; 31 c0 ; 0xf6cf3 timepci.c:193
+ call 01650h ; e8 58 a9 ; 0xf6cf5
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6cf8
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6cfb timepci.c:194
+ call 01650h ; e8 4f a9 ; 0xf6cfe
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6d01
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d04 timepci.c:195
+ call 01650h ; e8 46 a9 ; 0xf6d07
+ mov dl, al ; 88 c2 ; 0xf6d0a
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6d0c
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d0f timepci.c:196
+ call 01650h ; e8 3b a9 ; 0xf6d12
+ and AL, strict byte 001h ; 24 01 ; 0xf6d15
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d17
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d1a timepci.c:197
+ mov byte [bp+012h], dl ; 88 56 12 ; 0xf6d1e timepci.c:198
+ mov sp, bp ; 89 ec ; 0xf6d21 timepci.c:200
+ pop bp ; 5d ; 0xf6d23
+ retn ; c3 ; 0xf6d24
+ call 06bbeh ; e8 96 fe ; 0xf6d25 timepci.c:213
+ test ax, ax ; 85 c0 ; 0xf6d28
+ je short 06d2fh ; 74 03 ; 0xf6d2a
+ call 06b96h ; e8 67 fe ; 0xf6d2c timepci.c:214
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6d2f timepci.c:217
+ xor dh, dh ; 30 f6 ; 0xf6d32
+ xor ax, ax ; 31 c0 ; 0xf6d34
+ call 0166bh ; e8 32 a9 ; 0xf6d36
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d39 timepci.c:218
+ xor dh, dh ; 30 f6 ; 0xf6d3c
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6d3e
+ call 0166bh ; e8 27 a9 ; 0xf6d41
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6d44 timepci.c:219
+ xor dh, dh ; 30 f6 ; 0xf6d47
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d49
+ call 0166bh ; e8 1c a9 ; 0xf6d4c
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d4f timepci.c:221
+ call 01650h ; e8 fb a8 ; 0xf6d52
+ mov bl, al ; 88 c3 ; 0xf6d55
+ and bl, 060h ; 80 e3 60 ; 0xf6d57
+ or bl, 002h ; 80 cb 02 ; 0xf6d5a
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6d5d
+ and AL, strict byte 001h ; 24 01 ; 0xf6d60
+ or bl, al ; 08 c3 ; 0xf6d62
+ mov dl, bl ; 88 da ; 0xf6d64 timepci.c:223
+ xor dh, dh ; 30 f6 ; 0xf6d66
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d68
+ call 0166bh ; e8 fd a8 ; 0xf6d6b
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d6e timepci.c:224
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6d72 timepci.c:225
+ jmp short 06d21h ; eb aa ; 0xf6d75 timepci.c:227
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d77 timepci.c:230
+ call 06bbeh ; e8 40 fe ; 0xf6d7b timepci.c:231
+ test ax, ax ; 85 c0 ; 0xf6d7e
+ je short 06d84h ; 74 02 ; 0xf6d80
+ jmp short 06d21h ; eb 9d ; 0xf6d82 timepci.c:233
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6d84 timepci.c:235
+ call 01650h ; e8 c6 a8 ; 0xf6d87
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6d8a
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6d8d timepci.c:236
+ call 01650h ; e8 bd a8 ; 0xf6d90
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6d93
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6d96 timepci.c:237
+ call 01650h ; e8 b4 a8 ; 0xf6d99
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d9c
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6d9f timepci.c:238
+ call 01650h ; e8 ab a8 ; 0xf6da2
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6da5
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6da8 timepci.c:239
+ jmp near 06d21h ; e9 73 ff ; 0xf6dab timepci.c:241
+ call 06bbeh ; e8 0d fe ; 0xf6dae timepci.c:254
+ test ax, ax ; 85 c0 ; 0xf6db1
+ je short 06dbbh ; 74 06 ; 0xf6db3
+ call 06b96h ; e8 de fd ; 0xf6db5 timepci.c:255
+ jmp near 06d21h ; e9 66 ff ; 0xf6db8 timepci.c:257
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6dbb timepci.c:259
+ xor dh, dh ; 30 f6 ; 0xf6dbe
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6dc0
+ call 0166bh ; e8 a5 a8 ; 0xf6dc3
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6dc6 timepci.c:260
+ xor dh, dh ; 30 f6 ; 0xf6dc9
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6dcb
+ call 0166bh ; e8 9a a8 ; 0xf6dce
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6dd1 timepci.c:261
+ xor dh, dh ; 30 f6 ; 0xf6dd4
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6dd6
+ call 0166bh ; e8 8f a8 ; 0xf6dd9
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6ddc timepci.c:262
+ xor dh, dh ; 30 f6 ; 0xf6ddf
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6de1
+ call 0166bh ; e8 84 a8 ; 0xf6de4
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6de7 timepci.c:263
+ call 01650h ; e8 63 a8 ; 0xf6dea
+ mov bl, al ; 88 c3 ; 0xf6ded
+ and bl, 07fh ; 80 e3 7f ; 0xf6def
+ jmp near 06d64h ; e9 6f ff ; 0xf6df2
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6df5 timepci.c:281
+ call 01650h ; e8 55 a8 ; 0xf6df8
+ mov bl, al ; 88 c3 ; 0xf6dfb
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6dfd timepci.c:282
+ test AL, strict byte 020h ; a8 20 ; 0xf6e02 timepci.c:283
+ je short 06e09h ; 74 03 ; 0xf6e04
+ jmp near 06d21h ; e9 18 ff ; 0xf6e06 timepci.c:286
+ call 06bbeh ; e8 b2 fd ; 0xf6e09 timepci.c:288
+ test ax, ax ; 85 c0 ; 0xf6e0c
+ je short 06e13h ; 74 03 ; 0xf6e0e
+ call 06b96h ; e8 83 fd ; 0xf6e10 timepci.c:289
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6e13 timepci.c:292
+ xor dh, dh ; 30 f6 ; 0xf6e16
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6e18
+ call 0166bh ; e8 4d a8 ; 0xf6e1b
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6e1e timepci.c:293
+ xor dh, dh ; 30 f6 ; 0xf6e21
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf6e23
+ call 0166bh ; e8 42 a8 ; 0xf6e26
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6e29 timepci.c:294
+ xor dh, dh ; 30 f6 ; 0xf6e2c
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf6e2e
+ call 0166bh ; e8 37 a8 ; 0xf6e31
+ mov dx, 000a1h ; ba a1 00 ; 0xf6e34 timepci.c:295
+ in AL, DX ; ec ; 0xf6e37
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e38
+ and AL, strict byte 0feh ; 24 fe ; 0xf6e3a
+ out DX, AL ; ee ; 0xf6e3c
+ mov dl, bl ; 88 da ; 0xf6e3d timepci.c:297
+ and dl, 05fh ; 80 e2 5f ; 0xf6e3f
+ or dl, 020h ; 80 ca 20 ; 0xf6e42
+ xor dh, dh ; 30 f6 ; 0xf6e45
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e47
+ call 0166bh ; e8 1e a8 ; 0xf6e4a
+ jmp near 06d21h ; e9 d1 fe ; 0xf6e4d timepci.c:299
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e50 timepci.c:312
+ call 01650h ; e8 fa a7 ; 0xf6e53
+ mov bl, al ; 88 c3 ; 0xf6e56
+ mov dl, al ; 88 c2 ; 0xf6e58 timepci.c:314
+ and dl, 057h ; 80 e2 57 ; 0xf6e5a
+ jmp near 06d66h ; e9 06 ff ; 0xf6e5d
+ ; disGetNextSymbol 0xf6e60 LB 0x3068 -> off=0x0 cb=0000000000000034 uValue=00000000000f5860 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf6e60 LB 0x34
+ push bp ; 55 ; 0xf6e60 ps2mouse.c:77
+ mov bp, sp ; 89 e5 ; 0xf6e61
+ push bx ; 53 ; 0xf6e63
+ push dx ; 52 ; 0xf6e64
+ mov bl, al ; 88 c3 ; 0xf6e65
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6e67 ps2mouse.c:81
+ in AL, DX ; ec ; 0xf6e6a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e6b
+ test AL, strict byte 002h ; a8 02 ; 0xf6e6d
+ je short 06e7fh ; 74 0e ; 0xf6e6f
+ push 008eeh ; 68 ee 08 ; 0xf6e71 ps2mouse.c:82
+ push 01168h ; 68 68 11 ; 0xf6e74
+ push strict byte 00007h ; 6a 07 ; 0xf6e77
+ call 018ffh ; e8 83 aa ; 0xf6e79
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6e7c
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf6e7f ps2mouse.c:83
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6e81
+ out DX, AL ; ee ; 0xf6e84
+ mov al, bl ; 88 d8 ; 0xf6e85 ps2mouse.c:84
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6e87
+ out DX, AL ; ee ; 0xf6e8a
+ xor al, bl ; 30 d8 ; 0xf6e8b ps2mouse.c:86
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e8d
+ pop dx ; 5a ; 0xf6e90
+ pop bx ; 5b ; 0xf6e91
+ pop bp ; 5d ; 0xf6e92
+ retn ; c3 ; 0xf6e93
+ ; disGetNextSymbol 0xf6e94 LB 0x3034 -> off=0x0 cb=000000000000005d uValue=00000000000f5894 'get_mouse_data'
+get_mouse_data: ; 0xf6e94 LB 0x5d
+ push bp ; 55 ; 0xf6e94 ps2mouse.c:89
+ mov bp, sp ; 89 e5 ; 0xf6e95
+ push bx ; 53 ; 0xf6e97
+ push cx ; 51 ; 0xf6e98
+ push ax ; 50 ; 0xf6e99
+ mov bx, ax ; 89 c3 ; 0xf6e9a
+ mov es, dx ; 8e c2 ; 0xf6e9c
+ mov cx, 02710h ; b9 10 27 ; 0xf6e9e ps2mouse.c:91
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6ea1 ps2mouse.c:94
+ in AL, DX ; ec ; 0xf6ea4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ea5
+ and ax, strict word 00021h ; 25 21 00 ; 0xf6ea7
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6eaa
+ je short 06ed7h ; 74 28 ; 0xf6ead
+ test cx, cx ; 85 c9 ; 0xf6eaf
+ je short 06ed7h ; 74 24 ; 0xf6eb1
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6eb3 ps2mouse.c:97
+ in AL, DX ; ec ; 0xf6eb6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6eb7
+ and AL, strict byte 010h ; 24 10 ; 0xf6eb9
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6ebb
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6ebe ps2mouse.c:98
+ in AL, DX ; ec ; 0xf6ec1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ec2
+ mov dx, ax ; 89 c2 ; 0xf6ec4
+ xor dh, ah ; 30 e6 ; 0xf6ec6
+ and dl, 010h ; 80 e2 10 ; 0xf6ec8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6ecb
+ xor ah, ah ; 30 e4 ; 0xf6ece
+ cmp dx, ax ; 39 c2 ; 0xf6ed0
+ je short 06ebeh ; 74 ea ; 0xf6ed2
+ dec cx ; 49 ; 0xf6ed4 ps2mouse.c:100
+ jmp short 06ea1h ; eb ca ; 0xf6ed5 ps2mouse.c:101
+ test cx, cx ; 85 c9 ; 0xf6ed7 ps2mouse.c:103
+ jne short 06edfh ; 75 04 ; 0xf6ed9
+ mov AL, strict byte 001h ; b0 01 ; 0xf6edb ps2mouse.c:104
+ jmp short 06eeah ; eb 0b ; 0xf6edd
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6edf ps2mouse.c:106
+ in AL, DX ; ec ; 0xf6ee2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ee3
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6ee5 ps2mouse.c:107
+ xor al, al ; 30 c0 ; 0xf6ee8 ps2mouse.c:108
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6eea ps2mouse.c:109
+ pop cx ; 59 ; 0xf6eed
+ pop bx ; 5b ; 0xf6eee
+ pop bp ; 5d ; 0xf6eef
+ retn ; c3 ; 0xf6ef0
+ ; disGetNextSymbol 0xf6ef1 LB 0x2fd7 -> off=0x0 cb=0000000000000032 uValue=00000000000f58f1 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf6ef1 LB 0x32
+ push bp ; 55 ; 0xf6ef1 ps2mouse.c:111
+ mov bp, sp ; 89 e5 ; 0xf6ef2
+ push bx ; 53 ; 0xf6ef4
+ push dx ; 52 ; 0xf6ef5
+ mov bl, al ; 88 c3 ; 0xf6ef6
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6ef8 ps2mouse.c:113
+ in AL, DX ; ec ; 0xf6efb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6efc
+ test AL, strict byte 002h ; a8 02 ; 0xf6efe
+ je short 06f10h ; 74 0e ; 0xf6f00
+ push 008f8h ; 68 f8 08 ; 0xf6f02 ps2mouse.c:114
+ push 01168h ; 68 68 11 ; 0xf6f05
+ push strict byte 00007h ; 6a 07 ; 0xf6f08
+ call 018ffh ; e8 f2 a9 ; 0xf6f0a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f0d
+ mov AL, strict byte 060h ; b0 60 ; 0xf6f10 ps2mouse.c:116
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f12
+ out DX, AL ; ee ; 0xf6f15
+ mov al, bl ; 88 d8 ; 0xf6f16 ps2mouse.c:117
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f18
+ out DX, AL ; ee ; 0xf6f1b
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f1c ps2mouse.c:118
+ pop dx ; 5a ; 0xf6f1f
+ pop bx ; 5b ; 0xf6f20
+ pop bp ; 5d ; 0xf6f21
+ retn ; c3 ; 0xf6f22
+ ; disGetNextSymbol 0xf6f23 LB 0x2fa5 -> off=0x0 cb=000000000000009e uValue=00000000000f5923 'int74_function'
+int74_function: ; 0xf6f23 LB 0x9e
+ push bp ; 55 ; 0xf6f23 ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf6f24
+ push si ; 56 ; 0xf6f26
+ push ax ; 50 ; 0xf6f27
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6f28 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6f2b
+ mov es, ax ; 8e c0 ; 0xf6f2e
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6f30
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6f33 ps2mouse.c:129
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f38 ps2mouse.c:131
+ in AL, DX ; ec ; 0xf6f3b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f3c
+ and AL, strict byte 021h ; 24 21 ; 0xf6f3e ps2mouse.c:132
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf6f40
+ jne short 06f62h ; 75 1e ; 0xf6f42
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f44 ps2mouse.c:135
+ in AL, DX ; ec ; 0xf6f47
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f48
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6f4a
+ mov si, strict word 00026h ; be 26 00 ; 0xf6f4d ps2mouse.c:38
+ mov es, bx ; 8e c3 ; 0xf6f50
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f52
+ mov si, strict word 00027h ; be 27 00 ; 0xf6f55 ps2mouse.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf6f58
+ mov cl, ah ; 88 e1 ; 0xf6f5b ps2mouse.c:39
+ test ah, 080h ; f6 c4 80 ; 0xf6f5d ps2mouse.c:141
+ jne short 06f64h ; 75 02 ; 0xf6f60
+ jmp short 06fbbh ; eb 57 ; 0xf6f62 ps2mouse.c:142
+ mov ch, cl ; 88 cd ; 0xf6f64 ps2mouse.c:145
+ and ch, 007h ; 80 e5 07 ; 0xf6f66
+ mov ah, al ; 88 c4 ; 0xf6f69 ps2mouse.c:146
+ and ah, 007h ; 80 e4 07 ; 0xf6f6b
+ mov dl, ah ; 88 e2 ; 0xf6f6e ps2mouse.c:147
+ xor dh, dh ; 30 f6 ; 0xf6f70
+ mov si, dx ; 89 d6 ; 0xf6f72
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf6f74
+ mov es, bx ; 8e c3 ; 0xf6f77 ps2mouse.c:43
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6f79
+ mov byte [es:si], dl ; 26 88 14 ; 0xf6f7c
+ cmp ah, ch ; 38 ec ; 0xf6f7f ps2mouse.c:149
+ jc short 06fb1h ; 72 2e ; 0xf6f81
+ mov si, strict word 00028h ; be 28 00 ; 0xf6f83 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f86
+ xor ah, ah ; 30 e4 ; 0xf6f89 ps2mouse.c:39
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6f8b
+ mov si, strict word 00029h ; be 29 00 ; 0xf6f8e ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f91
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6f94 ps2mouse.c:39
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf6f97 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f9a
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6f9d ps2mouse.c:39
+ xor al, al ; 30 c0 ; 0xf6fa0 ps2mouse.c:154
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6fa2
+ test cl, 080h ; f6 c1 80 ; 0xf6fa5 ps2mouse.c:157
+ je short 06fb3h ; 74 09 ; 0xf6fa8
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6faa ps2mouse.c:158
+ jmp short 06fb3h ; eb 02 ; 0xf6faf ps2mouse.c:160
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6fb1 ps2mouse.c:161
+ mov si, strict word 00026h ; be 26 00 ; 0xf6fb3 ps2mouse.c:43
+ mov es, bx ; 8e c3 ; 0xf6fb6
+ mov byte [es:si], al ; 26 88 04 ; 0xf6fb8
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6fbb ps2mouse.c:164
+ pop si ; 5e ; 0xf6fbe
+ pop bp ; 5d ; 0xf6fbf
+ retn ; c3 ; 0xf6fc0
+ ; disGetNextSymbol 0xf6fc1 LB 0x2f07 -> off=0x10 cb=000000000000036c uValue=00000000000f59d1 'int15_function_mouse'
+ db 012h, 070h, 083h, 070h, 0f6h, 070h, 088h, 071h, 0f4h, 071h, 058h, 070h, 01ch, 072h, 0e5h, 072h
+int15_function_mouse: ; 0xf6fd1 LB 0x36c
+ push bp ; 55 ; 0xf6fd1 ps2mouse.c:166
+ mov bp, sp ; 89 e5 ; 0xf6fd2
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6fd4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6fd7 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6fda
+ mov es, ax ; 8e c0 ; 0xf6fdd
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6fdf
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6fe2 ps2mouse.c:188
+ jbe short 06ff3h ; 76 0b ; 0xf6fe6
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6fe8 ps2mouse.c:191
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6fec ps2mouse.c:192
+ jmp near 07339h ; e9 46 03 ; 0xf6ff0 ps2mouse.c:193
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf6ff3 ps2mouse.c:197
+ call 06ef1h ; e8 f8 fe ; 0xf6ff6
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6ff9 ps2mouse.c:198
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6ffd ps2mouse.c:199
+ mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf7001 ps2mouse.c:201
+ cmp bl, 007h ; 80 fb 07 ; 0xf7004
+ jnbe short 07066h ; 77 5d ; 0xf7007
+ xor bh, bh ; 30 ff ; 0xf7009
+ add bx, bx ; 01 db ; 0xf700b
+ jmp word [cs:bx+06fc1h] ; 2e ff a7 c1 6f ; 0xf700d
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf7012 ps2mouse.c:204
+ jnbe short 07069h ; 77 51 ; 0xf7016
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7018 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf701b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf701d
+ test AL, strict byte 080h ; a8 80 ; 0xf7020 ps2mouse.c:212
+ jne short 0702fh ; 75 0b ; 0xf7022
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7024 ps2mouse.c:214
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf7028 ps2mouse.c:215
+ jmp near 07333h ; e9 04 03 ; 0xf702c ps2mouse.c:216
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf702f ps2mouse.c:218
+ jne short 07039h ; 75 04 ; 0xf7033
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf7035 ps2mouse.c:220
+ jmp short 0703bh ; eb 02 ; 0xf7037 ps2mouse.c:221
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf7039 ps2mouse.c:223
+ xor ah, ah ; 30 e4 ; 0xf703b ps2mouse.c:226
+ call 06e60h ; e8 20 fe ; 0xf703d
+ test al, al ; 84 c0 ; 0xf7040 ps2mouse.c:227
+ jne short 0706ch ; 75 28 ; 0xf7042
+ mov dx, ss ; 8c d2 ; 0xf7044 ps2mouse.c:228
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7046
+ call 06e94h ; e8 48 fe ; 0xf7049
+ test al, al ; 84 c0 ; 0xf704c ps2mouse.c:229
+ je short 070b2h ; 74 62 ; 0xf704e
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7050
+ jne short 0706ch ; 75 16 ; 0xf7054
+ jmp short 070b2h ; eb 5a ; 0xf7056 ps2mouse.c:231
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7058 ps2mouse.c:242
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf705b
+ jc short 07063h ; 72 04 ; 0xf705d
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf705f
+ jbe short 0706fh ; 76 0c ; 0xf7061
+ jmp near 071eah ; e9 84 01 ; 0xf7063
+ jmp near 07320h ; e9 b7 02 ; 0xf7066
+ jmp near 0732bh ; e9 bf 02 ; 0xf7069
+ jmp near 072c0h ; e9 51 02 ; 0xf706c
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf706f ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7072
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7074
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf7077 ps2mouse.c:248
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf707a
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf707c
+ or al, ah ; 08 e0 ; 0xf707e
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7080 ps2mouse.c:43
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf7083 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7086
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7088
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf708b ps2mouse.c:256
+ mov byte [es:bx], al ; 26 88 07 ; 0xf708d ps2mouse.c:43
+ mov ax, 000ffh ; b8 ff 00 ; 0xf7090 ps2mouse.c:258
+ call 06e60h ; e8 ca fd ; 0xf7093
+ test al, al ; 84 c0 ; 0xf7096 ps2mouse.c:259
+ jne short 0706ch ; 75 d2 ; 0xf7098
+ mov dx, ss ; 8c d2 ; 0xf709a ps2mouse.c:260
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf709c
+ call 06e94h ; e8 f2 fd ; 0xf709f
+ mov dl, al ; 88 c2 ; 0xf70a2
+ cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf70a4 ps2mouse.c:262
+ jne short 070b5h ; 75 0b ; 0xf70a8
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf70aa ps2mouse.c:263
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf70ae ps2mouse.c:264
+ jmp near 07333h ; e9 7e 02 ; 0xf70b2 ps2mouse.c:265
+ cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf70b5 ps2mouse.c:267
+ je short 070cch ; 74 11 ; 0xf70b9
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf70bb ps2mouse.c:268
+ xor ah, ah ; 30 e4 ; 0xf70be
+ push ax ; 50 ; 0xf70c0
+ push 00903h ; 68 03 09 ; 0xf70c1
+ push strict byte 00007h ; 6a 07 ; 0xf70c4
+ call 018ffh ; e8 36 a8 ; 0xf70c6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf70c9
+ test dl, dl ; 84 d2 ; 0xf70cc ps2mouse.c:269
+ jne short 0706ch ; 75 9c ; 0xf70ce
+ mov dx, ss ; 8c d2 ; 0xf70d0 ps2mouse.c:270
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70d2
+ call 06e94h ; e8 bc fd ; 0xf70d5
+ test al, al ; 84 c0 ; 0xf70d8 ps2mouse.c:271
+ jne short 0706ch ; 75 90 ; 0xf70da
+ mov dx, ss ; 8c d2 ; 0xf70dc ps2mouse.c:272
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf70de
+ call 06e94h ; e8 b0 fd ; 0xf70e1
+ test al, al ; 84 c0 ; 0xf70e4 ps2mouse.c:273
+ jne short 0706ch ; 75 84 ; 0xf70e6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf70e8 ps2mouse.c:275
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf70eb
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf70ee ps2mouse.c:276
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf70f1
+ jmp short 070b2h ; eb bc ; 0xf70f4 ps2mouse.c:277
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70f6 ps2mouse.c:290
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf70f9
+ jc short 0710dh ; 72 10 ; 0xf70fb
+ jbe short 0712bh ; 76 2c ; 0xf70fd
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf70ff
+ je short 0713dh ; 74 3a ; 0xf7101
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf7103
+ je short 07137h ; 74 30 ; 0xf7105
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7107
+ je short 07131h ; 74 26 ; 0xf7109
+ jmp short 07143h ; eb 36 ; 0xf710b
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf710d
+ je short 07125h ; 74 14 ; 0xf710f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7111
+ je short 0711fh ; 74 0a ; 0xf7113
+ test al, al ; 84 c0 ; 0xf7115
+ jne short 07143h ; 75 2a ; 0xf7117
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf7119 ps2mouse.c:291
+ jmp short 07147h ; eb 28 ; 0xf711d
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf711f ps2mouse.c:292
+ jmp short 07147h ; eb 22 ; 0xf7123
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf7125 ps2mouse.c:293
+ jmp short 07147h ; eb 1c ; 0xf7129
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf712b ps2mouse.c:294
+ jmp short 07147h ; eb 16 ; 0xf712f
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf7131 ps2mouse.c:295
+ jmp short 07147h ; eb 10 ; 0xf7135
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf7137 ps2mouse.c:296
+ jmp short 07147h ; eb 0a ; 0xf713b
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf713d ps2mouse.c:297
+ jmp short 07147h ; eb 04 ; 0xf7141
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf7143 ps2mouse.c:298
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf7147 ps2mouse.c:300
+ jbe short 0717dh ; 76 30 ; 0xf714b
+ mov ax, 000f3h ; b8 f3 00 ; 0xf714d ps2mouse.c:301
+ call 06e60h ; e8 0d fd ; 0xf7150
+ test al, al ; 84 c0 ; 0xf7153 ps2mouse.c:302
+ jne short 07172h ; 75 1b ; 0xf7155
+ mov dx, ss ; 8c d2 ; 0xf7157 ps2mouse.c:303
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7159
+ call 06e94h ; e8 35 fd ; 0xf715c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf715f ps2mouse.c:304
+ xor ah, ah ; 30 e4 ; 0xf7162
+ call 06e60h ; e8 f9 fc ; 0xf7164
+ mov dx, ss ; 8c d2 ; 0xf7167 ps2mouse.c:305
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7169
+ call 06e94h ; e8 25 fd ; 0xf716c
+ jmp near 07333h ; e9 c1 01 ; 0xf716f ps2mouse.c:307
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7172 ps2mouse.c:309
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7176 ps2mouse.c:310
+ jmp near 07333h ; e9 b6 01 ; 0xf717a ps2mouse.c:312
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf717d ps2mouse.c:314
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7181 ps2mouse.c:315
+ jmp near 07333h ; e9 ab 01 ; 0xf7185 ps2mouse.c:317
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7188 ps2mouse.c:326
+ jnc short 071eah ; 73 5c ; 0xf718c
+ mov ax, 000e8h ; b8 e8 00 ; 0xf718e ps2mouse.c:327
+ call 06e60h ; e8 cc fc ; 0xf7191
+ test al, al ; 84 c0 ; 0xf7194 ps2mouse.c:328
+ jne short 071e0h ; 75 48 ; 0xf7196
+ mov dx, ss ; 8c d2 ; 0xf7198 ps2mouse.c:329
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf719a
+ call 06e94h ; e8 f4 fc ; 0xf719d
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71a0 ps2mouse.c:330
+ je short 071b7h ; 74 11 ; 0xf71a4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71a6 ps2mouse.c:331
+ xor ah, ah ; 30 e4 ; 0xf71a9
+ push ax ; 50 ; 0xf71ab
+ push 0092eh ; 68 2e 09 ; 0xf71ac
+ push strict byte 00007h ; 6a 07 ; 0xf71af
+ call 018ffh ; e8 4b a7 ; 0xf71b1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71b4
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf71b7 ps2mouse.c:332
+ xor ah, ah ; 30 e4 ; 0xf71ba
+ call 06e60h ; e8 a1 fc ; 0xf71bc
+ mov dx, ss ; 8c d2 ; 0xf71bf ps2mouse.c:333
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf71c1
+ call 06e94h ; e8 cd fc ; 0xf71c4
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71c7 ps2mouse.c:334
+ je short 07219h ; 74 4c ; 0xf71cb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71cd ps2mouse.c:335
+ xor ah, ah ; 30 e4 ; 0xf71d0
+ push ax ; 50 ; 0xf71d2
+ push 0092eh ; 68 2e 09 ; 0xf71d3
+ push strict byte 00007h ; 6a 07 ; 0xf71d6
+ call 018ffh ; e8 24 a7 ; 0xf71d8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71db
+ jmp short 07219h ; eb 39 ; 0xf71de ps2mouse.c:337
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71e0 ps2mouse.c:339
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf71e4 ps2mouse.c:340
+ jmp short 07219h ; eb 2f ; 0xf71e8 ps2mouse.c:342
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71ea ps2mouse.c:344
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf71ee ps2mouse.c:345
+ jmp short 07219h ; eb 25 ; 0xf71f2 ps2mouse.c:347
+ mov ax, 000f2h ; b8 f2 00 ; 0xf71f4 ps2mouse.c:351
+ call 06e60h ; e8 66 fc ; 0xf71f7
+ test al, al ; 84 c0 ; 0xf71fa ps2mouse.c:352
+ jne short 07211h ; 75 13 ; 0xf71fc
+ mov dx, ss ; 8c d2 ; 0xf71fe ps2mouse.c:353
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7200
+ call 06e94h ; e8 8e fc ; 0xf7203
+ mov dx, ss ; 8c d2 ; 0xf7206 ps2mouse.c:354
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7208
+ call 06e94h ; e8 86 fc ; 0xf720b
+ jmp near 070eeh ; e9 dd fe ; 0xf720e
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7211 ps2mouse.c:355
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7215 ps2mouse.c:360
+ jmp near 07333h ; e9 17 01 ; 0xf7219 ps2mouse.c:362
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf721c ps2mouse.c:366
+ test al, al ; 84 c0 ; 0xf721f
+ jbe short 0722ah ; 76 07 ; 0xf7221
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7223
+ jbe short 07291h ; 76 6a ; 0xf7225
+ jmp near 072cah ; e9 a0 00 ; 0xf7227
+ mov ax, 000e9h ; b8 e9 00 ; 0xf722a ps2mouse.c:368
+ call 06e60h ; e8 30 fc ; 0xf722d
+ test al, al ; 84 c0 ; 0xf7230 ps2mouse.c:369
+ jne short 0729ah ; 75 66 ; 0xf7232
+ mov dx, ss ; 8c d2 ; 0xf7234 ps2mouse.c:370
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7236
+ call 06e94h ; e8 58 fc ; 0xf7239
+ mov dl, al ; 88 c2 ; 0xf723c
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf723e ps2mouse.c:371
+ je short 07255h ; 74 11 ; 0xf7242
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7244 ps2mouse.c:372
+ xor ah, ah ; 30 e4 ; 0xf7247
+ push ax ; 50 ; 0xf7249
+ push 0092eh ; 68 2e 09 ; 0xf724a
+ push strict byte 00007h ; 6a 07 ; 0xf724d
+ call 018ffh ; e8 ad a6 ; 0xf724f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7252
+ test dl, dl ; 84 d2 ; 0xf7255 ps2mouse.c:373
+ jne short 0729ah ; 75 41 ; 0xf7257
+ mov dx, ss ; 8c d2 ; 0xf7259 ps2mouse.c:374
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf725b
+ call 06e94h ; e8 33 fc ; 0xf725e
+ test al, al ; 84 c0 ; 0xf7261 ps2mouse.c:375
+ jne short 072c0h ; 75 5b ; 0xf7263
+ mov dx, ss ; 8c d2 ; 0xf7265 ps2mouse.c:376
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7267
+ call 06e94h ; e8 27 fc ; 0xf726a
+ test al, al ; 84 c0 ; 0xf726d ps2mouse.c:377
+ jne short 072c0h ; 75 4f ; 0xf726f
+ mov dx, ss ; 8c d2 ; 0xf7271 ps2mouse.c:378
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7273
+ call 06e94h ; e8 1b fc ; 0xf7276
+ test al, al ; 84 c0 ; 0xf7279 ps2mouse.c:379
+ jne short 072c0h ; 75 43 ; 0xf727b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf727d ps2mouse.c:380
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf7280
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7283 ps2mouse.c:381
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf7286
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7289 ps2mouse.c:382
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf728c
+ jmp short 07219h ; eb 88 ; 0xf728f ps2mouse.c:384
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7291 ps2mouse.c:398
+ jne short 0729ch ; 75 07 ; 0xf7293
+ mov ax, 000e6h ; b8 e6 00 ; 0xf7295 ps2mouse.c:399
+ jmp short 0729fh ; eb 05 ; 0xf7298 ps2mouse.c:400
+ jmp short 072c0h ; eb 24 ; 0xf729a
+ mov ax, 000e7h ; b8 e7 00 ; 0xf729c ps2mouse.c:401
+ call 06e60h ; e8 be fb ; 0xf729f
+ mov dl, al ; 88 c2 ; 0xf72a2
+ test dl, dl ; 84 d2 ; 0xf72a4 ps2mouse.c:403
+ jne short 072bch ; 75 14 ; 0xf72a6
+ mov dx, ss ; 8c d2 ; 0xf72a8 ps2mouse.c:404
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf72aa
+ call 06e94h ; e8 e4 fb ; 0xf72ad
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72b0 ps2mouse.c:405
+ je short 072bah ; 74 04 ; 0xf72b4
+ mov DL, strict byte 001h ; b2 01 ; 0xf72b6
+ jmp short 072bch ; eb 02 ; 0xf72b8
+ xor dl, dl ; 30 d2 ; 0xf72ba
+ test dl, dl ; 84 d2 ; 0xf72bc ps2mouse.c:407
+ je short 0731eh ; 74 5e ; 0xf72be
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72c0 ps2mouse.c:409
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf72c4 ps2mouse.c:410
+ jmp short 07333h ; eb 69 ; 0xf72c8 ps2mouse.c:412
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf72ca ps2mouse.c:415
+ xor ah, ah ; 30 e4 ; 0xf72cd
+ push ax ; 50 ; 0xf72cf
+ push 0095ah ; 68 5a 09 ; 0xf72d0
+ push strict byte 00007h ; 6a 07 ; 0xf72d3
+ call 018ffh ; e8 27 a6 ; 0xf72d5
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf72d8
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72db ps2mouse.c:417
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf72df ps2mouse.c:418
+ jmp short 07333h ; eb 4e ; 0xf72e3 ps2mouse.c:420
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf72e5 ps2mouse.c:425
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf72e8 ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf72eb
+ mov word [es:bx], cx ; 26 89 0f ; 0xf72ed
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf72f0 ps2mouse.c:53
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf72f3
+ mov word [es:bx], ax ; 26 89 07 ; 0xf72f6
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf72f9 ps2mouse.c:38
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf72fc
+ mov al, ah ; 88 e0 ; 0xf72ff ps2mouse.c:39
+ test cx, cx ; 85 c9 ; 0xf7301 ps2mouse.c:429
+ jne short 07314h ; 75 0f ; 0xf7303
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf7305
+ jne short 07314h ; 75 09 ; 0xf7309
+ test ah, 080h ; f6 c4 80 ; 0xf730b ps2mouse.c:431
+ je short 07316h ; 74 06 ; 0xf730e
+ and AL, strict byte 07fh ; 24 7f ; 0xf7310 ps2mouse.c:432
+ jmp short 07316h ; eb 02 ; 0xf7312 ps2mouse.c:435
+ or AL, strict byte 080h ; 0c 80 ; 0xf7314 ps2mouse.c:437
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7316 ps2mouse.c:43
+ mov es, dx ; 8e c2 ; 0xf7319
+ mov byte [es:bx], al ; 26 88 07 ; 0xf731b
+ jmp short 07333h ; eb 13 ; 0xf731e ps2mouse.c:440
+ push 00974h ; 68 74 09 ; 0xf7320 ps2mouse.c:443
+ push strict byte 00007h ; 6a 07 ; 0xf7323
+ call 018ffh ; e8 d7 a5 ; 0xf7325
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7328
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf732b ps2mouse.c:445
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf732f ps2mouse.c:446
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf7333 ps2mouse.c:450
+ call 06ef1h ; e8 b8 fb ; 0xf7336
+ mov sp, bp ; 89 ec ; 0xf7339 ps2mouse.c:451
+ pop bp ; 5d ; 0xf733b
+ retn ; c3 ; 0xf733c
+ ; disGetNextSymbol 0xf733d LB 0x2b8b -> off=0x0 cb=00000000000000ac uValue=00000000000f5d3d 'int17_function'
+int17_function: ; 0xf733d LB 0xac
+ push bp ; 55 ; 0xf733d parallel.c:60
+ mov bp, sp ; 89 e5 ; 0xf733e
+ push si ; 56 ; 0xf7340
+ push di ; 57 ; 0xf7341
+ push ax ; 50 ; 0xf7342
+ sti ; fb ; 0xf7343 parallel.c:65
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf7344 parallel.c:67
+ add bx, bx ; 01 db ; 0xf7347
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf7349
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf734c parallel.c:48
+ mov es, ax ; 8e c0 ; 0xf734f
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf7351
+ mov si, bx ; 89 de ; 0xf7354 parallel.c:49
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf7356 parallel.c:68
+ jnc short 07368h ; 73 0c ; 0xf735a
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf735c
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf735f
+ jnc short 07368h ; 73 04 ; 0xf7362
+ test bx, bx ; 85 db ; 0xf7364
+ jnbe short 0736bh ; 77 03 ; 0xf7366
+ jmp near 073deh ; e9 73 00 ; 0xf7368
+ mov di, ax ; 89 c7 ; 0xf736b parallel.c:69
+ add di, strict byte 00078h ; 83 c7 78 ; 0xf736d
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf7370 parallel.c:38
+ xor ch, ch ; 30 ed ; 0xf7373 parallel.c:39
+ sal cx, 008h ; c1 e1 08 ; 0xf7375
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7378 parallel.c:70
+ jne short 073aah ; 75 2c ; 0xf737c
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf737e parallel.c:71
+ mov dx, bx ; 89 da ; 0xf7381
+ out DX, AL ; ee ; 0xf7383
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf7384 parallel.c:72
+ in AL, DX ; ec ; 0xf7387
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7388
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf738a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf738d parallel.c:73
+ or AL, strict byte 001h ; 0c 01 ; 0xf7390
+ out DX, AL ; ee ; 0xf7392
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7393 parallel.c:74
+ and AL, strict byte 0feh ; 24 fe ; 0xf7396
+ out DX, AL ; ee ; 0xf7398
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7399 parallel.c:75
+ in AL, DX ; ec ; 0xf739c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf739d
+ test AL, strict byte 040h ; a8 40 ; 0xf739f
+ je short 073aah ; 74 07 ; 0xf73a1
+ test cx, cx ; 85 c9 ; 0xf73a3
+ je short 073aah ; 74 03 ; 0xf73a5
+ dec cx ; 49 ; 0xf73a7 parallel.c:76
+ jmp short 07399h ; eb ef ; 0xf73a8 parallel.c:77
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf73aa parallel.c:79
+ jne short 073c5h ; 75 15 ; 0xf73ae
+ lea dx, [si+002h] ; 8d 54 02 ; 0xf73b0 parallel.c:80
+ in AL, DX ; ec ; 0xf73b3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73b4
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf73b6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73b9 parallel.c:81
+ and AL, strict byte 0fbh ; 24 fb ; 0xf73bc
+ out DX, AL ; ee ; 0xf73be
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73bf parallel.c:82
+ or AL, strict byte 004h ; 0c 04 ; 0xf73c2
+ out DX, AL ; ee ; 0xf73c4
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf73c5 parallel.c:84
+ in AL, DX ; ec ; 0xf73c8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73c9
+ xor AL, strict byte 048h ; 34 48 ; 0xf73cb parallel.c:85
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf73cd
+ test cx, cx ; 85 c9 ; 0xf73d0 parallel.c:86
+ jne short 073d8h ; 75 04 ; 0xf73d2
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf73d4
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf73d8 parallel.c:87
+ jmp short 073e2h ; eb 04 ; 0xf73dc parallel.c:88
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf73de parallel.c:89
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf73e2 parallel.c:91
+ pop di ; 5f ; 0xf73e5
+ pop si ; 5e ; 0xf73e6
+ pop bp ; 5d ; 0xf73e7
+ retn ; c3 ; 0xf73e8
+ ; disGetNextSymbol 0xf73e9 LB 0x2adf -> off=0x0 cb=00000000000000b7 uValue=00000000000f5de9 '_wait_'
+_wait_: ; 0xf73e9 LB 0xb7
+ push bp ; 55 ; 0xf73e9 logo.c:171
+ mov bp, sp ; 89 e5 ; 0xf73ea
+ push bx ; 53 ; 0xf73ec
+ push cx ; 51 ; 0xf73ed
+ push si ; 56 ; 0xf73ee
+ push di ; 57 ; 0xf73ef
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf73f0
+ mov si, ax ; 89 c6 ; 0xf73f3
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf73f5
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf73f8 logo.c:176
+ pushfw ; 9c ; 0xf73fc logo.c:182
+ pop ax ; 58 ; 0xf73fd
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf73fe
+ sti ; fb ; 0xf7401 logo.c:183
+ xor dx, dx ; 31 d2 ; 0xf7402 logo.c:189
+ mov bx, 0046ch ; bb 6c 04 ; 0xf7404 logo.c:58
+ mov es, dx ; 8e c2 ; 0xf7407
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7409
+ mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf740c
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7410 logo.c:59
+ hlt ; f4 ; 0xf7413 logo.c:193
+ mov bx, 0046ch ; bb 6c 04 ; 0xf7414 logo.c:58
+ xor ax, ax ; 31 c0 ; 0xf7417
+ mov es, ax ; 8e c0 ; 0xf7419
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf741b
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf741e
+ mov word [bp-012h], di ; 89 7e ee ; 0xf7422 logo.c:59
+ mov bx, ax ; 89 c3 ; 0xf7425
+ cmp ax, cx ; 39 c8 ; 0xf7427 logo.c:195
+ jnbe short 07432h ; 77 07 ; 0xf7429
+ jne short 07439h ; 75 0c ; 0xf742b
+ cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf742d
+ jbe short 07439h ; 76 07 ; 0xf7430
+ sub di, word [bp-00eh] ; 2b 7e f2 ; 0xf7432 logo.c:197
+ sbb ax, cx ; 19 c8 ; 0xf7435
+ jmp short 07444h ; eb 0b ; 0xf7437 logo.c:200
+ cmp ax, cx ; 39 c8 ; 0xf7439
+ jc short 07444h ; 72 07 ; 0xf743b
+ jne short 07448h ; 75 09 ; 0xf743d
+ cmp di, word [bp-00eh] ; 3b 7e f2 ; 0xf743f
+ jnc short 07448h ; 73 04 ; 0xf7442
+ sub si, di ; 29 fe ; 0xf7444 logo.c:201
+ sbb dx, ax ; 19 c2 ; 0xf7446
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf7448 logo.c:202
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf744b
+ mov cx, bx ; 89 d9 ; 0xf744e
+ mov ax, 00100h ; b8 00 01 ; 0xf7450 logo.c:204
+ int 016h ; cd 16 ; 0xf7453
+ je short 0745ch ; 74 05 ; 0xf7455
+ mov AL, strict byte 001h ; b0 01 ; 0xf7457
+ jmp near 0745eh ; e9 02 00 ; 0xf7459
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf745c
+ test al, al ; 84 c0 ; 0xf745e
+ je short 07485h ; 74 23 ; 0xf7460
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7462 logo.c:206
+ int 016h ; cd 16 ; 0xf7464
+ xchg ah, al ; 86 c4 ; 0xf7466
+ mov bl, al ; 88 c3 ; 0xf7468
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf746a
+ xor ah, ah ; 30 e4 ; 0xf746d logo.c:207
+ push ax ; 50 ; 0xf746f
+ push 00996h ; 68 96 09 ; 0xf7470
+ push strict byte 00004h ; 6a 04 ; 0xf7473
+ call 018ffh ; e8 87 a4 ; 0xf7475
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7478
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf747b logo.c:208
+ je short 07485h ; 74 04 ; 0xf747f
+ mov al, bl ; 88 d8 ; 0xf7481 logo.c:209
+ jmp short 07497h ; eb 12 ; 0xf7483
+ test dx, dx ; 85 d2 ; 0xf7485 logo.c:211
+ jnle short 07413h ; 7f 8a ; 0xf7487
+ jne short 0748fh ; 75 04 ; 0xf7489
+ test si, si ; 85 f6 ; 0xf748b
+ jnbe short 07413h ; 77 84 ; 0xf748d
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf748f logo.c:212
+ push ax ; 50 ; 0xf7492
+ popfw ; 9d ; 0xf7493
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7494 logo.c:213
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf7497 logo.c:214
+ pop di ; 5f ; 0xf749a
+ pop si ; 5e ; 0xf749b
+ pop cx ; 59 ; 0xf749c
+ pop bx ; 5b ; 0xf749d
+ pop bp ; 5d ; 0xf749e
+ retn ; c3 ; 0xf749f
+ ; disGetNextSymbol 0xf74a0 LB 0x2a28 -> off=0x0 cb=0000000000000016 uValue=00000000000f5ea0 'read_logo_byte'
+read_logo_byte: ; 0xf74a0 LB 0x16
+ push bp ; 55 ; 0xf74a0 logo.c:216
+ mov bp, sp ; 89 e5 ; 0xf74a1
+ push dx ; 52 ; 0xf74a3
+ xor ah, ah ; 30 e4 ; 0xf74a4 logo.c:218
+ or ah, 001h ; 80 cc 01 ; 0xf74a6
+ mov dx, 003b8h ; ba b8 03 ; 0xf74a9
+ out DX, ax ; ef ; 0xf74ac
+ in AL, DX ; ec ; 0xf74ad logo.c:219
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf74ae
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf74b0 logo.c:220
+ pop dx ; 5a ; 0xf74b3
+ pop bp ; 5d ; 0xf74b4
+ retn ; c3 ; 0xf74b5
+ ; disGetNextSymbol 0xf74b6 LB 0x2a12 -> off=0x0 cb=0000000000000014 uValue=00000000000f5eb6 'read_logo_word'
+read_logo_word: ; 0xf74b6 LB 0x14
+ push bp ; 55 ; 0xf74b6 logo.c:222
+ mov bp, sp ; 89 e5 ; 0xf74b7
+ push dx ; 52 ; 0xf74b9
+ xor ah, ah ; 30 e4 ; 0xf74ba logo.c:224
+ or ah, 001h ; 80 cc 01 ; 0xf74bc
+ mov dx, 003b8h ; ba b8 03 ; 0xf74bf
+ out DX, ax ; ef ; 0xf74c2
+ in ax, DX ; ed ; 0xf74c3 logo.c:225
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf74c4 logo.c:226
+ pop dx ; 5a ; 0xf74c7
+ pop bp ; 5d ; 0xf74c8
+ retn ; c3 ; 0xf74c9
+ ; disGetNextSymbol 0xf74ca LB 0x29fe -> off=0x0 cb=000000000000013e uValue=00000000000f5eca 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf74ca LB 0x13e
+ push bp ; 55 ; 0xf74ca logo.c:245
+ mov bp, sp ; 89 e5 ; 0xf74cb
+ push bx ; 53 ; 0xf74cd
+ push cx ; 51 ; 0xf74ce
+ push dx ; 52 ; 0xf74cf
+ push si ; 56 ; 0xf74d0
+ push di ; 57 ; 0xf74d1
+ push ax ; 50 ; 0xf74d2
+ push ax ; 50 ; 0xf74d3
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf74d4 logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf74d7
+ mov es, ax ; 8e c0 ; 0xf74da
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf74dc
+ mov di, ax ; 89 c7 ; 0xf74df logo.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf74e1 logo.c:250
+ xor cl, cl ; 30 c9 ; 0xf74e5 logo.c:251
+ xor ch, ch ; 30 ed ; 0xf74e7 logo.c:252
+ mov bx, 00304h ; bb 04 03 ; 0xf74e9 logo.c:38
+ mov es, ax ; 8e c0 ; 0xf74ec
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf74ee
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf74f1 logo.c:39
+ xor bl, bl ; 30 db ; 0xf74f4 logo.c:257
+ cmp bl, byte [bp-00eh] ; 3a 5e f2 ; 0xf74f6
+ jnc short 07558h ; 73 5d ; 0xf74f9
+ mov al, bl ; 88 d8 ; 0xf74fb logo.c:259
+ xor ah, ah ; 30 e4 ; 0xf74fd
+ mov si, ax ; 89 c6 ; 0xf74ff
+ add si, 00305h ; 81 c6 05 03 ; 0xf7501
+ mov es, di ; 8e c7 ; 0xf7505 logo.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7507
+ mov bh, al ; 88 c7 ; 0xf750a logo.c:39
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf750c logo.c:262
+ jc short 07535h ; 72 25 ; 0xf750e
+ test cl, cl ; 84 c9 ; 0xf7510 logo.c:264
+ jne short 07521h ; 75 0d ; 0xf7512
+ push 009a7h ; 68 a7 09 ; 0xf7514 logo.c:266
+ push strict byte 00002h ; 6a 02 ; 0xf7517
+ call 018ffh ; e8 e3 a3 ; 0xf7519
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf751c
+ mov CL, strict byte 001h ; b1 01 ; 0xf751f logo.c:267
+ mov al, bl ; 88 d8 ; 0xf7521 logo.c:270
+ xor ah, ah ; 30 e4 ; 0xf7523
+ inc ax ; 40 ; 0xf7525
+ push ax ; 50 ; 0xf7526
+ push 009bch ; 68 bc 09 ; 0xf7527
+ push strict byte 00002h ; 6a 02 ; 0xf752a
+ call 018ffh ; e8 d0 a3 ; 0xf752c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf752f
+ jmp near 075d5h ; e9 a0 00 ; 0xf7532 logo.c:273
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf7535 logo.c:276
+ jc short 0754ch ; 72 13 ; 0xf7537
+ test ch, ch ; 84 ed ; 0xf7539 logo.c:278
+ jne short 0754ah ; 75 0d ; 0xf753b
+ push 009cfh ; 68 cf 09 ; 0xf753d logo.c:280
+ push strict byte 00002h ; 6a 02 ; 0xf7540
+ call 018ffh ; e8 ba a3 ; 0xf7542
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7545
+ mov CH, strict byte 001h ; b5 01 ; 0xf7548 logo.c:281
+ jmp short 07521h ; eb d5 ; 0xf754a logo.c:282
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf754c logo.c:291
+ jnc short 0756ch ; 73 1c ; 0xf754e
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7550
+ je short 0755bh ; 74 05 ; 0xf7554
+ jmp short 0756ch ; eb 14 ; 0xf7556
+ jmp near 075dah ; e9 7f 00 ; 0xf7558
+ push 009e4h ; 68 e4 09 ; 0xf755b logo.c:293
+ push strict byte 00002h ; 6a 02 ; 0xf755e
+ call 018ffh ; e8 9c a3 ; 0xf7560
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7563
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7566 logo.c:294
+ jmp short 07582h ; eb 16 ; 0xf756a logo.c:296
+ cmp bh, 004h ; 80 ff 04 ; 0xf756c
+ jc short 07582h ; 72 11 ; 0xf756f
+ test cl, cl ; 84 c9 ; 0xf7571
+ jne short 07582h ; 75 0d ; 0xf7573
+ push 009f6h ; 68 f6 09 ; 0xf7575 logo.c:298
+ push strict byte 00002h ; 6a 02 ; 0xf7578
+ call 018ffh ; e8 82 a3 ; 0xf757a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf757d
+ mov CL, strict byte 001h ; b1 01 ; 0xf7580 logo.c:299
+ mov al, bl ; 88 d8 ; 0xf7582 logo.c:302
+ xor ah, ah ; 30 e4 ; 0xf7584
+ inc ax ; 40 ; 0xf7586
+ push ax ; 50 ; 0xf7587
+ push 00a0ah ; 68 0a 0a ; 0xf7588
+ push strict byte 00002h ; 6a 02 ; 0xf758b
+ call 018ffh ; e8 6f a3 ; 0xf758d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7590
+ cmp bh, 004h ; 80 ff 04 ; 0xf7593 logo.c:309
+ jc short 0759bh ; 72 03 ; 0xf7596
+ sub bh, 004h ; 80 ef 04 ; 0xf7598 logo.c:310
+ mov al, bh ; 88 f8 ; 0xf759b logo.c:312
+ xor ah, ah ; 30 e4 ; 0xf759d
+ cwd ; 99 ; 0xf759f
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf75a0
+ sar ax, 1 ; d1 f8 ; 0xf75a2
+ test ax, ax ; 85 c0 ; 0xf75a4
+ je short 075adh ; 74 05 ; 0xf75a6
+ push 00a14h ; 68 14 0a ; 0xf75a8 logo.c:313
+ jmp short 075b0h ; eb 03 ; 0xf75ab logo.c:314
+ push 00a1fh ; 68 1f 0a ; 0xf75ad logo.c:315
+ push strict byte 00002h ; 6a 02 ; 0xf75b0
+ call 018ffh ; e8 4a a3 ; 0xf75b2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75b5
+ mov al, bh ; 88 f8 ; 0xf75b8 logo.c:317
+ xor ah, ah ; 30 e4 ; 0xf75ba
+ cwd ; 99 ; 0xf75bc
+ mov si, strict word 00002h ; be 02 00 ; 0xf75bd
+ idiv si ; f7 fe ; 0xf75c0
+ test dx, dx ; 85 d2 ; 0xf75c2
+ je short 075cbh ; 74 05 ; 0xf75c4
+ push 00a28h ; 68 28 0a ; 0xf75c6 logo.c:318
+ jmp short 075ceh ; eb 03 ; 0xf75c9 logo.c:319
+ push 00a2eh ; 68 2e 0a ; 0xf75cb logo.c:320
+ push si ; 56 ; 0xf75ce
+ call 018ffh ; e8 2d a3 ; 0xf75cf
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75d2
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf75d5 logo.c:322
+ jmp near 074f6h ; e9 1c ff ; 0xf75d7
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf75da logo.c:324
+ jne short 075f3h ; 75 13 ; 0xf75de
+ test cl, cl ; 84 c9 ; 0xf75e0
+ jne short 075f3h ; 75 0f ; 0xf75e2
+ test ch, ch ; 84 ed ; 0xf75e4
+ jne short 075f3h ; 75 0b ; 0xf75e6
+ push 00a35h ; 68 35 0a ; 0xf75e8 logo.c:327
+ push strict byte 00002h ; 6a 02 ; 0xf75eb
+ call 018ffh ; e8 0f a3 ; 0xf75ed
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75f0
+ push 00a49h ; 68 49 0a ; 0xf75f3 logo.c:329
+ push strict byte 00002h ; 6a 02 ; 0xf75f6
+ call 018ffh ; e8 04 a3 ; 0xf75f8
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75fb
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf75fe logo.c:330
+ pop di ; 5f ; 0xf7601
+ pop si ; 5e ; 0xf7602
+ pop dx ; 5a ; 0xf7603
+ pop cx ; 59 ; 0xf7604
+ pop bx ; 5b ; 0xf7605
+ pop bp ; 5d ; 0xf7606
+ retn ; c3 ; 0xf7607
+ ; disGetNextSymbol 0xf7608 LB 0x28c0 -> off=0x0 cb=0000000000000024 uValue=00000000000f6008 'get_boot_drive'
+get_boot_drive: ; 0xf7608 LB 0x24
+ push bx ; 53 ; 0xf7608 logo.c:332
+ push dx ; 52 ; 0xf7609
+ push bp ; 55 ; 0xf760a
+ mov bp, sp ; 89 e5 ; 0xf760b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf760d logo.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7610
+ mov es, dx ; 8e c2 ; 0xf7613
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7615
+ mov bx, 00304h ; bb 04 03 ; 0xf7618 logo.c:38
+ mov es, dx ; 8e c2 ; 0xf761b
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf761d
+ sub AL, strict byte 002h ; 2c 02 ; 0xf7620 logo.c:340
+ cmp al, dl ; 38 d0 ; 0xf7622 logo.c:342
+ jc short 07628h ; 72 02 ; 0xf7624
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf7626 logo.c:343
+ pop bp ; 5d ; 0xf7628 logo.c:347
+ pop dx ; 5a ; 0xf7629
+ pop bx ; 5b ; 0xf762a
+ retn ; c3 ; 0xf762b
+ ; disGetNextSymbol 0xf762c LB 0x289c -> off=0x0 cb=0000000000000252 uValue=00000000000f602c 'show_logo'
+show_logo: ; 0xf762c LB 0x252
+ push bp ; 55 ; 0xf762c logo.c:349
+ mov bp, sp ; 89 e5 ; 0xf762d
+ push bx ; 53 ; 0xf762f
+ push cx ; 51 ; 0xf7630
+ push dx ; 52 ; 0xf7631
+ push si ; 56 ; 0xf7632
+ push di ; 57 ; 0xf7633
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7634
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7637 logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf763a
+ mov es, ax ; 8e c0 ; 0xf763d
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf763f
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf7642 logo.c:352
+ xor dx, dx ; 31 d2 ; 0xf7646 logo.c:356
+ mov AL, strict byte 034h ; b0 34 ; 0xf7648 logo.c:363
+ out strict byte 043h, AL ; e6 43 ; 0xf764a
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf764c
+ out strict byte 040h, AL ; e6 40 ; 0xf764e
+ mov AL, strict byte 048h ; b0 48 ; 0xf7650
+ out strict byte 040h, AL ; e6 40 ; 0xf7652
+ mov al, dl ; 88 d0 ; 0xf7654 logo.c:366
+ xor ah, ah ; 30 e4 ; 0xf7656
+ call 074b6h ; e8 5b fe ; 0xf7658
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf765b logo.c:367
+ jne short 07672h ; 75 12 ; 0xf765e
+ push SS ; 16 ; 0xf7660 logo.c:371
+ pop ES ; 07 ; 0xf7661
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf7662
+ mov ax, 04f03h ; b8 03 4f ; 0xf7665
+ int 010h ; cd 10 ; 0xf7668
+ mov word [es:di], bx ; 26 89 1d ; 0xf766a
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf766d
+ je short 07675h ; 74 03 ; 0xf7670
+ jmp near 0775dh ; e9 e8 00 ; 0xf7672 logo.c:372
+ mov al, dl ; 88 d0 ; 0xf7675 logo.c:375
+ add AL, strict byte 004h ; 04 04 ; 0xf7677
+ xor ah, ah ; 30 e4 ; 0xf7679
+ call 074a0h ; e8 22 fe ; 0xf767b
+ mov cl, al ; 88 c1 ; 0xf767e
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf7680
+ mov al, dl ; 88 d0 ; 0xf7683 logo.c:376
+ add AL, strict byte 005h ; 04 05 ; 0xf7685
+ xor ah, ah ; 30 e4 ; 0xf7687
+ call 074a0h ; e8 14 fe ; 0xf7689
+ mov dh, al ; 88 c6 ; 0xf768c
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf768e
+ mov al, dl ; 88 d0 ; 0xf7691 logo.c:377
+ add AL, strict byte 002h ; 04 02 ; 0xf7693
+ xor ah, ah ; 30 e4 ; 0xf7695
+ call 074b6h ; e8 1c fe ; 0xf7697
+ mov bx, ax ; 89 c3 ; 0xf769a
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf769c
+ mov al, dl ; 88 d0 ; 0xf769f logo.c:378
+ add AL, strict byte 006h ; 04 06 ; 0xf76a1
+ xor ah, ah ; 30 e4 ; 0xf76a3
+ call 074a0h ; e8 f8 fd ; 0xf76a5
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf76a8
+ test cl, cl ; 84 c9 ; 0xf76ab logo.c:381
+ jne short 076b7h ; 75 08 ; 0xf76ad
+ test dh, dh ; 84 f6 ; 0xf76af
+ jne short 076b7h ; 75 04 ; 0xf76b1
+ test bx, bx ; 85 db ; 0xf76b3
+ je short 07672h ; 74 bb ; 0xf76b5
+ mov BH, strict byte 020h ; b7 20 ; 0xf76b7 logo.c:385
+ mov dx, 001e0h ; ba e0 01 ; 0xf76b9
+ mov cx, 00280h ; b9 80 02 ; 0xf76bc
+ mov ax, 05642h ; b8 42 56 ; 0xf76bf
+ mov BL, strict byte 000h ; b3 00 ; 0xf76c2
+ int 010h ; cd 10 ; 0xf76c4
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf76c6 logo.c:387
+ je short 076d3h ; 74 08 ; 0xf76c9
+ mov bx, 00142h ; bb 42 01 ; 0xf76cb logo.c:388
+ mov ax, 04f02h ; b8 02 4f ; 0xf76ce
+ int 010h ; cd 10 ; 0xf76d1
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf76d3 logo.c:390
+ je short 076feh ; 74 25 ; 0xf76d7
+ xor bx, bx ; 31 db ; 0xf76d9 logo.c:392
+ jmp short 076e3h ; eb 06 ; 0xf76db
+ inc bx ; 43 ; 0xf76dd logo.c:394
+ cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf76de
+ jnbe short 07705h ; 77 22 ; 0xf76e1
+ mov ax, bx ; 89 d8 ; 0xf76e3
+ or ah, 002h ; 80 cc 02 ; 0xf76e5
+ mov dx, 003b8h ; ba b8 03 ; 0xf76e8
+ out DX, ax ; ef ; 0xf76eb
+ xor dx, dx ; 31 d2 ; 0xf76ec
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf76ee
+ call 073e9h ; e8 f5 fc ; 0xf76f1
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf76f4
+ jne short 076ddh ; 75 e5 ; 0xf76f6
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf76f8
+ jmp short 07705h ; eb 07 ; 0xf76fc
+ mov ax, 00210h ; b8 10 02 ; 0xf76fe logo.c:404
+ mov dx, 003b8h ; ba b8 03 ; 0xf7701
+ out DX, ax ; ef ; 0xf7704
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7705 logo.c:407
+ jne short 0771fh ; 75 14 ; 0xf7709
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf770b logo.c:409
+ shr ax, 004h ; c1 e8 04 ; 0xf770e
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7711
+ call 073e9h ; e8 d2 fc ; 0xf7714
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7717 logo.c:410
+ jne short 0771fh ; 75 04 ; 0xf7719
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf771b logo.c:411
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf771f logo.c:415
+ je short 07750h ; 74 2b ; 0xf7723
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7725
+ jne short 07750h ; 75 25 ; 0xf7729
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf772b logo.c:417
+ jmp short 07735h ; eb 05 ; 0xf772e
+ dec bx ; 4b ; 0xf7730 logo.c:419
+ test bx, bx ; 85 db ; 0xf7731
+ jbe short 0775dh ; 76 28 ; 0xf7733
+ mov ax, bx ; 89 d8 ; 0xf7735
+ or ah, 002h ; 80 cc 02 ; 0xf7737
+ mov dx, 003b8h ; ba b8 03 ; 0xf773a
+ out DX, ax ; ef ; 0xf773d
+ xor dx, dx ; 31 d2 ; 0xf773e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7740
+ call 073e9h ; e8 a3 fc ; 0xf7743
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7746
+ jne short 07730h ; 75 e6 ; 0xf7748
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf774a
+ jmp short 0775dh ; eb 0d ; 0xf774e
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7750 logo.c:428
+ jne short 0775dh ; 75 07 ; 0xf7754
+ mov ax, 00200h ; b8 00 02 ; 0xf7756 logo.c:429
+ mov dx, 003b8h ; ba b8 03 ; 0xf7759
+ out DX, ax ; ef ; 0xf775c
+ mov bx, 0037dh ; bb 7d 03 ; 0xf775d logo.c:43
+ mov es, si ; 8e c6 ; 0xf7760
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7762
+ mov AL, strict byte 003h ; b0 03 ; 0xf7766 logo.c:437
+ mov AH, strict byte 000h ; b4 00 ; 0xf7768
+ int 010h ; cd 10 ; 0xf776a
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf776c logo.c:440
+ je short 07786h ; 74 14 ; 0xf7770
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7772 logo.c:443
+ jne short 077b1h ; 75 39 ; 0xf7776
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7778
+ jne short 077b1h ; 75 33 ; 0xf777c
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf777e
+ je short 07789h ; 74 05 ; 0xf7782
+ jmp short 077b1h ; eb 2b ; 0xf7784
+ jmp near 07861h ; e9 d8 00 ; 0xf7786
+ cmp byte [bp-00ch], 002h ; 80 7e f4 02 ; 0xf7789 logo.c:445
+ jne short 0779ah ; 75 0b ; 0xf778d
+ push 00a4bh ; 68 4b 0a ; 0xf778f logo.c:446
+ push strict byte 00002h ; 6a 02 ; 0xf7792
+ call 018ffh ; e8 68 a1 ; 0xf7794
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7797
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf779a logo.c:449
+ jne short 077b1h ; 75 11 ; 0xf779e
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf77a0 logo.c:452
+ mov ax, 000c0h ; b8 c0 00 ; 0xf77a3
+ call 073e9h ; e8 40 fc ; 0xf77a6
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf77a9 logo.c:453
+ jne short 077b1h ; 75 04 ; 0xf77ab
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf77ad logo.c:454
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf77b1 logo.c:459
+ je short 07786h ; 74 cf ; 0xf77b5
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf77b7 logo.c:461
+ mov ax, 00100h ; b8 00 01 ; 0xf77bb logo.c:464
+ mov cx, 01000h ; b9 00 10 ; 0xf77be
+ int 010h ; cd 10 ; 0xf77c1
+ mov ax, 00700h ; b8 00 07 ; 0xf77c3
+ mov BH, strict byte 007h ; b7 07 ; 0xf77c6
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf77c8
+ mov dx, 0184fh ; ba 4f 18 ; 0xf77ca
+ int 010h ; cd 10 ; 0xf77cd
+ mov ax, 00200h ; b8 00 02 ; 0xf77cf
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf77d2
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf77d4
+ int 010h ; cd 10 ; 0xf77d6
+ push 00a6dh ; 68 6d 0a ; 0xf77d8 logo.c:467
+ push strict byte 00002h ; 6a 02 ; 0xf77db
+ call 018ffh ; e8 1f a1 ; 0xf77dd
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77e0
+ call 074cah ; e8 e4 fc ; 0xf77e3 logo.c:468
+ push 00ab1h ; 68 b1 0a ; 0xf77e6 logo.c:469
+ push strict byte 00002h ; 6a 02 ; 0xf77e9
+ call 018ffh ; e8 11 a1 ; 0xf77eb
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77ee
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf77f1 logo.c:478
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf77f4
+ call 073e9h ; e8 ef fb ; 0xf77f7
+ mov bl, al ; 88 c3 ; 0xf77fa
+ test al, al ; 84 c0 ; 0xf77fc logo.c:479
+ je short 077f1h ; 74 f1 ; 0xf77fe
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7800 logo.c:481
+ je short 07850h ; 74 4c ; 0xf7802
+ cmp bl, 002h ; 80 fb 02 ; 0xf7804 logo.c:488
+ jc short 07829h ; 72 20 ; 0xf7807
+ cmp bl, 009h ; 80 fb 09 ; 0xf7809
+ jnbe short 07829h ; 77 1b ; 0xf780c
+ mov al, bl ; 88 d8 ; 0xf780e logo.c:490
+ xor ah, ah ; 30 e4 ; 0xf7810
+ call 07608h ; e8 f3 fd ; 0xf7812
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf7815 logo.c:497
+ jne short 0781bh ; 75 02 ; 0xf7817
+ jmp short 077f1h ; eb d6 ; 0xf7819 logo.c:498
+ mov bx, 0037ch ; bb 7c 03 ; 0xf781b logo.c:43
+ mov es, si ; 8e c6 ; 0xf781e
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7820
+ mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf7823 logo.c:501
+ jmp short 07850h ; eb 27 ; 0xf7827 logo.c:502
+ cmp bl, 02eh ; 80 fb 2e ; 0xf7829 logo.c:505
+ je short 0783eh ; 74 10 ; 0xf782c
+ cmp bl, 026h ; 80 fb 26 ; 0xf782e
+ je short 07844h ; 74 11 ; 0xf7831
+ cmp bl, 021h ; 80 fb 21 ; 0xf7833
+ jne short 0784ah ; 75 12 ; 0xf7836
+ mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7838 logo.c:509
+ jmp short 07850h ; eb 12 ; 0xf783c logo.c:510
+ mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf783e logo.c:513
+ jmp short 07850h ; eb 0c ; 0xf7842 logo.c:514
+ mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf7844 logo.c:517
+ jmp short 07850h ; eb 06 ; 0xf7848 logo.c:518
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf784a logo.c:521
+ je short 077f1h ; 74 a1 ; 0xf784e
+ mov bx, 0037dh ; bb 7d 03 ; 0xf7850 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7853
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7855
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7858
+ mov AL, strict byte 003h ; b0 03 ; 0xf785b logo.c:528
+ mov AH, strict byte 000h ; b4 00 ; 0xf785d
+ int 010h ; cd 10 ; 0xf785f
+ mov AL, strict byte 034h ; b0 34 ; 0xf7861 logo.c:533
+ out strict byte 043h, AL ; e6 43 ; 0xf7863
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7865
+ out strict byte 040h, AL ; e6 40 ; 0xf7867
+ out strict byte 040h, AL ; e6 40 ; 0xf7869
+ push bp ; 55 ; 0xf786b
+ push DS ; 1e ; 0xf786c
+ mov ds, ax ; 8e d8 ; 0xf786d
+ call 0edbfh ; e8 4d 75 ; 0xf786f
+ pop DS ; 1f ; 0xf7872
+ pop bp ; 5d ; 0xf7873
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7874 logo.c:536
+ pop di ; 5f ; 0xf7877
+ pop si ; 5e ; 0xf7878
+ pop dx ; 5a ; 0xf7879
+ pop cx ; 59 ; 0xf787a
+ pop bx ; 5b ; 0xf787b
+ pop bp ; 5d ; 0xf787c
+ retn ; c3 ; 0xf787d
+ ; disGetNextSymbol 0xf787e LB 0x264a -> off=0x0 cb=000000000000006b uValue=00000000000f627e 'delay_boot'
+delay_boot: ; 0xf787e LB 0x6b
+ push bp ; 55 ; 0xf787e logo.c:539
+ mov bp, sp ; 89 e5 ; 0xf787f
+ push bx ; 53 ; 0xf7881
+ push cx ; 51 ; 0xf7882
+ push dx ; 52 ; 0xf7883
+ push si ; 56 ; 0xf7884
+ push di ; 57 ; 0xf7885
+ mov dx, ax ; 89 c2 ; 0xf7886
+ test ax, ax ; 85 c0 ; 0xf7888 logo.c:543
+ je short 078dfh ; 74 53 ; 0xf788a
+ mov AL, strict byte 034h ; b0 34 ; 0xf788c logo.c:547
+ out strict byte 043h, AL ; e6 43 ; 0xf788e
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7890
+ out strict byte 040h, AL ; e6 40 ; 0xf7892
+ mov AL, strict byte 048h ; b0 48 ; 0xf7894
+ out strict byte 040h, AL ; e6 40 ; 0xf7896
+ push dx ; 52 ; 0xf7898 logo.c:549
+ push 00afbh ; 68 fb 0a ; 0xf7899
+ push strict byte 00002h ; 6a 02 ; 0xf789c
+ call 018ffh ; e8 5e a0 ; 0xf789e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf78a1
+ mov bx, dx ; 89 d3 ; 0xf78a4 logo.c:550
+ test bx, bx ; 85 db ; 0xf78a6
+ jbe short 078c1h ; 76 17 ; 0xf78a8
+ push bx ; 53 ; 0xf78aa logo.c:552
+ push 00b19h ; 68 19 0b ; 0xf78ab
+ push strict byte 00002h ; 6a 02 ; 0xf78ae
+ call 018ffh ; e8 4c a0 ; 0xf78b0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf78b3
+ xor dx, dx ; 31 d2 ; 0xf78b6 logo.c:553
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf78b8
+ call 073e9h ; e8 2b fb ; 0xf78bb
+ dec bx ; 4b ; 0xf78be logo.c:554
+ jmp short 078a6h ; eb e5 ; 0xf78bf
+ push 00a49h ; 68 49 0a ; 0xf78c1 logo.c:555
+ push strict byte 00002h ; 6a 02 ; 0xf78c4
+ call 018ffh ; e8 36 a0 ; 0xf78c6
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf78c9
+ mov AL, strict byte 034h ; b0 34 ; 0xf78cc logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf78ce
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf78d0
+ out strict byte 040h, AL ; e6 40 ; 0xf78d2
+ out strict byte 040h, AL ; e6 40 ; 0xf78d4
+ push bp ; 55 ; 0xf78d6
+ push DS ; 1e ; 0xf78d7
+ mov ds, ax ; 8e d8 ; 0xf78d8
+ call 0edbfh ; e8 e2 74 ; 0xf78da
+ pop DS ; 1f ; 0xf78dd
+ pop bp ; 5d ; 0xf78de
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf78df logo.c:558
+ pop di ; 5f ; 0xf78e2
+ pop si ; 5e ; 0xf78e3
+ pop dx ; 5a ; 0xf78e4
+ pop cx ; 59 ; 0xf78e5
+ pop bx ; 5b ; 0xf78e6
+ pop bp ; 5d ; 0xf78e7
+ retn ; c3 ; 0xf78e8
+ ; disGetNextSymbol 0xf78e9 LB 0x25df -> off=0x0 cb=00000000000000d5 uValue=00000000000f62e9 'scsi_cmd_data_in'
+scsi_cmd_data_in: ; 0xf78e9 LB 0xd5
+ push bp ; 55 ; 0xf78e9 scsi.c:99
+ mov bp, sp ; 89 e5 ; 0xf78ea
+ push si ; 56 ; 0xf78ec
+ push di ; 57 ; 0xf78ed
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf78ee
+ mov si, ax ; 89 c6 ; 0xf78f1
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf78f3
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf78f6
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf78f9
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf78fc
+ mov dx, si ; 89 f2 ; 0xf78ff scsi.c:107
+ in AL, DX ; ec ; 0xf7901
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7902
+ test AL, strict byte 001h ; a8 01 ; 0xf7904 scsi.c:108
+ jne short 078ffh ; 75 f7 ; 0xf7906
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7908 scsi.c:110
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf790b
+ jne short 07913h ; 75 04 ; 0xf790d
+ xor ax, ax ; 31 c0 ; 0xf790f
+ jmp short 07915h ; eb 02 ; 0xf7911
+ xor ah, ah ; 30 e4 ; 0xf7913
+ mov di, ax ; 89 c7 ; 0xf7915
+ mov ax, bx ; 89 d8 ; 0xf7917
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7919
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf791c
+ shr dx, 1 ; d1 ea ; 0xf791f
+ rcr ax, 1 ; d1 d8 ; 0xf7921
+ loop 0791fh ; e2 fa ; 0xf7923
+ mov cx, ax ; 89 c1 ; 0xf7925
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7927
+ or cx, di ; 09 f9 ; 0xf792b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf792d scsi.c:111
+ mov dx, si ; 89 f2 ; 0xf7930
+ out DX, AL ; ee ; 0xf7932
+ xor al, al ; 30 c0 ; 0xf7933 scsi.c:112
+ out DX, AL ; ee ; 0xf7935
+ mov al, cl ; 88 c8 ; 0xf7936 scsi.c:113
+ out DX, AL ; ee ; 0xf7938
+ mov al, bl ; 88 d8 ; 0xf7939 scsi.c:114
+ out DX, AL ; ee ; 0xf793b
+ mov ax, bx ; 89 d8 ; 0xf793c scsi.c:115
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf793e
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7941
+ shr dx, 1 ; d1 ea ; 0xf7944
+ rcr ax, 1 ; d1 d8 ; 0xf7946
+ loop 07944h ; e2 fa ; 0xf7948
+ mov dx, si ; 89 f2 ; 0xf794a
+ out DX, AL ; ee ; 0xf794c
+ xor cx, cx ; 31 c9 ; 0xf794d scsi.c:116
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf794f
+ xor ah, ah ; 30 e4 ; 0xf7952
+ cmp cx, ax ; 39 c1 ; 0xf7954
+ jnc short 07966h ; 73 0e ; 0xf7956
+ les di, [bp-00ah] ; c4 7e f6 ; 0xf7958 scsi.c:117
+ add di, cx ; 01 cf ; 0xf795b
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf795d
+ mov dx, si ; 89 f2 ; 0xf7960
+ out DX, AL ; ee ; 0xf7962
+ inc cx ; 41 ; 0xf7963
+ jmp short 0794fh ; eb e9 ; 0xf7964
+ mov dx, si ; 89 f2 ; 0xf7966 scsi.c:121
+ in AL, DX ; ec ; 0xf7968
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7969
+ test AL, strict byte 001h ; a8 01 ; 0xf796b scsi.c:122
+ jne short 07966h ; 75 f7 ; 0xf796d
+ test AL, strict byte 002h ; a8 02 ; 0xf796f scsi.c:125
+ je short 07981h ; 74 0e ; 0xf7971
+ lea dx, [si+003h] ; 8d 54 03 ; 0xf7973 scsi.c:126
+ xor al, al ; 30 c0 ; 0xf7976
+ out DX, AL ; ee ; 0xf7978
+ in AL, DX ; ec ; 0xf7979 scsi.c:128
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf797a
+ mov di, strict word 00004h ; bf 04 00 ; 0xf797c scsi.c:130
+ jmp short 079b3h ; eb 32 ; 0xf797f
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7981 scsi.c:136
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7984
+ jne short 07990h ; 75 06 ; 0xf7988
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf798a
+ jbe short 079aah ; 76 1a ; 0xf798e
+ mov cx, 08000h ; b9 00 80 ; 0xf7990 scsi.c:138
+ les di, [bp+006h] ; c4 7e 06 ; 0xf7993
+ rep insb ; f3 6c ; 0xf7996
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7998 scsi.c:139
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf799c
+ mov ax, es ; 8c c0 ; 0xf79a0
+ add ax, 00800h ; 05 00 08 ; 0xf79a2
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf79a5
+ jmp short 07981h ; eb d7 ; 0xf79a8 scsi.c:141
+ mov cx, bx ; 89 d9 ; 0xf79aa scsi.c:144
+ les di, [bp+006h] ; c4 7e 06 ; 0xf79ac
+ rep insb ; f3 6c ; 0xf79af
+ xor di, di ; 31 ff ; 0xf79b1 scsi.c:146
+ mov ax, di ; 89 f8 ; 0xf79b3 scsi.c:147
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf79b5
+ pop di ; 5f ; 0xf79b8
+ pop si ; 5e ; 0xf79b9
+ pop bp ; 5d ; 0xf79ba
+ retn 0000ah ; c2 0a 00 ; 0xf79bb
+ ; disGetNextSymbol 0xf79be LB 0x250a -> off=0x0 cb=00000000000000d5 uValue=00000000000f63be 'scsi_cmd_data_out'
+scsi_cmd_data_out: ; 0xf79be LB 0xd5
+ push bp ; 55 ; 0xf79be scsi.c:149
+ mov bp, sp ; 89 e5 ; 0xf79bf
+ push si ; 56 ; 0xf79c1
+ push di ; 57 ; 0xf79c2
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf79c3
+ mov di, ax ; 89 c7 ; 0xf79c6
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf79c8
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf79cb
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf79ce
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf79d1
+ mov dx, di ; 89 fa ; 0xf79d4 scsi.c:157
+ in AL, DX ; ec ; 0xf79d6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf79d7
+ test AL, strict byte 001h ; a8 01 ; 0xf79d9 scsi.c:158
+ jne short 079d4h ; 75 f7 ; 0xf79db
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf79dd scsi.c:161
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf79e0
+ jne short 079e8h ; 75 04 ; 0xf79e2
+ xor ax, ax ; 31 c0 ; 0xf79e4
+ jmp short 079eah ; eb 02 ; 0xf79e6
+ xor ah, ah ; 30 e4 ; 0xf79e8
+ mov si, ax ; 89 c6 ; 0xf79ea
+ mov ax, bx ; 89 d8 ; 0xf79ec
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf79ee
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf79f1
+ shr dx, 1 ; d1 ea ; 0xf79f4
+ rcr ax, 1 ; d1 d8 ; 0xf79f6
+ loop 079f4h ; e2 fa ; 0xf79f8
+ mov cx, ax ; 89 c1 ; 0xf79fa
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf79fc
+ or cx, si ; 09 f1 ; 0xf7a00
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a02 scsi.c:162
+ mov dx, di ; 89 fa ; 0xf7a05
+ out DX, AL ; ee ; 0xf7a07
+ mov AL, strict byte 001h ; b0 01 ; 0xf7a08 scsi.c:163
+ out DX, AL ; ee ; 0xf7a0a
+ mov al, cl ; 88 c8 ; 0xf7a0b scsi.c:164
+ out DX, AL ; ee ; 0xf7a0d
+ mov al, bl ; 88 d8 ; 0xf7a0e scsi.c:165
+ out DX, AL ; ee ; 0xf7a10
+ mov ax, bx ; 89 d8 ; 0xf7a11 scsi.c:166
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a13
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7a16
+ shr dx, 1 ; d1 ea ; 0xf7a19
+ rcr ax, 1 ; d1 d8 ; 0xf7a1b
+ loop 07a19h ; e2 fa ; 0xf7a1d
+ mov dx, di ; 89 fa ; 0xf7a1f
+ out DX, AL ; ee ; 0xf7a21
+ xor cx, cx ; 31 c9 ; 0xf7a22 scsi.c:167
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a24
+ xor ah, ah ; 30 e4 ; 0xf7a27
+ cmp cx, ax ; 39 c1 ; 0xf7a29
+ jnc short 07a3bh ; 73 0e ; 0xf7a2b
+ les si, [bp-00ah] ; c4 76 f6 ; 0xf7a2d scsi.c:168
+ add si, cx ; 01 ce ; 0xf7a30
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7a32
+ mov dx, di ; 89 fa ; 0xf7a35
+ out DX, AL ; ee ; 0xf7a37
+ inc cx ; 41 ; 0xf7a38
+ jmp short 07a24h ; eb e9 ; 0xf7a39
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7a3b scsi.c:173
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7a3e
+ jne short 07a4ah ; 75 06 ; 0xf7a42
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7a44
+ jbe short 07a65h ; 76 1b ; 0xf7a48
+ mov cx, 08000h ; b9 00 80 ; 0xf7a4a scsi.c:175
+ les si, [bp+006h] ; c4 76 06 ; 0xf7a4d
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7a50
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7a53 scsi.c:176
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7a57
+ mov ax, es ; 8c c0 ; 0xf7a5b
+ add ax, 00800h ; 05 00 08 ; 0xf7a5d
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7a60
+ jmp short 07a3bh ; eb d6 ; 0xf7a63 scsi.c:178
+ mov cx, bx ; 89 d9 ; 0xf7a65 scsi.c:181
+ les si, [bp+006h] ; c4 76 06 ; 0xf7a67
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7a6a
+ mov dx, di ; 89 fa ; 0xf7a6d scsi.c:185
+ in AL, DX ; ec ; 0xf7a6f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7a70
+ test AL, strict byte 001h ; a8 01 ; 0xf7a72 scsi.c:186
+ jne short 07a6dh ; 75 f7 ; 0xf7a74
+ test AL, strict byte 002h ; a8 02 ; 0xf7a76 scsi.c:189
+ je short 07a88h ; 74 0e ; 0xf7a78
+ lea dx, [di+003h] ; 8d 55 03 ; 0xf7a7a scsi.c:190
+ xor al, al ; 30 c0 ; 0xf7a7d
+ out DX, AL ; ee ; 0xf7a7f
+ in AL, DX ; ec ; 0xf7a80 scsi.c:192
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7a81
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7a83 scsi.c:194
+ jmp short 07a8ah ; eb 02 ; 0xf7a86
+ xor ax, ax ; 31 c0 ; 0xf7a88 scsi.c:197
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7a8a scsi.c:198
+ pop di ; 5f ; 0xf7a8d
+ pop si ; 5e ; 0xf7a8e
+ pop bp ; 5d ; 0xf7a8f
+ retn 0000ah ; c2 0a 00 ; 0xf7a90
+ ; disGetNextSymbol 0xf7a93 LB 0x2435 -> off=0x0 cb=00000000000000e0 uValue=00000000000f6493 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7a93 LB 0xe0
+ push bp ; 55 ; 0xf7a93 scsi.c:207
+ mov bp, sp ; 89 e5 ; 0xf7a94
+ push si ; 56 ; 0xf7a96
+ push di ; 57 ; 0xf7a97
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7a98
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7a9b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7a9e scsi.c:216
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7aa1
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7aa5
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7aa7
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7aaa scsi.c:217
+ jbe short 07abfh ; 76 11 ; 0xf7aac
+ xor ah, ah ; 30 e4 ; 0xf7aae scsi.c:218
+ push ax ; 50 ; 0xf7ab0
+ push 00b1eh ; 68 1e 0b ; 0xf7ab1
+ push 00b30h ; 68 30 0b ; 0xf7ab4
+ push strict byte 00007h ; 6a 07 ; 0xf7ab7
+ call 018ffh ; e8 43 9e ; 0xf7ab9
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7abc
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7abf scsi.c:220
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7ac2
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7ac6 scsi.c:223
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7acb scsi.c:224
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7acf
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7ad3
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7ad7
+ xchg ah, al ; 86 c4 ; 0xf7ada
+ xchg bh, bl ; 86 df ; 0xf7adc
+ xchg ch, cl ; 86 cd ; 0xf7ade
+ xchg dh, dl ; 86 d6 ; 0xf7ae0
+ xchg dx, ax ; 92 ; 0xf7ae2
+ xchg bx, cx ; 87 cb ; 0xf7ae3
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7ae5
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7ae8
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7aeb
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7aee
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7af1 scsi.c:225
+ mov ax, di ; 89 f8 ; 0xf7af5 scsi.c:226
+ xor dx, dx ; 31 d2 ; 0xf7af7
+ xchg ah, al ; 86 c4 ; 0xf7af9
+ xchg dh, dl ; 86 d6 ; 0xf7afb
+ xchg dx, ax ; 92 ; 0xf7afd
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7afe
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7b01
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7b04 scsi.c:227
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b08 scsi.c:230
+ xor ah, ah ; 30 e4 ; 0xf7b0b
+ sal ax, 002h ; c1 e0 02 ; 0xf7b0d
+ mov bx, si ; 89 f3 ; 0xf7b10
+ add bx, ax ; 01 c3 ; 0xf7b12
+ mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7b14
+ mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf7b19 scsi.c:231
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7b1e scsi.c:236
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7b21
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7b26
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7b29
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7b2c
+ loop 07b29h ; e2 f8 ; 0xf7b2f
+ push word [bp-008h] ; ff 76 f8 ; 0xf7b31
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7b34
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7b37
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7b3b
+ push strict byte 00010h ; 6a 10 ; 0xf7b3f
+ xor dh, dh ; 30 f6 ; 0xf7b41
+ mov cx, ss ; 8c d1 ; 0xf7b43
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7b45
+ call 078e9h ; e8 9e fd ; 0xf7b48
+ mov ah, al ; 88 c4 ; 0xf7b4b
+ test al, al ; 84 c0 ; 0xf7b4d scsi.c:239
+ jne short 07b66h ; 75 15 ; 0xf7b4f
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7b51 scsi.c:241
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7b54
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7b58 scsi.c:242
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7b5b
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7b5f
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7b62
+ mov al, ah ; 88 e0 ; 0xf7b66 scsi.c:246
+ xor ah, ah ; 30 e4 ; 0xf7b68
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7b6a scsi.c:247
+ pop di ; 5f ; 0xf7b6d
+ pop si ; 5e ; 0xf7b6e
+ pop bp ; 5d ; 0xf7b6f
+ retn 00004h ; c2 04 00 ; 0xf7b70
+ ; disGetNextSymbol 0xf7b73 LB 0x2355 -> off=0x0 cb=00000000000000e0 uValue=00000000000f6573 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf7b73 LB 0xe0
+ push bp ; 55 ; 0xf7b73 scsi.c:256
+ mov bp, sp ; 89 e5 ; 0xf7b74
+ push si ; 56 ; 0xf7b76
+ push di ; 57 ; 0xf7b77
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7b78
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7b7b
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7b7e scsi.c:265
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7b81
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7b85
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7b87
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7b8a scsi.c:266
+ jbe short 07b9fh ; 76 11 ; 0xf7b8c
+ xor ah, ah ; 30 e4 ; 0xf7b8e scsi.c:267
+ push ax ; 50 ; 0xf7b90
+ push 00b4fh ; 68 4f 0b ; 0xf7b91
+ push 00b30h ; 68 30 0b ; 0xf7b94
+ push strict byte 00007h ; 6a 07 ; 0xf7b97
+ call 018ffh ; e8 63 9d ; 0xf7b99
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7b9c
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7b9f scsi.c:269
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7ba2
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf7ba6 scsi.c:272
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7bab scsi.c:273
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7baf
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7bb3
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7bb7
+ xchg ah, al ; 86 c4 ; 0xf7bba
+ xchg bh, bl ; 86 df ; 0xf7bbc
+ xchg ch, cl ; 86 cd ; 0xf7bbe
+ xchg dh, dl ; 86 d6 ; 0xf7bc0
+ xchg dx, ax ; 92 ; 0xf7bc2
+ xchg bx, cx ; 87 cb ; 0xf7bc3
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7bc5
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7bc8
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7bcb
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7bce
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7bd1 scsi.c:274
+ mov ax, di ; 89 f8 ; 0xf7bd5 scsi.c:275
+ xor dx, dx ; 31 d2 ; 0xf7bd7
+ xchg ah, al ; 86 c4 ; 0xf7bd9
+ xchg dh, dl ; 86 d6 ; 0xf7bdb
+ xchg dx, ax ; 92 ; 0xf7bdd
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7bde
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7be1
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7be4 scsi.c:276
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7be8 scsi.c:278
+ xor ah, ah ; 30 e4 ; 0xf7beb
+ sal ax, 002h ; c1 e0 02 ; 0xf7bed
+ mov bx, si ; 89 f3 ; 0xf7bf0
+ add bx, ax ; 01 c3 ; 0xf7bf2
+ mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7bf4
+ mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf7bf9 scsi.c:279
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7bfe scsi.c:284
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7c01
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7c06
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7c09
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7c0c
+ loop 07c09h ; e2 f8 ; 0xf7c0f
+ push word [bp-008h] ; ff 76 f8 ; 0xf7c11
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7c14
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7c17
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7c1b
+ push strict byte 00010h ; 6a 10 ; 0xf7c1f
+ xor dh, dh ; 30 f6 ; 0xf7c21
+ mov cx, ss ; 8c d1 ; 0xf7c23
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7c25
+ call 079beh ; e8 93 fd ; 0xf7c28
+ mov ah, al ; 88 c4 ; 0xf7c2b
+ test al, al ; 84 c0 ; 0xf7c2d scsi.c:287
+ jne short 07c46h ; 75 15 ; 0xf7c2f
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7c31 scsi.c:289
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7c34
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7c38 scsi.c:290
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7c3b
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7c3f
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7c42
+ mov al, ah ; 88 e0 ; 0xf7c46 scsi.c:294
+ xor ah, ah ; 30 e4 ; 0xf7c48
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7c4a scsi.c:295
+ pop di ; 5f ; 0xf7c4d
+ pop si ; 5e ; 0xf7c4e
+ pop bp ; 5d ; 0xf7c4f
+ retn 00004h ; c2 04 00 ; 0xf7c50
+ ; disGetNextSymbol 0xf7c53 LB 0x2275 -> off=0x0 cb=0000000000000176 uValue=00000000000f6653 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf7c53 LB 0x176
+ push bp ; 55 ; 0xf7c53 scsi.c:315
+ mov bp, sp ; 89 e5 ; 0xf7c54
+ push si ; 56 ; 0xf7c56
+ push di ; 57 ; 0xf7c57
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7c58
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7c5b
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf7c5e
+ mov word [bp-00ah], cx ; 89 4e f6 ; 0xf7c61
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7c64 scsi.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7c67
+ mov es, dx ; 8e c2 ; 0xf7c6a
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7c6c
+ mov si, 00122h ; be 22 01 ; 0xf7c6f scsi.c:49
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf7c72
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf7c75 scsi.c:326
+ jne short 07c9ah ; 75 1f ; 0xf7c79
+ mov bx, 00da0h ; bb a0 0d ; 0xf7c7b scsi.c:327
+ mov cx, ds ; 8c d9 ; 0xf7c7e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7c80
+ call 018bch ; e8 36 9c ; 0xf7c83
+ push 00b62h ; 68 62 0b ; 0xf7c86
+ push 00b72h ; 68 72 0b ; 0xf7c89
+ push strict byte 00004h ; 6a 04 ; 0xf7c8c
+ call 018ffh ; e8 6e 9c ; 0xf7c8e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7c91
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7c94 scsi.c:328
+ jmp near 07dbeh ; e9 24 01 ; 0xf7c97
+ sub ax, strict word 00008h ; 2d 08 00 ; 0xf7c9a scsi.c:332
+ sal ax, 002h ; c1 e0 02 ; 0xf7c9d scsi.c:342
+ sub byte [bp-006h], 002h ; 80 6e fa 02 ; 0xf7ca0 scsi.c:340
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7ca4
+ mov di, si ; 89 f7 ; 0xf7ca7
+ add di, ax ; 01 c7 ; 0xf7ca9
+ mov bx, word [es:di+0021ch] ; 26 8b 9d 1c 02 ; 0xf7cab
+ mov al, byte [es:di+0021eh] ; 26 8a 85 1e 02 ; 0xf7cb0 scsi.c:343
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf7cb5
+ mov dx, bx ; 89 da ; 0xf7cb8 scsi.c:347
+ in AL, DX ; ec ; 0xf7cba
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7cbb
+ test AL, strict byte 001h ; a8 01 ; 0xf7cbd scsi.c:348
+ jne short 07cb8h ; 75 f7 ; 0xf7cbf
+ xor di, di ; 31 ff ; 0xf7cc1 scsi.c:354
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7cc3
+ add ax, word [bp+004h] ; 03 46 04 ; 0xf7cc6
+ adc di, word [bp+008h] ; 13 7e 08 ; 0xf7cc9
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7ccc
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf7ccf
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7cd3
+ xor dx, dx ; 31 d2 ; 0xf7cd6
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf7cd8
+ add cx, ax ; 01 c1 ; 0xf7cdb
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf7cdd
+ adc di, dx ; 11 d7 ; 0xf7ce0
+ mov ax, cx ; 89 c8 ; 0xf7ce2 scsi.c:356
+ mov dx, di ; 89 fa ; 0xf7ce4
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7ce6
+ shr dx, 1 ; d1 ea ; 0xf7ce9
+ rcr ax, 1 ; d1 d8 ; 0xf7ceb
+ loop 07ce9h ; e2 fa ; 0xf7ced
+ mov cx, ax ; 89 c1 ; 0xf7cef
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7cf1
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7cf5
+ xor ah, ah ; 30 e4 ; 0xf7cf8
+ or cx, ax ; 09 c1 ; 0xf7cfa
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7cfc scsi.c:357
+ mov dx, bx ; 89 da ; 0xf7cff
+ out DX, AL ; ee ; 0xf7d01
+ xor al, al ; 30 c0 ; 0xf7d02 scsi.c:358
+ out DX, AL ; ee ; 0xf7d04
+ mov al, cl ; 88 c8 ; 0xf7d05 scsi.c:359
+ out DX, AL ; ee ; 0xf7d07
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7d08 scsi.c:360
+ out DX, AL ; ee ; 0xf7d0b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf7d0c scsi.c:361
+ mov dx, di ; 89 fa ; 0xf7d0f
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7d11
+ shr dx, 1 ; d1 ea ; 0xf7d14
+ rcr ax, 1 ; d1 d8 ; 0xf7d16
+ loop 07d14h ; e2 fa ; 0xf7d18
+ mov dx, bx ; 89 da ; 0xf7d1a
+ out DX, AL ; ee ; 0xf7d1c
+ xor cx, cx ; 31 c9 ; 0xf7d1d scsi.c:362
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d1f
+ xor ah, ah ; 30 e4 ; 0xf7d22
+ cmp cx, ax ; 39 c1 ; 0xf7d24
+ jnc short 07d39h ; 73 11 ; 0xf7d26
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf7d28 scsi.c:363
+ mov di, word [bp-010h] ; 8b 7e f0 ; 0xf7d2b
+ add di, cx ; 01 cf ; 0xf7d2e
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7d30
+ mov dx, bx ; 89 da ; 0xf7d33
+ out DX, AL ; ee ; 0xf7d35
+ inc cx ; 41 ; 0xf7d36
+ jmp short 07d1fh ; eb e6 ; 0xf7d37
+ mov dx, bx ; 89 da ; 0xf7d39 scsi.c:367
+ in AL, DX ; ec ; 0xf7d3b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d3c
+ test AL, strict byte 001h ; a8 01 ; 0xf7d3e scsi.c:368
+ jne short 07d39h ; 75 f7 ; 0xf7d40
+ test AL, strict byte 002h ; a8 02 ; 0xf7d42 scsi.c:371
+ je short 07d54h ; 74 0e ; 0xf7d44
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf7d46 scsi.c:372
+ xor al, al ; 30 c0 ; 0xf7d49
+ out DX, AL ; ee ; 0xf7d4b
+ in AL, DX ; ec ; 0xf7d4c scsi.c:374
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d4d
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf7d4f scsi.c:376
+ jmp short 07dbeh ; eb 6a ; 0xf7d52
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7d54 scsi.c:381
+ test ax, ax ; 85 c0 ; 0xf7d57
+ je short 07d63h ; 74 08 ; 0xf7d59
+ lea dx, [bx+001h] ; 8d 57 01 ; 0xf7d5b scsi.c:382
+ mov cx, ax ; 89 c1 ; 0xf7d5e
+ in AL, DX ; ec ; 0xf7d60
+ loop 07d60h ; e2 fd ; 0xf7d61
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7d63 scsi.c:384
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7d66
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7d69
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf7d6d
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7d70
+ lea ax, [bx+001h] ; 8d 47 01 ; 0xf7d74 scsi.c:389
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf7d77
+ jne short 07d84h ; 75 07 ; 0xf7d7b
+ cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf7d7d
+ jbe short 07da1h ; 76 1d ; 0xf7d82
+ mov dx, ax ; 89 c2 ; 0xf7d84 scsi.c:391
+ mov cx, 08000h ; b9 00 80 ; 0xf7d86
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7d89
+ rep insb ; f3 6c ; 0xf7d8c
+ add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf7d8e scsi.c:392
+ adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf7d93
+ mov ax, es ; 8c c0 ; 0xf7d97
+ add ax, 00800h ; 05 00 08 ; 0xf7d99
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf7d9c
+ jmp short 07d74h ; eb d3 ; 0xf7d9f scsi.c:394
+ mov dx, ax ; 89 c2 ; 0xf7da1 scsi.c:397
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf7da3
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7da6
+ rep insb ; f3 6c ; 0xf7da9
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf7dab scsi.c:399
+ cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf7dae
+ je short 07dbch ; 74 07 ; 0xf7db3
+ mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf7db5 scsi.c:400
+ in AL, DX ; ec ; 0xf7db9
+ loop 07db9h ; e2 fd ; 0xf7dba
+ xor dx, dx ; 31 d2 ; 0xf7dbc scsi.c:402
+ mov ax, dx ; 89 d0 ; 0xf7dbe scsi.c:403
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7dc0
+ pop di ; 5f ; 0xf7dc3
+ pop si ; 5e ; 0xf7dc4
+ pop bp ; 5d ; 0xf7dc5
+ retn 0000ch ; c2 0c 00 ; 0xf7dc6
+ ; disGetNextSymbol 0xf7dc9 LB 0x20ff -> off=0x0 cb=00000000000004a7 uValue=00000000000f67c9 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf7dc9 LB 0x4a7
+ push bp ; 55 ; 0xf7dc9 scsi.c:411
+ mov bp, sp ; 89 e5 ; 0xf7dca
+ push bx ; 53 ; 0xf7dcc
+ push cx ; 51 ; 0xf7dcd
+ push dx ; 52 ; 0xf7dce
+ push si ; 56 ; 0xf7dcf
+ push di ; 57 ; 0xf7dd0
+ sub sp, 0023ch ; 81 ec 3c 02 ; 0xf7dd1
+ push ax ; 50 ; 0xf7dd5
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7dd6 scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7dd9
+ mov es, ax ; 8e c0 ; 0xf7ddc
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7dde
+ mov di, 00122h ; bf 22 01 ; 0xf7de1 scsi.c:49
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf7de4
+ mov word [bp-012h], strict word 00000h ; c7 46 ee 00 00 ; 0xf7de7 scsi.c:420
+ jmp near 081eeh ; e9 ff 03 ; 0xf7dec
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7def scsi.c:440
+ jc short 07df6h ; 72 03 ; 0xf7df1
+ jmp near 08266h ; e9 70 04 ; 0xf7df3
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7df6 scsi.c:455
+ xor bx, bx ; 31 db ; 0xf7df9
+ mov dx, ss ; 8c d2 ; 0xf7dfb
+ lea ax, [bp-046h] ; 8d 46 ba ; 0xf7dfd
+ call 09bb0h ; e8 ad 1d ; 0xf7e00
+ mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf7e03 scsi.c:456
+ mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf7e07 scsi.c:457
+ mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf7e0b scsi.c:458
+ push strict byte 00000h ; 6a 00 ; 0xf7e0f scsi.c:460
+ push strict byte 00020h ; 6a 20 ; 0xf7e11
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf7e13
+ push SS ; 16 ; 0xf7e17
+ push dx ; 52 ; 0xf7e18
+ push strict byte 00010h ; 6a 10 ; 0xf7e19
+ mov dl, byte [bp-012h] ; 8a 56 ee ; 0xf7e1b
+ xor dh, dh ; 30 f6 ; 0xf7e1e
+ mov cx, ss ; 8c d1 ; 0xf7e20
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf7e22
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf7e25
+ call 078e9h ; e8 bd fa ; 0xf7e29
+ test al, al ; 84 c0 ; 0xf7e2c scsi.c:461
+ je short 07e3eh ; 74 0e ; 0xf7e2e
+ push 00b92h ; 68 92 0b ; 0xf7e30 scsi.c:462
+ push 00bcbh ; 68 cb 0b ; 0xf7e33
+ push strict byte 00007h ; 6a 07 ; 0xf7e36
+ call 018ffh ; e8 c4 9a ; 0xf7e38
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7e3b
+ mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf7e3e scsi.c:467
+ mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf7e42
+ mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf7e46
+ mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf7e4a
+ xchg ah, al ; 86 c4 ; 0xf7e4e
+ xchg bh, bl ; 86 df ; 0xf7e50
+ xchg ch, cl ; 86 cd ; 0xf7e52
+ xchg dh, dl ; 86 d6 ; 0xf7e54
+ xchg dx, ax ; 92 ; 0xf7e56
+ xchg bx, cx ; 87 cb ; 0xf7e57
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf7e59
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf7e5c
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7e5f
+ mov word [bp-018h], cx ; 89 4e e8 ; 0xf7e62
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7e65
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xf7e68
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf7e6b
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf7e6e
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7e71 scsi.c:469
+ xor ah, ah ; 30 e4 ; 0xf7e75
+ mov bx, ax ; 89 c3 ; 0xf7e77
+ sal bx, 008h ; c1 e3 08 ; 0xf7e79
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7e7c
+ xor si, si ; 31 f6 ; 0xf7e80
+ or bx, ax ; 09 c3 ; 0xf7e82
+ mov al, byte [bp-0023ch] ; 8a 86 c4 fd ; 0xf7e84
+ xor dx, dx ; 31 d2 ; 0xf7e88
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7e8a
+ sal ax, 1 ; d1 e0 ; 0xf7e8d
+ rcl dx, 1 ; d1 d2 ; 0xf7e8f
+ loop 07e8dh ; e2 fa ; 0xf7e91
+ mov cx, si ; 89 f1 ; 0xf7e93
+ or cx, ax ; 09 c1 ; 0xf7e95
+ or dx, bx ; 09 da ; 0xf7e97
+ mov al, byte [bp-0023bh] ; 8a 86 c5 fd ; 0xf7e99
+ xor ah, ah ; 30 e4 ; 0xf7e9d
+ or cx, ax ; 09 c1 ; 0xf7e9f
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7ea1
+ test dx, dx ; 85 d2 ; 0xf7ea4 scsi.c:475
+ jne short 07eaeh ; 75 06 ; 0xf7ea6
+ cmp cx, 00200h ; 81 f9 00 02 ; 0xf7ea8
+ je short 07eceh ; 74 20 ; 0xf7eac
+ mov bx, 00da0h ; bb a0 0d ; 0xf7eae scsi.c:478
+ mov cx, ds ; 8c d9 ; 0xf7eb1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7eb3
+ call 018bch ; e8 03 9a ; 0xf7eb6
+ push dx ; 52 ; 0xf7eb9
+ push word [bp-016h] ; ff 76 ea ; 0xf7eba
+ push word [bp-012h] ; ff 76 ee ; 0xf7ebd
+ push 00beah ; 68 ea 0b ; 0xf7ec0
+ push strict byte 00004h ; 6a 04 ; 0xf7ec3
+ call 018ffh ; e8 37 9a ; 0xf7ec5
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7ec8
+ jmp near 081e2h ; e9 14 03 ; 0xf7ecb scsi.c:479
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7ece scsi.c:483
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7ed1
+ jc short 07ee1h ; 72 0c ; 0xf7ed3
+ jbe short 07ee9h ; 76 12 ; 0xf7ed5
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7ed7
+ je short 07ef1h ; 74 16 ; 0xf7ed9
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7edb
+ je short 07eedh ; 74 0e ; 0xf7edd
+ jmp short 07f3ah ; eb 59 ; 0xf7edf
+ test al, al ; 84 c0 ; 0xf7ee1
+ jne short 07f3ah ; 75 55 ; 0xf7ee3
+ mov BL, strict byte 090h ; b3 90 ; 0xf7ee5 scsi.c:486
+ jmp short 07ef3h ; eb 0a ; 0xf7ee7 scsi.c:487
+ mov BL, strict byte 098h ; b3 98 ; 0xf7ee9 scsi.c:489
+ jmp short 07ef3h ; eb 06 ; 0xf7eeb scsi.c:490
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf7eed scsi.c:492
+ jmp short 07ef3h ; eb 02 ; 0xf7eef scsi.c:493
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf7ef1 scsi.c:495
+ mov cl, bl ; 88 d9 ; 0xf7ef3 scsi.c:499
+ add cl, 007h ; 80 c1 07 ; 0xf7ef5
+ xor ch, ch ; 30 ed ; 0xf7ef8
+ mov ax, cx ; 89 c8 ; 0xf7efa
+ call 01650h ; e8 51 97 ; 0xf7efc
+ test al, al ; 84 c0 ; 0xf7eff
+ je short 07f3ah ; 74 37 ; 0xf7f01
+ mov al, bl ; 88 d8 ; 0xf7f03 scsi.c:504
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7f05
+ xor ah, ah ; 30 e4 ; 0xf7f07
+ call 01650h ; e8 44 97 ; 0xf7f09
+ xor ah, ah ; 30 e4 ; 0xf7f0c
+ mov dx, ax ; 89 c2 ; 0xf7f0e
+ sal dx, 008h ; c1 e2 08 ; 0xf7f10
+ mov al, bl ; 88 d8 ; 0xf7f13
+ call 01650h ; e8 38 97 ; 0xf7f15
+ xor ah, ah ; 30 e4 ; 0xf7f18
+ add ax, dx ; 01 d0 ; 0xf7f1a
+ cwd ; 99 ; 0xf7f1c
+ mov si, ax ; 89 c6 ; 0xf7f1d
+ mov al, bl ; 88 d8 ; 0xf7f1f scsi.c:505
+ add AL, strict byte 002h ; 04 02 ; 0xf7f21
+ xor ah, ah ; 30 e4 ; 0xf7f23
+ call 01650h ; e8 28 97 ; 0xf7f25
+ xor ah, ah ; 30 e4 ; 0xf7f28
+ mov word [bp-022h], ax ; 89 46 de ; 0xf7f2a
+ mov ax, cx ; 89 c8 ; 0xf7f2d scsi.c:506
+ call 01650h ; e8 1e 97 ; 0xf7f2f
+ xor ah, ah ; 30 e4 ; 0xf7f32
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf7f34
+ jmp near 08028h ; e9 ee 00 ; 0xf7f37 scsi.c:508
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7f3a scsi.c:509
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf7f3d
+ mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf7f40
+ mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf7f43
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf7f46
+ call 09b90h ; e8 44 1c ; 0xf7f49
+ mov word [bp-026h], ax ; 89 46 da ; 0xf7f4c
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf7f4f
+ mov word [bp-014h], cx ; 89 4e ec ; 0xf7f52
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xf7f55
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf7f58 scsi.c:513
+ test ax, ax ; 85 c0 ; 0xf7f5b
+ jnbe short 07f74h ; 77 15 ; 0xf7f5d
+ je short 07f64h ; 74 03 ; 0xf7f5f
+ jmp near 07fe9h ; e9 85 00 ; 0xf7f61
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf7f64
+ jnbe short 07f74h ; 77 0a ; 0xf7f68
+ jne short 07f61h ; 75 f5 ; 0xf7f6a
+ cmp word [bp-018h], strict byte 00040h ; 83 7e e8 40 ; 0xf7f6c
+ jnbe short 07f74h ; 77 02 ; 0xf7f70
+ jne short 07fe9h ; 75 75 ; 0xf7f72
+ mov word [bp-022h], 000ffh ; c7 46 de ff 00 ; 0xf7f74 scsi.c:515
+ mov word [bp-024h], strict word 0003fh ; c7 46 dc 3f 00 ; 0xf7f79 scsi.c:516
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf7f7e scsi.c:518
+ mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf7f81
+ mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf7f84
+ mov si, strict word 00006h ; be 06 00 ; 0xf7f87
+ call 09b90h ; e8 03 1c ; 0xf7f8a
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf7f8d
+ add si, dx ; 01 d6 ; 0xf7f90
+ mov word [bp-036h], si ; 89 76 ca ; 0xf7f92
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf7f95
+ adc dx, cx ; 11 ca ; 0xf7f98
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf7f9a
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf7f9d
+ adc dx, bx ; 11 da ; 0xf7fa0
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf7fa2
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf7fa5
+ adc dx, ax ; 11 c2 ; 0xf7fa8
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf7faa
+ mov ax, dx ; 89 d0 ; 0xf7fad scsi.c:519
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7faf
+ mov cx, word [bp-034h] ; 8b 4e cc ; 0xf7fb2
+ mov dx, si ; 89 f2 ; 0xf7fb5
+ mov si, strict word 00008h ; be 08 00 ; 0xf7fb7
+ call 09b90h ; e8 d3 1b ; 0xf7fba
+ mov word [bp-030h], bx ; 89 5e d0 ; 0xf7fbd
+ mov word [bp-02ch], cx ; 89 4e d4 ; 0xf7fc0
+ mov word [bp-032h], dx ; 89 56 ce ; 0xf7fc3
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf7fc6
+ mov bx, word [bp-01ch] ; 8b 5e e4 ; 0xf7fc9
+ mov cx, word [bp-034h] ; 8b 4e cc ; 0xf7fcc
+ mov dx, word [bp-036h] ; 8b 56 ca ; 0xf7fcf
+ mov si, strict word 00010h ; be 10 00 ; 0xf7fd2
+ call 09b90h ; e8 b8 1b ; 0xf7fd5
+ mov si, word [bp-032h] ; 8b 76 ce ; 0xf7fd8
+ add si, dx ; 01 d6 ; 0xf7fdb
+ mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf7fdd
+ adc dx, cx ; 11 ca ; 0xf7fe0
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf7fe2
+ adc ax, bx ; 11 d8 ; 0xf7fe5
+ jmp short 08028h ; eb 3f ; 0xf7fe7 scsi.c:521
+ test ax, ax ; 85 c0 ; 0xf7fe9
+ jnbe short 07fffh ; 77 12 ; 0xf7feb
+ jne short 0800bh ; 75 1c ; 0xf7fed
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf7fef
+ jnbe short 07fffh ; 77 0a ; 0xf7ff3
+ jne short 0800bh ; 75 14 ; 0xf7ff5
+ cmp word [bp-018h], strict byte 00020h ; 83 7e e8 20 ; 0xf7ff7
+ jnbe short 07fffh ; 77 02 ; 0xf7ffb
+ jne short 0800bh ; 75 0c ; 0xf7ffd
+ mov word [bp-022h], 00080h ; c7 46 de 80 00 ; 0xf7fff scsi.c:523
+ mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xf8004 scsi.c:524
+ jmp short 08024h ; eb 19 ; 0xf8009 scsi.c:527
+ mov word [bp-022h], strict word 00040h ; c7 46 de 40 00 ; 0xf800b scsi.c:529
+ mov word [bp-024h], strict word 00020h ; c7 46 dc 20 00 ; 0xf8010 scsi.c:530
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf8015 scsi.c:531
+ mov cx, word [bp-018h] ; 8b 4e e8 ; 0xf8018
+ mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf801b
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf801e
+ call 09b90h ; e8 6c 1b ; 0xf8021
+ mov si, dx ; 89 d6 ; 0xf8024
+ mov dx, cx ; 89 ca ; 0xf8026
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8028 scsi.c:536
+ add AL, strict byte 008h ; 04 08 ; 0xf802b
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf802d
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8030 scsi.c:538
+ xor ah, ah ; 30 e4 ; 0xf8033
+ sal ax, 002h ; c1 e0 02 ; 0xf8035
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf8038
+ mov bx, di ; 89 fb ; 0xf803b
+ add bx, ax ; 01 c3 ; 0xf803d
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf803f
+ mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf8043
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf8048 scsi.c:539
+ mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf804b
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8050 scsi.c:540
+ xor ah, ah ; 30 e4 ; 0xf8053
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8055
+ mov bx, di ; 89 fb ; 0xf8058
+ add bx, ax ; 01 c3 ; 0xf805a
+ mov word [es:bx+022h], 0ff04h ; 26 c7 47 22 04 ff ; 0xf805c
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf8062 scsi.c:542
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8068 scsi.c:544
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf806b
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf806f scsi.c:545
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf8074 scsi.c:548
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf8077
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf807b scsi.c:549
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf807e
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf8082 scsi.c:550
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf8085
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8089 scsi.c:551
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf808c
+ test dx, dx ; 85 d2 ; 0xf8090 scsi.c:553
+ jne short 0809ah ; 75 06 ; 0xf8092
+ cmp si, 00400h ; 81 fe 00 04 ; 0xf8094
+ jbe short 080a8h ; 76 0e ; 0xf8098
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf809a scsi.c:554
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf80a0 scsi.c:555
+ jmp short 080b0h ; eb 08 ; 0xf80a6 scsi.c:556
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf80a8 scsi.c:557
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf80ac scsi.c:558
+ mov bx, 00da0h ; bb a0 0d ; 0xf80b0 scsi.c:562
+ mov cx, ds ; 8c d9 ; 0xf80b3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf80b5
+ call 018bch ; e8 01 98 ; 0xf80b8
+ push word [bp-01eh] ; ff 76 e2 ; 0xf80bb
+ push word [bp-020h] ; ff 76 e0 ; 0xf80be
+ push word [bp-018h] ; ff 76 e8 ; 0xf80c1
+ push word [bp-02ah] ; ff 76 d6 ; 0xf80c4
+ push word [bp-024h] ; ff 76 dc ; 0xf80c7
+ push word [bp-022h] ; ff 76 de ; 0xf80ca
+ push dx ; 52 ; 0xf80cd
+ push si ; 56 ; 0xf80ce
+ push word [bp-012h] ; ff 76 ee ; 0xf80cf
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf80d2
+ xor ah, ah ; 30 e4 ; 0xf80d5
+ push ax ; 50 ; 0xf80d7
+ push 00c18h ; 68 18 0c ; 0xf80d8
+ push strict byte 00004h ; 6a 04 ; 0xf80db
+ call 018ffh ; e8 1f 98 ; 0xf80dd
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf80e0
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf80e3 scsi.c:564
+ xor ah, ah ; 30 e4 ; 0xf80e6
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf80e8
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf80eb
+ mov bx, di ; 89 fb ; 0xf80ee
+ add bx, ax ; 01 c3 ; 0xf80f0
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf80f2
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf80f5
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf80f9
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf80fc
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8100
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8103
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8107
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf810a
+ mov al, byte [es:di+001e2h] ; 26 8a 85 e2 01 ; 0xf810e scsi.c:567
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8113 scsi.c:568
+ add ah, 008h ; 80 c4 08 ; 0xf8116
+ mov bl, al ; 88 c3 ; 0xf8119
+ xor bh, bh ; 30 ff ; 0xf811b
+ add bx, di ; 01 fb ; 0xf811d
+ mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf811f
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8124 scsi.c:569
+ mov byte [es:di+001e2h], al ; 26 88 85 e2 01 ; 0xf8126 scsi.c:570
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf812b scsi.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf812e
+ mov es, ax ; 8e c0 ; 0xf8131
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf8133
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8136 scsi.c:574
+ mov byte [es:bx], al ; 26 88 07 ; 0xf8138 scsi.c:43
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf813b scsi.c:577
+ jmp near 081d7h ; e9 96 00 ; 0xf813e scsi.c:579
+ mov bx, 00da0h ; bb a0 0d ; 0xf8141 scsi.c:591
+ mov cx, ds ; 8c d9 ; 0xf8144
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8146
+ call 018bch ; e8 70 97 ; 0xf8149
+ push word [bp-012h] ; ff 76 ee ; 0xf814c
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf814f
+ xor ah, ah ; 30 e4 ; 0xf8152
+ push ax ; 50 ; 0xf8154
+ push 00c46h ; 68 46 0c ; 0xf8155
+ push strict byte 00004h ; 6a 04 ; 0xf8158
+ call 018ffh ; e8 a2 97 ; 0xf815a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf815d
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8160 scsi.c:594
+ add AL, strict byte 008h ; 04 08 ; 0xf8163
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8165
+ test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf8168 scsi.c:596
+ je short 08174h ; 74 05 ; 0xf816d
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf816f
+ jmp short 08176h ; eb 02 ; 0xf8172
+ xor dx, dx ; 31 d2 ; 0xf8174
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8176 scsi.c:598
+ xor ah, ah ; 30 e4 ; 0xf8179
+ sal ax, 002h ; c1 e0 02 ; 0xf817b
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf817e
+ mov bx, di ; 89 fb ; 0xf8181
+ add bx, ax ; 01 c3 ; 0xf8183
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8185
+ mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf8189
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf818e scsi.c:599
+ mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf8191
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8196 scsi.c:600
+ xor ah, ah ; 30 e4 ; 0xf8199
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf819b
+ mov bx, di ; 89 fb ; 0xf819e
+ add bx, ax ; 01 c3 ; 0xf81a0
+ mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf81a2
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf81a8 scsi.c:602
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf81ac scsi.c:603
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf81b2 scsi.c:604
+ mov al, byte [es:di+001f3h] ; 26 8a 85 f3 01 ; 0xf81b7 scsi.c:607
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf81bc scsi.c:608
+ add ah, 008h ; 80 c4 08 ; 0xf81bf
+ mov bl, al ; 88 c3 ; 0xf81c2
+ xor bh, bh ; 30 ff ; 0xf81c4
+ add bx, di ; 01 fb ; 0xf81c6
+ mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf81c8
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf81cd scsi.c:609
+ mov byte [es:di+001f3h], al ; 26 88 85 f3 01 ; 0xf81cf scsi.c:610
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf81d4 scsi.c:612
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81d7 scsi.c:617
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf81da
+ mov byte [es:di+0022ch], al ; 26 88 85 2c 02 ; 0xf81dd
+ inc word [bp-012h] ; ff 46 ee ; 0xf81e2 scsi.c:618
+ cmp word [bp-012h], strict byte 00010h ; 83 7e ee 10 ; 0xf81e5
+ jl short 081eeh ; 7c 03 ; 0xf81e9
+ jmp near 08266h ; e9 78 00 ; 0xf81eb
+ mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf81ee
+ xor al, al ; 30 c0 ; 0xf81f2
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf81f4
+ mov byte [bp-044h], al ; 88 46 bc ; 0xf81f7
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf81fa
+ mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf81fd
+ mov byte [bp-041h], al ; 88 46 bf ; 0xf8201
+ push strict byte 00000h ; 6a 00 ; 0xf8204
+ push strict byte 00005h ; 6a 05 ; 0xf8206
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf8208
+ push SS ; 16 ; 0xf820c
+ push dx ; 52 ; 0xf820d
+ push strict byte 00006h ; 6a 06 ; 0xf820e
+ mov dl, byte [bp-012h] ; 8a 56 ee ; 0xf8210
+ xor dh, dh ; 30 f6 ; 0xf8213
+ mov cx, ss ; 8c d1 ; 0xf8215
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf8217
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf821a
+ call 078e9h ; e8 c8 f6 ; 0xf821e
+ test al, al ; 84 c0 ; 0xf8221
+ je short 08233h ; 74 0e ; 0xf8223
+ push 00b92h ; 68 92 0b ; 0xf8225
+ push 00bb2h ; 68 b2 0b ; 0xf8228
+ push strict byte 00007h ; 6a 07 ; 0xf822b
+ call 018ffh ; e8 cf 96 ; 0xf822d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8230
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf8233
+ mov al, byte [es:di+0022ch] ; 26 8a 85 2c 02 ; 0xf8236
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf823b
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf823e
+ jne short 0824fh ; 75 0a ; 0xf8243
+ test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf8245
+ jne short 0824fh ; 75 03 ; 0xf824a
+ jmp near 07defh ; e9 a0 fb ; 0xf824c
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf824f
+ jne short 081d7h ; 75 81 ; 0xf8254
+ mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf8256
+ and AL, strict byte 01fh ; 24 1f ; 0xf825a
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf825c
+ jne short 08263h ; 75 03 ; 0xf825e
+ jmp near 08141h ; e9 de fe ; 0xf8260
+ jmp near 081d7h ; e9 71 ff ; 0xf8263
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf8266 scsi.c:619
+ pop di ; 5f ; 0xf8269
+ pop si ; 5e ; 0xf826a
+ pop dx ; 5a ; 0xf826b
+ pop cx ; 59 ; 0xf826c
+ pop bx ; 5b ; 0xf826d
+ pop bp ; 5d ; 0xf826e
+ retn ; c3 ; 0xf826f
+ ; disGetNextSymbol 0xf8270 LB 0x1c58 -> off=0x0 cb=000000000000002a uValue=00000000000f6c70 'scsi_pci_init'
+scsi_pci_init: ; 0xf8270 LB 0x2a
+ push bp ; 55 ; 0xf8270 scsi.c:621
+ mov bp, sp ; 89 e5 ; 0xf8271
+ push bx ; 53 ; 0xf8273
+ push cx ; 51 ; 0xf8274
+ call 09966h ; e8 ee 16 ; 0xf8275 scsi.c:625
+ mov bx, ax ; 89 c3 ; 0xf8278
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf827a scsi.c:626
+ je short 08293h ; 74 14 ; 0xf827d
+ mov dl, bl ; 88 da ; 0xf827f scsi.c:633
+ xor dh, dh ; 30 f6 ; 0xf8281
+ shr bx, 008h ; c1 eb 08 ; 0xf8283
+ mov al, bl ; 88 d8 ; 0xf8286
+ xor ah, ah ; 30 e4 ; 0xf8288
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf828a
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf828d
+ call 09a2fh ; e8 9c 17 ; 0xf8290
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8293 scsi.c:634
+ pop cx ; 59 ; 0xf8296
+ pop bx ; 5b ; 0xf8297
+ pop bp ; 5d ; 0xf8298
+ retn ; c3 ; 0xf8299
+ ; disGetNextSymbol 0xf829a LB 0x1c2e -> off=0x0 cb=0000000000000081 uValue=00000000000f6c9a 'scsi_init'
+scsi_init: ; 0xf829a LB 0x81
+ push bp ; 55 ; 0xf829a scsi.c:639
+ mov bp, sp ; 89 e5 ; 0xf829b
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf829d scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf82a0
+ mov es, ax ; 8e c0 ; 0xf82a3
+ mov es, [es:bx] ; 26 8e 07 ; 0xf82a5
+ mov bx, 00122h ; bb 22 01 ; 0xf82a8 scsi.c:49
+ mov byte [es:bx+0022ch], 000h ; 26 c6 87 2c 02 00 ; 0xf82ab scsi.c:646
+ mov AL, strict byte 055h ; b0 55 ; 0xf82b1 scsi.c:651
+ mov dx, 00432h ; ba 32 04 ; 0xf82b3
+ out DX, AL ; ee ; 0xf82b6
+ in AL, DX ; ec ; 0xf82b7 scsi.c:652
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf82b8
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf82ba scsi.c:654
+ jne short 082d3h ; 75 15 ; 0xf82bc
+ xor al, al ; 30 c0 ; 0xf82be scsi.c:658
+ mov dx, 00433h ; ba 33 04 ; 0xf82c0
+ out DX, AL ; ee ; 0xf82c3
+ mov ax, 00430h ; b8 30 04 ; 0xf82c4 scsi.c:659
+ call 07dc9h ; e8 ff fa ; 0xf82c7
+ mov dx, 01040h ; ba 40 10 ; 0xf82ca scsi.c:660
+ mov ax, 0104bh ; b8 4b 10 ; 0xf82cd
+ call 08270h ; e8 9d ff ; 0xf82d0
+ mov AL, strict byte 055h ; b0 55 ; 0xf82d3 scsi.c:668
+ mov dx, 00436h ; ba 36 04 ; 0xf82d5
+ out DX, AL ; ee ; 0xf82d8
+ in AL, DX ; ec ; 0xf82d9 scsi.c:669
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf82da
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf82dc scsi.c:671
+ jne short 082f5h ; 75 15 ; 0xf82de
+ xor al, al ; 30 c0 ; 0xf82e0 scsi.c:675
+ mov dx, 00437h ; ba 37 04 ; 0xf82e2
+ out DX, AL ; ee ; 0xf82e5
+ mov ax, 00434h ; b8 34 04 ; 0xf82e6 scsi.c:676
+ call 07dc9h ; e8 dd fa ; 0xf82e9
+ mov dx, strict word 00030h ; ba 30 00 ; 0xf82ec scsi.c:677
+ mov ax, 01000h ; b8 00 10 ; 0xf82ef
+ call 08270h ; e8 7b ff ; 0xf82f2
+ mov AL, strict byte 055h ; b0 55 ; 0xf82f5 scsi.c:685
+ mov dx, 0043ah ; ba 3a 04 ; 0xf82f7
+ out DX, AL ; ee ; 0xf82fa
+ in AL, DX ; ec ; 0xf82fb scsi.c:686
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf82fc
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf82fe scsi.c:688
+ jne short 08317h ; 75 15 ; 0xf8300
+ xor al, al ; 30 c0 ; 0xf8302 scsi.c:692
+ mov dx, 0043bh ; ba 3b 04 ; 0xf8304
+ out DX, AL ; ee ; 0xf8307
+ mov ax, 00438h ; b8 38 04 ; 0xf8308 scsi.c:693
+ call 07dc9h ; e8 bb fa ; 0xf830b
+ mov dx, strict word 00054h ; ba 54 00 ; 0xf830e scsi.c:694
+ mov ax, 01000h ; b8 00 10 ; 0xf8311
+ call 08270h ; e8 59 ff ; 0xf8314
+ mov sp, bp ; 89 ec ; 0xf8317 scsi.c:700
+ pop bp ; 5d ; 0xf8319
+ retn ; c3 ; 0xf831a
+ ; disGetNextSymbol 0xf831b LB 0x1bad -> off=0x0 cb=000000000000001c uValue=00000000000f6d1b 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf831b LB 0x1c
+ push si ; 56 ; 0xf831b ahci.c:279
+ push bp ; 55 ; 0xf831c
+ mov bp, sp ; 89 e5 ; 0xf831d
+ mov si, ax ; 89 c6 ; 0xf831f
+ and ax, bx ; 21 d8 ; 0xf8321 ahci.c:281
+ and dx, cx ; 21 ca ; 0xf8323
+ mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf8325
+ xor ch, ch ; 30 ed ; 0xf8328
+ jcxz 08332h ; e3 06 ; 0xf832a
+ shr dx, 1 ; d1 ea ; 0xf832c
+ rcr ax, 1 ; d1 d8 ; 0xf832e
+ loop 0832ch ; e2 fa ; 0xf8330
+ pop bp ; 5d ; 0xf8332 ahci.c:282
+ pop si ; 5e ; 0xf8333
+ retn 00002h ; c2 02 00 ; 0xf8334
+ ; disGetNextSymbol 0xf8337 LB 0x1b91 -> off=0x0 cb=000000000000001e uValue=00000000000f6d37 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf8337 LB 0x1e
+ push bx ; 53 ; 0xf8337 ahci.c:287
+ push cx ; 51 ; 0xf8338
+ push bp ; 55 ; 0xf8339
+ mov bp, sp ; 89 e5 ; 0xf833a
+ mov bx, ax ; 89 c3 ; 0xf833c
+ mov ax, dx ; 89 d0 ; 0xf833e
+ xor dx, dx ; 31 d2 ; 0xf8340 ahci.c:289
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf8342
+ sal ax, 1 ; d1 e0 ; 0xf8345
+ rcl dx, 1 ; d1 d2 ; 0xf8347
+ loop 08345h ; e2 fa ; 0xf8349
+ xor cx, cx ; 31 c9 ; 0xf834b
+ add ax, bx ; 01 d8 ; 0xf834d
+ adc dx, cx ; 11 ca ; 0xf834f
+ pop bp ; 5d ; 0xf8351 ahci.c:290
+ pop cx ; 59 ; 0xf8352
+ pop bx ; 5b ; 0xf8353
+ retn ; c3 ; 0xf8354
+ ; disGetNextSymbol 0xf8355 LB 0x1b73 -> off=0x0 cb=0000000000000156 uValue=00000000000f6d55 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf8355 LB 0x156
+ push bp ; 55 ; 0xf8355 ahci.c:295
+ mov bp, sp ; 89 e5 ; 0xf8356
+ push cx ; 51 ; 0xf8358
+ push si ; 56 ; 0xf8359
+ push di ; 57 ; 0xf835a
+ push ax ; 50 ; 0xf835b
+ mov si, ax ; 89 c6 ; 0xf835c
+ mov cx, dx ; 89 d1 ; 0xf835e
+ mov dl, bl ; 88 da ; 0xf8360
+ mov es, cx ; 8e c1 ; 0xf8362 ahci.c:300
+ mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf8364
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf8369
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf836c ahci.c:301
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8371 ahci.c:303
+ jne short 08378h ; 75 03 ; 0xf8373
+ jmp near 084a3h ; e9 2b 01 ; 0xf8375
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf8378 ahci.c:306
+ xor ah, ah ; 30 e4 ; 0xf837d
+ xor di, di ; 31 ff ; 0xf837f
+ or di, 00080h ; 81 cf 80 00 ; 0xf8381
+ xor dh, dh ; 30 f6 ; 0xf8385
+ or di, dx ; 09 d7 ; 0xf8387
+ mov word [es:si], di ; 26 89 3c ; 0xf8389
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf838c
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8390 ahci.c:307
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8396
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf839c ahci.c:308
+ mov dx, cx ; 89 ca ; 0xf83a0
+ call 08337h ; e8 92 ff ; 0xf83a2
+ mov es, cx ; 8e c1 ; 0xf83a5
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf83a7
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf83ab
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf83af ahci.c:311
+ xor ah, ah ; 30 e4 ; 0xf83b2
+ mov di, ax ; 89 c7 ; 0xf83b4
+ sal di, 007h ; c1 e7 07 ; 0xf83b6
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf83b9
+ xor cx, cx ; 31 c9 ; 0xf83bd ahci.c:252
+ mov dx, bx ; 89 da ; 0xf83bf
+ xchg cx, ax ; 91 ; 0xf83c1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf83c2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf83c6
+ out DX, eax ; 66 ef ; 0xf83c8
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf83ca ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf83cd
+ in eax, DX ; 66 ed ; 0xf83cf
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf83d1
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf83d3
+ xchg dx, ax ; 92 ; 0xf83d7
+ or AL, strict byte 011h ; 0c 11 ; 0xf83d8
+ mov cx, dx ; 89 d1 ; 0xf83da
+ mov dx, si ; 89 f2 ; 0xf83dc
+ xchg cx, ax ; 91 ; 0xf83de
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf83df
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf83e3
+ out DX, eax ; 66 ef ; 0xf83e5
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf83e7 ahci.c:315
+ cwd ; 99 ; 0xf83eb
+ mov cx, dx ; 89 d1 ; 0xf83ec
+ mov dx, bx ; 89 da ; 0xf83ee
+ xchg cx, ax ; 91 ; 0xf83f0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf83f1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf83f5
+ out DX, eax ; 66 ef ; 0xf83f7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf83f9
+ xor cx, cx ; 31 c9 ; 0xf83fc
+ mov dx, si ; 89 f2 ; 0xf83fe
+ xchg cx, ax ; 91 ; 0xf8400
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8401
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8405
+ out DX, eax ; 66 ef ; 0xf8407
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8409 ahci.c:319
+ xor ah, ah ; 30 e4 ; 0xf840c
+ sal ax, 007h ; c1 e0 07 ; 0xf840e
+ add ax, 00110h ; 05 10 01 ; 0xf8411
+ xor cx, cx ; 31 c9 ; 0xf8414 ahci.c:271
+ mov dx, bx ; 89 da ; 0xf8416
+ xchg cx, ax ; 91 ; 0xf8418
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8419
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf841d
+ out DX, eax ; 66 ef ; 0xf841f
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8421 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8424
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8426
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8428
+ xchg dx, ax ; 92 ; 0xf842c
+ test dh, 040h ; f6 c6 40 ; 0xf842d
+ jne short 08436h ; 75 04 ; 0xf8430
+ test AL, strict byte 001h ; a8 01 ; 0xf8432
+ je short 0843ah ; 74 04 ; 0xf8434
+ mov AL, strict byte 001h ; b0 01 ; 0xf8436
+ jmp short 0843ch ; eb 02 ; 0xf8438
+ xor al, al ; 30 c0 ; 0xf843a
+ test al, al ; 84 c0 ; 0xf843c ahci.c:273
+ je short 08409h ; 74 c9 ; 0xf843e
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8440 ahci.c:325
+ xor ah, ah ; 30 e4 ; 0xf8443
+ mov di, ax ; 89 c7 ; 0xf8445
+ sal di, 007h ; c1 e7 07 ; 0xf8447
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf844a
+ xor cx, cx ; 31 c9 ; 0xf844e ahci.c:252
+ mov dx, bx ; 89 da ; 0xf8450
+ xchg cx, ax ; 91 ; 0xf8452
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8453
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8457
+ out DX, eax ; 66 ef ; 0xf8459
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf845b ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf845e
+ in eax, DX ; 66 ed ; 0xf8460
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8462
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8464
+ xchg dx, ax ; 92 ; 0xf8468
+ or AL, strict byte 001h ; 0c 01 ; 0xf8469
+ mov cx, dx ; 89 d1 ; 0xf846b
+ mov dx, si ; 89 f2 ; 0xf846d
+ xchg cx, ax ; 91 ; 0xf846f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8470
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8474
+ out DX, eax ; 66 ef ; 0xf8476
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8478 ahci.c:329
+ xor cx, cx ; 31 c9 ; 0xf847c ahci.c:261
+ mov dx, bx ; 89 da ; 0xf847e
+ xchg cx, ax ; 91 ; 0xf8480
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8481
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8485
+ out DX, eax ; 66 ef ; 0xf8487
+ mov dx, si ; 89 f2 ; 0xf8489 ahci.c:262
+ in eax, DX ; 66 ed ; 0xf848b
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf848d
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf848f
+ xchg dx, ax ; 92 ; 0xf8493
+ and AL, strict byte 0feh ; 24 fe ; 0xf8494
+ mov cx, dx ; 89 d1 ; 0xf8496
+ mov dx, si ; 89 f2 ; 0xf8498
+ xchg cx, ax ; 91 ; 0xf849a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf849b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf849f
+ out DX, eax ; 66 ef ; 0xf84a1
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf84a3 ahci.c:335
+ pop di ; 5f ; 0xf84a6
+ pop si ; 5e ; 0xf84a7
+ pop cx ; 59 ; 0xf84a8
+ pop bp ; 5d ; 0xf84a9
+ retn ; c3 ; 0xf84aa
+ ; disGetNextSymbol 0xf84ab LB 0x1a1d -> off=0x0 cb=0000000000000267 uValue=00000000000f6eab 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf84ab LB 0x267
+ push bp ; 55 ; 0xf84ab ahci.c:340
+ mov bp, sp ; 89 e5 ; 0xf84ac
+ push cx ; 51 ; 0xf84ae
+ push si ; 56 ; 0xf84af
+ push di ; 57 ; 0xf84b0
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf84b1
+ push ax ; 50 ; 0xf84b4
+ push dx ; 52 ; 0xf84b5
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf84b6
+ xor di, di ; 31 ff ; 0xf84b9 ahci.c:342
+ mov es, dx ; 8e c2 ; 0xf84bb
+ mov bx, ax ; 89 c3 ; 0xf84bd
+ mov ax, word [es:bx+00232h] ; 26 8b 87 32 02 ; 0xf84bf
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf84c4
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf84c7
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf84ca
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf84cd ahci.c:343
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf84d1
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf84d4 ahci.c:344
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf84d8
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf84db ahci.c:347
+ xor bx, bx ; 31 db ; 0xf84de
+ mov ax, 00080h ; b8 80 00 ; 0xf84e0
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf84e3
+ call 09bb0h ; e8 c7 16 ; 0xf84e6
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf84e9 ahci.c:350
+ mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf84ec
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf84f3 ahci.c:352
+ mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf84f6
+ mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf84fb ahci.c:353
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8501 ahci.c:355
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8504
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8507
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf850a
+ mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf850d
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8512 ahci.c:356
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8515
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8519
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf851d
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8520
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8524
+ mov si, strict word 00008h ; be 08 00 ; 0xf8527
+ call 09b90h ; e8 63 16 ; 0xf852a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf852d
+ mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf8530
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8535 ahci.c:357
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8538
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf853b
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf853f
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8543
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8546
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf854a
+ mov si, strict word 00010h ; be 10 00 ; 0xf854d
+ call 09b90h ; e8 3d 16 ; 0xf8550
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8553
+ mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf8556
+ mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf855b ahci.c:358
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8561 ahci.c:360
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8564
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8567
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf856b
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf856f
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8572
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8576
+ mov si, strict word 00018h ; be 18 00 ; 0xf8579
+ call 09b90h ; e8 11 16 ; 0xf857c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf857f
+ mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf8582
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8587 ahci.c:361
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf858a
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf858d
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8591
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8595
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8598
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf859c
+ mov si, strict word 00020h ; be 20 00 ; 0xf859f
+ call 09b90h ; e8 eb 15 ; 0xf85a2
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85a5
+ mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf85a8
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85ad ahci.c:362
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85b0
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85b3
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85b7
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf85bb
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85be
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf85c2
+ mov si, strict word 00028h ; be 28 00 ; 0xf85c5
+ call 09b90h ; e8 c5 15 ; 0xf85c8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85cb
+ mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf85ce
+ mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf85d3 ahci.c:363
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf85d9 ahci.c:365
+ mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf85dc
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf85e1 ahci.c:366
+ shr ax, 008h ; c1 e8 08 ; 0xf85e4
+ mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf85e7
+ mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf85ec ahci.c:369
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf85f3 ahci.c:372
+ xor dx, dx ; 31 d2 ; 0xf85f6
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf85f8
+ xor cx, cx ; 31 c9 ; 0xf85fb
+ call 09b40h ; e8 40 15 ; 0xf85fd
+ push dx ; 52 ; 0xf8600
+ push ax ; 50 ; 0xf8601
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8602
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8605
+ mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf8608
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf860c
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf860f
+ mov ax, 0026ah ; b8 6a 02 ; 0xf8613
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8616
+ call 09a8fh ; e8 73 14 ; 0xf8619
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf861c ahci.c:375
+ mov dx, word [es:di+0027eh] ; 26 8b 95 7e 02 ; 0xf861f
+ add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf8624
+ mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf8627
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf862c
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf862f
+ xor bh, bh ; 30 ff ; 0xf8634
+ sal bx, 004h ; c1 e3 04 ; 0xf8636
+ mov word [es:bx+0010ch], dx ; 26 89 97 0c 01 ; 0xf8639
+ mov word [es:bx+0010eh], ax ; 26 89 87 0e 01 ; 0xf863e
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf8643 ahci.c:376
+ xor bh, bh ; 30 ff ; 0xf8648
+ sal bx, 004h ; c1 e3 04 ; 0xf864a
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf864d
+ mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf8652
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf8657
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf865c
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8661 ahci.c:377
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8666 ahci.c:379
+ mov bx, si ; 89 f3 ; 0xf8669
+ mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf866b
+ test ax, ax ; 85 c0 ; 0xf866f
+ je short 086aeh ; 74 3b ; 0xf8671
+ dec ax ; 48 ; 0xf8673 ahci.c:380
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8674
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf8677
+ xor bh, bh ; 30 ff ; 0xf867c
+ sal bx, 004h ; c1 e3 04 ; 0xf867e
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8681
+ mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf8686
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf868b ahci.c:381
+ xor bh, bh ; 30 ff ; 0xf8690
+ sal bx, 004h ; c1 e3 04 ; 0xf8692
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8695
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf869a
+ mov word [es:bx+00100h], dx ; 26 89 97 00 01 ; 0xf869f
+ mov word [es:bx+00102h], ax ; 26 89 87 02 01 ; 0xf86a4
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf86a9 ahci.c:382
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf86ae ahci.c:397
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf86b1
+ jne short 086bbh ; 75 06 ; 0xf86b3
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf86b5 ahci.c:398
+ jmp short 086d2h ; eb 17 ; 0xf86b9 ahci.c:399
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf86bb
+ jne short 086ceh ; 75 0f ; 0xf86bd
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf86bf ahci.c:400
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf86c3 ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf86c6
+ jmp short 086d2h ; eb 04 ; 0xf86cc ahci.c:402
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf86ce ahci.c:403
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf86d2 ahci.c:405
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf86d6 ahci.c:407
+ xor bh, bh ; 30 ff ; 0xf86d9
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf86db
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf86de
+ call 08355h ; e8 71 fc ; 0xf86e1
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf86e4 ahci.c:410
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf86e7
+ add bx, 00240h ; 81 c3 40 02 ; 0xf86ea
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf86ee ahci.c:414
+ add ax, 0026ah ; 05 6a 02 ; 0xf86f1
+ mov dx, cx ; 89 ca ; 0xf86f4
+ call 09b06h ; e8 0d 14 ; 0xf86f6
+ mov es, cx ; 8e c1 ; 0xf86f9 ahci.c:415
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf86fb
+ test al, al ; 84 c0 ; 0xf86ff
+ je short 08708h ; 74 05 ; 0xf8701
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8703
+ jmp short 0870ah ; eb 02 ; 0xf8706
+ xor ah, ah ; 30 e4 ; 0xf8708
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf870a ahci.c:416
+ pop di ; 5f ; 0xf870d
+ pop si ; 5e ; 0xf870e
+ pop cx ; 59 ; 0xf870f
+ pop bp ; 5d ; 0xf8710
+ retn ; c3 ; 0xf8711
+ ; disGetNextSymbol 0xf8712 LB 0x17b6 -> off=0x0 cb=0000000000000180 uValue=00000000000f7112 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf8712 LB 0x180
+ push bp ; 55 ; 0xf8712 ahci.c:421
+ mov bp, sp ; 89 e5 ; 0xf8713
+ push bx ; 53 ; 0xf8715
+ push cx ; 51 ; 0xf8716
+ push si ; 56 ; 0xf8717
+ push di ; 57 ; 0xf8718
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8719
+ mov di, ax ; 89 c7 ; 0xf871c
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf871e
+ mov es, dx ; 8e c2 ; 0xf8721 ahci.c:426
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8723
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8728 ahci.c:427
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf872d
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8730 ahci.c:429
+ je short 08793h ; 74 5f ; 0xf8732
+ xor ah, ah ; 30 e4 ; 0xf8734 ahci.c:432
+ sal ax, 007h ; c1 e0 07 ; 0xf8736
+ add ax, 00118h ; 05 18 01 ; 0xf8739
+ xor cx, cx ; 31 c9 ; 0xf873c ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf873e
+ xchg cx, ax ; 91 ; 0xf8740
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8741
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8745
+ out DX, eax ; 66 ef ; 0xf8747
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8749 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf874c
+ in eax, DX ; 66 ed ; 0xf874e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8750
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8752
+ xchg dx, ax ; 92 ; 0xf8756
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8757
+ mov cx, dx ; 89 d1 ; 0xf8759
+ mov dx, bx ; 89 da ; 0xf875b
+ xchg cx, ax ; 91 ; 0xf875d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf875e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8762
+ out DX, eax ; 66 ef ; 0xf8764
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8766 ahci.c:435
+ xor ah, ah ; 30 e4 ; 0xf8769
+ sal ax, 007h ; c1 e0 07 ; 0xf876b
+ add ax, 00118h ; 05 18 01 ; 0xf876e
+ xor cx, cx ; 31 c9 ; 0xf8771 ahci.c:271
+ mov dx, si ; 89 f2 ; 0xf8773
+ xchg cx, ax ; 91 ; 0xf8775
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8776
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf877a
+ out DX, eax ; 66 ef ; 0xf877c
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf877e ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8781
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8783
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8785
+ xchg dx, ax ; 92 ; 0xf8789
+ test ax, 0c011h ; a9 11 c0 ; 0xf878a
+ je short 08796h ; 74 07 ; 0xf878d
+ mov AL, strict byte 001h ; b0 01 ; 0xf878f
+ jmp short 08798h ; eb 05 ; 0xf8791
+ jmp near 08889h ; e9 f3 00 ; 0xf8793
+ xor al, al ; 30 c0 ; 0xf8796
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8798 ahci.c:273
+ je short 08766h ; 74 ca ; 0xf879a
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf879c ahci.c:446
+ xor bx, bx ; 31 db ; 0xf879f
+ mov ax, di ; 89 f8 ; 0xf87a1
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87a3
+ call 09bb0h ; e8 07 14 ; 0xf87a6
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf87a9 ahci.c:447
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf87ad
+ xor bx, bx ; 31 db ; 0xf87b0
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87b2
+ call 09bb0h ; e8 f8 13 ; 0xf87b5
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf87b8 ahci.c:448
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf87bc
+ xor bx, bx ; 31 db ; 0xf87bf
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf87c1
+ call 09bb0h ; e8 e9 13 ; 0xf87c4
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf87c7 ahci.c:450
+ xor ah, ah ; 30 e4 ; 0xf87ca
+ sal ax, 007h ; c1 e0 07 ; 0xf87cc
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf87cf
+ add ax, 00108h ; 05 08 01 ; 0xf87d2
+ cwd ; 99 ; 0xf87d5
+ mov cx, dx ; 89 d1 ; 0xf87d6
+ mov dx, si ; 89 f2 ; 0xf87d8
+ xchg cx, ax ; 91 ; 0xf87da
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87db
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87df
+ out DX, eax ; 66 ef ; 0xf87e1
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf87e3
+ xor ax, ax ; 31 c0 ; 0xf87e6
+ xor cx, cx ; 31 c9 ; 0xf87e8
+ mov dx, bx ; 89 da ; 0xf87ea
+ xchg cx, ax ; 91 ; 0xf87ec
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87ed
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87f1
+ out DX, eax ; 66 ef ; 0xf87f3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf87f5 ahci.c:451
+ add ax, 0010ch ; 05 0c 01 ; 0xf87f8
+ cwd ; 99 ; 0xf87fb
+ mov cx, dx ; 89 d1 ; 0xf87fc
+ mov dx, si ; 89 f2 ; 0xf87fe
+ xchg cx, ax ; 91 ; 0xf8800
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8801
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8805
+ out DX, eax ; 66 ef ; 0xf8807
+ xor ax, ax ; 31 c0 ; 0xf8809
+ xor cx, cx ; 31 c9 ; 0xf880b
+ mov dx, bx ; 89 da ; 0xf880d
+ xchg cx, ax ; 91 ; 0xf880f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8810
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8814
+ out DX, eax ; 66 ef ; 0xf8816
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8818 ahci.c:453
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf881b
+ cwd ; 99 ; 0xf881d
+ mov cx, dx ; 89 d1 ; 0xf881e
+ mov dx, si ; 89 f2 ; 0xf8820
+ xchg cx, ax ; 91 ; 0xf8822
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8823
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8827
+ out DX, eax ; 66 ef ; 0xf8829
+ xor ax, ax ; 31 c0 ; 0xf882b
+ xor cx, cx ; 31 c9 ; 0xf882d
+ mov dx, bx ; 89 da ; 0xf882f
+ xchg cx, ax ; 91 ; 0xf8831
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8832
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8836
+ out DX, eax ; 66 ef ; 0xf8838
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf883a ahci.c:454
+ add ax, 00104h ; 05 04 01 ; 0xf883d
+ cwd ; 99 ; 0xf8840
+ mov cx, dx ; 89 d1 ; 0xf8841
+ mov dx, si ; 89 f2 ; 0xf8843
+ xchg cx, ax ; 91 ; 0xf8845
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8846
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf884a
+ out DX, eax ; 66 ef ; 0xf884c
+ xor ax, ax ; 31 c0 ; 0xf884e
+ xor cx, cx ; 31 c9 ; 0xf8850
+ mov dx, bx ; 89 da ; 0xf8852
+ xchg cx, ax ; 91 ; 0xf8854
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8855
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8859
+ out DX, eax ; 66 ef ; 0xf885b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf885d ahci.c:457
+ add ax, 00114h ; 05 14 01 ; 0xf8860
+ cwd ; 99 ; 0xf8863
+ mov cx, dx ; 89 d1 ; 0xf8864
+ mov dx, si ; 89 f2 ; 0xf8866
+ xchg cx, ax ; 91 ; 0xf8868
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8869
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf886d
+ out DX, eax ; 66 ef ; 0xf886f
+ xor ax, ax ; 31 c0 ; 0xf8871
+ xor cx, cx ; 31 c9 ; 0xf8873
+ mov dx, bx ; 89 da ; 0xf8875
+ xchg cx, ax ; 91 ; 0xf8877
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8878
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf887c
+ out DX, eax ; 66 ef ; 0xf887e
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf8880 ahci.c:459
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8883
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8889 ahci.c:461
+ pop di ; 5f ; 0xf888c
+ pop si ; 5e ; 0xf888d
+ pop cx ; 59 ; 0xf888e
+ pop bx ; 5b ; 0xf888f
+ pop bp ; 5d ; 0xf8890
+ retn ; c3 ; 0xf8891
+ ; disGetNextSymbol 0xf8892 LB 0x1636 -> off=0x0 cb=000000000000024d uValue=00000000000f7292 'ahci_port_init'
+ahci_port_init: ; 0xf8892 LB 0x24d
+ push bp ; 55 ; 0xf8892 ahci.c:467
+ mov bp, sp ; 89 e5 ; 0xf8893
+ push cx ; 51 ; 0xf8895
+ push si ; 56 ; 0xf8896
+ push di ; 57 ; 0xf8897
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8898
+ mov si, ax ; 89 c6 ; 0xf889b
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf889d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf88a0
+ call 08712h ; e8 6c fe ; 0xf88a3 ahci.c:470
+ mov al, bl ; 88 d8 ; 0xf88a6 ahci.c:473
+ xor ah, ah ; 30 e4 ; 0xf88a8
+ sal ax, 007h ; c1 e0 07 ; 0xf88aa
+ add ax, 00118h ; 05 18 01 ; 0xf88ad
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf88b0 ahci.c:259
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf88b3
+ xor cx, cx ; 31 c9 ; 0xf88b8 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf88ba
+ xchg cx, ax ; 91 ; 0xf88bc
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88bd
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88c1
+ out DX, eax ; 66 ef ; 0xf88c3
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf88c5 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf88c8
+ in eax, DX ; 66 ed ; 0xf88ca
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf88cc
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf88ce
+ xchg dx, ax ; 92 ; 0xf88d2
+ and AL, strict byte 0eeh ; 24 ee ; 0xf88d3
+ mov cx, dx ; 89 d1 ; 0xf88d5
+ mov dx, bx ; 89 da ; 0xf88d7
+ xchg cx, ax ; 91 ; 0xf88d9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88da
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88de
+ out DX, eax ; 66 ef ; 0xf88e0
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf88e2 ahci.c:476
+ xor ah, ah ; 30 e4 ; 0xf88e5
+ sal ax, 007h ; c1 e0 07 ; 0xf88e7
+ add ax, 00118h ; 05 18 01 ; 0xf88ea
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf88ed ahci.c:269
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf88f0
+ xor cx, cx ; 31 c9 ; 0xf88f5 ahci.c:271
+ mov dx, bx ; 89 da ; 0xf88f7
+ xchg cx, ax ; 91 ; 0xf88f9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88fa
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88fe
+ out DX, eax ; 66 ef ; 0xf8900
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8902 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8905
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8907
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8909
+ xchg dx, ax ; 92 ; 0xf890d
+ test ax, 0c011h ; a9 11 c0 ; 0xf890e
+ je short 08917h ; 74 04 ; 0xf8911
+ mov AL, strict byte 001h ; b0 01 ; 0xf8913
+ jmp short 08919h ; eb 02 ; 0xf8915
+ xor al, al ; 30 c0 ; 0xf8917
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8919 ahci.c:273
+ je short 088e2h ; 74 c5 ; 0xf891b
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf891d ahci.c:487
+ xor bx, bx ; 31 db ; 0xf8920
+ mov ax, si ; 89 f0 ; 0xf8922
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8924
+ call 09bb0h ; e8 86 12 ; 0xf8927
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf892a ahci.c:488
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf892e
+ xor bx, bx ; 31 db ; 0xf8931
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8933
+ call 09bb0h ; e8 77 12 ; 0xf8936
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf8939 ahci.c:489
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf893d
+ xor bx, bx ; 31 db ; 0xf8940
+ mov ax, di ; 89 f8 ; 0xf8942
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8944
+ call 09bb0h ; e8 66 12 ; 0xf8947
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf894a ahci.c:493
+ xor bh, bh ; 30 ff ; 0xf894d
+ sal bx, 007h ; c1 e3 07 ; 0xf894f
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf8952
+ cwd ; 99 ; 0xf8956
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8957
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf895a
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf895f
+ mov cx, dx ; 89 d1 ; 0xf8962
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8964
+ xchg cx, ax ; 91 ; 0xf8967
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8968
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf896c
+ out DX, eax ; 66 ef ; 0xf896e
+ mov ax, di ; 89 f8 ; 0xf8970
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8972
+ call 08337h ; e8 bf f9 ; 0xf8975
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8978
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf897b
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8980
+ mov cx, dx ; 89 d1 ; 0xf8983
+ mov dx, di ; 89 fa ; 0xf8985
+ xchg cx, ax ; 91 ; 0xf8987
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8988
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf898c
+ out DX, eax ; 66 ef ; 0xf898e
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8990 ahci.c:494
+ cwd ; 99 ; 0xf8994
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8995
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8998
+ mov cx, dx ; 89 d1 ; 0xf899d
+ mov dx, di ; 89 fa ; 0xf899f
+ xchg cx, ax ; 91 ; 0xf89a1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89a2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89a6
+ out DX, eax ; 66 ef ; 0xf89a8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89aa
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf89ad
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf89b2
+ xor ax, ax ; 31 c0 ; 0xf89b5
+ xor cx, cx ; 31 c9 ; 0xf89b7
+ xchg cx, ax ; 91 ; 0xf89b9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89ba
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89be
+ out DX, eax ; 66 ef ; 0xf89c0
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf89c2 ahci.c:497
+ cwd ; 99 ; 0xf89c6
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89c7
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89ca
+ mov cx, dx ; 89 d1 ; 0xf89cf
+ mov dx, di ; 89 fa ; 0xf89d1
+ xchg cx, ax ; 91 ; 0xf89d3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89d4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89d8
+ out DX, eax ; 66 ef ; 0xf89da
+ mov ax, si ; 89 f0 ; 0xf89dc
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89de
+ call 08337h ; e8 53 f9 ; 0xf89e1
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89e4
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89e7
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf89ec
+ mov cx, dx ; 89 d1 ; 0xf89ef
+ mov dx, di ; 89 fa ; 0xf89f1
+ xchg cx, ax ; 91 ; 0xf89f3
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89f4
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89f8
+ out DX, eax ; 66 ef ; 0xf89fa
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf89fc ahci.c:498
+ cwd ; 99 ; 0xf8a00
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a01
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a04
+ mov cx, dx ; 89 d1 ; 0xf8a09
+ mov dx, di ; 89 fa ; 0xf8a0b
+ xchg cx, ax ; 91 ; 0xf8a0d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a0e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a12
+ out DX, eax ; 66 ef ; 0xf8a14
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a16
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a19
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a1e
+ xor ax, ax ; 31 c0 ; 0xf8a21
+ xor cx, cx ; 31 c9 ; 0xf8a23
+ xchg cx, ax ; 91 ; 0xf8a25
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a26
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a2a
+ out DX, eax ; 66 ef ; 0xf8a2c
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8a2e ahci.c:501
+ cwd ; 99 ; 0xf8a32
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a33
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a36
+ mov cx, dx ; 89 d1 ; 0xf8a3b
+ mov dx, di ; 89 fa ; 0xf8a3d
+ xchg cx, ax ; 91 ; 0xf8a3f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a40
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a44
+ out DX, eax ; 66 ef ; 0xf8a46
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a48
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a4b
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a50
+ xor ax, ax ; 31 c0 ; 0xf8a53
+ xor cx, cx ; 31 c9 ; 0xf8a55
+ xchg cx, ax ; 91 ; 0xf8a57
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a58
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a5c
+ out DX, eax ; 66 ef ; 0xf8a5e
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8a60 ahci.c:502
+ cwd ; 99 ; 0xf8a64
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a65
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a68
+ mov cx, dx ; 89 d1 ; 0xf8a6d
+ mov dx, di ; 89 fa ; 0xf8a6f
+ xchg cx, ax ; 91 ; 0xf8a71
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a72
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a76
+ out DX, eax ; 66 ef ; 0xf8a78
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a7a
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a7d
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a82
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8a85
+ mov cx, ax ; 89 c1 ; 0xf8a88
+ xchg cx, ax ; 91 ; 0xf8a8a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a8b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a8f
+ out DX, eax ; 66 ef ; 0xf8a91
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8a93 ahci.c:504
+ cwd ; 99 ; 0xf8a97
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a98
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8a9b
+ mov cx, dx ; 89 d1 ; 0xf8aa0
+ mov dx, bx ; 89 da ; 0xf8aa2
+ xchg cx, ax ; 91 ; 0xf8aa4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8aa5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8aa9
+ out DX, eax ; 66 ef ; 0xf8aab
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aad
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ab0
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ab5
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ab8
+ mov cx, ax ; 89 c1 ; 0xf8abb
+ xchg cx, ax ; 91 ; 0xf8abd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8abe
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ac2
+ out DX, eax ; 66 ef ; 0xf8ac4
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8ac6 ahci.c:506
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ac9
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8acc
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8ad1 ahci.c:507
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8ad7 ahci.c:508
+ pop di ; 5f ; 0xf8ada
+ pop si ; 5e ; 0xf8adb
+ pop cx ; 59 ; 0xf8adc
+ pop bp ; 5d ; 0xf8add
+ retn ; c3 ; 0xf8ade
+ ; disGetNextSymbol 0xf8adf LB 0x13e9 -> off=0x0 cb=00000000000000a8 uValue=00000000000f74df 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8adf LB 0xa8
+ push bp ; 55 ; 0xf8adf ahci.c:517
+ mov bp, sp ; 89 e5 ; 0xf8ae0
+ push si ; 56 ; 0xf8ae2
+ push di ; 57 ; 0xf8ae3
+ push ax ; 50 ; 0xf8ae4
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf8ae5 ahci.c:522
+ mov bl, byte [es:bx+00ch] ; 26 8a 5f 0c ; 0xf8ae8
+ xor bh, bh ; 30 ff ; 0xf8aec
+ sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8aee
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8af1 ahci.c:523
+ jbe short 08b05h ; 76 0f ; 0xf8af4
+ push bx ; 53 ; 0xf8af6 ahci.c:524
+ push 00c62h ; 68 62 0c ; 0xf8af7
+ push 00c74h ; 68 74 0c ; 0xf8afa
+ push strict byte 00007h ; 6a 07 ; 0xf8afd
+ call 018ffh ; e8 fd 8d ; 0xf8aff
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8b02
+ xor di, di ; 31 ff ; 0xf8b05 ahci.c:530
+ les si, [bp+004h] ; c4 76 04 ; 0xf8b07
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8b0a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8b0f ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8b13
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8b15
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8b1a ahci.c:531
+ add bx, si ; 01 f3 ; 0xf8b1d
+ mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8b1f
+ xor bh, bh ; 30 ff ; 0xf8b24
+ mov di, si ; 89 f7 ; 0xf8b26
+ mov dx, word [es:di+00232h] ; 26 8b 95 32 02 ; 0xf8b28
+ xor ax, ax ; 31 c0 ; 0xf8b2d
+ call 08892h ; e8 60 fd ; 0xf8b2f
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf8b32 ahci.c:532
+ mov ax, si ; 89 f0 ; 0xf8b35
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8b37
+ call 084abh ; e8 6e f9 ; 0xf8b3a
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf8b3d
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8b40 ahci.c:534
+ mov bx, si ; 89 f3 ; 0xf8b43
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8b45
+ mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8b49
+ mov cx, ax ; 89 c1 ; 0xf8b4d ahci.c:536
+ sal cx, 009h ; c1 e1 09 ; 0xf8b4f
+ shr cx, 1 ; d1 e9 ; 0xf8b52
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8b54
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8b58
+ mov si, di ; 89 fe ; 0xf8b5c
+ mov dx, ax ; 89 c2 ; 0xf8b5e
+ mov es, ax ; 8e c0 ; 0xf8b60
+ push DS ; 1e ; 0xf8b62
+ mov ds, dx ; 8e da ; 0xf8b63
+ rep movsw ; f3 a5 ; 0xf8b65
+ pop DS ; 1f ; 0xf8b67
+ xor bx, bx ; 31 db ; 0xf8b68 ahci.c:538
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8b6a
+ mov es, [es:di+00232h] ; 26 8e 85 32 02 ; 0xf8b6d
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8b72 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b77
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8b7b ahci.c:540
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8b7e
+ pop di ; 5f ; 0xf8b81
+ pop si ; 5e ; 0xf8b82
+ pop bp ; 5d ; 0xf8b83
+ retn 00004h ; c2 04 00 ; 0xf8b84
+ ; disGetNextSymbol 0xf8b87 LB 0x1341 -> off=0x0 cb=0000000000000086 uValue=00000000000f7587 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf8b87 LB 0x86
+ push bp ; 55 ; 0xf8b87 ahci.c:549
+ mov bp, sp ; 89 e5 ; 0xf8b88
+ push si ; 56 ; 0xf8b8a
+ push di ; 57 ; 0xf8b8b
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8b8c
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8b8f
+ mov es, cx ; 8e c1 ; 0xf8b92 ahci.c:554
+ mov dl, byte [es:si+00ch] ; 26 8a 54 0c ; 0xf8b94
+ xor dh, dh ; 30 f6 ; 0xf8b98
+ sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8b9a
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8b9d ahci.c:555
+ jbe short 08bb1h ; 76 0f ; 0xf8ba0
+ push dx ; 52 ; 0xf8ba2 ahci.c:556
+ push 00c93h ; 68 93 0c ; 0xf8ba3
+ push 00c74h ; 68 74 0c ; 0xf8ba6
+ push strict byte 00007h ; 6a 07 ; 0xf8ba9
+ call 018ffh ; e8 51 8d ; 0xf8bab
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8bae
+ xor bx, bx ; 31 db ; 0xf8bb1 ahci.c:562
+ mov es, cx ; 8e c1 ; 0xf8bb3
+ mov di, word [es:si+00232h] ; 26 8b bc 32 02 ; 0xf8bb5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8bba ahci.c:239
+ mov es, di ; 8e c7 ; 0xf8bbe
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8bc0
+ mov es, cx ; 8e c1 ; 0xf8bc5 ahci.c:563
+ mov bx, si ; 89 f3 ; 0xf8bc7
+ add bx, dx ; 01 d3 ; 0xf8bc9
+ mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8bcb
+ xor bh, bh ; 30 ff ; 0xf8bd0
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8bd2
+ xor ax, ax ; 31 c0 ; 0xf8bd7
+ call 08892h ; e8 b6 fc ; 0xf8bd9
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8bdc ahci.c:564
+ mov ax, si ; 89 f0 ; 0xf8bdf
+ mov dx, cx ; 89 ca ; 0xf8be1
+ call 084abh ; e8 c5 f8 ; 0xf8be3
+ mov dx, ax ; 89 c2 ; 0xf8be6
+ mov es, cx ; 8e c1 ; 0xf8be8 ahci.c:566
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8bea
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8bee
+ xor bx, bx ; 31 db ; 0xf8bf2 ahci.c:567
+ mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf8bf4
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8bf9 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bfe
+ mov ax, dx ; 89 d0 ; 0xf8c02 ahci.c:569
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c04
+ pop di ; 5f ; 0xf8c07
+ pop si ; 5e ; 0xf8c08
+ pop bp ; 5d ; 0xf8c09
+ retn 00004h ; c2 04 00 ; 0xf8c0a
+ ; disGetNextSymbol 0xf8c0d LB 0x12bb -> off=0x0 cb=000000000000018a uValue=00000000000f760d 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf8c0d LB 0x18a
+ push bp ; 55 ; 0xf8c0d ahci.c:576
+ mov bp, sp ; 89 e5 ; 0xf8c0e
+ push si ; 56 ; 0xf8c10
+ push di ; 57 ; 0xf8c11
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf8c12
+ push ax ; 50 ; 0xf8c15
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf8c16
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf8c19
+ mov word [bp-012h], cx ; 89 4e ee ; 0xf8c1c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8c1f ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8c22
+ mov es, ax ; 8e c0 ; 0xf8c25
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8c27
+ mov si, 00122h ; be 22 01 ; 0xf8c2a ahci.c:49
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf8c2d
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf8c30 ahci.c:583
+ jne short 08c55h ; 75 1f ; 0xf8c34
+ mov bx, 00da0h ; bb a0 0d ; 0xf8c36 ahci.c:584
+ mov cx, ds ; 8c d9 ; 0xf8c39
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8c3b
+ call 018bch ; e8 7b 8c ; 0xf8c3e
+ push 00ca6h ; 68 a6 0c ; 0xf8c41
+ push 00cb6h ; 68 b6 0c ; 0xf8c44
+ push strict byte 00004h ; 6a 04 ; 0xf8c47
+ call 018ffh ; e8 b3 8c ; 0xf8c49
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8c4c
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8c4f ahci.c:585
+ jmp near 08d8eh ; e9 39 01 ; 0xf8c52
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf8c55 ahci.c:589
+ jne short 08c4fh ; 75 f4 ; 0xf8c59
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf8c5b ahci.c:603
+ mov di, word [bp+008h] ; 8b 7e 08 ; 0xf8c5e
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf8c61
+ sal bx, 1 ; d1 e3 ; 0xf8c64
+ rcl di, 1 ; d1 d7 ; 0xf8c66
+ loop 08c64h ; e2 fa ; 0xf8c68
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8c6a
+ mov word [es:si], bx ; 26 89 1c ; 0xf8c6d
+ mov word [es:si+002h], di ; 26 89 7c 02 ; 0xf8c70
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8c74
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8c7a
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8c80 ahci.c:604
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8c83
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf8c87
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8c8a
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8c8e ahci.c:605
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8c92
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8c95
+ xor cx, cx ; 31 c9 ; 0xf8c98
+ call 09b60h ; e8 c3 0e ; 0xf8c9a
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8c9d
+ xor di, di ; 31 ff ; 0xf8ca1 ahci.c:608
+ mov ax, word [es:si+00232h] ; 26 8b 84 32 02 ; 0xf8ca3
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8ca8
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf8cab
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8cae
+ sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf8cb1 ahci.c:595
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8cb5 ahci.c:239
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8cb9
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8cbc
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8cc1 ahci.c:611
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8cc4
+ add bx, si ; 01 f3 ; 0xf8cc7
+ mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8cc9
+ xor bh, bh ; 30 ff ; 0xf8cce
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8cd0
+ xor ax, ax ; 31 c0 ; 0xf8cd5
+ call 08892h ; e8 b8 fb ; 0xf8cd7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8cda ahci.c:614
+ xor ah, ah ; 30 e4 ; 0xf8cdd
+ push ax ; 50 ; 0xf8cdf
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8ce0
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf8ce3
+ mov ax, 000c0h ; b8 c0 00 ; 0xf8ce6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8ce9
+ call 09bc0h ; e8 d1 0e ; 0xf8cec
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8cef ahci.c:618
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8cf2
+ mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf8cf6 ahci.c:619
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf8cfa
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf8cfe ahci.c:622
+ test ax, ax ; 85 c0 ; 0xf8d02
+ je short 08d2dh ; 74 27 ; 0xf8d04
+ dec ax ; 48 ; 0xf8d06 ahci.c:623
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d07
+ mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf8d0a
+ mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf8d0f
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8d14 ahci.c:624
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf8d19
+ mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf8d1e
+ mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf8d23
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8d28 ahci.c:625
+ mov bx, 000a0h ; bb a0 00 ; 0xf8d2d ahci.c:628
+ mov ax, si ; 89 f0 ; 0xf8d30
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf8d32
+ call 084abh ; e8 73 f7 ; 0xf8d35
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8d38 ahci.c:630
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf8d3b
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d3f
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d43
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf8d46
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf8d4a
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8d4e ahci.c:632
+ mov cx, ax ; 89 c1 ; 0xf8d52
+ shr cx, 1 ; d1 e9 ; 0xf8d54
+ rcr bx, 1 ; d1 db ; 0xf8d56
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8d58
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8d5c
+ mov cx, bx ; 89 d9 ; 0xf8d60
+ mov si, di ; 89 fe ; 0xf8d62
+ mov dx, ax ; 89 c2 ; 0xf8d64
+ mov es, ax ; 8e c0 ; 0xf8d66
+ push DS ; 1e ; 0xf8d68
+ mov ds, dx ; 8e da ; 0xf8d69
+ rep movsw ; f3 a5 ; 0xf8d6b
+ pop DS ; 1f ; 0xf8d6d
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8d6e ahci.c:244
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8d71
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d76
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8d7a ahci.c:636
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8d7d
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8d81
+ jne short 08d8ch ; 75 05 ; 0xf8d85
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8d87
+ jmp short 08d8eh ; eb 02 ; 0xf8d8a
+ xor ax, ax ; 31 c0 ; 0xf8d8c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8d8e ahci.c:637
+ pop di ; 5f ; 0xf8d91
+ pop si ; 5e ; 0xf8d92
+ pop bp ; 5d ; 0xf8d93
+ retn 0000ch ; c2 0c 00 ; 0xf8d94
+ ; disGetNextSymbol 0xf8d97 LB 0x1131 -> off=0x0 cb=0000000000000005 uValue=00000000000f7797 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf8d97 LB 0x5
+ push bp ; 55 ; 0xf8d97 ahci.c:640
+ mov bp, sp ; 89 e5 ; 0xf8d98
+ pop bp ; 5d ; 0xf8d9a ahci.c:642
+ retn ; c3 ; 0xf8d9b
+ ; disGetNextSymbol 0xf8d9c LB 0x112c -> off=0x0 cb=00000000000004e3 uValue=00000000000f779c 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf8d9c LB 0x4e3
+ push bp ; 55 ; 0xf8d9c ahci.c:644
+ mov bp, sp ; 89 e5 ; 0xf8d9d
+ push cx ; 51 ; 0xf8d9f
+ push si ; 56 ; 0xf8da0
+ push di ; 57 ; 0xf8da1
+ sub sp, 0022ch ; 81 ec 2c 02 ; 0xf8da2
+ mov si, ax ; 89 c6 ; 0xf8da6
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf8da8
+ mov byte [bp-00ah], bl ; 88 5e f6 ; 0xf8dab
+ mov word [bp-020h], strict word 00000h ; c7 46 e0 00 00 ; 0xf8dae ahci.c:650
+ mov cl, bl ; 88 d9 ; 0xf8db3 ahci.c:652
+ xor ch, ch ; 30 ed ; 0xf8db5
+ mov bx, cx ; 89 cb ; 0xf8db7
+ call 08892h ; e8 d6 fa ; 0xf8db9
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8dbc ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8dbf
+ mov es, ax ; 8e c0 ; 0xf8dc2
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8dc4
+ mov word [bp-028h], 00122h ; c7 46 d8 22 01 ; 0xf8dc7 ahci.c:49
+ mov word [bp-026h], ax ; 89 46 da ; 0xf8dcc
+ mov ax, cx ; 89 c8 ; 0xf8dcf ahci.c:657
+ sal ax, 007h ; c1 e0 07 ; 0xf8dd1
+ add ax, 0012ch ; 05 2c 01 ; 0xf8dd4
+ cwd ; 99 ; 0xf8dd7
+ mov bx, ax ; 89 c3 ; 0xf8dd8
+ mov di, dx ; 89 d7 ; 0xf8dda
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ddc
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ddf
+ mov cx, di ; 89 f9 ; 0xf8de4
+ xchg cx, ax ; 91 ; 0xf8de6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8de7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8deb
+ out DX, eax ; 66 ef ; 0xf8ded
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8def
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8df2
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8df7
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8dfa
+ xor cx, cx ; 31 c9 ; 0xf8dfd
+ xchg cx, ax ; 91 ; 0xf8dff
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e00
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e04
+ out DX, eax ; 66 ef ; 0xf8e06
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e08 ahci.c:662
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e0b
+ mov ax, bx ; 89 d8 ; 0xf8e10
+ mov cx, di ; 89 f9 ; 0xf8e12
+ xchg cx, ax ; 91 ; 0xf8e14
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e15
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e19
+ out DX, eax ; 66 ef ; 0xf8e1b
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e1d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e20
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e25
+ xor ax, ax ; 31 c0 ; 0xf8e28
+ xor cx, cx ; 31 c9 ; 0xf8e2a
+ xchg cx, ax ; 91 ; 0xf8e2c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e2d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e31
+ out DX, eax ; 66 ef ; 0xf8e33
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf8e35 ahci.c:671
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8e38
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf8e3b
+ mov es, ax ; 8e c0 ; 0xf8e3e ahci.c:672
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8e40
+ add ax, strict word 00003h ; 05 03 00 ; 0xf8e43
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf8e46
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e49
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf8e4d
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf8e50
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf8e53 ahci.c:674
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e56
+ cmp ax, word [bp-02ah] ; 3b 46 d6 ; 0xf8e5a
+ jc short 08e70h ; 72 11 ; 0xf8e5d
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8e5f
+ cmp ax, word [bp-02ah] ; 3b 46 d6 ; 0xf8e63
+ jne short 08ebch ; 75 54 ; 0xf8e66
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8e68
+ cmp ax, word [bp-024h] ; 3b 46 dc ; 0xf8e6b
+ jnc short 08ebch ; 73 4c ; 0xf8e6e
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8e70 ahci.c:677
+ xor ah, ah ; 30 e4 ; 0xf8e73
+ sal ax, 007h ; c1 e0 07 ; 0xf8e75
+ add ax, 00128h ; 05 28 01 ; 0xf8e78
+ cwd ; 99 ; 0xf8e7b
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e7c
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8e7f
+ mov cx, dx ; 89 d1 ; 0xf8e84
+ mov dx, bx ; 89 da ; 0xf8e86
+ xchg cx, ax ; 91 ; 0xf8e88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e89
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e8d
+ out DX, eax ; 66 ef ; 0xf8e8f
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8e91
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e94
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e99
+ in eax, DX ; 66 ed ; 0xf8e9c
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8e9e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8ea0
+ xchg dx, ax ; 92 ; 0xf8ea4
+ mov word [bp-022h], ax ; 89 46 de ; 0xf8ea5
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf8ea8
+ push strict byte 00000h ; 6a 00 ; 0xf8eab ahci.c:678
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ead
+ xor cx, cx ; 31 c9 ; 0xf8eb0
+ call 0831bh ; e8 66 f4 ; 0xf8eb2
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8eb5
+ jne short 08e53h ; 75 99 ; 0xf8eb8
+ jmp short 08ec5h ; eb 09 ; 0xf8eba ahci.c:680
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf8ebc ahci.c:685
+ jne short 08ec5h ; 75 03 ; 0xf8ec0
+ jmp near 09277h ; e9 b2 03 ; 0xf8ec2
+ push strict byte 00000h ; 6a 00 ; 0xf8ec5 ahci.c:690
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8ec7
+ xor cx, cx ; 31 c9 ; 0xf8eca
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf8ecc
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf8ecf
+ call 0831bh ; e8 46 f4 ; 0xf8ed2
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8ed5
+ jne short 08ec2h ; 75 e8 ; 0xf8ed8
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8eda ahci.c:698
+ xor ah, ah ; 30 e4 ; 0xf8edd
+ mov di, ax ; 89 c7 ; 0xf8edf
+ sal di, 007h ; c1 e7 07 ; 0xf8ee1
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8ee4
+ cwd ; 99 ; 0xf8ee8
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ee9
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8eec
+ mov cx, dx ; 89 d1 ; 0xf8ef1
+ mov dx, bx ; 89 da ; 0xf8ef3
+ xchg cx, ax ; 91 ; 0xf8ef5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ef6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8efa
+ out DX, eax ; 66 ef ; 0xf8efc
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8efe
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f01
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f06
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f09
+ mov cx, ax ; 89 c1 ; 0xf8f0c
+ xchg cx, ax ; 91 ; 0xf8f0e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f0f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f13
+ out DX, eax ; 66 ef ; 0xf8f15
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf8f17 ahci.c:700
+ mov al, byte [es:bx+00231h] ; 26 8a 87 31 02 ; 0xf8f1a
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8f1f
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8f22 ahci.c:705
+ jnc short 08ec2h ; 73 9c ; 0xf8f24
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8f26 ahci.c:708
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f2a ahci.c:250
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f2d
+ xor cx, cx ; 31 c9 ; 0xf8f32 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf8f34
+ xchg cx, ax ; 91 ; 0xf8f36
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f37
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f3b
+ out DX, eax ; 66 ef ; 0xf8f3d
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8f3f ahci.c:253
+ mov dx, bx ; 89 da ; 0xf8f42
+ in eax, DX ; 66 ed ; 0xf8f44
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f46
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f48
+ xchg dx, ax ; 92 ; 0xf8f4c
+ or AL, strict byte 010h ; 0c 10 ; 0xf8f4d
+ mov cx, dx ; 89 d1 ; 0xf8f4f
+ mov dx, bx ; 89 da ; 0xf8f51
+ xchg cx, ax ; 91 ; 0xf8f53
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f54
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f58
+ out DX, eax ; 66 ef ; 0xf8f5a
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8f5c ahci.c:712
+ cwd ; 99 ; 0xf8f60
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f61
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f64
+ mov cx, dx ; 89 d1 ; 0xf8f69
+ mov dx, bx ; 89 da ; 0xf8f6b
+ xchg cx, ax ; 91 ; 0xf8f6d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f6e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f72
+ out DX, eax ; 66 ef ; 0xf8f74
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8f76
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f79
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f7e
+ in eax, DX ; 66 ed ; 0xf8f81
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f83
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f85
+ xchg dx, ax ; 92 ; 0xf8f89
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf8f8a
+ add bl, 00ch ; 80 c3 0c ; 0xf8f8d
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8f90
+ test dx, dx ; 85 d2 ; 0xf8f93 ahci.c:713
+ jne short 08febh ; 75 54 ; 0xf8f95
+ cmp ax, 00101h ; 3d 01 01 ; 0xf8f97
+ jne short 08febh ; 75 4f ; 0xf8f9a
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf8f9c ahci.c:723
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf8f9f
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf8fa5
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf8fab
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf8fb1
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf8fb6 ahci.c:724
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf8fba
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf8fbe
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf8fc2 ahci.c:725
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf8fc8 ahci.c:726
+ mov bx, 000ech ; bb ec 00 ; 0xf8fce ahci.c:727
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf8fd1
+ mov dx, es ; 8c c2 ; 0xf8fd4
+ call 084abh ; e8 d2 f4 ; 0xf8fd6
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8fd9 ahci.c:730
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf8fdc
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf8fdf ahci.c:732
+ je short 08feeh ; 74 08 ; 0xf8fe4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8fe6
+ jmp short 08ff0h ; eb 05 ; 0xf8fe9
+ jmp near 091b2h ; e9 c4 01 ; 0xf8feb
+ xor ax, ax ; 31 c0 ; 0xf8fee
+ mov dl, al ; 88 c2 ; 0xf8ff0
+ mov ax, word [bp-00230h] ; 8b 86 d0 fd ; 0xf8ff2 ahci.c:733
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8ff6
+ mov ax, word [bp-0022ch] ; 8b 86 d4 fd ; 0xf8ff9 ahci.c:734
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf8ffd
+ mov ax, word [bp-00226h] ; 8b 86 da fd ; 0xf9000 ahci.c:735
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf9004
+ mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf9007 ahci.c:736
+ mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf900b
+ xor ax, ax ; 31 c0 ; 0xf900f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9011
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf9014
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf9017 ahci.c:738
+ jne short 09038h ; 75 1b ; 0xf901b
+ cmp di, strict byte 0ffffh ; 83 ff ff ; 0xf901d
+ jne short 09038h ; 75 16 ; 0xf9020
+ mov ax, word [bp-00164h] ; 8b 86 9c fe ; 0xf9022 ahci.c:739
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf9026
+ mov ax, word [bp-00166h] ; 8b 86 9a fe ; 0xf9029
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf902d
+ mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf9030
+ mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf9034
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf9038 ahci.c:743
+ xor bh, bh ; 30 ff ; 0xf903b
+ mov es, [bp-026h] ; 8e 46 da ; 0xf903d
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf9040
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9043
+ mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf9046
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf904b ahci.c:744
+ xor ah, ah ; 30 e4 ; 0xf904e
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9050
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9053
+ add bx, ax ; 01 c3 ; 0xf9056
+ mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf9058
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf905e ahci.c:746
+ mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf9062 ahci.c:747
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9067 ahci.c:748
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf906d ahci.c:749
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9072 ahci.c:750
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf9075
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9079
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf907c
+ mov word [es:bx+038h], si ; 26 89 77 38 ; 0xf9080
+ mov word [es:bx+036h], di ; 26 89 7f 36 ; 0xf9084
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9088 ahci.c:752
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf908b
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf908f ahci.c:753
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf9092
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9096 ahci.c:754
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf9099
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf909d ahci.c:757
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf90a0
+ jc short 090b0h ; 72 0c ; 0xf90a2
+ jbe short 090b8h ; 76 12 ; 0xf90a4
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf90a6
+ je short 090c0h ; 74 16 ; 0xf90a8
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf90aa
+ je short 090bch ; 74 0e ; 0xf90ac
+ jmp short 0910ch ; eb 5c ; 0xf90ae
+ test al, al ; 84 c0 ; 0xf90b0
+ jne short 0910ch ; 75 58 ; 0xf90b2
+ mov BL, strict byte 040h ; b3 40 ; 0xf90b4 ahci.c:760
+ jmp short 090c2h ; eb 0a ; 0xf90b6 ahci.c:761
+ mov BL, strict byte 048h ; b3 48 ; 0xf90b8 ahci.c:763
+ jmp short 090c2h ; eb 06 ; 0xf90ba ahci.c:764
+ mov BL, strict byte 050h ; b3 50 ; 0xf90bc ahci.c:766
+ jmp short 090c2h ; eb 02 ; 0xf90be ahci.c:767
+ mov BL, strict byte 058h ; b3 58 ; 0xf90c0 ahci.c:769
+ mov dl, bl ; 88 da ; 0xf90c2 ahci.c:773
+ add dl, 007h ; 80 c2 07 ; 0xf90c4
+ xor dh, dh ; 30 f6 ; 0xf90c7
+ mov ax, dx ; 89 d0 ; 0xf90c9
+ call 01650h ; e8 82 85 ; 0xf90cb
+ test al, al ; 84 c0 ; 0xf90ce
+ je short 0910ch ; 74 3a ; 0xf90d0
+ mov al, bl ; 88 d8 ; 0xf90d2 ahci.c:776
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf90d4
+ xor ah, ah ; 30 e4 ; 0xf90d6
+ call 01650h ; e8 75 85 ; 0xf90d8
+ xor ah, ah ; 30 e4 ; 0xf90db
+ sal ax, 008h ; c1 e0 08 ; 0xf90dd
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf90e0
+ mov al, bl ; 88 d8 ; 0xf90e3
+ xor ah, ah ; 30 e4 ; 0xf90e5
+ call 01650h ; e8 66 85 ; 0xf90e7
+ xor ah, ah ; 30 e4 ; 0xf90ea
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf90ec
+ add cx, ax ; 01 c1 ; 0xf90ef
+ mov word [bp-030h], cx ; 89 4e d0 ; 0xf90f1
+ mov al, bl ; 88 d8 ; 0xf90f4 ahci.c:777
+ add AL, strict byte 002h ; 04 02 ; 0xf90f6
+ call 01650h ; e8 55 85 ; 0xf90f8
+ xor ah, ah ; 30 e4 ; 0xf90fb
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf90fd
+ mov ax, dx ; 89 d0 ; 0xf9100 ahci.c:778
+ call 01650h ; e8 4b 85 ; 0xf9102
+ xor ah, ah ; 30 e4 ; 0xf9105
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf9107
+ jmp short 0911ch ; eb 10 ; 0xf910a ahci.c:780
+ push word [bp-014h] ; ff 76 ec ; 0xf910c ahci.c:781
+ push word [bp-016h] ; ff 76 ea ; 0xf910f
+ push si ; 56 ; 0xf9112
+ push di ; 57 ; 0xf9113
+ mov dx, ss ; 8c d2 ; 0xf9114
+ lea ax, [bp-032h] ; 8d 46 ce ; 0xf9116
+ call 058b0h ; e8 94 c7 ; 0xf9119
+ mov bx, 00da0h ; bb a0 0d ; 0xf911c ahci.c:785
+ mov cx, ds ; 8c d9 ; 0xf911f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9121
+ call 018bch ; e8 95 87 ; 0xf9124
+ push word [bp-014h] ; ff 76 ec ; 0xf9127
+ push word [bp-016h] ; ff 76 ea ; 0xf912a
+ push si ; 56 ; 0xf912d
+ push di ; 57 ; 0xf912e
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf912f
+ push ax ; 50 ; 0xf9132
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf9133
+ push ax ; 50 ; 0xf9136
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf9137
+ push ax ; 50 ; 0xf913a
+ push word [bp-01ch] ; ff 76 e4 ; 0xf913b
+ push word [bp-018h] ; ff 76 e8 ; 0xf913e
+ push word [bp-01ah] ; ff 76 e6 ; 0xf9141
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9144
+ xor ah, ah ; 30 e4 ; 0xf9147
+ push ax ; 50 ; 0xf9149
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf914a
+ push ax ; 50 ; 0xf914d
+ push 00cd6h ; 68 d6 0c ; 0xf914e
+ push strict byte 00004h ; 6a 04 ; 0xf9151
+ call 018ffh ; e8 a9 87 ; 0xf9153
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf9156
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9159 ahci.c:787
+ xor ah, ah ; 30 e4 ; 0xf915c
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf915e
+ mov di, word [bp-028h] ; 8b 7e d8 ; 0xf9161
+ add di, ax ; 01 c7 ; 0xf9164
+ mov es, [bp-026h] ; 8e 46 da ; 0xf9166
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf9169
+ push DS ; 1e ; 0xf916c
+ push SS ; 16 ; 0xf916d
+ pop DS ; 1f ; 0xf916e
+ lea si, [bp-032h] ; 8d 76 ce ; 0xf916f
+ movsw ; a5 ; 0xf9172
+ movsw ; a5 ; 0xf9173
+ movsw ; a5 ; 0xf9174
+ pop DS ; 1f ; 0xf9175
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9176 ahci.c:790
+ mov bl, byte [es:bx+001e2h] ; 26 8a 9f e2 01 ; 0xf9179
+ mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf917e ahci.c:791
+ add dl, 00ch ; 80 c2 0c ; 0xf9181
+ mov al, bl ; 88 d8 ; 0xf9184
+ xor ah, ah ; 30 e4 ; 0xf9186
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf9188
+ add si, ax ; 01 c6 ; 0xf918b
+ mov byte [es:si+001e3h], dl ; 26 88 94 e3 01 ; 0xf918d
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9192 ahci.c:792
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf9194 ahci.c:793
+ mov byte [es:si+001e2h], bl ; 26 88 9c e2 01 ; 0xf9197
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf919c ahci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf919f
+ mov es, ax ; 8e c0 ; 0xf91a2
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf91a4
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf91a7 ahci.c:797
+ mov si, strict word 00075h ; be 75 00 ; 0xf91a9 ahci.c:43
+ mov byte [es:si], bl ; 26 88 1c ; 0xf91ac
+ jmp near 09269h ; e9 b7 00 ; 0xf91af ahci.c:800
+ cmp dx, 0eb14h ; 81 fa 14 eb ; 0xf91b2
+ jne short 0920ch ; 75 54 ; 0xf91b6
+ cmp ax, 00101h ; 3d 01 01 ; 0xf91b8
+ jne short 0920ch ; 75 4f ; 0xf91bb
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf91bd ahci.c:805
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf91c0
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf91c6
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf91cc
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf91d2
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf91d7 ahci.c:806
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf91db
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf91df
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf91e3 ahci.c:807
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf91e9 ahci.c:808
+ mov bx, 000a1h ; bb a1 00 ; 0xf91ef ahci.c:809
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf91f2
+ mov dx, es ; 8c c2 ; 0xf91f5
+ call 084abh ; e8 b1 f2 ; 0xf91f7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf91fa ahci.c:812
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf91fd
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf9200 ahci.c:814
+ je short 0920eh ; 74 07 ; 0xf9205
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9207
+ jmp short 09210h ; eb 04 ; 0xf920a
+ jmp short 09269h ; eb 5b ; 0xf920c
+ xor dx, dx ; 31 d2 ; 0xf920e
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf9210 ahci.c:816
+ xor bh, bh ; 30 ff ; 0xf9213
+ mov es, [bp-026h] ; 8e 46 da ; 0xf9215
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf9218
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf921b
+ mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf921e
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9223 ahci.c:817
+ xor ah, ah ; 30 e4 ; 0xf9226
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9228
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf922b
+ add bx, ax ; 01 c3 ; 0xf922e
+ mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf9230
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf9236 ahci.c:819
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf923a ahci.c:820
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf9240 ahci.c:821
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9245 ahci.c:824
+ mov al, byte [es:bx+001f3h] ; 26 8a 87 f3 01 ; 0xf9248
+ mov ah, byte [bp-00eh] ; 8a 66 f2 ; 0xf924d ahci.c:825
+ add ah, 00ch ; 80 c4 0c ; 0xf9250
+ mov bl, al ; 88 c3 ; 0xf9253
+ xor bh, bh ; 30 ff ; 0xf9255
+ add bx, word [bp-028h] ; 03 5e d8 ; 0xf9257
+ mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf925a
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf925f ahci.c:826
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf9261 ahci.c:827
+ mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf9264
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf9269 ahci.c:832
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf926c ahci.c:833
+ les bx, [bp-028h] ; c4 5e d8 ; 0xf926f
+ mov byte [es:bx+00231h], al ; 26 88 87 31 02 ; 0xf9272
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9277 ahci.c:838
+ pop di ; 5f ; 0xf927a
+ pop si ; 5e ; 0xf927b
+ pop cx ; 59 ; 0xf927c
+ pop bp ; 5d ; 0xf927d
+ retn ; c3 ; 0xf927e
+ ; disGetNextSymbol 0xf927f LB 0xc49 -> off=0x0 cb=000000000000003a uValue=00000000000f7c7f 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf927f LB 0x3a
+ push bx ; 53 ; 0xf927f ahci.c:843
+ push cx ; 51 ; 0xf9280
+ push dx ; 52 ; 0xf9281
+ push di ; 57 ; 0xf9282
+ push bp ; 55 ; 0xf9283
+ mov bp, sp ; 89 e5 ; 0xf9284
+ mov di, 00413h ; bf 13 04 ; 0xf9286 ahci.c:48
+ xor ax, ax ; 31 c0 ; 0xf9289
+ mov es, ax ; 8e c0 ; 0xf928b
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf928d
+ test ax, ax ; 85 c0 ; 0xf9290 ahci.c:852
+ je short 092b3h ; 74 1f ; 0xf9292
+ dec ax ; 48 ; 0xf9294 ahci.c:853
+ mov bx, ax ; 89 c3 ; 0xf9295
+ xor dx, dx ; 31 d2 ; 0xf9297 ahci.c:856
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9299
+ sal ax, 1 ; d1 e0 ; 0xf929c
+ rcl dx, 1 ; d1 d2 ; 0xf929e
+ loop 0929ch ; e2 fa ; 0xf92a0
+ mov di, dx ; 89 d7 ; 0xf92a2
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf92a4
+ shr di, 1 ; d1 ef ; 0xf92a7
+ rcr ax, 1 ; d1 d8 ; 0xf92a9
+ loop 092a7h ; e2 fa ; 0xf92ab
+ mov di, 00413h ; bf 13 04 ; 0xf92ad ahci.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf92b0
+ pop bp ; 5d ; 0xf92b3 ahci.c:861
+ pop di ; 5f ; 0xf92b4
+ pop dx ; 5a ; 0xf92b5
+ pop cx ; 59 ; 0xf92b6
+ pop bx ; 5b ; 0xf92b7
+ retn ; c3 ; 0xf92b8
+ ; disGetNextSymbol 0xf92b9 LB 0xc0f -> off=0x0 cb=0000000000000156 uValue=00000000000f7cb9 'ahci_hba_init'
+ahci_hba_init: ; 0xf92b9 LB 0x156
+ push bp ; 55 ; 0xf92b9 ahci.c:866
+ mov bp, sp ; 89 e5 ; 0xf92ba
+ push bx ; 53 ; 0xf92bc
+ push cx ; 51 ; 0xf92bd
+ push dx ; 52 ; 0xf92be
+ push si ; 56 ; 0xf92bf
+ push di ; 57 ; 0xf92c0
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf92c1
+ mov si, ax ; 89 c6 ; 0xf92c4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf92c6 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf92c9
+ mov es, ax ; 8e c0 ; 0xf92cc
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf92ce
+ mov bx, 00122h ; bb 22 01 ; 0xf92d1 ahci.c:877
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf92d4 ahci.c:879
+ xor cx, cx ; 31 c9 ; 0xf92d7
+ mov dx, si ; 89 f2 ; 0xf92d9
+ xchg cx, ax ; 91 ; 0xf92db
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf92dc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf92e0
+ out DX, eax ; 66 ef ; 0xf92e2
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf92e4
+ in eax, DX ; 66 ed ; 0xf92e7
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf92e9
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf92eb
+ xchg dx, ax ; 92 ; 0xf92ef
+ call 0927fh ; e8 8c ff ; 0xf92f0 ahci.c:885
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf92f3
+ test ax, ax ; 85 c0 ; 0xf92f6 ahci.c:886
+ jne short 092fdh ; 75 03 ; 0xf92f8
+ jmp near 09405h ; e9 08 01 ; 0xf92fa
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf92fd ahci.c:889
+ mov es, di ; 8e c7 ; 0xf9300
+ mov word [es:bx+00232h], ax ; 26 89 87 32 02 ; 0xf9302
+ mov byte [es:bx+00231h], 000h ; 26 c6 87 31 02 00 ; 0xf9307 ahci.c:895
+ xor bx, bx ; 31 db ; 0xf930d ahci.c:897
+ mov es, ax ; 8e c0 ; 0xf930f
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf9311 ahci.c:898
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf9317 ahci.c:899
+ mov word [es:bx+00264h], 0c000h ; 26 c7 87 64 02 00 c0 ; 0xf931c ahci.c:904
+ mov word [es:bx+00266h], strict word 0000ch ; 26 c7 87 66 02 0c 00 ; 0xf9323
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf932a ahci.c:252
+ xor cx, cx ; 31 c9 ; 0xf932d
+ mov dx, si ; 89 f2 ; 0xf932f
+ xchg cx, ax ; 91 ; 0xf9331
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9332
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9336
+ out DX, eax ; 66 ef ; 0xf9338
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf933a ahci.c:253
+ mov dx, bx ; 89 da ; 0xf933d
+ in eax, DX ; 66 ed ; 0xf933f
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9341
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9343
+ xchg dx, ax ; 92 ; 0xf9347
+ mov cx, dx ; 89 d1 ; 0xf9348
+ or AL, strict byte 001h ; 0c 01 ; 0xf934a
+ mov dx, bx ; 89 da ; 0xf934c
+ xchg cx, ax ; 91 ; 0xf934e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf934f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9353
+ out DX, eax ; 66 ef ; 0xf9355
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9357 ahci.c:910
+ xor cx, cx ; 31 c9 ; 0xf935a
+ mov dx, si ; 89 f2 ; 0xf935c
+ xchg cx, ax ; 91 ; 0xf935e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf935f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9363
+ out DX, eax ; 66 ef ; 0xf9365
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf9367
+ mov dx, bx ; 89 da ; 0xf936a
+ in eax, DX ; 66 ed ; 0xf936c
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf936e
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9370
+ xchg dx, ax ; 92 ; 0xf9374
+ test AL, strict byte 001h ; a8 01 ; 0xf9375 ahci.c:911
+ jne short 09357h ; 75 de ; 0xf9377
+ xor ax, ax ; 31 c0 ; 0xf9379 ahci.c:913
+ xor cx, cx ; 31 c9 ; 0xf937b
+ mov dx, si ; 89 f2 ; 0xf937d
+ xchg cx, ax ; 91 ; 0xf937f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9380
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9384
+ out DX, eax ; 66 ef ; 0xf9386
+ mov dx, bx ; 89 da ; 0xf9388
+ in eax, DX ; 66 ed ; 0xf938a
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf938c
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf938e
+ xchg dx, ax ; 92 ; 0xf9392
+ push strict byte 00000h ; 6a 00 ; 0xf9393 ahci.c:914
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf9395
+ xor cx, cx ; 31 c9 ; 0xf9398
+ call 0831bh ; e8 7e ef ; 0xf939a
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf939d
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf939f
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf93a2 ahci.c:919
+ jmp short 093c9h ; eb 21 ; 0xf93a6 ahci.c:920
+ xor al, al ; 30 c0 ; 0xf93a8 ahci.c:272
+ test al, al ; 84 c0 ; 0xf93aa ahci.c:273
+ je short 093c0h ; 74 12 ; 0xf93ac
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf93ae ahci.c:925
+ xor bh, bh ; 30 ff ; 0xf93b1
+ xor ax, ax ; 31 c0 ; 0xf93b3
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf93b5
+ call 08d9ch ; e8 e1 f9 ; 0xf93b8
+ dec byte [bp-00ch] ; fe 4e f4 ; 0xf93bb ahci.c:926
+ je short 09403h ; 74 43 ; 0xf93be ahci.c:927
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf93c0 ahci.c:930
+ cmp byte [bp-00eh], 020h ; 80 7e f2 20 ; 0xf93c3 ahci.c:931
+ jnc short 09403h ; 73 3a ; 0xf93c7
+ mov cl, byte [bp-00eh] ; 8a 4e f2 ; 0xf93c9
+ xor ch, ch ; 30 ed ; 0xf93cc
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf93ce
+ xor di, di ; 31 ff ; 0xf93d1
+ jcxz 093dbh ; e3 06 ; 0xf93d3
+ sal bx, 1 ; d1 e3 ; 0xf93d5
+ rcl di, 1 ; d1 d7 ; 0xf93d7
+ loop 093d5h ; e2 fa ; 0xf93d9
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf93db
+ xor cx, cx ; 31 c9 ; 0xf93de
+ mov dx, si ; 89 f2 ; 0xf93e0
+ xchg cx, ax ; 91 ; 0xf93e2
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93e3
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93e7
+ out DX, eax ; 66 ef ; 0xf93e9
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf93eb
+ in eax, DX ; 66 ed ; 0xf93ee
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf93f0
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf93f2
+ xchg dx, ax ; 92 ; 0xf93f6
+ test dx, di ; 85 fa ; 0xf93f7
+ jne short 093ffh ; 75 04 ; 0xf93f9
+ test ax, bx ; 85 d8 ; 0xf93fb
+ je short 093a8h ; 74 a9 ; 0xf93fd
+ mov AL, strict byte 001h ; b0 01 ; 0xf93ff
+ jmp short 093aah ; eb a7 ; 0xf9401
+ xor ax, ax ; 31 c0 ; 0xf9403 ahci.c:933
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf9405 ahci.c:934
+ pop di ; 5f ; 0xf9408
+ pop si ; 5e ; 0xf9409
+ pop dx ; 5a ; 0xf940a
+ pop cx ; 59 ; 0xf940b
+ pop bx ; 5b ; 0xf940c
+ pop bp ; 5d ; 0xf940d
+ retn ; c3 ; 0xf940e
+ ; disGetNextSymbol 0xf940f LB 0xab9 -> off=0x17 cb=000000000000013a uValue=00000000000f7e26 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 00fh, 095h, 0edh, 094h, 0f3h, 094h, 0f9h, 094h, 0ffh
+ db 094h, 005h, 095h, 00bh, 095h, 00fh, 095h
+ahci_init: ; 0xf9426 LB 0x13a
+ push bp ; 55 ; 0xf9426 ahci.c:939
+ mov bp, sp ; 89 e5 ; 0xf9427
+ push si ; 56 ; 0xf9429
+ push di ; 57 ; 0xf942a
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf942b
+ mov ax, 00601h ; b8 01 06 ; 0xf942e ahci.c:943
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9431
+ call 0995eh ; e8 27 05 ; 0xf9434
+ mov dx, ax ; 89 c2 ; 0xf9437
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9439 ahci.c:944
+ je short 0948ah ; 74 4c ; 0xf943c
+ xor al, al ; 30 c0 ; 0xf943e ahci.c:949
+ shr ax, 008h ; c1 e8 08 ; 0xf9440
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9443
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf9446 ahci.c:950
+ xor dh, dh ; 30 f6 ; 0xf9449 ahci.c:955
+ xor ah, ah ; 30 e4 ; 0xf944b
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf944d
+ call 09989h ; e8 36 05 ; 0xf9450
+ mov cl, al ; 88 c1 ; 0xf9453
+ test cl, cl ; 84 c9 ; 0xf9455 ahci.c:957
+ je short 0948dh ; 74 34 ; 0xf9457
+ mov bl, cl ; 88 cb ; 0xf9459 ahci.c:959
+ xor bh, bh ; 30 ff ; 0xf945b
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf945d
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9460
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9463
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9466
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf9469
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf946c
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf946f
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9472
+ call 09989h ; e8 11 05 ; 0xf9475
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf9478 ahci.c:963
+ je short 0948dh ; 74 11 ; 0xf947a
+ mov bl, cl ; 88 cb ; 0xf947c ahci.c:967
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf947e
+ xor bh, bh ; 30 ff ; 0xf9480
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9482
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9485
+ jmp short 09450h ; eb c6 ; 0xf9488 ahci.c:968
+ jmp near 09559h ; e9 cc 00 ; 0xf948a
+ test cl, cl ; 84 c9 ; 0xf948d ahci.c:970
+ je short 0948ah ; 74 f9 ; 0xf948f
+ add cl, 002h ; 80 c1 02 ; 0xf9491 ahci.c:977
+ mov bl, cl ; 88 cb ; 0xf9494 ahci.c:979
+ xor bh, bh ; 30 ff ; 0xf9496
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9498
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf949b
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf949e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf94a1
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf94a4
+ mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf94a7
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf94aa
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94ad
+ call 09989h ; e8 d6 04 ; 0xf94b0
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf94b3 ahci.c:980
+ jne short 0948ah ; 75 d3 ; 0xf94b5
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf94b7 ahci.c:983
+ mov bl, cl ; 88 cb ; 0xf94bb ahci.c:985
+ add bl, 002h ; 80 c3 02 ; 0xf94bd
+ xor bh, bh ; 30 ff ; 0xf94c0
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf94c2
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf94c5
+ call 099b7h ; e8 ec 04 ; 0xf94c8
+ mov dx, ax ; 89 c2 ; 0xf94cb
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf94cd ahci.c:989
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf94d0
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf94d3
+ jnbe short 0950fh ; 77 37 ; 0xf94d6
+ push CS ; 0e ; 0xf94d8
+ pop ES ; 07 ; 0xf94d9
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf94da
+ mov di, 0940fh ; bf 0f 94 ; 0xf94dd
+ repne scasb ; f2 ae ; 0xf94e0
+ sal cx, 1 ; d1 e1 ; 0xf94e2
+ mov di, cx ; 89 cf ; 0xf94e4
+ mov ax, word [cs:di-06beah] ; 2e 8b 85 16 94 ; 0xf94e6
+ jmp ax ; ff e0 ; 0xf94eb
+ mov byte [bp-008h], 010h ; c6 46 f8 10 ; 0xf94ed ahci.c:992
+ jmp short 0950fh ; eb 1c ; 0xf94f1 ahci.c:993
+ mov byte [bp-008h], 014h ; c6 46 f8 14 ; 0xf94f3 ahci.c:995
+ jmp short 0950fh ; eb 16 ; 0xf94f7 ahci.c:996
+ mov byte [bp-008h], 018h ; c6 46 f8 18 ; 0xf94f9 ahci.c:998
+ jmp short 0950fh ; eb 10 ; 0xf94fd ahci.c:999
+ mov byte [bp-008h], 01ch ; c6 46 f8 1c ; 0xf94ff ahci.c:1001
+ jmp short 0950fh ; eb 0a ; 0xf9503 ahci.c:1002
+ mov byte [bp-008h], 020h ; c6 46 f8 20 ; 0xf9505 ahci.c:1004
+ jmp short 0950fh ; eb 04 ; 0xf9509 ahci.c:1005
+ mov byte [bp-008h], 024h ; c6 46 f8 24 ; 0xf950b ahci.c:1007
+ mov si, dx ; 89 d6 ; 0xf950f ahci.c:1016
+ shr si, 004h ; c1 ee 04 ; 0xf9511
+ sal si, 002h ; c1 e6 02 ; 0xf9514
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9517 ahci.c:1018
+ test al, al ; 84 c0 ; 0xf951a
+ je short 09559h ; 74 3b ; 0xf951c
+ mov bl, al ; 88 c3 ; 0xf951e ahci.c:1020
+ xor bh, bh ; 30 ff ; 0xf9520
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9522
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf9525
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf9528
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf952b
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf952e
+ mov byte [bp-015h], bh ; 88 7e eb ; 0xf9531
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf9534
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9537
+ call 099e1h ; e8 a4 04 ; 0xf953a
+ test AL, strict byte 001h ; a8 01 ; 0xf953d ahci.c:1024
+ je short 09559h ; 74 18 ; 0xf953f
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf9541 ahci.c:1027
+ add si, ax ; 01 c6 ; 0xf9543
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9545 ahci.c:1030
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9548
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf954b
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf954e
+ call 09a2fh ; e8 db 04 ; 0xf9551
+ mov ax, si ; 89 f0 ; 0xf9554 ahci.c:1033
+ call 092b9h ; e8 60 fd ; 0xf9556
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9559 ahci.c:1047
+ pop di ; 5f ; 0xf955c
+ pop si ; 5e ; 0xf955d
+ pop bp ; 5d ; 0xf955e
+ retn ; c3 ; 0xf955f
+ ; disGetNextSymbol 0xf9560 LB 0x968 -> off=0x0 cb=000000000000001b uValue=00000000000f7f60 'apm_out_str'
+apm_out_str: ; 0xf9560 LB 0x1b
+ push bp ; 55 ; 0xf9560 apm.c:146
+ mov bp, sp ; 89 e5 ; 0xf9561
+ push bx ; 53 ; 0xf9563
+ mov bx, ax ; 89 c3 ; 0xf9564
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xf9566 apm.c:148
+ je short 09575h ; 74 0a ; 0xf9569
+ mov al, byte [bx] ; 8a 07 ; 0xf956b apm.c:149
+ out DX, AL ; ee ; 0xf956d
+ inc bx ; 43 ; 0xf956e
+ mov al, byte [bx] ; 8a 07 ; 0xf956f
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xf9571
+ jne short 0956dh ; 75 f8 ; 0xf9573
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9575 apm.c:150
+ pop bx ; 5b ; 0xf9578
+ pop bp ; 5d ; 0xf9579
+ retn ; c3 ; 0xf957a
+ ; disGetNextSymbol 0xf957b LB 0x94d -> off=0x1d cb=00000000000000d7 uValue=00000000000f7f98 'apm_function'
+ db 00eh, 00bh, 007h, 006h, 005h, 004h, 002h, 001h, 000h, 03eh, 096h, 0c6h, 095h, 069h, 096h, 0d8h
+ db 095h, 069h, 096h, 0f3h, 095h, 069h, 096h, 0f8h, 095h, 039h, 096h, 032h, 096h
+apm_function: ; 0xf9598 LB 0xd7
+ push bp ; 55 ; 0xf9598 apm.c:152
+ mov bp, sp ; 89 e5 ; 0xf9599
+ push di ; 57 ; 0xf959b
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf959c apm.c:156
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf95a0 apm.c:157
+ xor dh, dh ; 30 f6 ; 0xf95a3
+ cmp dx, strict byte 0000eh ; 83 fa 0e ; 0xf95a5
+ jnbe short 09615h ; 77 6b ; 0xf95a8
+ mov al, dl ; 88 d0 ; 0xf95aa
+ push CS ; 0e ; 0xf95ac
+ pop ES ; 07 ; 0xf95ad
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf95ae
+ mov di, 0957bh ; bf 7b 95 ; 0xf95b1
+ repne scasb ; f2 ae ; 0xf95b4
+ sal cx, 1 ; d1 e1 ; 0xf95b6
+ mov di, cx ; 89 cf ; 0xf95b8
+ mov bx, word [cs:di-06a7ch] ; 2e 8b 9d 84 95 ; 0xf95ba
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf95bf
+ or AL, strict byte 001h ; 0c 01 ; 0xf95c2
+ jmp bx ; ff e3 ; 0xf95c4
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf95c6 apm.c:159
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xf95cb apm.c:160
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xf95d0 apm.c:161
+ jmp near 09669h ; e9 91 00 ; 0xf95d5 apm.c:162
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf95d8 apm.c:172
+ mov word [bp+00ch], 09c34h ; c7 46 0c 34 9c ; 0xf95dd apm.c:173
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xf95e2 apm.c:174
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf95e7 apm.c:175
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf95ea
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf95ed apm.c:176
+ jmp near 09669h ; e9 76 00 ; 0xf95f0 apm.c:177
+ sti ; fb ; 0xf95f3 apm.c:194
+ hlt ; f4 ; 0xf95f4 apm.c:195
+ jmp near 09669h ; e9 71 00 ; 0xf95f5 apm.c:196
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xf95f8 apm.c:200
+ je short 0961fh ; 74 21 ; 0xf95fc
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xf95fe
+ je short 09617h ; 74 13 ; 0xf9602
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xf9604
+ jne short 09627h ; 75 1d ; 0xf9608
+ mov dx, 0040fh ; ba 0f 04 ; 0xf960a apm.c:202
+ mov ax, 00d10h ; b8 10 0d ; 0xf960d
+ call 09560h ; e8 4d ff ; 0xf9610
+ jmp short 09669h ; eb 54 ; 0xf9613 apm.c:203
+ jmp short 0963eh ; eb 27 ; 0xf9615
+ mov dx, 0040fh ; ba 0f 04 ; 0xf9617 apm.c:205
+ mov ax, 00d18h ; b8 18 0d ; 0xf961a
+ jmp short 09610h ; eb f1 ; 0xf961d
+ mov dx, 0040fh ; ba 0f 04 ; 0xf961f apm.c:208
+ mov ax, 00d20h ; b8 20 0d ; 0xf9622
+ jmp short 09610h ; eb e9 ; 0xf9625
+ or dh, 00ah ; 80 ce 0a ; 0xf9627 apm.c:211
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf962a
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf962d apm.c:212
+ jmp short 09669h ; eb 37 ; 0xf9630 apm.c:214
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf9632 apm.c:216
+ jmp short 09669h ; eb 30 ; 0xf9637 apm.c:217
+ or dh, 080h ; 80 ce 80 ; 0xf9639 apm.c:224
+ jmp short 0962ah ; eb ec ; 0xf963c
+ mov bx, 00da0h ; bb a0 0d ; 0xf963e apm.c:228
+ mov cx, ds ; 8c d9 ; 0xf9641
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9643
+ call 018bch ; e8 73 82 ; 0xf9646
+ push word [bp+00ch] ; ff 76 0c ; 0xf9649
+ push word [bp+012h] ; ff 76 12 ; 0xf964c
+ push 00d29h ; 68 29 0d ; 0xf964f
+ push strict byte 00004h ; 6a 04 ; 0xf9652
+ call 018ffh ; e8 a8 82 ; 0xf9654
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9657
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf965a apm.c:229
+ xor ah, ah ; 30 e4 ; 0xf965d
+ or ah, 00ch ; 80 cc 0c ; 0xf965f
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf9662
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf9665 apm.c:230
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9669 apm.c:232
+ pop di ; 5f ; 0xf966c
+ pop bp ; 5d ; 0xf966d
+ retn ; c3 ; 0xf966e
+ ; disGetNextSymbol 0xf966f LB 0x859 -> off=0x0 cb=0000000000000024 uValue=00000000000f806f 'pci16_select_reg'
+pci16_select_reg: ; 0xf966f LB 0x24
+ push bp ; 55 ; 0xf966f pcibios.c:188
+ mov bp, sp ; 89 e5 ; 0xf9670
+ push bx ; 53 ; 0xf9672
+ and dl, 0fch ; 80 e2 fc ; 0xf9673 pcibios.c:190
+ mov bx, dx ; 89 d3 ; 0xf9676
+ mov dx, 00cf8h ; ba f8 0c ; 0xf9678
+ movzx eax, ax ; 66 0f b7 c0 ; 0xf967b
+ sal eax, 008h ; 66 c1 e0 08 ; 0xf967f
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xf9683
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xf9689
+ out DX, eax ; 66 ef ; 0xf968b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf968d pcibios.c:191
+ pop bx ; 5b ; 0xf9690
+ pop bp ; 5d ; 0xf9691
+ retn ; c3 ; 0xf9692
+ ; disGetNextSymbol 0xf9693 LB 0x835 -> off=0x0 cb=00000000000000ed uValue=00000000000f8093 'pci16_find_device'
+pci16_find_device: ; 0xf9693 LB 0xed
+ push bp ; 55 ; 0xf9693 pcibios.c:221
+ mov bp, sp ; 89 e5 ; 0xf9694
+ push si ; 56 ; 0xf9696
+ push di ; 57 ; 0xf9697
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9698
+ push ax ; 50 ; 0xf969b
+ push dx ; 52 ; 0xf969c
+ mov si, bx ; 89 de ; 0xf969d
+ mov di, cx ; 89 cf ; 0xf969f
+ test cx, cx ; 85 c9 ; 0xf96a1 pcibios.c:231
+ xor bx, bx ; 31 db ; 0xf96a3 pcibios.c:238
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf96a5 pcibios.c:239
+ test bl, 007h ; f6 c3 07 ; 0xf96a9 pcibios.c:249
+ jne short 096dbh ; 75 2d ; 0xf96ac
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xf96ae pcibios.c:250
+ mov ax, bx ; 89 d8 ; 0xf96b1
+ call 0966fh ; e8 b9 ff ; 0xf96b3
+ mov dx, 00cfeh ; ba fe 0c ; 0xf96b6 pcibios.c:251
+ in AL, DX ; ec ; 0xf96b9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf96ba
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf96bc
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf96bf pcibios.c:252
+ jne short 096c9h ; 75 06 ; 0xf96c1
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf96c3 pcibios.c:253
+ jmp near 0975ch ; e9 93 00 ; 0xf96c6 pcibios.c:254
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf96c9 pcibios.c:256
+ je short 096d6h ; 74 07 ; 0xf96cd
+ mov word [bp-010h], strict word 00001h ; c7 46 f0 01 00 ; 0xf96cf pcibios.c:257
+ jmp short 096dbh ; eb 05 ; 0xf96d4 pcibios.c:258
+ mov word [bp-010h], strict word 00008h ; c7 46 f0 08 00 ; 0xf96d6 pcibios.c:259
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf96db pcibios.c:270
+ and AL, strict byte 007h ; 24 07 ; 0xf96de
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf96e0
+ jne short 09703h ; 75 1f ; 0xf96e2
+ mov ax, bx ; 89 d8 ; 0xf96e4
+ shr ax, 008h ; c1 e8 08 ; 0xf96e6
+ test ax, ax ; 85 c0 ; 0xf96e9
+ jne short 09703h ; 75 16 ; 0xf96eb
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xf96ed pcibios.c:272
+ mov ax, bx ; 89 d8 ; 0xf96f0
+ call 0966fh ; e8 7a ff ; 0xf96f2
+ mov dx, 00cfeh ; ba fe 0c ; 0xf96f5 pcibios.c:273
+ in AL, DX ; ec ; 0xf96f8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf96f9
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xf96fb pcibios.c:274
+ jbe short 09703h ; 76 03 ; 0xf96fe
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf9700 pcibios.c:275
+ test di, di ; 85 ff ; 0xf9703 pcibios.c:279
+ je short 0970ch ; 74 05 ; 0xf9705
+ mov dx, strict word 00008h ; ba 08 00 ; 0xf9707
+ jmp short 0970eh ; eb 02 ; 0xf970a
+ xor dx, dx ; 31 d2 ; 0xf970c
+ mov ax, bx ; 89 d8 ; 0xf970e
+ call 0966fh ; e8 5c ff ; 0xf9710
+ mov dx, 00cfch ; ba fc 0c ; 0xf9713 pcibios.c:280
+ in eax, DX ; 66 ed ; 0xf9716
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9718
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf971a
+ xchg dx, ax ; 92 ; 0xf971e
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf971f
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9722
+ mov word [bp-00eh], strict word 00000h ; c7 46 f2 00 00 ; 0xf9725 pcibios.c:281
+ test di, di ; 85 ff ; 0xf972a pcibios.c:284
+ je short 0973dh ; 74 0f ; 0xf972c
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf972e pcibios.c:285
+ shr dx, 1 ; d1 ea ; 0xf9731
+ rcr ax, 1 ; d1 d8 ; 0xf9733
+ loop 09731h ; e2 fa ; 0xf9735
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf9737
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf973a
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf973d pcibios.c:292
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf9740
+ jne short 0974dh ; 75 08 ; 0xf9743
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf9745
+ cmp ax, word [bp-012h] ; 3b 46 ee ; 0xf9748
+ je short 09753h ; 74 06 ; 0xf974b
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf974d pcibios.c:293
+ je short 09759h ; 74 06 ; 0xf9751
+ dec si ; 4e ; 0xf9753
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9754
+ je short 0976dh ; 74 14 ; 0xf9757
+ add bx, word [bp-010h] ; 03 5e f0 ; 0xf9759 pcibios.c:301
+ mov dx, bx ; 89 da ; 0xf975c pcibios.c:302
+ shr dx, 008h ; c1 ea 08 ; 0xf975e
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9761
+ xor ah, ah ; 30 e4 ; 0xf9764
+ cmp dx, ax ; 39 c2 ; 0xf9766
+ jnbe short 0976dh ; 77 03 ; 0xf9768
+ jmp near 096a9h ; e9 3c ff ; 0xf976a
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf976d pcibios.c:304
+ jne short 09776h ; 75 04 ; 0xf9770 pcibios.c:308
+ mov ax, bx ; 89 d8 ; 0xf9772
+ jmp short 09779h ; eb 03 ; 0xf9774
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9776
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9779 pcibios.c:309
+ pop di ; 5f ; 0xf977c
+ pop si ; 5e ; 0xf977d
+ pop bp ; 5d ; 0xf977e
+ retn ; c3 ; 0xf977f
+ ; disGetNextSymbol 0xf9780 LB 0x748 -> off=0xc cb=00000000000001d2 uValue=00000000000f818c 'pci16_function'
+ db 06dh, 098h, 086h, 098h, 098h, 098h, 0ach, 098h, 0beh, 098h, 0d1h, 098h
+pci16_function: ; 0xf978c LB 0x1d2
+ push bp ; 55 ; 0xf978c pcibios.c:311
+ mov bp, sp ; 89 e5 ; 0xf978d
+ push si ; 56 ; 0xf978f
+ push di ; 57 ; 0xf9790
+ push ax ; 50 ; 0xf9791
+ push ax ; 50 ; 0xf9792
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xf9793 pcibios.c:318
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xf9798 pcibios.c:319
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf979c pcibios.c:321
+ xor bh, bh ; 30 ff ; 0xf979f
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf97a1
+ xor ah, ah ; 30 e4 ; 0xf97a4
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf97a6
+ jc short 097beh ; 72 13 ; 0xf97a9
+ jbe short 09811h ; 76 64 ; 0xf97ab
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xf97ad
+ je short 09819h ; 74 67 ; 0xf97b0
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xf97b2
+ jc short 097c8h ; 72 11 ; 0xf97b5
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xf97b7
+ jbe short 0981ch ; 76 60 ; 0xf97ba
+ jmp short 097c8h ; eb 0a ; 0xf97bc
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf97be
+ je short 097e7h ; 74 24 ; 0xf97c1
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf97c3
+ je short 097cbh ; 74 03 ; 0xf97c6
+ jmp near 0992ah ; e9 5f 01 ; 0xf97c8
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xf97cb pcibios.c:323
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xf97d0 pcibios.c:324
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xf97d5 pcibios.c:326
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xf97da pcibios.c:327
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xf97df
+ jmp near 09957h ; e9 70 01 ; 0xf97e4 pcibios.c:328
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xf97e7 pcibios.c:333
+ jne short 097f3h ; 75 06 ; 0xf97eb
+ or ah, 083h ; 80 cc 83 ; 0xf97ed pcibios.c:334
+ jmp near 09950h ; e9 5d 01 ; 0xf97f0 pcibios.c:335
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf97f3 pcibios.c:337
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xf97f6
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf97f9
+ xor cx, cx ; 31 c9 ; 0xf97fc
+ call 09693h ; e8 92 fe ; 0xf97fe
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9801 pcibios.c:338
+ jne short 09813h ; 75 0d ; 0xf9804
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9806 pcibios.c:339
+ xor ah, ah ; 30 e4 ; 0xf9809
+ or ah, 086h ; 80 cc 86 ; 0xf980b
+ jmp near 09950h ; e9 3f 01 ; 0xf980e
+ jmp short 0981eh ; eb 0b ; 0xf9811
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf9813 pcibios.c:340
+ jmp near 09957h ; e9 3e 01 ; 0xf9816 pcibios.c:345
+ jmp near 098e5h ; e9 c9 00 ; 0xf9819
+ jmp short 09843h ; eb 25 ; 0xf981c
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf981e pcibios.c:347
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9821
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xf9824
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9827
+ call 09693h ; e8 66 fe ; 0xf982a
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf982d pcibios.c:348
+ jne short 0983dh ; 75 0b ; 0xf9830
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9832 pcibios.c:349
+ xor ah, ah ; 30 e4 ; 0xf9835
+ or ah, 086h ; 80 cc 86 ; 0xf9837
+ jmp near 09950h ; e9 13 01 ; 0xf983a pcibios.c:350
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf983d pcibios.c:352
+ jmp near 09957h ; e9 14 01 ; 0xf9840 pcibios.c:354
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xf9843 pcibios.c:361
+ jc short 09850h ; 72 06 ; 0xf9848
+ or ah, 087h ; 80 cc 87 ; 0xf984a pcibios.c:362
+ jmp near 09950h ; e9 00 01 ; 0xf984d pcibios.c:363
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9850 pcibios.c:365
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9853
+ call 0966fh ; e8 16 fe ; 0xf9856
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9859 pcibios.c:366
+ xor bh, bh ; 30 ff ; 0xf985c
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xf985e
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xf9861
+ jnbe short 098ceh ; 77 68 ; 0xf9864
+ add bx, bx ; 01 db ; 0xf9866
+ jmp word [cs:bx-06880h] ; 2e ff a7 80 97 ; 0xf9868
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xf986d pcibios.c:368
+ xor bl, bl ; 30 db ; 0xf9870
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9872
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xf9875
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf9878
+ in AL, DX ; ec ; 0xf987c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf987d
+ or bx, ax ; 09 c3 ; 0xf987f
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xf9881
+ jmp short 098ceh ; eb 48 ; 0xf9884 pcibios.c:369
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9886 pcibios.c:371
+ xor dh, dh ; 30 f6 ; 0xf9889
+ and dl, 002h ; 80 e2 02 ; 0xf988b
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf988e
+ in ax, DX ; ed ; 0xf9892
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf9893
+ jmp short 098ceh ; eb 36 ; 0xf9896 pcibios.c:372
+ mov dx, 00cfch ; ba fc 0c ; 0xf9898 pcibios.c:374
+ in eax, DX ; 66 ed ; 0xf989b
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf989d
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf989f
+ xchg dx, ax ; 92 ; 0xf98a3
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf98a4
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xf98a7
+ jmp short 098ceh ; eb 22 ; 0xf98aa pcibios.c:375
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98ac pcibios.c:377
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf98af
+ xor dh, dh ; 30 f6 ; 0xf98b2
+ and dl, 003h ; 80 e2 03 ; 0xf98b4
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf98b7
+ out DX, AL ; ee ; 0xf98bb
+ jmp short 098ceh ; eb 10 ; 0xf98bc pcibios.c:378
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98be pcibios.c:380
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf98c1
+ xor dh, dh ; 30 f6 ; 0xf98c4
+ and dl, 002h ; 80 e2 02 ; 0xf98c6
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf98c9
+ out DX, ax ; ef ; 0xf98cd
+ jmp near 09957h ; e9 86 00 ; 0xf98ce pcibios.c:381
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98d1 pcibios.c:383
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xf98d4
+ mov dx, 00cfch ; ba fc 0c ; 0xf98d7
+ xchg cx, ax ; 91 ; 0xf98da
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf98db
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf98df
+ out DX, eax ; 66 ef ; 0xf98e1
+ jmp short 09957h ; eb 72 ; 0xf98e3 pcibios.c:387
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf98e5 pcibios.c:389
+ mov es, [bp+026h] ; 8e 46 26 ; 0xf98e8
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf98eb
+ mov [bp-006h], es ; 8c 46 fa ; 0xf98ee
+ mov cx, word [0f380h] ; 8b 0e 80 f3 ; 0xf98f1 pcibios.c:393
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xf98f5
+ jbe short 0990bh ; 76 11 ; 0xf98f8
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf98fa pcibios.c:394
+ xor ah, ah ; 30 e4 ; 0xf98fd
+ or ah, 089h ; 80 cc 89 ; 0xf98ff
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf9902
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9905 pcibios.c:395
+ jmp short 0991fh ; eb 14 ; 0xf9909 pcibios.c:396
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xf990b pcibios.c:397
+ mov si, 0f1a0h ; be a0 f1 ; 0xf990f
+ mov dx, ds ; 8c da ; 0xf9912
+ push DS ; 1e ; 0xf9914
+ mov ds, dx ; 8e da ; 0xf9915
+ rep movsb ; f3 a4 ; 0xf9917
+ pop DS ; 1f ; 0xf9919
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xf991a pcibios.c:399
+ mov ax, word [0f380h] ; a1 80 f3 ; 0xf991f pcibios.c:401
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf9922
+ mov word [es:bx], ax ; 26 89 07 ; 0xf9925
+ jmp short 09957h ; eb 2d ; 0xf9928 pcibios.c:402
+ mov bx, 00da0h ; bb a0 0d ; 0xf992a pcibios.c:404
+ mov cx, ds ; 8c d9 ; 0xf992d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf992f
+ call 018bch ; e8 87 7f ; 0xf9932
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9935
+ push ax ; 50 ; 0xf9938
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9939
+ push ax ; 50 ; 0xf993c
+ push 00d5ch ; 68 5c 0d ; 0xf993d
+ push strict byte 00004h ; 6a 04 ; 0xf9940
+ call 018ffh ; e8 ba 7f ; 0xf9942
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9945
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9948 pcibios.c:405
+ xor ah, ah ; 30 e4 ; 0xf994b
+ or ah, 081h ; 80 cc 81 ; 0xf994d
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf9950
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9953 pcibios.c:406
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9957 pcibios.c:408
+ pop di ; 5f ; 0xf995a
+ pop si ; 5e ; 0xf995b
+ pop bp ; 5d ; 0xf995c
+ retn ; c3 ; 0xf995d
+ ; disGetNextSymbol 0xf995e LB 0x56a -> off=0x0 cb=0000000000000008 uValue=00000000000f835e 'pci_find_classcode'
+pci_find_classcode: ; 0xf995e LB 0x8
+ push bp ; 55 ; 0xf995e pciutil.c:126
+ mov bp, sp ; 89 e5 ; 0xf995f
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9961 pciutil.c:133
+ pop bp ; 5d ; 0xf9964
+ retn ; c3 ; 0xf9965
+ ; disGetNextSymbol 0xf9966 LB 0x562 -> off=0x0 cb=0000000000000023 uValue=00000000000f8366 'pci_find_device'
+pci_find_device: ; 0xf9966 LB 0x23
+ push bp ; 55 ; 0xf9966 pciutil.c:146
+ mov bp, sp ; 89 e5 ; 0xf9967
+ push bx ; 53 ; 0xf9969
+ push cx ; 51 ; 0xf996a
+ push si ; 56 ; 0xf996b
+ mov cx, dx ; 89 d1 ; 0xf996c
+ xor si, si ; 31 f6 ; 0xf996e pciutil.c:148
+ mov dx, ax ; 89 c2 ; 0xf9970
+ mov ax, 0b102h ; b8 02 b1 ; 0xf9972
+ int 01ah ; cd 1a ; 0xf9975
+ cmp ah, 000h ; 80 fc 00 ; 0xf9977
+ je short 0997fh ; 74 03 ; 0xf997a
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf997c
+ mov ax, bx ; 89 d8 ; 0xf997f
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9981 pciutil.c:149
+ pop si ; 5e ; 0xf9984
+ pop cx ; 59 ; 0xf9985
+ pop bx ; 5b ; 0xf9986
+ pop bp ; 5d ; 0xf9987
+ retn ; c3 ; 0xf9988
+ ; disGetNextSymbol 0xf9989 LB 0x53f -> off=0x0 cb=000000000000002e uValue=00000000000f8389 'pci_read_config_byte'
+pci_read_config_byte: ; 0xf9989 LB 0x2e
+ push bp ; 55 ; 0xf9989 pciutil.c:151
+ mov bp, sp ; 89 e5 ; 0xf998a
+ push cx ; 51 ; 0xf998c
+ push di ; 57 ; 0xf998d
+ mov dh, al ; 88 c6 ; 0xf998e
+ mov bh, dl ; 88 d7 ; 0xf9990
+ mov al, bl ; 88 d8 ; 0xf9992
+ xor ah, ah ; 30 e4 ; 0xf9994 pciutil.c:153
+ mov dl, dh ; 88 f2 ; 0xf9996
+ xor dh, dh ; 30 f6 ; 0xf9998
+ sal dx, 008h ; c1 e2 08 ; 0xf999a
+ mov bl, bh ; 88 fb ; 0xf999d
+ xor bh, bh ; 30 ff ; 0xf999f
+ or bx, dx ; 09 d3 ; 0xf99a1
+ mov di, ax ; 89 c7 ; 0xf99a3
+ mov ax, 0b108h ; b8 08 b1 ; 0xf99a5
+ int 01ah ; cd 1a ; 0xf99a8
+ mov al, cl ; 88 c8 ; 0xf99aa
+ xor ah, ah ; 30 e4 ; 0xf99ac
+ xor dx, dx ; 31 d2 ; 0xf99ae pciutil.c:154
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf99b0
+ pop di ; 5f ; 0xf99b3
+ pop cx ; 59 ; 0xf99b4
+ pop bp ; 5d ; 0xf99b5
+ retn ; c3 ; 0xf99b6
+ ; disGetNextSymbol 0xf99b7 LB 0x511 -> off=0x0 cb=000000000000002a uValue=00000000000f83b7 'pci_read_config_word'
+pci_read_config_word: ; 0xf99b7 LB 0x2a
+ push bp ; 55 ; 0xf99b7 pciutil.c:156
+ mov bp, sp ; 89 e5 ; 0xf99b8
+ push cx ; 51 ; 0xf99ba
+ push di ; 57 ; 0xf99bb
+ mov bh, al ; 88 c7 ; 0xf99bc
+ mov al, bl ; 88 d8 ; 0xf99be
+ xor ah, ah ; 30 e4 ; 0xf99c0 pciutil.c:158
+ mov bl, bh ; 88 fb ; 0xf99c2
+ xor bh, bh ; 30 ff ; 0xf99c4
+ mov cx, bx ; 89 d9 ; 0xf99c6
+ sal cx, 008h ; c1 e1 08 ; 0xf99c8
+ mov bl, dl ; 88 d3 ; 0xf99cb
+ or bx, cx ; 09 cb ; 0xf99cd
+ mov di, ax ; 89 c7 ; 0xf99cf
+ mov ax, 0b109h ; b8 09 b1 ; 0xf99d1
+ int 01ah ; cd 1a ; 0xf99d4
+ mov ax, cx ; 89 c8 ; 0xf99d6
+ xor dx, dx ; 31 d2 ; 0xf99d8 pciutil.c:159
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf99da
+ pop di ; 5f ; 0xf99dd
+ pop cx ; 59 ; 0xf99de
+ pop bp ; 5d ; 0xf99df
+ retn ; c3 ; 0xf99e0
+ ; disGetNextSymbol 0xf99e1 LB 0x4e7 -> off=0x0 cb=000000000000004e uValue=00000000000f83e1 'pci_read_config_dword'
+pci_read_config_dword: ; 0xf99e1 LB 0x4e
+ push bp ; 55 ; 0xf99e1 pciutil.c:161
+ mov bp, sp ; 89 e5 ; 0xf99e2
+ push cx ; 51 ; 0xf99e4
+ push di ; 57 ; 0xf99e5
+ push ax ; 50 ; 0xf99e6
+ mov dh, al ; 88 c6 ; 0xf99e7
+ mov cl, dl ; 88 d1 ; 0xf99e9
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xf99eb
+ mov al, bl ; 88 d8 ; 0xf99ee pciutil.c:166
+ xor ah, ah ; 30 e4 ; 0xf99f0
+ mov dl, dh ; 88 f2 ; 0xf99f2
+ xor dh, dh ; 30 f6 ; 0xf99f4
+ mov di, dx ; 89 d7 ; 0xf99f6
+ sal di, 008h ; c1 e7 08 ; 0xf99f8
+ mov dl, cl ; 88 ca ; 0xf99fb
+ or dx, di ; 09 fa ; 0xf99fd
+ mov di, ax ; 89 c7 ; 0xf99ff
+ mov bx, dx ; 89 d3 ; 0xf9a01
+ mov ax, 0b109h ; b8 09 b1 ; 0xf9a03
+ int 01ah ; cd 1a ; 0xf9a06
+ test cx, cx ; 85 c9 ; 0xf9a08
+ jne short 09a20h ; 75 14 ; 0xf9a0a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9a0c
+ xor ah, ah ; 30 e4 ; 0xf9a0f
+ mov di, ax ; 89 c7 ; 0xf9a11
+ inc di ; 47 ; 0xf9a13
+ inc di ; 47 ; 0xf9a14
+ mov bx, dx ; 89 d3 ; 0xf9a15
+ mov ax, 0b109h ; b8 09 b1 ; 0xf9a17
+ int 01ah ; cd 1a ; 0xf9a1a
+ test cx, cx ; 85 c9 ; 0xf9a1c
+ je short 09a25h ; 74 05 ; 0xf9a1e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9a20
+ jmp short 09a27h ; eb 02 ; 0xf9a23
+ xor ax, ax ; 31 c0 ; 0xf9a25
+ cwd ; 99 ; 0xf9a27
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a28 pciutil.c:169
+ pop di ; 5f ; 0xf9a2b
+ pop cx ; 59 ; 0xf9a2c
+ pop bp ; 5d ; 0xf9a2d
+ retn ; c3 ; 0xf9a2e
+ ; disGetNextSymbol 0xf9a2f LB 0x499 -> off=0x0 cb=0000000000000025 uValue=00000000000f842f 'pci_write_config_word'
+pci_write_config_word: ; 0xf9a2f LB 0x25
+ push bp ; 55 ; 0xf9a2f pciutil.c:171
+ mov bp, sp ; 89 e5 ; 0xf9a30
+ push di ; 57 ; 0xf9a32
+ push ax ; 50 ; 0xf9a33
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf9a34
+ mov al, bl ; 88 d8 ; 0xf9a37
+ xor ah, ah ; 30 e4 ; 0xf9a39 pciutil.c:173
+ mov di, ax ; 89 c7 ; 0xf9a3b
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf9a3d
+ mov bx, ax ; 89 c3 ; 0xf9a40
+ sal bx, 008h ; c1 e3 08 ; 0xf9a42
+ mov al, dl ; 88 d0 ; 0xf9a45
+ or bx, ax ; 09 c3 ; 0xf9a47
+ mov ax, 0b10ch ; b8 0c b1 ; 0xf9a49
+ int 01ah ; cd 1a ; 0xf9a4c
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a4e pciutil.c:174
+ pop di ; 5f ; 0xf9a51
+ pop bp ; 5d ; 0xf9a52
+ retn ; c3 ; 0xf9a53
+ ; disGetNextSymbol 0xf9a54 LB 0x474 -> off=0x0 cb=000000000000001d uValue=00000000000f8454 'vds_is_present'
+vds_is_present: ; 0xf9a54 LB 0x1d
+ push bx ; 53 ; 0xf9a54 vds.c:32
+ push bp ; 55 ; 0xf9a55
+ mov bp, sp ; 89 e5 ; 0xf9a56
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xf9a58 vds.c:36
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9a5b
+ mov es, ax ; 8e c0 ; 0xf9a5e
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xf9a60 vds.c:37
+ je short 09a6ch ; 74 06 ; 0xf9a64
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9a66
+ pop bp ; 5d ; 0xf9a69
+ pop bx ; 5b ; 0xf9a6a
+ retn ; c3 ; 0xf9a6b
+ xor ax, ax ; 31 c0 ; 0xf9a6c
+ pop bp ; 5d ; 0xf9a6e vds.c:38
+ pop bx ; 5b ; 0xf9a6f
+ retn ; c3 ; 0xf9a70
+ ; disGetNextSymbol 0xf9a71 LB 0x457 -> off=0x0 cb=000000000000001e uValue=00000000000f8471 'vds_real_to_lin'
+vds_real_to_lin: ; 0xf9a71 LB 0x1e
+ push bx ; 53 ; 0xf9a71 vds.c:67
+ push cx ; 51 ; 0xf9a72
+ push bp ; 55 ; 0xf9a73
+ mov bp, sp ; 89 e5 ; 0xf9a74
+ mov bx, ax ; 89 c3 ; 0xf9a76
+ mov ax, dx ; 89 d0 ; 0xf9a78
+ xor dx, dx ; 31 d2 ; 0xf9a7a vds.c:69
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9a7c
+ sal ax, 1 ; d1 e0 ; 0xf9a7f
+ rcl dx, 1 ; d1 d2 ; 0xf9a81
+ loop 09a7fh ; e2 fa ; 0xf9a83
+ xor cx, cx ; 31 c9 ; 0xf9a85
+ add ax, bx ; 01 d8 ; 0xf9a87
+ adc dx, cx ; 11 ca ; 0xf9a89
+ pop bp ; 5d ; 0xf9a8b vds.c:70
+ pop cx ; 59 ; 0xf9a8c
+ pop bx ; 5b ; 0xf9a8d
+ retn ; c3 ; 0xf9a8e
+ ; disGetNextSymbol 0xf9a8f LB 0x439 -> off=0x0 cb=0000000000000077 uValue=00000000000f848f 'vds_build_sg_list'
+vds_build_sg_list: ; 0xf9a8f LB 0x77
+ push bp ; 55 ; 0xf9a8f vds.c:77
+ mov bp, sp ; 89 e5 ; 0xf9a90
+ push si ; 56 ; 0xf9a92
+ push di ; 57 ; 0xf9a93
+ mov di, ax ; 89 c7 ; 0xf9a94
+ mov si, dx ; 89 d6 ; 0xf9a96
+ mov ax, bx ; 89 d8 ; 0xf9a98
+ mov dx, cx ; 89 ca ; 0xf9a9a
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9a9c vds.c:82
+ mov es, si ; 8e c6 ; 0xf9a9f
+ mov word [es:di], bx ; 26 89 1d ; 0xf9aa1
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9aa4
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xf9aa7
+ call 09a71h ; e8 c3 ff ; 0xf9aab vds.c:83
+ mov es, si ; 8e c6 ; 0xf9aae
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9ab0
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9ab4
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xf9ab8 vds.c:84
+ call 09a54h ; e8 93 ff ; 0xf9abe vds.c:85
+ test ax, ax ; 85 c0 ; 0xf9ac1
+ je short 09ad6h ; 74 11 ; 0xf9ac3
+ mov es, si ; 8e c6 ; 0xf9ac5 vds.c:87
+ mov ax, 08105h ; b8 05 81 ; 0xf9ac7
+ mov dx, strict word 00000h ; ba 00 00 ; 0xf9aca
+ int 04bh ; cd 4b ; 0xf9acd
+ jc short 09ad3h ; 72 02 ; 0xf9acf
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf9ad1
+ cbw ; 98 ; 0xf9ad3
+ jmp short 09afdh ; eb 27 ; 0xf9ad4 vds.c:88
+ mov es, si ; 8e c6 ; 0xf9ad6 vds.c:90
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xf9ad8
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xf9ade vds.c:91
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf9ae2
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf9ae6
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xf9aea
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9aee vds.c:92
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xf9af1
+ mov ax, bx ; 89 d8 ; 0xf9af5
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xf9af7
+ xor ax, bx ; 31 d8 ; 0xf9afb vds.c:93
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9afd vds.c:96
+ pop di ; 5f ; 0xf9b00
+ pop si ; 5e ; 0xf9b01
+ pop bp ; 5d ; 0xf9b02
+ retn 00004h ; c2 04 00 ; 0xf9b03
+ ; disGetNextSymbol 0xf9b06 LB 0x3c2 -> off=0x0 cb=000000000000002e uValue=00000000000f8506 'vds_free_sg_list'
+vds_free_sg_list: ; 0xf9b06 LB 0x2e
+ push bp ; 55 ; 0xf9b06 vds.c:102
+ mov bp, sp ; 89 e5 ; 0xf9b07
+ push bx ; 53 ; 0xf9b09
+ push di ; 57 ; 0xf9b0a
+ mov bx, ax ; 89 c3 ; 0xf9b0b
+ call 09a54h ; e8 44 ff ; 0xf9b0d vds.c:106
+ test ax, ax ; 85 c0 ; 0xf9b10
+ je short 09b25h ; 74 11 ; 0xf9b12
+ mov di, bx ; 89 df ; 0xf9b14 vds.c:108
+ mov es, dx ; 8e c2 ; 0xf9b16
+ mov ax, 08106h ; b8 06 81 ; 0xf9b18
+ mov dx, strict word 00000h ; ba 00 00 ; 0xf9b1b
+ int 04bh ; cd 4b ; 0xf9b1e
+ jc short 09b24h ; 72 02 ; 0xf9b20
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf9b22
+ cbw ; 98 ; 0xf9b24
+ mov es, dx ; 8e c2 ; 0xf9b25 vds.c:116
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9b27
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b2d vds.c:118
+ pop di ; 5f ; 0xf9b30
+ pop bx ; 5b ; 0xf9b31
+ pop bp ; 5d ; 0xf9b32
+ retn ; c3 ; 0xf9b33
+ ; disGetNextSymbol 0xf9b34 LB 0x394 -> off=0xc cb=0000000000000020 uValue=00000000000f8540 '__U4M'
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+__U4M: ; 0xf9b40 LB 0x20
+ pushfw ; 9c ; 0xf9b40 __U4M.asm:37
+ push si ; 56 ; 0xf9b41 __U4M.asm:65
+ push di ; 57 ; 0xf9b42 __U4M.asm:66
+ push ax ; 50 ; 0xf9b43 __U4M.asm:79
+ db 08bh, 0fah
+ ; mov di, dx ; 8b fa ; 0xf9b44 __U4M.asm:80
+ mul bx ; f7 e3 ; 0xf9b46 __U4M.asm:83
+ db 08bh, 0f2h
+ ; mov si, dx ; 8b f2 ; 0xf9b48 __U4M.asm:84
+ xchg di, ax ; 97 ; 0xf9b4a __U4M.asm:85
+ mul bx ; f7 e3 ; 0xf9b4b __U4M.asm:88
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xf9b4d __U4M.asm:89
+ pop ax ; 58 ; 0xf9b4f __U4M.asm:92
+ mul cx ; f7 e1 ; 0xf9b50 __U4M.asm:93
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xf9b52 __U4M.asm:94
+ db 08bh, 0d6h
+ ; mov dx, si ; 8b d6 ; 0xf9b54 __U4M.asm:97
+ db 08bh, 0c7h
+ ; mov ax, di ; 8b c7 ; 0xf9b56 __U4M.asm:98
+ pop di ; 5f ; 0xf9b58 __U4M.asm:100
+ pop si ; 5e ; 0xf9b59 __U4M.asm:101
+ popfw ; 9d ; 0xf9b5a __U4M.asm:103
+ retn ; c3 ; 0xf9b5b __U4M.asm:104
+ times 0x4 db 0
+ ; disGetNextSymbol 0xf9b60 LB 0x368 -> off=0x0 cb=0000000000000030 uValue=00000000000f8560 '__U4D'
+__U4D: ; 0xf9b60 LB 0x30
+ pushfw ; 9c ; 0xf9b60 __U4D.asm:44
+ test cx, cx ; 85 c9 ; 0xf9b61 __U4D.asm:77
+ jne short 09b6dh ; 75 08 ; 0xf9b63 __U4D.asm:78
+ div bx ; f7 f3 ; 0xf9b65 __U4D.asm:80
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xf9b67 __U4D.asm:82
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf9b69 __U4D.asm:84
+ popfw ; 9d ; 0xf9b6b __U4D.asm:86
+ retn ; c3 ; 0xf9b6c __U4D.asm:87
+ push DS ; 1e ; 0xf9b6d __U4D.asm:91
+ push ES ; 06 ; 0xf9b6e __U4D.asm:92
+ push bp ; 55 ; 0xf9b6f __U4D.asm:99
+ sub sp, strict byte 00004h ; 83 ec 04 ; 0xf9b70 __U4D.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xf9b73 __U4D.asm:101
+ push SS ; 16 ; 0xf9b75 __U4D.asm:104
+ push bp ; 55 ; 0xf9b76 __U4D.asm:105
+ add bp, strict byte 00004h ; 83 c5 04 ; 0xf9b77 __U4D.asm:106
+ push cx ; 51 ; 0xf9b7a __U4D.asm:109
+ push bx ; 53 ; 0xf9b7b __U4D.asm:110
+ push dx ; 52 ; 0xf9b7c __U4D.asm:113
+ push ax ; 50 ; 0xf9b7d __U4D.asm:114
+ call 09c45h ; e8 c4 00 ; 0xf9b7e __U4D.asm:116
+ mov cx, word [bp-002h] ; 8b 4e fe ; 0xf9b81 __U4D.asm:119
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xf9b84 __U4D.asm:120
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xf9b87 __U4D.asm:124
+ pop bp ; 5d ; 0xf9b89 __U4D.asm:125
+ pop ES ; 07 ; 0xf9b8a __U4D.asm:126
+ pop DS ; 1f ; 0xf9b8b __U4D.asm:127
+ popfw ; 9d ; 0xf9b8c __U4D.asm:129
+ retn ; c3 ; 0xf9b8d __U4D.asm:130
+ times 0x2 db 0
+ ; disGetNextSymbol 0xf9b90 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f8590 '__U8RS'
+__U8RS: ; 0xf9b90 LB 0x10
+ test si, si ; 85 f6 ; 0xf9b90 __U8RS.asm:40
+ je short 09b9fh ; 74 0b ; 0xf9b92 __U8RS.asm:41
+ shr ax, 1 ; d1 e8 ; 0xf9b94 __U8RS.asm:43
+ rcr bx, 1 ; d1 db ; 0xf9b96 __U8RS.asm:44
+ rcr cx, 1 ; d1 d9 ; 0xf9b98 __U8RS.asm:45
+ rcr dx, 1 ; d1 da ; 0xf9b9a __U8RS.asm:46
+ dec si ; 4e ; 0xf9b9c __U8RS.asm:47
+ jne short 09b94h ; 75 f5 ; 0xf9b9d __U8RS.asm:48
+ retn ; c3 ; 0xf9b9f __U8RS.asm:50
+ ; disGetNextSymbol 0xf9ba0 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f85a0 '__U8LS'
+__U8LS: ; 0xf9ba0 LB 0x10
+ test si, si ; 85 f6 ; 0xf9ba0 __U8LS.asm:40
+ je short 09bafh ; 74 0b ; 0xf9ba2 __U8LS.asm:41
+ sal dx, 1 ; d1 e2 ; 0xf9ba4 __U8LS.asm:43
+ rcl cx, 1 ; d1 d1 ; 0xf9ba6 __U8LS.asm:44
+ rcl bx, 1 ; d1 d3 ; 0xf9ba8 __U8LS.asm:45
+ rcl ax, 1 ; d1 d0 ; 0xf9baa __U8LS.asm:46
+ dec si ; 4e ; 0xf9bac __U8LS.asm:47
+ jne short 09ba4h ; 75 f5 ; 0xf9bad __U8LS.asm:48
+ retn ; c3 ; 0xf9baf __U8LS.asm:50
+ ; disGetNextSymbol 0xf9bb0 LB 0x318 -> off=0x0 cb=0000000000000010 uValue=00000000000f85b0 '_fmemset_'
+_fmemset_: ; 0xf9bb0 LB 0x10
+ push di ; 57 ; 0xf9bb0 fmemset.asm:42
+ mov es, dx ; 8e c2 ; 0xf9bb1 fmemset.asm:44
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xf9bb3 fmemset.asm:45
+ xchg al, bl ; 86 d8 ; 0xf9bb5 fmemset.asm:46
+ rep stosb ; f3 aa ; 0xf9bb7 fmemset.asm:47
+ xchg al, bl ; 86 d8 ; 0xf9bb9 fmemset.asm:48
+ pop di ; 5f ; 0xf9bbb fmemset.asm:50
+ retn ; c3 ; 0xf9bbc fmemset.asm:51
+ times 0x3 db 0
+ ; disGetNextSymbol 0xf9bc0 LB 0x308 -> off=0x0 cb=000000000000003a uValue=00000000000f85c0 '_fmemcpy_'
+_fmemcpy_: ; 0xf9bc0 LB 0x3a
+ push bp ; 55 ; 0xf9bc0 fmemcpy.asm:42
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xf9bc1 fmemcpy.asm:43
+ push di ; 57 ; 0xf9bc3 fmemcpy.asm:44
+ push DS ; 1e ; 0xf9bc4 fmemcpy.asm:45
+ push si ; 56 ; 0xf9bc5 fmemcpy.asm:46
+ mov es, dx ; 8e c2 ; 0xf9bc6 fmemcpy.asm:48
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xf9bc8 fmemcpy.asm:49
+ mov ds, cx ; 8e d9 ; 0xf9bca fmemcpy.asm:50
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xf9bcc fmemcpy.asm:51
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9bce fmemcpy.asm:52
+ rep movsb ; f3 a4 ; 0xf9bd1 fmemcpy.asm:53
+ pop si ; 5e ; 0xf9bd3 fmemcpy.asm:55
+ pop DS ; 1f ; 0xf9bd4 fmemcpy.asm:56
+ pop di ; 5f ; 0xf9bd5 fmemcpy.asm:57
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xf9bd6 fmemcpy.asm:58
+ pop bp ; 5d ; 0xf9bd8 fmemcpy.asm:59
+ retn ; c3 ; 0xf9bd9 fmemcpy.asm:60
+ add byte [bx+si], al ; 00 00 ; 0xf9bda
+ add byte [bx+si], al ; 00 00 ; 0xf9bdc
+ add byte [bx+si], al ; 00 00 ; 0xf9bde
+ adc byte [si-063eeh], bl ; 10 9c 12 9c ; 0xf9be0
+ push SS ; 16 ; 0xf9be4
+ pushfw ; 9c ; 0xf9be5
+ push SS ; 16 ; 0xf9be6
+ pushfw ; 9c ; 0xf9be7
+ push SS ; 16 ; 0xf9be8
+ pushfw ; 9c ; 0xf9be9
+ sbb byte [si-063e8h], bl ; 18 9c 18 9c ; 0xf9bea
+ sbb bl, byte [si-063e2h] ; 1a 9c 1e 9c ; 0xf9bee
+ push DS ; 1e ; 0xf9bf2
+ pushfw ; 9c ; 0xf9bf3
+ and byte [si-063dbh], bl ; 20 9c 25 9c ; 0xf9bf4
+ daa ; 27 ; 0xf9bf8
+ pushfw ; 9c ; 0xf9bf9
+ ; disGetNextSymbol 0xf9bfa LB 0x2ce -> off=0x0 cb=000000000000003a uValue=00000000000085fa 'apm_worker'
+apm_worker: ; 0xf9bfa LB 0x3a
+ sti ; fb ; 0xf9bfa apm_pm.asm:56
+ push ax ; 50 ; 0xf9bfb apm_pm.asm:58
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xf9bfc apm_pm.asm:59
+ sub AL, strict byte 004h ; 2c 04 ; 0xf9bfe apm_pm.asm:60
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xf9c00 apm_pm.asm:61
+ sal bp, 1 ; d1 e5 ; 0xf9c02 apm_pm.asm:62
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xf9c04 apm_pm.asm:63
+ pop ax ; 58 ; 0xf9c06 apm_pm.asm:64
+ mov AH, strict byte 053h ; b4 53 ; 0xf9c07 apm_pm.asm:65
+ jnc short 09c30h ; 73 25 ; 0xf9c09 apm_pm.asm:66
+ jmp word [cs:bp-06420h] ; 2e ff a6 e0 9b ; 0xf9c0b apm_pm.asm:68
+ jmp short 09c2eh ; eb 1c ; 0xf9c10 apm_pm.asm:71
+ sti ; fb ; 0xf9c12 apm_pm.asm:74
+ hlt ; f4 ; 0xf9c13 apm_pm.asm:75
+ jmp short 09c2eh ; eb 18 ; 0xf9c14 apm_pm.asm:76
+ jmp short 09c2eh ; eb 16 ; 0xf9c16 apm_pm.asm:85
+ jmp short 09c30h ; eb 16 ; 0xf9c18 apm_pm.asm:91
+ mov AH, strict byte 080h ; b4 80 ; 0xf9c1a apm_pm.asm:94
+ jmp short 09c32h ; eb 14 ; 0xf9c1c apm_pm.asm:95
+ jmp short 09c30h ; eb 10 ; 0xf9c1e apm_pm.asm:100
+ mov ax, 00102h ; b8 02 01 ; 0xf9c20 apm_pm.asm:103
+ jmp short 09c2eh ; eb 09 ; 0xf9c23 apm_pm.asm:104
+ jmp short 09c2eh ; eb 07 ; 0xf9c25 apm_pm.asm:108
+ mov BL, strict byte 000h ; b3 00 ; 0xf9c27 apm_pm.asm:111
+ mov cx, strict word 00000h ; b9 00 00 ; 0xf9c29 apm_pm.asm:112
+ jmp short 09c2eh ; eb 00 ; 0xf9c2c apm_pm.asm:113
+ clc ; f8 ; 0xf9c2e apm_pm.asm:116
+ retn ; c3 ; 0xf9c2f apm_pm.asm:117
+ mov AH, strict byte 009h ; b4 09 ; 0xf9c30 apm_pm.asm:120
+ stc ; f9 ; 0xf9c32 apm_pm.asm:123
+ retn ; c3 ; 0xf9c33 apm_pm.asm:124
+ ; disGetNextSymbol 0xf9c34 LB 0x294 -> off=0x0 cb=0000000000000011 uValue=00000000000f8634 'apm_pm16_entry'
+apm_pm16_entry: ; 0xf9c34 LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xf9c34 apm_pm.asm:136
+ push DS ; 1e ; 0xf9c36 apm_pm.asm:142
+ push bp ; 55 ; 0xf9c37 apm_pm.asm:143
+ push CS ; 0e ; 0xf9c38 apm_pm.asm:145
+ pop bp ; 5d ; 0xf9c39 apm_pm.asm:146
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xf9c3a apm_pm.asm:147
+ mov ds, bp ; 8e dd ; 0xf9c3d apm_pm.asm:148
+ call 09bfah ; e8 b8 ff ; 0xf9c3f apm_pm.asm:150
+ pop bp ; 5d ; 0xf9c42 apm_pm.asm:152
+ pop DS ; 1f ; 0xf9c43 apm_pm.asm:153
+ retf ; cb ; 0xf9c44 apm_pm.asm:155
+ ; disGetNextSymbol 0xf9c45 LB 0x283 -> off=0x0 cb=0000000000000265 uValue=00000000000f8645 'DoUInt32Div'
+DoUInt32Div: ; 0xf9c45 LB 0x265
+ push bp ; 55 ; 0xf9c45 DoUInt32Div.c:28
+ mov bp, sp ; 89 e5 ; 0xf9c46
+ push si ; 56 ; 0xf9c48
+ push di ; 57 ; 0xf9c49
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xf9c4a
+ lds bx, [bp+00ch] ; c5 5e 0c ; 0xf9c4d
+ lea si, [bp+004h] ; 8d 76 04 ; 0xf9c50 DoUInt32Div.c:972
+ mov word [bp-010h], si ; 89 76 f0 ; 0xf9c53
+ mov [bp-00eh], ss ; 8c 56 f2 ; 0xf9c56
+ lea di, [bp+008h] ; 8d 7e 08 ; 0xf9c59
+ mov [bp-008h], ss ; 8c 56 f8 ; 0xf9c5c
+ lea si, [bp-01ch] ; 8d 76 e4 ; 0xf9c5f
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf9c62
+ mov [bp-00ah], ss ; 8c 56 f6 ; 0xf9c65
+ mov si, bx ; 89 de ; 0xf9c68
+ mov [bp-006h], ds ; 8c 5e fa ; 0xf9c6a
+ cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xf9c6d DoUInt32Div.c:980
+ jne short 09c95h ; 75 22 ; 0xf9c71
+ mov ax, word [bx] ; 8b 07 ; 0xf9c73 DoUInt32Div.c:982
+ test ax, ax ; 85 c0 ; 0xf9c75
+ je short 09c92h ; 74 19 ; 0xf9c77
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9c79 DoUInt32Div.c:985
+ jne short 09c95h ; 75 17 ; 0xf9c7c
+ xor ax, ax ; 31 c0 ; 0xf9c7e DoUInt32Div.c:67
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf9c80
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf9c83 DoUInt32Div.c:68
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9c86 DoUInt32Div.c:988
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf9c89
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9c8c
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf9c8f
+ jmp near 09e9dh ; e9 08 02 ; 0xf9c92
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9c95 DoUInt32Div.c:726
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9c98
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9c9b
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9c9e
+ je short 09cbbh ; 74 18 ; 0xf9ca1
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9ca3 DoUInt32Div.c:727
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9ca6
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9ca9
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9cac
+ jbe short 09cb6h ; 76 05 ; 0xf9caf
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9cb1
+ jmp short 09cdch ; eb 26 ; 0xf9cb4
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9cb6
+ jmp short 09cdch ; eb 21 ; 0xf9cb9
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9cbb DoUInt32Div.c:728
+ mov ax, word [bx] ; 8b 07 ; 0xf9cbe
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9cc0
+ cmp ax, word [si] ; 3b 04 ; 0xf9cc3
+ je short 09cdah ; 74 13 ; 0xf9cc5
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9cc7 DoUInt32Div.c:729
+ mov ax, word [bx] ; 8b 07 ; 0xf9cca
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9ccc
+ cmp ax, word [si] ; 3b 04 ; 0xf9ccf
+ jbe short 09cd5h ; 76 02 ; 0xf9cd1
+ jmp short 09cb1h ; eb dc ; 0xf9cd3
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9cd5
+ jmp short 09cdch ; eb 02 ; 0xf9cd8
+ xor ax, ax ; 31 c0 ; 0xf9cda DoUInt32Div.c:730
+ test ax, ax ; 85 c0 ; 0xf9cdc DoUInt32Div.c:996
+ jnl short 09cfeh ; 7d 1e ; 0xf9cde
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9ce0 DoUInt32Div.c:998
+ mov ax, word [bx] ; 8b 07 ; 0xf9ce3
+ mov dx, word [bx+002h] ; 8b 57 02 ; 0xf9ce5
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9ce8
+ mov word [di], ax ; 89 05 ; 0xf9ceb
+ mov word [di+002h], dx ; 89 55 02 ; 0xf9ced
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9cf0 DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9cf3
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9cf8 DoUInt32Div.c:68
+ jmp short 09c92h ; eb 94 ; 0xf9cfc DoUInt32Div.c:1003
+ jne short 09d15h ; 75 15 ; 0xf9cfe
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9d00 DoUInt32Div.c:67
+ mov word [di+002h], ax ; 89 45 02 ; 0xf9d03
+ mov word [di], ax ; 89 05 ; 0xf9d06 DoUInt32Div.c:68
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9d08 DoUInt32Div.c:397
+ mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xf9d0b
+ mov word [bx+002h], ax ; 89 47 02 ; 0xf9d0f DoUInt32Div.c:398
+ jmp near 09e9dh ; e9 88 01 ; 0xf9d12 DoUInt32Div.c:1008
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d15 DoUInt32Div.c:954
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d18
+ test ax, ax ; 85 c0 ; 0xf9d1b
+ je short 09d30h ; 74 11 ; 0xf9d1d
+ push ax ; 50 ; 0xf9d1f DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9d20
+ mov ds, ax ; 8e d8 ; 0xf9d23
+ call 09eb0h ; e8 88 01 ; 0xf9d25
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d28
+ add ax, strict word 00010h ; 05 10 00 ; 0xf9d2b
+ jmp short 09d3dh ; eb 0d ; 0xf9d2e DoUInt32Div.c:956
+ push word [bx] ; ff 37 ; 0xf9d30 DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9d32
+ mov ds, ax ; 8e d8 ; 0xf9d35
+ call 09eb0h ; e8 76 01 ; 0xf9d37
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d3a
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf9d3d DoUInt32Div.c:959
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d40 DoUInt32Div.c:954
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xf9d43
+ test ax, ax ; 85 c0 ; 0xf9d46
+ je short 09d5bh ; 74 11 ; 0xf9d48
+ push ax ; 50 ; 0xf9d4a DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9d4b
+ mov ds, ax ; 8e d8 ; 0xf9d4e
+ call 09eb0h ; e8 5d 01 ; 0xf9d50
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d53
+ add ax, strict word 00010h ; 05 10 00 ; 0xf9d56
+ jmp short 09d68h ; eb 0d ; 0xf9d59 DoUInt32Div.c:956
+ push word [si] ; ff 34 ; 0xf9d5b DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9d5d
+ mov ds, ax ; 8e d8 ; 0xf9d60
+ call 09eb0h ; e8 4b 01 ; 0xf9d62
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9d65
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9d68 DoUInt32Div.c:959
+ sub dx, ax ; 29 c2 ; 0xf9d6b
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf9d6d
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d70 DoUInt32Div.c:1014
+ mov ax, word [si] ; 8b 04 ; 0xf9d73
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9d75
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xf9d78
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9d7b
+ test dx, dx ; 85 d2 ; 0xf9d7e DoUInt32Div.c:1015
+ je short 09dd8h ; 74 56 ; 0xf9d80
+ mov cx, dx ; 89 d1 ; 0xf9d82 DoUInt32Div.c:280
+ xor ch, dh ; 30 f5 ; 0xf9d84
+ and cl, 01fh ; 80 e1 1f ; 0xf9d86
+ mov ax, word [si] ; 8b 04 ; 0xf9d89 DoUInt32Div.c:282
+ mov dx, word [si+002h] ; 8b 54 02 ; 0xf9d8b
+ jcxz 09d96h ; e3 06 ; 0xf9d8e
+ sal ax, 1 ; d1 e0 ; 0xf9d90
+ rcl dx, 1 ; d1 d2 ; 0xf9d92
+ loop 09d90h ; e2 fa ; 0xf9d94
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9d96
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf9d99
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9d9c DoUInt32Div.c:763
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d9f
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9da2
+ jnbe short 09db6h ; 77 0f ; 0xf9da5
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9da7
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9daa
+ jne short 09dbah ; 75 0b ; 0xf9dad
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9daf
+ cmp ax, word [bx] ; 3b 07 ; 0xf9db2
+ jbe short 09dbah ; 76 04 ; 0xf9db4
+ mov AL, strict byte 001h ; b0 01 ; 0xf9db6
+ jmp short 09dbch ; eb 02 ; 0xf9db8
+ xor al, al ; 30 c0 ; 0xf9dba
+ test al, al ; 84 c0 ; 0xf9dbc DoUInt32Div.c:769
+ je short 09de3h ; 74 23 ; 0xf9dbe
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xf9dc0 DoUInt32Div.c:680
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9dc3
+ dec word [bp-012h] ; ff 4e ee ; 0xf9dc6
+ jmp short 09de3h ; eb 18 ; 0xf9dc9
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9dcb DoUInt32Div.c:632
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9dce
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9dd1
+ loop 09dceh ; e2 f8 ; 0xf9dd4
+ jmp short 09dc6h ; eb ee ; 0xf9dd6 DoUInt32Div.c:647
+ mov ax, word [si] ; 8b 04 ; 0xf9dd8 DoUInt32Div.c:1025
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9dda
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xf9ddd
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9de0
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9de3 DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9de6
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9deb DoUInt32Div.c:68
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9def DoUInt32Div.c:1028
+ mov dx, word [bx] ; 8b 17 ; 0xf9df2
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9df4
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9df7
+ mov word [di], dx ; 89 15 ; 0xf9dfa
+ mov word [di+002h], ax ; 89 45 02 ; 0xf9dfc
+ mov dx, word [di] ; 8b 15 ; 0xf9dff DoUInt32Div.c:782
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9e01
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9e04
+ jnbe short 09e0fh ; 77 06 ; 0xf9e07
+ jne short 09e13h ; 75 08 ; 0xf9e09
+ cmp dx, word [si] ; 3b 14 ; 0xf9e0b
+ jc short 09e13h ; 72 04 ; 0xf9e0d
+ mov AL, strict byte 001h ; b0 01 ; 0xf9e0f
+ jmp short 09e15h ; eb 02 ; 0xf9e11
+ xor al, al ; 30 c0 ; 0xf9e13
+ test al, al ; 84 c0 ; 0xf9e15 DoUInt32Div.c:788
+ je short 09e7ah ; 74 61 ; 0xf9e17
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e19 DoUInt32Div.c:782
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xf9e1c
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9e1f
+ jnbe short 09e30h ; 77 0c ; 0xf9e22
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9e24
+ jne short 09e34h ; 75 0b ; 0xf9e27
+ mov ax, word [di] ; 8b 05 ; 0xf9e29
+ cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xf9e2b
+ jc short 09e34h ; 72 04 ; 0xf9e2e
+ mov AL, strict byte 001h ; b0 01 ; 0xf9e30
+ jmp short 09e36h ; eb 02 ; 0xf9e32
+ xor al, al ; 30 c0 ; 0xf9e34
+ test al, al ; 84 c0 ; 0xf9e36 DoUInt32Div.c:788
+ je short 09e60h ; 74 26 ; 0xf9e38
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9e3a DoUInt32Div.c:451
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e3d
+ sub word [di], ax ; 29 05 ; 0xf9e40
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9e42
+ sbb word [di+002h], ax ; 19 45 02 ; 0xf9e45
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9e48 DoUInt32Div.c:586
+ xor dx, dx ; 31 d2 ; 0xf9e4b
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9e4d
+ jcxz 09e58h ; e3 06 ; 0xf9e50
+ sal ax, 1 ; d1 e0 ; 0xf9e52
+ rcl dx, 1 ; d1 d2 ; 0xf9e54
+ loop 09e52h ; e2 fa ; 0xf9e56
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9e58
+ or word [bx], ax ; 09 07 ; 0xf9e5b
+ or word [bx+002h], dx ; 09 57 02 ; 0xf9e5d
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e60 DoUInt32Div.c:744
+ mov dx, word [di] ; 8b 15 ; 0xf9e63
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xf9e65
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9e68
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9e6b
+ jc short 09e76h ; 72 06 ; 0xf9e6e
+ jne short 09e7ch ; 75 0a ; 0xf9e70
+ cmp dx, word [si] ; 3b 14 ; 0xf9e72
+ jnc short 09e7ch ; 73 06 ; 0xf9e74
+ mov AL, strict byte 001h ; b0 01 ; 0xf9e76
+ jmp short 09e7eh ; eb 04 ; 0xf9e78
+ jmp short 09e9dh ; eb 21 ; 0xf9e7a
+ xor al, al ; 30 c0 ; 0xf9e7c
+ test al, al ; 84 c0 ; 0xf9e7e DoUInt32Div.c:750
+ je short 09e91h ; 74 0f ; 0xf9e80
+ jmp short 09e9dh ; eb 19 ; 0xf9e82 DoUInt32Div.c:1043
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9e84 DoUInt32Div.c:680
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9e87
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9e8a
+ loop 09e87h ; e2 f8 ; 0xf9e8d
+ jmp short 09e97h ; eb 06 ; 0xf9e8f DoUInt32Div.c:647
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xf9e91 DoUInt32Div.c:653
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9e94
+ dec word [bp-012h] ; ff 4e ee ; 0xf9e97 DoUInt32Div.c:1045
+ jmp near 09e19h ; e9 7c ff ; 0xf9e9a DoUInt32Div.c:1046
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9e9d DoUInt32Div.c:32
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf9ea0
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ea3 DoUInt32Div.c:33
+ pop di ; 5f ; 0xf9ea6
+ pop si ; 5e ; 0xf9ea7
+ pop bp ; 5d ; 0xf9ea8
+ retn ; c3 ; 0xf9ea9
+ ; disGetNextSymbol 0xf9eaa LB 0x1e -> off=0x6 cb=0000000000000018 uValue=00000000000f88b0 '_ASMBitLastSetU16'
+ db 000h, 000h, 000h, 000h, 000h, 000h
+_ASMBitLastSetU16: ; 0xf9eb0 LB 0x18
+ push bp ; 55 ; 0xf9eb0 ASMBitLastSetU16.asm:43
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xf9eb1 ASMBitLastSetU16.asm:44
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9eb3 ASMBitLastSetU16.asm:46
+ test cx, cx ; 85 c9 ; 0xf9eb6 ASMBitLastSetU16.asm:47
+ je short 09ec4h ; 74 0a ; 0xf9eb8 ASMBitLastSetU16.asm:48
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf9eba ASMBitLastSetU16.asm:50
+ sal cx, 1 ; d1 e1 ; 0xf9ebd ASMBitLastSetU16.asm:52
+ jc short 09ec6h ; 72 05 ; 0xf9ebf ASMBitLastSetU16.asm:53
+ dec ax ; 48 ; 0xf9ec1 ASMBitLastSetU16.asm:54
+ jmp short 09ebdh ; eb f9 ; 0xf9ec2 ASMBitLastSetU16.asm:55
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf9ec4 ASMBitLastSetU16.asm:58
+ pop bp ; 5d ; 0xf9ec6 ASMBitLastSetU16.asm:60
+ retn ; c3 ; 0xf9ec7 ASMBitLastSetU16.asm:61
+
+ ; Padding 0x3b38 bytes at 0xf9ec8
+ times 15160 db 0
+
+section BIOS32 progbits vstart=0xda00 align=1 ; size=0x39d class=CODE group=AUTO
+ ; disGetNextSymbol 0xfda00 LB 0x39d -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service'
+bios32_service: ; 0xfda00 LB 0x26
+ pushfw ; 9c ; 0xfda00 pcibio32.asm:52
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61
+ db 00fh
+ add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13
+ add byte [bx+si], al ; 00 00 ; 0xfda17
+ mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64
+ popfw ; 9d ; 0xfda20 pcibio32.asm:66
+ retf ; cb ; 0xfda21 pcibio32.asm:67
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71
+ ; disGetNextSymbol 0xfda26 LB 0x377 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0xd
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:80
+ cld ; fc ; 0xfda27 pcibio32.asm:81
+ push ES ; 06 ; 0xfda28 pcibio32.asm:83
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:84
+ call 0db4ah ; e8 1d 01 ; 0xfda2a pcibio32.asm:85
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:86
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:87
+ popfw ; 9d ; 0xfda31 pcibio32.asm:89
+ retf ; cb ; 0xfda32 pcibio32.asm:90
+ ; disGetNextSymbol 0xfda33 LB 0x36a -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda33 LB 0x22
+ push bp ; 55 ; 0xfda33 pci32.c:188
+ mov bp, sp ; 89 e5 ; 0xfda34
+ push bx ; 53 ; 0xfda36
+ and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:190
+ mov bx, dx ; 89 d3 ; 0xfda3a
+ mov dx, 00cf8h ; ba f8 0c ; 0xfda3c
+ add byte [bx+si], al ; 00 00 ; 0xfda3f
+ db 00fh, 0b7h, 0c0h
+ ; movzx ax, ax ; 0f b7 c0 ; 0xfda41
+ sal ax, 008h ; c1 e0 08 ; 0xfda44
+ or ax, strict word 00000h ; 0d 00 00 ; 0xfda47
+ add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda4a
+ out DX, ax ; ef ; 0xfda4e
+ lea sp, [di-004h] ; 8d 65 fc ; 0xfda4f pci32.c:191
+ pop bx ; 5b ; 0xfda52
+ pop bp ; 5d ; 0xfda53
+ retn ; c3 ; 0xfda54
+ ; disGetNextSymbol 0xfda55 LB 0x348 -> off=0x0 cb=00000000000000f7 uValue=00000000000f0055 'pci32_find_device_'
+pci32_find_device_: ; 0xfda55 LB 0xf7
+ push bp ; 55 ; 0xfda55 pci32.c:221
+ mov bp, sp ; 89 e5 ; 0xfda56
+ push cx ; 51 ; 0xfda58
+ push si ; 56 ; 0xfda59
+ push di ; 57 ; 0xfda5a
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5b
+ push ax ; 50 ; 0xfda5e
+ mov cx, dx ; 89 d1 ; 0xfda5f
+ mov si, bx ; 89 de ; 0xfda61
+ test bx, bx ; 85 db ; 0xfda63 pci32.c:231
+ xor bx, bx ; 31 db ; 0xfda65 pci32.c:238
+ mov byte [di-010h], 000h ; c6 45 f0 00 ; 0xfda67 pci32.c:239
+ test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:249
+ jne short 0daa6h ; 75 36 ; 0xfda6e
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:250
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfda73
+ add byte [bx+si], al ; 00 00 ; 0xfda76
+ call 0da31h ; e8 b6 ff ; 0xfda78
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfda7d pci32.c:251
+ add byte [bx+si], al ; 00 00 ; 0xfda80
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfda82
+ in AL, DX ; ec ; 0xfda84
+ mov byte [di-014h], al ; 88 45 ec ; 0xfda85
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:252
+ jne short 0da94h ; 75 08 ; 0xfda8a
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:253
+ jmp near 0db1ch ; e9 8a 00 ; 0xfda8f pci32.c:254
+ add byte [bx+si], al ; 00 00 ; 0xfda92
+ test byte [di-014h], 080h ; f6 45 ec 80 ; 0xfda94 pci32.c:256
+ je short 0daa1h ; 74 07 ; 0xfda98
+ mov di, strict word 00001h ; bf 01 00 ; 0xfda9a pci32.c:257
+ add byte [bx+si], al ; 00 00 ; 0xfda9d
+ jmp short 0daa6h ; eb 05 ; 0xfda9f pci32.c:258
+ mov di, strict word 00008h ; bf 08 00 ; 0xfdaa1 pci32.c:259
+ add byte [bx+si], al ; 00 00 ; 0xfdaa4
+ mov al, byte [di-014h] ; 8a 45 ec ; 0xfdaa6 pci32.c:270
+ and AL, strict byte 007h ; 24 07 ; 0xfdaa9
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfdaab
+ jne short 0dad5h ; 75 26 ; 0xfdaad
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdaaf
+ mov dx, ax ; 89 c2 ; 0xfdab2
+ sar dx, 008h ; c1 fa 08 ; 0xfdab4
+ test dx, dx ; 85 d2 ; 0xfdab7
+ jne short 0dad5h ; 75 1a ; 0xfdab9
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabb pci32.c:272
+ add byte [bx+si], al ; 00 00 ; 0xfdabe
+ call 0da31h ; e8 6e ff ; 0xfdac0
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfdac5 pci32.c:273
+ add byte [bx+si], al ; 00 00 ; 0xfdac8
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdaca
+ in AL, DX ; ec ; 0xfdacc
+ cmp al, byte [di-010h] ; 3a 45 f0 ; 0xfdacd pci32.c:274
+ jbe short 0dad5h ; 76 03 ; 0xfdad0
+ mov byte [di-010h], al ; 88 45 f0 ; 0xfdad2 pci32.c:275
+ test si, si ; 85 f6 ; 0xfdad5 pci32.c:279
+ je short 0dae0h ; 74 07 ; 0xfdad7
+ mov ax, strict word 00008h ; b8 08 00 ; 0xfdad9
+ add byte [bx+si], al ; 00 00 ; 0xfdadc
+ jmp short 0dae2h ; eb 02 ; 0xfdade
+ xor ax, ax ; 31 c0 ; 0xfdae0
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdae2
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdae5
+ call 0da31h ; e8 46 ff ; 0xfdae8
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfch ; ba fc 0c ; 0xfdaed pci32.c:280
+ add byte [bx+si], al ; 00 00 ; 0xfdaf0
+ in ax, DX ; ed ; 0xfdaf2
+ mov word [di-018h], ax ; 89 45 e8 ; 0xfdaf3
+ mov word [di-020h], strict word 00000h ; c7 45 e0 00 00 ; 0xfdaf6 pci32.c:281
+ add byte [bx+si], al ; 00 00 ; 0xfdafb
+ test si, si ; 85 f6 ; 0xfdafd pci32.c:284
+ je short 0db07h ; 74 06 ; 0xfdaff
+ shr ax, 008h ; c1 e8 08 ; 0xfdb01 pci32.c:285
+ mov word [di-018h], ax ; 89 45 e8 ; 0xfdb04
+ mov ax, word [di-018h] ; 8b 45 e8 ; 0xfdb07 pci32.c:292
+ cmp ax, word [di-024h] ; 3b 45 dc ; 0xfdb0a
+ je short 0db15h ; 74 06 ; 0xfdb0d
+ cmp word [di-020h], strict byte 00000h ; 83 7d e0 00 ; 0xfdb0f pci32.c:293
+ je short 0db1ch ; 74 07 ; 0xfdb13
+ dec cx ; 49 ; 0xfdb15
+ cmp ecx, strict byte 0ffffffffh ; 66 83 f9 ff ; 0xfdb16
+ je short 0db34h ; 74 18 ; 0xfdb1a
+ add bx, di ; 01 fb ; 0xfdb1c pci32.c:301
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb1e pci32.c:302
+ sar ax, 008h ; c1 f8 08 ; 0xfdb21
+ mov word [di-01ch], ax ; 89 45 e4 ; 0xfdb24
+ movzx ax, byte [di-010h] ; 0f b6 45 f0 ; 0xfdb27
+ cmp ax, word [di-01ch] ; 3b 45 e4 ; 0xfdb2b
+ jnl near 0da69h ; 0f 8d 37 ff ; 0xfdb2e
+ db 0ffh
+ jmp word [bp-07dh] ; ff 66 83 ; 0xfdb33
+ stc ; f9 ; 0xfdb36
+ push word [di+005h] ; ff 75 05 ; 0xfdb37
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb3a
+ jmp short 0db44h ; eb 05 ; 0xfdb3d
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb3f
+ add byte [bx+si], al ; 00 00 ; 0xfdb42
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdb44 pci32.c:309
+ pop di ; 5f ; 0xfdb47
+ pop si ; 5e ; 0xfdb48
+ pop cx ; 59 ; 0xfdb49
+ pop bp ; 5d ; 0xfdb4a
+ retn ; c3 ; 0xfdb4b
+ ; disGetNextSymbol 0xfdb4c LB 0x251 -> off=0x0 cb=0000000000000251 uValue=00000000000f014c '_pci32_function'
+_pci32_function: ; 0xfdb4c LB 0x251
+ push bp ; 55 ; 0xfdb4c pci32.c:311
+ mov bp, sp ; 89 e5 ; 0xfdb4d
+ push bx ; 53 ; 0xfdb4f
+ push si ; 56 ; 0xfdb50
+ push di ; 57 ; 0xfdb51
+ push ax ; 50 ; 0xfdb52
+ push ax ; 50 ; 0xfdb53
+ and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb54 pci32.c:318
+ sub AL, strict byte 0feh ; 2c fe ; 0xfdb5c
+ inc word [bx+si] ; ff 00 ; 0xfdb5e
+ add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb60
+ xor ah, ah ; 30 e4 ; 0xfdb64
+ cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb66
+ jbe near 0dc09h ; 0f 86 99 00 ; 0xfdb6c
+ add byte [bx+si], al ; 00 00 ; 0xfdb70
+ cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb72
+ test ax, strict word 00001h ; a9 01 00 ; 0xfdb78
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb7b
+ or byte [bx+si], al ; 08 00 ; 0xfdb7e
+ jc near 0dd83h ; 0f 82 ff 01 ; 0xfdb80
+ add byte [bx+si], al ; 00 00 ; 0xfdb84
+ cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb86
+ test AL, strict byte 000h ; a8 00 ; 0xfdb8c
+ add byte [bx+si], al ; 00 00 ; 0xfdb8e
+ jmp near 0dd83h ; e9 f0 01 ; 0xfdb90
+ add byte [bx+si], al ; 00 00 ; 0xfdb93
+ cmp eax, strict dword 028740002h ; 66 3d 02 00 74 28 ; 0xfdb95
+ cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdb9b
+ loopne 0dba4h ; e0 01 ; 0xfdba1
+ add byte [bx+si], al ; 00 00 ; 0xfdba3
+ mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdba5 pci32.c:323
+ inc bp ; 45 ; 0xfdbad
+ sbb byte [bx+si], dl ; 18 10 ; 0xfdbae
+ add dh, byte [bx+di] ; 02 31 ; 0xfdbb0
+ sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb2
+ and bh, al ; 20 c7 ; 0xfdbb6
+ inc bp ; 45 ; 0xfdbb8
+ sbb AL, strict byte 050h ; 1c 50 ; 0xfdbb9
+ inc bx ; 43 ; 0xfdbbb
+ dec cx ; 49 ; 0xfdbbc
+ and cl, ch ; 20 e9 ; 0xfdbbd
+ rol byte [bx+di], CL ; d2 01 ; 0xfdbbf
+ add byte [bx+si], al ; 00 00 ; 0xfdbc1
+ cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbc3 pci32.c:333
+ jne short 0dbd7h ; 75 0d ; 0xfdbc8
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbca pci32.c:334
+ xor ah, ah ; 30 e4 ; 0xfdbcd
+ or ah, 083h ; 80 cc 83 ; 0xfdbcf
+ jmp near 0dd8bh ; e9 b6 01 ; 0xfdbd2 pci32.c:335
+ add byte [bx+si], al ; 00 00 ; 0xfdbd5
+ xor bx, bx ; 31 db ; 0xfdbd7 pci32.c:337
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbd9
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbdd
+ sal ax, 010h ; c1 e0 10 ; 0xfdbe1
+ db 00fh, 0b7h, 04dh, 01ch
+ ; movzx cx, [di+01ch] ; 0f b7 4d 1c ; 0xfdbe4
+ or ax, cx ; 09 c8 ; 0xfdbe8
+ call 0da53h ; e8 66 fe ; 0xfdbea
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdbee
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdbf2
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbf5 pci32.c:339
+ xor ah, ah ; 30 e4 ; 0xfdbf8
+ or ah, 086h ; 80 cc 86 ; 0xfdbfa
+ jmp near 0dd8bh ; e9 8b 01 ; 0xfdbfd
+ add byte [bx+si], al ; 00 00 ; 0xfdc00
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc02 pci32.c:340
+ jmp near 0dd93h ; e9 8a 01 ; 0xfdc06 pci32.c:345
+ add byte [bx+si], al ; 00 00 ; 0xfdc09
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc0b pci32.c:347
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc0f
+ mov bx, strict word 00001h ; bb 01 00 ; 0xfdc12
+ add byte [bx+si], al ; 00 00 ; 0xfdc15
+ call 0da53h ; e8 39 fe ; 0xfdc17
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc1b
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc1f
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc22 pci32.c:349
+ xor ah, ah ; 30 e4 ; 0xfdc25
+ or ah, 086h ; 80 cc 86 ; 0xfdc27
+ jmp near 0dd8bh ; e9 5e 01 ; 0xfdc2a pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdc2d
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc2f pci32.c:352
+ jmp near 0dd93h ; e9 5d 01 ; 0xfdc33 pci32.c:354
+ add byte [bx+si], al ; 00 00 ; 0xfdc36
+ cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc38 pci32.c:361
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc40 pci32.c:362
+ xor ah, ah ; 30 e4 ; 0xfdc43
+ or ah, 087h ; 80 cc 87 ; 0xfdc45
+ jmp near 0dd8bh ; e9 40 01 ; 0xfdc48 pci32.c:363
+ add byte [bx+si], al ; 00 00 ; 0xfdc4b
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc4d pci32.c:365
+ db 00fh, 0b7h, 045h, 018h
+ ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc51
+ call 0da31h ; e8 d9 fd ; 0xfdc55
+ db 0ffh
+ dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc59
+ xor ah, ah ; 30 e4 ; 0xfdc5d
+ cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc5f
+ jbe short 0dcd6h ; 76 6f ; 0xfdc65
+ cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc67
+ test ax, strict word 00000h ; a9 00 00 ; 0xfdc6d
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc70
+ or AL, strict byte 000h ; 0c 00 ; 0xfdc73
+ je near 0dcfch ; 0f 84 83 00 ; 0xfdc75
+ add byte [bx+si], al ; 00 00 ; 0xfdc79
+ cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc7b
+ jmp near 0dd93h ; e9 0f 01 ; 0xfdc81
+ add byte [bx+si], al ; 00 00 ; 0xfdc84
+ cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc86
+ cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc8c
+ inc word [bx+si] ; ff 00 ; 0xfdc92
+ add byte [bx+si], al ; 00 00 ; 0xfdc94
+ mov bx, word [di+020h] ; 8b 5d 20 ; 0xfdc96 pci32.c:368
+ xor bl, bl ; 30 db ; 0xfdc99
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdc9b
+ xor ah, ah ; 30 e4 ; 0xfdc9e
+ and AL, strict byte 003h ; 24 03 ; 0xfdca0
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdca2
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdca5
+ add byte [bx+si], al ; 00 00 ; 0xfdca9
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcab
+ in AL, DX ; ec ; 0xfdcad
+ or bx, ax ; 09 c3 ; 0xfdcae
+ mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcb0
+ jmp near 0dd93h ; e9 dc 00 ; 0xfdcb4 pci32.c:369
+ add byte [bx+si], al ; 00 00 ; 0xfdcb7
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcb9 pci32.c:371
+ xor ah, ah ; 30 e4 ; 0xfdcbc
+ and AL, strict byte 002h ; 24 02 ; 0xfdcbe
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcc0
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcc3
+ add byte [bx+si], al ; 00 00 ; 0xfdcc7
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcc9
+ in eax, DX ; 66 ed ; 0xfdccb
+ mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdccd
+ jmp near 0dd93h ; e9 bf 00 ; 0xfdcd1 pci32.c:372
+ add byte [bx+si], al ; 00 00 ; 0xfdcd4
+ mov dx, 00cfch ; ba fc 0c ; 0xfdcd6 pci32.c:374
+ add byte [bx+si], al ; 00 00 ; 0xfdcd9
+ in ax, DX ; ed ; 0xfdcdb
+ mov word [di+020h], ax ; 89 45 20 ; 0xfdcdc
+ jmp near 0dd93h ; e9 b1 00 ; 0xfdcdf pci32.c:375
+ add byte [bx+si], al ; 00 00 ; 0xfdce2
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdce4 pci32.c:377
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdce7
+ xor dh, dh ; 30 f6 ; 0xfdcea
+ and dl, 003h ; 80 e2 03 ; 0xfdcec
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdcef
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcf2
+ add byte [bx+si], al ; 00 00 ; 0xfdcf6
+ out DX, AL ; ee ; 0xfdcf8
+ jmp near 0dd93h ; e9 97 00 ; 0xfdcf9 pci32.c:378
+ add byte [bx+si], al ; 00 00 ; 0xfdcfc
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdcfe pci32.c:380
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd02
+ xor dh, dh ; 30 f6 ; 0xfdd05
+ and dl, 002h ; 80 e2 02 ; 0xfdd07
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd0a
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd0d
+ add byte [bx+si], al ; 00 00 ; 0xfdd11
+ out DX, eax ; 66 ef ; 0xfdd13
+ jmp near 0dd93h ; e9 7b 00 ; 0xfdd15 pci32.c:381
+ add byte [bx+si], al ; 00 00 ; 0xfdd18
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd1a pci32.c:383
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd1d
+ add byte [bx+si], al ; 00 00 ; 0xfdd20
+ out DX, ax ; ef ; 0xfdd22
+ jmp short 0dd95h ; eb 70 ; 0xfdd23 pci32.c:387
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd25 pci32.c:389
+ mov es, [di+028h] ; 8e 45 28 ; 0xfdd29
+ mov [di-010h], es ; 8c 45 f0 ; 0xfdd2c
+ mov bx, ax ; 89 c3 ; 0xfdd2f
+ mov edx, dword [di] ; 66 8b 15 ; 0xfdd31 pci32.c:393
+ xor bl, 000h ; 80 f3 00 ; 0xfdd34
+ add byte [bp+026h], ah ; 00 66 26 ; 0xfdd37
+ cmp dx, word [bx+si] ; 3b 10 ; 0xfdd3a
+ jbe short 0dd50h ; 76 12 ; 0xfdd3c
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd3e pci32.c:394
+ xor ah, ah ; 30 e4 ; 0xfdd41
+ or ah, 089h ; 80 cc 89 ; 0xfdd43
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd46
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd4a pci32.c:395
+ jmp short 0dd76h ; eb 26 ; 0xfdd4e pci32.c:396
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd50 pci32.c:397
+ db 066h, 026h, 08bh, 050h, 006h
+ ; mov edx, dword [es:bx+si+006h] ; 66 26 8b 50 06 ; 0xfdd53
+ mov word [di-014h], dx ; 89 55 ec ; 0xfdd58
+ mov di, word [es:bx+si+002h] ; 26 8b 78 02 ; 0xfdd5b
+ mov dx, ds ; 8c da ; 0xfdd5f
+ mov si, 0f1a0h ; be a0 f1 ; 0xfdd61
+ add byte [bx+si], al ; 00 00 ; 0xfdd64
+ mov es, [di-014h] ; 8e 45 ec ; 0xfdd66
+ push DS ; 1e ; 0xfdd69
+ db 066h, 08eh, 0dah
+ ; mov ds, edx ; 66 8e da ; 0xfdd6a
+ rep movsb ; f3 a4 ; 0xfdd6d
+ pop DS ; 1f ; 0xfdd6f
+ mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd70 pci32.c:399
+ xor bl, 000h ; 80 f3 00 ; 0xfdd78
+ add byte [bp-00fbbh], cl ; 00 8e 45 f0 ; 0xfdd7b
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd7f
+ jmp short 0dd95h ; eb 10 ; 0xfdd83 pci32.c:402
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd85 pci32.c:405
+ xor ah, ah ; 30 e4 ; 0xfdd88
+ or ah, 081h ; 80 cc 81 ; 0xfdd8a
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd8d
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd91 pci32.c:406
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd95 pci32.c:408
+ pop di ; 5f ; 0xfdd98
+ pop si ; 5e ; 0xfdd99
+ pop bx ; 5b ; 0xfdd9a
+ pop bp ; 5d ; 0xfdd9b
+ retn ; c3 ; 0xfdd9c
+
+ ; Padding 0x3 bytes at 0xfdd9d
+ times 3 db 0
+
+section BIOS32CONST progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32CONST2 progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32_DATA progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+ ; Padding 0x260 bytes at 0xfdda0
+ times 608 db 0
+
+section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO
+ ; disGetNextSymbol 0xfe000 LB 0x2000 -> off=0x0 cb=0000000000000030 uValue=00000000000f0000 'biosorg_check_before_or_at_0E02Eh'
+biosorg_check_before_or_at_0E02Eh: ; 0xfe000 LB 0x30
+ times 0x2e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe030 LB 0x1fd0 -> off=0x0 cb=0000000000000004 uValue=00000000000f0030 'eoi_both_pics'
+eoi_both_pics: ; 0xfe030 LB 0x4
+ mov AL, strict byte 020h ; b0 20 ; 0xfe030 orgs.asm:238
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:239
+ ; disGetNextSymbol 0xfe034 LB 0x1fcc -> off=0x0 cb=0000000000000005 uValue=00000000000f0034 'eoi_master_pic'
+eoi_master_pic: ; 0xfe034 LB 0x5
+ mov AL, strict byte 020h ; b0 20 ; 0xfe034 orgs.asm:241
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:242
+ retn ; c3 ; 0xfe038 orgs.asm:243
+ ; disGetNextSymbol 0xfe039 LB 0x1fc7 -> off=0x0 cb=000000000000000b uValue=0000000000000039 'set_int_vects'
+set_int_vects: ; 0xfe039 LB 0xb
+ mov word [bx], ax ; 89 07 ; 0xfe039 orgs.asm:250
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:251
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:252
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:253
+ retn ; c3 ; 0xfe043 orgs.asm:254
+ ; disGetNextSymbol 0xfe044 LB 0x1fbc -> off=0x0 cb=0000000000000006 uValue=00000000000f0044 'eoi_jmp_post'
+eoi_jmp_post: ; 0xfe044 LB 0x6
+ in AL, strict byte 060h ; e4 60 ; 0xfe044 orgs.asm:262
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:263
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:264
+ ; disGetNextSymbol 0xfe04a LB 0x1fb6 -> off=0x0 cb=0000000000000009 uValue=00000000000f004a 'no_eoi_jmp_post'
+no_eoi_jmp_post: ; 0xfe04a LB 0x9
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe04a orgs.asm:267
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:268
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:269
+ ; disGetNextSymbol 0xfe053 LB 0x1fad -> off=0x0 cb=0000000000000002 uValue=00000000000f0053 'seg_40_value'
+seg_40_value: ; 0xfe053 LB 0x2
+ inc ax ; 40 ; 0xfe053
+ times 0x1 db 0
+ ; disGetNextSymbol 0xfe055 LB 0x1fab -> off=0x0 cb=0000000000000006 uValue=00000000000f0055 'biosorg_check_before_or_at_0E059h'
+biosorg_check_before_or_at_0E059h: ; 0xfe055 LB 0x6
+ add byte [bx+si], al ; 00 00 ; 0xfe055
+ add byte [bx+si], al ; 00 00 ; 0xfe057
+ pop ax ; 58 ; 0xfe059
+ dec bp ; 4d ; 0xfe05a
+ ; disGetNextSymbol 0xfe05b LB 0x1fa5 -> off=0x0 cb=000000000000006e uValue=00000000000f005b 'post'
+post: ; 0xfe05b LB 0x6e
+ cli ; fa ; 0xfe05b orgs.asm:278
+ smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:284
+ test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:285
+ je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:286
+ mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:295
+ out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:296
+ jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:297
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:302
+ out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:303
+ in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:304
+ xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:307
+ in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:311
+ test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:312
+ je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:313
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:316
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:317
+ jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:318
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:324
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:325
+ jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:326
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:330
+ out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:331
+ mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:332
+ out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:333
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:337
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:338
+ je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:339
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:340
+ je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:341
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:343
+ out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:346
+ out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:347
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:350
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:351
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:352
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:353
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:357
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:358
+ je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:359
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:361
+ jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:362
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:363
+ jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:364
+ jmp near 0e350h ; e9 94 02 ; 0xfe0b9 orgs.asm:365
+ mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:368
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:370
+ je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:371
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:373
+ je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:374
+ jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:378
+ ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001ed uValue=00000000000f00c9 'normal_post'
+normal_post: ; 0xfe0c9 LB 0x1ed
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:387
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:388
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:389
+ mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:390
+ mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:391
+ mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:395
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:396
+ cld ; fc ; 0xfe0d8 orgs.asm:397
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:398
+ rep stosw ; f3 ab ; 0xfe0dc orgs.asm:399
+ inc di ; 47 ; 0xfe0de orgs.asm:400
+ inc di ; 47 ; 0xfe0df orgs.asm:401
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:402
+ rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:403
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:407
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:409
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:410
+ jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:411
+ mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:412
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:413
+ mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:414
+ rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:415
+ jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:416
+ mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:418
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:419
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:420
+ rep stosw ; f3 ab ; 0xfe103 orgs.asm:421
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:422
+ push CS ; 0e ; 0xfe107 orgs.asm:104
+ pop DS ; 1f ; 0xfe108 orgs.asm:105
+ cld ; fc ; 0xfe109 orgs.asm:106
+ call 0170dh ; e8 00 36 ; 0xfe10a orgs.asm:426
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe10d orgs.asm:433
+ mov ds, bx ; 8e db ; 0xfe10f orgs.asm:434
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe111 orgs.asm:435
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe114 orgs.asm:436
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe117 orgs.asm:437
+ call 0e039h ; e8 1c ff ; 0xfe11a orgs.asm:438
+ mov bx, 001a0h ; bb a0 01 ; 0xfe11d orgs.asm:443
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe120 orgs.asm:444
+ call 0e039h ; e8 13 ff ; 0xfe123 orgs.asm:445
+ mov ax, 0027fh ; b8 7f 02 ; 0xfe126 orgs.asm:448
+ mov word [00413h], ax ; a3 13 04 ; 0xfe129 orgs.asm:449
+ mov ax, 0e9cch ; b8 cc e9 ; 0xfe12c orgs.asm:95
+ mov word [00018h], ax ; a3 18 00 ; 0xfe12f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe132 orgs.asm:97
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe135 orgs.asm:98
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe138 orgs.asm:95
+ mov word [00044h], ax ; a3 44 00 ; 0xfe13b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe13e orgs.asm:97
+ mov word [00046h], ax ; a3 46 00 ; 0xfe141 orgs.asm:98
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe144 orgs.asm:95
+ mov word [00048h], ax ; a3 48 00 ; 0xfe147 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe14a orgs.asm:97
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe14d orgs.asm:98
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe150 orgs.asm:95
+ mov word [00054h], ax ; a3 54 00 ; 0xfe153 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe156 orgs.asm:97
+ mov word [00056h], ax ; a3 56 00 ; 0xfe159 orgs.asm:98
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe15c orgs.asm:95
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe15f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe162 orgs.asm:97
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe165 orgs.asm:98
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe168 orgs.asm:95
+ mov word [00060h], ax ; a3 60 00 ; 0xfe16b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe16e orgs.asm:97
+ mov word [00062h], ax ; a3 62 00 ; 0xfe171 orgs.asm:98
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe174 orgs.asm:95
+ mov word [00064h], ax ; a3 64 00 ; 0xfe177 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe17a orgs.asm:97
+ mov word [00066h], ax ; a3 66 00 ; 0xfe17d orgs.asm:98
+ mov ax, 0efedh ; b8 ed ef ; 0xfe180 orgs.asm:95
+ mov word [00070h], ax ; a3 70 00 ; 0xfe183 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe186 orgs.asm:97
+ mov word [00072h], ax ; a3 72 00 ; 0xfe189 orgs.asm:98
+ call 0e778h ; e8 e9 05 ; 0xfe18c orgs.asm:465
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe18f orgs.asm:95
+ mov word [00068h], ax ; a3 68 00 ; 0xfe192 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe195 orgs.asm:97
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe198 orgs.asm:98
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe19b orgs.asm:95
+ mov word [00020h], ax ; a3 20 00 ; 0xfe19e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1a1 orgs.asm:97
+ mov word [00022h], ax ; a3 22 00 ; 0xfe1a4 orgs.asm:98
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1a7 orgs.asm:476
+ out strict byte 043h, AL ; e6 43 ; 0xfe1a9 orgs.asm:477
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1ab orgs.asm:478
+ out strict byte 040h, AL ; e6 40 ; 0xfe1ad orgs.asm:479
+ out strict byte 040h, AL ; e6 40 ; 0xfe1af orgs.asm:480
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1b1 orgs.asm:95
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1b4 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1b7 orgs.asm:97
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1ba orgs.asm:98
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1bd orgs.asm:95
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1c0 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1c3 orgs.asm:97
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1c6 orgs.asm:98
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1c9 orgs.asm:95
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1cc orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1cf orgs.asm:97
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1d2 orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1d5 orgs.asm:489
+ mov ds, ax ; 8e d8 ; 0xfe1d7 orgs.asm:490
+ mov byte [00417h], AL ; a2 17 04 ; 0xfe1d9 orgs.asm:492
+ mov byte [00418h], AL ; a2 18 04 ; 0xfe1dc orgs.asm:493
+ mov byte [00419h], AL ; a2 19 04 ; 0xfe1df orgs.asm:494
+ mov byte [00471h], AL ; a2 71 04 ; 0xfe1e2 orgs.asm:495
+ mov byte [00497h], AL ; a2 97 04 ; 0xfe1e5 orgs.asm:496
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1e8 orgs.asm:497
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1ea orgs.asm:498
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1ed orgs.asm:500
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f0 orgs.asm:501
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1f4 orgs.asm:502
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f8 orgs.asm:503
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1fc orgs.asm:504
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1ff orgs.asm:505
+ mov AL, strict byte 014h ; b0 14 ; 0xfe203 orgs.asm:508
+ out strict byte 070h, AL ; e6 70 ; 0xfe205 orgs.asm:509
+ in AL, strict byte 071h ; e4 71 ; 0xfe207 orgs.asm:510
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe209 orgs.asm:511
+ push DS ; 1e ; 0xfe20c orgs.asm:513
+ push CS ; 0e ; 0xfe20d orgs.asm:104
+ pop DS ; 1f ; 0xfe20e orgs.asm:105
+ cld ; fc ; 0xfe20f orgs.asm:106
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe210 orgs.asm:518
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe213 orgs.asm:519
+ call 01600h ; e8 e7 33 ; 0xfe216 orgs.asm:520
+ call 04e7dh ; e8 61 6c ; 0xfe219 orgs.asm:523
+ pop DS ; 1f ; 0xfe21c orgs.asm:524
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe21d orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe220 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe223 orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe226 orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe229 orgs.asm:528
+ mov ds, ax ; 8e d8 ; 0xfe22b orgs.asm:529
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe22d orgs.asm:530
+ mov CL, strict byte 014h ; b1 14 ; 0xfe22f orgs.asm:531
+ mov dx, 00378h ; ba 78 03 ; 0xfe231 orgs.asm:532
+ call 0ecedh ; e8 b6 0a ; 0xfe234 orgs.asm:533
+ mov dx, 00278h ; ba 78 02 ; 0xfe237 orgs.asm:534
+ call 0ecedh ; e8 b0 0a ; 0xfe23a orgs.asm:535
+ sal bx, 00eh ; c1 e3 0e ; 0xfe23d orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe240 orgs.asm:537
+ and ax, 03fffh ; 25 ff 3f ; 0xfe243 orgs.asm:538
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe246 orgs.asm:539
+ mov word [00410h], ax ; a3 10 04 ; 0xfe248 orgs.asm:540
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe24b orgs.asm:95
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe24e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe251 orgs.asm:97
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe254 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe257 orgs.asm:95
+ mov word [00030h], ax ; a3 30 00 ; 0xfe25a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe25d orgs.asm:97
+ mov word [00032h], ax ; a3 32 00 ; 0xfe260 orgs.asm:98
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe263 orgs.asm:95
+ mov word [00050h], ax ; a3 50 00 ; 0xfe266 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe269 orgs.asm:97
+ mov word [00052h], ax ; a3 52 00 ; 0xfe26c orgs.asm:98
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe26f orgs.asm:546
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe271 orgs.asm:547
+ mov dx, 003f8h ; ba f8 03 ; 0xfe273 orgs.asm:548
+ call 0ed0bh ; e8 92 0a ; 0xfe276 orgs.asm:549
+ mov dx, 002f8h ; ba f8 02 ; 0xfe279 orgs.asm:550
+ call 0ed0bh ; e8 8c 0a ; 0xfe27c orgs.asm:551
+ mov dx, 003e8h ; ba e8 03 ; 0xfe27f orgs.asm:552
+ call 0ed0bh ; e8 86 0a ; 0xfe282 orgs.asm:553
+ mov dx, 002e8h ; ba e8 02 ; 0xfe285 orgs.asm:554
+ call 0ed0bh ; e8 80 0a ; 0xfe288 orgs.asm:555
+ sal bx, 009h ; c1 e3 09 ; 0xfe28b orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe28e orgs.asm:557
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe291 orgs.asm:558
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe294 orgs.asm:559
+ mov word [00410h], ax ; a3 10 04 ; 0xfe296 orgs.asm:560
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe299 orgs.asm:95
+ mov word [00128h], ax ; a3 28 01 ; 0xfe29c orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe29f orgs.asm:97
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a2 orgs.asm:98
+ mov ax, 0f8e6h ; b8 e6 f8 ; 0xfe2a5 orgs.asm:95
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a8 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2ab orgs.asm:97
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ae orgs.asm:98
+ call 0edbfh ; e8 0b 0b ; 0xfe2b1 orgs.asm:566
+ jmp short 0e303h ; eb 4d ; 0xfe2b4 orgs.asm:568
+ ; disGetNextSymbol 0xfe2b6 LB 0x1d4a -> off=0x0 cb=000000000000000d uValue=00000000000f02b6 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2b6 LB 0xd
+ times 0xb db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi'
+nmi: ; 0xfe2c3 LB 0x7
+ push CS ; 0e ; 0xfe2c3 orgs.asm:104
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:105
+ cld ; fc ; 0xfe2c5 orgs.asm:106
+ call 016e9h ; e8 20 34 ; 0xfe2c6 orgs.asm:577
+ iret ; cf ; 0xfe2c9 orgs.asm:578
+ ; disGetNextSymbol 0xfe2ca LB 0x1d36 -> off=0x0 cb=0000000000000008 uValue=00000000000f02ca 'int75_handler'
+int75_handler: ; 0xfe2ca LB 0x8
+ out strict byte 0f0h, AL ; e6 f0 ; 0xfe2ca orgs.asm:581
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:582
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:583
+ iret ; cf ; 0xfe2d1 orgs.asm:584
+ ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000a7 uValue=00000000000f02d2 'hard_drive_post'
+hard_drive_post: ; 0xfe2d2 LB 0xa7
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:589
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:590
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:592
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:593
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:594
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:595
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:596
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:597
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:598
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98
+ mov ax, 0f8d4h ; b8 d4 f8 ; 0xfe2f6 orgs.asm:95
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98
+ retn ; c3 ; 0xfe302 orgs.asm:603
+ mov ax, 0f8a9h ; b8 a9 f8 ; 0xfe303 orgs.asm:95
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98
+ call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:615
+ push CS ; 0e ; 0xfe31e orgs.asm:104
+ pop DS ; 1f ; 0xfe31f orgs.asm:105
+ cld ; fc ; 0xfe320 orgs.asm:106
+ call 01c38h ; e8 14 39 ; 0xfe321 orgs.asm:629
+ call 020afh ; e8 88 3d ; 0xfe324 orgs.asm:630
+ sti ; fb ; 0xfe327 orgs.asm:637
+ call 09426h ; e8 fb b0 ; 0xfe328 orgs.asm:638
+ cli ; fa ; 0xfe32b orgs.asm:639
+ call 0829ah ; e8 6b 9f ; 0xfe32c orgs.asm:644
+ call 0ed2fh ; e8 fd 09 ; 0xfe32f orgs.asm:648
+ call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:651
+ push CS ; 0e ; 0xfe335 orgs.asm:104
+ pop DS ; 1f ; 0xfe336 orgs.asm:105
+ cld ; fc ; 0xfe337 orgs.asm:106
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:655
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:656
+ call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:657
+ call 0172dh ; e8 e9 33 ; 0xfe341 orgs.asm:671
+ call 03b42h ; e8 fb 57 ; 0xfe344 orgs.asm:674
+ sti ; fb ; 0xfe347 orgs.asm:677
+ int 019h ; cd 19 ; 0xfe348 orgs.asm:678
+ sti ; fb ; 0xfe34a orgs.asm:680
+ hlt ; f4 ; 0xfe34b orgs.asm:682
+ jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:683
+ cli ; fa ; 0xfe34e orgs.asm:684
+ hlt ; f4 ; 0xfe34f orgs.asm:685
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:694
+ mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:695
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:697
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:698
+ in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:700
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:701
+ out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:702
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe363 orgs.asm:704
+ pop DS ; 1f ; 0xfe369 orgs.asm:706
+ pop ES ; 07 ; 0xfe36a orgs.asm:707
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:709
+ in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:711
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:712
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:714
+ popaw ; 61 ; 0xfe374 orgs.asm:716
+ sti ; fb ; 0xfe375 orgs.asm:717
+ retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:718
+ ; disGetNextSymbol 0xfe379 LB 0x1c87 -> off=0x0 cb=0000000000000085 uValue=00000000000f0379 'biosorg_check_before_or_at_0E3FCh'
+biosorg_check_before_or_at_0E3FCh: ; 0xfe379 LB 0x85
+ times 0x83 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe3fe LB 0x1c02 -> off=0x0 cb=0000000000000003 uValue=00000000000f03fe 'int13_handler'
+int13_handler: ; 0xfe3fe LB 0x3
+ jmp near 0ec5bh ; e9 5a 08 ; 0xfe3fe orgs.asm:728
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x2f1
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h
+ db 04dh
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:744
+ ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h'
+biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa
+ or word [bx+si], ax ; 09 00 ; 0xfe6f5
+ cld ; fc ; 0xfe6f7
+ add byte [bx+di], al ; 00 01 ; 0xfe6f8
+ je short 0e73ch ; 74 40 ; 0xfe6fa
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h'
+biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a
+ times 0x28 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h'
+biosorg_check_at_0E729h: ; 0xfe729 LB 0x10
+ times 0xe db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=000000000000001a uValue=00000000000f0739 'biosorg_check_at_0E739h'
+biosorg_check_at_0E739h: ; 0xfe739 LB 0x1a
+ push DS ; 1e ; 0xfe739 orgs.asm:817
+ push ES ; 06 ; 0xfe73a orgs.asm:818
+ pushaw ; 60 ; 0xfe73b orgs.asm:97
+ push CS ; 0e ; 0xfe73c orgs.asm:104
+ pop DS ; 1f ; 0xfe73d orgs.asm:105
+ cld ; fc ; 0xfe73e orgs.asm:106
+ call 0637bh ; e8 39 7c ; 0xfe73f orgs.asm:821
+ popaw ; 61 ; 0xfe742 orgs.asm:114
+ pop ES ; 07 ; 0xfe743 orgs.asm:823
+ pop DS ; 1f ; 0xfe744 orgs.asm:824
+ iret ; cf ; 0xfe745 orgs.asm:825
+ push DS ; 1e ; 0xfe746 orgs.asm:833
+ push ES ; 06 ; 0xfe747 orgs.asm:834
+ pushaw ; 60 ; 0xfe748 orgs.asm:97
+ push CS ; 0e ; 0xfe749 orgs.asm:104
+ pop DS ; 1f ; 0xfe74a orgs.asm:105
+ cld ; fc ; 0xfe74b orgs.asm:106
+ call 01688h ; e8 39 2f ; 0xfe74c orgs.asm:837
+ popaw ; 61 ; 0xfe74f orgs.asm:114
+ pop ES ; 07 ; 0xfe750 orgs.asm:839
+ pop DS ; 1f ; 0xfe751 orgs.asm:840
+ iret ; cf ; 0xfe752 orgs.asm:841
+ ; disGetNextSymbol 0xfe753 LB 0x18ad -> off=0x0 cb=0000000000000025 uValue=00000000000f0753 'init_pic'
+init_pic: ; 0xfe753 LB 0x25
+ mov AL, strict byte 011h ; b0 11 ; 0xfe753 orgs.asm:846
+ out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:847
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:848
+ mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:849
+ out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:850
+ mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:851
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:852
+ mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:853
+ out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:854
+ mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:855
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:856
+ mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:857
+ out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:858
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:859
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:860
+ out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:861
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:862
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:863
+ retn ; c3 ; 0xfe777 orgs.asm:864
+ ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000051 uValue=00000000000f0778 'ebda_post'
+ebda_post: ; 0xfe778 LB 0x51
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:95
+ mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:97
+ mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:95
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:97
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:95
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:97
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:95
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:97
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:98
+ mov ax, 09fc0h ; b8 c0 9f ; 0xfe7b4 orgs.asm:876
+ mov ds, ax ; 8e d8 ; 0xfe7b7 orgs.asm:877
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7b9 orgs.asm:878
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7be orgs.asm:880
+ mov ds, ax ; 8e d8 ; 0xfe7c0 orgs.asm:881
+ mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7c2 orgs.asm:882
+ retn ; c3 ; 0xfe7c8 orgs.asm:883
+ ; disGetNextSymbol 0xfe7c9 LB 0x1837 -> off=0x0 cb=0000000000000065 uValue=00000000000f07c9 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7c9 LB 0x65
+ times 0x63 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=000000000000003d uValue=00000000000f082e 'biosorg_check_at_0E82Eh'
+biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x3d
+ sti ; fb ; 0xfe82e orgs.asm:894
+ pushfw ; 9c ; 0xfe82f orgs.asm:897
+ push ES ; 06 ; 0xfe830 orgs.asm:898
+ push DS ; 1e ; 0xfe831 orgs.asm:899
+ pushaw ; 60 ; 0xfe832 orgs.asm:97
+ cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:902
+ je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:903
+ cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:905
+ je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:906
+ push CS ; 0e ; 0xfe83d orgs.asm:104
+ pop DS ; 1f ; 0xfe83e orgs.asm:105
+ cld ; fc ; 0xfe83f orgs.asm:106
+ call 055c2h ; e8 7f 6d ; 0xfe840 orgs.asm:909
+ popaw ; 61 ; 0xfe843 orgs.asm:114
+ pop DS ; 1f ; 0xfe844 orgs.asm:911
+ pop ES ; 07 ; 0xfe845 orgs.asm:912
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:913
+ iret ; cf ; 0xfe849 orgs.asm:914
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:917
+ mov ds, bx ; 8e db ; 0xfe84d orgs.asm:918
+ cli ; fa ; 0xfe84f orgs.asm:920
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:921
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:922
+ jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:923
+ sti ; fb ; 0xfe85a orgs.asm:924
+ nop ; 90 ; 0xfe85b orgs.asm:925
+ jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:933
+ push CS ; 0e ; 0xfe85e orgs.asm:104
+ pop DS ; 1f ; 0xfe85f orgs.asm:105
+ cld ; fc ; 0xfe860 orgs.asm:106
+ call 055c2h ; e8 5e 6d ; 0xfe861 orgs.asm:937
+ popaw ; 61 ; 0xfe864 orgs.asm:114
+ pop DS ; 1f ; 0xfe865 orgs.asm:939
+ pop ES ; 07 ; 0xfe866 orgs.asm:940
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:941
+ iret ; cf ; 0xfe86a orgs.asm:949
+ ; disGetNextSymbol 0xfe86b LB 0x1795 -> off=0x0 cb=000000000000011c uValue=00000000000f086b 'biosorg_check_before_or_at_0E985h'
+biosorg_check_before_or_at_0E985h: ; 0xfe86b LB 0x11c
+ times 0x11a db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe987 LB 0x1679 -> off=0x0 cb=0000000000000052 uValue=00000000000f0987 'biosorg_check_at_0E987h'
+biosorg_check_at_0E987h: ; 0xfe987 LB 0x52
+ cli ; fa ; 0xfe987 orgs.asm:966
+ push ax ; 50 ; 0xfe988 orgs.asm:967
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:968
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:969
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:971
+ push DS ; 1e ; 0xfe98f orgs.asm:972
+ pushaw ; 60 ; 0xfe990 orgs.asm:97
+ cld ; fc ; 0xfe991 orgs.asm:974
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:976
+ stc ; f9 ; 0xfe994 orgs.asm:977
+ int 015h ; cd 15 ; 0xfe995 orgs.asm:978
+ jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:979
+ sti ; fb ; 0xfe999 orgs.asm:981
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:984
+ jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:985
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:986
+ mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:987
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:988
+ jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:989
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:992
+ jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:993
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:994
+ mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:995
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:996
+ jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:997
+ push ES ; 06 ; 0xfe9b8 orgs.asm:1000
+ push CS ; 0e ; 0xfe9b9 orgs.asm:104
+ pop DS ; 1f ; 0xfe9ba orgs.asm:105
+ cld ; fc ; 0xfe9bb orgs.asm:106
+ call 0516fh ; e8 b0 67 ; 0xfe9bc orgs.asm:1002
+ pop ES ; 07 ; 0xfe9bf orgs.asm:1003
+ popaw ; 61 ; 0xfe9c0 orgs.asm:114
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:1007
+ cli ; fa ; 0xfe9c2 orgs.asm:1008
+ call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1009
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1011
+ out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1012
+ pop ax ; 58 ; 0xfe9ca orgs.asm:1013
+ iret ; cf ; 0xfe9cb orgs.asm:1014
+ pushaw ; 60 ; 0xfe9cc orgs.asm:97
+ push ES ; 06 ; 0xfe9cd orgs.asm:1023
+ push DS ; 1e ; 0xfe9ce orgs.asm:1024
+ push CS ; 0e ; 0xfe9cf orgs.asm:104
+ pop DS ; 1f ; 0xfe9d0 orgs.asm:105
+ cld ; fc ; 0xfe9d1 orgs.asm:106
+ call 069fbh ; e8 26 80 ; 0xfe9d2 orgs.asm:1026
+ pop DS ; 1f ; 0xfe9d5 orgs.asm:1027
+ pop ES ; 07 ; 0xfe9d6 orgs.asm:1028
+ popaw ; 61 ; 0xfe9d7 orgs.asm:114
+ iret ; cf ; 0xfe9d8 orgs.asm:1030
+ ; disGetNextSymbol 0xfe9d9 LB 0x1627 -> off=0x0 cb=0000000000000280 uValue=00000000000f09d9 'biosorg_check_before_or_at_0EC57h'
+biosorg_check_before_or_at_0EC57h: ; 0xfe9d9 LB 0x280
+ times 0x27e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfec59 LB 0x13a7 -> off=0x0 cb=0000000000000002 uValue=00000000000f0c59 'biosorg_check_at_0EC59h'
+biosorg_check_at_0EC59h: ; 0xfec59 LB 0x2
+ jmp short 0ecb0h ; eb 55 ; 0xfec59 orgs.asm:1037
+ ; disGetNextSymbol 0xfec5b LB 0x13a5 -> off=0x0 cb=0000000000000055 uValue=00000000000f0c5b 'int13_relocated'
+int13_relocated: ; 0xfec5b LB 0x55
+ cmp ah, 04ah ; 80 fc 4a ; 0xfec5b orgs.asm:1046
+ jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1047
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1049
+ jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1050
+ pushaw ; 60 ; 0xfec65 orgs.asm:97
+ push ES ; 06 ; 0xfec66 orgs.asm:1053
+ push DS ; 1e ; 0xfec67 orgs.asm:1054
+ push CS ; 0e ; 0xfec68 orgs.asm:104
+ pop DS ; 1f ; 0xfec69 orgs.asm:105
+ cld ; fc ; 0xfec6a orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:83
+ jmp near 03b85h ; e9 14 4f ; 0xfec6e orgs.asm:84
+ push ES ; 06 ; 0xfec71 orgs.asm:1062
+ push ax ; 50 ; 0xfec72 orgs.asm:1063
+ push bx ; 53 ; 0xfec73 orgs.asm:1064
+ push cx ; 51 ; 0xfec74 orgs.asm:1065
+ push dx ; 52 ; 0xfec75 orgs.asm:1066
+ call 03b59h ; e8 e0 4e ; 0xfec76 orgs.asm:1069
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1070
+ je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1071
+ call 03b6fh ; e8 ef 4e ; 0xfec7d orgs.asm:1074
+ pop dx ; 5a ; 0xfec80 orgs.asm:1075
+ push dx ; 52 ; 0xfec81 orgs.asm:1076
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1077
+ jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1078
+ pop dx ; 5a ; 0xfec86 orgs.asm:1080
+ pop cx ; 59 ; 0xfec87 orgs.asm:1081
+ pop bx ; 5b ; 0xfec88 orgs.asm:1082
+ pop ax ; 58 ; 0xfec89 orgs.asm:1083
+ pop ES ; 07 ; 0xfec8a orgs.asm:1084
+ pushaw ; 60 ; 0xfec8b orgs.asm:97
+ push ES ; 06 ; 0xfec8c orgs.asm:1087
+ push DS ; 1e ; 0xfec8d orgs.asm:1088
+ push CS ; 0e ; 0xfec8e orgs.asm:104
+ pop DS ; 1f ; 0xfec8f orgs.asm:105
+ cld ; fc ; 0xfec90 orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:83
+ jmp near 0414dh ; e9 b6 54 ; 0xfec94 orgs.asm:84
+ and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1094
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1095
+ jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1096
+ pop dx ; 5a ; 0xfec9e orgs.asm:1098
+ pop cx ; 59 ; 0xfec9f orgs.asm:1099
+ pop bx ; 5b ; 0xfeca0 orgs.asm:1100
+ pop ax ; 58 ; 0xfeca1 orgs.asm:1101
+ pop ES ; 07 ; 0xfeca2 orgs.asm:1102
+ push ax ; 50 ; 0xfeca3 orgs.asm:1104
+ push cx ; 51 ; 0xfeca4 orgs.asm:1105
+ push dx ; 52 ; 0xfeca5 orgs.asm:1106
+ push bx ; 53 ; 0xfeca6 orgs.asm:1107
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1109
+ jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1110
+ pop dx ; 5a ; 0xfecab orgs.asm:1113
+ pop cx ; 59 ; 0xfecac orgs.asm:1114
+ pop bx ; 5b ; 0xfecad orgs.asm:1115
+ pop ax ; 58 ; 0xfecae orgs.asm:1116
+ pop ES ; 07 ; 0xfecaf orgs.asm:1117
+ ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito'
+int13_noeltorito: ; 0xfecb0 LB 0x4
+ push ax ; 50 ; 0xfecb0 orgs.asm:1120
+ push cx ; 51 ; 0xfecb1 orgs.asm:1121
+ push dx ; 52 ; 0xfecb2 orgs.asm:1122
+ push bx ; 53 ; 0xfecb3 orgs.asm:1123
+ ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy'
+int13_legacy: ; 0xfecb4 LB 0x14
+ push dx ; 52 ; 0xfecb4 orgs.asm:1125
+ push bp ; 55 ; 0xfecb5 orgs.asm:1126
+ push si ; 56 ; 0xfecb6 orgs.asm:1127
+ push di ; 57 ; 0xfecb7 orgs.asm:1128
+ push ES ; 06 ; 0xfecb8 orgs.asm:1129
+ push DS ; 1e ; 0xfecb9 orgs.asm:1130
+ push CS ; 0e ; 0xfecba orgs.asm:104
+ pop DS ; 1f ; 0xfecbb orgs.asm:105
+ cld ; fc ; 0xfecbc orgs.asm:106
+ test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1135
+ jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1136
+ push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:83
+ jmp near 0313dh ; e9 75 44 ; 0xfecc5 orgs.asm:84
+ ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cc8 'int13_notfloppy'
+int13_notfloppy: ; 0xfecc8 LB 0x14
+ cmp dl, 0e0h ; 80 fa e0 ; 0xfecc8 orgs.asm:1141
+ jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1142
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1148
+ push bx ; 53 ; 0xfecd1 orgs.asm:1149
+ call 0478eh ; e8 b9 5a ; 0xfecd2 orgs.asm:1150
+ pop bx ; 5b ; 0xfecd5 orgs.asm:1151
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1152
+ jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1154
+ ; disGetNextSymbol 0xfecdc LB 0x1324 -> off=0x0 cb=000000000000000d uValue=00000000000f0cdc 'int13_disk'
+int13_disk: ; 0xfecdc LB 0xd
+ cmp ah, 040h ; 80 fc 40 ; 0xfecdc orgs.asm:1158
+ jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1159
+ call 05c93h ; e8 af 6f ; 0xfece1 orgs.asm:1160
+ jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1161
+ call 060e4h ; e8 fb 73 ; 0xfece6 orgs.asm:1164
+ ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out'
+int13_out: ; 0xfece9 LB 0x4
+ pop DS ; 1f ; 0xfece9 orgs.asm:1167
+ pop ES ; 07 ; 0xfecea orgs.asm:1168
+ popaw ; 61 ; 0xfeceb orgs.asm:114
+ iret ; cf ; 0xfecec orgs.asm:1170
+ ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport'
+detect_parport: ; 0xfeced LB 0x1e
+ push dx ; 52 ; 0xfeced orgs.asm:1177
+ inc dx ; 42 ; 0xfecee orgs.asm:1178
+ inc dx ; 42 ; 0xfecef orgs.asm:1179
+ in AL, DX ; ec ; 0xfecf0 orgs.asm:1180
+ and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1181
+ out DX, AL ; ee ; 0xfecf3 orgs.asm:1182
+ pop dx ; 5a ; 0xfecf4 orgs.asm:1183
+ mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1184
+ out DX, AL ; ee ; 0xfecf7 orgs.asm:1185
+ in AL, DX ; ec ; 0xfecf8 orgs.asm:1186
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1187
+ jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1188
+ push bx ; 53 ; 0xfecfd orgs.asm:1190
+ sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1191
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1192
+ pop bx ; 5b ; 0xfed04 orgs.asm:1193
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1194
+ inc bx ; 43 ; 0xfed09 orgs.asm:1195
+ retn ; c3 ; 0xfed0a orgs.asm:1197
+ ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial'
+detect_serial: ; 0xfed0b LB 0x24
+ push dx ; 52 ; 0xfed0b orgs.asm:1204
+ inc dx ; 42 ; 0xfed0c orgs.asm:1205
+ mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1206
+ out DX, AL ; ee ; 0xfed0f orgs.asm:1207
+ in AL, DX ; ec ; 0xfed10 orgs.asm:1208
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1209
+ jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1210
+ inc dx ; 42 ; 0xfed15 orgs.asm:1212
+ in AL, DX ; ec ; 0xfed16 orgs.asm:1213
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1214
+ jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1215
+ dec dx ; 4a ; 0xfed1b orgs.asm:1217
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1218
+ pop dx ; 5a ; 0xfed1e orgs.asm:1219
+ push bx ; 53 ; 0xfed1f orgs.asm:1220
+ sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1221
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1222
+ pop bx ; 5b ; 0xfed26 orgs.asm:1223
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1224
+ inc bx ; 43 ; 0xfed2b orgs.asm:1225
+ retn ; c3 ; 0xfed2c orgs.asm:1226
+ pop dx ; 5a ; 0xfed2d orgs.asm:1229
+ retn ; c3 ; 0xfed2e orgs.asm:1230
+ ; disGetNextSymbol 0xfed2f LB 0x12d1 -> off=0x0 cb=0000000000000087 uValue=00000000000f0d2f 'floppy_post'
+floppy_post: ; 0xfed2f LB 0x87
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfed2f orgs.asm:1240
+ mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1241
+ mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1245
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1246
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1247
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1248
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1249
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1250
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1251
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1252
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1253
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1254
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1255
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1256
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1258
+ mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1260
+ out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1261
+ in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1262
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1263
+ shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:169
+ je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1268
+ mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1269
+ jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1270
+ mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1273
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1276
+ and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1277
+ je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1278
+ or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1279
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1281
+ mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1284
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1285
+ mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1286
+ mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1287
+ mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1288
+ mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1289
+ mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1290
+ mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1292
+ out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1293
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:95
+ mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:97
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:98
+ mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:95
+ mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:97
+ mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:98
+ mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:95
+ mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:97
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:98
+ retn ; c3 ; 0xfedb5 orgs.asm:1299
+ ; disGetNextSymbol 0xfedb6 LB 0x124a -> off=0x0 cb=0000000000000009 uValue=0000000000000db6 'bcd_to_bin'
+bcd_to_bin: ; 0xfedb6 LB 0x9
+ sal ax, 004h ; c1 e0 04 ; 0xfedb6 orgs.asm:1309
+ shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1310
+ aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1318
+ retn ; c3 ; 0xfedbe orgs.asm:1319
+ ; disGetNextSymbol 0xfedbf LB 0x1241 -> off=0x0 cb=000000000000005a uValue=00000000000f0dbf 'rtc_post'
+rtc_post: ; 0xfedbf LB 0x5a
+ mov AL, strict byte 000h ; b0 00 ; 0xfedbf orgs.asm:1327
+ out strict byte 070h, AL ; e6 70 ; 0xfedc1 orgs.asm:1328
+ in AL, strict byte 071h ; e4 71 ; 0xfedc3 orgs.asm:1329
+ call 0edb6h ; e8 ee ff ; 0xfedc5 orgs.asm:1330
+ test al, al ; 84 c0 ; 0xfedc8 orgs.asm:1331
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfedca orgs.asm:1332
+ mov dx, 01234h ; ba 34 12 ; 0xfedcc orgs.asm:1333
+ mul dx ; f7 e2 ; 0xfedcf orgs.asm:1334
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xfedd1 orgs.asm:1335
+ mov AL, strict byte 002h ; b0 02 ; 0xfedd3 orgs.asm:1338
+ out strict byte 070h, AL ; e6 70 ; 0xfedd5 orgs.asm:1339
+ in AL, strict byte 071h ; e4 71 ; 0xfedd7 orgs.asm:1340
+ call 0edb6h ; e8 da ff ; 0xfedd9 orgs.asm:1341
+ test al, al ; 84 c0 ; 0xfeddc orgs.asm:1342
+ je short 0edebh ; 74 0b ; 0xfedde orgs.asm:1343
+ add cx, 04463h ; 81 c1 63 44 ; 0xfede0 orgs.asm:1345
+ adc dx, strict byte 00004h ; 83 d2 04 ; 0xfede4 orgs.asm:1346
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfede7 orgs.asm:1347
+ jne short 0ede0h ; 75 f5 ; 0xfede9 orgs.asm:1348
+ mov AL, strict byte 004h ; b0 04 ; 0xfedeb orgs.asm:1352
+ out strict byte 070h, AL ; e6 70 ; 0xfeded orgs.asm:1353
+ in AL, strict byte 071h ; e4 71 ; 0xfedef orgs.asm:1354
+ call 0edb6h ; e8 c2 ff ; 0xfedf1 orgs.asm:1355
+ test al, al ; 84 c0 ; 0xfedf4 orgs.asm:1356
+ je short 0ee04h ; 74 0c ; 0xfedf6 orgs.asm:1357
+ add cx, 0076ch ; 81 c1 6c 07 ; 0xfedf8 orgs.asm:1359
+ adc dx, 00100h ; 81 d2 00 01 ; 0xfedfc orgs.asm:1360
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee00 orgs.asm:1361
+ jne short 0edf8h ; 75 f4 ; 0xfee02 orgs.asm:1362
+ db 08ah, 0cdh
+ ; mov cl, ch ; 8a cd ; 0xfee04 orgs.asm:1365
+ db 08ah, 0eah
+ ; mov ch, dl ; 8a ea ; 0xfee06 orgs.asm:1366
+ db 08ah, 0d6h
+ ; mov dl, dh ; 8a d6 ; 0xfee08 orgs.asm:1367
+ db 032h, 0f6h
+ ; xor dh, dh ; 32 f6 ; 0xfee0a orgs.asm:1368
+ mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee0c orgs.asm:1369
+ mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee10 orgs.asm:1370
+ mov byte [00470h], dh ; 88 36 70 04 ; 0xfee14 orgs.asm:1371
+ retn ; c3 ; 0xfee18 orgs.asm:1419
+ ; disGetNextSymbol 0xfee19 LB 0x11e7 -> off=0x0 cb=000000000000013e uValue=00000000000f0e19 'biosorg_check_before_or_at_0EF55h'
+biosorg_check_before_or_at_0EF55h: ; 0xfee19 LB 0x13e
+ times 0x13c db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfef57 LB 0x10a9 -> off=0x0 cb=000000000000003b uValue=00000000000f0f57 'int0e_handler'
+int0e_handler: ; 0xfef57 LB 0x3b
+ push ax ; 50 ; 0xfef57 orgs.asm:1430
+ push dx ; 52 ; 0xfef58 orgs.asm:1431
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1432
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1433
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1434
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1435
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1436
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1437
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1438
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1439
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1441
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1442
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1443
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1444
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1445
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1448
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1449
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1450
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1451
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1452
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1453
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1454
+ push DS ; 1e ; 0xfef81 orgs.asm:1457
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1458
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1459
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1460
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1462
+ pop DS ; 1f ; 0xfef8e orgs.asm:1463
+ pop dx ; 5a ; 0xfef8f orgs.asm:1464
+ pop ax ; 58 ; 0xfef90 orgs.asm:1465
+ iret ; cf ; 0xfef91 orgs.asm:1466
+ ; disGetNextSymbol 0xfef92 LB 0x106e -> off=0x0 cb=0000000000000035 uValue=00000000000f0f92 'biosorg_check_before_or_at_0EFC5h'
+biosorg_check_before_or_at_0EFC5h: ; 0xfef92 LB 0x35
+ times 0x33 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfefc7 LB 0x1039 -> off=0x0 cb=000000000000000b uValue=00000000000f0fc7 '_diskette_param_table'
+_diskette_param_table: ; 0xfefc7 LB 0xb
+ scasw ; af ; 0xfefc7
+ add ah, byte [di] ; 02 25 ; 0xfefc8
+ add dl, byte [bp+si] ; 02 12 ; 0xfefca
+ db 01bh, 0ffh
+ ; sbb di, di ; 1b ff ; 0xfefcc
+ insb ; 6c ; 0xfefce
+ db 0f6h
+ invd ; 0f 08 ; 0xfefd0
+ ; disGetNextSymbol 0xfefd2 LB 0x102e -> off=0x0 cb=0000000000000002 uValue=00000000000f0fd2 'biosorg_check_at_0EFD2h'
+biosorg_check_at_0EFD2h: ; 0xfefd2 LB 0x2
+ jmp short 0efd4h ; eb 00 ; 0xfefd2 orgs.asm:1493
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0xd
+ push DS ; 1e ; 0xfefd4 orgs.asm:1496
+ push ES ; 06 ; 0xfefd5 orgs.asm:1497
+ pushaw ; 60 ; 0xfefd6 orgs.asm:97
+ push CS ; 0e ; 0xfefd7 orgs.asm:104
+ pop DS ; 1f ; 0xfefd8 orgs.asm:105
+ cld ; fc ; 0xfefd9 orgs.asm:106
+ call 0733dh ; e8 60 83 ; 0xfefda orgs.asm:1500
+ popaw ; 61 ; 0xfefdd orgs.asm:114
+ pop ES ; 07 ; 0xfefde orgs.asm:1502
+ pop DS ; 1f ; 0xfefdf orgs.asm:1503
+ iret ; cf ; 0xfefe0 orgs.asm:1504
+ ; disGetNextSymbol 0xfefe1 LB 0x101f -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe1 '_pmode_IDT'
+_pmode_IDT: ; 0xfefe1 LB 0x6
+ db 000h, 000h, 000h, 000h, 00fh, 000h
+ ; disGetNextSymbol 0xfefe7 LB 0x1019 -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe7 '_rmode_IDT'
+_rmode_IDT: ; 0xfefe7 LB 0x6
+ db 0ffh, 003h, 000h, 000h, 000h, 000h
+ ; disGetNextSymbol 0xfefed LB 0x1013 -> off=0x0 cb=0000000000000001 uValue=00000000000f0fed 'int1c_handler'
+int1c_handler: ; 0xfefed LB 0x1
+ iret ; cf ; 0xfefed orgs.asm:1539
+ ; disGetNextSymbol 0xfefee LB 0x1012 -> off=0x0 cb=0000000000000057 uValue=00000000000f0fee 'biosorg_check_before_or_at_0F043h'
+biosorg_check_before_or_at_0F043h: ; 0xfefee LB 0x57
+ times 0x55 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff045 LB 0xfbb -> off=0x0 cb=0000000000000001 uValue=00000000000f1045 'biosorg_check_at_0F045h'
+biosorg_check_at_0F045h: ; 0xff045 LB 0x1
+ iret ; cf ; 0xff045 orgs.asm:1548
+ ; disGetNextSymbol 0xff046 LB 0xfba -> off=0x0 cb=000000000000001f uValue=00000000000f1046 'biosorg_check_before_or_at_0F063h'
+biosorg_check_before_or_at_0F063h: ; 0xff046 LB 0x1f
+ times 0x1d db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff065 LB 0xf9b -> off=0x0 cb=0000000000000001 uValue=00000000000f1065 'int10_handler'
+int10_handler: ; 0xff065 LB 0x1
+ iret ; cf ; 0xff065 orgs.asm:1557
+ ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h'
+biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e
+ times 0x3c db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8
+ push CS ; 0e ; 0xff0a4 orgs.asm:104
+ pop DS ; 1f ; 0xff0a5 orgs.asm:105
+ cld ; fc ; 0xff0a6 orgs.asm:106
+ call 016fbh ; e8 51 26 ; 0xff0a7 orgs.asm:1572
+ hlt ; f4 ; 0xff0aa orgs.asm:1574
+ iret ; cf ; 0xff0ab orgs.asm:1575
+ ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=0000000000000090 uValue=00000000000f10ac 'int19_relocated'
+int19_relocated: ; 0xff0ac LB 0x90
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1586
+ mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1587
+ cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1588
+ je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1589
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1591
+ mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1592
+ mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1593
+ mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1594
+ jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1595
+ push CS ; 0e ; 0xff0c3 orgs.asm:104
+ pop DS ; 1f ; 0xff0c4 orgs.asm:105
+ cld ; fc ; 0xff0c5 orgs.asm:106
+ push bp ; 55 ; 0xff0c6 orgs.asm:1602
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1603
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1606
+ push ax ; 50 ; 0xff0cc orgs.asm:1607
+ call 04c0fh ; e8 3f 5b ; 0xff0cd orgs.asm:1608
+ inc sp ; 44 ; 0xff0d0 orgs.asm:1609
+ inc sp ; 44 ; 0xff0d1 orgs.asm:1610
+ test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1611
+ jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1612
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1615
+ push ax ; 50 ; 0xff0d9 orgs.asm:1616
+ call 04c0fh ; e8 32 5b ; 0xff0da orgs.asm:1617
+ inc sp ; 44 ; 0xff0dd orgs.asm:1618
+ inc sp ; 44 ; 0xff0de orgs.asm:1619
+ test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1620
+ jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1621
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1624
+ push ax ; 50 ; 0xff0e6 orgs.asm:1625
+ call 04c0fh ; e8 25 5b ; 0xff0e7 orgs.asm:1626
+ inc sp ; 44 ; 0xff0ea orgs.asm:1627
+ inc sp ; 44 ; 0xff0eb orgs.asm:1628
+ test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1629
+ jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1630
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1633
+ push ax ; 50 ; 0xff0f3 orgs.asm:1634
+ call 04c0fh ; e8 18 5b ; 0xff0f4 orgs.asm:1635
+ inc sp ; 44 ; 0xff0f7 orgs.asm:1636
+ inc sp ; 44 ; 0xff0f8 orgs.asm:1637
+ test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1638
+ je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1639
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0fd orgs.asm:1645
+ sal ax, 004h ; c1 e0 04 ; 0xff100 orgs.asm:200
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff103 orgs.asm:1647
+ mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff106 orgs.asm:1648
+ and ax, 0f000h ; 25 00 f0 ; 0xff109 orgs.asm:1657
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff10c orgs.asm:1658
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff10f orgs.asm:1659
+ mov ds, ax ; 8e d8 ; 0xff111 orgs.asm:1660
+ mov es, ax ; 8e c0 ; 0xff113 orgs.asm:1661
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff115 orgs.asm:1662
+ mov ax, 0aa55h ; b8 55 aa ; 0xff118 orgs.asm:1663
+ pop bp ; 5d ; 0xff11b orgs.asm:1665
+ iret ; cf ; 0xff11c orgs.asm:1666
+ or cx, word [bp+si] ; 0b 0a ; 0xff11d
+ or word [bp+di], cx ; 09 0b ; 0xff11f
+ push eax ; 66 50 ; 0xff121 orgs.asm:88
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff123 orgs.asm:89
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff129 orgs.asm:90
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff12b orgs.asm:91
+ and dl, 0fch ; 80 e2 fc ; 0xff12f orgs.asm:92
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff132 orgs.asm:93
+ mov dx, 00cf8h ; ba f8 0c ; 0xff134 orgs.asm:94
+ out DX, eax ; 66 ef ; 0xff137 orgs.asm:95
+ pop eax ; 66 58 ; 0xff139 orgs.asm:96
+ retn ; c3 ; 0xff13b orgs.asm:97
+ ; disGetNextSymbol 0xff13c LB 0xec4 -> off=0x0 cb=0000000000000012 uValue=00000000000f113c 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff13c LB 0x12
+ push bp ; 55 ; 0xff13c orgs.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff13d orgs.asm:101
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff13f orgs.asm:103
+ mov dx, 00410h ; ba 10 04 ; 0xff145 orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff148 orgs.asm:105
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff14a orgs.asm:218
+ pop bp ; 5d ; 0xff14c orgs.asm:219
+ retn ; c3 ; 0xff14d orgs.asm:220
+ ; disGetNextSymbol 0xff14e LB 0xeb2 -> off=0x0 cb=000000000000000c uValue=00000000000f114e 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff14e LB 0xc
+ push ax ; 50 ; 0xff14e orgs.asm:223
+ push cx ; 51 ; 0xff14f orgs.asm:224
+ mov dx, 004d0h ; ba d0 04 ; 0xff150 orgs.asm:225
+ test AL, strict byte 008h ; a8 08 ; 0xff153 orgs.asm:226
+ je short 0f15ah ; 74 03 ; 0xff155 orgs.asm:227
+ inc dx ; 42 ; 0xff157 orgs.asm:229
+ and AL, strict byte 007h ; 24 07 ; 0xff158 orgs.asm:230
+ ; disGetNextSymbol 0xff15a LB 0xea6 -> off=0x0 cb=000000000000000d uValue=00000000000f115a 'is_master_pic'
+is_master_pic: ; 0xff15a LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff15a orgs.asm:232
+ mov BL, strict byte 001h ; b3 01 ; 0xff15c orgs.asm:233
+ sal bl, CL ; d2 e3 ; 0xff15e orgs.asm:234
+ in AL, DX ; ec ; 0xff160 orgs.asm:235
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff161 orgs.asm:236
+ out DX, AL ; ee ; 0xff163 orgs.asm:237
+ pop cx ; 59 ; 0xff164 orgs.asm:238
+ pop ax ; 58 ; 0xff165 orgs.asm:239
+ retn ; c3 ; 0xff166 orgs.asm:240
+ ; disGetNextSymbol 0xff167 LB 0xe99 -> off=0x0 cb=0000000000000039 uValue=00000000000f1167 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff167 LB 0x39
+ push DS ; 1e ; 0xff167 orgs.asm:243
+ push bp ; 55 ; 0xff168 orgs.asm:244
+ mov ax, 0f000h ; b8 00 f0 ; 0xff169 orgs.asm:245
+ mov ds, ax ; 8e d8 ; 0xff16c orgs.asm:246
+ pop bp ; 5d ; 0xff16e orgs.asm:353
+ pop DS ; 1f ; 0xff16f orgs.asm:354
+ retn ; c3 ; 0xff170 orgs.asm:355
+ mov ax, ax ; 89 c0 ; 0xff171
+ mov ax, ax ; 89 c0 ; 0xff173
+ mov ax, ax ; 89 c0 ; 0xff175
+ mov ax, ax ; 89 c0 ; 0xff177
+ mov ax, ax ; 89 c0 ; 0xff179
+ mov ax, ax ; 89 c0 ; 0xff17b
+ mov ax, ax ; 89 c0 ; 0xff17d
+ cld ; fc ; 0xff17f
+ and AL, strict byte 050h ; 24 50 ; 0xff180
+ dec cx ; 49 ; 0xff182
+ push dx ; 52 ; 0xff183
+ add byte [bx+di], al ; 00 01 ; 0xff184
+ add byte [bp+si], al ; 00 02 ; 0xff186
+ add byte [bx+si], cl ; 00 08 ; 0xff188
+ add byte [bx+si], al ; 00 00 ; 0xff18a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff18c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff1a0 LB 0xe60 -> off=0x0 cb=00000000000001e0 uValue=00000000000f11a0 '_pci_routing_table'
+_pci_routing_table: ; 0xff1a0 LB 0x1e0
+ db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
+ db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
+ db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h
+ db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h
+ db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h
+ db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h
+ db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h
+ db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h
+ db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h
+ db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h
+ db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h
+ db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h
+ db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h
+ db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h
+ db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h
+ db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h
+ db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h
+ db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h
+ db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h
+ db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h
+ db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h
+ db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h
+ db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h
+ db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h
+ db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h
+ db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h
+ db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h
+ db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h
+ db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
+ db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
+ ; disGetNextSymbol 0xff380 LB 0xc80 -> off=0x0 cb=0000000000000002 uValue=00000000000f1380 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff380 LB 0x2
+ loopne 0f383h ; e0 01 ; 0xff380
+ ; disGetNextSymbol 0xff382 LB 0xc7e -> off=0x0 cb=00000000000004bf uValue=00000000000f1382 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff382 LB 0x4bf
+ times 0x4bd db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler'
+int12_handler: ; 0xff841 LB 0xc
+ sti ; fb ; 0xff841 orgs.asm:1680
+ push DS ; 1e ; 0xff842 orgs.asm:1681
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1682
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1683
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1684
+ pop DS ; 1f ; 0xff84b orgs.asm:1685
+ iret ; cf ; 0xff84c orgs.asm:1686
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1695
+ push DS ; 1e ; 0xff84e orgs.asm:1696
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1697
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1698
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1699
+ pop DS ; 1f ; 0xff857 orgs.asm:1700
+ iret ; cf ; 0xff858 orgs.asm:1701
+ ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=0000000000000031 uValue=00000000000f1859 'int15_handler'
+int15_handler: ; 0xff859 LB 0x31
+ cmp ah, 087h ; 80 fc 87 ; 0xff859 orgs.asm:1711
+ jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1712
+ pushaw ; 60 ; 0xff85e orgs.asm:1717
+ push ES ; 06 ; 0xff85f orgs.asm:1718
+ push DS ; 1e ; 0xff860 orgs.asm:1719
+ push CS ; 0e ; 0xff861 orgs.asm:104
+ pop DS ; 1f ; 0xff862 orgs.asm:105
+ cld ; fc ; 0xff863 orgs.asm:106
+ call 06894h ; e8 2d 70 ; 0xff864 orgs.asm:1721
+ pop DS ; 1f ; 0xff867 orgs.asm:1722
+ pop ES ; 07 ; 0xff868 orgs.asm:1723
+ popaw ; 61 ; 0xff869 orgs.asm:1724
+ iret ; cf ; 0xff86a orgs.asm:1725
+ pushfw ; 9c ; 0xff86b orgs.asm:1730
+ push DS ; 1e ; 0xff86c orgs.asm:1731
+ push ES ; 06 ; 0xff86d orgs.asm:1732
+ push CS ; 0e ; 0xff86e orgs.asm:104
+ pop DS ; 1f ; 0xff86f orgs.asm:105
+ cld ; fc ; 0xff870 orgs.asm:106
+ pushaw ; 60 ; 0xff871 orgs.asm:97
+ cmp ah, 053h ; 80 fc 53 ; 0xff872 orgs.asm:1743
+ je short 0f885h ; 74 0e ; 0xff875 orgs.asm:1744
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff877 orgs.asm:1745
+ je short 0f88ah ; 74 0e ; 0xff87a orgs.asm:1746
+ call 0657ch ; e8 fd 6c ; 0xff87c orgs.asm:1748
+ popaw ; 61 ; 0xff87f orgs.asm:114
+ pop ES ; 07 ; 0xff880 orgs.asm:1754
+ pop DS ; 1f ; 0xff881 orgs.asm:1755
+ popfw ; 9d ; 0xff882 orgs.asm:1756
+ jmp short 0f88fh ; eb 0a ; 0xff883 orgs.asm:1757
+ call 09598h ; e8 10 9d ; 0xff885 orgs.asm:1760
+ jmp short 0f87fh ; eb f5 ; 0xff888 orgs.asm:1761
+ ; disGetNextSymbol 0xff88a LB 0x776 -> off=0x0 cb=0000000000000005 uValue=00000000000f188a 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff88a LB 0x5
+ call 06fd1h ; e8 44 77 ; 0xff88a orgs.asm:1764
+ jmp short 0f87fh ; eb f0 ; 0xff88d orgs.asm:1765
+ ; disGetNextSymbol 0xff88f LB 0x771 -> off=0x0 cb=000000000000001a uValue=00000000000f188f 'iret_modify_cf'
+iret_modify_cf: ; 0xff88f LB 0x1a
+ jc short 0f89fh ; 72 0e ; 0xff88f orgs.asm:1782
+ push bp ; 55 ; 0xff891 orgs.asm:1783
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff892 orgs.asm:1784
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff894 orgs.asm:1785
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff898 orgs.asm:1786
+ pop bp ; 5d ; 0xff89d orgs.asm:1787
+ iret ; cf ; 0xff89e orgs.asm:1788
+ push bp ; 55 ; 0xff89f orgs.asm:1790
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8a0 orgs.asm:1791
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8a2 orgs.asm:1792
+ pop bp ; 5d ; 0xff8a7 orgs.asm:1793
+ iret ; cf ; 0xff8a8 orgs.asm:1794
+ ; disGetNextSymbol 0xff8a9 LB 0x757 -> off=0x0 cb=000000000000002b uValue=00000000000f18a9 'int74_handler'
+int74_handler: ; 0xff8a9 LB 0x2b
+ sti ; fb ; 0xff8a9 orgs.asm:1801
+ pushaw ; 60 ; 0xff8aa orgs.asm:97
+ push ES ; 06 ; 0xff8ab orgs.asm:1803
+ push DS ; 1e ; 0xff8ac orgs.asm:1804
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8ad orgs.asm:1805
+ push ax ; 50 ; 0xff8af orgs.asm:1806
+ push ax ; 50 ; 0xff8b0 orgs.asm:1807
+ push ax ; 50 ; 0xff8b1 orgs.asm:1808
+ push ax ; 50 ; 0xff8b2 orgs.asm:1809
+ push ax ; 50 ; 0xff8b3 orgs.asm:1810
+ push CS ; 0e ; 0xff8b4 orgs.asm:104
+ pop DS ; 1f ; 0xff8b5 orgs.asm:105
+ cld ; fc ; 0xff8b6 orgs.asm:106
+ call 06f23h ; e8 69 76 ; 0xff8b7 orgs.asm:1812
+ pop cx ; 59 ; 0xff8ba orgs.asm:1813
+ jcxz 0f8c9h ; e3 0c ; 0xff8bb orgs.asm:1814
+ push strict byte 00000h ; 6a 00 ; 0xff8bd orgs.asm:1818
+ pop DS ; 1f ; 0xff8bf orgs.asm:1823
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8c0 orgs.asm:1824
+ pop DS ; 1f ; 0xff8c4 orgs.asm:1825
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8c5 orgs.asm:1826
+ cli ; fa ; 0xff8c9 orgs.asm:1828
+ call 0e030h ; e8 63 e7 ; 0xff8ca orgs.asm:1829
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8cd orgs.asm:1830
+ pop DS ; 1f ; 0xff8d0 orgs.asm:1831
+ pop ES ; 07 ; 0xff8d1 orgs.asm:1832
+ popaw ; 61 ; 0xff8d2 orgs.asm:114
+ iret ; cf ; 0xff8d3 orgs.asm:1834
+ ; disGetNextSymbol 0xff8d4 LB 0x72c -> off=0x0 cb=0000000000000012 uValue=00000000000f18d4 'int76_handler'
+int76_handler: ; 0xff8d4 LB 0x12
+ push ax ; 50 ; 0xff8d4 orgs.asm:1841
+ push DS ; 1e ; 0xff8d5 orgs.asm:1842
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8d6 orgs.asm:1843
+ mov ds, ax ; 8e d8 ; 0xff8d9 orgs.asm:1844
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8db orgs.asm:1845
+ call 0e030h ; e8 4d e7 ; 0xff8e0 orgs.asm:1846
+ pop DS ; 1f ; 0xff8e3 orgs.asm:1847
+ pop ax ; 58 ; 0xff8e4 orgs.asm:1848
+ iret ; cf ; 0xff8e5 orgs.asm:1849
+ ; disGetNextSymbol 0xff8e6 LB 0x71a -> off=0x0 cb=000000000000001f uValue=00000000000f18e6 'int70_handler'
+int70_handler: ; 0xff8e6 LB 0x1f
+ push ES ; 06 ; 0xff8e6 orgs.asm:1858
+ push DS ; 1e ; 0xff8e7 orgs.asm:1859
+ pushaw ; 60 ; 0xff8e8 orgs.asm:97
+ push CS ; 0e ; 0xff8e9 orgs.asm:104
+ pop DS ; 1f ; 0xff8ea orgs.asm:105
+ cld ; fc ; 0xff8eb orgs.asm:106
+ call 06bdfh ; e8 f0 72 ; 0xff8ec orgs.asm:1862
+ popaw ; 61 ; 0xff8ef orgs.asm:114
+ pop DS ; 1f ; 0xff8f0 orgs.asm:1864
+ pop ES ; 07 ; 0xff8f1 orgs.asm:1865
+ iret ; cf ; 0xff8f2 orgs.asm:1866
+ jnbe short 0f8fah ; 77 05 ; 0xff8f3 orgs.asm:1876
+ cmp ax, 000b0h ; 3d b0 00 ; 0xff8f5 orgs.asm:1877
+ jc short 0f902h ; 72 08 ; 0xff8f8 orgs.asm:1878
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xff8fa orgs.asm:1881
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8fc orgs.asm:1882
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xff8fe orgs.asm:1884
+ jmp near 0fec1h ; e9 bc 05 ; 0xff902 orgs.asm:1886
+ ; disGetNextSymbol 0xff905 LB 0x6fb -> off=0x0 cb=0000000000000169 uValue=00000000000f1905 'biosorg_check_before_or_at_0FA6Ch'
+biosorg_check_before_or_at_0FA6Ch: ; 0xff905 LB 0x169
+ times 0x167 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffa6e LB 0x592 -> off=0x0 cb=0000000000000400 uValue=00000000000f1a6e 'font8x8'
+font8x8: ; 0xffa6e LB 0x400
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
+ db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
+ db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h, 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch
+ db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch, 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h
+ db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh, 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h
+ db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh, 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h
+ db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h, 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h
+ db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h, 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h
+ db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h, 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h
+ db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h
+ db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h, 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h
+ db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h, 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh
+ db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h
+ db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h, 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h
+ db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h
+ db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h
+ db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h, 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h
+ db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h, 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h
+ db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h, 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h
+ db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h, 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h
+ db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h, 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h, 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h, 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h
+ db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h, 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h
+ db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h, 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h
+ db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h, 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h
+ db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h, 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h
+ db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h, 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h
+ db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h
+ db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h, 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h
+ db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h, 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h
+ db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h, 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h
+ db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h, 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h
+ db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h, 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h
+ db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h, 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h
+ db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h, 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h, 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h
+ db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h, 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h
+ db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h, 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h
+ db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h, 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h
+ db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h, 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h
+ db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h, 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h
+ db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h, 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h
+ db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h
+ db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h, 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h
+ db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h, 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h
+ db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh
+ db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h
+ db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h, 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h
+ db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h, 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h
+ db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h, 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h
+ db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h
+ db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h, 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h
+ db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h, 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h
+ db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh
+ db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h, 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h
+ db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h, 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h
+ db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h, 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h
+ db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
+ db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
+ ; disGetNextSymbol 0xffe6e LB 0x192 -> off=0x0 cb=000000000000000d uValue=00000000000f1e6e 'biosorg_check_at_0FE6Eh'
+biosorg_check_at_0FE6Eh: ; 0xffe6e LB 0xd
+ push ES ; 06 ; 0xffe6e orgs.asm:1920
+ push DS ; 1e ; 0xffe6f orgs.asm:1921
+ pushaw ; 60 ; 0xffe70 orgs.asm:97
+ push CS ; 0e ; 0xffe71 orgs.asm:104
+ pop DS ; 1f ; 0xffe72 orgs.asm:105
+ cld ; fc ; 0xffe73 orgs.asm:106
+ call 06c87h ; e8 10 6e ; 0xffe74 orgs.asm:1925
+ popaw ; 61 ; 0xffe77 orgs.asm:114
+ pop DS ; 1f ; 0xffe78 orgs.asm:1927
+ pop ES ; 07 ; 0xffe79 orgs.asm:1928
+ iret ; cf ; 0xffe7a orgs.asm:1929
+ ; disGetNextSymbol 0xffe7b LB 0x185 -> off=0x0 cb=000000000000002a uValue=00000000000f1e7b 'biosorg_check_before_or_at_0FEA3h'
+biosorg_check_before_or_at_0FEA3h: ; 0xffe7b LB 0x2a
+ times 0x28 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffea5 LB 0x15b -> off=0x0 cb=0000000000000042 uValue=00000000000f1ea5 'int08_handler'
+int08_handler: ; 0xffea5 LB 0x42
+ sti ; fb ; 0xffea5 orgs.asm:1942
+ push ax ; 50 ; 0xffea6 orgs.asm:1943
+ push DS ; 1e ; 0xffea7 orgs.asm:1945
+ push dx ; 52 ; 0xffea8 orgs.asm:1946
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:1947
+ mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:1948
+ mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:1954
+ mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:1955
+ inc ax ; 40 ; 0xffeb5 orgs.asm:1956
+ jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:1957
+ inc dx ; 42 ; 0xffeb8 orgs.asm:1958
+ cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:1967
+ jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:1968
+ jmp near 0f8f3h ; e9 32 fa ; 0xffebe orgs.asm:1969
+ mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:1981
+ mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:1982
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1986
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1987
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1988
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:1989
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1990
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1991
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:1993
+ in AL, DX ; ec ; 0xffed9 orgs.asm:1994
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:1995
+ out DX, AL ; ee ; 0xffedc orgs.asm:1996
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:1999
+ cli ; fa ; 0xffedf orgs.asm:2001
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2002
+ pop dx ; 5a ; 0xffee3 orgs.asm:2003
+ pop DS ; 1f ; 0xffee4 orgs.asm:2004
+ pop ax ; 58 ; 0xffee5 orgs.asm:2009
+ iret ; cf ; 0xffee6 orgs.asm:2011
+ ; disGetNextSymbol 0xffee7 LB 0x119 -> off=0x0 cb=000000000000000c uValue=00000000000f1ee7 'biosorg_check_before_or_at_0FEF1h'
+biosorg_check_before_or_at_0FEF1h: ; 0xffee7 LB 0xc
+ times 0xa db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffef3 LB 0x10d -> off=0x0 cb=000000000000000d uValue=00000000000f1ef3 'biosorg_check_at_0FEF3h'
+biosorg_check_at_0FEF3h: ; 0xffef3 LB 0xd
+ times 0xb db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfff00 LB 0x100 -> off=0x0 cb=0000000000000019 uValue=00000000000f1f00 'biosorg_check_at_0FF00h'
+biosorg_check_at_0FF00h: ; 0xfff00 LB 0x19
+ dec di ; 4f ; 0xfff00
+ jc short 0ff64h ; 72 61 ; 0xfff01
+ arpl [si+065h], bp ; 63 6c 65 ; 0xfff03
+ and byte [bp+04dh], dl ; 20 56 4d ; 0xfff06
+ and byte [bp+069h], dl ; 20 56 69 ; 0xfff09
+ jc short 0ff82h ; 72 74 ; 0xfff0c
+ jne short 0ff71h ; 75 61 ; 0xfff0e
+ insb ; 6c ; 0xfff10
+ inc dx ; 42 ; 0xfff11
+ outsw ; 6f ; 0xfff12
+ js short 0ff35h ; 78 20 ; 0xfff13
+ inc dx ; 42 ; 0xfff15
+ dec cx ; 49 ; 0xfff16
+ dec di ; 4f ; 0xfff17
+ push bx ; 53 ; 0xfff18
+ ; disGetNextSymbol 0xfff19 LB 0xe7 -> off=0x0 cb=000000000000003a uValue=00000000000f1f19 'biosorg_check_before_or_at_0FF51h'
+biosorg_check_before_or_at_0FF51h: ; 0xfff19 LB 0x3a
+ times 0x38 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfff53 LB 0xad -> off=0x0 cb=0000000000000001 uValue=00000000000f1f53 'dummy_iret'
+dummy_iret: ; 0xfff53 LB 0x1
+ iret ; cf ; 0xfff53 orgs.asm:2036
+ ; disGetNextSymbol 0xfff54 LB 0xac -> off=0x0 cb=000000000000002c uValue=00000000000f1f54 'biosorg_check_at_0FF54h'
+biosorg_check_at_0FF54h: ; 0xfff54 LB 0x2c
+ iret ; cf ; 0xfff54 orgs.asm:2045
+ mov ax, ax ; 89 c0 ; 0xfff55
+ mov ax, ax ; 89 c0 ; 0xfff57
+ mov ax, ax ; 89 c0 ; 0xfff59
+ mov ax, ax ; 89 c0 ; 0xfff5b
+ mov ax, ax ; 89 c0 ; 0xfff5d
+ cld ; fc ; 0xfff5f
+ pop di ; 5f ; 0xfff60
+ push bx ; 53 ; 0xfff61
+ dec bp ; 4d ; 0xfff62
+ pop di ; 5f ; 0xfff63
+ jnl short 0ff85h ; 7d 1f ; 0xfff64
+ add al, byte [di] ; 02 05 ; 0xfff66
+ inc word [bx+si] ; ff 00 ; 0xfff68
+ add byte [bx+si], al ; 00 00 ; 0xfff6a
+ add byte [bx+si], al ; 00 00 ; 0xfff6c
+ add byte [bx+si], al ; 00 00 ; 0xfff6e
+ pop di ; 5f ; 0xfff70
+ inc sp ; 44 ; 0xfff71
+ dec bp ; 4d ; 0xfff72
+ dec cx ; 49 ; 0xfff73
+ pop di ; 5f ; 0xfff74
+ and ax, strict word 00000h ; 25 00 00 ; 0xfff75
+ add byte [bx+si], dl ; 00 10 ; 0xfff78
+ push CS ; 0e ; 0xfff7a
+ add byte [bx+si], al ; 00 00 ; 0xfff7b
+ add byte [di], ah ; 00 25 ; 0xfff7d
+ times 0x1 db 0
+ ; disGetNextSymbol 0xfff80 LB 0x80 -> off=0x0 cb=0000000000000070 uValue=00000000000f1f80 'biosorg_check_before_or_at_0FFEEh'
+biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70
+ times 0x6e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffff0 LB 0x10 -> off=0x0 cb=0000000000000010 uValue=00000000000f1ff0 'cpu_reset'
+cpu_reset: ; 0xffff0 LB 0x10
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2055
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 005h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
new file mode 100644
index 00000000..77ac3ff4
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
@@ -0,0 +1 @@
+3dad0312a44e67bb66402a756cd2eef8 *VBoxPcBios286.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
new file mode 100644
index 00000000..567b50f4
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
@@ -0,0 +1,17325 @@
+; $Id: VBoxBiosAlternative386.asm $
+;; @file
+; Auto Generated source file. Do not edit.
+;
+
+;
+; Source file: post.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; BIOS POST routines. Used only during initialization.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: print.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ata.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppy.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppyt.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Floppy drive tables.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: boot.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: keyboard.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: disk.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: serial.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: system.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: invop.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Real mode invalid opcode handler.
+;
+;
+;
+; Copyright (C) 2013-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ps2mouse.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: parallel.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: logo.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Stuff for drawing the BIOS logo.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative386.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative386.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xb0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xb0 -> off=0x0 cb=000000000000005b uValue=00000000000f0000 '_fd_parm'
+_fd_parm: ; 0xf0000 LB 0x5b
+ db 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 080h, 0dfh, 002h, 025h
+ db 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 040h, 0dfh, 002h, 025h, 002h, 00fh, 01bh
+ db 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 000h, 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h
+ db 00fh, 008h, 04fh, 080h, 0afh, 002h, 025h, 002h, 012h, 01bh, 0ffh, 06ch, 0f6h, 00fh, 008h, 04fh
+ db 000h, 0afh, 002h, 025h, 002h, 024h, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 0c0h, 0afh, 002h
+ db 025h, 002h, 0ffh, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 0ffh, 000h
+ ; disGetNextSymbol 0xf005b LB 0x55 -> off=0x0 cb=000000000000000f uValue=00000000000f005b '_fd_map'
+_fd_map: ; 0xf005b LB 0xf
+ db 001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
+ ; disGetNextSymbol 0xf006a LB 0x46 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 032h, 02ch, 0b3h, 080h, 026h, 090h
+ ; disGetNextSymbol 0xf0076 LB 0x3a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst'
+_softrst: ; 0xf0076 LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 011h, 02fh, 07dh, 03ch, 07dh, 03ch
+ ; disGetNextSymbol 0xf0082 LB 0x2e -> off=0x0 cb=000000000000002e uValue=00000000000f0082 '_dskacc'
+_dskacc: ; 0xf0082 LB 0x2e
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 022h, 02bh, 0d7h, 02bh, 000h, 000h, 000h, 000h
+ db 0fdh, 07eh, 0d8h, 07fh, 0fch, 08eh, 0a2h, 08fh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+ db 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xb0 align=1 ; size=0xcf0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00b0 LB 0xcf0 -> off=0xcf0 cb=0000000000000000 uValue=00000000000f0da0 'bios_cvs_version_string'
+ db 'CPUID EDX: 0x%lx', 00ah, 000h
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db '%s', 00ah, 000h, 000h
+ db 'FATAL: ', 000h
+ db 'bios_printf: unknown %ll format', 00ah, 000h
+ db 'bios_printf: unknown format', 00ah, 000h
+ db 'ata-detect: Failed to detect ATA device', 00ah, 000h
+ db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h
+ db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h
+ db ' slave', 000h
+ db 'master', 000h
+ db 'ata%d %s: ', 000h
+ db '%c', 000h
+ db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h
+ db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h
+ db ' ATAPI-%d Device', 00ah, 000h
+ db 'ata%d %s: Unknown device', 00ah, 000h
+ db 'ata_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'set_diskette_current_cyl: drive > 1', 00ah, 000h
+ db 'int13_diskette_function', 000h
+ db '%s: drive>1 || head>1 ...', 00ah, 000h
+ db '%s: ctrl not ready', 00ah, 000h
+ db '%s: write error', 00ah, 000h
+ db '%s: bad floppy type', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h, 000h
+ db 'int13_eltorito', 000h
+ db '%s: call with AX=%04x not implemented.', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h
+ db 'int13_cdemu', 000h
+ db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h
+ db '%s: function %02x, status %02x !', 00ah, 000h
+ db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h
+ db 'int13_cdrom', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h
+ db 'Booting from %s...', 00ah, 000h
+ db 'Boot from %s failed', 00ah, 000h
+ db 'Boot from %s %d failed', 00ah, 000h
+ db 'No bootable medium found! System halted.', 00ah, 000h
+ db 'Could not read from the boot medium! System halted.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h
+ db 'Keyboard error:%u', 00ah, 000h
+ db 'KBD: int09 handler: AL=0', 00ah, 000h
+ db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h
+ db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h
+ db 'KBD: int16h: out of keyboard input', 00ah, 000h
+ db 'KBD: unsupported int 16h function %02x', 00ah, 000h
+ db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h
+ db 'int13_harddisk', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h
+ db '%s: function %02x, count out of range!', 00ah, 000h
+ db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah
+ db 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db 'format disk track called', 00ah, 000h
+ db '%s: function %02xh unimplemented, returns success', 00ah, 000h
+ db '%s: function %02xh unsupported, returns fail', 00ah, 000h
+ db 'int13_harddisk_ext', 000h
+ db '%s: function %02x. LBA out of range', 00ah, 000h, 000h
+ db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h
+ db '*** int 15h function AH=bf not yet supported!', 00ah, 000h
+ db 'EISA BIOS not present', 00ah, 000h
+ db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h
+ db 'sendmouse', 000h
+ db 'setkbdcomm', 000h
+ db 'Mouse reset returned %02x (should be ack)', 00ah, 000h
+ db 'Mouse status returned %02x (should be ack)', 00ah, 000h
+ db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h
+ db 'INT 15h C2 default case entered', 00ah, 000h, 000h
+ db 'Key pressed: %x', 00ah, 000h
+ db 00ah, 00ah, ' AHCI controller:', 000h
+ db 00ah, ' %d) Hard disk', 000h
+ db 00ah, 00ah, ' SCSI controller:', 000h
+ db ' IDE controller:', 000h
+ db 00ah, 00ah, 'AHCI controller:', 00ah, 000h
+ db 00ah, ' %d) ', 000h
+ db 'Secondary ', 000h
+ db 'Primary ', 000h
+ db 'Slave', 000h
+ db 'Master', 000h
+ db 'No hard disks found', 000h
+ db 00ah, 000h
+ db 'Press F12 to select boot device.', 00ah, 000h
+ db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H'
+ db 'ard disks:', 00ah, 00ah, 000h
+ db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah
+ db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h
+ db 'Delaying boot for %d seconds:', 000h
+ db ' %d', 000h, 000h
+ db 'scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'scsi_write_sectors', 000h
+ db 'scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'scsi_enumerate_attached_devices', 000h
+ db '%s: SCSI_INQUIRY failed', 00ah, 000h
+ db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
+ db 'Disk %d has an unsupported sector size of %u', 00ah, 000h
+ db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
+ db 'ahci_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'ahci_write_sectors', 000h
+ db 'ahci_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'Standby', 000h
+ db 'Suspend', 000h
+ db 'Shutdown', 000h
+ db 'APM: Unsupported function AX=%04X BX=%04X called', 00ah, 000h, 000h
+ db 'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
+
+section CONST2 progbits vstart=0xda0 align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0da0 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0da0 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0da0 LB 0x12
+ db 'VirtualBox 6.0.4', 000h, 000h
+ ; disGetNextSymbol 0xf0db2 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0db2 '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0db2 LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0dba LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0dba 'isotag'
+isotag: ; 0xf0dba LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0dc0 LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dc0 'eltorito'
+eltorito: ; 0xf0dc0 LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0dd8 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0dd8 'drivetypes'
+drivetypes: ; 0xf0dd8 LB 0x28
+ db 046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
+ db 069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
+ db 04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ ; disGetNextSymbol 0xf0e00 LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0e00 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0e00 LB 0x37a
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
+ db 000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
+ db 040h, 003h, 000h, 003h, 000h, 079h, 000h, 000h, 033h, 004h, 023h, 004h, 000h, 000h, 000h, 07ah
+ db 000h, 000h, 034h, 005h, 024h, 005h, 000h, 000h, 000h, 07bh, 000h, 000h, 035h, 006h, 025h, 006h
+ db 000h, 000h, 000h, 07ch, 000h, 000h, 036h, 007h, 05eh, 007h, 01eh, 007h, 000h, 07dh, 000h, 000h
+ db 037h, 008h, 026h, 008h, 000h, 000h, 000h, 07eh, 000h, 000h, 038h, 009h, 02ah, 009h, 000h, 000h
+ db 000h, 07fh, 000h, 000h, 039h, 00ah, 028h, 00ah, 000h, 000h, 000h, 080h, 000h, 000h, 030h, 00bh
+ db 029h, 00bh, 000h, 000h, 000h, 081h, 000h, 000h, 02dh, 00ch, 05fh, 00ch, 01fh, 00ch, 000h, 082h
+ db 000h, 000h, 03dh, 00dh, 02bh, 00dh, 000h, 000h, 000h, 083h, 000h, 000h, 008h, 00eh, 008h, 00eh
+ db 07fh, 00eh, 000h, 000h, 000h, 000h, 009h, 00fh, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h
+ db 071h, 010h, 051h, 010h, 011h, 010h, 000h, 010h, 040h, 000h, 077h, 011h, 057h, 011h, 017h, 011h
+ db 000h, 011h, 040h, 000h, 065h, 012h, 045h, 012h, 005h, 012h, 000h, 012h, 040h, 000h, 072h, 013h
+ db 052h, 013h, 012h, 013h, 000h, 013h, 040h, 000h, 074h, 014h, 054h, 014h, 014h, 014h, 000h, 014h
+ db 040h, 000h, 079h, 015h, 059h, 015h, 019h, 015h, 000h, 015h, 040h, 000h, 075h, 016h, 055h, 016h
+ db 015h, 016h, 000h, 016h, 040h, 000h, 069h, 017h, 049h, 017h, 009h, 017h, 000h, 017h, 040h, 000h
+ db 06fh, 018h, 04fh, 018h, 00fh, 018h, 000h, 018h, 040h, 000h, 070h, 019h, 050h, 019h, 010h, 019h
+ db 000h, 019h, 040h, 000h, 05bh, 01ah, 07bh, 01ah, 01bh, 01ah, 000h, 000h, 000h, 000h, 05dh, 01bh
+ db 07dh, 01bh, 01dh, 01bh, 000h, 000h, 000h, 000h, 00dh, 01ch, 00dh, 01ch, 00ah, 01ch, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 061h, 01eh, 041h, 01eh
+ db 001h, 01eh, 000h, 01eh, 040h, 000h, 073h, 01fh, 053h, 01fh, 013h, 01fh, 000h, 01fh, 040h, 000h
+ db 064h, 020h, 044h, 020h, 004h, 020h, 000h, 020h, 040h, 000h, 066h, 021h, 046h, 021h, 006h, 021h
+ db 000h, 021h, 040h, 000h, 067h, 022h, 047h, 022h, 007h, 022h, 000h, 022h, 040h, 000h, 068h, 023h
+ db 048h, 023h, 008h, 023h, 000h, 023h, 040h, 000h, 06ah, 024h, 04ah, 024h, 00ah, 024h, 000h, 024h
+ db 040h, 000h, 06bh, 025h, 04bh, 025h, 00bh, 025h, 000h, 025h, 040h, 000h, 06ch, 026h, 04ch, 026h
+ db 00ch, 026h, 000h, 026h, 040h, 000h, 03bh, 027h, 03ah, 027h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 027h, 028h, 022h, 028h, 000h, 000h, 000h, 000h, 000h, 000h, 060h, 029h, 07eh, 029h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 02bh
+ db 07ch, 02bh, 01ch, 02bh, 000h, 000h, 000h, 000h, 07ah, 02ch, 05ah, 02ch, 01ah, 02ch, 000h, 02ch
+ db 040h, 000h, 078h, 02dh, 058h, 02dh, 018h, 02dh, 000h, 02dh, 040h, 000h, 063h, 02eh, 043h, 02eh
+ db 003h, 02eh, 000h, 02eh, 040h, 000h, 076h, 02fh, 056h, 02fh, 016h, 02fh, 000h, 02fh, 040h, 000h
+ db 062h, 030h, 042h, 030h, 002h, 030h, 000h, 030h, 040h, 000h, 06eh, 031h, 04eh, 031h, 00eh, 031h
+ db 000h, 031h, 040h, 000h, 06dh, 032h, 04dh, 032h, 00dh, 032h, 000h, 032h, 040h, 000h, 02ch, 033h
+ db 03ch, 033h, 000h, 000h, 000h, 000h, 000h, 000h, 02eh, 034h, 03eh, 034h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 02fh, 035h, 03fh, 035h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 037h, 02ah, 037h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 039h, 020h, 039h, 020h, 039h
+ db 020h, 039h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03bh
+ db 000h, 054h, 000h, 05eh, 000h, 068h, 000h, 000h, 000h, 03ch, 000h, 055h, 000h, 05fh, 000h, 069h
+ db 000h, 000h, 000h, 03dh, 000h, 056h, 000h, 060h, 000h, 06ah, 000h, 000h, 000h, 03eh, 000h, 057h
+ db 000h, 061h, 000h, 06bh, 000h, 000h, 000h, 03fh, 000h, 058h, 000h, 062h, 000h, 06ch, 000h, 000h
+ db 000h, 040h, 000h, 059h, 000h, 063h, 000h, 06dh, 000h, 000h, 000h, 041h, 000h, 05ah, 000h, 064h
+ db 000h, 06eh, 000h, 000h, 000h, 042h, 000h, 05bh, 000h, 065h, 000h, 06fh, 000h, 000h, 000h, 043h
+ db 000h, 05ch, 000h, 066h, 000h, 070h, 000h, 000h, 000h, 044h, 000h, 05dh, 000h, 067h, 000h, 071h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 047h, 037h, 047h, 000h, 077h, 000h, 000h, 020h, 000h
+ db 000h, 048h, 038h, 048h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 049h, 039h, 049h, 000h, 084h
+ db 000h, 000h, 020h, 000h, 02dh, 04ah, 02dh, 04ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04bh
+ db 034h, 04bh, 000h, 073h, 000h, 000h, 020h, 000h, 000h, 04ch, 035h, 04ch, 000h, 000h, 000h, 000h
+ db 020h, 000h, 000h, 04dh, 036h, 04dh, 000h, 074h, 000h, 000h, 020h, 000h, 02bh, 04eh, 02bh, 04eh
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04fh, 031h, 04fh, 000h, 075h, 000h, 000h, 020h, 000h
+ db 000h, 050h, 032h, 050h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 051h, 033h, 051h, 000h, 076h
+ db 000h, 000h, 020h, 000h, 000h, 052h, 030h, 052h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 053h
+ db 02eh, 053h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 056h, 07ch, 056h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
+ db 000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
+ ; disGetNextSymbol 0xf117a LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f117a 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf117a LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x466 bytes at 0xf119a
+ times 1126 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x8a45 class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x8a45 -> off=0x0 cb=0000000000000050 uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x50
+ push bp ; 55 ; 0xf1600 post.c:73
+ mov bp, sp ; 89 e5 ; 0xf1601
+ push bx ; 53 ; 0xf1603
+ push cx ; 51 ; 0xf1604
+ push si ; 56 ; 0xf1605
+ push ax ; 50 ; 0xf1606
+ push ax ; 50 ; 0xf1607
+ mov bx, ax ; 89 c3 ; 0xf1608
+ mov cx, dx ; 89 d1 ; 0xf160a
+ cmp bx, cx ; 39 cb ; 0xf160c post.c:80
+ jnc short 01648h ; 73 38 ; 0xf160e
+ xor si, si ; 31 f6 ; 0xf1610 post.c:81
+ mov dx, bx ; 89 da ; 0xf1612
+ mov es, bx ; 8e c3 ; 0xf1614 post.c:83
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf1616
+ jne short 01642h ; 75 25 ; 0xf161b
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf161d post.c:89
+ mov word [bp-00ah], strict word 00003h ; c7 46 f6 03 00 ; 0xf1620
+ call far [bp-00ah] ; ff 5e f6 ; 0xf1625 post.c:90
+ cli ; fa ; 0xf1628 post.c:91
+ mov es, bx ; 8e c3 ; 0xf1629 post.c:95
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf162b
+ add AL, strict byte 003h ; 04 03 ; 0xf162f
+ and AL, strict byte 0fch ; 24 fc ; 0xf1631
+ xor ah, ah ; 30 e4 ; 0xf1633 post.c:96
+ cwd ; 99 ; 0xf1635
+ sal dx, 002h ; c1 e2 02 ; 0xf1636
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf1639
+ sar ax, 002h ; c1 f8 02 ; 0xf163b
+ add bx, ax ; 01 c3 ; 0xf163e
+ jmp short 0160ch ; eb ca ; 0xf1640 post.c:98
+ add bx, 00080h ; 81 c3 80 00 ; 0xf1642 post.c:100
+ jmp short 0160ch ; eb c4 ; 0xf1646 post.c:102
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf1648 post.c:103
+ pop si ; 5e ; 0xf164b
+ pop cx ; 59 ; 0xf164c
+ pop bx ; 5b ; 0xf164d
+ pop bp ; 5d ; 0xf164e
+ retn ; c3 ; 0xf164f
+ ; disGetNextSymbol 0xf1650 LB 0x89f5 -> off=0x0 cb=0000000000000042 uValue=00000000000f0050 'is_cpuid_supported'
+is_cpuid_supported: ; 0xf1650 LB 0x42
+ push bp ; 55 ; 0xf1650 post.c:110
+ mov bp, sp ; 89 e5 ; 0xf1651
+ push bx ; 53 ; 0xf1653
+ push cx ; 51 ; 0xf1654
+ push dx ; 52 ; 0xf1655
+ pushfd ; 66 9c ; 0xf1656 post.c:114
+ pop edx ; 66 5a ; 0xf1658
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf165a
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf165c
+ mov bx, ax ; 89 c3 ; 0xf1660
+ mov cx, dx ; 89 d1 ; 0xf1662
+ xor dl, 020h ; 80 f2 20 ; 0xf1664 post.c:115
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf1667 post.c:116
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf166b
+ push edx ; 66 52 ; 0xf166d
+ popfd ; 66 9d ; 0xf166f
+ pushfd ; 66 9c ; 0xf1671 post.c:117
+ pop edx ; 66 5a ; 0xf1673
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf1675
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf1677
+ cmp cx, dx ; 39 d1 ; 0xf167b post.c:118
+ jne short 01683h ; 75 04 ; 0xf167d
+ cmp bx, ax ; 39 c3 ; 0xf167f
+ je short 01688h ; 74 05 ; 0xf1681
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1683
+ jmp short 0168ah ; eb 02 ; 0xf1686
+ xor ax, ax ; 31 c0 ; 0xf1688
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf168a post.c:119
+ pop dx ; 5a ; 0xf168d
+ pop cx ; 59 ; 0xf168e
+ pop bx ; 5b ; 0xf168f
+ pop bp ; 5d ; 0xf1690
+ retn ; c3 ; 0xf1691
+ ; disGetNextSymbol 0xf1692 LB 0x89b3 -> off=0x0 cb=00000000000000c4 uValue=00000000000f0092 'apic_setup'
+apic_setup: ; 0xf1692 LB 0xc4
+ push bp ; 55 ; 0xf1692 post.c:144
+ mov bp, sp ; 89 e5 ; 0xf1693
+ push si ; 56 ; 0xf1695
+ push di ; 57 ; 0xf1696
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf1697
+ call 01650h ; e8 b3 ff ; 0xf169a post.c:153
+ test ax, ax ; 85 c0 ; 0xf169d
+ je near 0174fh ; 0f 84 ac 00 ; 0xf169f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf16a3 post.c:158
+ xor dx, dx ; 31 d2 ; 0xf16a6
+ push SS ; 16 ; 0xf16a8
+ pop ES ; 07 ; 0xf16a9
+ lea di, [bp-016h] ; 8d 7e ea ; 0xf16aa
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf16ad
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf16b1
+ db 066h, 08bh, 0c2h
+ ; mov eax, edx ; 66 8b c2 ; 0xf16b3
+ cpuid ; 0f a2 ; 0xf16b6
+ db 066h, 026h, 089h, 005h
+ ; mov dword [es:di], eax ; 66 26 89 05 ; 0xf16b8
+ db 066h, 026h, 089h, 05dh, 004h
+ ; mov dword [es:di+004h], ebx ; 66 26 89 5d 04 ; 0xf16bc
+ db 066h, 026h, 089h, 04dh, 008h
+ ; mov dword [es:di+008h], ecx ; 66 26 89 4d 08 ; 0xf16c1
+ db 066h, 026h, 089h, 055h, 00ch
+ ; mov dword [es:di+00ch], edx ; 66 26 89 55 0c ; 0xf16c6
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16cb post.c:159
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf16ce
+ push dx ; 52 ; 0xf16d1
+ push ax ; 50 ; 0xf16d2
+ push 000b0h ; 68 b0 00 ; 0xf16d3
+ push strict byte 00004h ; 6a 04 ; 0xf16d6
+ call 01a14h ; e8 39 03 ; 0xf16d8
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf16db
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf16de post.c:160
+ test ah, 002h ; f6 c4 02 ; 0xf16e1
+ je short 0174fh ; 74 69 ; 0xf16e4
+ mov ax, strict word 00078h ; b8 78 00 ; 0xf16e6 post.c:165
+ call 01756h ; e8 6a 00 ; 0xf16e9
+ xor si, si ; 31 f6 ; 0xf16ec post.c:167
+ xor di, di ; 31 ff ; 0xf16ee
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf16f0 post.c:168
+ jne short 016f9h ; 75 05 ; 0xf16f2
+ mov di, 00400h ; bf 00 04 ; 0xf16f4 post.c:169
+ jmp short 01708h ; eb 0f ; 0xf16f7 post.c:170
+ test al, al ; 84 c0 ; 0xf16f9
+ jne short 01700h ; 75 03 ; 0xf16fb
+ mov si, 00800h ; be 00 08 ; 0xf16fd post.c:171
+ test di, di ; 85 ff ; 0xf1700 post.c:175
+ jne short 01708h ; 75 04 ; 0xf1702
+ test si, si ; 85 f6 ; 0xf1704
+ je short 0174fh ; 74 47 ; 0xf1706
+ mov ax, strict word 0001bh ; b8 1b 00 ; 0xf1708 post.c:176
+ xor cx, cx ; 31 c9 ; 0xf170b
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xf170d
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xf1711
+ rdmsr ; 0f 32 ; 0xf1713
+ xchg edx, eax ; 66 92 ; 0xf1715
+ db 08bh, 0d8h
+ ; mov bx, ax ; 8b d8 ; 0xf1717
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf1719
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xf171d
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf171f
+ xchg dx, cx ; 87 ca ; 0xf1723
+ mov word [bp-006h], si ; 89 76 fa ; 0xf1725 post.c:177
+ not word [bp-006h] ; f7 56 fa ; 0xf1728
+ and dx, word [bp-006h] ; 23 56 fa ; 0xf172b
+ or dx, di ; 09 fa ; 0xf172e post.c:178
+ mov si, strict word 0001bh ; be 1b 00 ; 0xf1730 post.c:179
+ xor di, di ; 31 ff ; 0xf1733
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf1735
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xf1739
+ xchg dx, cx ; 87 ca ; 0xf173b
+ sal edx, 010h ; 66 c1 e2 10 ; 0xf173d
+ db 08bh, 0d1h
+ ; mov dx, cx ; 8b d1 ; 0xf1741
+ xchg edx, eax ; 66 92 ; 0xf1743
+ db 08bh, 0cfh
+ ; mov cx, di ; 8b cf ; 0xf1745
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xf1747
+ db 08bh, 0ceh
+ ; mov cx, si ; 8b ce ; 0xf174b
+ wrmsr ; 0f 30 ; 0xf174d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf174f post.c:181
+ pop di ; 5f ; 0xf1752
+ pop si ; 5e ; 0xf1753
+ pop bp ; 5d ; 0xf1754
+ retn ; c3 ; 0xf1755
+ ; disGetNextSymbol 0xf1756 LB 0x88ef -> off=0x0 cb=000000000000001d uValue=00000000000f0156 'inb_cmos'
+inb_cmos: ; 0xf1756 LB 0x1d
+ push bp ; 55 ; 0xf1756 bios.c:65
+ mov bp, sp ; 89 e5 ; 0xf1757
+ push dx ; 52 ; 0xf1759
+ mov AH, strict byte 070h ; b4 70 ; 0xf175a bios.c:67
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf175c bios.c:69
+ jc short 01762h ; 72 02 ; 0xf175e
+ mov AH, strict byte 072h ; b4 72 ; 0xf1760 bios.c:70
+ movzx dx, ah ; 0f b6 d4 ; 0xf1762 bios.c:71
+ out DX, AL ; ee ; 0xf1765
+ movzx dx, ah ; 0f b6 d4 ; 0xf1766 bios.c:72
+ inc dx ; 42 ; 0xf1769
+ in AL, DX ; ec ; 0xf176a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf176b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf176d bios.c:73
+ pop dx ; 5a ; 0xf1770
+ pop bp ; 5d ; 0xf1771
+ retn ; c3 ; 0xf1772
+ ; disGetNextSymbol 0xf1773 LB 0x88d2 -> off=0x0 cb=000000000000001f uValue=00000000000f0173 'outb_cmos'
+outb_cmos: ; 0xf1773 LB 0x1f
+ push bp ; 55 ; 0xf1773 bios.c:75
+ mov bp, sp ; 89 e5 ; 0xf1774
+ push bx ; 53 ; 0xf1776
+ mov ah, dl ; 88 d4 ; 0xf1777
+ mov BL, strict byte 070h ; b3 70 ; 0xf1779 bios.c:77
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf177b bios.c:79
+ jc short 01781h ; 72 02 ; 0xf177d
+ mov BL, strict byte 072h ; b3 72 ; 0xf177f bios.c:80
+ movzx dx, bl ; 0f b6 d3 ; 0xf1781 bios.c:81
+ out DX, AL ; ee ; 0xf1784
+ movzx dx, bl ; 0f b6 d3 ; 0xf1785 bios.c:82
+ inc dx ; 42 ; 0xf1788
+ mov al, ah ; 88 e0 ; 0xf1789
+ out DX, AL ; ee ; 0xf178b
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf178c bios.c:83
+ pop bx ; 5b ; 0xf178f
+ pop bp ; 5d ; 0xf1790
+ retn ; c3 ; 0xf1791
+ ; disGetNextSymbol 0xf1792 LB 0x88b3 -> off=0x0 cb=000000000000006a uValue=00000000000f0192 'dummy_isr_function'
+dummy_isr_function: ; 0xf1792 LB 0x6a
+ push bp ; 55 ; 0xf1792 bios.c:85
+ mov bp, sp ; 89 e5 ; 0xf1793
+ push ax ; 50 ; 0xf1795
+ mov CH, strict byte 0ffh ; b5 ff ; 0xf1796 bios.c:93
+ mov AL, strict byte 00bh ; b0 0b ; 0xf1798 bios.c:95
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf179a
+ out DX, AL ; ee ; 0xf179d
+ in AL, DX ; ec ; 0xf179e bios.c:96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf179f
+ mov bx, ax ; 89 c3 ; 0xf17a1
+ mov cl, al ; 88 c1 ; 0xf17a3
+ test al, al ; 84 c0 ; 0xf17a5 bios.c:97
+ je short 017edh ; 74 44 ; 0xf17a7
+ mov AL, strict byte 00bh ; b0 0b ; 0xf17a9 bios.c:98
+ mov dx, 000a0h ; ba a0 00 ; 0xf17ab
+ out DX, AL ; ee ; 0xf17ae
+ in AL, DX ; ec ; 0xf17af bios.c:99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17b0
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf17b2
+ cmp byte [bp-002h], 000h ; 80 7e fe 00 ; 0xf17b5 bios.c:100
+ je short 017d3h ; 74 18 ; 0xf17b9
+ mov dx, 000a1h ; ba a1 00 ; 0xf17bb bios.c:101
+ in AL, DX ; ec ; 0xf17be
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17bf
+ movzx bx, al ; 0f b6 d8 ; 0xf17c1 bios.c:102
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf17c4
+ or ax, bx ; 09 d8 ; 0xf17c8
+ out DX, AL ; ee ; 0xf17ca
+ mov AL, strict byte 020h ; b0 20 ; 0xf17cb bios.c:103
+ mov dx, 000a0h ; ba a0 00 ; 0xf17cd
+ out DX, AL ; ee ; 0xf17d0
+ jmp short 017e5h ; eb 12 ; 0xf17d1 bios.c:104
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf17d3 bios.c:105
+ in AL, DX ; ec ; 0xf17d6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf17d7
+ and cl, 0fbh ; 80 e1 fb ; 0xf17d9 bios.c:106
+ movzx bx, al ; 0f b6 d8 ; 0xf17dc bios.c:107
+ movzx ax, cl ; 0f b6 c1 ; 0xf17df
+ or ax, bx ; 09 d8 ; 0xf17e2
+ out DX, AL ; ee ; 0xf17e4
+ mov AL, strict byte 020h ; b0 20 ; 0xf17e5 bios.c:109
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17e7
+ out DX, AL ; ee ; 0xf17ea
+ mov ch, cl ; 88 cd ; 0xf17eb bios.c:110
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf17ed bios.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf17f0
+ mov es, ax ; 8e c0 ; 0xf17f3
+ mov byte [es:bx], ch ; 26 88 2f ; 0xf17f5
+ mov sp, bp ; 89 ec ; 0xf17f8 bios.c:113
+ pop bp ; 5d ; 0xf17fa
+ retn ; c3 ; 0xf17fb
+ ; disGetNextSymbol 0xf17fc LB 0x8849 -> off=0x0 cb=0000000000000012 uValue=00000000000f01fc 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf17fc LB 0x12
+ push bp ; 55 ; 0xf17fc bios.c:116
+ mov bp, sp ; 89 e5 ; 0xf17fd
+ push 000c2h ; 68 c2 00 ; 0xf17ff bios.c:118
+ push strict byte 00007h ; 6a 07 ; 0xf1802
+ call 01a14h ; e8 0d 02 ; 0xf1804
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1807
+ mov sp, bp ; 89 ec ; 0xf180a bios.c:119
+ pop bp ; 5d ; 0xf180c
+ retn ; c3 ; 0xf180d
+ ; disGetNextSymbol 0xf180e LB 0x8837 -> off=0x0 cb=0000000000000012 uValue=00000000000f020e 'int18_panic_msg'
+int18_panic_msg: ; 0xf180e LB 0x12
+ push bp ; 55 ; 0xf180e bios.c:121
+ mov bp, sp ; 89 e5 ; 0xf180f
+ push 000d6h ; 68 d6 00 ; 0xf1811 bios.c:123
+ push strict byte 00007h ; 6a 07 ; 0xf1814
+ call 01a14h ; e8 fb 01 ; 0xf1816
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1819
+ mov sp, bp ; 89 ec ; 0xf181c bios.c:124
+ pop bp ; 5d ; 0xf181e
+ retn ; c3 ; 0xf181f
+ ; disGetNextSymbol 0xf1820 LB 0x8825 -> off=0x0 cb=0000000000000020 uValue=00000000000f0220 'log_bios_start'
+log_bios_start: ; 0xf1820 LB 0x20
+ push bp ; 55 ; 0xf1820 bios.c:126
+ mov bp, sp ; 89 e5 ; 0xf1821
+ mov bx, 00db2h ; bb b2 0d ; 0xf1823 bios.c:131
+ mov cx, ds ; 8c d9 ; 0xf1826
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf1828
+ call 019d3h ; e8 a5 01 ; 0xf182b
+ push 00da0h ; 68 a0 0d ; 0xf182e
+ push 000ebh ; 68 eb 00 ; 0xf1831
+ push strict byte 00004h ; 6a 04 ; 0xf1834
+ call 01a14h ; e8 db 01 ; 0xf1836
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf1839
+ mov sp, bp ; 89 ec ; 0xf183c bios.c:132
+ pop bp ; 5d ; 0xf183e
+ retn ; c3 ; 0xf183f
+ ; disGetNextSymbol 0xf1840 LB 0x8805 -> off=0x0 cb=0000000000000027 uValue=00000000000f0240 'print_bios_banner'
+print_bios_banner: ; 0xf1840 LB 0x27
+ push bp ; 55 ; 0xf1840 bios.c:151
+ mov bp, sp ; 89 e5 ; 0xf1841
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf1843 bios.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1846
+ mov es, ax ; 8e c0 ; 0xf1849
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf184b
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf184e bios.c:53
+ cmp ax, 01234h ; 3d 34 12 ; 0xf1853 bios.c:157
+ jne short 01860h ; 75 08 ; 0xf1856
+ mov AL, strict byte 003h ; b0 03 ; 0xf1858 bios.c:160
+ mov AH, strict byte 000h ; b4 00 ; 0xf185a
+ int 010h ; cd 10 ; 0xf185c
+ jmp short 01863h ; eb 03 ; 0xf185e bios.c:161
+ call 07a98h ; e8 35 62 ; 0xf1860 bios.c:164
+ mov sp, bp ; 89 ec ; 0xf1863 bios.c:191
+ pop bp ; 5d ; 0xf1865
+ retn ; c3 ; 0xf1866
+ ; disGetNextSymbol 0xf1867 LB 0x87de -> off=0x0 cb=000000000000003b uValue=00000000000f0267 'send'
+send: ; 0xf1867 LB 0x3b
+ push bp ; 55 ; 0xf1867 print.c:72
+ mov bp, sp ; 89 e5 ; 0xf1868
+ push bx ; 53 ; 0xf186a
+ push cx ; 51 ; 0xf186b
+ mov bx, ax ; 89 c3 ; 0xf186c
+ mov cl, dl ; 88 d1 ; 0xf186e
+ test AL, strict byte 008h ; a8 08 ; 0xf1870 print.c:80
+ je short 0187ah ; 74 06 ; 0xf1872
+ mov al, dl ; 88 d0 ; 0xf1874 print.c:81
+ mov dx, 00403h ; ba 03 04 ; 0xf1876
+ out DX, AL ; ee ; 0xf1879
+ test bl, 004h ; f6 c3 04 ; 0xf187a print.c:82
+ je short 01885h ; 74 06 ; 0xf187d
+ mov al, cl ; 88 c8 ; 0xf187f print.c:83
+ mov dx, 00504h ; ba 04 05 ; 0xf1881
+ out DX, AL ; ee ; 0xf1884
+ test bl, 002h ; f6 c3 02 ; 0xf1885 print.c:85
+ je short 0189bh ; 74 11 ; 0xf1888
+ cmp cl, 00ah ; 80 f9 0a ; 0xf188a print.c:86
+ jne short 01895h ; 75 06 ; 0xf188d
+ mov AL, strict byte 00dh ; b0 0d ; 0xf188f print.c:87
+ mov AH, strict byte 00eh ; b4 0e ; 0xf1891
+ int 010h ; cd 10 ; 0xf1893
+ mov al, cl ; 88 c8 ; 0xf1895 print.c:88
+ mov AH, strict byte 00eh ; b4 0e ; 0xf1897
+ int 010h ; cd 10 ; 0xf1899
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf189b print.c:90
+ pop cx ; 59 ; 0xf189e
+ pop bx ; 5b ; 0xf189f
+ pop bp ; 5d ; 0xf18a0
+ retn ; c3 ; 0xf18a1
+ ; disGetNextSymbol 0xf18a2 LB 0x87a3 -> off=0x0 cb=000000000000005f uValue=00000000000f02a2 'put_int'
+put_int: ; 0xf18a2 LB 0x5f
+ push bp ; 55 ; 0xf18a2 print.c:92
+ mov bp, sp ; 89 e5 ; 0xf18a3
+ push si ; 56 ; 0xf18a5
+ push di ; 57 ; 0xf18a6
+ push ax ; 50 ; 0xf18a7
+ push ax ; 50 ; 0xf18a8
+ mov si, ax ; 89 c6 ; 0xf18a9
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf18ab
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf18ae print.c:94
+ mov ax, dx ; 89 d0 ; 0xf18b1
+ cwd ; 99 ; 0xf18b3
+ idiv di ; f7 ff ; 0xf18b4
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf18b6
+ test ax, ax ; 85 c0 ; 0xf18b9 print.c:95
+ je short 018c7h ; 74 0a ; 0xf18bb
+ dec bx ; 4b ; 0xf18bd print.c:96
+ mov dx, ax ; 89 c2 ; 0xf18be
+ mov ax, si ; 89 f0 ; 0xf18c0
+ call 018a2h ; e8 dd ff ; 0xf18c2
+ jmp short 018e2h ; eb 1b ; 0xf18c5 print.c:97
+ dec bx ; 4b ; 0xf18c7 print.c:98
+ test bx, bx ; 85 db ; 0xf18c8
+ jle short 018d6h ; 7e 0a ; 0xf18ca
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf18cc print.c:99
+ mov ax, si ; 89 f0 ; 0xf18cf
+ call 01867h ; e8 93 ff ; 0xf18d1
+ jmp short 018c7h ; eb f1 ; 0xf18d4
+ test cx, cx ; 85 c9 ; 0xf18d6 print.c:100
+ je short 018e2h ; 74 08 ; 0xf18d8
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18da print.c:101
+ mov ax, si ; 89 f0 ; 0xf18dd
+ call 01867h ; e8 85 ff ; 0xf18df
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf18e2 print.c:103
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18e5
+ mul dl ; f6 e2 ; 0xf18e7
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf18e9
+ sub dl, al ; 28 c2 ; 0xf18ec
+ mov al, dl ; 88 d0 ; 0xf18ee
+ add AL, strict byte 030h ; 04 30 ; 0xf18f0
+ movzx dx, al ; 0f b6 d0 ; 0xf18f2
+ mov ax, si ; 89 f0 ; 0xf18f5
+ call 01867h ; e8 6d ff ; 0xf18f7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18fa print.c:104
+ pop di ; 5f ; 0xf18fd
+ pop si ; 5e ; 0xf18fe
+ pop bp ; 5d ; 0xf18ff
+ retn ; c3 ; 0xf1900
+ ; disGetNextSymbol 0xf1901 LB 0x8744 -> off=0x0 cb=0000000000000060 uValue=00000000000f0301 'put_uint'
+put_uint: ; 0xf1901 LB 0x60
+ push bp ; 55 ; 0xf1901 print.c:106
+ mov bp, sp ; 89 e5 ; 0xf1902
+ push si ; 56 ; 0xf1904
+ push di ; 57 ; 0xf1905
+ push ax ; 50 ; 0xf1906
+ push ax ; 50 ; 0xf1907
+ mov si, ax ; 89 c6 ; 0xf1908
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf190a
+ mov ax, dx ; 89 d0 ; 0xf190d print.c:108
+ xor dx, dx ; 31 d2 ; 0xf190f
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf1911
+ div di ; f7 f7 ; 0xf1914
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1916
+ test ax, ax ; 85 c0 ; 0xf1919 print.c:109
+ je short 01927h ; 74 0a ; 0xf191b
+ dec bx ; 4b ; 0xf191d print.c:110
+ mov dx, ax ; 89 c2 ; 0xf191e
+ mov ax, si ; 89 f0 ; 0xf1920
+ call 01901h ; e8 dc ff ; 0xf1922
+ jmp short 01942h ; eb 1b ; 0xf1925 print.c:111
+ dec bx ; 4b ; 0xf1927 print.c:112
+ test bx, bx ; 85 db ; 0xf1928
+ jle short 01936h ; 7e 0a ; 0xf192a
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf192c print.c:113
+ mov ax, si ; 89 f0 ; 0xf192f
+ call 01867h ; e8 33 ff ; 0xf1931
+ jmp short 01927h ; eb f1 ; 0xf1934
+ test cx, cx ; 85 c9 ; 0xf1936 print.c:114
+ je short 01942h ; 74 08 ; 0xf1938
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf193a print.c:115
+ mov ax, si ; 89 f0 ; 0xf193d
+ call 01867h ; e8 25 ff ; 0xf193f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1942 print.c:117
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1945
+ mul dl ; f6 e2 ; 0xf1947
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1949
+ sub dl, al ; 28 c2 ; 0xf194c
+ mov al, dl ; 88 d0 ; 0xf194e
+ add AL, strict byte 030h ; 04 30 ; 0xf1950
+ movzx dx, al ; 0f b6 d0 ; 0xf1952
+ mov ax, si ; 89 f0 ; 0xf1955
+ call 01867h ; e8 0d ff ; 0xf1957
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf195a print.c:118
+ pop di ; 5f ; 0xf195d
+ pop si ; 5e ; 0xf195e
+ pop bp ; 5d ; 0xf195f
+ retn ; c3 ; 0xf1960
+ ; disGetNextSymbol 0xf1961 LB 0x86e4 -> off=0x0 cb=0000000000000072 uValue=00000000000f0361 'put_luint'
+put_luint: ; 0xf1961 LB 0x72
+ push bp ; 55 ; 0xf1961 print.c:120
+ mov bp, sp ; 89 e5 ; 0xf1962
+ push si ; 56 ; 0xf1964
+ push di ; 57 ; 0xf1965
+ push ax ; 50 ; 0xf1966
+ push ax ; 50 ; 0xf1967
+ mov si, ax ; 89 c6 ; 0xf1968
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf196a
+ mov di, dx ; 89 d7 ; 0xf196d
+ mov ax, bx ; 89 d8 ; 0xf196f print.c:122
+ mov dx, cx ; 89 ca ; 0xf1971
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf1973
+ xor cx, cx ; 31 c9 ; 0xf1976
+ call 09f50h ; e8 d5 85 ; 0xf1978
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf197b
+ mov cx, dx ; 89 d1 ; 0xf197e
+ mov dx, ax ; 89 c2 ; 0xf1980 print.c:123
+ or dx, cx ; 09 ca ; 0xf1982
+ je short 01995h ; 74 0f ; 0xf1984
+ push word [bp+004h] ; ff 76 04 ; 0xf1986 print.c:124
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf1989
+ mov bx, ax ; 89 c3 ; 0xf198c
+ mov ax, si ; 89 f0 ; 0xf198e
+ call 01961h ; e8 ce ff ; 0xf1990
+ jmp short 019b2h ; eb 1d ; 0xf1993 print.c:125
+ dec di ; 4f ; 0xf1995 print.c:126
+ test di, di ; 85 ff ; 0xf1996
+ jle short 019a4h ; 7e 0a ; 0xf1998
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf199a print.c:127
+ mov ax, si ; 89 f0 ; 0xf199d
+ call 01867h ; e8 c5 fe ; 0xf199f
+ jmp short 01995h ; eb f1 ; 0xf19a2
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf19a4 print.c:128
+ je short 019b2h ; 74 08 ; 0xf19a8
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf19aa print.c:129
+ mov ax, si ; 89 f0 ; 0xf19ad
+ call 01867h ; e8 b5 fe ; 0xf19af
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf19b2 print.c:131
+ mov DL, strict byte 00ah ; b2 0a ; 0xf19b5
+ mul dl ; f6 e2 ; 0xf19b7
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf19b9
+ sub dl, al ; 28 c2 ; 0xf19bc
+ mov al, dl ; 88 d0 ; 0xf19be
+ add AL, strict byte 030h ; 04 30 ; 0xf19c0
+ movzx dx, al ; 0f b6 d0 ; 0xf19c2
+ mov ax, si ; 89 f0 ; 0xf19c5
+ call 01867h ; e8 9d fe ; 0xf19c7
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf19ca print.c:132
+ pop di ; 5f ; 0xf19cd
+ pop si ; 5e ; 0xf19ce
+ pop bp ; 5d ; 0xf19cf
+ retn 00002h ; c2 02 00 ; 0xf19d0
+ ; disGetNextSymbol 0xf19d3 LB 0x8672 -> off=0x0 cb=0000000000000021 uValue=00000000000f03d3 'put_str'
+put_str: ; 0xf19d3 LB 0x21
+ push bp ; 55 ; 0xf19d3 print.c:134
+ mov bp, sp ; 89 e5 ; 0xf19d4
+ push dx ; 52 ; 0xf19d6
+ push si ; 56 ; 0xf19d7
+ mov si, ax ; 89 c6 ; 0xf19d8
+ mov es, cx ; 8e c1 ; 0xf19da print.c:138
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf19dc
+ test dl, dl ; 84 d2 ; 0xf19df
+ je short 019edh ; 74 0a ; 0xf19e1
+ xor dh, dh ; 30 f6 ; 0xf19e3 print.c:139
+ mov ax, si ; 89 f0 ; 0xf19e5
+ call 01867h ; e8 7d fe ; 0xf19e7
+ inc bx ; 43 ; 0xf19ea print.c:140
+ jmp short 019dah ; eb ed ; 0xf19eb print.c:141
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf19ed print.c:142
+ pop si ; 5e ; 0xf19f0
+ pop dx ; 5a ; 0xf19f1
+ pop bp ; 5d ; 0xf19f2
+ retn ; c3 ; 0xf19f3
+ ; disGetNextSymbol 0xf19f4 LB 0x8651 -> off=0x0 cb=0000000000000020 uValue=00000000000f03f4 'put_str_near'
+put_str_near: ; 0xf19f4 LB 0x20
+ push bp ; 55 ; 0xf19f4 print.c:144
+ mov bp, sp ; 89 e5 ; 0xf19f5
+ push bx ; 53 ; 0xf19f7
+ push cx ; 51 ; 0xf19f8
+ mov cx, ax ; 89 c1 ; 0xf19f9
+ mov bx, dx ; 89 d3 ; 0xf19fb
+ mov dl, byte [bx] ; 8a 17 ; 0xf19fd print.c:148
+ test dl, dl ; 84 d2 ; 0xf19ff
+ je short 01a0dh ; 74 0a ; 0xf1a01
+ xor dh, dh ; 30 f6 ; 0xf1a03 print.c:149
+ mov ax, cx ; 89 c8 ; 0xf1a05
+ call 01867h ; e8 5d fe ; 0xf1a07
+ inc bx ; 43 ; 0xf1a0a print.c:150
+ jmp short 019fdh ; eb f0 ; 0xf1a0b print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1a0d print.c:152
+ pop cx ; 59 ; 0xf1a10
+ pop bx ; 5b ; 0xf1a11
+ pop bp ; 5d ; 0xf1a12
+ retn ; c3 ; 0xf1a13
+ ; disGetNextSymbol 0xf1a14 LB 0x8631 -> off=0x0 cb=000000000000033d uValue=00000000000f0414 'bios_printf'
+bios_printf: ; 0xf1a14 LB 0x33d
+ push bp ; 55 ; 0xf1a14 print.c:165
+ mov bp, sp ; 89 e5 ; 0xf1a15
+ push bx ; 53 ; 0xf1a17
+ push cx ; 51 ; 0xf1a18
+ push dx ; 52 ; 0xf1a19
+ push si ; 56 ; 0xf1a1a
+ push di ; 57 ; 0xf1a1b
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1a1c
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf1a1f print.c:173
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf1a22
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf1a25
+ xor bx, bx ; 31 db ; 0xf1a28 print.c:175
+ xor di, di ; 31 ff ; 0xf1a2a print.c:176
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1a2c print.c:178
+ and ax, strict word 00007h ; 25 07 00 ; 0xf1a2f
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf1a32
+ jne short 01a42h ; 75 0b ; 0xf1a35
+ push 000f0h ; 68 f0 00 ; 0xf1a37 print.c:179
+ push strict byte 00002h ; 6a 02 ; 0xf1a3a
+ call 01a14h ; e8 d5 ff ; 0xf1a3c
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1a3f
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1a42 print.c:182
+ mov dl, byte [si] ; 8a 14 ; 0xf1a45
+ test dl, dl ; 84 d2 ; 0xf1a47
+ je near 01d35h ; 0f 84 e8 02 ; 0xf1a49
+ cmp dl, 025h ; 80 fa 25 ; 0xf1a4d print.c:183
+ jne short 01a5ah ; 75 08 ; 0xf1a50
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf1a52 print.c:184
+ xor di, di ; 31 ff ; 0xf1a55 print.c:185
+ jmp near 01d2fh ; e9 d5 02 ; 0xf1a57 print.c:187
+ test bx, bx ; 85 db ; 0xf1a5a
+ je near 01d27h ; 0f 84 c7 02 ; 0xf1a5c
+ cmp dl, 030h ; 80 fa 30 ; 0xf1a60 print.c:188
+ jc short 01a78h ; 72 13 ; 0xf1a63
+ cmp dl, 039h ; 80 fa 39 ; 0xf1a65
+ jnbe short 01a78h ; 77 0e ; 0xf1a68
+ movzx ax, dl ; 0f b6 c2 ; 0xf1a6a print.c:189
+ imul di, di, strict byte 0000ah ; 6b ff 0a ; 0xf1a6d
+ sub ax, strict word 00030h ; 2d 30 00 ; 0xf1a70
+ add di, ax ; 01 c7 ; 0xf1a73
+ jmp near 01d2fh ; e9 b7 02 ; 0xf1a75 print.c:191
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a78 print.c:192
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a7b
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a7e
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a82
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a85
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1a89
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a8c print.c:193
+ je short 01a96h ; 74 05 ; 0xf1a8f
+ cmp dl, 058h ; 80 fa 58 ; 0xf1a91
+ jne short 01aech ; 75 56 ; 0xf1a94
+ test di, di ; 85 ff ; 0xf1a96 print.c:194
+ jne short 01a9dh ; 75 03 ; 0xf1a98
+ mov di, strict word 00004h ; bf 04 00 ; 0xf1a9a print.c:195
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a9d print.c:196
+ jne short 01aa9h ; 75 07 ; 0xf1aa0
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1aa2 print.c:197
+ jmp short 01aaeh ; eb 05 ; 0xf1aa7 print.c:198
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1aa9 print.c:199
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1aae print.c:200
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1ab1
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1ab4
+ test ax, ax ; 85 c0 ; 0xf1ab7
+ jl near 01d23h ; 0f 8c 66 02 ; 0xf1ab9
+ mov cx, ax ; 89 c1 ; 0xf1abd print.c:201
+ sal cx, 002h ; c1 e1 02 ; 0xf1abf
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1ac2
+ shr ax, CL ; d3 e8 ; 0xf1ac5
+ xor ah, ah ; 30 e4 ; 0xf1ac7
+ and AL, strict byte 00fh ; 24 0f ; 0xf1ac9
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1acb print.c:202
+ jnbe short 01ad7h ; 77 07 ; 0xf1ace
+ mov dx, ax ; 89 c2 ; 0xf1ad0
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1ad2
+ jmp short 01adfh ; eb 08 ; 0xf1ad5
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ad7
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ada
+ add dx, ax ; 01 c2 ; 0xf1add
+ xor dh, dh ; 30 f6 ; 0xf1adf
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ae1
+ call 01867h ; e8 80 fd ; 0xf1ae4
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1ae7 print.c:203
+ jmp short 01ab4h ; eb c8 ; 0xf1aea
+ cmp dl, 075h ; 80 fa 75 ; 0xf1aec print.c:205
+ jne short 01b00h ; 75 0f ; 0xf1aef
+ xor cx, cx ; 31 c9 ; 0xf1af1 print.c:206
+ mov bx, di ; 89 fb ; 0xf1af3
+ mov dx, ax ; 89 c2 ; 0xf1af5
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1af7
+ call 01901h ; e8 04 fe ; 0xf1afa
+ jmp near 01d23h ; e9 23 02 ; 0xf1afd print.c:208
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1b00
+ jne near 01be2h ; 0f 85 db 00 ; 0xf1b03
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b07
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1b0a
+ jne near 01be2h ; 0f 85 d1 00 ; 0xf1b0d
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1b11 print.c:212
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1b15 print.c:213
+ mov dl, byte [bx] ; 8a 17 ; 0xf1b18
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1b1a print.c:215
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b1d print.c:216
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b20
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b23
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b27
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b2a
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1b2e
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b31 print.c:217
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b34
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b37
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b3b
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b3e
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1b42
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1b45 print.c:218
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1b48
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b4b
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1b4f
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1b52
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1b56
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b59 print.c:219
+ je short 01b63h ; 74 05 ; 0xf1b5c
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b5e
+ jne short 01bd4h ; 75 71 ; 0xf1b61
+ test di, di ; 85 ff ; 0xf1b63 print.c:220
+ jne short 01b6ah ; 75 03 ; 0xf1b65
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1b67 print.c:221
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b6a print.c:222
+ jne short 01b76h ; 75 07 ; 0xf1b6d
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1b6f print.c:223
+ jmp short 01b7bh ; eb 05 ; 0xf1b74 print.c:224
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1b76 print.c:225
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1b7b print.c:226
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1b7e
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b81
+ test ax, ax ; 85 c0 ; 0xf1b84
+ jl near 01d23h ; 0f 8c 99 01 ; 0xf1b86
+ sal ax, 002h ; c1 e0 02 ; 0xf1b8a print.c:227
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1b8d
+ xor ax, ax ; 31 c0 ; 0xf1b90
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1b92
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1b95
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1b98
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1b9b
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1b9e
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1ba1
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1ba4
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1ba7
+ call 09f90h ; e8 e3 83 ; 0xf1baa
+ mov ax, dx ; 89 d0 ; 0xf1bad
+ xor ah, dh ; 30 f4 ; 0xf1baf
+ and AL, strict byte 00fh ; 24 0f ; 0xf1bb1
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1bb3 print.c:228
+ jnbe short 01bbfh ; 77 07 ; 0xf1bb6
+ mov dx, ax ; 89 c2 ; 0xf1bb8
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1bba
+ jmp short 01bc7h ; eb 08 ; 0xf1bbd
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1bbf
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1bc2
+ add dx, ax ; 01 c2 ; 0xf1bc5
+ xor dh, dh ; 30 f6 ; 0xf1bc7
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bc9
+ call 01867h ; e8 98 fc ; 0xf1bcc
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1bcf print.c:229
+ jmp short 01b81h ; eb ad ; 0xf1bd2
+ push 000f8h ; 68 f8 00 ; 0xf1bd4 print.c:231
+ push strict byte 00007h ; 6a 07 ; 0xf1bd7
+ call 01a14h ; e8 38 fe ; 0xf1bd9
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1bdc
+ jmp near 01d23h ; e9 41 01 ; 0xf1bdf print.c:234
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1be2
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1be5
+ jne near 01cabh ; 0f 85 bf 00 ; 0xf1be8
+ inc word [bp+006h] ; ff 46 06 ; 0xf1bec print.c:235
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1bef print.c:236
+ mov dl, byte [si] ; 8a 14 ; 0xf1bf2
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1bf4 print.c:237
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1bf7
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1bfa
+ les si, [bp-016h] ; c4 76 ea ; 0xf1bfe
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1c01
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1c05
+ cmp dl, 064h ; 80 fa 64 ; 0xf1c08 print.c:238
+ jne short 01c3ah ; 75 2d ; 0xf1c0b
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1c0d print.c:239
+ je short 01c28h ; 74 15 ; 0xf1c11
+ push strict byte 00001h ; 6a 01 ; 0xf1c13 print.c:240
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c15
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c18
+ neg cx ; f7 d9 ; 0xf1c1b
+ neg ax ; f7 d8 ; 0xf1c1d
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1c1f
+ mov dx, bx ; 89 da ; 0xf1c22
+ mov bx, ax ; 89 c3 ; 0xf1c24
+ jmp short 01c31h ; eb 09 ; 0xf1c26 print.c:241
+ push strict byte 00000h ; 6a 00 ; 0xf1c28 print.c:242
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1c2a
+ mov dx, di ; 89 fa ; 0xf1c2d
+ mov cx, ax ; 89 c1 ; 0xf1c2f
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c31
+ call 01961h ; e8 2a fd ; 0xf1c34
+ jmp near 01d23h ; e9 e9 00 ; 0xf1c37 print.c:244
+ cmp dl, 075h ; 80 fa 75 ; 0xf1c3a
+ jne short 01c41h ; 75 02 ; 0xf1c3d
+ jmp short 01c28h ; eb e7 ; 0xf1c3f
+ cmp dl, 078h ; 80 fa 78 ; 0xf1c41 print.c:247
+ je short 01c4dh ; 74 07 ; 0xf1c44
+ cmp dl, 058h ; 80 fa 58 ; 0xf1c46
+ jne near 01d23h ; 0f 85 d6 00 ; 0xf1c49
+ test di, di ; 85 ff ; 0xf1c4d print.c:249
+ jne short 01c54h ; 75 03 ; 0xf1c4f
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1c51 print.c:250
+ cmp dl, 078h ; 80 fa 78 ; 0xf1c54 print.c:251
+ jne short 01c60h ; 75 07 ; 0xf1c57
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1c59 print.c:252
+ jmp short 01c65h ; eb 05 ; 0xf1c5e print.c:253
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1c60 print.c:254
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1c65 print.c:255
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c68
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf1c6b
+ jl near 01d23h ; 0f 8c b0 00 ; 0xf1c6f
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1c73 print.c:256
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf1c76
+ sal cx, 002h ; c1 e1 02 ; 0xf1c79
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1c7c
+ jcxz 01c87h ; e3 06 ; 0xf1c7f
+ shr dx, 1 ; d1 ea ; 0xf1c81
+ rcr ax, 1 ; d1 d8 ; 0xf1c83
+ loop 01c81h ; e2 fa ; 0xf1c85
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1c87
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1c8a print.c:257
+ jnbe short 01c96h ; 77 07 ; 0xf1c8d
+ mov dx, ax ; 89 c2 ; 0xf1c8f
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1c91
+ jmp short 01c9eh ; eb 08 ; 0xf1c94
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1c96
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1c99
+ add dx, ax ; 01 c2 ; 0xf1c9c
+ xor dh, dh ; 30 f6 ; 0xf1c9e
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ca0
+ call 01867h ; e8 c1 fb ; 0xf1ca3
+ dec word [bp-00ch] ; ff 4e f4 ; 0xf1ca6 print.c:258
+ jmp short 01c6bh ; eb c0 ; 0xf1ca9
+ cmp dl, 064h ; 80 fa 64 ; 0xf1cab print.c:261
+ jne short 01ccfh ; 75 1f ; 0xf1cae
+ test byte [bp-011h], 080h ; f6 46 ef 80 ; 0xf1cb0 print.c:262
+ je short 01cc0h ; 74 0a ; 0xf1cb4
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1cb6 print.c:263
+ neg dx ; f7 da ; 0xf1cb9
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1cbb
+ jmp short 01cc7h ; eb 07 ; 0xf1cbe print.c:264
+ xor cx, cx ; 31 c9 ; 0xf1cc0 print.c:265
+ mov bx, di ; 89 fb ; 0xf1cc2
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf1cc4
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1cc7
+ call 018a2h ; e8 d5 fb ; 0xf1cca
+ jmp short 01d23h ; eb 54 ; 0xf1ccd print.c:267
+ cmp dl, 073h ; 80 fa 73 ; 0xf1ccf
+ jne short 01ce1h ; 75 0d ; 0xf1cd2
+ mov cx, ds ; 8c d9 ; 0xf1cd4 print.c:268
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf1cd6
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1cd9
+ call 019d3h ; e8 f4 fc ; 0xf1cdc
+ jmp short 01d23h ; eb 42 ; 0xf1cdf print.c:270
+ cmp dl, 053h ; 80 fa 53 ; 0xf1ce1
+ jne short 01d07h ; 75 21 ; 0xf1ce4
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1ce6 print.c:271
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1ce9
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1cec print.c:272
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1cef
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1cf2
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1cf6
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1cf9
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1cfd
+ mov bx, ax ; 89 c3 ; 0xf1d00 print.c:273
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1d02
+ jmp short 01cd9h ; eb d2 ; 0xf1d05
+ cmp dl, 063h ; 80 fa 63 ; 0xf1d07 print.c:275
+ jne short 01d18h ; 75 0c ; 0xf1d0a
+ movzx dx, byte [bp-012h] ; 0f b6 56 ee ; 0xf1d0c print.c:276
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d10
+ call 01867h ; e8 51 fb ; 0xf1d13
+ jmp short 01d23h ; eb 0b ; 0xf1d16 print.c:278
+ push 00119h ; 68 19 01 ; 0xf1d18 print.c:279
+ push strict byte 00007h ; 6a 07 ; 0xf1d1b
+ call 01a14h ; e8 f4 fc ; 0xf1d1d
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1d20
+ xor bx, bx ; 31 db ; 0xf1d23 print.c:280
+ jmp short 01d2fh ; eb 08 ; 0xf1d25 print.c:283
+ xor dh, dh ; 30 f6 ; 0xf1d27 print.c:284
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1d29
+ call 01867h ; e8 38 fb ; 0xf1d2c
+ inc word [bp+006h] ; ff 46 06 ; 0xf1d2f print.c:286
+ jmp near 01a42h ; e9 0d fd ; 0xf1d32 print.c:287
+ xor ax, ax ; 31 c0 ; 0xf1d35 print.c:288
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1d37
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1d3a
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1d3d print.c:289
+ je short 01d47h ; 74 04 ; 0xf1d41
+ cli ; fa ; 0xf1d43 print.c:291
+ hlt ; f4 ; 0xf1d44 print.c:292
+ jmp short 01d44h ; eb fd ; 0xf1d45
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1d47 print.c:294
+ pop di ; 5f ; 0xf1d4a
+ pop si ; 5e ; 0xf1d4b
+ pop dx ; 5a ; 0xf1d4c
+ pop cx ; 59 ; 0xf1d4d
+ pop bx ; 5b ; 0xf1d4e
+ pop bp ; 5d ; 0xf1d4f
+ retn ; c3 ; 0xf1d50
+ ; disGetNextSymbol 0xf1d51 LB 0x82f4 -> off=0x0 cb=00000000000000cc uValue=00000000000f0751 'ata_init'
+ata_init: ; 0xf1d51 LB 0xcc
+ push si ; 56 ; 0xf1d51 ata.c:97
+ push bp ; 55 ; 0xf1d52
+ mov bp, sp ; 89 e5 ; 0xf1d53
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d55 ata.c:48
+ mov si, strict word 00040h ; be 40 00 ; 0xf1d58
+ mov es, si ; 8e c6 ; 0xf1d5b
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1d5d
+ mov si, 00122h ; be 22 01 ; 0xf1d60 ata.c:49
+ mov dx, bx ; 89 da ; 0xf1d63
+ xor al, al ; 30 c0 ; 0xf1d65 ata.c:105
+ jmp short 01d6dh ; eb 04 ; 0xf1d67
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf1d69
+ jnc short 01d91h ; 73 24 ; 0xf1d6b
+ movzx bx, al ; 0f b6 d8 ; 0xf1d6d ata.c:106
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf1d70
+ mov es, dx ; 8e c2 ; 0xf1d73
+ add bx, si ; 01 f3 ; 0xf1d75
+ mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf1d77
+ db 066h, 026h, 0c7h, 087h, 006h, 002h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+00206h], strict dword 000000000h ; 66 26 c7 87 06 02 00 00 00 00; 0xf1d7d ata.c:107
+ mov byte [es:bx+00205h], 000h ; 26 c6 87 05 02 00 ; 0xf1d87 ata.c:109
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1d8d ata.c:110
+ jmp short 01d69h ; eb d8 ; 0xf1d8f
+ xor al, al ; 30 c0 ; 0xf1d91 ata.c:113
+ jmp short 01d99h ; eb 04 ; 0xf1d93
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf1d95
+ jnc short 01dedh ; 73 54 ; 0xf1d97
+ movzx bx, al ; 0f b6 d8 ; 0xf1d99 ata.c:114
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1d9c
+ mov es, dx ; 8e c2 ; 0xf1d9f
+ add bx, si ; 01 f3 ; 0xf1da1
+ db 066h, 026h, 0c7h, 047h, 022h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+022h], strict dword 000000000h ; 66 26 c7 47 22 00 00 00 00; 0xf1da3
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1dac ata.c:118
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1db1 ata.c:119
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1db7 ata.c:120
+ db 066h, 026h, 0c7h, 047h, 02ah, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+02ah], strict dword 000000000h ; 66 26 c7 47 2a 00 00 00 00; 0xf1dbc ata.c:121
+ db 066h, 026h, 0c7h, 047h, 02eh, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+02eh], strict dword 000000000h ; 66 26 c7 47 2e 00 00 00 00; 0xf1dc5 ata.c:123
+ db 066h, 026h, 0c7h, 047h, 032h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+032h], strict dword 000000000h ; 66 26 c7 47 32 00 00 00 00; 0xf1dce ata.c:125
+ db 066h, 026h, 0c7h, 047h, 03ah, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+03ah], strict dword 000000000h ; 66 26 c7 47 3a 00 00 00 00; 0xf1dd7 ata.c:127
+ db 066h, 026h, 0c7h, 047h, 036h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+036h], strict dword 000000000h ; 66 26 c7 47 36 00 00 00 00; 0xf1de0
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1de9 ata.c:128
+ jmp short 01d95h ; eb a8 ; 0xf1deb
+ xor al, al ; 30 c0 ; 0xf1ded ata.c:131
+ jmp short 01df5h ; eb 04 ; 0xf1def
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf1df1
+ jnc short 01e0ch ; 73 17 ; 0xf1df3
+ movzx bx, al ; 0f b6 d8 ; 0xf1df5 ata.c:132
+ mov es, dx ; 8e c2 ; 0xf1df8
+ add bx, si ; 01 f3 ; 0xf1dfa
+ mov byte [es:bx+001e3h], 010h ; 26 c6 87 e3 01 10 ; 0xf1dfc
+ mov byte [es:bx+001f4h], 010h ; 26 c6 87 f4 01 10 ; 0xf1e02 ata.c:133
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf1e08 ata.c:134
+ jmp short 01df1h ; eb e5 ; 0xf1e0a
+ mov es, dx ; 8e c2 ; 0xf1e0c ata.c:136
+ mov byte [es:si+001e2h], 000h ; 26 c6 84 e2 01 00 ; 0xf1e0e
+ mov byte [es:si+001f3h], 000h ; 26 c6 84 f3 01 00 ; 0xf1e14 ata.c:137
+ pop bp ; 5d ; 0xf1e1a ata.c:138
+ pop si ; 5e ; 0xf1e1b
+ retn ; c3 ; 0xf1e1c
+ ; disGetNextSymbol 0xf1e1d LB 0x8228 -> off=0x0 cb=00000000000000dd uValue=00000000000f081d 'ata_reset'
+ata_reset: ; 0xf1e1d LB 0xdd
+ push bp ; 55 ; 0xf1e1d ata.c:146
+ mov bp, sp ; 89 e5 ; 0xf1e1e
+ push bx ; 53 ; 0xf1e20
+ push cx ; 51 ; 0xf1e21
+ push dx ; 52 ; 0xf1e22
+ push si ; 56 ; 0xf1e23
+ push di ; 57 ; 0xf1e24
+ push ax ; 50 ; 0xf1e25
+ push ax ; 50 ; 0xf1e26
+ push ax ; 50 ; 0xf1e27
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1e28 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1e2b
+ mov es, ax ; 8e c0 ; 0xf1e2e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1e30
+ mov di, 00122h ; bf 22 01 ; 0xf1e33 ata.c:49
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e36
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1e39 ata.c:155
+ shr dx, 1 ; d1 ea ; 0xf1e3c
+ mov dh, byte [bp-010h] ; 8a 76 f0 ; 0xf1e3e ata.c:156
+ and dh, 001h ; 80 e6 01 ; 0xf1e41
+ mov byte [bp-00ch], dh ; 88 76 f4 ; 0xf1e44
+ xor dh, dh ; 30 f6 ; 0xf1e47 ata.c:158
+ imul bx, dx, strict byte 00006h ; 6b da 06 ; 0xf1e49
+ mov es, ax ; 8e c0 ; 0xf1e4c
+ add bx, di ; 01 fb ; 0xf1e4e
+ mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf1e50
+ mov si, word [es:bx+00208h] ; 26 8b b7 08 02 ; 0xf1e55 ata.c:159
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e5a ata.c:164
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1e5d
+ out DX, AL ; ee ; 0xf1e5f
+ mov bx, 000ffh ; bb ff 00 ; 0xf1e60 ata.c:167
+ dec bx ; 4b ; 0xf1e63 ata.c:168
+ test bx, bx ; 85 db ; 0xf1e64
+ jbe short 01e74h ; 76 0c ; 0xf1e66
+ mov dx, cx ; 89 ca ; 0xf1e68 ata.c:169
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e6a
+ in AL, DX ; ec ; 0xf1e6d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e6e
+ test AL, strict byte 080h ; a8 80 ; 0xf1e70 ata.c:170
+ je short 01e63h ; 74 ef ; 0xf1e72
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e74 ata.c:175
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1e77
+ out DX, AL ; ee ; 0xf1e79
+ imul bx, word [bp-010h], strict byte 0001ch ; 6b 5e f0 1c ; 0xf1e7a ata.c:177
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf1e7e
+ add bx, di ; 01 fb ; 0xf1e81
+ cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1e83
+ je short 01ed6h ; 74 4c ; 0xf1e88
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1e8a ata.c:180
+ je short 01e95h ; 74 05 ; 0xf1e8e
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1e90
+ jmp short 01e98h ; eb 03 ; 0xf1e93
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1e95
+ mov dx, cx ; 89 ca ; 0xf1e98
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1e9a
+ out DX, AL ; ee ; 0xf1e9d
+ mov dx, cx ; 89 ca ; 0xf1e9e ata.c:181
+ inc dx ; 42 ; 0xf1ea0
+ inc dx ; 42 ; 0xf1ea1
+ in AL, DX ; ec ; 0xf1ea2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ea3
+ mov bx, ax ; 89 c3 ; 0xf1ea5
+ mov dx, cx ; 89 ca ; 0xf1ea7 ata.c:182
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1ea9
+ in AL, DX ; ec ; 0xf1eac
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ead
+ cmp bl, 001h ; 80 fb 01 ; 0xf1eaf ata.c:184
+ jne short 01ed6h ; 75 22 ; 0xf1eb2
+ cmp al, bl ; 38 d8 ; 0xf1eb4
+ jne short 01ed6h ; 75 1e ; 0xf1eb6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1eb8 ata.c:186
+ dec bx ; 4b ; 0xf1ebb ata.c:187
+ test bx, bx ; 85 db ; 0xf1ebc
+ jbe short 01ed6h ; 76 16 ; 0xf1ebe
+ mov dx, cx ; 89 ca ; 0xf1ec0 ata.c:188
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ec2
+ in AL, DX ; ec ; 0xf1ec5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ec6
+ test AL, strict byte 080h ; a8 80 ; 0xf1ec8 ata.c:189
+ je short 01ed6h ; 74 0a ; 0xf1eca
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1ecc ata.c:191
+ dec ax ; 48 ; 0xf1ecf ata.c:192
+ test ax, ax ; 85 c0 ; 0xf1ed0
+ jnbe short 01ecfh ; 77 fb ; 0xf1ed2
+ jmp short 01ebbh ; eb e5 ; 0xf1ed4 ata.c:195
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1ed6 ata.c:200
+ dec bx ; 4b ; 0xf1ed9 ata.c:201
+ test bx, bx ; 85 db ; 0xf1eda
+ jbe short 01eeah ; 76 0c ; 0xf1edc
+ mov dx, cx ; 89 ca ; 0xf1ede ata.c:202
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1ee0
+ in AL, DX ; ec ; 0xf1ee3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1ee4
+ test AL, strict byte 040h ; a8 40 ; 0xf1ee6 ata.c:203
+ je short 01ed9h ; 74 ef ; 0xf1ee8
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1eea ata.c:208
+ mov AL, strict byte 008h ; b0 08 ; 0xf1eed
+ out DX, AL ; ee ; 0xf1eef
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1ef0 ata.c:209
+ pop di ; 5f ; 0xf1ef3
+ pop si ; 5e ; 0xf1ef4
+ pop dx ; 5a ; 0xf1ef5
+ pop cx ; 59 ; 0xf1ef6
+ pop bx ; 5b ; 0xf1ef7
+ pop bp ; 5d ; 0xf1ef8
+ retn ; c3 ; 0xf1ef9
+ ; disGetNextSymbol 0xf1efa LB 0x814b -> off=0x0 cb=00000000000002e2 uValue=00000000000f08fa 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1efa LB 0x2e2
+ push bp ; 55 ; 0xf1efa ata.c:223
+ mov bp, sp ; 89 e5 ; 0xf1efb
+ push si ; 56 ; 0xf1efd
+ push di ; 57 ; 0xf1efe
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf1eff
+ push ax ; 50 ; 0xf1f02
+ push dx ; 52 ; 0xf1f03
+ push bx ; 53 ; 0xf1f04
+ push cx ; 51 ; 0xf1f05
+ mov es, dx ; 8e c2 ; 0xf1f06 ata.c:233
+ mov bx, ax ; 89 c3 ; 0xf1f08
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1f0a
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf1f0e
+ movzx bx, al ; 0f b6 d8 ; 0xf1f11 ata.c:235
+ mov ax, bx ; 89 d8 ; 0xf1f14
+ cwd ; 99 ; 0xf1f16
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1f17
+ sar ax, 1 ; d1 f8 ; 0xf1f19
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf1f1b
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f1e
+ add di, ax ; 01 c7 ; 0xf1f21
+ mov ax, word [es:di+00206h] ; 26 8b 85 06 02 ; 0xf1f23
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1f28
+ mov ax, word [es:di+00208h] ; 26 8b 85 08 02 ; 0xf1f2b ata.c:236
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1f30
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf1f33 ata.c:237
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f36
+ add di, bx ; 01 df ; 0xf1f39
+ mov al, byte [es:di+026h] ; 26 8a 45 26 ; 0xf1f3b
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1f3f
+ mov ax, word [es:di+028h] ; 26 8b 45 28 ; 0xf1f42 ata.c:238
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1f46
+ test ax, ax ; 85 c0 ; 0xf1f49 ata.c:239
+ jne short 01f61h ; 75 14 ; 0xf1f4b
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1f4d ata.c:241
+ jne short 01f5ah ; 75 07 ; 0xf1f51
+ mov word [bp-00eh], 04000h ; c7 46 f2 00 40 ; 0xf1f53 ata.c:242
+ jmp short 01f70h ; eb 16 ; 0xf1f58 ata.c:243
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1f5a ata.c:245
+ jmp short 01f70h ; eb 0f ; 0xf1f5f ata.c:246
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf1f61 ata.c:248
+ jne short 01f6dh ; 75 06 ; 0xf1f65
+ shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf1f67 ata.c:249
+ jmp short 01f70h ; eb 03 ; 0xf1f6b ata.c:250
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1f6d ata.c:252
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1f70 ata.c:255
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1f73
+ in AL, DX ; ec ; 0xf1f76
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1f77
+ test AL, strict byte 080h ; a8 80 ; 0xf1f79 ata.c:256
+ je short 01f8ch ; 74 0f ; 0xf1f7b
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1f7d ata.c:260
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1f80
+ mov AL, strict byte 008h ; b0 08 ; 0xf1f83
+ out DX, AL ; ee ; 0xf1f85
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf1f86 ata.c:261
+ jmp near 021d3h ; e9 47 02 ; 0xf1f89
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf1f8c ata.c:264
+ mov di, word [bp-018h] ; 8b 7e e8 ; 0xf1f8f
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1f92
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf1f96
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1f99
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1f9d
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1fa0 ata.c:265
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1fa4
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1fa7 ata.c:266
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1fab
+ mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1fae ata.c:267
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1fb2 ata.c:270
+ test al, al ; 84 c0 ; 0xf1fb5
+ jne near 0209eh ; 0f 85 e3 00 ; 0xf1fb7
+ xor bx, bx ; 31 db ; 0xf1fbb ata.c:271
+ xor dx, dx ; 31 d2 ; 0xf1fbd
+ xor ah, ah ; 30 e4 ; 0xf1fbf
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1fc1
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf1fc4
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1fc7
+ add cx, word [bp-01eh] ; 03 4e e2 ; 0xf1fca
+ adc bx, word [es:si+002h] ; 26 13 5c 02 ; 0xf1fcd
+ adc dx, word [es:si+004h] ; 26 13 54 04 ; 0xf1fd1
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf1fd5
+ adc ax, word [bp-016h] ; 13 46 ea ; 0xf1fd9
+ test ax, ax ; 85 c0 ; 0xf1fdc
+ jnbe short 01ff0h ; 77 10 ; 0xf1fde
+ jne short 02054h ; 75 72 ; 0xf1fe0
+ test dx, dx ; 85 d2 ; 0xf1fe2
+ jnbe short 01ff0h ; 77 0a ; 0xf1fe4
+ jne short 02054h ; 75 6c ; 0xf1fe6
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf1fe8
+ jnbe short 01ff0h ; 77 02 ; 0xf1fec
+ jne short 02054h ; 75 64 ; 0xf1fee
+ mov bx, si ; 89 f3 ; 0xf1ff0 ata.c:273
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1ff2
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1ff6
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1ffa
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1ffe
+ mov si, strict word 00018h ; be 18 00 ; 0xf2001
+ call 09f90h ; e8 89 7f ; 0xf2004
+ xor dh, dh ; 30 f6 ; 0xf2007
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf2009
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf200c ata.c:274
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf200f
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2013
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2017
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf201a
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf201e
+ mov si, strict word 00020h ; be 20 00 ; 0xf2021
+ call 09f90h ; e8 69 7f ; 0xf2024
+ mov bx, dx ; 89 d3 ; 0xf2027
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf2029 ata.c:275
+ xor al, al ; 30 c0 ; 0xf202c
+ shr ax, 008h ; c1 e8 08 ; 0xf202e
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2031
+ inc dx ; 42 ; 0xf2034
+ inc dx ; 42 ; 0xf2035
+ out DX, AL ; ee ; 0xf2036
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2037 ata.c:276
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf203a
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf203d
+ out DX, AL ; ee ; 0xf2040
+ mov ax, bx ; 89 d8 ; 0xf2041 ata.c:277
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2043
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2046
+ out DX, AL ; ee ; 0xf2049
+ shr ax, 008h ; c1 e8 08 ; 0xf204a ata.c:278
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf204d
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2050
+ out DX, AL ; ee ; 0xf2053
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf2054 ata.c:282
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf2057
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf205a
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf205d
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf2060 ata.c:283
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2064
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2068
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf206b
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf206f
+ mov si, strict word 00008h ; be 08 00 ; 0xf2072
+ call 09f90h ; e8 18 7f ; 0xf2075
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf2078
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf207b ata.c:284
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf207e
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf2082
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf2086
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf2089
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf208d
+ mov si, strict word 00018h ; be 18 00 ; 0xf2090
+ call 09f90h ; e8 fa 7e ; 0xf2093
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2096
+ or dl, 040h ; 80 ca 40 ; 0xf2099
+ mov bx, dx ; 89 d3 ; 0xf209c
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf209e ata.c:287
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20a1
+ mov AL, strict byte 00ah ; b0 0a ; 0xf20a4
+ out DX, AL ; ee ; 0xf20a6
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20a7 ata.c:288
+ inc dx ; 42 ; 0xf20aa
+ xor al, al ; 30 c0 ; 0xf20ab
+ out DX, AL ; ee ; 0xf20ad
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20ae ata.c:289
+ inc dx ; 42 ; 0xf20b1
+ inc dx ; 42 ; 0xf20b2
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf20b3
+ out DX, AL ; ee ; 0xf20b6
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20b7 ata.c:290
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf20ba
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf20bd
+ out DX, AL ; ee ; 0xf20c0
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf20c1 ata.c:291
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20c4
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf20c7
+ out DX, AL ; ee ; 0xf20ca
+ shr ax, 008h ; c1 e8 08 ; 0xf20cb ata.c:292
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20ce
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf20d1
+ out DX, AL ; ee ; 0xf20d4
+ test byte [bp-00ah], 001h ; f6 46 f6 01 ; 0xf20d5 ata.c:293
+ je short 020e0h ; 74 05 ; 0xf20d9
+ mov ax, 000b0h ; b8 b0 00 ; 0xf20db
+ jmp short 020e3h ; eb 03 ; 0xf20de
+ mov ax, 000a0h ; b8 a0 00 ; 0xf20e0
+ movzx dx, bl ; 0f b6 d3 ; 0xf20e3
+ or ax, dx ; 09 d0 ; 0xf20e6
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20e8
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20eb
+ out DX, AL ; ee ; 0xf20ee
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20ef ata.c:294
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf20f2
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf20f5
+ out DX, AL ; ee ; 0xf20f8
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf20f9 ata.c:296
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf20fc
+ je short 02106h ; 74 05 ; 0xf20ff
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf2101
+ jne short 02110h ; 75 0a ; 0xf2104
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2106 ata.c:297
+ mov word [bp-01eh], strict word 00001h ; c7 46 e2 01 00 ; 0xf2109 ata.c:298
+ jmp short 02113h ; eb 03 ; 0xf210e ata.c:299
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2110 ata.c:300
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2113 ata.c:304
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2116
+ in AL, DX ; ec ; 0xf2119
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf211a
+ mov dl, al ; 88 c2 ; 0xf211c
+ test AL, strict byte 080h ; a8 80 ; 0xf211e ata.c:305
+ jne short 02113h ; 75 f1 ; 0xf2120
+ test AL, strict byte 001h ; a8 01 ; 0xf2122 ata.c:309
+ je short 02135h ; 74 0f ; 0xf2124
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf2126 ata.c:312
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2129
+ mov AL, strict byte 008h ; b0 08 ; 0xf212c
+ out DX, AL ; ee ; 0xf212e
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf212f ata.c:313
+ jmp near 021d3h ; e9 9e 00 ; 0xf2132
+ test dl, 008h ; f6 c2 08 ; 0xf2135 ata.c:314
+ jne short 02149h ; 75 0f ; 0xf2138
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf213a ata.c:317
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf213d
+ mov AL, strict byte 008h ; b0 08 ; 0xf2140
+ out DX, AL ; ee ; 0xf2142
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2143 ata.c:318
+ jmp near 021d3h ; e9 8a 00 ; 0xf2146
+ sti ; fb ; 0xf2149 ata.c:323
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf214a ata.c:328
+ jc short 0215dh ; 72 0d ; 0xf214e
+ sub di, 00800h ; 81 ef 00 08 ; 0xf2150 ata.c:329
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2154
+ add ax, 00080h ; 05 80 00 ; 0xf2157
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf215a
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf215d ata.c:332
+ jne short 02171h ; 75 0e ; 0xf2161
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2163 ata.c:333
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2166
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf2169
+ db 0f3h, 066h, 06dh
+ ; rep insd ; f3 66 6d ; 0xf216c
+ jmp short 0217ch ; eb 0b ; 0xf216f ata.c:334
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2171 ata.c:336
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2174
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf2177
+ rep insw ; f3 6d ; 0xf217a
+ mov es, [bp-01ah] ; 8e 46 e6 ; 0xf217c ata.c:337
+ mov si, word [bp-018h] ; 8b 76 e8 ; 0xf217f
+ add word [es:si+018h], bx ; 26 01 5c 18 ; 0xf2182
+ dec word [bp-01eh] ; ff 4e e2 ; 0xf2186 ata.c:338
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2189 ata.c:340
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf218c
+ in AL, DX ; ec ; 0xf218f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2190
+ mov dl, al ; 88 c2 ; 0xf2192
+ test AL, strict byte 080h ; a8 80 ; 0xf2194 ata.c:341
+ jne short 02189h ; 75 f1 ; 0xf2196
+ cmp word [bp-01eh], strict byte 00000h ; 83 7e e2 00 ; 0xf2198 ata.c:344
+ jne short 021b2h ; 75 14 ; 0xf219c
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf219e ata.c:345
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf21a0
+ je short 021c8h ; 74 24 ; 0xf21a2
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21a4 ata.c:349
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf21a7
+ mov AL, strict byte 008h ; b0 08 ; 0xf21aa
+ out DX, AL ; ee ; 0xf21ac
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf21ad ata.c:350
+ jmp short 021d3h ; eb 21 ; 0xf21b0
+ mov al, dl ; 88 d0 ; 0xf21b2 ata.c:355
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf21b4
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf21b6
+ je short 0214ah ; 74 90 ; 0xf21b8
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21ba ata.c:359
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf21bd
+ mov AL, strict byte 008h ; b0 08 ; 0xf21c0
+ out DX, AL ; ee ; 0xf21c2
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf21c3 ata.c:360
+ jmp short 021d3h ; eb 0b ; 0xf21c6
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf21c8 ata.c:366
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf21cb
+ mov AL, strict byte 008h ; b0 08 ; 0xf21ce
+ out DX, AL ; ee ; 0xf21d0
+ xor dx, dx ; 31 d2 ; 0xf21d1 ata.c:367
+ mov ax, dx ; 89 d0 ; 0xf21d3 ata.c:368
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf21d5
+ pop di ; 5f ; 0xf21d8
+ pop si ; 5e ; 0xf21d9
+ pop bp ; 5d ; 0xf21da
+ retn ; c3 ; 0xf21db
+ ; disGetNextSymbol 0xf21dc LB 0x7e69 -> off=0x0 cb=000000000000068a uValue=00000000000f0bdc 'ata_detect'
+ata_detect: ; 0xf21dc LB 0x68a
+ push bp ; 55 ; 0xf21dc ata.c:374
+ mov bp, sp ; 89 e5 ; 0xf21dd
+ push si ; 56 ; 0xf21df
+ push di ; 57 ; 0xf21e0
+ sub sp, 00262h ; 81 ec 62 02 ; 0xf21e1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf21e5 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf21e8
+ mov es, ax ; 8e c0 ; 0xf21eb
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf21ed
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf21f0 ata.c:49
+ mov bx, 00122h ; bb 22 01 ; 0xf21f3 ata.c:381
+ mov es, ax ; 8e c0 ; 0xf21f6
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf21f8
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf21fb
+ mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf21fe ata.c:384
+ db 066h, 026h, 0c7h, 087h, 006h, 002h, 0f0h, 001h, 0f0h, 003h
+ ; mov dword [es:bx+00206h], strict dword 003f001f0h ; 66 26 c7 87 06 02 f0 01 f0 03; 0xf2204 ata.c:385
+ mov byte [es:bx+00205h], 00eh ; 26 c6 87 05 02 0e ; 0xf220e ata.c:387
+ mov byte [es:bx+0020ah], 000h ; 26 c6 87 0a 02 00 ; 0xf2214 ata.c:390
+ db 066h, 026h, 0c7h, 087h, 00ch, 002h, 070h, 001h, 070h, 003h
+ ; mov dword [es:bx+0020ch], strict dword 003700170h ; 66 26 c7 87 0c 02 70 01 70 03; 0xf221a ata.c:391
+ mov byte [es:bx+0020bh], 00fh ; 26 c6 87 0b 02 0f ; 0xf2224 ata.c:393
+ xor al, al ; 30 c0 ; 0xf222a ata.c:414
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf222c
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf222f
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf2232 ata.c:416
+ jmp near 027eah ; e9 b2 05 ; 0xf2235
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2238 ata.c:431
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf223b
+ out DX, AL ; ee ; 0xf223e
+ lea si, [bx+002h] ; 8d 77 02 ; 0xf223f ata.c:432
+ mov AL, strict byte 055h ; b0 55 ; 0xf2242
+ mov dx, si ; 89 f2 ; 0xf2244
+ out DX, AL ; ee ; 0xf2246
+ lea di, [bx+003h] ; 8d 7f 03 ; 0xf2247 ata.c:433
+ mov AL, strict byte 0aah ; b0 aa ; 0xf224a
+ mov dx, di ; 89 fa ; 0xf224c
+ out DX, AL ; ee ; 0xf224e
+ mov dx, si ; 89 f2 ; 0xf224f ata.c:434
+ out DX, AL ; ee ; 0xf2251
+ mov AL, strict byte 055h ; b0 55 ; 0xf2252 ata.c:435
+ mov dx, di ; 89 fa ; 0xf2254
+ out DX, AL ; ee ; 0xf2256
+ mov dx, si ; 89 f2 ; 0xf2257 ata.c:436
+ out DX, AL ; ee ; 0xf2259
+ mov AL, strict byte 0aah ; b0 aa ; 0xf225a ata.c:437
+ mov dx, di ; 89 fa ; 0xf225c
+ out DX, AL ; ee ; 0xf225e
+ mov dx, si ; 89 f2 ; 0xf225f ata.c:440
+ in AL, DX ; ec ; 0xf2261
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2262
+ mov cx, ax ; 89 c1 ; 0xf2264
+ mov dx, di ; 89 fa ; 0xf2266 ata.c:441
+ in AL, DX ; ec ; 0xf2268
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2269
+ cmp cl, 055h ; 80 f9 55 ; 0xf226b ata.c:443
+ jne near 02342h ; 0f 85 d0 00 ; 0xf226e
+ cmp AL, strict byte 0aah ; 3c aa ; 0xf2272
+ jne near 02342h ; 0f 85 ca 00 ; 0xf2274
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf2278 ata.c:444
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf227c
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf227f
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf2282
+ add si, ax ; 01 c6 ; 0xf2285
+ mov byte [es:si+022h], 001h ; 26 c6 44 22 01 ; 0xf2287
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf228c ata.c:447
+ call 01e1dh ; e8 8a fb ; 0xf2290
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2293 ata.c:450
+ je short 0229eh ; 74 05 ; 0xf2297
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2299
+ jmp short 022a1h ; eb 03 ; 0xf229c
+ mov ax, 000a0h ; b8 a0 00 ; 0xf229e
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf22a1
+ out DX, AL ; ee ; 0xf22a4
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf22a5 ata.c:451
+ in AL, DX ; ec ; 0xf22a8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf22a9
+ mov cx, ax ; 89 c1 ; 0xf22ab
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf22ad ata.c:452
+ in AL, DX ; ec ; 0xf22b0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf22b1
+ cmp cl, 001h ; 80 f9 01 ; 0xf22b3 ata.c:453
+ jne near 02342h ; 0f 85 88 00 ; 0xf22b6
+ cmp al, cl ; 38 c8 ; 0xf22ba
+ jne near 02342h ; 0f 85 82 00 ; 0xf22bc
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf22c0 ata.c:454
+ in AL, DX ; ec ; 0xf22c3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf22c4
+ mov cx, ax ; 89 c1 ; 0xf22c6
+ mov ch, al ; 88 c5 ; 0xf22c8
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf22ca ata.c:455
+ in AL, DX ; ec ; 0xf22cd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf22ce
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf22d0
+ mov al, byte [bp-020h] ; 8a 46 e0 ; 0xf22d3
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf22d6
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf22d9 ata.c:456
+ in AL, DX ; ec ; 0xf22dc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf22dd
+ cmp cl, 014h ; 80 f9 14 ; 0xf22df ata.c:458
+ jne short 02300h ; 75 1c ; 0xf22e2
+ cmp byte [bp-020h], 0ebh ; 80 7e e0 eb ; 0xf22e4
+ jne short 02300h ; 75 16 ; 0xf22e8
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf22ea ata.c:459
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf22ee
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf22f1
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf22f4
+ add bx, ax ; 01 c3 ; 0xf22f7
+ mov byte [es:bx+022h], 003h ; 26 c6 47 22 03 ; 0xf22f9
+ jmp short 02342h ; eb 42 ; 0xf22fe ata.c:460
+ test ch, ch ; 84 ed ; 0xf2300
+ jne short 02324h ; 75 20 ; 0xf2302
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf2304
+ jne short 02324h ; 75 1a ; 0xf2308
+ test al, al ; 84 c0 ; 0xf230a
+ je short 02324h ; 74 16 ; 0xf230c
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf230e ata.c:461
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2312
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf2315
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2318
+ add bx, ax ; 01 c3 ; 0xf231b
+ mov byte [es:bx+022h], 002h ; 26 c6 47 22 02 ; 0xf231d
+ jmp short 02342h ; eb 1e ; 0xf2322 ata.c:462
+ cmp ch, 0ffh ; 80 fd ff ; 0xf2324
+ jne short 02342h ; 75 19 ; 0xf2327
+ cmp ch, byte [bp-010h] ; 3a 6e f0 ; 0xf2329
+ jne short 02342h ; 75 14 ; 0xf232c
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf232e ata.c:463
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2332
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf2335
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2338
+ add bx, ax ; 01 c3 ; 0xf233b
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf233d
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf2342 ata.c:469
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2345
+ mov AL, strict byte 008h ; b0 08 ; 0xf2348
+ out DX, AL ; ee ; 0xf234a
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf234b ata.c:471
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf234f
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf2352
+ add bx, word [bp-01eh] ; 03 5e e2 ; 0xf2355
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf2358
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf235c
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf235f ata.c:474
+ jne near 025bch ; 0f 85 57 02 ; 0xf2361
+ mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf2365 ata.c:482
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf236a ata.c:483
+ lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf236f ata.c:484
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2373
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf2376
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf237a
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf237e ata.c:485
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2381
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2385 ata.c:487
+ mov bx, 000ech ; bb ec 00 ; 0xf2388
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf238b
+ mov dx, es ; 8c c2 ; 0xf238e
+ call 01efah ; e8 67 fb ; 0xf2390
+ test ax, ax ; 85 c0 ; 0xf2393
+ je short 023a2h ; 74 0b ; 0xf2395
+ push 00136h ; 68 36 01 ; 0xf2397 ata.c:488
+ push strict byte 00007h ; 6a 07 ; 0xf239a
+ call 01a14h ; e8 75 f6 ; 0xf239c
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf239f
+ test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf23a2 ata.c:490
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf23a7
+ xor ah, ah ; 30 e4 ; 0xf23aa
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf23ac
+ cmp byte [bp-00206h], 000h ; 80 be fa fd 00 ; 0xf23af ata.c:492
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf23b4
+ xor ah, ah ; 30 e4 ; 0xf23b7
+ mov byte [bp-018h], al ; 88 46 e8 ; 0xf23b9
+ mov word [bp-036h], 00200h ; c7 46 ca 00 02 ; 0xf23bc ata.c:496
+ mov ax, word [bp-00264h] ; 8b 86 9c fd ; 0xf23c1 ata.c:498
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf23c5
+ mov ax, word [bp-00260h] ; 8b 86 a0 fd ; 0xf23c8 ata.c:499
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf23cc
+ mov ax, word [bp-0025ah] ; 8b 86 a6 fd ; 0xf23cf ata.c:500
+ mov word [bp-022h], ax ; 89 46 de ; 0xf23d3
+ mov ax, word [bp-001eeh] ; 8b 86 12 fe ; 0xf23d6 ata.c:502
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf23da
+ mov si, word [bp-001ech] ; 8b b6 14 fe ; 0xf23dd
+ xor ax, ax ; 31 c0 ; 0xf23e1
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf23e3
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf23e6
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf23e9 ata.c:503
+ jne short 0240eh ; 75 1f ; 0xf23ed
+ cmp word [bp-02ch], strict byte 0ffffh ; 83 7e d4 ff ; 0xf23ef
+ jne short 0240eh ; 75 19 ; 0xf23f3
+ mov ax, word [bp-00198h] ; 8b 86 68 fe ; 0xf23f5 ata.c:504
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf23f9
+ mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf23fc
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf2400
+ mov si, word [bp-0019ch] ; 8b b6 64 fe ; 0xf2403
+ mov ax, word [bp-0019eh] ; 8b 86 62 fe ; 0xf2407
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf240b
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf240e ata.c:505
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2411
+ jc short 02421h ; 72 0c ; 0xf2413
+ jbe short 02429h ; 76 12 ; 0xf2415
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2417
+ je short 02431h ; 74 16 ; 0xf2419
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf241b
+ je short 0242dh ; 74 0e ; 0xf241d
+ jmp short 0246eh ; eb 4d ; 0xf241f
+ test al, al ; 84 c0 ; 0xf2421
+ jne short 0246eh ; 75 49 ; 0xf2423
+ mov BL, strict byte 01eh ; b3 1e ; 0xf2425 ata.c:508
+ jmp short 02433h ; eb 0a ; 0xf2427 ata.c:509
+ mov BL, strict byte 026h ; b3 26 ; 0xf2429 ata.c:511
+ jmp short 02433h ; eb 06 ; 0xf242b ata.c:512
+ mov BL, strict byte 067h ; b3 67 ; 0xf242d ata.c:514
+ jmp short 02433h ; eb 02 ; 0xf242f ata.c:515
+ mov BL, strict byte 070h ; b3 70 ; 0xf2431 ata.c:517
+ mov al, bl ; 88 d8 ; 0xf2433 ata.c:524
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf2435
+ xor ah, ah ; 30 e4 ; 0xf2437
+ call 01756h ; e8 1a f3 ; 0xf2439
+ xor ah, ah ; 30 e4 ; 0xf243c
+ mov dx, ax ; 89 c2 ; 0xf243e
+ sal dx, 008h ; c1 e2 08 ; 0xf2440
+ movzx ax, bl ; 0f b6 c3 ; 0xf2443
+ call 01756h ; e8 0d f3 ; 0xf2446
+ xor ah, ah ; 30 e4 ; 0xf2449
+ add ax, dx ; 01 d0 ; 0xf244b
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf244d
+ mov al, bl ; 88 d8 ; 0xf2450 ata.c:525
+ add AL, strict byte 002h ; 04 02 ; 0xf2452
+ xor ah, ah ; 30 e4 ; 0xf2454
+ call 01756h ; e8 fd f2 ; 0xf2456
+ xor ah, ah ; 30 e4 ; 0xf2459
+ mov word [bp-03ch], ax ; 89 46 c4 ; 0xf245b
+ mov al, bl ; 88 d8 ; 0xf245e ata.c:526
+ add AL, strict byte 007h ; 04 07 ; 0xf2460
+ xor ah, ah ; 30 e4 ; 0xf2462
+ call 01756h ; e8 ef f2 ; 0xf2464
+ xor ah, ah ; 30 e4 ; 0xf2467
+ mov word [bp-038h], ax ; 89 46 c8 ; 0xf2469
+ jmp short 02480h ; eb 12 ; 0xf246c ata.c:528
+ push word [bp-02eh] ; ff 76 d2 ; 0xf246e ata.c:529
+ push word [bp-032h] ; ff 76 ce ; 0xf2471
+ push si ; 56 ; 0xf2474
+ push word [bp-02ch] ; ff 76 d4 ; 0xf2475
+ mov dx, ss ; 8c d2 ; 0xf2478
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf247a
+ call 0599dh ; e8 1d 35 ; 0xf247d
+ mov bx, 00db2h ; bb b2 0d ; 0xf2480 ata.c:532
+ mov cx, ds ; 8c d9 ; 0xf2483
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2485
+ call 019d3h ; e8 48 f5 ; 0xf2488
+ mov ax, word [bp-038h] ; 8b 46 c8 ; 0xf248b
+ push ax ; 50 ; 0xf248e
+ mov ax, word [bp-03ch] ; 8b 46 c4 ; 0xf248f
+ push ax ; 50 ; 0xf2492
+ mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2493
+ push ax ; 50 ; 0xf2496
+ push word [bp-022h] ; ff 76 de ; 0xf2497
+ push word [bp-01ch] ; ff 76 e4 ; 0xf249a
+ push word [bp-01ah] ; ff 76 e6 ; 0xf249d
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf24a0
+ push ax ; 50 ; 0xf24a4
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf24a5
+ push ax ; 50 ; 0xf24a9
+ push 0015fh ; 68 5f 01 ; 0xf24aa
+ push strict byte 00004h ; 6a 04 ; 0xf24ad
+ call 01a14h ; e8 62 f5 ; 0xf24af
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf24b2
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf24b5 ata.c:534
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf24b9
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf24bc
+ mov di, word [bp-01eh] ; 8b 7e e2 ; 0xf24bf
+ add di, ax ; 01 c7 ; 0xf24c2
+ mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf24c4
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf24c9 ata.c:535
+ mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf24cc
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf24d0 ata.c:536
+ mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf24d3
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf24d7 ata.c:537
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf24da
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf24de ata.c:538
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf24e1
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf24e5 ata.c:539
+ mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf24e8
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf24ec ata.c:540
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf24ef
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf24f3 ata.c:541
+ mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf24f6
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf24fa
+ mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf24fd
+ mov word [es:di+038h], si ; 26 89 75 38 ; 0xf2501
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf2505
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf2508
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf250c ata.c:542
+ push DS ; 1e ; 0xf250f
+ push SS ; 16 ; 0xf2510
+ pop DS ; 1f ; 0xf2511
+ lea si, [bp-03ch] ; 8d 76 c4 ; 0xf2512
+ movsw ; a5 ; 0xf2515
+ movsw ; a5 ; 0xf2516
+ movsw ; a5 ; 0xf2517
+ pop DS ; 1f ; 0xf2518
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2519 ata.c:543
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf251c
+ jnc near 025a7h ; 0f 83 85 00 ; 0xf251e
+ test al, al ; 84 c0 ; 0xf2522 ata.c:549
+ jne short 0252bh ; 75 05 ; 0xf2524
+ mov bx, strict word 0003dh ; bb 3d 00 ; 0xf2526 ata.c:550
+ jmp short 0252eh ; eb 03 ; 0xf2529 ata.c:551
+ mov bx, strict word 0004dh ; bb 4d 00 ; 0xf252b ata.c:552
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf252e
+ movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf2531 ata.c:564
+ imul si, si, strict byte 00005h ; 6b f6 05 ; 0xf2535
+ sal si, 002h ; c1 e6 02 ; 0xf2538
+ add si, 00104h ; 81 c6 04 01 ; 0xf253b
+ xor ax, ax ; 31 c0 ; 0xf253f
+ mov es, ax ; 8e c0 ; 0xf2541
+ mov word [es:si], bx ; 26 89 1c ; 0xf2543 ata.c:565
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf2546
+ mov es, dx ; 8e c2 ; 0xf254a ata.c:571
+ mov word [es:bx+00ch], ax ; 26 89 47 0c ; 0xf254c
+ mov word [es:bx+005h], ax ; 26 89 47 05 ; 0xf2550
+ mov word [es:bx+007h], ax ; 26 89 47 07 ; 0xf2554
+ mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2558 ata.c:573
+ mov word [es:bx], ax ; 26 89 07 ; 0xf255b
+ mov al, byte [bp-03ch] ; 8a 46 c4 ; 0xf255e ata.c:574
+ mov byte [es:bx+002h], al ; 26 88 47 02 ; 0xf2561
+ mov byte [es:bx+003h], 0a0h ; 26 c6 47 03 a0 ; 0xf2565 ata.c:575
+ mov al, byte [bp-022h] ; 8a 46 de ; 0xf256a ata.c:576
+ mov byte [es:bx+004h], al ; 26 88 47 04 ; 0xf256d
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2571 ata.c:577
+ mov word [es:bx+009h], ax ; 26 89 47 09 ; 0xf2574
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2578 ata.c:578
+ mov byte [es:bx+00bh], al ; 26 88 47 0b ; 0xf257b
+ mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf257f ata.c:579
+ mov byte [es:bx+00eh], al ; 26 88 47 0e ; 0xf2582
+ xor al, al ; 30 c0 ; 0xf2586 ata.c:580
+ xor ah, ah ; 30 e4 ; 0xf2588 ata.c:581
+ jmp short 02591h ; eb 05 ; 0xf258a
+ cmp ah, 00fh ; 80 fc 0f ; 0xf258c
+ jnc short 0259fh ; 73 0e ; 0xf258f
+ movzx si, ah ; 0f b6 f4 ; 0xf2591 ata.c:582
+ mov es, dx ; 8e c2 ; 0xf2594
+ add si, bx ; 01 de ; 0xf2596
+ add al, byte [es:si] ; 26 02 04 ; 0xf2598
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf259b
+ jmp short 0258ch ; eb ed ; 0xf259d
+ neg al ; f6 d8 ; 0xf259f ata.c:583
+ mov es, dx ; 8e c2 ; 0xf25a1 ata.c:584
+ mov byte [es:bx+00fh], al ; 26 88 47 0f ; 0xf25a3
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf25a7 ata.c:588
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf25ab
+ add bx, word [bp-01eh] ; 03 5e e2 ; 0xf25ae
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf25b1
+ mov byte [es:bx+001e3h], al ; 26 88 87 e3 01 ; 0xf25b4
+ inc byte [bp-008h] ; fe 46 f8 ; 0xf25b9 ata.c:589
+ cmp byte [bp-00eh], 003h ; 80 7e f2 03 ; 0xf25bc ata.c:593
+ jne near 0265eh ; 0f 85 9a 00 ; 0xf25c0
+ movzx ax, byte [bp-016h] ; 0f b6 46 ea ; 0xf25c4 ata.c:598
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf25c8
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf25cb
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf25ce
+ add bx, ax ; 01 c3 ; 0xf25d1
+ mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf25d3
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf25d8 ata.c:599
+ lea dx, [bp-00266h] ; 8d 96 9a fd ; 0xf25dd ata.c:600
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf25e1
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf25e4
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf25e8
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf25ec ata.c:601
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf25ef
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf25f3 ata.c:603
+ mov bx, 000a1h ; bb a1 00 ; 0xf25f6
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf25f9
+ mov dx, es ; 8c c2 ; 0xf25fc
+ call 01efah ; e8 f9 f8 ; 0xf25fe
+ test ax, ax ; 85 c0 ; 0xf2601
+ je short 02610h ; 74 0b ; 0xf2603
+ push 00186h ; 68 86 01 ; 0xf2605 ata.c:604
+ push strict byte 00007h ; 6a 07 ; 0xf2608
+ call 01a14h ; e8 07 f4 ; 0xf260a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf260d
+ mov cl, byte [bp-00265h] ; 8a 8e 9b fd ; 0xf2610 ata.c:606
+ and cl, 01fh ; 80 e1 1f ; 0xf2614
+ test byte [bp-00266h], 080h ; f6 86 9a fd 80 ; 0xf2617 ata.c:607
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf261c
+ xor ah, ah ; 30 e4 ; 0xf261f
+ mov dx, ax ; 89 c2 ; 0xf2621
+ cmp byte [bp-00206h], 000h ; 80 be fa fd 00 ; 0xf2623 ata.c:609
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf2628
+ xor ah, ah ; 30 e4 ; 0xf262b
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf262d ata.c:615
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2631
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf2634
+ add bx, word [bp-01eh] ; 03 5e e2 ; 0xf2637
+ mov byte [es:bx+023h], cl ; 26 88 4f 23 ; 0xf263a
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf263e ata.c:616
+ mov byte [es:bx+026h], al ; 26 88 47 26 ; 0xf2642 ata.c:617
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2646 ata.c:618
+ movzx bx, byte [bp-00ah] ; 0f b6 5e f6 ; 0xf264c ata.c:621
+ add bx, word [bp-01eh] ; 03 5e e2 ; 0xf2650
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf2653
+ mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf2656
+ inc byte [bp-00ah] ; fe 46 f6 ; 0xf265b ata.c:622
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf265e ata.c:631
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2661
+ je short 02694h ; 74 2f ; 0xf2663
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2665
+ jne near 026f7h ; 0f 85 8c 00 ; 0xf2667
+ movzx si, byte [bp-016h] ; 0f b6 76 ea ; 0xf266b ata.c:633
+ imul si, si, strict byte 0001ch ; 6b f6 1c ; 0xf266f
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf2672
+ add si, word [bp-01eh] ; 03 76 e2 ; 0xf2675
+ mov ax, word [es:si+03ch] ; 26 8b 44 3c ; 0xf2678
+ mov bx, word [es:si+03ah] ; 26 8b 5c 3a ; 0xf267c
+ mov cx, word [es:si+038h] ; 26 8b 4c 38 ; 0xf2680
+ mov dx, word [es:si+036h] ; 26 8b 54 36 ; 0xf2684
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf2688
+ call 09f90h ; e8 02 79 ; 0xf268b
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf268e
+ mov word [bp-028h], cx ; 89 4e d8 ; 0xf2691
+ movzx dx, byte [bp-001c5h] ; 0f b6 96 3b fe ; 0xf2694 ata.c:636
+ sal dx, 008h ; c1 e2 08 ; 0xf2699
+ movzx ax, byte [bp-001c6h] ; 0f b6 86 3a fe ; 0xf269c
+ or ax, dx ; 09 d0 ; 0xf26a1
+ mov byte [bp-014h], 00fh ; c6 46 ec 0f ; 0xf26a3 ata.c:637
+ jmp short 026b2h ; eb 09 ; 0xf26a7
+ dec byte [bp-014h] ; fe 4e ec ; 0xf26a9 ata.c:640
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf26ac
+ jbe short 026bfh ; 76 0d ; 0xf26b0
+ movzx cx, byte [bp-014h] ; 0f b6 4e ec ; 0xf26b2
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf26b6
+ sal dx, CL ; d3 e2 ; 0xf26b9
+ test ax, dx ; 85 d0 ; 0xf26bb
+ je short 026a9h ; 74 ea ; 0xf26bd
+ xor di, di ; 31 ff ; 0xf26bf ata.c:643
+ jmp short 026c8h ; eb 05 ; 0xf26c1
+ cmp di, strict byte 00014h ; 83 ff 14 ; 0xf26c3
+ jnl short 026ddh ; 7d 15 ; 0xf26c6
+ mov si, di ; 89 fe ; 0xf26c8 ata.c:644
+ add si, di ; 01 fe ; 0xf26ca
+ mov al, byte [bp+si-0022fh] ; 8a 82 d1 fd ; 0xf26cc
+ mov byte [bp+si-066h], al ; 88 42 9a ; 0xf26d0
+ mov al, byte [bp+si-00230h] ; 8a 82 d0 fd ; 0xf26d3 ata.c:645
+ mov byte [bp+si-065h], al ; 88 42 9b ; 0xf26d7
+ inc di ; 47 ; 0xf26da ata.c:646
+ jmp short 026c3h ; eb e6 ; 0xf26db
+ mov byte [bp-03eh], 000h ; c6 46 c2 00 ; 0xf26dd ata.c:649
+ mov di, strict word 00027h ; bf 27 00 ; 0xf26e1 ata.c:650
+ jmp short 026ebh ; eb 05 ; 0xf26e4
+ dec di ; 4f ; 0xf26e6 ata.c:655
+ test di, di ; 85 ff ; 0xf26e7
+ jle short 026f7h ; 7e 0c ; 0xf26e9
+ cmp byte [bp+di-066h], 020h ; 80 7b 9a 20 ; 0xf26eb
+ jne short 026f7h ; 75 06 ; 0xf26ef
+ mov byte [bp+di-066h], 000h ; c6 43 9a 00 ; 0xf26f1
+ jmp short 026e6h ; eb ef ; 0xf26f5
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf26f7 ata.c:662
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf26fa
+ je short 0275ah ; 74 5c ; 0xf26fc
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf26fe
+ je short 0270bh ; 74 09 ; 0xf2700
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2702
+ je near 027c2h ; 0f 84 ba 00 ; 0xf2704
+ jmp near 027e1h ; e9 d6 00 ; 0xf2708
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf270b ata.c:665
+ je short 02716h ; 74 05 ; 0xf270f
+ mov ax, 001b1h ; b8 b1 01 ; 0xf2711
+ jmp short 02719h ; eb 03 ; 0xf2714
+ mov ax, 001b8h ; b8 b8 01 ; 0xf2716
+ push ax ; 50 ; 0xf2719
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf271a
+ push ax ; 50 ; 0xf271e
+ push 001bfh ; 68 bf 01 ; 0xf271f
+ push strict byte 00002h ; 6a 02 ; 0xf2722
+ call 01a14h ; e8 ed f2 ; 0xf2724
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2727
+ xor di, di ; 31 ff ; 0xf272a ata.c:666
+ movzx ax, byte [bp+di-066h] ; 0f b6 43 9a ; 0xf272c ata.c:667
+ inc di ; 47 ; 0xf2730
+ test ax, ax ; 85 c0 ; 0xf2731
+ je short 02743h ; 74 0e ; 0xf2733
+ push ax ; 50 ; 0xf2735 ata.c:668
+ push 001cah ; 68 ca 01 ; 0xf2736
+ push strict byte 00002h ; 6a 02 ; 0xf2739
+ call 01a14h ; e8 d6 f2 ; 0xf273b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf273e
+ jmp short 0272ch ; eb e9 ; 0xf2741
+ push dword [bp-02ah] ; 66 ff 76 d6 ; 0xf2743 ata.c:669
+ movzx ax, byte [bp-014h] ; 0f b6 46 ec ; 0xf2747
+ push ax ; 50 ; 0xf274b
+ push 001cdh ; 68 cd 01 ; 0xf274c
+ push strict byte 00002h ; 6a 02 ; 0xf274f
+ call 01a14h ; e8 c0 f2 ; 0xf2751
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf2754
+ jmp near 027e1h ; e9 87 00 ; 0xf2757 ata.c:670
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf275a ata.c:672
+ je short 02765h ; 74 05 ; 0xf275e
+ mov ax, 001b1h ; b8 b1 01 ; 0xf2760
+ jmp short 02768h ; eb 03 ; 0xf2763
+ mov ax, 001b8h ; b8 b8 01 ; 0xf2765
+ push ax ; 50 ; 0xf2768
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf2769
+ push ax ; 50 ; 0xf276d
+ push 001bfh ; 68 bf 01 ; 0xf276e
+ push strict byte 00002h ; 6a 02 ; 0xf2771
+ call 01a14h ; e8 9e f2 ; 0xf2773
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2776
+ xor di, di ; 31 ff ; 0xf2779 ata.c:673
+ movzx ax, byte [bp+di-066h] ; 0f b6 43 9a ; 0xf277b ata.c:674
+ inc di ; 47 ; 0xf277f
+ test ax, ax ; 85 c0 ; 0xf2780
+ je short 02792h ; 74 0e ; 0xf2782
+ push ax ; 50 ; 0xf2784 ata.c:675
+ push 001cah ; 68 ca 01 ; 0xf2785
+ push strict byte 00002h ; 6a 02 ; 0xf2788
+ call 01a14h ; e8 87 f2 ; 0xf278a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf278d
+ jmp short 0277bh ; eb e9 ; 0xf2790
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf2792 ata.c:676
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf2796
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf2799
+ add bx, word [bp-01eh] ; 03 5e e2 ; 0xf279c
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf279f
+ jne short 027b0h ; 75 0a ; 0xf27a4
+ movzx ax, byte [bp-014h] ; 0f b6 46 ec ; 0xf27a6 ata.c:677
+ push ax ; 50 ; 0xf27aa
+ push 001edh ; 68 ed 01 ; 0xf27ab
+ jmp short 027b8h ; eb 08 ; 0xf27ae ata.c:678
+ movzx ax, byte [bp-014h] ; 0f b6 46 ec ; 0xf27b0 ata.c:679
+ push ax ; 50 ; 0xf27b4
+ push 00207h ; 68 07 02 ; 0xf27b5
+ push strict byte 00002h ; 6a 02 ; 0xf27b8
+ call 01a14h ; e8 57 f2 ; 0xf27ba
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf27bd
+ jmp short 027e1h ; eb 1f ; 0xf27c0 ata.c:680
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf27c2 ata.c:682
+ je short 027cdh ; 74 05 ; 0xf27c6
+ mov ax, 001b1h ; b8 b1 01 ; 0xf27c8
+ jmp short 027d0h ; eb 03 ; 0xf27cb
+ mov ax, 001b8h ; b8 b8 01 ; 0xf27cd
+ push ax ; 50 ; 0xf27d0
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf27d1
+ push ax ; 50 ; 0xf27d5
+ push 00219h ; 68 19 02 ; 0xf27d6
+ push strict byte 00002h ; 6a 02 ; 0xf27d9
+ call 01a14h ; e8 36 f2 ; 0xf27db
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf27de
+ inc byte [bp-016h] ; fe 46 ea ; 0xf27e1 ata.c:687
+ cmp byte [bp-016h], 008h ; 80 7e ea 08 ; 0xf27e4
+ jnc short 0283bh ; 73 51 ; 0xf27e8
+ movzx bx, byte [bp-016h] ; 0f b6 5e ea ; 0xf27ea
+ mov ax, bx ; 89 d8 ; 0xf27ee
+ cwd ; 99 ; 0xf27f0
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf27f1
+ sar ax, 1 ; d1 f8 ; 0xf27f3
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf27f5
+ mov al, byte [bp-034h] ; 8a 46 cc ; 0xf27f8
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf27fb
+ mov ax, bx ; 89 d8 ; 0xf27fe
+ cwd ; 99 ; 0xf2800
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf2801
+ idiv bx ; f7 fb ; 0xf2804
+ mov cx, dx ; 89 d1 ; 0xf2806
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2808
+ movzx ax, byte [bp-034h] ; 0f b6 46 cc ; 0xf280b
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf280f
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf2812
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf2815
+ add si, ax ; 01 c6 ; 0xf2818
+ mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf281a
+ mov ax, word [es:si+00208h] ; 26 8b 84 08 02 ; 0xf281f
+ mov word [bp-026h], ax ; 89 46 da ; 0xf2824
+ mov dx, ax ; 89 c2 ; 0xf2827
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2829
+ mov AL, strict byte 00ah ; b0 0a ; 0xf282c
+ out DX, AL ; ee ; 0xf282e
+ test cl, cl ; 84 c9 ; 0xf282f
+ je near 02238h ; 0f 84 03 fa ; 0xf2831
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2835
+ jmp near 0223bh ; e9 00 fa ; 0xf2838
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf283b ata.c:690
+ mov es, [bp-030h] ; 8e 46 d0 ; 0xf283e
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf2841
+ mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf2844
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2849 ata.c:691
+ mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf284c
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf2851 ata.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2854
+ mov es, ax ; 8e c0 ; 0xf2857
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2859
+ mov byte [es:bx], al ; 26 88 07 ; 0xf285c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf285f ata.c:704
+ pop di ; 5f ; 0xf2862
+ pop si ; 5e ; 0xf2863
+ pop bp ; 5d ; 0xf2864
+ retn ; c3 ; 0xf2865
+ ; disGetNextSymbol 0xf2866 LB 0x77df -> off=0x0 cb=00000000000002bc uValue=00000000000f1266 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf2866 LB 0x2bc
+ push bp ; 55 ; 0xf2866 ata.c:718
+ mov bp, sp ; 89 e5 ; 0xf2867
+ push si ; 56 ; 0xf2869
+ push di ; 57 ; 0xf286a
+ sub sp, strict byte 00022h ; 83 ec 22 ; 0xf286b
+ mov di, ax ; 89 c7 ; 0xf286e
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf2870
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf2873
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf2876
+ mov es, dx ; 8e c2 ; 0xf2879 ata.c:730
+ movzx ax, byte [es:di+00ch] ; 26 0f b6 45 0c ; 0xf287b
+ mov dx, ax ; 89 c2 ; 0xf2880 ata.c:731
+ shr dx, 1 ; d1 ea ; 0xf2882
+ mov dh, al ; 88 c6 ; 0xf2884 ata.c:732
+ and dh, 001h ; 80 e6 01 ; 0xf2886
+ mov byte [bp-006h], dh ; 88 76 fa ; 0xf2889
+ xor dh, dh ; 30 f6 ; 0xf288c ata.c:734
+ imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf288e
+ mov bx, di ; 89 fb ; 0xf2891
+ add bx, dx ; 01 d3 ; 0xf2893
+ mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf2895
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf289a
+ mov dx, word [es:bx+00208h] ; 26 8b 97 08 02 ; 0xf289d ata.c:735
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf28a2
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf28a5 ata.c:736
+ mov bx, di ; 89 fb ; 0xf28a8
+ add bx, ax ; 01 c3 ; 0xf28aa
+ mov al, byte [es:bx+026h] ; 26 8a 47 26 ; 0xf28ac
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf28b0
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf28b3 ata.c:739
+ jne short 028beh ; 75 07 ; 0xf28b5
+ mov word [bp-020h], 00080h ; c7 46 e0 80 00 ; 0xf28b7 ata.c:740
+ jmp short 028c3h ; eb 05 ; 0xf28bc ata.c:741
+ mov word [bp-020h], 00100h ; c7 46 e0 00 01 ; 0xf28be ata.c:743
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf28c3 ata.c:745
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf28c6
+ in AL, DX ; ec ; 0xf28c9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf28ca
+ test AL, strict byte 080h ; a8 80 ; 0xf28cc ata.c:746
+ je short 028dfh ; 74 0f ; 0xf28ce
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf28d0 ata.c:749
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf28d3
+ mov AL, strict byte 008h ; b0 08 ; 0xf28d6
+ out DX, AL ; ee ; 0xf28d8
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf28d9 ata.c:750
+ jmp near 02b19h ; e9 3a 02 ; 0xf28dc
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf28df ata.c:753
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf28e2
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf28e6
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf28e9
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf28ed
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf28f0
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf28f4
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf28f7
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf28fa
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf28fd ata.c:754
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2901
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2904
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf2908
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf290b ata.c:755
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf290f
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf2912 ata.c:756
+ mov word [bp-026h], ax ; 89 46 da ; 0xf2916
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2919 ata.c:757
+ mov word [bp-022h], ax ; 89 46 de ; 0xf291d
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf2920 ata.c:760
+ test ax, ax ; 85 c0 ; 0xf2923
+ jne near 029f0h ; 0f 85 c7 00 ; 0xf2925
+ xor dx, dx ; 31 d2 ; 0xf2929 ata.c:761
+ xor bx, bx ; 31 db ; 0xf292b
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf292d
+ add si, word [bp-01ah] ; 03 76 e6 ; 0xf2930
+ adc dx, word [bp-016h] ; 13 56 ea ; 0xf2933
+ adc bx, word [bp-014h] ; 13 5e ec ; 0xf2936
+ adc ax, word [bp-010h] ; 13 46 f0 ; 0xf2939
+ test ax, ax ; 85 c0 ; 0xf293c
+ jnbe short 02950h ; 77 10 ; 0xf293e
+ jne short 029b3h ; 75 71 ; 0xf2940
+ test bx, bx ; 85 db ; 0xf2942
+ jnbe short 02950h ; 77 0a ; 0xf2944
+ jne short 029b3h ; 75 6b ; 0xf2946
+ cmp dx, 01000h ; 81 fa 00 10 ; 0xf2948
+ jnbe short 02950h ; 77 02 ; 0xf294c
+ jne short 029b3h ; 75 63 ; 0xf294e
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2950 ata.c:763
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf2953
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf2956
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf2959
+ mov si, strict word 00018h ; be 18 00 ; 0xf295c
+ call 09f90h ; e8 2e 76 ; 0xf295f
+ xor dh, dh ; 30 f6 ; 0xf2962
+ mov word [bp-01ch], dx ; 89 56 e4 ; 0xf2964
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf2967 ata.c:764
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf296a
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf296d
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf2970
+ mov si, strict word 00020h ; be 20 00 ; 0xf2973
+ call 09f90h ; e8 17 76 ; 0xf2976
+ mov bx, dx ; 89 d3 ; 0xf2979
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf297b ata.c:765
+ xor al, al ; 30 c0 ; 0xf297e
+ shr ax, 008h ; c1 e8 08 ; 0xf2980
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2983
+ inc dx ; 42 ; 0xf2986
+ inc dx ; 42 ; 0xf2987
+ out DX, AL ; ee ; 0xf2988
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2989 ata.c:766
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf298c
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf298f
+ out DX, AL ; ee ; 0xf2992
+ mov ax, bx ; 89 d8 ; 0xf2993 ata.c:767
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2995
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2998
+ out DX, AL ; ee ; 0xf299b
+ shr ax, 008h ; c1 e8 08 ; 0xf299c ata.c:768
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf299f
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf29a2
+ out DX, AL ; ee ; 0xf29a5
+ xor al, al ; 30 c0 ; 0xf29a6 ata.c:771
+ mov byte [bp-015h], al ; 88 46 eb ; 0xf29a8
+ xor ah, ah ; 30 e4 ; 0xf29ab
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf29ad
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf29b0
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf29b3 ata.c:773
+ xor ah, ah ; 30 e4 ; 0xf29b6
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf29b8
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf29bb ata.c:774
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf29be
+ mov cx, word [bp-016h] ; 8b 4e ea ; 0xf29c1
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf29c4
+ mov si, strict word 00008h ; be 08 00 ; 0xf29c7
+ call 09f90h ; e8 c3 75 ; 0xf29ca
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf29cd
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf29d0
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf29d3
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf29d6
+ mov word [bp-026h], dx ; 89 56 da ; 0xf29d9 ata.c:775
+ mov si, strict word 00010h ; be 10 00 ; 0xf29dc ata.c:776
+ call 09f90h ; e8 ae 75 ; 0xf29df
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf29e2
+ mov ax, dx ; 89 d0 ; 0xf29e5 ata.c:777
+ xor ah, dh ; 30 f4 ; 0xf29e7
+ and AL, strict byte 00fh ; 24 0f ; 0xf29e9
+ or AL, strict byte 040h ; 0c 40 ; 0xf29eb
+ mov word [bp-022h], ax ; 89 46 de ; 0xf29ed
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf29f0 ata.c:780
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29f3
+ mov AL, strict byte 00ah ; b0 0a ; 0xf29f6
+ out DX, AL ; ee ; 0xf29f8
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf29f9 ata.c:781
+ inc dx ; 42 ; 0xf29fc
+ xor al, al ; 30 c0 ; 0xf29fd
+ out DX, AL ; ee ; 0xf29ff
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a00 ata.c:782
+ inc dx ; 42 ; 0xf2a03
+ inc dx ; 42 ; 0xf2a04
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2a05
+ out DX, AL ; ee ; 0xf2a08
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a09 ata.c:783
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2a0c
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf2a0f
+ out DX, AL ; ee ; 0xf2a12
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf2a13 ata.c:784
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a16
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2a19
+ out DX, AL ; ee ; 0xf2a1c
+ shr ax, 008h ; c1 e8 08 ; 0xf2a1d ata.c:785
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a20
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2a23
+ out DX, AL ; ee ; 0xf2a26
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2a27 ata.c:786
+ je short 02a32h ; 74 05 ; 0xf2a2b
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2a2d
+ jmp short 02a35h ; eb 03 ; 0xf2a30
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2a32
+ movzx dx, byte [bp-022h] ; 0f b6 56 de ; 0xf2a35
+ or ax, dx ; 09 d0 ; 0xf2a39
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a3b
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a3e
+ out DX, AL ; ee ; 0xf2a41
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a42 ata.c:787
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a45
+ mov al, byte [bp-024h] ; 8a 46 dc ; 0xf2a48
+ out DX, AL ; ee ; 0xf2a4b
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2a4c ata.c:790
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2a4f
+ in AL, DX ; ec ; 0xf2a52
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2a53
+ mov dl, al ; 88 c2 ; 0xf2a55
+ test AL, strict byte 080h ; a8 80 ; 0xf2a57 ata.c:791
+ jne short 02a4ch ; 75 f1 ; 0xf2a59
+ test AL, strict byte 001h ; a8 01 ; 0xf2a5b ata.c:795
+ je short 02a6eh ; 74 0f ; 0xf2a5d
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2a5f ata.c:798
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a62
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a65
+ out DX, AL ; ee ; 0xf2a67
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf2a68 ata.c:799
+ jmp near 02b19h ; e9 ab 00 ; 0xf2a6b
+ test dl, 008h ; f6 c2 08 ; 0xf2a6e ata.c:800
+ jne short 02a82h ; 75 0f ; 0xf2a71
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2a73 ata.c:803
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a76
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a79
+ out DX, AL ; ee ; 0xf2a7b
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2a7c ata.c:804
+ jmp near 02b19h ; e9 97 00 ; 0xf2a7f
+ sti ; fb ; 0xf2a82 ata.c:809
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2a83 ata.c:814
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf2a86
+ jc short 02a9bh ; 72 10 ; 0xf2a89
+ sub ax, 00800h ; 2d 00 08 ; 0xf2a8b ata.c:815
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2a8e
+ add dx, 00080h ; 81 c2 80 00 ; 0xf2a91
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2a95
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf2a98
+ cmp byte [bp-008h], 001h ; 80 7e f8 01 ; 0xf2a9b ata.c:818
+ jne short 02ab3h ; 75 12 ; 0xf2a9f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2aa1 ata.c:819
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2aa4
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2aa7
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2aaa
+ db 0f3h, 066h, 026h, 06fh
+ ; rep es outsd ; f3 66 26 6f ; 0xf2aad
+ jmp short 02ac2h ; eb 0f ; 0xf2ab1 ata.c:820
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2ab3 ata.c:822
+ mov cx, word [bp-020h] ; 8b 4e e0 ; 0xf2ab6
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf2ab9
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2abc
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2abf
+ mov word [bp-00eh], si ; 89 76 f2 ; 0xf2ac2
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf2ac5 ata.c:824
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf2ac8
+ dec word [bp-01ah] ; ff 4e e6 ; 0xf2acc ata.c:825
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2acf ata.c:827
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2ad2
+ in AL, DX ; ec ; 0xf2ad5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ad6
+ mov dl, al ; 88 c2 ; 0xf2ad8
+ test AL, strict byte 080h ; a8 80 ; 0xf2ada ata.c:828
+ jne short 02acfh ; 75 f1 ; 0xf2adc
+ cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf2ade ata.c:831
+ jne short 02af8h ; 75 14 ; 0xf2ae2
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2ae4 ata.c:832
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2ae6
+ je short 02b0eh ; 74 24 ; 0xf2ae8
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2aea ata.c:836
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2aed
+ mov AL, strict byte 008h ; b0 08 ; 0xf2af0
+ out DX, AL ; ee ; 0xf2af2
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2af3 ata.c:837
+ jmp short 02b19h ; eb 21 ; 0xf2af6
+ mov al, dl ; 88 d0 ; 0xf2af8 ata.c:842
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2afa
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2afc
+ je short 02a83h ; 74 83 ; 0xf2afe
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b00 ata.c:846
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b03
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b06
+ out DX, AL ; ee ; 0xf2b08
+ mov dx, strict word 00007h ; ba 07 00 ; 0xf2b09 ata.c:847
+ jmp short 02b19h ; eb 0b ; 0xf2b0c
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf2b0e ata.c:853
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2b11
+ mov AL, strict byte 008h ; b0 08 ; 0xf2b14
+ out DX, AL ; ee ; 0xf2b16
+ xor dx, dx ; 31 d2 ; 0xf2b17 ata.c:854
+ mov ax, dx ; 89 d0 ; 0xf2b19 ata.c:855
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b1b
+ pop di ; 5f ; 0xf2b1e
+ pop si ; 5e ; 0xf2b1f
+ pop bp ; 5d ; 0xf2b20
+ retn ; c3 ; 0xf2b21
+ ; disGetNextSymbol 0xf2b22 LB 0x7523 -> off=0x0 cb=00000000000000b5 uValue=00000000000f1522 'ata_read_sectors'
+ata_read_sectors: ; 0xf2b22 LB 0xb5
+ push bp ; 55 ; 0xf2b22 ata.c:865
+ mov bp, sp ; 89 e5 ; 0xf2b23
+ push si ; 56 ; 0xf2b25
+ push di ; 57 ; 0xf2b26
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf2b27
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2b2a
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2b2d ata.c:871
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2b30
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2b34 ata.c:872
+ mov dx, cx ; 89 ca ; 0xf2b38
+ sal dx, 009h ; c1 e2 09 ; 0xf2b3a
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2b3d ata.c:874
+ je short 02b63h ; 74 1f ; 0xf2b42
+ xor ah, ah ; 30 e4 ; 0xf2b44 ata.c:876
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2b46
+ mov [bp-00ah], es ; 8c 46 f6 ; 0xf2b49
+ mov di, si ; 89 f7 ; 0xf2b4c
+ add di, ax ; 01 c7 ; 0xf2b4e
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2b50
+ mov bx, 000c4h ; bb c4 00 ; 0xf2b54 ata.c:878
+ mov ax, si ; 89 f0 ; 0xf2b57
+ mov dx, es ; 8c c2 ; 0xf2b59
+ call 01efah ; e8 9c f3 ; 0xf2b5b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2b5e ata.c:879
+ jmp short 02bc8h ; eb 65 ; 0xf2b61 ata.c:880
+ xor bx, bx ; 31 db ; 0xf2b63 ata.c:882
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf2b65
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf2b68
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2b6b
+ add di, cx ; 01 cf ; 0xf2b6e
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2b70
+ mov di, word [es:si+002h] ; 26 8b 7c 02 ; 0xf2b73
+ adc di, bx ; 11 df ; 0xf2b77
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2b79
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf2b7c
+ adc bx, word [bp-00ah] ; 13 5e f6 ; 0xf2b80
+ mov di, word [es:si+006h] ; 26 8b 7c 06 ; 0xf2b83
+ adc di, word [bp-00ch] ; 13 7e f4 ; 0xf2b87
+ test di, di ; 85 ff ; 0xf2b8a
+ jnbe short 02b9fh ; 77 11 ; 0xf2b8c
+ jne short 02babh ; 75 1b ; 0xf2b8e
+ test bx, bx ; 85 db ; 0xf2b90
+ jnbe short 02b9fh ; 77 0b ; 0xf2b92
+ jne short 02babh ; 75 15 ; 0xf2b94
+ cmp word [bp-006h], 01000h ; 81 7e fa 00 10 ; 0xf2b96
+ jnbe short 02b9fh ; 77 02 ; 0xf2b9b
+ jne short 02babh ; 75 0c ; 0xf2b9d
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2b9f ata.c:884
+ mov ax, si ; 89 f0 ; 0xf2ba2
+ mov dx, es ; 8c c2 ; 0xf2ba4
+ call 01efah ; e8 51 f3 ; 0xf2ba6
+ jmp short 02bceh ; eb 23 ; 0xf2ba9 ata.c:885
+ xor ah, ah ; 30 e4 ; 0xf2bab ata.c:886
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2bad
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2bb0
+ mov di, si ; 89 f7 ; 0xf2bb3
+ add di, ax ; 01 c7 ; 0xf2bb5
+ mov word [es:di+028h], dx ; 26 89 55 28 ; 0xf2bb7
+ mov bx, 000c4h ; bb c4 00 ; 0xf2bbb ata.c:888
+ mov ax, si ; 89 f0 ; 0xf2bbe
+ mov dx, es ; 8c c2 ; 0xf2bc0
+ call 01efah ; e8 35 f3 ; 0xf2bc2
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2bc5 ata.c:889
+ mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2bc8
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2bce ata.c:893
+ pop di ; 5f ; 0xf2bd1
+ pop si ; 5e ; 0xf2bd2
+ pop bp ; 5d ; 0xf2bd3
+ retn 00004h ; c2 04 00 ; 0xf2bd4
+ ; disGetNextSymbol 0xf2bd7 LB 0x746e -> off=0x0 cb=000000000000005b uValue=00000000000f15d7 'ata_write_sectors'
+ata_write_sectors: ; 0xf2bd7 LB 0x5b
+ push bp ; 55 ; 0xf2bd7 ata.c:902
+ mov bp, sp ; 89 e5 ; 0xf2bd8
+ push si ; 56 ; 0xf2bda
+ push di ; 57 ; 0xf2bdb
+ push ax ; 50 ; 0xf2bdc
+ les si, [bp+004h] ; c4 76 04 ; 0xf2bdd
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2be0 ata.c:906
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2be4 ata.c:908
+ je short 02bf7h ; 74 0c ; 0xf2be9
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2beb ata.c:910
+ mov ax, si ; 89 f0 ; 0xf2bee
+ mov dx, es ; 8c c2 ; 0xf2bf0
+ call 02866h ; e8 71 fc ; 0xf2bf2
+ jmp short 02c29h ; eb 32 ; 0xf2bf5
+ xor ax, ax ; 31 c0 ; 0xf2bf7 ata.c:913
+ xor bx, bx ; 31 db ; 0xf2bf9
+ xor dx, dx ; 31 d2 ; 0xf2bfb
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2bfd
+ add di, cx ; 01 cf ; 0xf2c00
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2c02
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2c05
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2c09
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2c0d
+ test dx, dx ; 85 d2 ; 0xf2c11
+ jnbe short 02c24h ; 77 0f ; 0xf2c13
+ jne short 02bebh ; 75 d4 ; 0xf2c15
+ test bx, bx ; 85 db ; 0xf2c17
+ jnbe short 02c24h ; 77 09 ; 0xf2c19
+ jne short 02bebh ; 75 ce ; 0xf2c1b
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2c1d
+ jnbe short 02c24h ; 77 02 ; 0xf2c20
+ jne short 02bebh ; 75 c7 ; 0xf2c22
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2c24 ata.c:914
+ jmp short 02beeh ; eb c5 ; 0xf2c27
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2c29 ata.c:918
+ pop di ; 5f ; 0xf2c2c
+ pop si ; 5e ; 0xf2c2d
+ pop bp ; 5d ; 0xf2c2e
+ retn 00004h ; c2 04 00 ; 0xf2c2f
+ ; disGetNextSymbol 0xf2c32 LB 0x7413 -> off=0x0 cb=00000000000002df uValue=00000000000f1632 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2c32 LB 0x2df
+ push bp ; 55 ; 0xf2c32 ata.c:930
+ mov bp, sp ; 89 e5 ; 0xf2c33
+ push si ; 56 ; 0xf2c35
+ push di ; 57 ; 0xf2c36
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xf2c37
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2c3a
+ mov di, bx ; 89 df ; 0xf2c3d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2c3f ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2c42
+ mov es, dx ; 8e c2 ; 0xf2c45
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2c47
+ mov word [bp-012h], 00122h ; c7 46 ee 22 01 ; 0xf2c4a ata.c:49
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf2c4f
+ mov dx, ax ; 89 c2 ; 0xf2c52 ata.c:942
+ shr dx, 1 ; d1 ea ; 0xf2c54
+ mov dh, al ; 88 c6 ; 0xf2c56 ata.c:943
+ and dh, 001h ; 80 e6 01 ; 0xf2c58
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf2c5b
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2c5e ata.c:946
+ jne short 02c83h ; 75 1f ; 0xf2c62
+ mov bx, 00db2h ; bb b2 0d ; 0xf2c64 ata.c:947
+ mov cx, ds ; 8c d9 ; 0xf2c67
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2c69
+ call 019d3h ; e8 64 ed ; 0xf2c6c
+ push 00233h ; 68 33 02 ; 0xf2c6f
+ push 00242h ; 68 42 02 ; 0xf2c72
+ push strict byte 00004h ; 6a 04 ; 0xf2c75
+ call 01a14h ; e8 9a ed ; 0xf2c77
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2c7a
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf2c7d ata.c:948
+ jmp near 02f06h ; e9 83 02 ; 0xf2c80
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2c83 ata.c:952
+ jne short 02c7dh ; 75 f4 ; 0xf2c87
+ xor dh, dh ; 30 f6 ; 0xf2c89 ata.c:957
+ imul dx, dx, strict byte 00006h ; 6b d2 06 ; 0xf2c8b
+ les si, [bp-012h] ; c4 76 ee ; 0xf2c8e
+ add si, dx ; 01 d6 ; 0xf2c91
+ mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf2c93
+ mov dx, word [es:si+00208h] ; 26 8b 94 08 02 ; 0xf2c98 ata.c:958
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf2c9d
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf2ca0 ata.c:959
+ mov si, word [bp-012h] ; 8b 76 ee ; 0xf2ca3
+ add si, ax ; 01 c6 ; 0xf2ca6
+ mov al, byte [es:si+026h] ; 26 8a 44 26 ; 0xf2ca8
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2cac
+ xor ax, ax ; 31 c0 ; 0xf2caf ata.c:960
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf2cb1
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2cb4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2cb7 ata.c:962
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2cba
+ jnc short 02cc4h ; 73 06 ; 0xf2cbc
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2cbe ata.c:963
+ jmp short 02ccah ; eb 06 ; 0xf2cc2
+ jbe short 02ccah ; 76 04 ; 0xf2cc4 ata.c:964
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2cc6 ata.c:965
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2cca ata.c:966
+ les si, [bp-012h] ; c4 76 ee ; 0xf2ccd ata.c:970
+ db 066h, 026h, 0c7h, 044h, 018h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+018h], strict dword 000000000h ; 66 26 c7 44 18 00 00 00 00; 0xf2cd0
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf2cd9 ata.c:971
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2cdf ata.c:973
+ in AL, DX ; ec ; 0xf2ce2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ce3
+ test AL, strict byte 080h ; a8 80 ; 0xf2ce5 ata.c:974
+ je short 02cefh ; 74 06 ; 0xf2ce7
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf2ce9 ata.c:975
+ jmp near 02f06h ; e9 17 02 ; 0xf2cec
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2cef ata.c:977
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cf2
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2cf5
+ out DX, AL ; ee ; 0xf2cf7
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf2cf8 ata.c:981
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2cfb
+ out DX, AL ; ee ; 0xf2cfd
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf2cfe ata.c:982
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2d01
+ out DX, AL ; ee ; 0xf2d03
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf2d04 ata.c:983
+ je short 02d0fh ; 74 05 ; 0xf2d08
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2d0a
+ jmp short 02d12h ; eb 03 ; 0xf2d0d
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2d0f
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2d12
+ out DX, AL ; ee ; 0xf2d15
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d16 ata.c:984
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2d19
+ out DX, AL ; ee ; 0xf2d1b
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d1c ata.c:988
+ in AL, DX ; ec ; 0xf2d1f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d20
+ mov dl, al ; 88 c2 ; 0xf2d22
+ test AL, strict byte 080h ; a8 80 ; 0xf2d24 ata.c:989
+ jne short 02d1ch ; 75 f4 ; 0xf2d26
+ test AL, strict byte 001h ; a8 01 ; 0xf2d28 ata.c:992
+ je short 02d3bh ; 74 0f ; 0xf2d2a
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d2c ata.c:995
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d2f
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d32
+ out DX, AL ; ee ; 0xf2d34
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf2d35 ata.c:996
+ jmp near 02f06h ; e9 cb 01 ; 0xf2d38
+ test dl, 008h ; f6 c2 08 ; 0xf2d3b ata.c:997
+ jne short 02d4fh ; 75 0f ; 0xf2d3e
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d40 ata.c:1000
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d43
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d46
+ out DX, AL ; ee ; 0xf2d48
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf2d49 ata.c:1001
+ jmp near 02f06h ; e9 b7 01 ; 0xf2d4c
+ sti ; fb ; 0xf2d4f ata.c:1004
+ mov ax, di ; 89 f8 ; 0xf2d50 ata.c:1008
+ shr ax, 004h ; c1 e8 04 ; 0xf2d52
+ add ax, cx ; 01 c8 ; 0xf2d55
+ mov si, di ; 89 fe ; 0xf2d57
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2d59
+ movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf2d5c ata.c:1013
+ mov dx, bx ; 89 da ; 0xf2d60
+ mov es, ax ; 8e c0 ; 0xf2d62
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2d64
+ cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2d67 ata.c:1015
+ jne short 02d78h ; 75 0b ; 0xf2d6b
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d6d ata.c:1016
+ in AL, DX ; ec ; 0xf2d70
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d71
+ mov dl, al ; 88 c2 ; 0xf2d73
+ jmp near 02ee7h ; e9 6f 01 ; 0xf2d75 ata.c:1018
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf2d78 ata.c:1022
+ in AL, DX ; ec ; 0xf2d7b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d7c
+ mov dl, al ; 88 c2 ; 0xf2d7e
+ test AL, strict byte 080h ; a8 80 ; 0xf2d80 ata.c:1023
+ jne short 02d78h ; 75 f4 ; 0xf2d82
+ test AL, strict byte 088h ; a8 88 ; 0xf2d84 ata.c:1028
+ je near 02ee7h ; 0f 84 5d 01 ; 0xf2d86
+ test AL, strict byte 001h ; a8 01 ; 0xf2d8a ata.c:1031
+ je short 02d99h ; 74 0b ; 0xf2d8c
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2d8e ata.c:1034
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2d91
+ mov AL, strict byte 008h ; b0 08 ; 0xf2d94
+ out DX, AL ; ee ; 0xf2d96
+ jmp short 02d35h ; eb 9c ; 0xf2d97
+ mov al, dl ; 88 d0 ; 0xf2d99 ata.c:1039
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2d9b
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2d9d
+ je short 02dach ; 74 0b ; 0xf2d9f
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2da1 ata.c:1043
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2da4
+ mov AL, strict byte 008h ; b0 08 ; 0xf2da7
+ out DX, AL ; ee ; 0xf2da9
+ jmp short 02d49h ; eb 9d ; 0xf2daa
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2dac ata.c:1049
+ shr ax, 004h ; c1 e8 04 ; 0xf2daf
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf2db2
+ add dx, ax ; 01 c2 ; 0xf2db5
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2db7
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf2dba
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf2dbd
+ mov word [bp+00eh], dx ; 89 56 0e ; 0xf2dc0
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf2dc3 ata.c:1054
+ in AL, DX ; ec ; 0xf2dc6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2dc7
+ mov cx, ax ; 89 c1 ; 0xf2dc9
+ sal cx, 008h ; c1 e1 08 ; 0xf2dcb
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf2dce
+ in AL, DX ; ec ; 0xf2dd1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2dd2
+ add cx, ax ; 01 c1 ; 0xf2dd4
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf2dd6
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2dd9 ata.c:1057
+ cmp ax, cx ; 39 c8 ; 0xf2ddc
+ jbe short 02dech ; 76 0c ; 0xf2dde
+ mov ax, cx ; 89 c8 ; 0xf2de0 ata.c:1059
+ sub word [bp+004h], cx ; 29 4e 04 ; 0xf2de2
+ xor ax, cx ; 31 c8 ; 0xf2de5 ata.c:1060
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2de7
+ jmp short 02df6h ; eb 0a ; 0xf2dea ata.c:1062
+ mov cx, ax ; 89 c1 ; 0xf2dec ata.c:1063
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2dee ata.c:1064
+ sub word [bp-00ch], ax ; 29 46 f4 ; 0xf2df3 ata.c:1065
+ xor ax, ax ; 31 c0 ; 0xf2df6 ata.c:1068
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2df8
+ jne short 02e1fh ; 75 21 ; 0xf2dfc
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2dfe
+ cmp dx, word [bp+006h] ; 3b 56 06 ; 0xf2e01
+ jbe short 02e1fh ; 76 19 ; 0xf2e04
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2e06 ata.c:1069
+ sub ax, word [bp+006h] ; 2b 46 06 ; 0xf2e09
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2e0c
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf2e0f ata.c:1070
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2e12
+ xor ax, ax ; 31 c0 ; 0xf2e15 ata.c:1071
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf2e17
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf2e1a
+ jmp short 02e2bh ; eb 0c ; 0xf2e1d ata.c:1073
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2e1f ata.c:1074
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2e22 ata.c:1075
+ sub word [bp+006h], dx ; 29 56 06 ; 0xf2e25
+ sbb word [bp+008h], ax ; 19 46 08 ; 0xf2e28
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf2e2b ata.c:1079
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf2e2e ata.c:1085
+ test cl, 003h ; f6 c1 03 ; 0xf2e31 ata.c:1086
+ je short 02e38h ; 74 02 ; 0xf2e34
+ xor al, al ; 30 c0 ; 0xf2e36 ata.c:1087
+ test byte [bp-00ch], 003h ; f6 46 f4 03 ; 0xf2e38 ata.c:1088
+ je short 02e40h ; 74 02 ; 0xf2e3c
+ xor al, al ; 30 c0 ; 0xf2e3e ata.c:1089
+ test byte [bp-00eh], 003h ; f6 46 f2 03 ; 0xf2e40 ata.c:1090
+ je short 02e48h ; 74 02 ; 0xf2e44
+ xor al, al ; 30 c0 ; 0xf2e46 ata.c:1091
+ test byte [bp-00ch], 001h ; f6 46 f4 01 ; 0xf2e48 ata.c:1094
+ je short 02e60h ; 74 12 ; 0xf2e4c
+ inc word [bp-00ch] ; ff 46 f4 ; 0xf2e4e ata.c:1095
+ cmp word [bp-00eh], strict byte 00000h ; 83 7e f2 00 ; 0xf2e51 ata.c:1096
+ jbe short 02e60h ; 76 09 ; 0xf2e55
+ test byte [bp-00eh], 001h ; f6 46 f2 01 ; 0xf2e57
+ je short 02e60h ; 74 03 ; 0xf2e5b
+ dec word [bp-00eh] ; ff 4e f2 ; 0xf2e5d ata.c:1097
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e60 ata.c:1102
+ jne short 02e71h ; 75 0d ; 0xf2e62
+ shr word [bp-00ch], 002h ; c1 6e f4 02 ; 0xf2e64 ata.c:1103
+ shr cx, 002h ; c1 e9 02 ; 0xf2e68 ata.c:1104
+ shr word [bp-00eh], 002h ; c1 6e f2 02 ; 0xf2e6b ata.c:1105
+ jmp short 02e79h ; eb 08 ; 0xf2e6f ata.c:1106
+ shr word [bp-00ch], 1 ; d1 6e f4 ; 0xf2e71 ata.c:1109
+ shr cx, 1 ; d1 e9 ; 0xf2e74 ata.c:1110
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf2e76 ata.c:1111
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e79 ata.c:1115
+ jne short 02ea9h ; 75 2c ; 0xf2e7b
+ test cx, cx ; 85 c9 ; 0xf2e7d ata.c:1116
+ je short 02e8bh ; 74 0a ; 0xf2e7f
+ mov dx, bx ; 89 da ; 0xf2e81 ata.c:1117
+ push eax ; 66 50 ; 0xf2e83
+ in eax, DX ; 66 ed ; 0xf2e85
+ loop 02e85h ; e2 fc ; 0xf2e87
+ pop eax ; 66 58 ; 0xf2e89
+ mov dx, bx ; 89 da ; 0xf2e8b ata.c:1118
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf2e8d
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2e90
+ db 0f3h, 066h, 06dh
+ ; rep insd ; f3 66 6d ; 0xf2e93
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2e96 ata.c:1119
+ test ax, ax ; 85 c0 ; 0xf2e99
+ je short 02ec8h ; 74 2b ; 0xf2e9b
+ mov cx, ax ; 89 c1 ; 0xf2e9d ata.c:1120
+ push eax ; 66 50 ; 0xf2e9f
+ in eax, DX ; 66 ed ; 0xf2ea1
+ loop 02ea1h ; e2 fc ; 0xf2ea3
+ pop eax ; 66 58 ; 0xf2ea5
+ jmp short 02ec8h ; eb 1f ; 0xf2ea7 ata.c:1121
+ test cx, cx ; 85 c9 ; 0xf2ea9 ata.c:1124
+ je short 02eb2h ; 74 05 ; 0xf2eab
+ mov dx, bx ; 89 da ; 0xf2ead ata.c:1125
+ in ax, DX ; ed ; 0xf2eaf
+ loop 02eafh ; e2 fd ; 0xf2eb0
+ mov dx, bx ; 89 da ; 0xf2eb2 ata.c:1126
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf2eb4
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2eb7
+ rep insw ; f3 6d ; 0xf2eba
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2ebc ata.c:1127
+ test ax, ax ; 85 c0 ; 0xf2ebf
+ je short 02ec8h ; 74 05 ; 0xf2ec1
+ mov cx, ax ; 89 c1 ; 0xf2ec3 ata.c:1128
+ in ax, DX ; ed ; 0xf2ec5
+ loop 02ec5h ; e2 fd ; 0xf2ec6
+ add word [bp+00ch], si ; 01 76 0c ; 0xf2ec8 ata.c:1133
+ xor ax, ax ; 31 c0 ; 0xf2ecb ata.c:1136
+ add word [bp-016h], si ; 01 76 ea ; 0xf2ecd
+ adc word [bp-014h], ax ; 11 46 ec ; 0xf2ed0
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf2ed3 ata.c:1137
+ les si, [bp-012h] ; c4 76 ee ; 0xf2ed6
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf2ed9
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf2edd
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf2ee0
+ jmp near 02d78h ; e9 91 fe ; 0xf2ee4 ata.c:1138
+ mov al, dl ; 88 d0 ; 0xf2ee7 ata.c:1142
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2ee9
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2eeb
+ je short 02efbh ; 74 0c ; 0xf2eed
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2eef ata.c:1146
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2ef2
+ mov AL, strict byte 008h ; b0 08 ; 0xf2ef5
+ out DX, AL ; ee ; 0xf2ef7
+ jmp near 02d49h ; e9 4e fe ; 0xf2ef8
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf2efb ata.c:1151
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2efe
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f01
+ out DX, AL ; ee ; 0xf2f03
+ xor dx, dx ; 31 d2 ; 0xf2f04 ata.c:1152
+ mov ax, dx ; 89 d0 ; 0xf2f06 ata.c:1153
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2f08
+ pop di ; 5f ; 0xf2f0b
+ pop si ; 5e ; 0xf2f0c
+ pop bp ; 5d ; 0xf2f0d
+ retn 0000ch ; c2 0c 00 ; 0xf2f0e
+ ; disGetNextSymbol 0xf2f11 LB 0x7134 -> off=0x0 cb=000000000000007b uValue=00000000000f1911 'ata_soft_reset'
+ata_soft_reset: ; 0xf2f11 LB 0x7b
+ push bp ; 55 ; 0xf2f11 ata.c:1161
+ mov bp, sp ; 89 e5 ; 0xf2f12
+ push bx ; 53 ; 0xf2f14
+ push cx ; 51 ; 0xf2f15
+ push dx ; 52 ; 0xf2f16
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2f17 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f1a
+ mov es, dx ; 8e c2 ; 0xf2f1d
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2f1f
+ mov dx, ax ; 89 c2 ; 0xf2f22 ata.c:1170
+ shr dx, 1 ; d1 ea ; 0xf2f24
+ mov ah, al ; 88 c4 ; 0xf2f26 ata.c:1171
+ and ah, 001h ; 80 e4 01 ; 0xf2f28
+ movzx bx, dl ; 0f b6 da ; 0xf2f2b ata.c:1173
+ imul bx, bx, strict byte 00006h ; 6b db 06 ; 0xf2f2e
+ add bx, 00122h ; 81 c3 22 01 ; 0xf2f31
+ mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf2f35
+ mov bx, word [es:bx+00208h] ; 26 8b 9f 08 02 ; 0xf2f3a ata.c:1174
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f3f ata.c:1177
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2f42
+ out DX, AL ; ee ; 0xf2f44
+ test ah, ah ; 84 e4 ; 0xf2f45 ata.c:1178
+ je short 02f4eh ; 74 05 ; 0xf2f47
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2f49
+ jmp short 02f51h ; eb 03 ; 0xf2f4c
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2f4e
+ mov dx, cx ; 89 ca ; 0xf2f51
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2f53
+ out DX, AL ; ee ; 0xf2f56
+ mov dx, cx ; 89 ca ; 0xf2f57 ata.c:1179
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f59
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f5c
+ out DX, AL ; ee ; 0xf2f5e
+ mov dx, cx ; 89 ca ; 0xf2f5f ata.c:1183
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2f61
+ in AL, DX ; ec ; 0xf2f64
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f65
+ test AL, strict byte 080h ; a8 80 ; 0xf2f67 ata.c:1184
+ jne short 02f5fh ; 75 f4 ; 0xf2f69
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2f6b ata.c:1188
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2f6d
+ je short 02f7ch ; 74 0b ; 0xf2f6f
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f71 ata.c:1192
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f74
+ out DX, AL ; ee ; 0xf2f76
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2f77 ata.c:1193
+ jmp short 02f84h ; eb 08 ; 0xf2f7a
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2f7c ata.c:1197
+ mov AL, strict byte 008h ; b0 08 ; 0xf2f7f
+ out DX, AL ; ee ; 0xf2f81
+ xor ax, ax ; 31 c0 ; 0xf2f82 ata.c:1198
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f84 ata.c:1199
+ pop dx ; 5a ; 0xf2f87
+ pop cx ; 59 ; 0xf2f88
+ pop bx ; 5b ; 0xf2f89
+ pop bp ; 5d ; 0xf2f8a
+ retn ; c3 ; 0xf2f8b
+ ; disGetNextSymbol 0xf2f8c LB 0x70b9 -> off=0x0 cb=000000000000002a uValue=00000000000f198c 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2f8c LB 0x2a
+ push bp ; 55 ; 0xf2f8c floppy.c:71
+ mov bp, sp ; 89 e5 ; 0xf2f8d
+ push bx ; 53 ; 0xf2f8f
+ mov dh, al ; 88 c6 ; 0xf2f90
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2f92 floppy.c:73
+ jbe short 02fa1h ; 76 0b ; 0xf2f94
+ push 00262h ; 68 62 02 ; 0xf2f96 floppy.c:74
+ push strict byte 00007h ; 6a 07 ; 0xf2f99
+ call 01a14h ; e8 76 ea ; 0xf2f9b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2f9e
+ movzx bx, dh ; 0f b6 de ; 0xf2fa1 floppy.c:75
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2fa4
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fa8 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf2fab
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2fad
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fb0 floppy.c:76
+ pop bx ; 5b ; 0xf2fb3
+ pop bp ; 5d ; 0xf2fb4
+ retn ; c3 ; 0xf2fb5
+ ; disGetNextSymbol 0xf2fb6 LB 0x708f -> off=0x0 cb=0000000000000023 uValue=00000000000f19b6 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2fb6 LB 0x23
+ push bp ; 55 ; 0xf2fb6 floppy.c:96
+ mov bp, sp ; 89 e5 ; 0xf2fb7
+ push bx ; 53 ; 0xf2fb9
+ cli ; fa ; 0xf2fba floppy.c:98
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fbb floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fbe
+ mov es, ax ; 8e c0 ; 0xf2fc1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fc3
+ test AL, strict byte 080h ; a8 80 ; 0xf2fc6 floppy.c:102
+ je short 02fceh ; 74 04 ; 0xf2fc8
+ and AL, strict byte 080h ; 24 80 ; 0xf2fca floppy.c:103
+ jmp short 02fd3h ; eb 05 ; 0xf2fcc
+ sti ; fb ; 0xf2fce floppy.c:104
+ hlt ; f4 ; 0xf2fcf
+ cli ; fa ; 0xf2fd0
+ jmp short 02fbbh ; eb e8 ; 0xf2fd1 floppy.c:105
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2fd3 floppy.c:106
+ pop bx ; 5b ; 0xf2fd6
+ pop bp ; 5d ; 0xf2fd7
+ retn ; c3 ; 0xf2fd8
+ ; disGetNextSymbol 0xf2fd9 LB 0x706c -> off=0x0 cb=0000000000000038 uValue=00000000000f19d9 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2fd9 LB 0x38
+ push bp ; 55 ; 0xf2fd9 floppy.c:116
+ mov bp, sp ; 89 e5 ; 0xf2fda
+ push bx ; 53 ; 0xf2fdc
+ cli ; fa ; 0xf2fdd floppy.c:118
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2fde floppy.c:38
+ mov es, bx ; 8e c3 ; 0xf2fe1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fe3
+ test al, al ; 84 c0 ; 0xf2fe6 floppy.c:122
+ jne short 02fedh ; 75 03 ; 0xf2fe8
+ sti ; fb ; 0xf2fea floppy.c:123
+ jmp short 0300bh ; eb 1e ; 0xf2feb floppy.c:124
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2fed floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ff0
+ mov es, ax ; 8e c0 ; 0xf2ff3
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ff5
+ test AL, strict byte 080h ; a8 80 ; 0xf2ff8 floppy.c:128
+ je short 03006h ; 74 0a ; 0xf2ffa
+ mov ah, al ; 88 c4 ; 0xf2ffc floppy.c:129
+ and ah, 07fh ; 80 e4 7f ; 0xf2ffe
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf3001 floppy.c:43
+ jmp short 0300bh ; eb 05 ; 0xf3004 floppy.c:130
+ sti ; fb ; 0xf3006 floppy.c:132
+ hlt ; f4 ; 0xf3007
+ cli ; fa ; 0xf3008
+ jmp short 02fdeh ; eb d3 ; 0xf3009 floppy.c:133
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf300b floppy.c:134
+ pop bx ; 5b ; 0xf300e
+ pop bp ; 5d ; 0xf300f
+ retn ; c3 ; 0xf3010
+ ; disGetNextSymbol 0xf3011 LB 0x7034 -> off=0x0 cb=0000000000000042 uValue=00000000000f1a11 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf3011 LB 0x42
+ push bp ; 55 ; 0xf3011 floppy.c:138
+ mov bp, sp ; 89 e5 ; 0xf3012
+ push bx ; 53 ; 0xf3014
+ push cx ; 51 ; 0xf3015
+ push dx ; 52 ; 0xf3016
+ mov cx, ax ; 89 c1 ; 0xf3017
+ mov dx, 003f2h ; ba f2 03 ; 0xf3019 floppy.c:143
+ in AL, DX ; ec ; 0xf301c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf301d
+ mov bx, ax ; 89 c3 ; 0xf301f
+ movzx ax, bl ; 0f b6 c3 ; 0xf3021 floppy.c:144
+ and AL, strict byte 0fbh ; 24 fb ; 0xf3024
+ out DX, AL ; ee ; 0xf3026
+ mov al, bl ; 88 d8 ; 0xf3027 floppy.c:145
+ or AL, strict byte 004h ; 0c 04 ; 0xf3029
+ out DX, AL ; ee ; 0xf302b
+ mov dx, 003f4h ; ba f4 03 ; 0xf302c floppy.c:149
+ in AL, DX ; ec ; 0xf302f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3030
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3032 floppy.c:150
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf3034
+ jne short 0302ch ; 75 f4 ; 0xf3036
+ mov bx, cx ; 89 cb ; 0xf3038 floppy.c:153
+ add bx, 00090h ; 81 c3 90 00 ; 0xf303a
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf303e floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3041
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3043
+ and AL, strict byte 0efh ; 24 ef ; 0xf3046 floppy.c:154
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3048 floppy.c:43
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf304b floppy.c:157
+ pop dx ; 5a ; 0xf304e
+ pop cx ; 59 ; 0xf304f
+ pop bx ; 5b ; 0xf3050
+ pop bp ; 5d ; 0xf3051
+ retn ; c3 ; 0xf3052
+ ; disGetNextSymbol 0xf3053 LB 0x6ff2 -> off=0x0 cb=0000000000000074 uValue=00000000000f1a53 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf3053 LB 0x74
+ push bp ; 55 ; 0xf3053 floppy.c:159
+ mov bp, sp ; 89 e5 ; 0xf3054
+ push bx ; 53 ; 0xf3056
+ push cx ; 51 ; 0xf3057
+ push dx ; 52 ; 0xf3058
+ push ax ; 50 ; 0xf3059
+ mov cx, ax ; 89 c1 ; 0xf305a
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf305c floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf305f
+ mov es, ax ; 8e c0 ; 0xf3062
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3064
+ and AL, strict byte 07fh ; 24 7f ; 0xf3067 floppy.c:165
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3069 floppy.c:43
+ mov dx, 003f2h ; ba f2 03 ; 0xf306c floppy.c:169
+ in AL, DX ; ec ; 0xf306f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3070
+ and AL, strict byte 004h ; 24 04 ; 0xf3072
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf3074
+ test cx, cx ; 85 c9 ; 0xf3077 floppy.c:170
+ je short 0307fh ; 74 04 ; 0xf3079
+ mov AL, strict byte 020h ; b0 20 ; 0xf307b floppy.c:171
+ jmp short 03081h ; eb 02 ; 0xf307d floppy.c:172
+ mov AL, strict byte 010h ; b0 10 ; 0xf307f floppy.c:173
+ or AL, strict byte 00ch ; 0c 0c ; 0xf3081 floppy.c:174
+ or al, cl ; 08 c8 ; 0xf3083 floppy.c:175
+ mov dx, 003f2h ; ba f2 03 ; 0xf3085 floppy.c:176
+ out DX, AL ; ee ; 0xf3088
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf3089 floppy.c:43
+ mov es, bx ; 8e c3 ; 0xf308c
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf308e
+ mov bx, 0008bh ; bb 8b 00 ; 0xf3092 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3095
+ shr al, 006h ; c0 e8 06 ; 0xf3098 floppy.c:183
+ mov dx, 003f7h ; ba f7 03 ; 0xf309b floppy.c:184
+ out DX, AL ; ee ; 0xf309e
+ mov dx, 003f4h ; ba f4 03 ; 0xf309f floppy.c:188
+ in AL, DX ; ec ; 0xf30a2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf30a3
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf30a5 floppy.c:189
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf30a7
+ jne short 0309fh ; 75 f4 ; 0xf30a9
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf30ab floppy.c:191
+ jne short 030bfh ; 75 0e ; 0xf30af
+ call 02fb6h ; e8 02 ff ; 0xf30b1 floppy.c:202
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30b4 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf30b7
+ mov es, dx ; 8e c2 ; 0xf30ba
+ mov byte [es:bx], al ; 26 88 07 ; 0xf30bc
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf30bf floppy.c:206
+ pop dx ; 5a ; 0xf30c2
+ pop cx ; 59 ; 0xf30c3
+ pop bx ; 5b ; 0xf30c4
+ pop bp ; 5d ; 0xf30c5
+ retn ; c3 ; 0xf30c6
+ ; disGetNextSymbol 0xf30c7 LB 0x6f7e -> off=0x0 cb=0000000000000049 uValue=00000000000f1ac7 'floppy_media_known'
+floppy_media_known: ; 0xf30c7 LB 0x49
+ push bx ; 53 ; 0xf30c7 floppy.c:208
+ push dx ; 52 ; 0xf30c8
+ push bp ; 55 ; 0xf30c9
+ mov bp, sp ; 89 e5 ; 0xf30ca
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf30cc floppy.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf30cf
+ mov es, dx ; 8e c2 ; 0xf30d2
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf30d4
+ mov bl, bh ; 88 fb ; 0xf30d7 floppy.c:39
+ test ax, ax ; 85 c0 ; 0xf30d9 floppy.c:214
+ je short 030dfh ; 74 02 ; 0xf30db
+ shr bl, 1 ; d0 eb ; 0xf30dd floppy.c:215
+ and bl, 001h ; 80 e3 01 ; 0xf30df floppy.c:216
+ jne short 030e8h ; 75 04 ; 0xf30e2 floppy.c:217
+ xor bh, bh ; 30 ff ; 0xf30e4 floppy.c:218
+ jmp short 0310ah ; eb 22 ; 0xf30e6
+ mov bx, 00090h ; bb 90 00 ; 0xf30e8 floppy.c:220
+ test ax, ax ; 85 c0 ; 0xf30eb floppy.c:221
+ je short 030f2h ; 74 03 ; 0xf30ed
+ mov bx, 00091h ; bb 91 00 ; 0xf30ef floppy.c:222
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30f2 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf30f5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf30f7
+ xor ah, ah ; 30 e4 ; 0xf30fa floppy.c:225
+ sar ax, 004h ; c1 f8 04 ; 0xf30fc
+ and AL, strict byte 001h ; 24 01 ; 0xf30ff
+ jne short 03107h ; 75 04 ; 0xf3101 floppy.c:226
+ xor bx, bx ; 31 db ; 0xf3103 floppy.c:227
+ jmp short 0310ah ; eb 03 ; 0xf3105
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf3107 floppy.c:230
+ mov ax, bx ; 89 d8 ; 0xf310a floppy.c:231
+ pop bp ; 5d ; 0xf310c
+ pop dx ; 5a ; 0xf310d
+ pop bx ; 5b ; 0xf310e
+ retn ; c3 ; 0xf310f
+ ; disGetNextSymbol 0xf3110 LB 0x6f35 -> off=0x0 cb=000000000000004e uValue=00000000000f1b10 'floppy_read_id'
+floppy_read_id: ; 0xf3110 LB 0x4e
+ push bp ; 55 ; 0xf3110 floppy.c:233
+ mov bp, sp ; 89 e5 ; 0xf3111
+ push bx ; 53 ; 0xf3113
+ push dx ; 52 ; 0xf3114
+ push si ; 56 ; 0xf3115
+ mov bx, ax ; 89 c3 ; 0xf3116
+ call 03053h ; e8 38 ff ; 0xf3118 floppy.c:240
+ mov AL, strict byte 04ah ; b0 4a ; 0xf311b floppy.c:243
+ mov dx, 003f5h ; ba f5 03 ; 0xf311d
+ out DX, AL ; ee ; 0xf3120
+ mov al, bl ; 88 d8 ; 0xf3121 floppy.c:244
+ out DX, AL ; ee ; 0xf3123
+ call 02fb6h ; e8 8f fe ; 0xf3124 floppy.c:259
+ xor bx, bx ; 31 db ; 0xf3127 floppy.c:263
+ jmp short 03130h ; eb 05 ; 0xf3129
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf312b
+ jnl short 03144h ; 7d 14 ; 0xf312e
+ mov dx, 003f5h ; ba f5 03 ; 0xf3130 floppy.c:264
+ in AL, DX ; ec ; 0xf3133
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3134
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf3136
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3139 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf313c
+ mov byte [es:si], al ; 26 88 04 ; 0xf313e
+ inc bx ; 43 ; 0xf3141 floppy.c:264
+ jmp short 0312bh ; eb e7 ; 0xf3142
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf3144 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3147
+ mov es, ax ; 8e c0 ; 0xf314a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf314c
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf314f floppy.c:39
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf3151
+ xor ah, ah ; 30 e4 ; 0xf3154
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3156 floppy.c:270
+ pop si ; 5e ; 0xf3159
+ pop dx ; 5a ; 0xf315a
+ pop bx ; 5b ; 0xf315b
+ pop bp ; 5d ; 0xf315c
+ retn ; c3 ; 0xf315d
+ ; disGetNextSymbol 0xf315e LB 0x6ee7 -> off=0x0 cb=0000000000000041 uValue=00000000000f1b5e 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf315e LB 0x41
+ push bp ; 55 ; 0xf315e floppy.c:272
+ mov bp, sp ; 89 e5 ; 0xf315f
+ push bx ; 53 ; 0xf3161
+ push dx ; 52 ; 0xf3162
+ push si ; 56 ; 0xf3163
+ mov bx, ax ; 89 c3 ; 0xf3164
+ call 03053h ; e8 ea fe ; 0xf3166 floppy.c:277
+ mov AL, strict byte 007h ; b0 07 ; 0xf3169 floppy.c:280
+ mov dx, 003f5h ; ba f5 03 ; 0xf316b
+ out DX, AL ; ee ; 0xf316e
+ mov al, bl ; 88 d8 ; 0xf316f floppy.c:281
+ out DX, AL ; ee ; 0xf3171
+ call 02fb6h ; e8 41 fe ; 0xf3172 floppy.c:300
+ test bx, bx ; 85 db ; 0xf3175 floppy.c:304
+ je short 03180h ; 74 07 ; 0xf3177
+ or AL, strict byte 002h ; 0c 02 ; 0xf3179 floppy.c:305
+ mov bx, 00095h ; bb 95 00 ; 0xf317b floppy.c:306
+ jmp short 03185h ; eb 05 ; 0xf317e floppy.c:307
+ or AL, strict byte 001h ; 0c 01 ; 0xf3180 floppy.c:308
+ mov bx, 00094h ; bb 94 00 ; 0xf3182 floppy.c:309
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3185 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3188
+ mov es, dx ; 8e c2 ; 0xf318b
+ mov byte [es:si], al ; 26 88 04 ; 0xf318d
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3190 floppy.c:43
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3194 floppy.c:315
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf3197
+ pop si ; 5e ; 0xf319a
+ pop dx ; 5a ; 0xf319b
+ pop bx ; 5b ; 0xf319c
+ pop bp ; 5d ; 0xf319d
+ retn ; c3 ; 0xf319e
+ ; disGetNextSymbol 0xf319f LB 0x6ea6 -> off=0x0 cb=00000000000000e4 uValue=00000000000f1b9f 'floppy_media_sense'
+floppy_media_sense: ; 0xf319f LB 0xe4
+ push bp ; 55 ; 0xf319f floppy.c:318
+ mov bp, sp ; 89 e5 ; 0xf31a0
+ push bx ; 53 ; 0xf31a2
+ push cx ; 51 ; 0xf31a3
+ push dx ; 52 ; 0xf31a4
+ push si ; 56 ; 0xf31a5
+ mov bx, ax ; 89 c3 ; 0xf31a6
+ call 0315eh ; e8 b3 ff ; 0xf31a8 floppy.c:324
+ test ax, ax ; 85 c0 ; 0xf31ab
+ jne short 031b4h ; 75 05 ; 0xf31ad
+ xor dx, dx ; 31 d2 ; 0xf31af floppy.c:325
+ jmp near 03278h ; e9 c4 00 ; 0xf31b1
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf31b4 floppy.c:360
+ call 01756h ; e8 9c e5 ; 0xf31b7
+ test bx, bx ; 85 db ; 0xf31ba floppy.c:361
+ jne short 031c5h ; 75 07 ; 0xf31bc
+ mov dl, al ; 88 c2 ; 0xf31be floppy.c:362
+ shr dl, 004h ; c0 ea 04 ; 0xf31c0
+ jmp short 031cah ; eb 05 ; 0xf31c3 floppy.c:363
+ mov dl, al ; 88 c2 ; 0xf31c5 floppy.c:364
+ and dl, 00fh ; 80 e2 0f ; 0xf31c7
+ cmp dl, 001h ; 80 fa 01 ; 0xf31ca floppy.c:365
+ jne short 031d8h ; 75 09 ; 0xf31cd
+ xor dl, dl ; 30 d2 ; 0xf31cf floppy.c:367
+ mov DH, strict byte 015h ; b6 15 ; 0xf31d1 floppy.c:368
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf31d3 floppy.c:369
+ jmp short 03216h ; eb 3e ; 0xf31d6 floppy.c:371
+ cmp dl, 002h ; 80 fa 02 ; 0xf31d8
+ jne short 031e3h ; 75 06 ; 0xf31db
+ xor dl, dl ; 30 d2 ; 0xf31dd floppy.c:373
+ mov DH, strict byte 035h ; b6 35 ; 0xf31df floppy.c:374
+ jmp short 031d3h ; eb f0 ; 0xf31e1
+ cmp dl, 003h ; 80 fa 03 ; 0xf31e3 floppy.c:377
+ jne short 031eeh ; 75 06 ; 0xf31e6
+ xor dl, dl ; 30 d2 ; 0xf31e8 floppy.c:379
+ mov DH, strict byte 017h ; b6 17 ; 0xf31ea floppy.c:380
+ jmp short 031d3h ; eb e5 ; 0xf31ec
+ cmp dl, 004h ; 80 fa 04 ; 0xf31ee floppy.c:383
+ jne short 031f9h ; 75 06 ; 0xf31f1
+ xor dl, dl ; 30 d2 ; 0xf31f3 floppy.c:385
+ mov DH, strict byte 017h ; b6 17 ; 0xf31f5 floppy.c:386
+ jmp short 031d3h ; eb da ; 0xf31f7
+ cmp dl, 005h ; 80 fa 05 ; 0xf31f9 floppy.c:389
+ jne short 03204h ; 75 06 ; 0xf31fc
+ mov DL, strict byte 0cch ; b2 cc ; 0xf31fe floppy.c:391
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf3200 floppy.c:392
+ jmp short 031d3h ; eb cf ; 0xf3202
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3204 floppy.c:396
+ je short 0320eh ; 74 05 ; 0xf3207
+ cmp dl, 00fh ; 80 fa 0f ; 0xf3209
+ jne short 03210h ; 75 02 ; 0xf320c
+ jmp short 031feh ; eb ee ; 0xf320e
+ xor dl, dl ; 30 d2 ; 0xf3210 floppy.c:404
+ xor dh, dh ; 30 f6 ; 0xf3212 floppy.c:405
+ xor cx, cx ; 31 c9 ; 0xf3214 floppy.c:406
+ mov si, 0008bh ; be 8b 00 ; 0xf3216 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3219
+ mov es, ax ; 8e c0 ; 0xf321c
+ mov byte [es:si], dl ; 26 88 14 ; 0xf321e
+ mov ax, bx ; 89 d8 ; 0xf3221 floppy.c:410
+ call 03110h ; e8 ea fe ; 0xf3223
+ test ax, ax ; 85 c0 ; 0xf3226
+ jne short 0325ch ; 75 32 ; 0xf3228
+ mov al, dl ; 88 d0 ; 0xf322a floppy.c:411
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf322c
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf322e
+ je short 0325ch ; 74 2a ; 0xf3230
+ mov al, dl ; 88 d0 ; 0xf3232 floppy.c:415
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3234
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf3236
+ je short 03249h ; 74 0f ; 0xf3238
+ mov ah, dl ; 88 d4 ; 0xf323a
+ and ah, 03fh ; 80 e4 3f ; 0xf323c
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf323f
+ je short 03255h ; 74 12 ; 0xf3241
+ test al, al ; 84 c0 ; 0xf3243
+ je short 0324eh ; 74 07 ; 0xf3245
+ jmp short 03216h ; eb cd ; 0xf3247
+ and dl, 03fh ; 80 e2 3f ; 0xf3249 floppy.c:417
+ jmp short 03216h ; eb c8 ; 0xf324c floppy.c:418
+ mov dl, ah ; 88 e2 ; 0xf324e floppy.c:420
+ or dl, 040h ; 80 ca 40 ; 0xf3250
+ jmp short 03216h ; eb c1 ; 0xf3253 floppy.c:421
+ mov dl, ah ; 88 e2 ; 0xf3255 floppy.c:423
+ or dl, 080h ; 80 ca 80 ; 0xf3257
+ jmp short 03216h ; eb ba ; 0xf325a floppy.c:427
+ test bx, bx ; 85 db ; 0xf325c floppy.c:429
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf325e
+ movzx bx, al ; 0f b6 d8 ; 0xf3261
+ add bx, 00090h ; 81 c3 90 00 ; 0xf3264
+ mov si, 0008bh ; be 8b 00 ; 0xf3268 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf326b
+ mov es, ax ; 8e c0 ; 0xf326e
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3270
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf3273 floppy.c:43
+ mov dx, cx ; 89 ca ; 0xf3276 floppy.c:436
+ mov ax, dx ; 89 d0 ; 0xf3278 floppy.c:437
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf327a
+ pop si ; 5e ; 0xf327d
+ pop dx ; 5a ; 0xf327e
+ pop cx ; 59 ; 0xf327f
+ pop bx ; 5b ; 0xf3280
+ pop bp ; 5d ; 0xf3281
+ retn ; c3 ; 0xf3282
+ ; disGetNextSymbol 0xf3283 LB 0x6dc2 -> off=0x0 cb=0000000000000024 uValue=00000000000f1c83 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf3283 LB 0x24
+ push bp ; 55 ; 0xf3283 floppy.c:440
+ mov bp, sp ; 89 e5 ; 0xf3284
+ push dx ; 52 ; 0xf3286
+ mov dx, ax ; 89 c2 ; 0xf3287
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3289 floppy.c:446
+ call 01756h ; e8 c7 e4 ; 0xf328c
+ test dx, dx ; 85 d2 ; 0xf328f floppy.c:447
+ jne short 03298h ; 75 05 ; 0xf3291
+ shr al, 004h ; c0 e8 04 ; 0xf3293 floppy.c:448
+ jmp short 0329ah ; eb 02 ; 0xf3296 floppy.c:449
+ and AL, strict byte 00fh ; 24 0f ; 0xf3298 floppy.c:450
+ test al, al ; 84 c0 ; 0xf329a floppy.c:451
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf329c
+ xor ah, ah ; 30 e4 ; 0xf329f
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf32a1 floppy.c:452
+ pop dx ; 5a ; 0xf32a4
+ pop bp ; 5d ; 0xf32a5
+ retn ; c3 ; 0xf32a6
+ ; disGetNextSymbol 0xf32a7 LB 0x6d9e -> off=0x23 cb=0000000000000984 uValue=00000000000f1cca 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 02bh, 03ch, 00ah, 033h, 087h
+ db 033h, 0a7h, 033h, 0a7h, 033h, 0a7h, 033h, 022h, 037h, 0e0h, 038h, 0d0h, 039h, 012h, 03ah, 046h
+ db 03ah, 0b8h, 03ah
+int13_diskette_function: ; 0xf32ca LB 0x984
+ push bp ; 55 ; 0xf32ca floppy.c:467
+ mov bp, sp ; 89 e5 ; 0xf32cb
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf32cd
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf32d0 floppy.c:478
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32d4 floppy.c:480
+ shr ax, 008h ; c1 e8 08 ; 0xf32d7
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf32da
+ jnbe near 03c2bh ; 0f 87 4a 09 ; 0xf32dd
+ push CS ; 0e ; 0xf32e1
+ pop ES ; 07 ; 0xf32e2
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf32e3
+ mov di, 032a7h ; bf a7 32 ; 0xf32e6
+ repne scasb ; f2 ae ; 0xf32e9
+ sal cx, 1 ; d1 e1 ; 0xf32eb
+ mov di, cx ; 89 cf ; 0xf32ed
+ mov di, word [cs:di+032b2h] ; 2e 8b bd b2 32 ; 0xf32ef
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf32f4
+ xor dh, dh ; 30 f6 ; 0xf32f7
+ mov ah, byte [bp+00eh] ; 8a 66 0e ; 0xf32f9
+ mov cx, word [bp+01ch] ; 8b 4e 1c ; 0xf32fc
+ or cl, 001h ; 80 c9 01 ; 0xf32ff
+ mov si, dx ; 89 d6 ; 0xf3302
+ or si, 00100h ; 81 ce 00 01 ; 0xf3304
+ jmp di ; ff e7 ; 0xf3308
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf330a floppy.c:483
+ cmp bl, 001h ; 80 fb 01 ; 0xf330d floppy.c:484
+ jbe short 0332ch ; 76 1a ; 0xf3310
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3312 floppy.c:485
+ xor ah, ah ; 30 e4 ; 0xf3315
+ or ah, 001h ; 80 cc 01 ; 0xf3317
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf331a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf331d floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3320
+ mov es, ax ; 8e c0 ; 0xf3323
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3325
+ jmp near 03b18h ; e9 ec 07 ; 0xf3329
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf332c floppy.c:491
+ call 01756h ; e8 24 e4 ; 0xf332f
+ test bl, bl ; 84 db ; 0xf3332 floppy.c:492
+ jne short 0333dh ; 75 07 ; 0xf3334
+ mov dl, al ; 88 c2 ; 0xf3336 floppy.c:493
+ shr dl, 004h ; c0 ea 04 ; 0xf3338
+ jmp short 03342h ; eb 05 ; 0xf333b floppy.c:494
+ mov dl, al ; 88 c2 ; 0xf333d floppy.c:495
+ and dl, 00fh ; 80 e2 0f ; 0xf333f
+ test dl, dl ; 84 d2 ; 0xf3342 floppy.c:496
+ jne short 03360h ; 75 1a ; 0xf3344
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3346 floppy.c:497
+ xor ah, ah ; 30 e4 ; 0xf3349
+ or ah, 080h ; 80 cc 80 ; 0xf334b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf334e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3351 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3354
+ mov es, ax ; 8e c0 ; 0xf3357
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3359
+ jmp near 03b18h ; e9 b8 07 ; 0xf335d
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3360 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3363
+ mov es, ax ; 8e c0 ; 0xf3366
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf3368
+ xor al, al ; 30 c0 ; 0xf336c floppy.c:506
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf336e
+ mov si, strict word 00041h ; be 41 00 ; 0xf3371 floppy.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3374
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3377 floppy.c:508
+ movzx ax, bl ; 0f b6 c3 ; 0xf337b floppy.c:509
+ xor dx, dx ; 31 d2 ; 0xf337e
+ call 02f8ch ; e8 09 fc ; 0xf3380
+ mov sp, bp ; 89 ec ; 0xf3383 floppy.c:510
+ pop bp ; 5d ; 0xf3385
+ retn ; c3 ; 0xf3386
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3387 floppy.c:513
+ mov bx, 00441h ; bb 41 04 ; 0xf338b floppy.c:38
+ xor ax, ax ; 31 c0 ; 0xf338e
+ mov es, ax ; 8e c0 ; 0xf3390
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3392
+ movzx bx, al ; 0f b6 d8 ; 0xf3395 floppy.c:515
+ sal bx, 008h ; c1 e3 08 ; 0xf3398
+ or dx, bx ; 09 da ; 0xf339b
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf339d
+ test al, al ; 84 c0 ; 0xf33a0 floppy.c:516
+ je short 03383h ; 74 df ; 0xf33a2
+ jmp near 03b18h ; e9 71 07 ; 0xf33a4
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf33a7 floppy.c:524
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf33aa floppy.c:525
+ shr ax, 008h ; c1 e8 08 ; 0xf33ad
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf33b0
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf33b3 floppy.c:526
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf33b6
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf33b9 floppy.c:527
+ shr ax, 008h ; c1 e8 08 ; 0xf33bc
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf33bf
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf33c2 floppy.c:528
+ cmp bl, 001h ; 80 fb 01 ; 0xf33c5 floppy.c:530
+ jnbe short 033d7h ; 77 0d ; 0xf33c8
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf33ca
+ jnbe short 033d7h ; 77 09 ; 0xf33cc
+ test bh, bh ; 84 ff ; 0xf33ce
+ je short 033d7h ; 74 05 ; 0xf33d0
+ cmp bh, 048h ; 80 ff 48 ; 0xf33d2
+ jbe short 0340ah ; 76 33 ; 0xf33d5
+ mov bx, 00db2h ; bb b2 0d ; 0xf33d7 floppy.c:532
+ mov cx, ds ; 8c d9 ; 0xf33da
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf33dc
+ call 019d3h ; e8 f1 e5 ; 0xf33df
+ push 00287h ; 68 87 02 ; 0xf33e2
+ push 0029fh ; 68 9f 02 ; 0xf33e5
+ push strict byte 00004h ; 6a 04 ; 0xf33e8
+ call 01a14h ; e8 27 e6 ; 0xf33ea
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf33ed
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf33f0 floppy.c:533
+ xor ah, ah ; 30 e4 ; 0xf33f3
+ or ah, 001h ; 80 cc 01 ; 0xf33f5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf33f8
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf33fb floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf33fe
+ mov es, ax ; 8e c0 ; 0xf3401
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3403
+ jmp near 03495h ; e9 8b 00 ; 0xf3407
+ movzx ax, bl ; 0f b6 c3 ; 0xf340a floppy.c:535
+ call 03283h ; e8 73 fe ; 0xf340d
+ test ax, ax ; 85 c0 ; 0xf3410
+ je near 0352ch ; 0f 84 16 01 ; 0xf3412
+ movzx cx, bl ; 0f b6 cb ; 0xf3416 floppy.c:551
+ mov ax, cx ; 89 c8 ; 0xf3419
+ call 030c7h ; e8 a9 fc ; 0xf341b
+ test ax, ax ; 85 c0 ; 0xf341e
+ jne short 03444h ; 75 22 ; 0xf3420
+ mov ax, cx ; 89 c8 ; 0xf3422 floppy.c:552
+ call 0319fh ; e8 78 fd ; 0xf3424
+ test ax, ax ; 85 c0 ; 0xf3427
+ jne short 03444h ; 75 19 ; 0xf3429
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf342b floppy.c:554
+ xor ah, ah ; 30 e4 ; 0xf342e
+ or ah, 00ch ; 80 cc 0c ; 0xf3430
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3433
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3436 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3439
+ mov es, ax ; 8e c0 ; 0xf343c
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf343e
+ jmp short 03495h ; eb 51 ; 0xf3442
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3444 floppy.c:562
+ shr ax, 008h ; c1 e8 08 ; 0xf3447
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf344a
+ jne near 035e0h ; 0f 85 8f 01 ; 0xf344d
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3451 floppy.c:573
+ shr dx, 00ch ; c1 ea 0c ; 0xf3454
+ mov ah, dl ; 88 d4 ; 0xf3457
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf3459 floppy.c:574
+ sal cx, 004h ; c1 e1 04 ; 0xf345c
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf345f floppy.c:575
+ add si, cx ; 01 ce ; 0xf3462
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3464
+ cmp cx, si ; 39 f1 ; 0xf3467 floppy.c:577
+ jbe short 0346dh ; 76 02 ; 0xf3469
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf346b floppy.c:579
+ movzx cx, bh ; 0f b6 cf ; 0xf346d floppy.c:581
+ sal cx, 009h ; c1 e1 09 ; 0xf3470
+ dec cx ; 49 ; 0xf3473
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3474 floppy.c:584
+ add dx, cx ; 01 ca ; 0xf3477
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3479 floppy.c:585
+ jnc short 0349ch ; 73 1e ; 0xf347c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf347e floppy.c:586
+ xor ah, ah ; 30 e4 ; 0xf3481
+ or ah, 009h ; 80 cc 09 ; 0xf3483
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3486
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3489 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf348c
+ mov es, ax ; 8e c0 ; 0xf348f
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3491
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf3495
+ jmp near 03b18h ; e9 7c 06 ; 0xf3499
+ mov AL, strict byte 006h ; b0 06 ; 0xf349c floppy.c:594
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf349e
+ out DX, AL ; ee ; 0xf34a1
+ xor al, al ; 30 c0 ; 0xf34a2 floppy.c:597
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34a4
+ out DX, AL ; ee ; 0xf34a7
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf34a8 floppy.c:598
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34ab
+ out DX, AL ; ee ; 0xf34ae
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf34af floppy.c:599
+ shr dx, 008h ; c1 ea 08 ; 0xf34b2
+ mov al, dl ; 88 d0 ; 0xf34b5
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf34b7
+ out DX, AL ; ee ; 0xf34ba
+ xor al, al ; 30 c0 ; 0xf34bb floppy.c:601
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf34bd
+ out DX, AL ; ee ; 0xf34c0
+ mov al, cl ; 88 c8 ; 0xf34c1 floppy.c:602
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf34c3
+ out DX, AL ; ee ; 0xf34c6
+ shr cx, 008h ; c1 e9 08 ; 0xf34c7 floppy.c:603
+ mov al, cl ; 88 c8 ; 0xf34ca
+ out DX, AL ; ee ; 0xf34cc
+ mov AL, strict byte 046h ; b0 46 ; 0xf34cd floppy.c:611
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf34cf
+ out DX, AL ; ee ; 0xf34d2
+ mov al, ah ; 88 e0 ; 0xf34d3 floppy.c:615
+ mov dx, 00081h ; ba 81 00 ; 0xf34d5
+ out DX, AL ; ee ; 0xf34d8
+ mov AL, strict byte 002h ; b0 02 ; 0xf34d9 floppy.c:618
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf34db
+ out DX, AL ; ee ; 0xf34de
+ movzx cx, bl ; 0f b6 cb ; 0xf34df floppy.c:623
+ mov ax, cx ; 89 c8 ; 0xf34e2
+ call 03053h ; e8 6c fb ; 0xf34e4
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf34e7 floppy.c:626
+ mov dx, 003f5h ; ba f5 03 ; 0xf34e9
+ out DX, AL ; ee ; 0xf34ec
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf34ed floppy.c:627
+ sal dx, 002h ; c1 e2 02 ; 0xf34f1
+ movzx ax, bl ; 0f b6 c3 ; 0xf34f4
+ or ax, dx ; 09 d0 ; 0xf34f7
+ mov dx, 003f5h ; ba f5 03 ; 0xf34f9
+ out DX, AL ; ee ; 0xf34fc
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf34fd floppy.c:628
+ out DX, AL ; ee ; 0xf3500
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3501 floppy.c:629
+ out DX, AL ; ee ; 0xf3504
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3505 floppy.c:630
+ out DX, AL ; ee ; 0xf3508
+ mov AL, strict byte 002h ; b0 02 ; 0xf3509 floppy.c:631
+ out DX, AL ; ee ; 0xf350b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf350c floppy.c:632
+ movzx dx, bh ; 0f b6 d7 ; 0xf3510
+ add ax, dx ; 01 d0 ; 0xf3513
+ dec ax ; 48 ; 0xf3515
+ mov dx, 003f5h ; ba f5 03 ; 0xf3516
+ out DX, AL ; ee ; 0xf3519
+ xor al, al ; 30 c0 ; 0xf351a floppy.c:633
+ out DX, AL ; ee ; 0xf351c
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf351d floppy.c:634
+ out DX, AL ; ee ; 0xf351f
+ call 02fd9h ; e8 b6 fa ; 0xf3520 floppy.c:666
+ test al, al ; 84 c0 ; 0xf3523 floppy.c:667
+ jne short 03546h ; 75 1f ; 0xf3525
+ mov ax, cx ; 89 c8 ; 0xf3527 floppy.c:669
+ call 03011h ; e8 e5 fa ; 0xf3529
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf352c floppy.c:68
+ xor ah, ah ; 30 e4 ; 0xf352f
+ or ah, 080h ; 80 cc 80 ; 0xf3531
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3534
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3537
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf353a
+ mov es, ax ; 8e c0 ; 0xf353d
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf353f
+ jmp near 03495h ; e9 4f ff ; 0xf3543
+ mov dx, 003f4h ; ba f4 03 ; 0xf3546 floppy.c:679
+ in AL, DX ; ec ; 0xf3549
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf354a
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf354c floppy.c:680
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf354e
+ je short 03560h ; 74 0e ; 0xf3550
+ push 00287h ; 68 87 02 ; 0xf3552 floppy.c:681
+ push 002bah ; 68 ba 02 ; 0xf3555
+ push strict byte 00007h ; 6a 07 ; 0xf3558
+ call 01a14h ; e8 b7 e4 ; 0xf355a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf355d
+ xor cx, cx ; 31 c9 ; 0xf3560 floppy.c:684
+ jmp short 03569h ; eb 05 ; 0xf3562
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3564
+ jnl short 0357fh ; 7d 16 ; 0xf3567
+ mov dx, 003f5h ; ba f5 03 ; 0xf3569 floppy.c:685
+ in AL, DX ; ec ; 0xf356c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf356d
+ mov si, cx ; 89 ce ; 0xf356f
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3571
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3574 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3577
+ mov byte [es:si], al ; 26 88 04 ; 0xf3579
+ inc cx ; 41 ; 0xf357c floppy.c:685
+ jmp short 03564h ; eb e5 ; 0xf357d
+ mov si, strict word 00042h ; be 42 00 ; 0xf357f floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3582
+ mov es, ax ; 8e c0 ; 0xf3585
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3587
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf358a floppy.c:39
+ je short 035aeh ; 74 20 ; 0xf358c
+ movzx ax, bl ; 0f b6 c3 ; 0xf358e floppy.c:689
+ call 03011h ; e8 7d fa ; 0xf3591
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3594 floppy.c:690
+ xor ah, ah ; 30 e4 ; 0xf3597
+ or ah, 020h ; 80 cc 20 ; 0xf3599
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf359c
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf359f floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35a2
+ mov es, ax ; 8e c0 ; 0xf35a5
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf35a7
+ jmp near 03495h ; e9 e7 fe ; 0xf35ab
+ movzx ax, bh ; 0f b6 c7 ; 0xf35ae floppy.c:698
+ sal ax, 009h ; c1 e0 09 ; 0xf35b1
+ cwd ; 99 ; 0xf35b4
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf35b5
+ sar ax, 1 ; d1 f8 ; 0xf35b7
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf35b9
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf35bc
+ mov di, si ; 89 f7 ; 0xf35bf
+ mov cx, ax ; 89 c1 ; 0xf35c1
+ mov es, dx ; 8e c2 ; 0xf35c3
+ push DS ; 1e ; 0xf35c5
+ mov ds, dx ; 8e da ; 0xf35c6
+ rep movsw ; f3 a5 ; 0xf35c8
+ pop DS ; 1f ; 0xf35ca
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf35cb floppy.c:702
+ movzx ax, bl ; 0f b6 c3 ; 0xf35cf
+ call 02f8ch ; e8 b7 f9 ; 0xf35d2
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf35d5 floppy.c:704
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf35d9 floppy.c:705
+ jmp near 03383h ; e9 a3 fd ; 0xf35dd floppy.c:706
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf35e0 floppy.c:707
+ shr ax, 008h ; c1 e8 08 ; 0xf35e3
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf35e6
+ jne near 0370dh ; 0f 85 20 01 ; 0xf35e9
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf35ed floppy.c:718
+ shr cx, 00ch ; c1 e9 0c ; 0xf35f0
+ mov ah, cl ; 88 cc ; 0xf35f3
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf35f5 floppy.c:719
+ sal dx, 004h ; c1 e2 04 ; 0xf35f8
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf35fb floppy.c:720
+ add si, dx ; 01 d6 ; 0xf35fe
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3600
+ cmp dx, si ; 39 f2 ; 0xf3603 floppy.c:722
+ jbe short 03609h ; 76 02 ; 0xf3605
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf3607 floppy.c:724
+ movzx cx, bh ; 0f b6 cf ; 0xf3609 floppy.c:726
+ sal cx, 009h ; c1 e1 09 ; 0xf360c
+ dec cx ; 49 ; 0xf360f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf3610 floppy.c:729
+ add dx, cx ; 01 ca ; 0xf3613
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf3615 floppy.c:730
+ jc near 0347eh ; 0f 82 62 fe ; 0xf3618
+ mov AL, strict byte 006h ; b0 06 ; 0xf361c floppy.c:739
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf361e
+ out DX, AL ; ee ; 0xf3621
+ xor al, al ; 30 c0 ; 0xf3622 floppy.c:741
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3624
+ out DX, AL ; ee ; 0xf3627
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3628 floppy.c:742
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf362b
+ out DX, AL ; ee ; 0xf362e
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf362f floppy.c:743
+ shr dx, 008h ; c1 ea 08 ; 0xf3632
+ mov al, dl ; 88 d0 ; 0xf3635
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf3637
+ out DX, AL ; ee ; 0xf363a
+ xor al, al ; 30 c0 ; 0xf363b floppy.c:744
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf363d
+ out DX, AL ; ee ; 0xf3640
+ mov al, cl ; 88 c8 ; 0xf3641 floppy.c:745
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf3643
+ out DX, AL ; ee ; 0xf3646
+ shr cx, 008h ; c1 e9 08 ; 0xf3647 floppy.c:746
+ mov al, cl ; 88 c8 ; 0xf364a
+ out DX, AL ; ee ; 0xf364c
+ mov AL, strict byte 04ah ; b0 4a ; 0xf364d floppy.c:753
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf364f
+ out DX, AL ; ee ; 0xf3652
+ mov al, ah ; 88 e0 ; 0xf3653 floppy.c:756
+ mov dx, 00081h ; ba 81 00 ; 0xf3655
+ out DX, AL ; ee ; 0xf3658
+ mov AL, strict byte 002h ; b0 02 ; 0xf3659 floppy.c:759
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf365b
+ out DX, AL ; ee ; 0xf365e
+ movzx cx, bl ; 0f b6 cb ; 0xf365f floppy.c:764
+ mov ax, cx ; 89 c8 ; 0xf3662
+ call 03053h ; e8 ec f9 ; 0xf3664
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf3667 floppy.c:767
+ mov dx, 003f5h ; ba f5 03 ; 0xf3669
+ out DX, AL ; ee ; 0xf366c
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf366d floppy.c:768
+ sal dx, 002h ; c1 e2 02 ; 0xf3671
+ movzx ax, bl ; 0f b6 c3 ; 0xf3674
+ or ax, dx ; 09 d0 ; 0xf3677
+ mov dx, 003f5h ; ba f5 03 ; 0xf3679
+ out DX, AL ; ee ; 0xf367c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf367d floppy.c:769
+ out DX, AL ; ee ; 0xf3680
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3681 floppy.c:770
+ out DX, AL ; ee ; 0xf3684
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3685 floppy.c:771
+ out DX, AL ; ee ; 0xf3688
+ mov AL, strict byte 002h ; b0 02 ; 0xf3689 floppy.c:772
+ out DX, AL ; ee ; 0xf368b
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf368c floppy.c:773
+ movzx ax, bh ; 0f b6 c7 ; 0xf3690
+ add ax, dx ; 01 d0 ; 0xf3693
+ dec ax ; 48 ; 0xf3695
+ mov dx, 003f5h ; ba f5 03 ; 0xf3696
+ out DX, AL ; ee ; 0xf3699
+ xor al, al ; 30 c0 ; 0xf369a floppy.c:774
+ out DX, AL ; ee ; 0xf369c
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf369d floppy.c:775
+ out DX, AL ; ee ; 0xf369f
+ call 02fd9h ; e8 36 f9 ; 0xf36a0 floppy.c:804
+ test al, al ; 84 c0 ; 0xf36a3 floppy.c:805
+ je near 03527h ; 0f 84 7e fe ; 0xf36a5
+ mov dx, 003f4h ; ba f4 03 ; 0xf36a9 floppy.c:816
+ in AL, DX ; ec ; 0xf36ac
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf36ad
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf36af floppy.c:817
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf36b1
+ je short 036c3h ; 74 0e ; 0xf36b3
+ push 00287h ; 68 87 02 ; 0xf36b5 floppy.c:818
+ push 002bah ; 68 ba 02 ; 0xf36b8
+ push strict byte 00007h ; 6a 07 ; 0xf36bb
+ call 01a14h ; e8 54 e3 ; 0xf36bd
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf36c0
+ xor cx, cx ; 31 c9 ; 0xf36c3 floppy.c:821
+ jmp short 036cch ; eb 05 ; 0xf36c5
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf36c7
+ jnl short 036e2h ; 7d 16 ; 0xf36ca
+ mov dx, 003f5h ; ba f5 03 ; 0xf36cc floppy.c:822
+ in AL, DX ; ec ; 0xf36cf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf36d0
+ mov si, cx ; 89 ce ; 0xf36d2
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf36d4
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf36d7 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf36da
+ mov byte [es:si], al ; 26 88 04 ; 0xf36dc
+ inc cx ; 41 ; 0xf36df floppy.c:822
+ jmp short 036c7h ; eb e5 ; 0xf36e0
+ mov si, strict word 00042h ; be 42 00 ; 0xf36e2 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf36e5
+ mov es, ax ; 8e c0 ; 0xf36e8
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf36ea
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf36ed floppy.c:39
+ je near 035cbh ; 0f 84 d8 fe ; 0xf36ef
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf36f3 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf36f6
+ test AL, strict byte 002h ; a8 02 ; 0xf36f9 floppy.c:39
+ je short 03705h ; 74 08 ; 0xf36fb
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf36fd floppy.c:829
+ jmp near 03b18h ; e9 13 04 ; 0xf3702
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf3705 floppy.c:832
+ jmp near 03b18h ; e9 0b 04 ; 0xf370a floppy.c:833
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf370d floppy.c:848
+ movzx ax, bl ; 0f b6 c3 ; 0xf3711
+ call 02f8ch ; e8 75 f8 ; 0xf3714
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3717 floppy.c:850
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf371b floppy.c:851
+ jmp near 03383h ; e9 61 fc ; 0xf371f floppy.c:852
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3722 floppy.c:859
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf3725 floppy.c:860
+ shr ax, 008h ; c1 e8 08 ; 0xf3728
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf372b
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf372e floppy.c:861
+ shr dx, 008h ; c1 ea 08 ; 0xf3731
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf3734
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3737 floppy.c:862
+ cmp bl, 001h ; 80 fb 01 ; 0xf373a floppy.c:864
+ jnbe short 03751h ; 77 12 ; 0xf373d
+ cmp dl, 001h ; 80 fa 01 ; 0xf373f
+ jnbe short 03751h ; 77 0d ; 0xf3742
+ cmp AL, strict byte 04fh ; 3c 4f ; 0xf3744
+ jnbe short 03751h ; 77 09 ; 0xf3746
+ test bh, bh ; 84 ff ; 0xf3748
+ je short 03751h ; 74 05 ; 0xf374a
+ cmp bh, 012h ; 80 ff 12 ; 0xf374c
+ jbe short 0376ch ; 76 1b ; 0xf374f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3751 floppy.c:866
+ xor ah, ah ; 30 e4 ; 0xf3754
+ or ah, 001h ; 80 cc 01 ; 0xf3756
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3759
+ mov si, strict word 00041h ; be 41 00 ; 0xf375c floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf375f
+ mov es, ax ; 8e c0 ; 0xf3762
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3764
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3768 floppy.c:868
+ movzx ax, bl ; 0f b6 c3 ; 0xf376c floppy.c:872
+ call 03283h ; e8 11 fb ; 0xf376f
+ test ax, ax ; 85 c0 ; 0xf3772
+ jne short 03790h ; 75 1a ; 0xf3774
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3776 floppy.c:873
+ xor ah, ah ; 30 e4 ; 0xf3779
+ or ah, 080h ; 80 cc 80 ; 0xf377b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf377e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3781 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3784
+ mov es, ax ; 8e c0 ; 0xf3787
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3789
+ jmp near 03b18h ; e9 88 03 ; 0xf378d
+ movzx cx, bl ; 0f b6 cb ; 0xf3790 floppy.c:880
+ mov ax, cx ; 89 c8 ; 0xf3793
+ call 030c7h ; e8 2f f9 ; 0xf3795
+ test ax, ax ; 85 c0 ; 0xf3798
+ jne short 037a7h ; 75 0b ; 0xf379a
+ mov ax, cx ; 89 c8 ; 0xf379c floppy.c:881
+ call 0319fh ; e8 fe f9 ; 0xf379e
+ test ax, ax ; 85 c0 ; 0xf37a1
+ je near 0342bh ; 0f 84 84 fc ; 0xf37a3
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf37a7 floppy.c:892
+ shr dx, 00ch ; c1 ea 0c ; 0xf37aa
+ mov ah, dl ; 88 d4 ; 0xf37ad
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf37af floppy.c:893
+ sal cx, 004h ; c1 e1 04 ; 0xf37b2
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf37b5 floppy.c:894
+ add si, cx ; 01 ce ; 0xf37b8
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf37ba
+ cmp cx, si ; 39 f1 ; 0xf37bd floppy.c:896
+ jbe short 037c3h ; 76 02 ; 0xf37bf
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf37c1 floppy.c:898
+ movzx cx, bh ; 0f b6 cf ; 0xf37c3 floppy.c:900
+ sal cx, 002h ; c1 e1 02 ; 0xf37c6
+ dec cx ; 49 ; 0xf37c9
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37ca floppy.c:903
+ add dx, cx ; 01 ca ; 0xf37cd
+ cmp dx, word [bp-008h] ; 3b 56 f8 ; 0xf37cf floppy.c:904
+ jc near 0347eh ; 0f 82 a8 fc ; 0xf37d2
+ mov AL, strict byte 006h ; b0 06 ; 0xf37d6 floppy.c:912
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf37d8
+ out DX, AL ; ee ; 0xf37db
+ xor al, al ; 30 c0 ; 0xf37dc floppy.c:913
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37de
+ out DX, AL ; ee ; 0xf37e1
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf37e2 floppy.c:914
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf37e5
+ out DX, AL ; ee ; 0xf37e8
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf37e9 floppy.c:915
+ shr dx, 008h ; c1 ea 08 ; 0xf37ec
+ mov al, dl ; 88 d0 ; 0xf37ef
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf37f1
+ out DX, AL ; ee ; 0xf37f4
+ xor al, al ; 30 c0 ; 0xf37f5 floppy.c:916
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf37f7
+ out DX, AL ; ee ; 0xf37fa
+ mov al, cl ; 88 c8 ; 0xf37fb floppy.c:917
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf37fd
+ out DX, AL ; ee ; 0xf3800
+ shr cx, 008h ; c1 e9 08 ; 0xf3801 floppy.c:918
+ mov al, cl ; 88 c8 ; 0xf3804
+ out DX, AL ; ee ; 0xf3806
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3807 floppy.c:921
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3809
+ out DX, AL ; ee ; 0xf380c
+ mov al, ah ; 88 e0 ; 0xf380d floppy.c:923
+ mov dx, 00081h ; ba 81 00 ; 0xf380f
+ out DX, AL ; ee ; 0xf3812
+ mov AL, strict byte 002h ; b0 02 ; 0xf3813 floppy.c:924
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3815
+ out DX, AL ; ee ; 0xf3818
+ movzx cx, bl ; 0f b6 cb ; 0xf3819 floppy.c:927
+ mov ax, cx ; 89 c8 ; 0xf381c
+ call 03053h ; e8 32 f8 ; 0xf381e
+ mov AL, strict byte 00fh ; b0 0f ; 0xf3821 floppy.c:930
+ mov dx, 003f5h ; ba f5 03 ; 0xf3823
+ out DX, AL ; ee ; 0xf3826
+ movzx dx, byte [bp-004h] ; 0f b6 56 fc ; 0xf3827 floppy.c:931
+ sal dx, 002h ; c1 e2 02 ; 0xf382b
+ movzx ax, bl ; 0f b6 c3 ; 0xf382e
+ or dx, ax ; 09 c2 ; 0xf3831
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf3833
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf3836
+ mov dx, 003f5h ; ba f5 03 ; 0xf3839
+ out DX, AL ; ee ; 0xf383c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf383d floppy.c:932
+ out DX, AL ; ee ; 0xf3840
+ mov AL, strict byte 04dh ; b0 4d ; 0xf3841 floppy.c:935
+ out DX, AL ; ee ; 0xf3843
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf3844 floppy.c:936
+ out DX, AL ; ee ; 0xf3847
+ mov AL, strict byte 002h ; b0 02 ; 0xf3848 floppy.c:937
+ out DX, AL ; ee ; 0xf384a
+ mov al, bh ; 88 f8 ; 0xf384b floppy.c:938
+ out DX, AL ; ee ; 0xf384d
+ xor al, bh ; 30 f8 ; 0xf384e floppy.c:939
+ out DX, AL ; ee ; 0xf3850
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf3851 floppy.c:940
+ out DX, AL ; ee ; 0xf3853
+ call 02fd9h ; e8 82 f7 ; 0xf3854 floppy.c:968
+ test al, al ; 84 c0 ; 0xf3857 floppy.c:969
+ jne short 03863h ; 75 08 ; 0xf3859
+ mov ax, cx ; 89 c8 ; 0xf385b floppy.c:970
+ call 03011h ; e8 b1 f7 ; 0xf385d
+ jmp near 03776h ; e9 13 ff ; 0xf3860 floppy.c:68
+ mov dx, 003f4h ; ba f4 03 ; 0xf3863 floppy.c:979
+ in AL, DX ; ec ; 0xf3866
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3867
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3869 floppy.c:980
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf386b
+ je short 0387dh ; 74 0e ; 0xf386d
+ push 00287h ; 68 87 02 ; 0xf386f floppy.c:981
+ push 002bah ; 68 ba 02 ; 0xf3872
+ push strict byte 00007h ; 6a 07 ; 0xf3875
+ call 01a14h ; e8 9a e1 ; 0xf3877
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf387a
+ xor cx, cx ; 31 c9 ; 0xf387d floppy.c:984
+ jmp short 03886h ; eb 05 ; 0xf387f
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3881
+ jnl short 0389ch ; 7d 16 ; 0xf3884
+ mov dx, 003f5h ; ba f5 03 ; 0xf3886 floppy.c:985
+ in AL, DX ; ec ; 0xf3889
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf388a
+ mov si, cx ; 89 ce ; 0xf388c
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf388e
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3891 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3894
+ mov byte [es:si], al ; 26 88 04 ; 0xf3896
+ inc cx ; 41 ; 0xf3899 floppy.c:985
+ jmp short 03881h ; eb e5 ; 0xf389a
+ mov si, strict word 00042h ; be 42 00 ; 0xf389c floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf389f
+ mov es, ax ; 8e c0 ; 0xf38a2
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf38a4
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf38a7 floppy.c:39
+ je short 038c5h ; 74 1a ; 0xf38a9
+ mov si, strict word 00043h ; be 43 00 ; 0xf38ab floppy.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf38ae
+ test AL, strict byte 002h ; a8 02 ; 0xf38b1 floppy.c:39
+ jne near 036fdh ; 0f 85 46 fe ; 0xf38b3
+ push 00287h ; 68 87 02 ; 0xf38b7 floppy.c:996
+ push 002ceh ; 68 ce 02 ; 0xf38ba
+ push strict byte 00007h ; 6a 07 ; 0xf38bd
+ call 01a14h ; e8 52 e1 ; 0xf38bf
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf38c2
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf38c5 floppy.c:1000
+ mov si, strict word 00041h ; be 41 00 ; 0xf38c9 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf38cc
+ mov es, ax ; 8e c0 ; 0xf38cf
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf38d1
+ movzx ax, bl ; 0f b6 c3 ; 0xf38d5 floppy.c:1002
+ xor dx, dx ; 31 d2 ; 0xf38d8
+ call 02f8ch ; e8 af f6 ; 0xf38da
+ jmp near 035d9h ; e9 f9 fc ; 0xf38dd
+ mov bl, ah ; 88 e3 ; 0xf38e0 floppy.c:1009
+ cmp ah, 001h ; 80 fc 01 ; 0xf38e2 floppy.c:1011
+ jbe short 03904h ; 76 1d ; 0xf38e5
+ xor ax, ax ; 31 c0 ; 0xf38e7 floppy.c:1012
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf38e9
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf38ec floppy.c:1013
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf38ef floppy.c:1014
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf38f2 floppy.c:1015
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf38f5 floppy.c:1016
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf38f8 floppy.c:1017
+ movzx ax, bh ; 0f b6 c7 ; 0xf38fb floppy.c:1018
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf38fe
+ jmp near 03a26h ; e9 22 01 ; 0xf3901
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3904 floppy.c:1019
+ call 01756h ; e8 4c de ; 0xf3907
+ mov dl, al ; 88 c2 ; 0xf390a
+ xor bh, bh ; 30 ff ; 0xf390c floppy.c:1025
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf390e floppy.c:1026
+ je short 03914h ; 74 02 ; 0xf3910
+ mov BH, strict byte 001h ; b7 01 ; 0xf3912 floppy.c:1027
+ test dl, 00fh ; f6 c2 0f ; 0xf3914 floppy.c:1028
+ je short 0391bh ; 74 02 ; 0xf3917
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf3919 floppy.c:1029
+ test bl, bl ; 84 db ; 0xf391b floppy.c:1031
+ jne short 03924h ; 75 05 ; 0xf391d
+ shr dl, 004h ; c0 ea 04 ; 0xf391f floppy.c:1032
+ jmp short 03927h ; eb 03 ; 0xf3922 floppy.c:1033
+ and dl, 00fh ; 80 e2 0f ; 0xf3924 floppy.c:1034
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf3927 floppy.c:1037
+ movzx ax, dl ; 0f b6 c2 ; 0xf392b
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf392e
+ mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3931 floppy.c:1038
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf3936 floppy.c:1040
+ xor cl, cl ; 30 c9 ; 0xf3939
+ movzx ax, bh ; 0f b6 c7 ; 0xf393b
+ or cx, ax ; 09 c1 ; 0xf393e
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf3940
+ mov ax, cx ; 89 c8 ; 0xf3943 floppy.c:1041
+ xor ah, ch ; 30 ec ; 0xf3945
+ or ah, 001h ; 80 cc 01 ; 0xf3947
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf394a
+ cmp dl, 003h ; 80 fa 03 ; 0xf394d floppy.c:1043
+ jc short 03967h ; 72 15 ; 0xf3950
+ jbe short 0398eh ; 76 3a ; 0xf3952
+ cmp dl, 005h ; 80 fa 05 ; 0xf3954
+ jc short 03995h ; 72 3c ; 0xf3957
+ jbe short 0399ch ; 76 41 ; 0xf3959
+ cmp dl, 00fh ; 80 fa 0f ; 0xf395b
+ je short 039aah ; 74 4a ; 0xf395e
+ cmp dl, 00eh ; 80 fa 0e ; 0xf3960
+ je short 039a3h ; 74 3e ; 0xf3963
+ jmp short 039b1h ; eb 4a ; 0xf3965
+ cmp dl, 002h ; 80 fa 02 ; 0xf3967
+ je short 03987h ; 74 1b ; 0xf396a
+ cmp dl, 001h ; 80 fa 01 ; 0xf396c
+ je short 03980h ; 74 0f ; 0xf396f
+ test dl, dl ; 84 d2 ; 0xf3971
+ jne short 039b1h ; 75 3c ; 0xf3973
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf3975 floppy.c:1045
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf397a floppy.c:1046
+ jmp short 039bfh ; eb 3f ; 0xf397e floppy.c:1047
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf3980 floppy.c:1050
+ jmp short 039bfh ; eb 38 ; 0xf3985 floppy.c:1051
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf3987 floppy.c:1054
+ jmp short 039bfh ; eb 31 ; 0xf398c floppy.c:1055
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf398e floppy.c:1058
+ jmp short 039bfh ; eb 2a ; 0xf3993 floppy.c:1059
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf3995 floppy.c:1062
+ jmp short 039bfh ; eb 23 ; 0xf399a floppy.c:1063
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf399c floppy.c:1066
+ jmp short 039bfh ; eb 1c ; 0xf39a1 floppy.c:1067
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf39a3 floppy.c:1070
+ jmp short 039bfh ; eb 15 ; 0xf39a8 floppy.c:1071
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf39aa floppy.c:1074
+ jmp short 039bfh ; eb 0e ; 0xf39af floppy.c:1075
+ push 00287h ; 68 87 02 ; 0xf39b1 floppy.c:1079
+ push 002dfh ; 68 df 02 ; 0xf39b4
+ push strict byte 00007h ; 6a 07 ; 0xf39b7
+ call 01a14h ; e8 58 e0 ; 0xf39b9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf39bc
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf39bf floppy.c:1083
+ movzx ax, dl ; 0f b6 c2 ; 0xf39c4 floppy.c:1084
+ call 03c4eh ; e8 84 02 ; 0xf39c7
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf39ca
+ jmp near 035d9h ; e9 09 fc ; 0xf39cd
+ mov bl, ah ; 88 e3 ; 0xf39d0 floppy.c:1091
+ cmp ah, 001h ; 80 fc 01 ; 0xf39d2 floppy.c:1092
+ jbe short 039dch ; 76 05 ; 0xf39d5
+ mov word [bp+016h], dx ; 89 56 16 ; 0xf39d7 floppy.c:1093
+ jmp short 03a26h ; eb 4a ; 0xf39da
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf39dc floppy.c:1099
+ call 01756h ; e8 74 dd ; 0xf39df
+ test bl, bl ; 84 db ; 0xf39e2 floppy.c:1100
+ jne short 039edh ; 75 07 ; 0xf39e4
+ mov dl, al ; 88 c2 ; 0xf39e6 floppy.c:1101
+ shr dl, 004h ; c0 ea 04 ; 0xf39e8
+ jmp short 039f2h ; eb 05 ; 0xf39eb floppy.c:1102
+ mov dl, al ; 88 c2 ; 0xf39ed floppy.c:1103
+ and dl, 00fh ; 80 e2 0f ; 0xf39ef
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf39f2 floppy.c:1104
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf39f6
+ xor ah, ah ; 30 e4 ; 0xf39f9
+ test dl, dl ; 84 d2 ; 0xf39fb floppy.c:1105
+ je short 03a0ch ; 74 0d ; 0xf39fd
+ cmp dl, 001h ; 80 fa 01 ; 0xf39ff floppy.c:1106
+ jbe short 03a09h ; 76 05 ; 0xf3a02
+ or ah, 002h ; 80 cc 02 ; 0xf3a04 floppy.c:1108
+ jmp short 03a0ch ; eb 03 ; 0xf3a07 floppy.c:1109
+ or ah, 001h ; 80 cc 01 ; 0xf3a09 floppy.c:1110
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a0c
+ jmp near 03383h ; e9 71 f9 ; 0xf3a0f floppy.c:1113
+ cmp ah, 001h ; 80 fc 01 ; 0xf3a12 floppy.c:1118
+ jbe short 03a2ch ; 76 15 ; 0xf3a15
+ mov word [bp+016h], si ; 89 76 16 ; 0xf3a17 floppy.c:1119
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a1a floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a1d
+ mov es, ax ; 8e c0 ; 0xf3a20
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3a22
+ mov word [bp+01ch], cx ; 89 4e 1c ; 0xf3a26
+ jmp near 03383h ; e9 57 f9 ; 0xf3a29
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a2c floppy.c:1125
+ xor ah, ah ; 30 e4 ; 0xf3a2f
+ or ah, 006h ; 80 cc 06 ; 0xf3a31
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a34
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a37 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a3a
+ mov es, ax ; 8e c0 ; 0xf3a3d
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3a3f
+ jmp near 03b18h ; e9 d2 00 ; 0xf3a43
+ mov bl, ah ; 88 e3 ; 0xf3a46 floppy.c:1134
+ mov dl, byte [bp+016h] ; 8a 56 16 ; 0xf3a48 floppy.c:1142
+ cmp ah, 001h ; 80 fc 01 ; 0xf3a4b floppy.c:1146
+ jnbe short 03a17h ; 77 c7 ; 0xf3a4e
+ movzx ax, bl ; 0f b6 c3 ; 0xf3a50 floppy.c:1154
+ call 03283h ; e8 2d f8 ; 0xf3a53
+ test ax, ax ; 85 c0 ; 0xf3a56
+ je near 03776h ; 0f 84 1a fd ; 0xf3a58
+ test bl, bl ; 84 db ; 0xf3a5c floppy.c:1162
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3a5e
+ movzx bx, al ; 0f b6 d8 ; 0xf3a61
+ add bx, 00090h ; 81 c3 90 00 ; 0xf3a64
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf3a68
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a6b floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3a6e
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf3a70
+ and bl, 00fh ; 80 e3 0f ; 0xf3a73 floppy.c:1166
+ cmp dl, 002h ; 80 fa 02 ; 0xf3a76 floppy.c:1168
+ jc short 03a8ah ; 72 0f ; 0xf3a79
+ jbe short 03a97h ; 76 1a ; 0xf3a7b
+ cmp dl, 004h ; 80 fa 04 ; 0xf3a7d
+ je short 03a92h ; 74 10 ; 0xf3a80
+ cmp dl, 003h ; 80 fa 03 ; 0xf3a82
+ je short 03a9ch ; 74 15 ; 0xf3a85
+ jmp near 03312h ; e9 88 f8 ; 0xf3a87
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a8a
+ je short 03a92h ; 74 03 ; 0xf3a8d
+ jmp near 03312h ; e9 80 f8 ; 0xf3a8f
+ or bl, 090h ; 80 cb 90 ; 0xf3a92 floppy.c:1171
+ jmp short 03a9fh ; eb 08 ; 0xf3a95 floppy.c:1172
+ or bl, 070h ; 80 cb 70 ; 0xf3a97 floppy.c:1175
+ jmp short 03a9fh ; eb 03 ; 0xf3a9a floppy.c:1176
+ or bl, 010h ; 80 cb 10 ; 0xf3a9c floppy.c:1179
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a9f floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3aa2
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3aa4
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3aa7
+ xor al, al ; 30 c0 ; 0xf3aaa floppy.c:1198
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3aac
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3aaf floppy.c:43
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3ab2
+ jmp near 035d9h ; e9 21 fb ; 0xf3ab5
+ mov bl, ah ; 88 e3 ; 0xf3ab8 floppy.c:1208
+ mov dl, byte [bp+014h] ; 8a 56 14 ; 0xf3aba floppy.c:1210
+ mov bh, dl ; 88 d7 ; 0xf3abd floppy.c:1211
+ and bh, 03fh ; 80 e7 3f ; 0xf3abf
+ xor dh, dh ; 30 f6 ; 0xf3ac2 floppy.c:1212
+ sar dx, 006h ; c1 fa 06 ; 0xf3ac4
+ sal dx, 008h ; c1 e2 08 ; 0xf3ac7
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf3aca
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf3acd
+ shr dx, 008h ; c1 ea 08 ; 0xf3ad0
+ add dx, word [bp-00ch] ; 03 56 f4 ; 0xf3ad3
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf3ad6
+ cmp ah, 001h ; 80 fc 01 ; 0xf3ad9 floppy.c:1217
+ jnbe near 03a17h ; 0f 87 37 ff ; 0xf3adc
+ movzx ax, bl ; 0f b6 c3 ; 0xf3ae0 floppy.c:1225
+ call 03283h ; e8 9d f7 ; 0xf3ae3
+ test ax, ax ; 85 c0 ; 0xf3ae6
+ je near 03776h ; 0f 84 8a fc ; 0xf3ae8
+ movzx cx, bl ; 0f b6 cb ; 0xf3aec floppy.c:1233
+ mov ax, cx ; 89 c8 ; 0xf3aef
+ call 030c7h ; e8 d3 f5 ; 0xf3af1
+ test ax, ax ; 85 c0 ; 0xf3af4
+ jne short 03b1fh ; 75 27 ; 0xf3af6
+ mov ax, cx ; 89 c8 ; 0xf3af8 floppy.c:1234
+ call 0319fh ; e8 a2 f6 ; 0xf3afa
+ test ax, ax ; 85 c0 ; 0xf3afd
+ jne short 03b1fh ; 75 1e ; 0xf3aff
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3b01 floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf3b04
+ or ah, 00ch ; 80 cc 0c ; 0xf3b06
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3b09
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3b0c floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b0f
+ mov es, ax ; 8e c0 ; 0xf3b12
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3b14
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3b18
+ jmp near 03383h ; e9 64 f8 ; 0xf3b1c
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3b1f floppy.c:1243
+ call 01756h ; e8 31 dc ; 0xf3b22
+ test bl, bl ; 84 db ; 0xf3b25 floppy.c:1244
+ jne short 03b30h ; 75 07 ; 0xf3b27
+ mov dl, al ; 88 c2 ; 0xf3b29 floppy.c:1245
+ shr dl, 004h ; c0 ea 04 ; 0xf3b2b
+ jmp short 03b35h ; eb 05 ; 0xf3b2e floppy.c:1246
+ mov dl, al ; 88 c2 ; 0xf3b30 floppy.c:1247
+ and dl, 00fh ; 80 e2 0f ; 0xf3b32
+ test bl, bl ; 84 db ; 0xf3b35 floppy.c:1250
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf3b37
+ movzx si, al ; 0f b6 f0 ; 0xf3b3a
+ add si, 00090h ; 81 c6 90 00 ; 0xf3b3d
+ mov word [bp-008h], si ; 89 76 f8 ; 0xf3b41
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b44 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3b47
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3b49
+ and bl, 00fh ; 80 e3 0f ; 0xf3b4c floppy.c:39
+ cmp dl, 003h ; 80 fa 03 ; 0xf3b4f floppy.c:1256
+ jc short 03b71h ; 72 1d ; 0xf3b52
+ mov al, bl ; 88 d8 ; 0xf3b54
+ or AL, strict byte 090h ; 0c 90 ; 0xf3b56
+ cmp dl, 003h ; 80 fa 03 ; 0xf3b58
+ jbe short 03bb2h ; 76 55 ; 0xf3b5b
+ mov ah, bl ; 88 dc ; 0xf3b5d
+ or ah, 010h ; 80 cc 10 ; 0xf3b5f
+ cmp dl, 005h ; 80 fa 05 ; 0xf3b62
+ je near 03bd7h ; 0f 84 6e 00 ; 0xf3b65
+ cmp dl, 004h ; 80 fa 04 ; 0xf3b69
+ je short 03bc1h ; 74 53 ; 0xf3b6c
+ jmp near 03bf3h ; e9 82 00 ; 0xf3b6e
+ cmp dl, 002h ; 80 fa 02 ; 0xf3b71
+ je short 03b92h ; 74 1c ; 0xf3b74
+ cmp dl, 001h ; 80 fa 01 ; 0xf3b76
+ jne near 03bf3h ; 0f 85 76 00 ; 0xf3b79
+ cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b7d floppy.c:1258
+ jne near 03bf3h ; 0f 85 6e 00 ; 0xf3b81
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b85
+ jne near 03bf3h ; 0f 85 67 00 ; 0xf3b88
+ or bl, 090h ; 80 cb 90 ; 0xf3b8c floppy.c:1259
+ jmp near 03bf3h ; e9 61 00 ; 0xf3b8f floppy.c:1261
+ cmp byte [bp-002h], 027h ; 80 7e fe 27 ; 0xf3b92 floppy.c:1263
+ jne short 03ba2h ; 75 0a ; 0xf3b96
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b98
+ jne short 03ba2h ; 75 05 ; 0xf3b9b
+ or bl, 070h ; 80 cb 70 ; 0xf3b9d floppy.c:1264
+ jmp short 03bf3h ; eb 51 ; 0xf3ba0 floppy.c:1265
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3ba2
+ jne short 03bf3h ; 75 4b ; 0xf3ba6
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3ba8
+ jne short 03bf3h ; 75 46 ; 0xf3bab
+ or bl, 010h ; 80 cb 10 ; 0xf3bad floppy.c:1266
+ jmp short 03bf3h ; eb 41 ; 0xf3bb0 floppy.c:1268
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bb2 floppy.c:1270
+ jne short 03bf3h ; 75 3b ; 0xf3bb6
+ cmp bh, 009h ; 80 ff 09 ; 0xf3bb8
+ jne short 03bf3h ; 75 36 ; 0xf3bbb
+ mov bl, al ; 88 c3 ; 0xf3bbd floppy.c:1271
+ jmp short 03bf3h ; eb 32 ; 0xf3bbf floppy.c:1273
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bc1 floppy.c:1275
+ jne short 03bf3h ; 75 2c ; 0xf3bc5
+ cmp bh, 009h ; 80 ff 09 ; 0xf3bc7 floppy.c:1276
+ jne short 03bceh ; 75 02 ; 0xf3bca
+ jmp short 03bbdh ; eb ef ; 0xf3bcc
+ cmp bh, 012h ; 80 ff 12 ; 0xf3bce floppy.c:1277
+ jne short 03bf3h ; 75 20 ; 0xf3bd1
+ mov bl, ah ; 88 e3 ; 0xf3bd3 floppy.c:1279
+ jmp short 03bf3h ; eb 1c ; 0xf3bd5 floppy.c:1282
+ cmp byte [bp-002h], 04fh ; 80 7e fe 4f ; 0xf3bd7 floppy.c:1284
+ jne short 03bf3h ; 75 16 ; 0xf3bdb
+ cmp bh, 009h ; 80 ff 09 ; 0xf3bdd floppy.c:1285
+ jne short 03be4h ; 75 02 ; 0xf3be0
+ jmp short 03bbdh ; eb d9 ; 0xf3be2
+ cmp bh, 012h ; 80 ff 12 ; 0xf3be4 floppy.c:1286
+ jne short 03bebh ; 75 02 ; 0xf3be7
+ jmp short 03bd3h ; eb e8 ; 0xf3be9
+ cmp bh, 024h ; 80 ff 24 ; 0xf3beb floppy.c:1288
+ jne short 03bf3h ; 75 03 ; 0xf3bee
+ or bl, 0d0h ; 80 cb d0 ; 0xf3bf0 floppy.c:1290
+ movzx ax, bl ; 0f b6 c3 ; 0xf3bf3 floppy.c:1299
+ sar ax, 004h ; c1 f8 04 ; 0xf3bf6
+ test AL, strict byte 001h ; a8 01 ; 0xf3bf9
+ je near 03b01h ; 0f 84 02 ff ; 0xf3bfb
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3bff floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3c02
+ mov si, word [bp-008h] ; 8b 76 f8 ; 0xf3c04
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3c07
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3c0a floppy.c:1312
+ movzx ax, dl ; 0f b6 c2 ; 0xf3c0f floppy.c:1313
+ call 03c4eh ; e8 39 00 ; 0xf3c12
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3c15
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3c18 floppy.c:1316
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3c1c floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c1f
+ mov es, ax ; 8e c0 ; 0xf3c22
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c24
+ jmp near 035d9h ; e9 ae f9 ; 0xf3c28
+ mov bx, 00db2h ; bb b2 0d ; 0xf3c2b floppy.c:1322
+ mov cx, ds ; 8c d9 ; 0xf3c2e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c30
+ call 019d3h ; e8 9d dd ; 0xf3c33
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3c36
+ shr ax, 008h ; c1 e8 08 ; 0xf3c39
+ push ax ; 50 ; 0xf3c3c
+ push 00287h ; 68 87 02 ; 0xf3c3d
+ push 002f4h ; 68 f4 02 ; 0xf3c40
+ push strict byte 00004h ; 6a 04 ; 0xf3c43
+ call 01a14h ; e8 cc dd ; 0xf3c45
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c48
+ jmp near 03312h ; e9 c4 f6 ; 0xf3c4b floppy.c:68
+ ; disGetNextSymbol 0xf3c4e LB 0x63f7 -> off=0x0 cb=000000000000002f uValue=00000000000f264e 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3c4e LB 0x2f
+ push bx ; 53 ; 0xf3c4e floppyt.c:94
+ push dx ; 52 ; 0xf3c4f
+ push bp ; 55 ; 0xf3c50
+ mov bp, sp ; 89 e5 ; 0xf3c51
+ mov dl, al ; 88 c2 ; 0xf3c53
+ xor ax, ax ; 31 c0 ; 0xf3c55 floppyt.c:98
+ jmp short 03c5fh ; eb 06 ; 0xf3c57
+ inc ax ; 40 ; 0xf3c59 floppyt.c:100
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3c5a
+ jnc short 03c76h ; 73 17 ; 0xf3c5d
+ mov bx, ax ; 89 c3 ; 0xf3c5f
+ add bx, ax ; 01 c3 ; 0xf3c61
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3c63
+ jne short 03c59h ; 75 f0 ; 0xf3c67
+ movzx ax, byte [word bx+0005ch] ; 0f b6 87 5c 00 ; 0xf3c69
+ imul ax, ax, strict byte 0000dh ; 6b c0 0d ; 0xf3c6e
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3c71
+ jmp short 03c79h ; eb 03 ; 0xf3c74
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3c76 floppyt.c:103
+ pop bp ; 5d ; 0xf3c79 floppyt.c:104
+ pop dx ; 5a ; 0xf3c7a
+ pop bx ; 5b ; 0xf3c7b
+ retn ; c3 ; 0xf3c7c
+ ; disGetNextSymbol 0xf3c7d LB 0x63c8 -> off=0x0 cb=0000000000000007 uValue=00000000000f267d 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3c7d LB 0x7
+ push bp ; 55 ; 0xf3c7d eltorito.c:126
+ mov bp, sp ; 89 e5 ; 0xf3c7e
+ xor ax, ax ; 31 c0 ; 0xf3c80 eltorito.c:129
+ pop bp ; 5d ; 0xf3c82
+ retn ; c3 ; 0xf3c83
+ ; disGetNextSymbol 0xf3c84 LB 0x63c1 -> off=0x0 cb=0000000000000017 uValue=00000000000f2684 'cdemu_init'
+cdemu_init: ; 0xf3c84 LB 0x17
+ push bp ; 55 ; 0xf3c84 eltorito.c:155
+ mov bp, sp ; 89 e5 ; 0xf3c85
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c87 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c8a
+ mov es, ax ; 8e c0 ; 0xf3c8d
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c8f
+ mov bx, 00366h ; bb 66 03 ; 0xf3c92 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3c95
+ pop bp ; 5d ; 0xf3c99 eltorito.c:162
+ retn ; c3 ; 0xf3c9a
+ ; disGetNextSymbol 0xf3c9b LB 0x63aa -> off=0x0 cb=0000000000000016 uValue=00000000000f269b 'cdemu_isactive'
+cdemu_isactive: ; 0xf3c9b LB 0x16
+ push bp ; 55 ; 0xf3c9b eltorito.c:164
+ mov bp, sp ; 89 e5 ; 0xf3c9c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c9e eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ca1
+ mov es, ax ; 8e c0 ; 0xf3ca4
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3ca6
+ mov bx, 00366h ; bb 66 03 ; 0xf3ca9 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cac
+ pop bp ; 5d ; 0xf3caf eltorito.c:170
+ retn ; c3 ; 0xf3cb0
+ ; disGetNextSymbol 0xf3cb1 LB 0x6394 -> off=0x0 cb=0000000000000016 uValue=00000000000f26b1 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3cb1 LB 0x16
+ push bp ; 55 ; 0xf3cb1 eltorito.c:172
+ mov bp, sp ; 89 e5 ; 0xf3cb2
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3cb4 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3cb7
+ mov es, ax ; 8e c0 ; 0xf3cba
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3cbc
+ mov bx, 00368h ; bb 68 03 ; 0xf3cbf eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3cc2
+ pop bp ; 5d ; 0xf3cc5 eltorito.c:178
+ retn ; c3 ; 0xf3cc6
+ ; disGetNextSymbol 0xf3cc7 LB 0x637e -> off=0x0 cb=000000000000017a uValue=00000000000f26c7 'int13_eltorito'
+int13_eltorito: ; 0xf3cc7 LB 0x17a
+ push bp ; 55 ; 0xf3cc7 eltorito.c:184
+ mov bp, sp ; 89 e5 ; 0xf3cc8
+ push si ; 56 ; 0xf3cca
+ push di ; 57 ; 0xf3ccb
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3ccc eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3ccf
+ mov es, ax ; 8e c0 ; 0xf3cd2
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3cd4
+ mov bx, 00366h ; bb 66 03 ; 0xf3cd7 eltorito.c:190
+ mov si, word [bp+016h] ; 8b 76 16 ; 0xf3cda eltorito.c:196
+ shr si, 008h ; c1 ee 08 ; 0xf3cdd
+ cmp si, strict byte 0004bh ; 83 fe 4b ; 0xf3ce0
+ jc short 03cefh ; 72 0a ; 0xf3ce3
+ jbe short 03d15h ; 76 2e ; 0xf3ce5
+ cmp si, strict byte 0004dh ; 83 fe 4d ; 0xf3ce7
+ jbe short 03cf6h ; 76 0a ; 0xf3cea
+ jmp near 03e07h ; e9 18 01 ; 0xf3cec
+ cmp si, strict byte 0004ah ; 83 fe 4a ; 0xf3cef
+ jne near 03e07h ; 0f 85 11 01 ; 0xf3cf2
+ mov bx, 00db2h ; bb b2 0d ; 0xf3cf6 eltorito.c:202
+ mov cx, ds ; 8c d9 ; 0xf3cf9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3cfb
+ call 019d3h ; e8 d2 dc ; 0xf3cfe
+ push word [bp+016h] ; ff 76 16 ; 0xf3d01
+ push 0030eh ; 68 0e 03 ; 0xf3d04
+ push 0031dh ; 68 1d 03 ; 0xf3d07
+ push strict byte 00004h ; 6a 04 ; 0xf3d0a
+ call 01a14h ; e8 05 dd ; 0xf3d0c
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3d0f
+ jmp near 03e22h ; e9 0d 01 ; 0xf3d12 eltorito.c:203
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3d15 eltorito.c:41
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d18
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3d1b
+ inc si ; 46 ; 0xf3d1f eltorito.c:210
+ mov ax, es ; 8c c0 ; 0xf3d20 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3d22
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3d24
+ mov es, ax ; 8e c0 ; 0xf3d28 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d2a
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d2d eltorito.c:211
+ inc si ; 46 ; 0xf3d30
+ inc si ; 46 ; 0xf3d31
+ mov es, di ; 8e c7 ; 0xf3d32 eltorito.c:41
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3d34
+ mov es, ax ; 8e c0 ; 0xf3d38 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d3a
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d3d eltorito.c:212
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3d40
+ mov es, di ; 8e c7 ; 0xf3d43 eltorito.c:41
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3d45
+ mov es, ax ; 8e c0 ; 0xf3d49 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d4b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d4e eltorito.c:213
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3d51
+ mov es, di ; 8e c7 ; 0xf3d54 eltorito.c:61
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3d56
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3d5a
+ mov es, ax ; 8e c0 ; 0xf3d5e eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d60
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3d63
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d67 eltorito.c:214
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3d6a
+ mov es, di ; 8e c7 ; 0xf3d6d eltorito.c:51
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3d6f
+ mov es, ax ; 8e c0 ; 0xf3d73 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d75
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d78 eltorito.c:215
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3d7b
+ mov es, di ; 8e c7 ; 0xf3d7e eltorito.c:51
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3d80
+ mov es, ax ; 8e c0 ; 0xf3d84 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d86
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d89 eltorito.c:216
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3d8c
+ mov es, di ; 8e c7 ; 0xf3d8f eltorito.c:51
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3d91
+ mov es, ax ; 8e c0 ; 0xf3d95 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d97
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d9a eltorito.c:217
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3d9d
+ mov es, di ; 8e c7 ; 0xf3da0 eltorito.c:51
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3da2
+ mov es, ax ; 8e c0 ; 0xf3da6 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3da8
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dab eltorito.c:218
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3dae
+ mov es, di ; 8e c7 ; 0xf3db1 eltorito.c:41
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3db3
+ mov es, ax ; 8e c0 ; 0xf3db7 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3db9
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dbc eltorito.c:219
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3dbf
+ mov es, di ; 8e c7 ; 0xf3dc2 eltorito.c:41
+ mov dl, byte [es:bx+014h] ; 26 8a 57 14 ; 0xf3dc4
+ mov es, ax ; 8e c0 ; 0xf3dc8 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3dca
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3dcd eltorito.c:220
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3dd0
+ mov dx, ax ; 89 c2 ; 0xf3dd3 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3dd5
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3dd7
+ mov es, dx ; 8e c2 ; 0xf3ddb eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3ddd
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3de0 eltorito.c:223
+ jne short 03dech ; 75 06 ; 0xf3de4
+ mov es, di ; 8e c7 ; 0xf3de6 eltorito.c:225
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3de8
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3dec eltorito.c:228
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3df0
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3df3
+ mov es, ax ; 8e c0 ; 0xf3df6
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3df8
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3dfc
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3e00
+ pop di ; 5f ; 0xf3e03
+ pop si ; 5e ; 0xf3e04
+ pop bp ; 5d ; 0xf3e05
+ retn ; c3 ; 0xf3e06
+ mov bx, 00db2h ; bb b2 0d ; 0xf3e07 eltorito.c:232
+ mov cx, ds ; 8c d9 ; 0xf3e0a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3e0c
+ call 019d3h ; e8 c1 db ; 0xf3e0f
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf3e12
+ shr bx, 008h ; c1 eb 08 ; 0xf3e15
+ push bx ; 53 ; 0xf3e18
+ push 0030eh ; 68 0e 03 ; 0xf3e19
+ push 00345h ; 68 45 03 ; 0xf3e1c
+ jmp near 03d0ah ; e9 e8 fe ; 0xf3e1f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3e22 eltorito.c:238
+ xor ah, ah ; 30 e4 ; 0xf3e25
+ or ah, 001h ; 80 cc 01 ; 0xf3e27
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3e2a
+ shr ax, 008h ; c1 e8 08 ; 0xf3e2d eltorito.c:239
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3e30 eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e33
+ mov es, dx ; 8e c2 ; 0xf3e36
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3e38
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3e3b eltorito.c:240
+ jmp short 03e00h ; eb bf ; 0xf3e3f eltorito.c:241
+ ; disGetNextSymbol 0xf3e41 LB 0x6204 -> off=0x0 cb=0000000000000033 uValue=00000000000f2841 'device_is_cdrom'
+device_is_cdrom: ; 0xf3e41 LB 0x33
+ push bx ; 53 ; 0xf3e41 eltorito.c:256
+ push dx ; 52 ; 0xf3e42
+ push bp ; 55 ; 0xf3e43
+ mov bp, sp ; 89 e5 ; 0xf3e44
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e46 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3e49
+ mov es, dx ; 8e c2 ; 0xf3e4c
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3e4e
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf3e51 eltorito.c:262
+ jc short 03e59h ; 72 04 ; 0xf3e53
+ xor ax, ax ; 31 c0 ; 0xf3e55 eltorito.c:263
+ jmp short 03e70h ; eb 17 ; 0xf3e57
+ xor ah, ah ; 30 e4 ; 0xf3e59 eltorito.c:268
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3e5b
+ mov es, bx ; 8e c3 ; 0xf3e5e
+ mov bx, ax ; 89 c3 ; 0xf3e60
+ add bx, 00122h ; 81 c3 22 01 ; 0xf3e62
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3e66
+ jne short 03e55h ; 75 e8 ; 0xf3e6b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e6d eltorito.c:269
+ pop bp ; 5d ; 0xf3e70 eltorito.c:272
+ pop dx ; 5a ; 0xf3e71
+ pop bx ; 5b ; 0xf3e72
+ retn ; c3 ; 0xf3e73
+ ; disGetNextSymbol 0xf3e74 LB 0x61d1 -> off=0x0 cb=00000000000003ab uValue=00000000000f2874 'cdrom_boot'
+cdrom_boot: ; 0xf3e74 LB 0x3ab
+ push bp ; 55 ; 0xf3e74 eltorito.c:282
+ mov bp, sp ; 89 e5 ; 0xf3e75
+ push bx ; 53 ; 0xf3e77
+ push cx ; 51 ; 0xf3e78
+ push dx ; 52 ; 0xf3e79
+ push si ; 56 ; 0xf3e7a
+ push di ; 57 ; 0xf3e7b
+ sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3e7c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3e80 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3e83
+ mov es, ax ; 8e c0 ; 0xf3e86
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3e88
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3e8b eltorito.c:49
+ mov si, 00366h ; be 66 03 ; 0xf3e8e eltorito.c:295
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf3e91
+ mov word [bp-012h], 00122h ; c7 46 ee 22 01 ; 0xf3e94 eltorito.c:296
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3e99
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3e9c eltorito.c:299
+ jmp short 03eabh ; eb 09 ; 0xf3ea0
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf3ea2 eltorito.c:302
+ cmp byte [bp-00eh], 010h ; 80 7e f2 10 ; 0xf3ea5
+ jnc short 03eb6h ; 73 0b ; 0xf3ea9
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3eab
+ call 03e41h ; e8 8f ff ; 0xf3eaf
+ test ax, ax ; 85 c0 ; 0xf3eb2
+ je short 03ea2h ; 74 ec ; 0xf3eb4
+ cmp byte [bp-00eh], 010h ; 80 7e f2 10 ; 0xf3eb6 eltorito.c:305
+ jc short 03ec2h ; 72 06 ; 0xf3eba
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf3ebc eltorito.c:306
+ jmp near 04215h ; e9 53 03 ; 0xf3ebf
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3ec2 eltorito.c:309
+ xor bx, bx ; 31 db ; 0xf3ec5
+ mov dx, ss ; 8c d2 ; 0xf3ec7
+ lea ax, [bp-026h] ; 8d 46 da ; 0xf3ec9
+ call 09fb0h ; e8 e1 60 ; 0xf3ecc
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3ecf eltorito.c:310
+ mov ax, strict word 00011h ; b8 11 00 ; 0xf3ed4 eltorito.c:311
+ xor dx, dx ; 31 d2 ; 0xf3ed7
+ xchg ah, al ; 86 c4 ; 0xf3ed9
+ xchg dh, dl ; 86 d6 ; 0xf3edb
+ xchg dx, ax ; 92 ; 0xf3edd
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3ede
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3ee1
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3ee4 eltorito.c:312
+ xchg ah, al ; 86 c4 ; 0xf3ee7
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3ee9
+ les bx, [bp-012h] ; c4 5e ee ; 0xf3eec eltorito.c:314
+ db 066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 008h
+ ; mov dword [es:bx+00eh], strict dword 008000001h ; 66 26 c7 47 0e 01 00 00 08; 0xf3eef
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3ef8 eltorito.c:317
+ jmp short 03f07h ; eb 09 ; 0xf3efc
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf3efe eltorito.c:322
+ cmp byte [bp-00ch], 004h ; 80 7e f4 04 ; 0xf3f01
+ jnbe short 03f3dh ; 77 36 ; 0xf3f05
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3f07
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3f0b
+ les bx, [bp-012h] ; c4 5e ee ; 0xf3f0e
+ add bx, ax ; 01 c3 ; 0xf3f11
+ movzx di, byte [es:bx+022h] ; 26 0f b6 7f 22 ; 0xf3f13
+ add di, di ; 01 ff ; 0xf3f18
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3f1a
+ push SS ; 16 ; 0xf3f1e
+ push dx ; 52 ; 0xf3f1f
+ push strict byte 00001h ; 6a 01 ; 0xf3f20
+ push strict byte 00000h ; 6a 00 ; 0xf3f22
+ push 00800h ; 68 00 08 ; 0xf3f24
+ push strict byte 00000h ; 6a 00 ; 0xf3f27
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3f29
+ mov cx, ss ; 8c d1 ; 0xf3f2d
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3f2f
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3f32
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3f35
+ test ax, ax ; 85 c0 ; 0xf3f39
+ jne short 03efeh ; 75 c1 ; 0xf3f3b
+ test ax, ax ; 85 c0 ; 0xf3f3d eltorito.c:323
+ je short 03f47h ; 74 06 ; 0xf3f3f
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf3f41 eltorito.c:324
+ jmp near 04215h ; e9 ce 02 ; 0xf3f44
+ cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3f47 eltorito.c:327
+ je short 03f54h ; 74 06 ; 0xf3f4c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3f4e eltorito.c:328
+ jmp near 04215h ; e9 c1 02 ; 0xf3f51
+ xor di, di ; 31 ff ; 0xf3f54 eltorito.c:330
+ jmp short 03f5eh ; eb 06 ; 0xf3f56
+ inc di ; 47 ; 0xf3f58 eltorito.c:332
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3f59
+ jnc short 03f6eh ; 73 10 ; 0xf3f5c
+ mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3f5e
+ cmp al, byte [di+00dbah] ; 3a 85 ba 0d ; 0xf3f62
+ je short 03f58h ; 74 f0 ; 0xf3f66
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf3f68
+ jmp near 04215h ; e9 a7 02 ; 0xf3f6b
+ xor di, di ; 31 ff ; 0xf3f6e eltorito.c:334
+ jmp short 03f78h ; eb 06 ; 0xf3f70
+ inc di ; 47 ; 0xf3f72 eltorito.c:336
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3f73
+ jnc short 03f88h ; 73 10 ; 0xf3f76
+ mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3f78
+ cmp al, byte [di+00dc0h] ; 3a 85 c0 0d ; 0xf3f7c
+ je short 03f72h ; 74 f0 ; 0xf3f80
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf3f82
+ jmp near 04215h ; e9 8d 02 ; 0xf3f85
+ mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3f88 eltorito.c:339
+ mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3f8c
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f90 eltorito.c:343
+ xchg ah, al ; 86 c4 ; 0xf3f95 eltorito.c:344
+ xchg dh, dl ; 86 d6 ; 0xf3f97
+ xchg dx, ax ; 92 ; 0xf3f99
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3f9a
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3f9d
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3fa0 eltorito.c:345
+ xchg ah, al ; 86 c4 ; 0xf3fa3
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3fa5
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3fa8 eltorito.c:352
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf3fac
+ les di, [bp-012h] ; c4 7e ee ; 0xf3faf
+ add di, ax ; 01 c7 ; 0xf3fb2
+ movzx di, byte [es:di+022h] ; 26 0f b6 7d 22 ; 0xf3fb4
+ add di, di ; 01 ff ; 0xf3fb9
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3fbb
+ push SS ; 16 ; 0xf3fbf
+ push dx ; 52 ; 0xf3fc0
+ push strict byte 00001h ; 6a 01 ; 0xf3fc1
+ push strict byte 00000h ; 6a 00 ; 0xf3fc3
+ push 00800h ; 68 00 08 ; 0xf3fc5
+ push strict byte 00000h ; 6a 00 ; 0xf3fc8
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf3fca
+ mov cx, ss ; 8c d1 ; 0xf3fce
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3fd0
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3fd3
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3fd6
+ test ax, ax ; 85 c0 ; 0xf3fda eltorito.c:353
+ je short 03fe4h ; 74 06 ; 0xf3fdc
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3fde eltorito.c:354
+ jmp near 04215h ; e9 31 02 ; 0xf3fe1
+ cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3fe4 eltorito.c:359
+ je short 03ff1h ; 74 06 ; 0xf3fe9
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf3feb eltorito.c:360
+ jmp near 04215h ; e9 24 02 ; 0xf3fee
+ cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3ff1 eltorito.c:361
+ je short 03ffeh ; 74 06 ; 0xf3ff6
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf3ff8 eltorito.c:362
+ jmp near 04215h ; e9 17 02 ; 0xf3ffb
+ cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3ffe eltorito.c:363
+ je short 0400bh ; 74 06 ; 0xf4003
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4005 eltorito.c:364
+ jmp near 04215h ; e9 0a 02 ; 0xf4008
+ cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf400b eltorito.c:365
+ jne short 04005h ; 75 f3 ; 0xf4010
+ cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf4012 eltorito.c:366
+ je short 0401fh ; 74 06 ; 0xf4017
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf4019 eltorito.c:370
+ jmp near 04215h ; e9 f6 01 ; 0xf401c
+ mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf401f eltorito.c:372
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4023
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf4026
+ cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf402a eltorito.c:373
+ jne short 04038h ; 75 07 ; 0xf402f
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf4031 eltorito.c:376
+ jmp short 0404bh ; eb 13 ; 0xf4036 eltorito.c:378
+ cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf4038
+ jnc short 04046h ; 73 07 ; 0xf403d
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf403f eltorito.c:379
+ jmp short 0404bh ; eb 05 ; 0xf4044 eltorito.c:380
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf4046 eltorito.c:381
+ movzx di, byte [bp-00eh] ; 0f b6 7e f2 ; 0xf404b eltorito.c:383
+ mov ax, di ; 89 f8 ; 0xf404f
+ cwd ; 99 ; 0xf4051
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf4052
+ sar ax, 1 ; d1 f8 ; 0xf4054
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4056
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf4059
+ mov ax, di ; 89 f8 ; 0xf405d eltorito.c:384
+ cwd ; 99 ; 0xf405f
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf4060
+ idiv bx ; f7 fb ; 0xf4063
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf4065
+ mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf4069 eltorito.c:386
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf406d
+ test ax, ax ; 85 c0 ; 0xf4070 eltorito.c:387
+ jne short 04079h ; 75 05 ; 0xf4072
+ mov word [bp-014h], 007c0h ; c7 46 ec c0 07 ; 0xf4074 eltorito.c:388
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf4079 eltorito.c:390
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf407c
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf407f
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf4083 eltorito.c:391
+ mov di, word [bp-00800h] ; 8b be 00 f8 ; 0xf4089 eltorito.c:393
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf408d eltorito.c:394
+ test di, di ; 85 ff ; 0xf4091 eltorito.c:399
+ je short 0409bh ; 74 06 ; 0xf4093
+ cmp di, 00400h ; 81 ff 00 04 ; 0xf4095
+ jbe short 040a1h ; 76 06 ; 0xf4099
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf409b eltorito.c:400
+ jmp near 04215h ; e9 74 01 ; 0xf409e
+ mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf40a1 eltorito.c:402
+ mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf40a5
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf40a9 eltorito.c:403
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf40ad
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf40b1 eltorito.c:409
+ xchg ah, al ; 86 c4 ; 0xf40b6 eltorito.c:410
+ xchg dh, dl ; 86 d6 ; 0xf40b8
+ xchg dx, ax ; 92 ; 0xf40ba
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf40bb
+ mov word [bp-022h], dx ; 89 56 de ; 0xf40be
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf40c1 eltorito.c:411
+ shr dx, 002h ; c1 ea 02 ; 0xf40c4
+ inc dx ; 42 ; 0xf40c7
+ mov ax, dx ; 89 d0 ; 0xf40c8
+ xchg ah, al ; 86 c4 ; 0xf40ca
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf40cc
+ les bx, [bp-012h] ; c4 5e ee ; 0xf40cf eltorito.c:413
+ mov word [es:bx+00eh], dx ; 26 89 57 0e ; 0xf40d2
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf40d6 eltorito.c:414
+ mov ax, di ; 89 f8 ; 0xf40dc eltorito.c:416
+ sal ax, 009h ; c1 e0 09 ; 0xf40de
+ mov dx, 00800h ; ba 00 08 ; 0xf40e1
+ sub dx, ax ; 29 c2 ; 0xf40e4
+ mov ax, dx ; 89 d0 ; 0xf40e6
+ and ah, 007h ; 80 e4 07 ; 0xf40e8
+ mov word [es:bx+020h], ax ; 26 89 47 20 ; 0xf40eb
+ movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf40ef eltorito.c:418
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf40f3
+ add bx, word [bp-012h] ; 03 5e ee ; 0xf40f6
+ movzx ax, byte [es:bx+022h] ; 26 0f b6 47 22 ; 0xf40f9
+ add ax, ax ; 01 c0 ; 0xf40fe
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4100
+ push word [bp-014h] ; ff 76 ec ; 0xf4103
+ push dword 000000001h ; 66 6a 01 ; 0xf4106
+ mov ax, di ; 89 f8 ; 0xf4109
+ xor di, di ; 31 ff ; 0xf410b
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf410d
+ sal ax, 1 ; d1 e0 ; 0xf4110
+ rcl di, 1 ; d1 d7 ; 0xf4112
+ loop 04110h ; e2 fa ; 0xf4114
+ push di ; 57 ; 0xf4116
+ push ax ; 50 ; 0xf4117
+ push strict byte 00000h ; 6a 00 ; 0xf4118
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf411a
+ mov cx, ss ; 8c d1 ; 0xf411e
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf4120
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4123
+ mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf4126
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4129
+ les bx, [bp-012h] ; c4 5e ee ; 0xf412d eltorito.c:420
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf4130
+ test ax, ax ; 85 c0 ; 0xf4136 eltorito.c:422
+ je short 04140h ; 74 06 ; 0xf4138
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf413a eltorito.c:423
+ jmp near 04215h ; e9 d5 00 ; 0xf413d
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4140 eltorito.c:428
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf4143
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf4147
+ jc short 04157h ; 72 0c ; 0xf4149
+ jbe short 0416fh ; 76 22 ; 0xf414b
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf414d
+ je short 04185h ; 74 34 ; 0xf414f
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf4151
+ je short 0417ah ; 74 25 ; 0xf4153
+ jmp short 041cch ; eb 75 ; 0xf4155
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf4157
+ jne short 041cch ; 75 71 ; 0xf4159
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf415b eltorito.c:430
+ db 066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 00fh, 000h
+ ; mov dword [es:si+012h], strict dword 0000f0050h ; 66 26 c7 44 12 50 00 0f 00; 0xf415e
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf4167 eltorito.c:432
+ jmp short 041cch ; eb 5d ; 0xf416d eltorito.c:433
+ db 066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 012h, 000h
+ ; mov dword [es:si+012h], strict dword 000120050h ; 66 26 c7 44 12 50 00 12 00; 0xf416f eltorito.c:435
+ jmp short 04167h ; eb ed ; 0xf4178
+ db 066h, 026h, 0c7h, 044h, 012h, 050h, 000h, 024h, 000h
+ ; mov dword [es:si+012h], strict dword 000240050h ; 66 26 c7 44 12 50 00 24 00; 0xf417a eltorito.c:440
+ jmp short 04167h ; eb e2 ; 0xf4183
+ mov bx, 001c4h ; bb c4 01 ; 0xf4185 eltorito.c:38
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4188
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf418b
+ and AL, strict byte 03fh ; 24 3f ; 0xf418e eltorito.c:39
+ xor ah, ah ; 30 e4 ; 0xf4190
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4192
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf4195
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4199 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf419c
+ and ax, 000c0h ; 25 c0 00 ; 0xf419f eltorito.c:39
+ mov dx, ax ; 89 c2 ; 0xf41a2
+ sal dx, 002h ; c1 e2 02 ; 0xf41a4
+ mov bx, 001c5h ; bb c5 01 ; 0xf41a7 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41aa
+ xor ah, ah ; 30 e4 ; 0xf41ad eltorito.c:39
+ add ax, dx ; 01 d0 ; 0xf41af
+ inc ax ; 40 ; 0xf41b1
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf41b2
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf41b5
+ mov di, 001c3h ; bf c3 01 ; 0xf41b9 eltorito.c:38
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf41bc
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf41bf
+ xor ah, ah ; 30 e4 ; 0xf41c2 eltorito.c:39
+ inc ax ; 40 ; 0xf41c4
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf41c5
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf41c8
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf41cc eltorito.c:453
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf41cf
+ je short 041fch ; 74 26 ; 0xf41d4
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf41d6 eltorito.c:455
+ jne short 041eeh ; 75 11 ; 0xf41db
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf41dd eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf41e0
+ mov es, ax ; 8e c0 ; 0xf41e3
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf41e5
+ or AL, strict byte 041h ; 0c 41 ; 0xf41e8 eltorito.c:39
+ mov di, bx ; 89 df ; 0xf41ea eltorito.c:43
+ jmp short 041f9h ; eb 0b ; 0xf41ec eltorito.c:457
+ mov di, 00304h ; bf 04 03 ; 0xf41ee eltorito.c:38
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf41f1
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf41f4
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf41f7 eltorito.c:39
+ mov byte [es:di], al ; 26 88 05 ; 0xf41f9 eltorito.c:43
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf41fc eltorito.c:462
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf41ff
+ je short 0420ah ; 74 04 ; 0xf4204
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf4206 eltorito.c:463
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf420a eltorito.c:466
+ movzx ax, byte [es:si+002h] ; 26 0f b6 44 02 ; 0xf420d
+ sal ax, 008h ; c1 e0 08 ; 0xf4212
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf4215 eltorito.c:467
+ pop di ; 5f ; 0xf4218
+ pop si ; 5e ; 0xf4219
+ pop dx ; 5a ; 0xf421a
+ pop cx ; 59 ; 0xf421b
+ pop bx ; 5b ; 0xf421c
+ pop bp ; 5d ; 0xf421d
+ retn ; c3 ; 0xf421e
+ ; disGetNextSymbol 0xf421f LB 0x5e26 -> off=0x59 cb=00000000000005d8 uValue=00000000000f2c78 'int13_cdemu'
+ db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
+ db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 033h, 048h, 023h
+ db 043h, 06dh, 043h, 091h, 043h, 062h, 043h, 091h, 043h, 062h, 043h, 08ah, 045h, 047h, 043h, 033h
+ db 048h, 033h, 048h, 047h, 043h, 047h, 043h, 047h, 043h, 047h, 043h, 047h, 043h, 032h, 046h, 047h
+ db 043h, 033h, 048h, 03bh, 046h, 04eh, 046h, 033h, 048h, 04eh, 046h, 033h, 048h, 033h, 048h, 04eh
+ db 046h, 0f7h, 047h, 033h, 048h, 033h, 048h, 033h, 048h
+int13_cdemu: ; 0xf4278 LB 0x5d8
+ push bp ; 55 ; 0xf4278 eltorito.c:477
+ mov bp, sp ; 89 e5 ; 0xf4279
+ push si ; 56 ; 0xf427b
+ push di ; 57 ; 0xf427c
+ sub sp, strict byte 00038h ; 83 ec 38 ; 0xf427d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4280 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4283
+ mov es, ax ; 8e c0 ; 0xf4286
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4288
+ mov dx, 00366h ; ba 66 03 ; 0xf428b eltorito.c:493
+ mov cx, ax ; 89 c1 ; 0xf428e
+ mov bx, dx ; 89 d3 ; 0xf4290
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4292
+ mov si, 00122h ; be 22 01 ; 0xf4295 eltorito.c:494
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf4298
+ mov es, ax ; 8e c0 ; 0xf429b eltorito.c:501
+ mov di, dx ; 89 d7 ; 0xf429d
+ mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf429f
+ add al, al ; 00 c0 ; 0xf42a3
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf42a5
+ mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf42a8 eltorito.c:502
+ add byte [bp-006h], al ; 00 46 fa ; 0xf42ac
+ mov di, strict word 00074h ; bf 74 00 ; 0xf42af eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf42b2
+ mov es, ax ; 8e c0 ; 0xf42b5
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf42b7
+ mov es, cx ; 8e c1 ; 0xf42bb eltorito.c:507
+ mov di, dx ; 89 d7 ; 0xf42bd
+ cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf42bf
+ je short 042d3h ; 74 0e ; 0xf42c3
+ movzx dx, byte [es:di+002h] ; 26 0f b6 55 02 ; 0xf42c5
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf42ca
+ xor ah, ah ; 30 e4 ; 0xf42cd
+ cmp dx, ax ; 39 c2 ; 0xf42cf
+ je short 042fch ; 74 29 ; 0xf42d1
+ mov bx, 00db2h ; bb b2 0d ; 0xf42d3 eltorito.c:508
+ mov cx, ds ; 8c d9 ; 0xf42d6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf42d8
+ call 019d3h ; e8 f5 d6 ; 0xf42db
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf42de
+ xor ah, ah ; 30 e4 ; 0xf42e1
+ push ax ; 50 ; 0xf42e3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42e4
+ shr ax, 008h ; c1 e8 08 ; 0xf42e7
+ push ax ; 50 ; 0xf42ea
+ push 0035eh ; 68 5e 03 ; 0xf42eb
+ push 0036ah ; 68 6a 03 ; 0xf42ee
+ push strict byte 00004h ; 6a 04 ; 0xf42f1
+ call 01a14h ; e8 1e d7 ; 0xf42f3
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf42f6
+ jmp near 04810h ; e9 14 05 ; 0xf42f9 eltorito.c:509
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42fc eltorito.c:512
+ shr ax, 008h ; c1 e8 08 ; 0xf42ff
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4302
+ jnbe near 04833h ; 0f 87 2a 05 ; 0xf4305
+ push CS ; 0e ; 0xf4309
+ pop ES ; 07 ; 0xf430a
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf430b
+ mov di, 0421fh ; bf 1f 42 ; 0xf430e
+ repne scasb ; f2 ae ; 0xf4311
+ sal cx, 1 ; d1 e1 ; 0xf4313
+ mov di, cx ; 89 cf ; 0xf4315
+ mov dx, word [cs:di+0423ch] ; 2e 8b 95 3c 42 ; 0xf4317
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf431c
+ xor ah, ah ; 30 e4 ; 0xf431f
+ jmp dx ; ff e2 ; 0xf4321
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4323 eltorito.c:515
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4327
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf432a
+ add si, ax ; 01 c6 ; 0xf432d
+ movzx bx, byte [es:si+022h] ; 26 0f b6 5c 22 ; 0xf432f
+ add bx, bx ; 01 db ; 0xf4334
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf4336
+ je near 04347h ; 0f 84 08 00 ; 0xf433b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf433f eltorito.c:517
+ call word [word bx+00076h] ; ff 97 76 00 ; 0xf4343
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf4347 eltorito.c:519
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf434b
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf434e
+ mov es, ax ; 8e c0 ; 0xf4351
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4353
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf4357
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf435b
+ pop di ; 5f ; 0xf435e
+ pop si ; 5e ; 0xf435f
+ pop bp ; 5d ; 0xf4360
+ retn ; c3 ; 0xf4361
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4362 eltorito.c:535
+ xor ah, ah ; 30 e4 ; 0xf4365
+ or ah, 003h ; 80 cc 03 ; 0xf4367
+ jmp near 04818h ; e9 ab 04 ; 0xf436a eltorito.c:536
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf436d eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4370
+ mov es, dx ; 8e c2 ; 0xf4373
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4375
+ movzx bx, dl ; 0f b6 da ; 0xf4378 eltorito.c:541
+ sal bx, 008h ; c1 e3 08 ; 0xf437b
+ or ax, bx ; 09 d8 ; 0xf437e
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4380
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4383 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4386
+ test dl, dl ; 84 d2 ; 0xf438a eltorito.c:545
+ je short 0434bh ; 74 bd ; 0xf438c
+ jmp near 0482ch ; e9 9b 04 ; 0xf438e eltorito.c:546
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4391 eltorito.c:553
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4394
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4398
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf439b eltorito.c:554
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf439f eltorito.c:555
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf43a3
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf43a6 eltorito.c:556
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf43aa
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf43ad
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf43b1
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf43b4 eltorito.c:558
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf43b7
+ mov word [bp-022h], ax ; 89 46 de ; 0xf43ba
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf43bd eltorito.c:559
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf43c0
+ sal bx, 002h ; c1 e3 02 ; 0xf43c4
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf43c7
+ shr ax, 008h ; c1 e8 08 ; 0xf43ca
+ or ax, bx ; 09 d8 ; 0xf43cd
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf43cf eltorito.c:560
+ shr bx, 008h ; c1 eb 08 ; 0xf43d2
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf43d5
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf43d8 eltorito.c:561
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf43db
+ jne short 043e4h ; 75 03 ; 0xf43df eltorito.c:569
+ jmp near 04347h ; e9 63 ff ; 0xf43e1 eltorito.c:570
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf43e4 eltorito.c:573
+ cmp bx, word [bp-00ch] ; 3b 5e f4 ; 0xf43e7
+ jnbe near 04810h ; 0f 87 22 04 ; 0xf43ea
+ cmp ax, dx ; 39 d0 ; 0xf43ee
+ jnc near 04810h ; 0f 83 1c 04 ; 0xf43f0
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf43f4
+ cmp dx, word [bp-00eh] ; 3b 56 f2 ; 0xf43f7
+ jnc near 04810h ; 0f 83 12 04 ; 0xf43fa
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf43fe eltorito.c:580
+ shr dx, 008h ; c1 ea 08 ; 0xf4401
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4404
+ jne short 0440ch ; 75 03 ; 0xf4407
+ jmp near 04347h ; e9 3b ff ; 0xf4409 eltorito.c:581
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf440c eltorito.c:583
+ shr dx, 004h ; c1 ea 04 ; 0xf440f
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf4412
+ add bx, dx ; 01 d3 ; 0xf4415
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf4417
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf441a eltorito.c:584
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf441d
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf4420
+ xor dl, dl ; 30 d2 ; 0xf4423 eltorito.c:587
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf4425
+ xor cx, cx ; 31 c9 ; 0xf4428
+ call 09f10h ; e8 e3 5a ; 0xf442a
+ xor bx, bx ; 31 db ; 0xf442d
+ add ax, word [bp-012h] ; 03 46 ee ; 0xf442f
+ adc dx, bx ; 11 da ; 0xf4432
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4434
+ xor cx, cx ; 31 c9 ; 0xf4437
+ call 09f10h ; e8 d4 5a ; 0xf4439
+ mov bx, dx ; 89 d3 ; 0xf443c
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf443e
+ dec dx ; 4a ; 0xf4441
+ mov word [bp-026h], strict word 00000h ; c7 46 da 00 00 ; 0xf4442
+ add dx, ax ; 01 c2 ; 0xf4447
+ adc bx, word [bp-026h] ; 13 5e da ; 0xf4449
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf444c eltorito.c:590
+ xor al, al ; 30 c0 ; 0xf444f
+ or ax, di ; 09 f8 ; 0xf4451
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4453
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf4456 eltorito.c:593
+ mov word [bp-02ah], bx ; 89 5e d6 ; 0xf4459
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf445c
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf445f
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf4462
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4465
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf4468
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf446b
+ mov ax, dx ; 89 d0 ; 0xf446e eltorito.c:594
+ xor ah, dh ; 30 f4 ; 0xf4470
+ and AL, strict byte 003h ; 24 03 ; 0xf4472
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4474
+ xor cx, cx ; 31 c9 ; 0xf4477 eltorito.c:597
+ mov ax, dx ; 89 d0 ; 0xf4479
+ add ax, di ; 01 f8 ; 0xf447b
+ mov dx, bx ; 89 da ; 0xf447d
+ adc dx, cx ; 11 ca ; 0xf447f
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf4481
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf4484
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf4487
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf448a
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf448d
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4490
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf4493
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf4496
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4499 eltorito.c:599
+ xor bx, bx ; 31 db ; 0xf449c
+ mov dx, ss ; 8c d2 ; 0xf449e
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf44a0
+ call 09fb0h ; e8 0a 5b ; 0xf44a3
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf44a6 eltorito.c:600
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf44ab eltorito.c:601
+ add ax, word [bp-02ch] ; 03 46 d4 ; 0xf44ae
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf44b1
+ adc dx, word [bp-028h] ; 13 56 d8 ; 0xf44b4
+ xchg ah, al ; 86 c4 ; 0xf44b7
+ xchg dh, dl ; 86 d6 ; 0xf44b9
+ xchg dx, ax ; 92 ; 0xf44bb
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf44bc
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf44bf
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf44c2 eltorito.c:602
+ sub ax, word [bp-02ch] ; 2b 46 d4 ; 0xf44c5
+ inc ax ; 40 ; 0xf44c8
+ xchg ah, al ; 86 c4 ; 0xf44c9
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf44cb
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf44ce eltorito.c:604
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf44d1
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf44d5 eltorito.c:605
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf44db eltorito.c:607
+ sal ax, 009h ; c1 e0 09 ; 0xf44de
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf44e1
+ mov dx, di ; 89 fa ; 0xf44e5 eltorito.c:608
+ xor dh, dh ; 30 f6 ; 0xf44e7
+ and dl, 003h ; 80 e2 03 ; 0xf44e9
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf44ec
+ sub bx, dx ; 29 d3 ; 0xf44ef
+ mov dx, bx ; 89 da ; 0xf44f1
+ sub dx, word [bp-024h] ; 2b 56 dc ; 0xf44f3
+ sal dx, 009h ; c1 e2 09 ; 0xf44f6
+ and dh, 007h ; 80 e6 07 ; 0xf44f9
+ mov word [es:si+020h], dx ; 26 89 54 20 ; 0xf44fc
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4500 eltorito.c:610
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4504
+ mov bx, si ; 89 f3 ; 0xf4507
+ add bx, dx ; 01 d3 ; 0xf4509
+ movzx dx, byte [es:bx+022h] ; 26 0f b6 57 22 ; 0xf450b
+ add dx, dx ; 01 d2 ; 0xf4510
+ mov word [bp-026h], dx ; 89 56 da ; 0xf4512
+ push word [bp-016h] ; ff 76 ea ; 0xf4515
+ push word [bp-014h] ; ff 76 ec ; 0xf4518
+ push strict byte 00001h ; 6a 01 ; 0xf451b
+ mov bx, di ; 89 fb ; 0xf451d
+ xor di, di ; 31 ff ; 0xf451f
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4521
+ sal bx, 1 ; d1 e3 ; 0xf4524
+ rcl di, 1 ; d1 d7 ; 0xf4526
+ loop 04524h ; e2 fa ; 0xf4528
+ push di ; 57 ; 0xf452a
+ push bx ; 53 ; 0xf452b
+ push ax ; 50 ; 0xf452c
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf452d
+ mov cx, ss ; 8c d1 ; 0xf4531
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4533
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4536
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf4539
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf453c
+ mov dx, ax ; 89 c2 ; 0xf4540
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4542 eltorito.c:612
+ db 066h, 026h, 0c7h, 044h, 01eh, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+01eh], strict dword 000000000h ; 66 26 c7 44 1e 00 00 00 00; 0xf4545
+ test al, al ; 84 c0 ; 0xf454e eltorito.c:613
+ je near 04347h ; 0f 84 f3 fd ; 0xf4550
+ mov bx, 00db2h ; bb b2 0d ; 0xf4554 eltorito.c:616
+ mov cx, ds ; 8c d9 ; 0xf4557
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4559
+ call 019d3h ; e8 74 d4 ; 0xf455c
+ movzx ax, dl ; 0f b6 c2 ; 0xf455f
+ push ax ; 50 ; 0xf4562
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4563
+ shr ax, 008h ; c1 e8 08 ; 0xf4566
+ push ax ; 50 ; 0xf4569
+ push 0035eh ; 68 5e 03 ; 0xf456a
+ push 003a0h ; 68 a0 03 ; 0xf456d
+ push strict byte 00004h ; 6a 04 ; 0xf4570
+ call 01a14h ; e8 9f d4 ; 0xf4572
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4575
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4578 eltorito.c:617
+ xor ah, ah ; 30 e4 ; 0xf457b
+ or ah, 002h ; 80 cc 02 ; 0xf457d
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4580
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf4583 eltorito.c:618
+ jmp near 0481bh ; e9 91 02 ; 0xf4587 eltorito.c:619
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf458a eltorito.c:626
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf458d
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4591
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4594 eltorito.c:627
+ dec dx ; 4a ; 0xf4598
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4599 eltorito.c:628
+ dec ax ; 48 ; 0xf459d
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf459e
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf45a1 eltorito.c:630
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf45a5 eltorito.c:631
+ and si, 0ff00h ; 81 e6 00 ff ; 0xf45a8
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf45ac eltorito.c:632
+ xor ah, ah ; 30 e4 ; 0xf45af
+ mov cx, dx ; 89 d1 ; 0xf45b1
+ xor ch, dh ; 30 f5 ; 0xf45b3
+ sal cx, 008h ; c1 e1 08 ; 0xf45b5
+ or ax, cx ; 09 c8 ; 0xf45b8
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf45ba
+ mov ax, dx ; 89 d0 ; 0xf45bd eltorito.c:633
+ shr ax, 002h ; c1 e8 02 ; 0xf45bf
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf45c2
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf45c4
+ and dl, 03fh ; 80 e2 3f ; 0xf45c7
+ or al, dl ; 08 d0 ; 0xf45ca
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf45cc
+ mov dl, al ; 88 c2 ; 0xf45cf
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf45d1
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf45d4 eltorito.c:634
+ xor dh, dh ; 30 f6 ; 0xf45d7
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf45d9
+ sal ax, 008h ; c1 e0 08 ; 0xf45dc
+ or dx, ax ; 09 c2 ; 0xf45df
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf45e1
+ mov ax, dx ; 89 d0 ; 0xf45e4 eltorito.c:635
+ xor al, dl ; 30 d0 ; 0xf45e6
+ or AL, strict byte 002h ; 0c 02 ; 0xf45e8
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf45ea
+ mov al, byte [es:bx+001h] ; 26 8a 47 01 ; 0xf45ed eltorito.c:638
+ mov word [bp+010h], si ; 89 76 10 ; 0xf45f1
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf45f4
+ je short 04614h ; 74 1c ; 0xf45f6
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf45f8
+ je short 0460ch ; 74 10 ; 0xf45fa
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf45fc
+ jne short 04619h ; 75 19 ; 0xf45fe
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4600 eltorito.c:639
+ xor al, al ; 30 c0 ; 0xf4603
+ or AL, strict byte 002h ; 0c 02 ; 0xf4605
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf4607
+ jmp short 04619h ; eb 0d ; 0xf460a
+ or si, strict byte 00004h ; 83 ce 04 ; 0xf460c eltorito.c:640
+ mov word [bp+010h], si ; 89 76 10 ; 0xf460f
+ jmp short 04619h ; eb 05 ; 0xf4612
+ or si, strict byte 00005h ; 83 ce 05 ; 0xf4614 eltorito.c:641
+ jmp short 0460fh ; eb f6 ; 0xf4617
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4619 eltorito.c:645
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf461c
+ jnc near 04347h ; 0f 83 22 fd ; 0xf4621
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf4625 eltorito.c:646
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf462a eltorito.c:647
+ jmp near 04347h ; e9 15 fd ; 0xf462f eltorito.c:649
+ or ah, 003h ; 80 cc 03 ; 0xf4632 eltorito.c:654
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4635
+ jmp near 0434bh ; e9 10 fd ; 0xf4638 eltorito.c:655
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf463b eltorito.c:659
+ or ah, 030h ; 80 cc 30 ; 0xf4640 eltorito.c:660
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4643
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf4646 eltorito.c:661
+ jmp near 0434bh ; e9 fd fc ; 0xf464b eltorito.c:662
+ mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf464e eltorito.c:670
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf4651
+ mov word [bp-01ch], di ; 89 7e e4 ; 0xf4654
+ mov [bp-01ah], es ; 8c 46 e6 ; 0xf4657
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf465a eltorito.c:672
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf465e
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf4661 eltorito.c:673
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf4665
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf4668 eltorito.c:674
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf466c
+ mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf466f eltorito.c:677
+ mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4673
+ or ax, dx ; 09 d0 ; 0xf4677 eltorito.c:678
+ je short 04693h ; 74 18 ; 0xf4679
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf467b eltorito.c:679
+ shr ax, 008h ; c1 e8 08 ; 0xf467e
+ push ax ; 50 ; 0xf4681
+ push 0035eh ; 68 5e 03 ; 0xf4682
+ push 003c1h ; 68 c1 03 ; 0xf4685
+ push strict byte 00007h ; 6a 07 ; 0xf4688
+ call 01a14h ; e8 87 d3 ; 0xf468a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf468d
+ jmp near 04810h ; e9 7d 01 ; 0xf4690 eltorito.c:680
+ les di, [bp-01ch] ; c4 7e e4 ; 0xf4693 eltorito.c:684
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf4696
+ mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf469a
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf469e eltorito.c:687
+ shr cx, 008h ; c1 e9 08 ; 0xf46a1
+ mov word [bp-018h], cx ; 89 4e e8 ; 0xf46a4
+ cmp cx, strict byte 00044h ; 83 f9 44 ; 0xf46a7
+ je near 04347h ; 0f 84 99 fc ; 0xf46aa
+ cmp cx, strict byte 00047h ; 83 f9 47 ; 0xf46ae
+ jne short 046b6h ; 75 03 ; 0xf46b1
+ jmp near 04347h ; e9 91 fc ; 0xf46b3 eltorito.c:688
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf46b6 eltorito.c:695
+ mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf46b9
+ mov word [bp-020h], cx ; 89 4e e0 ; 0xf46bd
+ mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf46c0
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf46c4
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf46c7 eltorito.c:698
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf46ca
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf46cd
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf46d0
+ shr word [bp-02eh], 1 ; d1 6e d2 ; 0xf46d3
+ rcr word [bp-030h], 1 ; d1 5e d0 ; 0xf46d6
+ mov di, word [bp-02eh] ; 8b 7e d2 ; 0xf46d9
+ mov bx, ax ; 89 c3 ; 0xf46dc eltorito.c:699
+ xor bh, ah ; 30 e7 ; 0xf46de
+ and bl, 003h ; 80 e3 03 ; 0xf46e0
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf46e3
+ xor bx, bx ; 31 db ; 0xf46e6 eltorito.c:702
+ add ax, word [bp-010h] ; 03 46 f0 ; 0xf46e8
+ adc dx, bx ; 11 da ; 0xf46eb
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf46ed
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf46f0
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf46f3
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf46f6
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf46f9
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf46fc
+ shr word [bp-02ah], 1 ; d1 6e d6 ; 0xf46ff
+ rcr word [bp-02ch], 1 ; d1 5e d4 ; 0xf4702
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4705 eltorito.c:704
+ mov dx, ss ; 8c d2 ; 0xf4708
+ lea ax, [bp-03ch] ; 8d 46 c4 ; 0xf470a
+ call 09fb0h ; e8 a0 58 ; 0xf470d
+ mov word [bp-03ch], strict word 00028h ; c7 46 c4 28 00 ; 0xf4710 eltorito.c:705
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf4715 eltorito.c:706
+ add ax, word [bp-030h] ; 03 46 d0 ; 0xf4718
+ mov dx, word [bp-01eh] ; 8b 56 e2 ; 0xf471b
+ adc dx, di ; 11 fa ; 0xf471e
+ xchg ah, al ; 86 c4 ; 0xf4720
+ xchg dh, dl ; 86 d6 ; 0xf4722
+ xchg dx, ax ; 92 ; 0xf4724
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf4725
+ mov word [bp-038h], dx ; 89 56 c8 ; 0xf4728
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf472b eltorito.c:707
+ sub ax, word [bp-030h] ; 2b 46 d0 ; 0xf472e
+ inc ax ; 40 ; 0xf4731
+ xchg ah, al ; 86 c4 ; 0xf4732
+ mov word [bp-035h], ax ; 89 46 cb ; 0xf4734
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf4737 eltorito.c:709
+ sal ax, 009h ; c1 e0 09 ; 0xf473a
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf473d
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf4740
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf4744 eltorito.c:710
+ xor dh, dh ; 30 f6 ; 0xf4747
+ and dl, 003h ; 80 e2 03 ; 0xf4749
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf474c
+ sub bx, dx ; 29 d3 ; 0xf474f
+ mov dx, bx ; 89 da ; 0xf4751
+ sub dx, word [bp-024h] ; 2b 56 dc ; 0xf4753
+ sal dx, 009h ; c1 e2 09 ; 0xf4756
+ and dh, 007h ; 80 e6 07 ; 0xf4759
+ mov word [es:si+020h], dx ; 26 89 54 20 ; 0xf475c
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4760 eltorito.c:712
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4764
+ mov bx, si ; 89 f3 ; 0xf4767
+ add bx, dx ; 01 d3 ; 0xf4769
+ movzx dx, byte [es:bx+022h] ; 26 0f b6 57 22 ; 0xf476b
+ add dx, dx ; 01 d2 ; 0xf4770
+ mov word [bp-026h], dx ; 89 56 da ; 0xf4772
+ push word [bp-016h] ; ff 76 ea ; 0xf4775
+ push word [bp-014h] ; ff 76 ec ; 0xf4778
+ push strict byte 00001h ; 6a 01 ; 0xf477b
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf477d
+ xor di, di ; 31 ff ; 0xf4780
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4782
+ sal bx, 1 ; d1 e3 ; 0xf4785
+ rcl di, 1 ; d1 d7 ; 0xf4787
+ loop 04785h ; e2 fa ; 0xf4789
+ push di ; 57 ; 0xf478b
+ push bx ; 53 ; 0xf478c
+ push ax ; 50 ; 0xf478d
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf478e
+ mov cx, ss ; 8c d1 ; 0xf4792
+ lea bx, [bp-03ch] ; 8d 5e c4 ; 0xf4794
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4797
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf479a
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf479d
+ mov dx, ax ; 89 c2 ; 0xf47a1
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf47a3 eltorito.c:714
+ db 066h, 026h, 0c7h, 044h, 01eh, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+01eh], strict dword 000000000h ; 66 26 c7 44 1e 00 00 00 00; 0xf47a6
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf47af eltorito.c:717
+ mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf47b3
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf47b7
+ shr di, 1 ; d1 ef ; 0xf47ba
+ rcr bx, 1 ; d1 db ; 0xf47bc
+ loop 047bah ; e2 fa ; 0xf47be
+ les si, [bp-01ch] ; c4 76 e4 ; 0xf47c0 eltorito.c:718
+ mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf47c3
+ test al, al ; 84 c0 ; 0xf47c7 eltorito.c:720
+ je near 04347h ; 0f 84 7a fb ; 0xf47c9
+ mov bx, 00db2h ; bb b2 0d ; 0xf47cd eltorito.c:721
+ mov cx, ds ; 8c d9 ; 0xf47d0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf47d2
+ call 019d3h ; e8 fb d1 ; 0xf47d5
+ movzx ax, dl ; 0f b6 c2 ; 0xf47d8
+ push ax ; 50 ; 0xf47db
+ push word [bp-018h] ; ff 76 e8 ; 0xf47dc
+ push 0035eh ; 68 5e 03 ; 0xf47df
+ push 003eah ; 68 ea 03 ; 0xf47e2
+ push strict byte 00004h ; 6a 04 ; 0xf47e5
+ call 01a14h ; e8 2a d2 ; 0xf47e7
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf47ea
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf47ed eltorito.c:722
+ xor ah, ah ; 30 e4 ; 0xf47f0
+ or ah, 00ch ; 80 cc 0c ; 0xf47f2
+ jmp short 04818h ; eb 21 ; 0xf47f5
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf47f7 eltorito.c:730
+ push ax ; 50 ; 0xf47fb
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf47fc
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf47ff
+ mov bx, si ; 89 f3 ; 0xf4802
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4804
+ call 05a50h ; e8 46 12 ; 0xf4807
+ test ax, ax ; 85 c0 ; 0xf480a
+ je near 04347h ; 0f 84 37 fb ; 0xf480c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf4810 eltorito.c:731
+ xor ah, ah ; 30 e4 ; 0xf4813
+ or ah, 001h ; 80 cc 01 ; 0xf4815
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf4818
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf481b
+ shr ax, 008h ; c1 e8 08 ; 0xf481e
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4821
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4824
+ mov es, dx ; 8e c2 ; 0xf4827
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4829
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf482c
+ jmp near 0435bh ; e9 28 fb ; 0xf4830
+ mov bx, 00db2h ; bb b2 0d ; 0xf4833 eltorito.c:747
+ mov cx, ds ; 8c d9 ; 0xf4836
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4838
+ call 019d3h ; e8 95 d1 ; 0xf483b
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf483e
+ shr ax, 008h ; c1 e8 08 ; 0xf4841
+ push ax ; 50 ; 0xf4844
+ push 0035eh ; 68 5e 03 ; 0xf4845
+ push 0040ch ; 68 0c 04 ; 0xf4848
+ push strict byte 00004h ; 6a 04 ; 0xf484b
+ jmp near 0468ah ; e9 3a fe ; 0xf484d
+ ; disGetNextSymbol 0xf4850 LB 0x57f5 -> off=0x59 cb=0000000000000362 uValue=00000000000f32a9 'int13_cdrom'
+ db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
+ db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0eeh, 04bh, 050h
+ db 04bh, 051h, 049h, 0eeh, 04bh, 046h, 049h, 0eeh, 04bh, 046h, 049h, 0eeh, 04bh, 050h, 04bh, 0eeh
+ db 04bh, 0eeh, 04bh, 050h, 04bh, 050h, 04bh, 050h, 04bh, 050h, 04bh, 050h, 04bh, 077h, 049h, 050h
+ db 04bh, 0eeh, 04bh, 07dh, 049h, 090h, 049h, 046h, 049h, 090h, 049h, 0c1h, 04ah, 06bh, 04bh, 090h
+ db 049h, 08fh, 04bh, 0c8h, 04bh, 0d0h, 04bh, 0eeh, 04bh
+int13_cdrom: ; 0xf48a9 LB 0x362
+ push bp ; 55 ; 0xf48a9 eltorito.c:772
+ mov bp, sp ; 89 e5 ; 0xf48aa
+ push si ; 56 ; 0xf48ac
+ push di ; 57 ; 0xf48ad
+ sub sp, strict byte 0001eh ; 83 ec 1e ; 0xf48ae
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf48b1 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf48b4
+ mov es, ax ; 8e c0 ; 0xf48b7
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf48b9
+ mov si, 00122h ; be 22 01 ; 0xf48bc eltorito.c:782
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf48bf
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf48c2 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf48c5
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48c9 eltorito.c:789
+ xor ah, ah ; 30 e4 ; 0xf48cc
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf48ce
+ jc short 048d8h ; 72 05 ; 0xf48d1
+ cmp ax, 000f0h ; 3d f0 00 ; 0xf48d3
+ jc short 048f6h ; 72 1e ; 0xf48d6
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48d8 eltorito.c:790
+ xor ah, ah ; 30 e4 ; 0xf48db
+ push ax ; 50 ; 0xf48dd
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48de
+ shr ax, 008h ; c1 e8 08 ; 0xf48e1
+ push ax ; 50 ; 0xf48e4
+ push 0043ch ; 68 3c 04 ; 0xf48e5
+ push 00448h ; 68 48 04 ; 0xf48e8
+ push strict byte 00004h ; 6a 04 ; 0xf48eb
+ call 01a14h ; e8 24 d1 ; 0xf48ed
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf48f0
+ jmp near 04ba6h ; e9 b0 02 ; 0xf48f3 eltorito.c:791
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48f6 eltorito.c:795
+ xor ah, ah ; 30 e4 ; 0xf48f9
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf48fb
+ mov bx, si ; 89 f3 ; 0xf48fe
+ add bx, ax ; 01 c3 ; 0xf4900
+ mov dl, byte [es:bx+00114h] ; 26 8a 97 14 01 ; 0xf4902
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf4907
+ cmp dl, 010h ; 80 fa 10 ; 0xf490a eltorito.c:798
+ jc short 0491fh ; 72 10 ; 0xf490d
+ push ax ; 50 ; 0xf490f eltorito.c:799
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4910
+ shr ax, 008h ; c1 e8 08 ; 0xf4913
+ push ax ; 50 ; 0xf4916
+ push 0043ch ; 68 3c 04 ; 0xf4917
+ push 00473h ; 68 73 04 ; 0xf491a
+ jmp short 048ebh ; eb cc ; 0xf491d
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf491f eltorito.c:803
+ shr ax, 008h ; c1 e8 08 ; 0xf4922
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4925
+ jnbe near 04beeh ; 0f 87 c2 02 ; 0xf4928
+ push CS ; 0e ; 0xf492c
+ pop ES ; 07 ; 0xf492d
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf492e
+ mov di, 04850h ; bf 50 48 ; 0xf4931
+ repne scasb ; f2 ae ; 0xf4934
+ sal cx, 1 ; d1 e1 ; 0xf4936
+ mov di, cx ; 89 cf ; 0xf4938
+ mov dx, word [cs:di+0486dh] ; 2e 8b 95 6d 48 ; 0xf493a
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf493f
+ xor ah, ah ; 30 e4 ; 0xf4942
+ jmp dx ; ff e2 ; 0xf4944
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4946 eltorito.c:821
+ xor ah, ah ; 30 e4 ; 0xf4949
+ or ah, 003h ; 80 cc 03 ; 0xf494b
+ jmp near 04baeh ; e9 5d 02 ; 0xf494e
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4951 eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4954
+ mov es, dx ; 8e c2 ; 0xf4957
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf4959
+ movzx bx, dl ; 0f b6 da ; 0xf495c eltorito.c:827
+ sal bx, 008h ; c1 e3 08 ; 0xf495f
+ or ax, bx ; 09 d8 ; 0xf4962
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4964
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4967 eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf496a
+ test dl, dl ; 84 d2 ; 0xf496e eltorito.c:831
+ je near 04b54h ; 0f 84 e0 01 ; 0xf4970
+ jmp near 04bc2h ; e9 4b 02 ; 0xf4974 eltorito.c:832
+ or ah, 002h ; 80 cc 02 ; 0xf4977 eltorito.c:838
+ jmp near 04baeh ; e9 31 02 ; 0xf497a
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf497d eltorito.c:843
+ or ah, 030h ; 80 cc 30 ; 0xf4982 eltorito.c:844
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4985
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf4988 eltorito.c:845
+ jmp near 04b54h ; e9 c4 01 ; 0xf498d eltorito.c:846
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4990 eltorito.c:854
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf4993
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf4996
+ mov [bp-00eh], es ; 8c 46 f2 ; 0xf4999
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf499c eltorito.c:856
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf49a0
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf49a3 eltorito.c:857
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf49a7
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf49aa eltorito.c:858
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf49ae
+ mov di, word [es:bx+00ch] ; 26 8b 7f 0c ; 0xf49b1 eltorito.c:861
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf49b5
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf49b9
+ or di, ax ; 09 c7 ; 0xf49bc eltorito.c:862
+ je short 049d8h ; 74 18 ; 0xf49be
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49c0 eltorito.c:863
+ shr ax, 008h ; c1 e8 08 ; 0xf49c3
+ push ax ; 50 ; 0xf49c6
+ push 0043ch ; 68 3c 04 ; 0xf49c7
+ push 003c1h ; 68 c1 03 ; 0xf49ca
+ push strict byte 00007h ; 6a 07 ; 0xf49cd
+ call 01a14h ; e8 42 d0 ; 0xf49cf
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf49d2
+ jmp near 04ba6h ; e9 ce 01 ; 0xf49d5 eltorito.c:864
+ les di, [bp-010h] ; c4 7e f0 ; 0xf49d8 eltorito.c:868
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf49db
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf49df
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf49e2
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf49e6
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf49e9 eltorito.c:871
+ shr ax, 008h ; c1 e8 08 ; 0xf49ec
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf49ef
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf49f2
+ je near 04b50h ; 0f 84 57 01 ; 0xf49f5
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf49f9
+ je near 04b50h ; 0f 84 50 01 ; 0xf49fc
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf4a00 eltorito.c:877
+ xor bx, bx ; 31 db ; 0xf4a03
+ mov dx, ss ; 8c d2 ; 0xf4a05
+ lea ax, [bp-022h] ; 8d 46 de ; 0xf4a07
+ call 09fb0h ; e8 a3 55 ; 0xf4a0a
+ mov word [bp-022h], strict word 00028h ; c7 46 de 28 00 ; 0xf4a0d eltorito.c:878
+ mov ax, di ; 89 f8 ; 0xf4a12 eltorito.c:879
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf4a14
+ xchg ah, al ; 86 c4 ; 0xf4a17
+ xchg dh, dl ; 86 d6 ; 0xf4a19
+ xchg dx, ax ; 92 ; 0xf4a1b
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf4a1c
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf4a1f
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf4a22 eltorito.c:880
+ xchg ah, al ; 86 c4 ; 0xf4a25
+ mov word [bp-01bh], ax ; 89 46 e5 ; 0xf4a27
+ les ax, [bp-00ah] ; c4 46 f6 ; 0xf4a2a eltorito.c:882
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf4a2d
+ mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf4a31 eltorito.c:883
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4a37 eltorito.c:885
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4a3b
+ mov bx, si ; 89 f3 ; 0xf4a3e
+ add bx, ax ; 01 c3 ; 0xf4a40
+ movzx di, byte [es:bx+022h] ; 26 0f b6 7f 22 ; 0xf4a42
+ add di, di ; 01 ff ; 0xf4a47
+ push word [bp-016h] ; ff 76 ea ; 0xf4a49
+ push word [bp-014h] ; ff 76 ec ; 0xf4a4c
+ push strict byte 00001h ; 6a 01 ; 0xf4a4f
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf4a51
+ xor bx, bx ; 31 db ; 0xf4a54
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a56
+ sal ax, 1 ; d1 e0 ; 0xf4a59
+ rcl bx, 1 ; d1 d3 ; 0xf4a5b
+ loop 04a59h ; e2 fa ; 0xf4a5d
+ push bx ; 53 ; 0xf4a5f
+ push ax ; 50 ; 0xf4a60
+ push strict byte 00000h ; 6a 00 ; 0xf4a61
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4a63
+ mov cx, ss ; 8c d1 ; 0xf4a67
+ lea bx, [bp-022h] ; 8d 5e de ; 0xf4a69
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4a6c
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4a6f
+ mov dx, ax ; 89 c2 ; 0xf4a73
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4a75 eltorito.c:887
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4a78
+ mov bx, word [es:si+01ch] ; 26 8b 5c 1c ; 0xf4a7c
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a80
+ shr bx, 1 ; d1 eb ; 0xf4a83
+ rcr ax, 1 ; d1 d8 ; 0xf4a85
+ loop 04a83h ; e2 fa ; 0xf4a87
+ les bx, [bp-010h] ; c4 5e f0 ; 0xf4a89 eltorito.c:888
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4a8c
+ test dl, dl ; 84 d2 ; 0xf4a90 eltorito.c:890
+ je near 04b50h ; 0f 84 ba 00 ; 0xf4a92
+ mov bx, 00db2h ; bb b2 0d ; 0xf4a96 eltorito.c:891
+ mov cx, ds ; 8c d9 ; 0xf4a99
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a9b
+ call 019d3h ; e8 32 cf ; 0xf4a9e
+ movzx ax, dl ; 0f b6 c2 ; 0xf4aa1
+ push ax ; 50 ; 0xf4aa4
+ push word [bp-012h] ; ff 76 ee ; 0xf4aa5
+ push 0043ch ; 68 3c 04 ; 0xf4aa8
+ push 003eah ; 68 ea 03 ; 0xf4aab
+ push strict byte 00004h ; 6a 04 ; 0xf4aae
+ call 01a14h ; e8 61 cf ; 0xf4ab0
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4ab3
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ab6 eltorito.c:892
+ xor ah, ah ; 30 e4 ; 0xf4ab9
+ or ah, 00ch ; 80 cc 0c ; 0xf4abb
+ jmp near 04baeh ; e9 ed 00 ; 0xf4abe
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4ac1 eltorito.c:900
+ jnbe near 04ba6h ; 0f 87 de 00 ; 0xf4ac4
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4ac8 eltorito.c:903
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4acc
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4acf
+ mov bx, si ; 89 f3 ; 0xf4ad2
+ add bx, dx ; 01 d3 ; 0xf4ad4
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4ad6
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf4ada eltorito.c:905
+ je short 04b3eh ; 74 5f ; 0xf4add
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4adf
+ je short 04b1ch ; 74 38 ; 0xf4ae2
+ test ax, ax ; 85 c0 ; 0xf4ae4
+ jne near 04b50h ; 0f 85 66 00 ; 0xf4ae6
+ cmp bl, 0ffh ; 80 fb ff ; 0xf4aea eltorito.c:907
+ jne short 04b01h ; 75 12 ; 0xf4aed
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4aef eltorito.c:908
+ xor ah, ah ; 30 e4 ; 0xf4af2
+ or ah, 0b4h ; 80 cc b4 ; 0xf4af4
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4af7
+ xor al, al ; 30 c0 ; 0xf4afa eltorito.c:909
+ or AL, strict byte 001h ; 0c 01 ; 0xf4afc
+ jmp near 04baeh ; e9 ad 00 ; 0xf4afe
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b01 eltorito.c:911
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4b05
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf4b08 eltorito.c:912
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b0a
+ add si, ax ; 01 c6 ; 0xf4b0d
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4b0f
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b13 eltorito.c:913
+ xor al, al ; 30 c0 ; 0xf4b16
+ or AL, strict byte 001h ; 0c 01 ; 0xf4b18
+ jmp short 04b4dh ; eb 31 ; 0xf4b1a
+ test bl, bl ; 84 db ; 0xf4b1c eltorito.c:916
+ jne short 04b2ch ; 75 0c ; 0xf4b1e
+ or ah, 0b0h ; 80 cc b0 ; 0xf4b20 eltorito.c:917
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b23
+ mov byte [bp+018h], bl ; 88 5e 18 ; 0xf4b26 eltorito.c:918
+ jmp near 04bb1h ; e9 85 00 ; 0xf4b29 eltorito.c:919
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b2c eltorito.c:920
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf4b30
+ db 0feh, 0cbh
+ ; dec bl ; fe cb ; 0xf4b33 eltorito.c:921
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b35
+ add si, ax ; 01 c6 ; 0xf4b38
+ mov byte [es:si+025h], bl ; 26 88 5c 25 ; 0xf4b3a
+ test bl, bl ; 84 db ; 0xf4b3e eltorito.c:922
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf4b40
+ movzx dx, al ; 0f b6 d0 ; 0xf4b43
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b46
+ xor al, al ; 30 c0 ; 0xf4b49
+ or ax, dx ; 09 d0 ; 0xf4b4b
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b4d
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4b50 eltorito.c:928
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4b54
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4b57
+ mov es, ax ; 8e c0 ; 0xf4b5a
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4b5c
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4b60
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4b64
+ pop di ; 5f ; 0xf4b67
+ pop si ; 5e ; 0xf4b68
+ pop bp ; 5d ; 0xf4b69
+ retn ; c3 ; 0xf4b6a
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf4b6b eltorito.c:932
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf4b6f
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4b72
+ mov bx, si ; 89 f3 ; 0xf4b75
+ add bx, dx ; 01 d3 ; 0xf4b77
+ mov bl, byte [es:bx+025h] ; 26 8a 5f 25 ; 0xf4b79
+ test bl, bl ; 84 db ; 0xf4b7d eltorito.c:934
+ je short 04b86h ; 74 05 ; 0xf4b7f
+ or ah, 0b1h ; 80 cc b1 ; 0xf4b81 eltorito.c:935
+ jmp short 04baeh ; eb 28 ; 0xf4b84
+ je short 04b50h ; 74 c8 ; 0xf4b86 eltorito.c:957
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b88 eltorito.c:958
+ xor ah, ah ; 30 e4 ; 0xf4b8b
+ jmp short 04b81h ; eb f2 ; 0xf4b8d
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4b8f eltorito.c:966
+ push ax ; 50 ; 0xf4b93
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4b94
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4b97
+ mov bx, si ; 89 f3 ; 0xf4b9a
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf4b9c
+ call 05a50h ; e8 ae 0e ; 0xf4b9f
+ test ax, ax ; 85 c0 ; 0xf4ba2
+ je short 04b50h ; 74 aa ; 0xf4ba4
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ba6 eltorito.c:967
+ xor ah, ah ; 30 e4 ; 0xf4ba9
+ or ah, 001h ; 80 cc 01 ; 0xf4bab
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4bae
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4bb1
+ shr ax, 008h ; c1 e8 08 ; 0xf4bb4
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4bb7
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4bba
+ mov es, dx ; 8e c2 ; 0xf4bbd
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4bbf
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4bc2
+ jmp short 04b64h ; eb 9c ; 0xf4bc6
+ or ah, 006h ; 80 cc 06 ; 0xf4bc8 eltorito.c:974
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4bcb
+ jmp short 04bc2h ; eb f2 ; 0xf4bce eltorito.c:975
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf4bd0 eltorito.c:980
+ je near 04b50h ; 0f 84 79 ff ; 0xf4bd3
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf4bd7
+ jc short 04ba6h ; 72 ca ; 0xf4bda
+ jbe near 04b50h ; 0f 86 70 ff ; 0xf4bdc
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf4be0
+ jc short 04ba6h ; 72 c1 ; 0xf4be3
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf4be5
+ jbe near 04b50h ; 0f 86 64 ff ; 0xf4be8
+ jmp short 04ba6h ; eb b8 ; 0xf4bec eltorito.c:988
+ mov bx, 00db2h ; bb b2 0d ; 0xf4bee eltorito.c:1001
+ mov cx, ds ; 8c d9 ; 0xf4bf1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4bf3
+ call 019d3h ; e8 da cd ; 0xf4bf6
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4bf9
+ shr ax, 008h ; c1 e8 08 ; 0xf4bfc
+ push ax ; 50 ; 0xf4bff
+ push 0043ch ; 68 3c 04 ; 0xf4c00
+ push 00345h ; 68 45 03 ; 0xf4c03
+ push strict byte 00004h ; 6a 04 ; 0xf4c06
+ jmp near 049cfh ; e9 c4 fd ; 0xf4c08
+ ; disGetNextSymbol 0xf4c0b LB 0x543a -> off=0x0 cb=000000000000004b uValue=00000000000f360b 'print_boot_device'
+print_boot_device: ; 0xf4c0b LB 0x4b
+ push bp ; 55 ; 0xf4c0b boot.c:109
+ mov bp, sp ; 89 e5 ; 0xf4c0c
+ push cx ; 51 ; 0xf4c0e
+ test al, al ; 84 c0 ; 0xf4c0f boot.c:117
+ je short 04c18h ; 74 05 ; 0xf4c11
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4c13
+ jmp short 04c32h ; eb 1a ; 0xf4c16 boot.c:118
+ test dl, dl ; 84 d2 ; 0xf4c18
+ je short 04c21h ; 74 05 ; 0xf4c1a
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4c1c
+ jmp short 04c32h ; eb 11 ; 0xf4c1f boot.c:119
+ test bl, 080h ; f6 c3 80 ; 0xf4c21
+ jne short 04c2ah ; 75 04 ; 0xf4c24
+ xor dh, dh ; 30 f6 ; 0xf4c26
+ jmp short 04c32h ; eb 08 ; 0xf4c28 boot.c:120
+ test bl, 080h ; f6 c3 80 ; 0xf4c2a
+ je short 04c50h ; 74 21 ; 0xf4c2d
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4c2f
+ mov bx, 00db2h ; bb b2 0d ; 0xf4c32 boot.c:123
+ mov cx, ds ; 8c d9 ; 0xf4c35
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c37
+ call 019d3h ; e8 96 cd ; 0xf4c3a
+ imul dx, dx, strict byte 0000ah ; 6b d2 0a ; 0xf4c3d
+ add dx, 00dd8h ; 81 c2 d8 0d ; 0xf4c40
+ push dx ; 52 ; 0xf4c44
+ push 004a6h ; 68 a6 04 ; 0xf4c45
+ push strict byte 00004h ; 6a 04 ; 0xf4c48
+ call 01a14h ; e8 c7 cd ; 0xf4c4a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c4d
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4c50 boot.c:124
+ pop cx ; 59 ; 0xf4c53
+ pop bp ; 5d ; 0xf4c54
+ retn ; c3 ; 0xf4c55
+ ; disGetNextSymbol 0xf4c56 LB 0x53ef -> off=0x0 cb=0000000000000093 uValue=00000000000f3656 'print_boot_failure'
+print_boot_failure: ; 0xf4c56 LB 0x93
+ push bp ; 55 ; 0xf4c56 boot.c:131
+ mov bp, sp ; 89 e5 ; 0xf4c57
+ push si ; 56 ; 0xf4c59
+ mov dh, cl ; 88 ce ; 0xf4c5a
+ mov ah, bl ; 88 dc ; 0xf4c5c boot.c:134
+ and ah, 07fh ; 80 e4 7f ; 0xf4c5e
+ movzx si, ah ; 0f b6 f4 ; 0xf4c61
+ test al, al ; 84 c0 ; 0xf4c64 boot.c:142
+ je short 04c83h ; 74 1b ; 0xf4c66
+ mov bx, 00db2h ; bb b2 0d ; 0xf4c68 boot.c:143
+ mov cx, ds ; 8c d9 ; 0xf4c6b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c6d
+ call 019d3h ; e8 60 cd ; 0xf4c70
+ push 00dech ; 68 ec 0d ; 0xf4c73
+ push 004bah ; 68 ba 04 ; 0xf4c76
+ push strict byte 00004h ; 6a 04 ; 0xf4c79
+ call 01a14h ; e8 96 cd ; 0xf4c7b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c7e
+ jmp short 04cc7h ; eb 44 ; 0xf4c81 boot.c:144
+ test dl, dl ; 84 d2 ; 0xf4c83
+ je short 04c97h ; 74 10 ; 0xf4c85
+ mov bx, 00db2h ; bb b2 0d ; 0xf4c87 boot.c:145
+ mov cx, ds ; 8c d9 ; 0xf4c8a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c8c
+ call 019d3h ; e8 41 cd ; 0xf4c8f
+ push 00df6h ; 68 f6 0d ; 0xf4c92
+ jmp short 04c76h ; eb df ; 0xf4c95
+ test bl, 080h ; f6 c3 80 ; 0xf4c97 boot.c:146
+ je short 04cadh ; 74 11 ; 0xf4c9a
+ mov bx, 00db2h ; bb b2 0d ; 0xf4c9c boot.c:147
+ mov cx, ds ; 8c d9 ; 0xf4c9f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4ca1
+ call 019d3h ; e8 2c cd ; 0xf4ca4
+ push si ; 56 ; 0xf4ca7
+ push 00de2h ; 68 e2 0d ; 0xf4ca8
+ jmp short 04cbch ; eb 0f ; 0xf4cab boot.c:148
+ mov bx, 00db2h ; bb b2 0d ; 0xf4cad boot.c:149
+ mov cx, ds ; 8c d9 ; 0xf4cb0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cb2
+ call 019d3h ; e8 1b cd ; 0xf4cb5
+ push si ; 56 ; 0xf4cb8
+ push 00dd8h ; 68 d8 0d ; 0xf4cb9
+ push 004cfh ; 68 cf 04 ; 0xf4cbc
+ push strict byte 00004h ; 6a 04 ; 0xf4cbf
+ call 01a14h ; e8 50 cd ; 0xf4cc1
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4cc4
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4cc7 boot.c:151
+ jne short 04ce1h ; 75 14 ; 0xf4ccb
+ test dh, dh ; 84 f6 ; 0xf4ccd boot.c:152
+ jne short 04cd6h ; 75 05 ; 0xf4ccf
+ push 004e7h ; 68 e7 04 ; 0xf4cd1 boot.c:153
+ jmp short 04cd9h ; eb 03 ; 0xf4cd4 boot.c:154
+ push 00511h ; 68 11 05 ; 0xf4cd6 boot.c:155
+ push strict byte 00007h ; 6a 07 ; 0xf4cd9
+ call 01a14h ; e8 36 cd ; 0xf4cdb
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4cde
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4ce1 boot.c:157
+ pop si ; 5e ; 0xf4ce4
+ pop bp ; 5d ; 0xf4ce5
+ retn 00002h ; c2 02 00 ; 0xf4ce6
+ ; disGetNextSymbol 0xf4ce9 LB 0x535c -> off=0x0 cb=0000000000000027 uValue=00000000000f36e9 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4ce9 LB 0x27
+ push bp ; 55 ; 0xf4ce9 boot.c:163
+ mov bp, sp ; 89 e5 ; 0xf4cea
+ push bx ; 53 ; 0xf4cec
+ push cx ; 51 ; 0xf4ced
+ push dx ; 52 ; 0xf4cee
+ mov dx, ax ; 89 c2 ; 0xf4cef
+ mov bx, 00db2h ; bb b2 0d ; 0xf4cf1 boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4cf4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cf6
+ call 019d3h ; e8 d7 cc ; 0xf4cf9
+ push dx ; 52 ; 0xf4cfc
+ push 00546h ; 68 46 05 ; 0xf4cfd
+ push strict byte 00004h ; 6a 04 ; 0xf4d00
+ call 01a14h ; e8 0f cd ; 0xf4d02
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4d05
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4d08 boot.c:167
+ pop dx ; 5a ; 0xf4d0b
+ pop cx ; 59 ; 0xf4d0c
+ pop bx ; 5b ; 0xf4d0d
+ pop bp ; 5d ; 0xf4d0e
+ retn ; c3 ; 0xf4d0f
+ ; disGetNextSymbol 0xf4d10 LB 0x5335 -> off=0x0 cb=0000000000000245 uValue=00000000000f3710 'int19_function'
+int19_function: ; 0xf4d10 LB 0x245
+ push bp ; 55 ; 0xf4d10 boot.c:170
+ mov bp, sp ; 89 e5 ; 0xf4d11
+ push si ; 56 ; 0xf4d13
+ push di ; 57 ; 0xf4d14
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4d15
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4d18 boot.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4d1b
+ mov es, ax ; 8e c0 ; 0xf4d1e
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf4d20
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf4d23 boot.c:49
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4d26 boot.c:181
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4d2a boot.c:204
+ call 01756h ; e8 26 ca ; 0xf4d2d
+ movzx dx, al ; 0f b6 d0 ; 0xf4d30
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4d33 boot.c:205
+ call 01756h ; e8 1d ca ; 0xf4d36
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4d39
+ xor ah, ah ; 30 e4 ; 0xf4d3b
+ sal ax, 004h ; c1 e0 04 ; 0xf4d3d
+ or dx, ax ; 09 c2 ; 0xf4d40
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d42 boot.c:206
+ call 01756h ; e8 0e ca ; 0xf4d45
+ and AL, strict byte 00fh ; 24 0f ; 0xf4d48
+ xor ah, ah ; 30 e4 ; 0xf4d4a
+ sal ax, 00ch ; c1 e0 0c ; 0xf4d4c
+ or dx, ax ; 09 c2 ; 0xf4d4f
+ mov di, 0037dh ; bf 7d 03 ; 0xf4d51 boot.c:38
+ mov es, bx ; 8e c3 ; 0xf4d54
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf4d56
+ test al, al ; 84 c0 ; 0xf4d59 boot.c:39
+ je short 04d60h ; 74 03 ; 0xf4d5b
+ movzx dx, al ; 0f b6 d0 ; 0xf4d5d boot.c:39
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4d60 boot.c:210
+ jne short 04d76h ; 75 10 ; 0xf4d64
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d66 boot.c:211
+ call 01756h ; e8 ea c9 ; 0xf4d69
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4d6c
+ xor ah, ah ; 30 e4 ; 0xf4d6e
+ sar ax, 004h ; c1 f8 04 ; 0xf4d70
+ call 07cech ; e8 76 2f ; 0xf4d73
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4d76 boot.c:213
+ jne short 04d7fh ; 75 03 ; 0xf4d7a
+ shr dx, 004h ; c1 ea 04 ; 0xf4d7c
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4d7f boot.c:214
+ jne short 04d88h ; 75 03 ; 0xf4d83
+ shr dx, 008h ; c1 ea 08 ; 0xf4d85
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4d88 boot.c:215
+ jne short 04d91h ; 75 03 ; 0xf4d8c
+ shr dx, 00ch ; c1 ea 0c ; 0xf4d8e
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4d91 boot.c:216
+ jnc short 04d9ah ; 73 04 ; 0xf4d94
+ mov byte [bp-006h], 001h ; c6 46 fa 01 ; 0xf4d96
+ xor al, al ; 30 c0 ; 0xf4d9a boot.c:217
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4d9c
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4d9f
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf4da2 boot.c:218
+ mov bx, 00db2h ; bb b2 0d ; 0xf4da5 boot.c:219
+ mov cx, ds ; 8c d9 ; 0xf4da8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4daa
+ call 019d3h ; e8 23 cc ; 0xf4dad
+ push dx ; 52 ; 0xf4db0
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf4db1
+ push ax ; 50 ; 0xf4db5
+ push 00566h ; 68 66 05 ; 0xf4db6
+ push strict byte 00004h ; 6a 04 ; 0xf4db9
+ call 01a14h ; e8 56 cc ; 0xf4dbb
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4dbe
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4dc1 boot.c:221
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4dc4
+ jc short 04dd7h ; 72 0e ; 0xf4dc7
+ jbe short 04de6h ; 76 1b ; 0xf4dc9
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4dcb
+ je short 04e03h ; 74 33 ; 0xf4dce
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4dd0
+ je short 04df9h ; 74 24 ; 0xf4dd3
+ jmp short 04e30h ; eb 59 ; 0xf4dd5
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4dd7
+ jne short 04e30h ; 75 54 ; 0xf4dda
+ xor al, al ; 30 c0 ; 0xf4ddc boot.c:223
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4dde
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4de1 boot.c:224
+ jmp short 04e46h ; eb 60 ; 0xf4de4 boot.c:225
+ mov bx, 0037ch ; bb 7c 03 ; 0xf4de6 boot.c:38
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4de9
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4dec
+ add AL, strict byte 080h ; 04 80 ; 0xf4def boot.c:231
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4df1
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf4df4 boot.c:232
+ jmp short 04e46h ; eb 4d ; 0xf4df7 boot.c:233
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf4df9 boot.c:236
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4dfd boot.c:237
+ jmp short 04e0dh ; eb 0a ; 0xf4e01 boot.c:238
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4e03 boot.c:239
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4e07 boot.c:255
+ je short 04e46h ; 74 39 ; 0xf4e0b
+ call 03e74h ; e8 64 f0 ; 0xf4e0d boot.c:256
+ mov dx, ax ; 89 c2 ; 0xf4e10
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4e12 boot.c:259
+ je short 04e37h ; 74 21 ; 0xf4e14
+ call 04ce9h ; e8 d0 fe ; 0xf4e16 boot.c:260
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4e19 boot.c:261
+ push ax ; 50 ; 0xf4e1d
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e1e
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e22
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e26
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4e2a
+ call 04c56h ; e8 26 fe ; 0xf4e2d
+ xor ax, ax ; 31 c0 ; 0xf4e30
+ xor dx, dx ; 31 d2 ; 0xf4e32
+ jmp near 04f4eh ; e9 17 01 ; 0xf4e34
+ mov bx, 00372h ; bb 72 03 ; 0xf4e37 boot.c:48
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e3a
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4e3d
+ shr dx, 008h ; c1 ea 08 ; 0xf4e40 boot.c:266
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf4e43
+ cmp byte [bp-00ch], 001h ; 80 7e f4 01 ; 0xf4e46 boot.c:272
+ jne near 04ec2h ; 0f 85 74 00 ; 0xf4e4a
+ xor si, si ; 31 f6 ; 0xf4e4e boot.c:275
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4e50
+ mov es, ax ; 8e c0 ; 0xf4e53
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4e55 boot.c:276
+ jne short 04e19h ; 75 bd ; 0xf4e5a
+ mov di, ax ; 89 c7 ; 0xf4e5c boot.c:282
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4e5e
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4e62 boot.c:283
+ jne short 04e19h ; 75 af ; 0xf4e68
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4e6a
+ jne short 04e19h ; 75 a8 ; 0xf4e6f
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4e71 boot.c:285
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4e75
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf4e78
+ cmp ax, 06568h ; 3d 68 65 ; 0xf4e7c boot.c:286
+ jne short 04ea0h ; 75 1f ; 0xf4e7f
+ cmp dx, 07445h ; 81 fa 45 74 ; 0xf4e81
+ jne short 04ea0h ; 75 19 ; 0xf4e85
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4e87 boot.c:288
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4e8b
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4e8f
+ call 04c0bh ; e8 75 fd ; 0xf4e93
+ mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4e96 boot.c:289
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4e9b
+ jmp short 04ebch ; eb 1c ; 0xf4e9e boot.c:292
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4ea0 boot.c:295
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4ea4
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4ea8
+ call 04c0bh ; e8 5c fd ; 0xf4eac
+ sti ; fb ; 0xf4eaf boot.c:296
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4eb0 boot.c:297
+ mov es, di ; 8e c7 ; 0xf4eb3
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4eb5
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4eb9
+ call far [bp-012h] ; ff 5e ee ; 0xf4ebc boot.c:298
+ jmp near 04e19h ; e9 57 ff ; 0xf4ebf boot.c:301
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4ec2 boot.c:309
+ jne short 04eeeh ; 75 26 ; 0xf4ec6
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4ec8
+ jne short 04eeeh ; 75 20 ; 0xf4ecc
+ mov si, 007c0h ; be c0 07 ; 0xf4ece boot.c:310
+ mov es, si ; 8e c6 ; 0xf4ed1 boot.c:312
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf4ed3
+ mov ax, 00201h ; b8 01 02 ; 0xf4ed6
+ mov DH, strict byte 000h ; b6 00 ; 0xf4ed9
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4edb
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4ede
+ int 013h ; cd 13 ; 0xf4ee0
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4ee2
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4ee5
+ test ax, ax ; 85 c0 ; 0xf4ee8 boot.c:313
+ jne near 04e19h ; 0f 85 2b ff ; 0xf4eea
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4eee boot.c:328
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf4ef2
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4ef5 boot.c:333
+ je short 04efdh ; 74 02 ; 0xf4ef9
+ mov AL, strict byte 001h ; b0 01 ; 0xf4efb boot.c:334
+ xor bx, bx ; 31 db ; 0xf4efd boot.c:48
+ mov es, si ; 8e c6 ; 0xf4eff
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4f01
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4f04 boot.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf4f07
+ cmp dx, bx ; 39 da ; 0xf4f0a boot.c:49
+ je short 04f1dh ; 74 0f ; 0xf4f0c
+ test al, al ; 84 c0 ; 0xf4f0e
+ jne short 04f33h ; 75 21 ; 0xf4f10
+ mov bx, 001feh ; bb fe 01 ; 0xf4f12 boot.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4f15
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4f18 boot.c:49
+ je short 04f33h ; 74 16 ; 0xf4f1b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf4f1d boot.c:340
+ push ax ; 50 ; 0xf4f21
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f22
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4f26
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4f2a
+ xor cx, cx ; 31 c9 ; 0xf4f2e
+ jmp near 04e2dh ; e9 fa fe ; 0xf4f30
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f33 boot.c:346
+ movzx dx, byte [bp-00ch] ; 0f b6 56 f4 ; 0xf4f37
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf4f3b
+ call 04c0bh ; e8 c9 fc ; 0xf4f3f
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf4f42 boot.c:352
+ xor dx, dx ; 31 d2 ; 0xf4f46
+ xor ax, ax ; 31 c0 ; 0xf4f48
+ add ax, si ; 01 f0 ; 0xf4f4a
+ adc dx, bx ; 11 da ; 0xf4f4c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4f4e boot.c:353
+ pop di ; 5f ; 0xf4f51
+ pop si ; 5e ; 0xf4f52
+ pop bp ; 5d ; 0xf4f53
+ retn ; c3 ; 0xf4f54
+ ; disGetNextSymbol 0xf4f55 LB 0x50f0 -> off=0x0 cb=0000000000000013 uValue=00000000000f3955 'keyboard_panic'
+keyboard_panic: ; 0xf4f55 LB 0x13
+ push bp ; 55 ; 0xf4f55 keyboard.c:194
+ mov bp, sp ; 89 e5 ; 0xf4f56
+ push ax ; 50 ; 0xf4f58 keyboard.c:199
+ push 00586h ; 68 86 05 ; 0xf4f59
+ push strict byte 00007h ; 6a 07 ; 0xf4f5c
+ call 01a14h ; e8 b3 ca ; 0xf4f5e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4f61
+ mov sp, bp ; 89 ec ; 0xf4f64 keyboard.c:200
+ pop bp ; 5d ; 0xf4f66
+ retn ; c3 ; 0xf4f67
+ ; disGetNextSymbol 0xf4f68 LB 0x50dd -> off=0x0 cb=000000000000026a uValue=00000000000f3968 'keyboard_init'
+keyboard_init: ; 0xf4f68 LB 0x26a
+ push bp ; 55 ; 0xf4f68 keyboard.c:208
+ mov bp, sp ; 89 e5 ; 0xf4f69
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4f6b keyboard.c:214
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f6d
+ out DX, AL ; ee ; 0xf4f70
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f71 keyboard.c:217
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f74 keyboard.c:218
+ in AL, DX ; ec ; 0xf4f77
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f78
+ test AL, strict byte 002h ; a8 02 ; 0xf4f7a
+ je short 04f8bh ; 74 0d ; 0xf4f7c
+ dec bx ; 4b ; 0xf4f7e
+ test bx, bx ; 85 db ; 0xf4f7f
+ jbe short 04f8bh ; 76 08 ; 0xf4f81
+ xor al, al ; 30 c0 ; 0xf4f83
+ mov dx, 00080h ; ba 80 00 ; 0xf4f85
+ out DX, AL ; ee ; 0xf4f88
+ jmp short 04f74h ; eb e9 ; 0xf4f89
+ test bx, bx ; 85 db ; 0xf4f8b keyboard.c:219
+ jne short 04f94h ; 75 05 ; 0xf4f8d
+ xor ax, ax ; 31 c0 ; 0xf4f8f
+ call 04f55h ; e8 c1 ff ; 0xf4f91
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f94 keyboard.c:222
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f97 keyboard.c:223
+ in AL, DX ; ec ; 0xf4f9a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f9b
+ test AL, strict byte 001h ; a8 01 ; 0xf4f9d
+ jne short 04faeh ; 75 0d ; 0xf4f9f
+ dec bx ; 4b ; 0xf4fa1
+ test bx, bx ; 85 db ; 0xf4fa2
+ jbe short 04faeh ; 76 08 ; 0xf4fa4
+ mov AL, strict byte 001h ; b0 01 ; 0xf4fa6
+ mov dx, 00080h ; ba 80 00 ; 0xf4fa8
+ out DX, AL ; ee ; 0xf4fab
+ jmp short 04f97h ; eb e9 ; 0xf4fac
+ test bx, bx ; 85 db ; 0xf4fae keyboard.c:224
+ jne short 04fb8h ; 75 06 ; 0xf4fb0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4fb2
+ call 04f55h ; e8 9d ff ; 0xf4fb5
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fb8 keyboard.c:227
+ in AL, DX ; ec ; 0xf4fbb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fbc
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4fbe
+ je short 04fc9h ; 74 06 ; 0xf4fc1
+ mov ax, 003dfh ; b8 df 03 ; 0xf4fc3 keyboard.c:228
+ call 04f55h ; e8 8c ff ; 0xf4fc6
+ mov AL, strict byte 0abh ; b0 ab ; 0xf4fc9 keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fcb
+ out DX, AL ; ee ; 0xf4fce
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fcf keyboard.c:235
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fd2 keyboard.c:236
+ in AL, DX ; ec ; 0xf4fd5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fd6
+ test AL, strict byte 002h ; a8 02 ; 0xf4fd8
+ je short 04fe9h ; 74 0d ; 0xf4fda
+ dec bx ; 4b ; 0xf4fdc
+ test bx, bx ; 85 db ; 0xf4fdd
+ jbe short 04fe9h ; 76 08 ; 0xf4fdf
+ mov AL, strict byte 010h ; b0 10 ; 0xf4fe1
+ mov dx, 00080h ; ba 80 00 ; 0xf4fe3
+ out DX, AL ; ee ; 0xf4fe6
+ jmp short 04fd2h ; eb e9 ; 0xf4fe7
+ test bx, bx ; 85 db ; 0xf4fe9 keyboard.c:237
+ jne short 04ff3h ; 75 06 ; 0xf4feb
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4fed
+ call 04f55h ; e8 62 ff ; 0xf4ff0
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4ff3 keyboard.c:240
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4ff6 keyboard.c:241
+ in AL, DX ; ec ; 0xf4ff9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4ffa
+ test AL, strict byte 001h ; a8 01 ; 0xf4ffc
+ jne short 0500dh ; 75 0d ; 0xf4ffe
+ dec bx ; 4b ; 0xf5000
+ test bx, bx ; 85 db ; 0xf5001
+ jbe short 0500dh ; 76 08 ; 0xf5003
+ mov AL, strict byte 011h ; b0 11 ; 0xf5005
+ mov dx, 00080h ; ba 80 00 ; 0xf5007
+ out DX, AL ; ee ; 0xf500a
+ jmp short 04ff6h ; eb e9 ; 0xf500b
+ test bx, bx ; 85 db ; 0xf500d keyboard.c:242
+ jne short 05017h ; 75 06 ; 0xf500f
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf5011
+ call 04f55h ; e8 3e ff ; 0xf5014
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5017 keyboard.c:246
+ in AL, DX ; ec ; 0xf501a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf501b
+ test ax, ax ; 85 c0 ; 0xf501d
+ je short 05027h ; 74 06 ; 0xf501f
+ mov ax, 003e0h ; b8 e0 03 ; 0xf5021 keyboard.c:247
+ call 04f55h ; e8 2e ff ; 0xf5024
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf5027 keyboard.c:253
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5029
+ out DX, AL ; ee ; 0xf502c
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf502d keyboard.c:256
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5030 keyboard.c:257
+ in AL, DX ; ec ; 0xf5033
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5034
+ test AL, strict byte 002h ; a8 02 ; 0xf5036
+ je short 05047h ; 74 0d ; 0xf5038
+ dec bx ; 4b ; 0xf503a
+ test bx, bx ; 85 db ; 0xf503b
+ jbe short 05047h ; 76 08 ; 0xf503d
+ mov AL, strict byte 020h ; b0 20 ; 0xf503f
+ mov dx, 00080h ; ba 80 00 ; 0xf5041
+ out DX, AL ; ee ; 0xf5044
+ jmp short 05030h ; eb e9 ; 0xf5045
+ test bx, bx ; 85 db ; 0xf5047 keyboard.c:258
+ jne short 05051h ; 75 06 ; 0xf5049
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf504b
+ call 04f55h ; e8 04 ff ; 0xf504e
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5051 keyboard.c:261
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5054 keyboard.c:262
+ in AL, DX ; ec ; 0xf5057
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5058
+ test AL, strict byte 001h ; a8 01 ; 0xf505a
+ jne short 0506bh ; 75 0d ; 0xf505c
+ dec bx ; 4b ; 0xf505e
+ test bx, bx ; 85 db ; 0xf505f
+ jbe short 0506bh ; 76 08 ; 0xf5061
+ mov AL, strict byte 021h ; b0 21 ; 0xf5063
+ mov dx, 00080h ; ba 80 00 ; 0xf5065
+ out DX, AL ; ee ; 0xf5068
+ jmp short 05054h ; eb e9 ; 0xf5069
+ test bx, bx ; 85 db ; 0xf506b keyboard.c:263
+ jne short 05075h ; 75 06 ; 0xf506d
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf506f
+ call 04f55h ; e8 e0 fe ; 0xf5072
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5075 keyboard.c:266
+ in AL, DX ; ec ; 0xf5078
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5079
+ cmp ax, 000fah ; 3d fa 00 ; 0xf507b
+ je short 05086h ; 74 06 ; 0xf507e
+ mov ax, 003e1h ; b8 e1 03 ; 0xf5080 keyboard.c:267
+ call 04f55h ; e8 cf fe ; 0xf5083
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5086 keyboard.c:271
+ in AL, DX ; ec ; 0xf5089
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf508a
+ test AL, strict byte 001h ; a8 01 ; 0xf508c
+ jne short 05098h ; 75 08 ; 0xf508e
+ mov AL, strict byte 031h ; b0 31 ; 0xf5090
+ mov dx, 00080h ; ba 80 00 ; 0xf5092
+ out DX, AL ; ee ; 0xf5095
+ jmp short 05086h ; eb ee ; 0xf5096
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5098 keyboard.c:273
+ in AL, DX ; ec ; 0xf509b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf509c
+ cmp ax, 000aah ; 3d aa 00 ; 0xf509e
+ je short 050b1h ; 74 0e ; 0xf50a1
+ in AL, DX ; ec ; 0xf50a3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50a4
+ cmp ax, 000aah ; 3d aa 00 ; 0xf50a6
+ je short 050b1h ; 74 06 ; 0xf50a9
+ mov ax, 003e2h ; b8 e2 03 ; 0xf50ab keyboard.c:274
+ call 04f55h ; e8 a4 fe ; 0xf50ae
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf50b1 keyboard.c:278
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50b3
+ out DX, AL ; ee ; 0xf50b6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50b7 keyboard.c:281
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50ba keyboard.c:282
+ in AL, DX ; ec ; 0xf50bd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50be
+ test AL, strict byte 002h ; a8 02 ; 0xf50c0
+ je short 050d1h ; 74 0d ; 0xf50c2
+ dec bx ; 4b ; 0xf50c4
+ test bx, bx ; 85 db ; 0xf50c5
+ jbe short 050d1h ; 76 08 ; 0xf50c7
+ mov AL, strict byte 040h ; b0 40 ; 0xf50c9
+ mov dx, 00080h ; ba 80 00 ; 0xf50cb
+ out DX, AL ; ee ; 0xf50ce
+ jmp short 050bah ; eb e9 ; 0xf50cf
+ test bx, bx ; 85 db ; 0xf50d1 keyboard.c:283
+ jne short 050dbh ; 75 06 ; 0xf50d3
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf50d5
+ call 04f55h ; e8 7a fe ; 0xf50d8
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50db keyboard.c:286
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50de keyboard.c:287
+ in AL, DX ; ec ; 0xf50e1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50e2
+ test AL, strict byte 001h ; a8 01 ; 0xf50e4
+ jne short 050f5h ; 75 0d ; 0xf50e6
+ dec bx ; 4b ; 0xf50e8
+ test bx, bx ; 85 db ; 0xf50e9
+ jbe short 050f5h ; 76 08 ; 0xf50eb
+ mov AL, strict byte 041h ; b0 41 ; 0xf50ed
+ mov dx, 00080h ; ba 80 00 ; 0xf50ef
+ out DX, AL ; ee ; 0xf50f2
+ jmp short 050deh ; eb e9 ; 0xf50f3
+ test bx, bx ; 85 db ; 0xf50f5 keyboard.c:288
+ jne short 050ffh ; 75 06 ; 0xf50f7
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf50f9
+ call 04f55h ; e8 56 fe ; 0xf50fc
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50ff keyboard.c:291
+ in AL, DX ; ec ; 0xf5102
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5103
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5105
+ je short 05110h ; 74 06 ; 0xf5108
+ mov ax, 003e3h ; b8 e3 03 ; 0xf510a keyboard.c:292
+ call 04f55h ; e8 45 fe ; 0xf510d
+ mov AL, strict byte 060h ; b0 60 ; 0xf5110 keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5112
+ out DX, AL ; ee ; 0xf5115
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5116 keyboard.c:299
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5119 keyboard.c:300
+ in AL, DX ; ec ; 0xf511c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf511d
+ test AL, strict byte 002h ; a8 02 ; 0xf511f
+ je short 05130h ; 74 0d ; 0xf5121
+ dec bx ; 4b ; 0xf5123
+ test bx, bx ; 85 db ; 0xf5124
+ jbe short 05130h ; 76 08 ; 0xf5126
+ mov AL, strict byte 050h ; b0 50 ; 0xf5128
+ mov dx, 00080h ; ba 80 00 ; 0xf512a
+ out DX, AL ; ee ; 0xf512d
+ jmp short 05119h ; eb e9 ; 0xf512e
+ test bx, bx ; 85 db ; 0xf5130 keyboard.c:301
+ jne short 0513ah ; 75 06 ; 0xf5132
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf5134
+ call 04f55h ; e8 1b fe ; 0xf5137
+ mov AL, strict byte 065h ; b0 65 ; 0xf513a keyboard.c:304
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf513c
+ out DX, AL ; ee ; 0xf513f
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5140 keyboard.c:307
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5143 keyboard.c:308
+ in AL, DX ; ec ; 0xf5146
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5147
+ test AL, strict byte 002h ; a8 02 ; 0xf5149
+ je short 0515ah ; 74 0d ; 0xf514b
+ dec bx ; 4b ; 0xf514d
+ test bx, bx ; 85 db ; 0xf514e
+ jbe short 0515ah ; 76 08 ; 0xf5150
+ mov AL, strict byte 060h ; b0 60 ; 0xf5152
+ mov dx, 00080h ; ba 80 00 ; 0xf5154
+ out DX, AL ; ee ; 0xf5157
+ jmp short 05143h ; eb e9 ; 0xf5158
+ test bx, bx ; 85 db ; 0xf515a keyboard.c:309
+ jne short 05164h ; 75 06 ; 0xf515c
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf515e
+ call 04f55h ; e8 f1 fd ; 0xf5161
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf5164 keyboard.c:312
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5166
+ out DX, AL ; ee ; 0xf5169
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf516a keyboard.c:315
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf516d keyboard.c:316
+ in AL, DX ; ec ; 0xf5170
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5171
+ test AL, strict byte 002h ; a8 02 ; 0xf5173
+ je short 05184h ; 74 0d ; 0xf5175
+ dec bx ; 4b ; 0xf5177
+ test bx, bx ; 85 db ; 0xf5178
+ jbe short 05184h ; 76 08 ; 0xf517a
+ mov AL, strict byte 070h ; b0 70 ; 0xf517c
+ mov dx, 00080h ; ba 80 00 ; 0xf517e
+ out DX, AL ; ee ; 0xf5181
+ jmp short 0516dh ; eb e9 ; 0xf5182
+ test bx, bx ; 85 db ; 0xf5184 keyboard.c:317
+ jne short 0518eh ; 75 06 ; 0xf5186
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf5188
+ call 04f55h ; e8 c7 fd ; 0xf518b
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf518e keyboard.c:320
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5191 keyboard.c:321
+ in AL, DX ; ec ; 0xf5194
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5195
+ test AL, strict byte 001h ; a8 01 ; 0xf5197
+ jne short 051a8h ; 75 0d ; 0xf5199
+ dec bx ; 4b ; 0xf519b
+ test bx, bx ; 85 db ; 0xf519c
+ jbe short 051a8h ; 76 08 ; 0xf519e
+ mov AL, strict byte 071h ; b0 71 ; 0xf51a0
+ mov dx, 00080h ; ba 80 00 ; 0xf51a2
+ out DX, AL ; ee ; 0xf51a5
+ jmp short 05191h ; eb e9 ; 0xf51a6
+ test bx, bx ; 85 db ; 0xf51a8 keyboard.c:322
+ jne short 051b2h ; 75 06 ; 0xf51aa
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf51ac
+ call 04f55h ; e8 a3 fd ; 0xf51af
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf51b2 keyboard.c:325
+ in AL, DX ; ec ; 0xf51b5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51b6
+ cmp ax, 000fah ; 3d fa 00 ; 0xf51b8
+ je short 051c3h ; 74 06 ; 0xf51bb
+ mov ax, 003e4h ; b8 e4 03 ; 0xf51bd keyboard.c:326
+ call 04f55h ; e8 92 fd ; 0xf51c0
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf51c3 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf51c5
+ out DX, AL ; ee ; 0xf51c8
+ xor ax, ax ; 31 c0 ; 0xf51c9 keyboard.c:335
+ call 065ebh ; e8 1d 14 ; 0xf51cb
+ mov sp, bp ; 89 ec ; 0xf51ce keyboard.c:336
+ pop bp ; 5d ; 0xf51d0
+ retn ; c3 ; 0xf51d1
+ ; disGetNextSymbol 0xf51d2 LB 0x4e73 -> off=0x0 cb=0000000000000053 uValue=00000000000f3bd2 'enqueue_key'
+enqueue_key: ; 0xf51d2 LB 0x53
+ push bx ; 53 ; 0xf51d2 keyboard.c:339
+ push cx ; 51 ; 0xf51d3
+ push si ; 56 ; 0xf51d4
+ push di ; 57 ; 0xf51d5
+ push bp ; 55 ; 0xf51d6
+ mov bp, sp ; 89 e5 ; 0xf51d7
+ mov dh, al ; 88 c6 ; 0xf51d9
+ mov bx, 00080h ; bb 80 00 ; 0xf51db keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51de
+ mov es, ax ; 8e c0 ; 0xf51e1
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf51e3
+ mov bx, 00082h ; bb 82 00 ; 0xf51e6 keyboard.c:48
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf51e9
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf51ec keyboard.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf51ef
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf51f2 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf51f5
+ mov bx, ax ; 89 c3 ; 0xf51f8 keyboard.c:354
+ inc ax ; 40 ; 0xf51fa keyboard.c:355
+ inc ax ; 40 ; 0xf51fb
+ cmp ax, si ; 39 f0 ; 0xf51fc keyboard.c:356
+ jc short 05202h ; 72 02 ; 0xf51fe
+ mov ax, di ; 89 f8 ; 0xf5200 keyboard.c:357
+ cmp ax, cx ; 39 c8 ; 0xf5202 keyboard.c:359
+ jne short 0520ah ; 75 04 ; 0xf5204
+ xor ax, cx ; 31 c8 ; 0xf5206 keyboard.c:360
+ jmp short 0521fh ; eb 15 ; 0xf5208
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf520a keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf520d
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf520f
+ inc bx ; 43 ; 0xf5212 keyboard.c:363
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5213 keyboard.c:43
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5216 keyboard.c:53
+ mov word [es:bx], ax ; 26 89 07 ; 0xf5219
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf521c keyboard.c:365
+ pop bp ; 5d ; 0xf521f keyboard.c:366
+ pop di ; 5f ; 0xf5220
+ pop si ; 5e ; 0xf5221
+ pop cx ; 59 ; 0xf5222
+ pop bx ; 5b ; 0xf5223
+ retn ; c3 ; 0xf5224
+ ; disGetNextSymbol 0xf5225 LB 0x4e20 -> off=0x35 cb=00000000000003cd uValue=00000000000f3c5a 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 0e6h, 054h, 036h, 053h, 0dfh, 052h, 0dfh, 052h, 09bh, 053h, 0bah, 052h, 0eeh, 053h, 049h
+ db 054h, 0cbh, 054h, 0aeh, 054h, 066h, 053h, 0dfh, 052h, 0dfh, 052h, 0c7h, 053h, 0d1h, 052h, 031h
+ db 054h, 096h, 054h, 0c6h, 054h
+int09_function: ; 0xf525a LB 0x3cd
+ push bp ; 55 ; 0xf525a keyboard.c:371
+ mov bp, sp ; 89 e5 ; 0xf525b
+ push si ; 56 ; 0xf525d
+ push di ; 57 ; 0xf525e
+ push ax ; 50 ; 0xf525f
+ push ax ; 50 ; 0xf5260
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5261 keyboard.c:382
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf5264
+ test al, al ; 84 c0 ; 0xf5267 keyboard.c:384
+ jne short 05284h ; 75 19 ; 0xf5269
+ mov bx, 00db2h ; bb b2 0d ; 0xf526b keyboard.c:385
+ mov cx, ds ; 8c d9 ; 0xf526e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5270
+ call 019d3h ; e8 5d c7 ; 0xf5273
+ push 00599h ; 68 99 05 ; 0xf5276
+ push strict byte 00004h ; 6a 04 ; 0xf5279
+ call 01a14h ; e8 96 c7 ; 0xf527b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf527e
+ jmp near 0532fh ; e9 ab 00 ; 0xf5281 keyboard.c:386
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5284 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5287
+ mov es, ax ; 8e c0 ; 0xf528a
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf528c
+ mov dl, bl ; 88 da ; 0xf528f keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf5291 keyboard.c:38
+ mov bh, byte [es:si] ; 26 8a 3c ; 0xf5294
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf5297 keyboard.c:39
+ mov si, strict word 00017h ; be 17 00 ; 0xf529a keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf529d
+ mov dh, ah ; 88 e6 ; 0xf52a0 keyboard.c:39
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52a2 keyboard.c:394
+ push CS ; 0e ; 0xf52a5
+ pop ES ; 07 ; 0xf52a6
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf52a7
+ mov di, 05225h ; bf 25 52 ; 0xf52aa
+ repne scasb ; f2 ae ; 0xf52ad
+ sal cx, 1 ; d1 e1 ; 0xf52af
+ mov di, cx ; 89 cf ; 0xf52b1
+ mov si, word [cs:di+05236h] ; 2e 8b b5 36 52 ; 0xf52b3
+ jmp si ; ff e6 ; 0xf52b8
+ xor dh, 040h ; 80 f6 40 ; 0xf52ba keyboard.c:396
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf52bd keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52c0
+ mov es, ax ; 8e c0 ; 0xf52c3
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf52c5
+ or dl, 040h ; 80 ca 40 ; 0xf52c8 keyboard.c:398
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52cb keyboard.c:43
+ jmp near 054c0h ; e9 ef 01 ; 0xf52ce
+ and dl, 0bfh ; 80 e2 bf ; 0xf52d1 keyboard.c:402
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52d4 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52d7
+ mov es, ax ; 8e c0 ; 0xf52da
+ jmp near 054c0h ; e9 e1 01 ; 0xf52dc
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf52df keyboard.c:411
+ jne near 05310h ; 0f 85 29 00 ; 0xf52e3
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52e7 keyboard.c:412
+ and AL, strict byte 07fh ; 24 7f ; 0xf52ea
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf52ec
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf52ee
+ movzx bx, al ; 0f b6 d8 ; 0xf52f1
+ inc bx ; 43 ; 0xf52f4
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf52f5 keyboard.c:413
+ je short 05303h ; 74 08 ; 0xf52f9
+ mov al, bl ; 88 d8 ; 0xf52fb keyboard.c:414
+ not al ; f6 d0 ; 0xf52fd
+ and dh, al ; 20 c6 ; 0xf52ff
+ jmp short 05305h ; eb 02 ; 0xf5301 keyboard.c:415
+ or dh, bl ; 08 de ; 0xf5303 keyboard.c:416
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5305 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5308
+ mov es, ax ; 8e c0 ; 0xf530b
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf530d
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5310 keyboard.c:419
+ and AL, strict byte 07fh ; 24 7f ; 0xf5313
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf5315
+ je short 0531dh ; 74 04 ; 0xf5317
+ and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf5319
+ and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf531d
+ mov bx, 00096h ; bb 96 00 ; 0xf5321
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5324
+ mov es, ax ; 8e c0 ; 0xf5327
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5329
+ mov byte [es:bx], al ; 26 88 07 ; 0xf532c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf532f
+ pop di ; 5f ; 0xf5332
+ pop si ; 5e ; 0xf5333
+ pop bp ; 5d ; 0xf5334
+ retn ; c3 ; 0xf5335
+ test bh, 001h ; f6 c7 01 ; 0xf5336 keyboard.c:422
+ jne short 05310h ; 75 d5 ; 0xf5339
+ or dh, 004h ; 80 ce 04 ; 0xf533b keyboard.c:423
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf533e keyboard.c:41
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5341
+ mov es, ax ; 8e c0 ; 0xf5344 keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5346
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf5349 keyboard.c:425
+ je short 0535bh ; 74 0c ; 0xf534d
+ or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf534f keyboard.c:426
+ mov bx, 00096h ; bb 96 00 ; 0xf5353 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5356
+ jmp short 05361h ; eb 06 ; 0xf5359 keyboard.c:428
+ or dl, 001h ; 80 ca 01 ; 0xf535b keyboard.c:429
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf535e keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5361 keyboard.c:43
+ jmp short 05310h ; eb aa ; 0xf5364 keyboard.c:433
+ test bh, 001h ; f6 c7 01 ; 0xf5366 keyboard.c:435
+ jne short 05310h ; 75 a5 ; 0xf5369
+ and dh, 0fbh ; 80 e6 fb ; 0xf536b keyboard.c:436
+ mov si, strict word 00017h ; be 17 00 ; 0xf536e keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5371
+ mov es, ax ; 8e c0 ; 0xf5374
+ mov byte [es:si], dh ; 26 88 34 ; 0xf5376
+ test bh, 002h ; f6 c7 02 ; 0xf5379 keyboard.c:438
+ je short 0538fh ; 74 11 ; 0xf537c
+ and bh, 0fbh ; 80 e7 fb ; 0xf537e keyboard.c:439
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf5381
+ mov bx, 00096h ; bb 96 00 ; 0xf5384 keyboard.c:43
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5387
+ mov byte [es:bx], al ; 26 88 07 ; 0xf538a
+ jmp short 05310h ; eb 81 ; 0xf538d keyboard.c:441
+ and dl, 0feh ; 80 e2 fe ; 0xf538f keyboard.c:442
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5392 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5395
+ jmp near 05310h ; e9 75 ff ; 0xf5398 keyboard.c:446
+ or dh, 008h ; 80 ce 08 ; 0xf539b keyboard.c:449
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf539e keyboard.c:41
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf53a1
+ mov es, ax ; 8e c0 ; 0xf53a4 keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf53a6
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf53a9 keyboard.c:451
+ je short 053bbh ; 74 0c ; 0xf53ad
+ or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf53af keyboard.c:452
+ mov bx, 00096h ; bb 96 00 ; 0xf53b3 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf53b6
+ jmp short 053c1h ; eb 06 ; 0xf53b9 keyboard.c:454
+ or dl, 002h ; 80 ca 02 ; 0xf53bb keyboard.c:455
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53be keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53c1 keyboard.c:43
+ jmp near 05310h ; e9 49 ff ; 0xf53c4 keyboard.c:458
+ and dh, 0f7h ; 80 e6 f7 ; 0xf53c7 keyboard.c:460
+ mov si, strict word 00017h ; be 17 00 ; 0xf53ca keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53cd
+ mov es, ax ; 8e c0 ; 0xf53d0
+ mov byte [es:si], dh ; 26 88 34 ; 0xf53d2
+ test bh, 002h ; f6 c7 02 ; 0xf53d5 keyboard.c:462
+ je short 053e2h ; 74 08 ; 0xf53d8
+ and bh, 0f7h ; 80 e7 f7 ; 0xf53da keyboard.c:463
+ mov byte [bp-008h], bh ; 88 7e f8 ; 0xf53dd
+ jmp short 05384h ; eb a2 ; 0xf53e0 keyboard.c:464
+ and dl, 0fdh ; 80 e2 fd ; 0xf53e2 keyboard.c:466
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53e5 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53e8
+ jmp near 05310h ; e9 22 ff ; 0xf53eb keyboard.c:469
+ test bh, 003h ; f6 c7 03 ; 0xf53ee keyboard.c:472
+ jne short 05407h ; 75 14 ; 0xf53f1
+ or dl, 020h ; 80 ca 20 ; 0xf53f3 keyboard.c:474
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53f6 keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf53f9
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53fb
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53fe keyboard.c:43
+ xor dh, 020h ; 80 f6 20 ; 0xf5401 keyboard.c:476
+ jmp near 0548dh ; e9 86 00 ; 0xf5404 keyboard.c:477
+ or dl, 008h ; 80 ca 08 ; 0xf5407 keyboard.c:480
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf540a keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf540d
+ mov es, ax ; 8e c0 ; 0xf5410 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5412
+ mov ax, 000aeh ; b8 ae 00 ; 0xf5415 keyboard.c:484
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5418
+ out DX, AL ; ee ; 0xf541b
+ call 0e034h ; e8 15 8c ; 0xf541c keyboard.c:485
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf541f keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5422
+ mov es, ax ; 8e c0 ; 0xf5425
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5427
+ test AL, strict byte 008h ; a8 08 ; 0xf542a keyboard.c:39
+ jne short 0541fh ; 75 f1 ; 0xf542c
+ jmp near 05310h ; e9 df fe ; 0xf542e keyboard.c:492
+ test bh, 003h ; f6 c7 03 ; 0xf5431 keyboard.c:494
+ jne near 05310h ; 0f 85 d8 fe ; 0xf5434
+ and dl, 0dfh ; 80 e2 df ; 0xf5438 keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf543b keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf543e
+ mov es, ax ; 8e c0 ; 0xf5441
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5443
+ jmp near 05310h ; e9 c7 fe ; 0xf5446 keyboard.c:498
+ test bh, 002h ; f6 c7 02 ; 0xf5449 keyboard.c:501
+ je short 0547ch ; 74 2e ; 0xf544c
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf544e keyboard.c:46
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5451
+ mov es, ax ; 8e c0 ; 0xf5454 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5456
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5459 keyboard.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf545c keyboard.c:53
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf545f keyboard.c:41
+ mov DL, strict byte 080h ; b2 80 ; 0xf5462
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5464 keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf5467 keyboard.c:506
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf546a
+ out DX, AL ; ee ; 0xf546d
+ push bp ; 55 ; 0xf546e keyboard.c:507
+ int 01bh ; cd 1b ; 0xf546f
+ pop bp ; 5d ; 0xf5471
+ xor dx, dx ; 31 d2 ; 0xf5472 keyboard.c:508
+ xor ax, ax ; 31 c0 ; 0xf5474
+ call 051d2h ; e8 59 fd ; 0xf5476
+ jmp near 05310h ; e9 94 fe ; 0xf5479 keyboard.c:509
+ or dl, 010h ; 80 ca 10 ; 0xf547c keyboard.c:510
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf547f keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf5482
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5484
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5487 keyboard.c:43
+ xor dh, 010h ; 80 f6 10 ; 0xf548a keyboard.c:512
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf548d keyboard.c:41
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5490 keyboard.c:43
+ jmp near 05310h ; e9 7a fe ; 0xf5493 keyboard.c:515
+ test bh, 002h ; f6 c7 02 ; 0xf5496 keyboard.c:518
+ jne near 05310h ; 0f 85 73 fe ; 0xf5499
+ and dl, 0efh ; 80 e2 ef ; 0xf549d keyboard.c:519
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54a0 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54a3
+ mov es, ax ; 8e c0 ; 0xf54a6
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54a8
+ jmp near 05310h ; e9 62 fe ; 0xf54ab keyboard.c:522
+ test bl, 004h ; f6 c3 04 ; 0xf54ae keyboard.c:525
+ jne near 05310h ; 0f 85 5b fe ; 0xf54b1
+ or dl, 004h ; 80 ca 04 ; 0xf54b5 keyboard.c:526
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54b8 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54bb
+ mov es, ax ; 8e c0 ; 0xf54be
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54c0
+ jmp near 05310h ; e9 4a fe ; 0xf54c3 keyboard.c:530
+ and dl, 0fbh ; 80 e2 fb ; 0xf54c6 keyboard.c:533
+ jmp short 054b8h ; eb ed ; 0xf54c9 keyboard.c:534
+ mov al, ah ; 88 e0 ; 0xf54cb keyboard.c:539
+ and AL, strict byte 00ch ; 24 0c ; 0xf54cd
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf54cf
+ jne short 054e6h ; 75 13 ; 0xf54d1
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54d3 keyboard.c:51
+ mov es, ax ; 8e c0 ; 0xf54d6
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf54d8
+ mov ax, 01234h ; b8 34 12 ; 0xf54db
+ mov word [es:bx], ax ; 26 89 07 ; 0xf54de keyboard.c:53
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf54e1 keyboard.c:542
+ test dl, 008h ; f6 c2 08 ; 0xf54e6 keyboard.c:548
+ je short 054fch ; 74 11 ; 0xf54e9
+ and dl, 0f7h ; 80 e2 f7 ; 0xf54eb keyboard.c:550
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54ee keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54f1
+ mov es, ax ; 8e c0 ; 0xf54f4
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54f6
+ jmp near 0532fh ; e9 33 fe ; 0xf54f9 keyboard.c:552
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf54fc keyboard.c:555
+ test AL, strict byte 080h ; a8 80 ; 0xf54ff
+ je short 05531h ; 74 2e ; 0xf5501
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf5503 keyboard.c:557
+ jne short 05517h ; 75 10 ; 0xf5505
+ mov bx, 00097h ; bb 97 00 ; 0xf5507 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf550a
+ mov es, ax ; 8e c0 ; 0xf550d
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf550f
+ or ah, 010h ; 80 cc 10 ; 0xf5512 keyboard.c:39
+ jmp short 0552bh ; eb 14 ; 0xf5515 keyboard.c:560
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf5517
+ jne near 05310h ; 0f 85 f3 fd ; 0xf5519
+ mov bx, 00097h ; bb 97 00 ; 0xf551d keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5520
+ mov es, ax ; 8e c0 ; 0xf5523
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5525
+ or ah, 020h ; 80 cc 20 ; 0xf5528 keyboard.c:39
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf552b keyboard.c:43
+ jmp near 05310h ; e9 df fd ; 0xf552e keyboard.c:564
+ cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5531 keyboard.c:566
+ jbe short 05555h ; 76 1e ; 0xf5535
+ mov bx, 00db2h ; bb b2 0d ; 0xf5537 keyboard.c:567
+ mov cx, ds ; 8c d9 ; 0xf553a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf553c
+ call 019d3h ; e8 91 c4 ; 0xf553f
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5542
+ push ax ; 50 ; 0xf5546
+ push 005b3h ; 68 b3 05 ; 0xf5547
+ push strict byte 00004h ; 6a 04 ; 0xf554a
+ call 01a14h ; e8 c5 c4 ; 0xf554c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf554f
+ jmp near 0532fh ; e9 da fd ; 0xf5552 keyboard.c:568
+ test dh, 008h ; f6 c6 08 ; 0xf5555 keyboard.c:570
+ je short 0556ch ; 74 12 ; 0xf5558
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf555a keyboard.c:571
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf555e
+ mov dl, byte [bx+00e06h] ; 8a 97 06 0e ; 0xf5561
+ mov ax, word [bx+00e06h] ; 8b 87 06 0e ; 0xf5565 keyboard.c:572
+ jmp near 055f8h ; e9 8c 00 ; 0xf5569 keyboard.c:573
+ test dh, 004h ; f6 c6 04 ; 0xf556c
+ je short 05583h ; 74 12 ; 0xf556f
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf5571 keyboard.c:574
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf5575
+ mov dl, byte [bx+00e04h] ; 8a 97 04 0e ; 0xf5578
+ mov ax, word [bx+00e04h] ; 8b 87 04 0e ; 0xf557c keyboard.c:575
+ jmp near 055f8h ; e9 75 00 ; 0xf5580 keyboard.c:576
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf5583
+ and AL, strict byte 002h ; 24 02 ; 0xf5586
+ test al, al ; 84 c0 ; 0xf5588
+ jbe short 055a1h ; 76 15 ; 0xf558a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf558c
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf558f
+ jc short 055a1h ; 72 0e ; 0xf5591
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf5593
+ jnbe short 055a1h ; 77 0a ; 0xf5595
+ mov DL, strict byte 0e0h ; b2 e0 ; 0xf5597 keyboard.c:578
+ movzx bx, al ; 0f b6 d8 ; 0xf5599 keyboard.c:579
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf559c
+ jmp short 055f4h ; eb 53 ; 0xf559f keyboard.c:580
+ test dh, 003h ; f6 c6 03 ; 0xf55a1
+ je short 055d3h ; 74 2d ; 0xf55a4
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf55a6 keyboard.c:584
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55aa
+ movzx ax, byte [bx+00e08h] ; 0f b6 87 08 0e ; 0xf55ad
+ movzx dx, dh ; 0f b6 d6 ; 0xf55b2
+ test dx, ax ; 85 c2 ; 0xf55b5
+ je short 055c3h ; 74 0a ; 0xf55b7
+ mov dl, byte [bx+00e00h] ; 8a 97 00 0e ; 0xf55b9 keyboard.c:585
+ mov ax, word [bx+00e00h] ; 8b 87 00 0e ; 0xf55bd keyboard.c:586
+ jmp short 055cbh ; eb 08 ; 0xf55c1 keyboard.c:587
+ mov dl, byte [bx+00e02h] ; 8a 97 02 0e ; 0xf55c3 keyboard.c:588
+ mov ax, word [bx+00e02h] ; 8b 87 02 0e ; 0xf55c7 keyboard.c:589
+ shr ax, 008h ; c1 e8 08 ; 0xf55cb
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf55ce
+ jmp short 055feh ; eb 2b ; 0xf55d1 keyboard.c:591
+ movzx bx, byte [bp-006h] ; 0f b6 5e fa ; 0xf55d3 keyboard.c:593
+ imul bx, bx, strict byte 0000ah ; 6b db 0a ; 0xf55d7
+ movzx si, byte [bx+00e08h] ; 0f b6 b7 08 0e ; 0xf55da
+ movzx ax, dh ; 0f b6 c6 ; 0xf55df
+ test ax, si ; 85 f0 ; 0xf55e2
+ je short 055f0h ; 74 0a ; 0xf55e4
+ mov dl, byte [bx+00e02h] ; 8a 97 02 0e ; 0xf55e6 keyboard.c:594
+ mov ax, word [bx+00e02h] ; 8b 87 02 0e ; 0xf55ea keyboard.c:595
+ jmp short 055f8h ; eb 08 ; 0xf55ee keyboard.c:596
+ mov dl, byte [bx+00e00h] ; 8a 97 00 0e ; 0xf55f0 keyboard.c:597
+ mov ax, word [bx+00e00h] ; 8b 87 00 0e ; 0xf55f4 keyboard.c:598
+ shr ax, 008h ; c1 e8 08 ; 0xf55f8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf55fb
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf55fe keyboard.c:601
+ jne short 0561eh ; 75 1a ; 0xf5602
+ test dl, dl ; 84 d2 ; 0xf5604
+ jne short 0561eh ; 75 16 ; 0xf5606
+ mov bx, 00db2h ; bb b2 0d ; 0xf5608 keyboard.c:602
+ mov cx, ds ; 8c d9 ; 0xf560b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf560d
+ call 019d3h ; e8 c0 c3 ; 0xf5610
+ push 005eah ; 68 ea 05 ; 0xf5613
+ push strict byte 00004h ; 6a 04 ; 0xf5616
+ call 01a14h ; e8 f9 c3 ; 0xf5618
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf561b
+ xor dh, dh ; 30 f6 ; 0xf561e keyboard.c:604
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf5620
+ jmp near 05476h ; e9 4f fe ; 0xf5624
+ ; disGetNextSymbol 0xf5627 LB 0x4a1e -> off=0x0 cb=000000000000006c uValue=00000000000f4027 'dequeue_key'
+dequeue_key: ; 0xf5627 LB 0x6c
+ push si ; 56 ; 0xf5627 keyboard.c:614
+ push di ; 57 ; 0xf5628
+ enter 00002h, 000h ; c8 02 00 00 ; 0xf5629
+ push ax ; 50 ; 0xf562d
+ push dx ; 52 ; 0xf562e
+ mov si, bx ; 89 de ; 0xf562f
+ mov bx, 00080h ; bb 80 00 ; 0xf5631 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5634
+ mov es, ax ; 8e c0 ; 0xf5637
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5639
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf563c
+ mov bx, 00082h ; bb 82 00 ; 0xf563f keyboard.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5642
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5645 keyboard.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf5648
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf564b keyboard.c:48
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf564e
+ cmp bx, ax ; 39 c3 ; 0xf5651 keyboard.c:630
+ je short 0568bh ; 74 36 ; 0xf5653
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5655 keyboard.c:38
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf5658 keyboard.c:632
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf565b keyboard.c:38
+ mov es, cx ; 8e c1 ; 0xf565e keyboard.c:633
+ mov byte [es:si], al ; 26 88 04 ; 0xf5660
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5663 keyboard.c:634
+ mov si, word [bp-004h] ; 8b 76 fc ; 0xf5666
+ mov byte [es:si], ah ; 26 88 24 ; 0xf5669
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf566c keyboard.c:637
+ je short 05686h ; 74 14 ; 0xf5670
+ inc bx ; 43 ; 0xf5672 keyboard.c:638
+ inc bx ; 43 ; 0xf5673
+ cmp bx, dx ; 39 d3 ; 0xf5674 keyboard.c:639
+ jc short 0567bh ; 72 03 ; 0xf5676
+ mov bx, word [bp-002h] ; 8b 5e fe ; 0xf5678 keyboard.c:640
+ mov si, strict word 0001ah ; be 1a 00 ; 0xf567b keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf567e
+ mov es, ax ; 8e c0 ; 0xf5681
+ mov word [es:si], bx ; 26 89 1c ; 0xf5683
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5686 keyboard.c:643
+ jmp short 0568dh ; eb 02 ; 0xf5689
+ xor ax, ax ; 31 c0 ; 0xf568b keyboard.c:646
+ leave ; c9 ; 0xf568d keyboard.c:648
+ pop di ; 5f ; 0xf568e
+ pop si ; 5e ; 0xf568f
+ retn 00002h ; c2 02 00 ; 0xf5690
+ ; disGetNextSymbol 0xf5693 LB 0x49b2 -> off=0x23 cb=00000000000002e7 uValue=00000000000f40b6 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 053h, 059h, 06bh, 057h, 0b2h
+ db 057h, 0ffh, 057h, 011h, 058h, 03bh, 058h, 044h, 058h, 0b5h, 058h, 0e6h, 058h, 014h, 059h, 048h
+ db 059h, 096h, 059h
+int16_function: ; 0xf56b6 LB 0x2e7
+ push bp ; 55 ; 0xf56b6 keyboard.c:665
+ mov bp, sp ; 89 e5 ; 0xf56b7
+ push si ; 56 ; 0xf56b9
+ push di ; 57 ; 0xf56ba
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf56bb
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf56be keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf56c1
+ mov es, ax ; 8e c0 ; 0xf56c4
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf56c6
+ mov bl, al ; 88 c3 ; 0xf56c9 keyboard.c:39
+ mov si, 00097h ; be 97 00 ; 0xf56cb keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf56ce
+ mov bh, ah ; 88 e7 ; 0xf56d1 keyboard.c:39
+ movzx dx, al ; 0f b6 d0 ; 0xf56d3 keyboard.c:674
+ sar dx, 004h ; c1 fa 04 ; 0xf56d6
+ and dl, 007h ; 80 e2 07 ; 0xf56d9
+ mov al, ah ; 88 e0 ; 0xf56dc
+ and AL, strict byte 007h ; 24 07 ; 0xf56de
+ xor ah, ah ; 30 e4 ; 0xf56e0
+ xor al, dl ; 30 d0 ; 0xf56e2
+ test ax, ax ; 85 c0 ; 0xf56e4
+ je short 05749h ; 74 61 ; 0xf56e6
+ cli ; fa ; 0xf56e8 keyboard.c:675
+ mov AL, strict byte 0edh ; b0 ed ; 0xf56e9 keyboard.c:676
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf56eb
+ out DX, AL ; ee ; 0xf56ee
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf56ef keyboard.c:677
+ in AL, DX ; ec ; 0xf56f2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf56f3
+ test AL, strict byte 001h ; a8 01 ; 0xf56f5
+ jne short 05701h ; 75 08 ; 0xf56f7
+ mov AL, strict byte 021h ; b0 21 ; 0xf56f9
+ mov dx, 00080h ; ba 80 00 ; 0xf56fb
+ out DX, AL ; ee ; 0xf56fe
+ jmp short 056efh ; eb ee ; 0xf56ff
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5701 keyboard.c:678
+ in AL, DX ; ec ; 0xf5704
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5705
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5707
+ jne short 05748h ; 75 3c ; 0xf570a
+ and bh, 0c8h ; 80 e7 c8 ; 0xf570c keyboard.c:679
+ movzx dx, bl ; 0f b6 d3 ; 0xf570f keyboard.c:680
+ sar dx, 004h ; c1 fa 04 ; 0xf5712
+ and dx, strict byte 00007h ; 83 e2 07 ; 0xf5715
+ movzx ax, bh ; 0f b6 c7 ; 0xf5718
+ or ax, dx ; 09 d0 ; 0xf571b
+ mov bh, al ; 88 c7 ; 0xf571d
+ and AL, strict byte 007h ; 24 07 ; 0xf571f keyboard.c:681
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5721
+ out DX, AL ; ee ; 0xf5724
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5725 keyboard.c:682
+ in AL, DX ; ec ; 0xf5728
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5729
+ test AL, strict byte 001h ; a8 01 ; 0xf572b
+ jne short 05737h ; 75 08 ; 0xf572d
+ mov AL, strict byte 021h ; b0 21 ; 0xf572f keyboard.c:683
+ mov dx, 00080h ; ba 80 00 ; 0xf5731
+ out DX, AL ; ee ; 0xf5734
+ jmp short 05725h ; eb ee ; 0xf5735
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5737 keyboard.c:684
+ in AL, DX ; ec ; 0xf573a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf573b
+ mov si, 00097h ; be 97 00 ; 0xf573d keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5740
+ mov es, ax ; 8e c0 ; 0xf5743
+ mov byte [es:si], bh ; 26 88 3c ; 0xf5745
+ sti ; fb ; 0xf5748 keyboard.c:687
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5749 keyboard.c:690
+ shr ax, 008h ; c1 e8 08 ; 0xf574c
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf574f
+ jnbe near 05953h ; 0f 87 fd 01 ; 0xf5752
+ push CS ; 0e ; 0xf5756
+ pop ES ; 07 ; 0xf5757
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5758
+ mov di, 05693h ; bf 93 56 ; 0xf575b
+ repne scasb ; f2 ae ; 0xf575e
+ sal cx, 1 ; d1 e1 ; 0xf5760
+ mov di, cx ; 89 cf ; 0xf5762
+ mov ax, word [cs:di+0569eh] ; 2e 8b 85 9e 56 ; 0xf5764
+ jmp ax ; ff e0 ; 0xf5769
+ push strict byte 00001h ; 6a 01 ; 0xf576b keyboard.c:692
+ mov cx, ss ; 8c d1 ; 0xf576d
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf576f
+ mov dx, ss ; 8c d2 ; 0xf5772
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf5774
+ call 05627h ; e8 ad fe ; 0xf5777
+ test ax, ax ; 85 c0 ; 0xf577a
+ jne short 05789h ; 75 0b ; 0xf577c
+ push 00621h ; 68 21 06 ; 0xf577e keyboard.c:693
+ push strict byte 00007h ; 6a 07 ; 0xf5781
+ call 01a14h ; e8 8e c2 ; 0xf5783
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5786
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5789 keyboard.c:695
+ je short 05795h ; 74 06 ; 0xf578d
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf578f
+ je short 0579bh ; 74 06 ; 0xf5793
+ cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf5795 keyboard.c:697
+ jne short 0579fh ; 75 04 ; 0xf5799
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf579b keyboard.c:698
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf579f keyboard.c:699
+ sal dx, 008h ; c1 e2 08 ; 0xf57a3
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf57a6
+ or dx, ax ; 09 c2 ; 0xf57aa
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf57ac
+ jmp near 05996h ; e9 e4 01 ; 0xf57af keyboard.c:700
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf57b2 keyboard.c:704
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf57b5
+ push strict byte 00000h ; 6a 00 ; 0xf57b8 keyboard.c:705
+ mov cx, ss ; 8c d1 ; 0xf57ba
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf57bc
+ mov dx, ss ; 8c d2 ; 0xf57bf
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf57c1
+ call 05627h ; e8 60 fe ; 0xf57c4
+ test ax, ax ; 85 c0 ; 0xf57c7
+ jne short 057d2h ; 75 07 ; 0xf57c9
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf57cb keyboard.c:706
+ jmp near 05996h ; e9 c4 01 ; 0xf57cf keyboard.c:707
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf57d2 keyboard.c:709
+ je short 057deh ; 74 06 ; 0xf57d6
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf57d8
+ je short 057e4h ; 74 06 ; 0xf57dc
+ cmp byte [bp-00ah], 0e0h ; 80 7e f6 e0 ; 0xf57de keyboard.c:711
+ jne short 057e8h ; 75 04 ; 0xf57e2
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf57e4 keyboard.c:712
+ movzx dx, byte [bp-006h] ; 0f b6 56 fa ; 0xf57e8 keyboard.c:713
+ sal dx, 008h ; c1 e2 08 ; 0xf57ec
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf57ef
+ or dx, ax ; 09 c2 ; 0xf57f3
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf57f5
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf57f8 keyboard.c:714
+ jmp near 05996h ; e9 97 01 ; 0xf57fc keyboard.c:715
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf57ff keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5802
+ mov es, ax ; 8e c0 ; 0xf5805
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5807
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf580a keyboard.c:719
+ mov dl, al ; 88 c2 ; 0xf580d
+ jmp short 057ach ; eb 9b ; 0xf580f
+ mov al, byte [bp+010h] ; 8a 46 10 ; 0xf5811 keyboard.c:723
+ movzx dx, al ; 0f b6 d0 ; 0xf5814
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5817
+ shr ax, 008h ; c1 e8 08 ; 0xf581a
+ xor ah, ah ; 30 e4 ; 0xf581d
+ call 051d2h ; e8 b0 f9 ; 0xf581f
+ test ax, ax ; 85 c0 ; 0xf5822
+ jne short 05833h ; 75 0d ; 0xf5824
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5826 keyboard.c:724
+ xor al, al ; 30 c0 ; 0xf5829
+ or AL, strict byte 001h ; 0c 01 ; 0xf582b
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf582d
+ jmp near 05996h ; e9 63 01 ; 0xf5830 keyboard.c:726
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf5833 keyboard.c:727
+ jmp near 05996h ; e9 5b 01 ; 0xf5838 keyboard.c:729
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf583b keyboard.c:742
+ xor al, al ; 30 c0 ; 0xf583e
+ or AL, strict byte 030h ; 0c 30 ; 0xf5840
+ jmp short 0582dh ; eb e9 ; 0xf5842
+ mov byte [bp-008h], 002h ; c6 46 f8 02 ; 0xf5844 keyboard.c:746
+ xor cx, cx ; 31 c9 ; 0xf5848 keyboard.c:747
+ cli ; fa ; 0xf584a keyboard.c:749
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf584b keyboard.c:750
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf584d
+ out DX, AL ; ee ; 0xf5850
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5851 keyboard.c:752
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5854 keyboard.c:753
+ in AL, DX ; ec ; 0xf5857
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5858
+ test AL, strict byte 001h ; a8 01 ; 0xf585a
+ jne short 0586bh ; 75 0d ; 0xf585c
+ dec bx ; 4b ; 0xf585e
+ test bx, bx ; 85 db ; 0xf585f
+ jbe short 0586bh ; 76 08 ; 0xf5861
+ mov dx, 00080h ; ba 80 00 ; 0xf5863 keyboard.c:754
+ in AL, DX ; ec ; 0xf5866
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5867
+ jmp short 05854h ; eb e9 ; 0xf5869
+ test bx, bx ; 85 db ; 0xf586b keyboard.c:755
+ jbe short 058afh ; 76 40 ; 0xf586d
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf586f keyboard.c:756
+ in AL, DX ; ec ; 0xf5872
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5873
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5875
+ jne short 058afh ; 75 35 ; 0xf5878
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf587a keyboard.c:758
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf587d keyboard.c:759
+ in AL, DX ; ec ; 0xf5880
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5881
+ test AL, strict byte 001h ; a8 01 ; 0xf5883
+ jne short 05894h ; 75 0d ; 0xf5885
+ dec bx ; 4b ; 0xf5887
+ test bx, bx ; 85 db ; 0xf5888
+ jbe short 05894h ; 76 08 ; 0xf588a
+ mov dx, 00080h ; ba 80 00 ; 0xf588c keyboard.c:760
+ in AL, DX ; ec ; 0xf588f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5890
+ jmp short 0587dh ; eb e9 ; 0xf5892
+ test bx, bx ; 85 db ; 0xf5894 keyboard.c:761
+ jbe short 058a6h ; 76 0e ; 0xf5896
+ shr cx, 008h ; c1 e9 08 ; 0xf5898 keyboard.c:762
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf589b keyboard.c:763
+ in AL, DX ; ec ; 0xf589e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf589f
+ sal ax, 008h ; c1 e0 08 ; 0xf58a1
+ or cx, ax ; 09 c1 ; 0xf58a4
+ dec byte [bp-008h] ; fe 4e f8 ; 0xf58a6 keyboard.c:765
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf58a9
+ jnbe short 0587ah ; 77 cb ; 0xf58ad
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf58af keyboard.c:768
+ jmp near 05996h ; e9 e1 00 ; 0xf58b2 keyboard.c:769
+ push strict byte 00001h ; 6a 01 ; 0xf58b5 keyboard.c:772
+ mov cx, ss ; 8c d1 ; 0xf58b7
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf58b9
+ mov dx, ss ; 8c d2 ; 0xf58bc
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf58be
+ call 05627h ; e8 63 fd ; 0xf58c1
+ test ax, ax ; 85 c0 ; 0xf58c4
+ jne short 058d3h ; 75 0b ; 0xf58c6
+ push 00621h ; 68 21 06 ; 0xf58c8 keyboard.c:773
+ push strict byte 00007h ; 6a 07 ; 0xf58cb
+ call 01a14h ; e8 44 c1 ; 0xf58cd
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf58d0
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf58d3 keyboard.c:775
+ je near 0579fh ; 0f 84 c4 fe ; 0xf58d7
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf58db
+ je near 0579bh ; 0f 84 b8 fe ; 0xf58df
+ jmp near 0579fh ; e9 b9 fe ; 0xf58e3
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf58e6 keyboard.c:782
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf58e9
+ push strict byte 00000h ; 6a 00 ; 0xf58ec keyboard.c:783
+ mov cx, ss ; 8c d1 ; 0xf58ee
+ lea bx, [bp-00ah] ; 8d 5e f6 ; 0xf58f0
+ mov dx, ss ; 8c d2 ; 0xf58f3
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf58f5
+ call 05627h ; e8 2c fd ; 0xf58f8
+ test ax, ax ; 85 c0 ; 0xf58fb
+ je near 057cbh ; 0f 84 ca fe ; 0xf58fd
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5901 keyboard.c:787
+ je near 057e8h ; 0f 84 df fe ; 0xf5905
+ cmp byte [bp-00ah], 0f0h ; 80 7e f6 f0 ; 0xf5909
+ je near 057e4h ; 0f 84 d3 fe ; 0xf590d
+ jmp near 057e8h ; e9 d4 fe ; 0xf5911
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5914 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5917
+ mov es, ax ; 8e c0 ; 0xf591a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf591c
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf591f keyboard.c:795
+ mov dl, al ; 88 c2 ; 0xf5922
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5924
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5927 keyboard.c:38
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf592a
+ and bl, 073h ; 80 e3 73 ; 0xf592d keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf5930 keyboard.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5933
+ and AL, strict byte 00ch ; 24 0c ; 0xf5936 keyboard.c:39
+ or bl, al ; 08 c3 ; 0xf5938
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf593a keyboard.c:798
+ xor dh, dh ; 30 f6 ; 0xf593d
+ movzx ax, bl ; 0f b6 c3 ; 0xf593f
+ sal ax, 008h ; c1 e0 08 ; 0xf5942
+ jmp near 057aah ; e9 62 fe ; 0xf5945
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5948 keyboard.c:803
+ xor ah, ah ; 30 e4 ; 0xf594b
+ or ah, 080h ; 80 cc 80 ; 0xf594d
+ jmp near 0582dh ; e9 da fe ; 0xf5950
+ mov bx, 00db2h ; bb b2 0d ; 0xf5953 keyboard.c:818
+ mov cx, ds ; 8c d9 ; 0xf5956
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5958
+ call 019d3h ; e8 75 c0 ; 0xf595b
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf595e
+ shr ax, 008h ; c1 e8 08 ; 0xf5961
+ push ax ; 50 ; 0xf5964
+ push 00645h ; 68 45 06 ; 0xf5965
+ push strict byte 00004h ; 6a 04 ; 0xf5968
+ call 01a14h ; e8 a7 c0 ; 0xf596a
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf596d
+ mov bx, 00db2h ; bb b2 0d ; 0xf5970 keyboard.c:819
+ mov cx, ds ; 8c d9 ; 0xf5973
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5975
+ call 019d3h ; e8 58 c0 ; 0xf5978
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf597b
+ push ax ; 50 ; 0xf597e
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf597f
+ push ax ; 50 ; 0xf5982
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf5983
+ push ax ; 50 ; 0xf5986
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5987
+ push ax ; 50 ; 0xf598a
+ push 0066dh ; 68 6d 06 ; 0xf598b
+ push strict byte 00004h ; 6a 04 ; 0xf598e
+ call 01a14h ; e8 81 c0 ; 0xf5990
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5993
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5996 keyboard.c:822
+ pop di ; 5f ; 0xf5999
+ pop si ; 5e ; 0xf599a
+ pop bp ; 5d ; 0xf599b
+ retn ; c3 ; 0xf599c
+ ; disGetNextSymbol 0xf599d LB 0x46a8 -> off=0x0 cb=00000000000000b3 uValue=00000000000f439d 'set_geom_lba'
+set_geom_lba: ; 0xf599d LB 0xb3
+ push bx ; 53 ; 0xf599d disk.c:115
+ push cx ; 51 ; 0xf599e
+ push si ; 56 ; 0xf599f
+ push di ; 57 ; 0xf59a0
+ enter 00008h, 000h ; c8 08 00 00 ; 0xf59a1
+ mov di, ax ; 89 c7 ; 0xf59a5
+ mov es, dx ; 8e c2 ; 0xf59a7
+ mov dword [bp-008h], strict dword 0007e0000h ; 66 c7 46 f8 00 00 7e 00 ; 0xf59a9 disk.c:117
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf59b1 disk.c:119
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59b6 disk.c:122
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf59b9
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf59bc
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf59bf
+ mov si, strict word 00020h ; be 20 00 ; 0xf59c2
+ call 09f90h ; e8 c8 45 ; 0xf59c5
+ test ax, ax ; 85 c0 ; 0xf59c8
+ jne short 059d8h ; 75 0c ; 0xf59ca
+ test bx, bx ; 85 db ; 0xf59cc
+ jne short 059d8h ; 75 08 ; 0xf59ce
+ test cx, cx ; 85 c9 ; 0xf59d0
+ jne short 059d8h ; 75 04 ; 0xf59d2
+ test dx, dx ; 85 d2 ; 0xf59d4
+ je short 059dfh ; 74 07 ; 0xf59d6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf59d8
+ mov si, bx ; 89 de ; 0xf59db
+ jmp short 059e5h ; eb 06 ; 0xf59dd
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf59df
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf59e2
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf59e5
+ xor bx, bx ; 31 db ; 0xf59e8 disk.c:124
+ jmp short 059f1h ; eb 05 ; 0xf59ea
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf59ec
+ jnl short 05a14h ; 7d 23 ; 0xf59ef
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf59f1 disk.c:125
+ cmp si, ax ; 39 c6 ; 0xf59f4
+ jc short 05a02h ; 72 0a ; 0xf59f6
+ jne short 05a0bh ; 75 11 ; 0xf59f8
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf59fa
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf59fd
+ jnbe short 05a0bh ; 77 09 ; 0xf5a00
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a02 disk.c:126
+ inc ax ; 40 ; 0xf5a05
+ shr ax, 1 ; d1 e8 ; 0xf5a06
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5a08
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf5a0b disk.c:127
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5a0e
+ inc bx ; 43 ; 0xf5a11 disk.c:128
+ jmp short 059ech ; eb d8 ; 0xf5a12
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a14 disk.c:130
+ xor dx, dx ; 31 d2 ; 0xf5a17
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5a19
+ xor cx, cx ; 31 c9 ; 0xf5a1c
+ call 09f10h ; e8 ef 44 ; 0xf5a1e
+ mov bx, ax ; 89 c3 ; 0xf5a21
+ mov cx, dx ; 89 d1 ; 0xf5a23
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a25
+ mov dx, si ; 89 f2 ; 0xf5a28
+ call 09f50h ; e8 23 45 ; 0xf5a2a
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5a2d
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5a31 disk.c:131
+ jbe short 05a3ch ; 76 06 ; 0xf5a34
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5a36 disk.c:132
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a3c disk.c:133
+ mov word [es:di], ax ; 26 89 05 ; 0xf5a3f
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5a42 disk.c:134
+ leave ; c9 ; 0xf5a48 disk.c:135
+ pop di ; 5f ; 0xf5a49
+ pop si ; 5e ; 0xf5a4a
+ pop cx ; 59 ; 0xf5a4b
+ pop bx ; 5b ; 0xf5a4c
+ retn 00008h ; c2 08 00 ; 0xf5a4d
+ ; disGetNextSymbol 0xf5a50 LB 0x45f5 -> off=0x0 cb=00000000000002ed uValue=00000000000f4450 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf5a50 LB 0x2ed
+ push si ; 56 ; 0xf5a50 disk.c:137
+ push di ; 57 ; 0xf5a51
+ enter 0000eh, 000h ; c8 0e 00 00 ; 0xf5a52
+ mov di, ax ; 89 c7 ; 0xf5a56
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5a58
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf5a5b
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5a5e
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5a61 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5a64
+ mov es, ax ; 8e c0 ; 0xf5a67
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5a69
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5a6c disk.c:49
+ mov es, dx ; 8e c2 ; 0xf5a6f disk.c:142
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5a71
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5a74
+ jnc short 05a7fh ; 73 06 ; 0xf5a77
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5a79 disk.c:143
+ jmp near 05d37h ; e9 b8 02 ; 0xf5a7c
+ jc near 05b51h ; 0f 82 ce 00 ; 0xf5a7f disk.c:146
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5a83 disk.c:149
+ movzx bx, byte [bp+008h] ; 0f b6 5e 08 ; 0xf5a88 disk.c:150
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf5a8c
+ mov dx, cx ; 89 ca ; 0xf5a8f
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5a91
+ mov es, cx ; 8e c1 ; 0xf5a94
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5a96
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5a9a
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5a9d
+ mov es, cx ; 8e c1 ; 0xf5aa1 disk.c:152
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf5aa3
+ jne short 05ae2h ; 75 38 ; 0xf5aa8
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5aaa disk.c:153
+ db 066h, 026h, 0c7h, 045h, 002h, 074h, 000h, 0ffh, 0ffh
+ ; mov dword [es:di+002h], strict dword 0ffff0074h ; 66 26 c7 45 02 74 00 ff ff; 0xf5aad
+ db 066h, 026h, 0c7h, 045h, 006h, 0ffh, 0ffh, 0ffh, 0ffh
+ ; mov dword [es:di+006h], strict dword 0ffffffffh ; 66 26 c7 45 06 ff ff ff ff; 0xf5ab6 disk.c:154
+ db 066h, 026h, 0c7h, 045h, 00ah, 0ffh, 0ffh, 0ffh, 0ffh
+ ; mov dword [es:di+00ah], strict dword 0ffffffffh ; 66 26 c7 45 0a ff ff ff ff; 0xf5abf disk.c:155
+ db 066h, 026h, 0c7h, 045h, 00eh, 0ffh, 0ffh, 0ffh, 0ffh
+ ; mov dword [es:di+00eh], strict dword 0ffffffffh ; 66 26 c7 45 0e ff ff ff ff; 0xf5ac8 disk.c:156
+ db 066h, 026h, 0c7h, 045h, 012h, 0ffh, 0ffh, 0ffh, 0ffh
+ ; mov dword [es:di+012h], strict dword 0ffffffffh ; 66 26 c7 45 12 ff ff ff ff; 0xf5ad1 disk.c:157
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5ada disk.c:158
+ jmp short 05b51h ; eb 6f ; 0xf5ae0 disk.c:159
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ae2 disk.c:160
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5ae5
+ mov es, cx ; 8e c1 ; 0xf5aeb disk.c:161
+ mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5aed
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5af1
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5af4
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5af8
+ mov es, cx ; 8e c1 ; 0xf5afe disk.c:162
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5b00
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b04
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5b07
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5b0b
+ mov es, cx ; 8e c1 ; 0xf5b11 disk.c:163
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5b13
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b17
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5b1a
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5b1e
+ mov es, cx ; 8e c1 ; 0xf5b24 disk.c:164
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5b26
+ mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5b2a
+ mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5b2e
+ mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5b32
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b36 disk.c:165
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5b39
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5b3d
+ mov bx, si ; 89 f3 ; 0xf5b41 disk.c:166
+ mov si, strict word 00020h ; be 20 00 ; 0xf5b43
+ call 09f90h ; e8 47 44 ; 0xf5b46
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5b49
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5b4d
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b51 disk.c:171
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5b54
+ jc near 05c7ah ; 0f 82 1e 01 ; 0xf5b58
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5b5c disk.c:175
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5b61 disk.c:176
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5b64
+ mov word [es:di+01ah], 00356h ; 26 c7 45 1a 56 03 ; 0xf5b68 disk.c:177
+ movzx cx, byte [bp+008h] ; 0f b6 4e 08 ; 0xf5b6e disk.c:180
+ mov ax, cx ; 89 c8 ; 0xf5b72
+ cwd ; 99 ; 0xf5b74
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5b75
+ sar ax, 1 ; d1 f8 ; 0xf5b77
+ xor ah, ah ; 30 e4 ; 0xf5b79 disk.c:181
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5b7b
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5b7e
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5b81
+ add bx, ax ; 01 c3 ; 0xf5b84
+ mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf5b86
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5b8b
+ mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf5b8e disk.c:182
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5b93
+ mov al, byte [es:bx+00205h] ; 26 8a 87 05 02 ; 0xf5b96 disk.c:183
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5b9b
+ imul bx, cx, strict byte 0001ch ; 6b d9 1c ; 0xf5b9e disk.c:184
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf5ba1
+ mov ah, byte [es:bx+026h] ; 26 8a 67 26 ; 0xf5ba4
+ mov al, byte [es:bx+027h] ; 26 8a 47 27 ; 0xf5ba8 disk.c:185
+ test al, al ; 84 c0 ; 0xf5bac disk.c:187
+ jne short 05bb4h ; 75 04 ; 0xf5bae
+ xor bx, bx ; 31 db ; 0xf5bb0
+ jmp short 05bb7h ; eb 03 ; 0xf5bb2
+ mov bx, strict word 00008h ; bb 08 00 ; 0xf5bb4
+ or bl, 010h ; 80 cb 10 ; 0xf5bb7 disk.c:188
+ movzx dx, byte [bp+008h] ; 0f b6 56 08 ; 0xf5bba disk.c:189
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5bbe
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5bc1
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5bc4
+ add si, dx ; 01 d6 ; 0xf5bc7
+ cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5bc9
+ jne short 05bd3h ; 75 03 ; 0xf5bce
+ or bl, 060h ; 80 cb 60 ; 0xf5bd0 disk.c:190
+ cmp ah, 001h ; 80 fc 01 ; 0xf5bd3 disk.c:194
+ db 00fh, 094h, 0c4h
+ ; sete ah ; 0f 94 c4 ; 0xf5bd6
+ movzx dx, ah ; 0f b6 d4 ; 0xf5bd9
+ or bx, dx ; 09 d3 ; 0xf5bdc
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf5bde disk.c:196
+ db 00fh, 094h, 0c4h
+ ; sete ah ; 0f 94 c4 ; 0xf5be0
+ movzx dx, ah ; 0f b6 d4 ; 0xf5be3
+ or bx, dx ; 09 d3 ; 0xf5be6
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf5be8 disk.c:197
+ jne short 05bf1h ; 75 05 ; 0xf5bea
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5bec
+ jmp short 05bf3h ; eb 02 ; 0xf5bef
+ xor ax, ax ; 31 c0 ; 0xf5bf1
+ or bx, ax ; 09 c3 ; 0xf5bf3
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5bf5 disk.c:199
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5bf8
+ mov si, word [bp-00eh] ; 8b 76 f2 ; 0xf5bfb
+ mov word [es:si+00234h], ax ; 26 89 84 34 02 ; 0xf5bfe
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5c03 disk.c:200
+ mov word [es:si+00236h], ax ; 26 89 84 36 02 ; 0xf5c06
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5c0b disk.c:201
+ cwd ; 99 ; 0xf5c0f
+ mov cx, strict word 00002h ; b9 02 00 ; 0xf5c10
+ idiv cx ; f7 f9 ; 0xf5c13
+ or dl, 00eh ; 80 ca 0e ; 0xf5c15
+ sal dx, 004h ; c1 e2 04 ; 0xf5c18
+ mov byte [es:si+00238h], dl ; 26 88 94 38 02 ; 0xf5c1b
+ mov byte [es:si+00239h], 0cbh ; 26 c6 84 39 02 cb ; 0xf5c20 disk.c:202
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5c26 disk.c:203
+ mov byte [es:si+0023ah], al ; 26 88 84 3a 02 ; 0xf5c29
+ mov word [es:si+0023bh], strict word 00001h ; 26 c7 84 3b 02 01 00 ; 0xf5c2e disk.c:204
+ mov byte [es:si+0023dh], 000h ; 26 c6 84 3d 02 00 ; 0xf5c35 disk.c:206
+ mov word [es:si+0023eh], bx ; 26 89 9c 3e 02 ; 0xf5c3b disk.c:207
+ mov bx, si ; 89 f3 ; 0xf5c40 disk.c:208
+ mov word [es:bx+00240h], strict word 00000h ; 26 c7 87 40 02 00 00 ; 0xf5c42
+ mov byte [es:bx+00242h], 011h ; 26 c6 87 42 02 11 ; 0xf5c49 disk.c:209
+ xor al, al ; 30 c0 ; 0xf5c4f disk.c:211
+ xor ah, ah ; 30 e4 ; 0xf5c51 disk.c:212
+ jmp short 05c5ah ; eb 05 ; 0xf5c53
+ cmp ah, 00fh ; 80 fc 0f ; 0xf5c55
+ jnc short 05c6dh ; 73 13 ; 0xf5c58
+ movzx bx, ah ; 0f b6 dc ; 0xf5c5a disk.c:213
+ add bx, 00356h ; 81 c3 56 03 ; 0xf5c5d
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf5c61 disk.c:38
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5c64
+ add al, dl ; 00 d0 ; 0xf5c67 disk.c:39
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf5c69 disk.c:213
+ jmp short 05c55h ; eb e8 ; 0xf5c6b
+ neg al ; f6 d8 ; 0xf5c6d disk.c:214
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5c6f disk.c:215
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5c72
+ mov byte [es:bx+00243h], al ; 26 88 87 43 02 ; 0xf5c75
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5c7a disk.c:219
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5c7d
+ jc near 05d35h ; 0f 82 b0 00 ; 0xf5c81
+ movzx ax, byte [bp+008h] ; 0f b6 46 08 ; 0xf5c85 disk.c:223
+ cwd ; 99 ; 0xf5c89
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5c8a
+ sar ax, 1 ; d1 f8 ; 0xf5c8c
+ xor ah, ah ; 30 e4 ; 0xf5c8e disk.c:224
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf5c90
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf5c93
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf5c96
+ add bx, ax ; 01 c3 ; 0xf5c99
+ mov al, byte [es:bx+00204h] ; 26 8a 87 04 02 ; 0xf5c9b
+ mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5ca0 disk.c:225
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ca5 disk.c:227
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5ca8
+ db 066h, 026h, 0c7h, 045h, 01eh, 0ddh, 0beh, 024h, 000h
+ ; mov dword [es:di+01eh], strict dword 00024beddh ; 66 26 c7 45 1e dd be 24 00; 0xf5cad disk.c:228
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5cb6 disk.c:231
+ test al, al ; 84 c0 ; 0xf5cbc disk.c:233
+ jne short 05cc9h ; 75 09 ; 0xf5cbe
+ db 066h, 026h, 0c7h, 045h, 024h, 049h, 053h, 041h, 020h
+ ; mov dword [es:di+024h], strict dword 020415349h ; 66 26 c7 45 24 49 53 41 20; 0xf5cc0 disk.c:234
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5cc9 disk.c:242
+ db 066h, 026h, 0c7h, 045h, 028h, 041h, 054h, 041h, 020h
+ ; mov dword [es:di+028h], strict dword 020415441h ; 66 26 c7 45 28 41 54 41 20; 0xf5ccc
+ db 066h, 026h, 0c7h, 045h, 02ch, 020h, 020h, 020h, 020h
+ ; mov dword [es:di+02ch], strict dword 020202020h ; 66 26 c7 45 2c 20 20 20 20; 0xf5cd5 disk.c:246
+ test al, al ; 84 c0 ; 0xf5cde disk.c:251
+ jne short 05cf5h ; 75 13 ; 0xf5ce0
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5ce2 disk.c:252
+ db 066h, 026h, 0c7h, 045h, 032h, 000h, 000h, 000h, 000h
+ ; mov dword [es:di+032h], strict dword 000000000h ; 66 26 c7 45 32 00 00 00 00; 0xf5ce6 disk.c:253
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5cef disk.c:254
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5cf5 disk.c:259
+ and AL, strict byte 001h ; 24 01 ; 0xf5cf8
+ xor ah, ah ; 30 e4 ; 0xf5cfa
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5cfc
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5cff
+ db 066h, 026h, 0c7h, 045h, 03ah, 000h, 000h, 000h, 000h
+ ; mov dword [es:di+03ah], strict dword 000000000h ; 66 26 c7 45 3a 00 00 00 00; 0xf5d03 disk.c:260
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5d0c disk.c:261
+ xor al, al ; 30 c0 ; 0xf5d12 disk.c:263
+ mov AH, strict byte 01eh ; b4 1e ; 0xf5d14 disk.c:264
+ jmp short 05d1dh ; eb 05 ; 0xf5d16
+ cmp ah, 040h ; 80 fc 40 ; 0xf5d18
+ jnc short 05d2ch ; 73 0f ; 0xf5d1b
+ movzx bx, ah ; 0f b6 dc ; 0xf5d1d disk.c:265
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d20
+ add bx, di ; 01 fb ; 0xf5d23
+ add al, byte [es:bx] ; 26 02 07 ; 0xf5d25
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf5d28
+ jmp short 05d18h ; eb ec ; 0xf5d2a
+ neg al ; f6 d8 ; 0xf5d2c disk.c:266
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d2e disk.c:267
+ mov byte [es:di+041h], al ; 26 88 45 41 ; 0xf5d31
+ xor ax, ax ; 31 c0 ; 0xf5d35 disk.c:269
+ leave ; c9 ; 0xf5d37 disk.c:270
+ pop di ; 5f ; 0xf5d38
+ pop si ; 5e ; 0xf5d39
+ retn 00002h ; c2 02 00 ; 0xf5d3a
+ ; disGetNextSymbol 0xf5d3d LB 0x4308 -> off=0x32 cb=000000000000042a uValue=00000000000f476f 'int13_harddisk'
+ db 0fdh, 05dh, 024h, 05eh, 04dh, 05eh, 04dh, 05eh, 04dh, 05eh, 032h, 060h, 05bh, 061h, 05bh, 061h
+ db 04bh, 060h, 038h, 061h, 05bh, 061h, 05bh, 061h, 038h, 061h, 038h, 061h, 05bh, 061h, 05bh, 061h
+ db 0bfh, 060h, 038h, 061h, 05bh, 061h, 05bh, 061h, 038h, 061h, 0efh, 060h, 05bh, 061h, 05bh, 061h
+ db 05bh, 061h
+int13_harddisk: ; 0xf5d6f LB 0x42a
+ push bp ; 55 ; 0xf5d6f disk.c:272
+ mov bp, sp ; 89 e5 ; 0xf5d70
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5d72
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5d75 disk.c:283
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5d79 disk.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf5d7c
+ mov es, dx ; 8e c2 ; 0xf5d7f
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf5d81
+ mov si, 00122h ; be 22 01 ; 0xf5d84 disk.c:49
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5d87
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5d8a disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5d8d
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5d91 disk.c:289
+ xor dh, dh ; 30 f6 ; 0xf5d94
+ cmp dx, 00080h ; 81 fa 80 00 ; 0xf5d96
+ jc short 05da2h ; 72 06 ; 0xf5d9a
+ cmp dx, 00090h ; 81 fa 90 00 ; 0xf5d9c
+ jc short 05dc0h ; 72 1e ; 0xf5da0
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5da2 disk.c:290
+ xor ah, ah ; 30 e4 ; 0xf5da5
+ push ax ; 50 ; 0xf5da7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5da8
+ shr ax, 008h ; c1 e8 08 ; 0xf5dab
+ push ax ; 50 ; 0xf5dae
+ push 00690h ; 68 90 06 ; 0xf5daf
+ push 0069fh ; 68 9f 06 ; 0xf5db2
+ push strict byte 00004h ; 6a 04 ; 0xf5db5
+ call 01a14h ; e8 5a bc ; 0xf5db7
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5dba
+ jmp near 06176h ; e9 b6 03 ; 0xf5dbd disk.c:291
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf5dc0 disk.c:295
+ xor dh, dh ; 30 f6 ; 0xf5dc3
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5dc5
+ mov bx, si ; 89 f3 ; 0xf5dc8
+ add bx, dx ; 01 d3 ; 0xf5dca
+ mov bl, byte [es:bx+00163h] ; 26 8a 9f 63 01 ; 0xf5dcc
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf5dd1
+ cmp bl, 010h ; 80 fb 10 ; 0xf5dd4 disk.c:298
+ jc short 05de9h ; 72 10 ; 0xf5dd7
+ push dx ; 52 ; 0xf5dd9 disk.c:299
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5dda
+ shr ax, 008h ; c1 e8 08 ; 0xf5ddd
+ push ax ; 50 ; 0xf5de0
+ push 00690h ; 68 90 06 ; 0xf5de1
+ push 006cah ; 68 ca 06 ; 0xf5de4
+ jmp short 05db5h ; eb cc ; 0xf5de7
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5de9 disk.c:303
+ shr bx, 008h ; c1 eb 08 ; 0xf5dec
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5def
+ jnbe near 0615bh ; 0f 87 65 03 ; 0xf5df2
+ add bx, bx ; 01 db ; 0xf5df6
+ jmp word [cs:bx+05d3dh] ; 2e ff a7 3d 5d ; 0xf5df8
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5dfd disk.c:308
+ jnc near 05e0ch ; 0f 83 07 00 ; 0xf5e01
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5e05 disk.c:310
+ call 01e1dh ; e8 11 c0 ; 0xf5e09
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf5e0c disk.c:311
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e10
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5e13
+ mov es, ax ; 8e c0 ; 0xf5e16
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e18
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf5e1c
+ mov sp, bp ; 89 ec ; 0xf5e20
+ pop bp ; 5d ; 0xf5e22
+ retn ; c3 ; 0xf5e23
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e24 disk.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5e27
+ mov es, ax ; 8e c0 ; 0xf5e2a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5e2c
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5e2f disk.c:316
+ xor bh, bh ; 30 ff ; 0xf5e32
+ movzx dx, al ; 0f b6 d0 ; 0xf5e34
+ sal dx, 008h ; c1 e2 08 ; 0xf5e37
+ or bx, dx ; 09 d3 ; 0xf5e3a
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5e3c
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e3f disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e42
+ test al, al ; 84 c0 ; 0xf5e46 disk.c:319
+ je short 05e10h ; 74 c6 ; 0xf5e48
+ jmp near 06192h ; e9 45 03 ; 0xf5e4a
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5e4d disk.c:327
+ xor dh, dh ; 30 f6 ; 0xf5e50
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf5e52
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5e55 disk.c:328
+ shr di, 008h ; c1 ef 08 ; 0xf5e58
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5e5b disk.c:329
+ xor dh, dh ; 30 f6 ; 0xf5e5e
+ sal dx, 002h ; c1 e2 02 ; 0xf5e60
+ xor dl, dl ; 30 d2 ; 0xf5e63
+ and dh, 003h ; 80 e6 03 ; 0xf5e65
+ or di, dx ; 09 d7 ; 0xf5e68
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5e6a disk.c:330
+ and dx, strict byte 0003fh ; 83 e2 3f ; 0xf5e6d
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf5e70
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf5e73 disk.c:331
+ shr dx, 008h ; c1 ea 08 ; 0xf5e76
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf5e79
+ cmp word [bp-00ch], 00080h ; 81 7e f4 80 00 ; 0xf5e7c disk.c:334
+ jnbe short 05e89h ; 77 06 ; 0xf5e81
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf5e83
+ jne short 05each ; 75 23 ; 0xf5e87
+ mov bx, 00db2h ; bb b2 0d ; 0xf5e89 disk.c:335
+ mov cx, ds ; 8c d9 ; 0xf5e8c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5e8e
+ call 019d3h ; e8 3f bb ; 0xf5e91
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5e94
+ shr ax, 008h ; c1 e8 08 ; 0xf5e97
+ push ax ; 50 ; 0xf5e9a
+ push 00690h ; 68 90 06 ; 0xf5e9b
+ push 006fch ; 68 fc 06 ; 0xf5e9e
+ push strict byte 00004h ; 6a 04 ; 0xf5ea1
+ call 01a14h ; e8 6e bb ; 0xf5ea3
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5ea6
+ jmp near 06176h ; e9 ca 02 ; 0xf5ea9 disk.c:336
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf5eac disk.c:340
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5eb0
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5eb3
+ mov bx, si ; 89 f3 ; 0xf5eb6
+ add bx, dx ; 01 d3 ; 0xf5eb8
+ mov dx, word [es:bx+02ch] ; 26 8b 57 2c ; 0xf5eba
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf5ebe
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5ec1 disk.c:341
+ mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5ec5 disk.c:342
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5ec9
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf5ecc disk.c:345
+ jnc short 05edeh ; 73 0d ; 0xf5ecf
+ cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5ed1
+ jbe short 05edeh ; 76 08 ; 0xf5ed4
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf5ed6
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5ed9
+ jbe short 05f0ch ; 76 2e ; 0xf5edc
+ mov bx, 00db2h ; bb b2 0d ; 0xf5ede disk.c:346
+ mov cx, ds ; 8c d9 ; 0xf5ee1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5ee3
+ call 019d3h ; e8 ea ba ; 0xf5ee6
+ push dword [bp-008h] ; 66 ff 76 f8 ; 0xf5ee9
+ push di ; 57 ; 0xf5eed
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5eee
+ xor ah, ah ; 30 e4 ; 0xf5ef1
+ push ax ; 50 ; 0xf5ef3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ef4
+ shr ax, 008h ; c1 e8 08 ; 0xf5ef7
+ push ax ; 50 ; 0xf5efa
+ push 00690h ; 68 90 06 ; 0xf5efb
+ push 00724h ; 68 24 07 ; 0xf5efe
+ push strict byte 00004h ; 6a 04 ; 0xf5f01
+ call 01a14h ; e8 0e bb ; 0xf5f03
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5f06
+ jmp near 06176h ; e9 6a 02 ; 0xf5f09 disk.c:347
+ mov dx, word [bp+016h] ; 8b 56 16 ; 0xf5f0c disk.c:351
+ shr dx, 008h ; c1 ea 08 ; 0xf5f0f
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf5f12
+ jne short 05f1ah ; 75 03 ; 0xf5f15
+ jmp near 05e0ch ; e9 f2 fe ; 0xf5f17 disk.c:352
+ movzx dx, byte [bp-002h] ; 0f b6 56 fe ; 0xf5f1a disk.c:356
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf5f1e
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5f21
+ mov bx, si ; 89 f3 ; 0xf5f24
+ add bx, dx ; 01 d3 ; 0xf5f26
+ cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5f28
+ jne short 05f3dh ; 75 0f ; 0xf5f2c
+ mov dx, word [es:bx+034h] ; 26 8b 57 34 ; 0xf5f2e
+ cmp dx, word [bp-00ah] ; 3b 56 f6 ; 0xf5f32
+ jne short 05f3dh ; 75 06 ; 0xf5f35
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5f37
+ jc short 05f6ch ; 72 2f ; 0xf5f3b
+ mov ax, di ; 89 f8 ; 0xf5f3d disk.c:357
+ xor dx, dx ; 31 d2 ; 0xf5f3f
+ mov bx, cx ; 89 cb ; 0xf5f41
+ xor cx, cx ; 31 c9 ; 0xf5f43
+ call 09f10h ; e8 c8 3f ; 0xf5f45
+ xor bx, bx ; 31 db ; 0xf5f48
+ add ax, word [bp-008h] ; 03 46 f8 ; 0xf5f4a
+ adc dx, bx ; 11 da ; 0xf5f4d
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5f4f
+ xor cx, cx ; 31 c9 ; 0xf5f52
+ call 09f10h ; e8 b9 3f ; 0xf5f54
+ xor bx, bx ; 31 db ; 0xf5f57
+ add ax, word [bp-006h] ; 03 46 fa ; 0xf5f59
+ adc dx, bx ; 11 da ; 0xf5f5c
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf5f5e
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5f61
+ mov ax, dx ; 89 d0 ; 0xf5f64
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf5f66
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf5f69 disk.c:358
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5f6c disk.c:365
+ db 066h, 026h, 0c7h, 044h, 018h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+018h], strict dword 000000000h ; 66 26 c7 44 18 00 00 00 00; 0xf5f6f
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5f78 disk.c:366
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf5f7e disk.c:369
+ mov word [es:si], dx ; 26 89 14 ; 0xf5f81
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5f84
+ db 066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00; 0xf5f88
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5f91 disk.c:370
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5f94
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5f97
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5f9b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5f9f disk.c:371
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf5fa2
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf5fa6 disk.c:372
+ mov word [es:si+012h], di ; 26 89 7c 12 ; 0xf5fac disk.c:373
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf5fb0 disk.c:374
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf5fb3
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5fb7 disk.c:375
+ mov word [es:si+016h], ax ; 26 89 44 16 ; 0xf5fba
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5fbe disk.c:376
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf5fc1
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf5fc5 disk.c:378
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf5fc9
+ mov bx, si ; 89 f3 ; 0xf5fcc
+ add bx, ax ; 01 c3 ; 0xf5fce
+ movzx ax, byte [es:bx+022h] ; 26 0f b6 47 22 ; 0xf5fd0
+ mov bx, ax ; 89 c3 ; 0xf5fd5
+ sal bx, 002h ; c1 e3 02 ; 0xf5fd7
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fda
+ shr ax, 008h ; c1 e8 08 ; 0xf5fdd
+ add ax, ax ; 01 c0 ; 0xf5fe0
+ add bx, ax ; 01 c3 ; 0xf5fe2
+ push ES ; 06 ; 0xf5fe4
+ push si ; 56 ; 0xf5fe5
+ call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf5fe6
+ mov dx, ax ; 89 c2 ; 0xf5fea
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5fec disk.c:381
+ xor al, al ; 30 c0 ; 0xf5fef
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ff1
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf5ff4
+ or bx, ax ; 09 c3 ; 0xf5ff8
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5ffa
+ test dl, dl ; 84 d2 ; 0xf5ffd disk.c:383
+ je near 05e0ch ; 0f 84 09 fe ; 0xf5fff
+ mov bx, 00db2h ; bb b2 0d ; 0xf6003 disk.c:384
+ mov cx, ds ; 8c d9 ; 0xf6006
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6008
+ call 019d3h ; e8 c5 b9 ; 0xf600b
+ movzx ax, dl ; 0f b6 c2 ; 0xf600e
+ push ax ; 50 ; 0xf6011
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6012
+ shr ax, 008h ; c1 e8 08 ; 0xf6015
+ push ax ; 50 ; 0xf6018
+ push 00690h ; 68 90 06 ; 0xf6019
+ push 0076bh ; 68 6b 07 ; 0xf601c
+ push strict byte 00004h ; 6a 04 ; 0xf601f
+ call 01a14h ; e8 f0 b9 ; 0xf6021
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6024
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6027 disk.c:385
+ xor ah, ah ; 30 e4 ; 0xf602a
+ or ah, 00ch ; 80 cc 0c ; 0xf602c
+ jmp near 0617eh ; e9 4c 01 ; 0xf602f disk.c:386
+ mov bx, 00db2h ; bb b2 0d ; 0xf6032 disk.c:393
+ mov cx, ds ; 8c d9 ; 0xf6035
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6037
+ call 019d3h ; e8 96 b9 ; 0xf603a
+ push 0078ch ; 68 8c 07 ; 0xf603d
+ push strict byte 00004h ; 6a 04 ; 0xf6040
+ call 01a14h ; e8 cf b9 ; 0xf6042
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf6045
+ jmp near 05e0ch ; e9 c1 fd ; 0xf6048 disk.c:394
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf604b disk.c:400
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf604f
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf6052
+ mov bx, si ; 89 f3 ; 0xf6055
+ add bx, ax ; 01 c3 ; 0xf6057
+ mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf6059
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf605d disk.c:401
+ mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf6061 disk.c:402
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf6065
+ movzx dx, byte [es:si+001e2h] ; 26 0f b6 94 e2 01 ; 0xf6068 disk.c:404
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf606e
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf6071 disk.c:407
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf6075 disk.c:408
+ xor dh, dh ; 30 f6 ; 0xf6078
+ dec ax ; 48 ; 0xf607a disk.c:406
+ mov bx, ax ; 89 c3 ; 0xf607b
+ xor bh, ah ; 30 e7 ; 0xf607d
+ sal bx, 008h ; c1 e3 08 ; 0xf607f
+ or dx, bx ; 09 da ; 0xf6082
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf6084
+ mov dx, ax ; 89 c2 ; 0xf6087 disk.c:409
+ shr dx, 002h ; c1 ea 02 ; 0xf6089
+ and dl, 0c0h ; 80 e2 c0 ; 0xf608c
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf608f
+ and AL, strict byte 03fh ; 24 3f ; 0xf6092
+ or dl, al ; 08 c2 ; 0xf6094
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6096
+ mov al, dl ; 88 d0 ; 0xf6099
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf609b
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf609e disk.c:410
+ xor dh, dh ; 30 f6 ; 0xf60a1
+ mov ax, cx ; 89 c8 ; 0xf60a3
+ sal ax, 008h ; c1 e0 08 ; 0xf60a5
+ sub ax, 00100h ; 2d 00 01 ; 0xf60a8
+ or dx, ax ; 09 c2 ; 0xf60ab
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf60ad
+ mov ax, dx ; 89 d0 ; 0xf60b0 disk.c:411
+ xor al, dl ; 30 d0 ; 0xf60b2
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf60b4
+ or dx, ax ; 09 c2 ; 0xf60b7
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf60b9
+ jmp near 05e0ch ; e9 4d fd ; 0xf60bc disk.c:416
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf60bf disk.c:423
+ cwd ; 99 ; 0xf60c3
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf60c4
+ sar ax, 1 ; d1 f8 ; 0xf60c6
+ imul ax, ax, strict byte 00006h ; 6b c0 06 ; 0xf60c8
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf60cb
+ add si, ax ; 01 c6 ; 0xf60ce
+ mov dx, word [es:si+00206h] ; 26 8b 94 06 02 ; 0xf60d0
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf60d5
+ in AL, DX ; ec ; 0xf60d8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf60d9
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf60db disk.c:424
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf60dd
+ jne short 060e4h ; 75 03 ; 0xf60df
+ jmp near 05e0ch ; e9 28 fd ; 0xf60e1 disk.c:425
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf60e4 disk.c:427
+ xor ah, ah ; 30 e4 ; 0xf60e7
+ or ah, 0aah ; 80 cc aa ; 0xf60e9
+ jmp near 0617eh ; e9 8f 00 ; 0xf60ec
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf60ef disk.c:435
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf60f3
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf60f6
+ add si, ax ; 01 c6 ; 0xf60f9
+ mov di, word [es:si+032h] ; 26 8b 7c 32 ; 0xf60fb
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf60ff disk.c:436
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6103
+ mov ax, word [es:si+034h] ; 26 8b 44 34 ; 0xf6106 disk.c:437
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf610a
+ mov ax, di ; 89 f8 ; 0xf610d disk.c:440
+ xor dx, dx ; 31 d2 ; 0xf610f
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6111
+ xor cx, cx ; 31 c9 ; 0xf6114
+ call 09f10h ; e8 f7 3d ; 0xf6116
+ mov bx, word [bp-006h] ; 8b 5e fa ; 0xf6119
+ xor cx, cx ; 31 c9 ; 0xf611c
+ call 09f10h ; e8 ef 3d ; 0xf611e
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf6121
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf6124 disk.c:441
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6127 disk.c:442
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf612a disk.c:444
+ xor ah, ah ; 30 e4 ; 0xf612d
+ or ah, 003h ; 80 cc 03 ; 0xf612f
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6132
+ jmp near 05e10h ; e9 d8 fc ; 0xf6135 disk.c:445
+ mov bx, 00db2h ; bb b2 0d ; 0xf6138 disk.c:453
+ mov cx, ds ; 8c d9 ; 0xf613b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf613d
+ call 019d3h ; e8 90 b8 ; 0xf6140
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6143
+ shr ax, 008h ; c1 e8 08 ; 0xf6146
+ push ax ; 50 ; 0xf6149
+ push 00690h ; 68 90 06 ; 0xf614a
+ push 007a6h ; 68 a6 07 ; 0xf614d
+ push strict byte 00004h ; 6a 04 ; 0xf6150
+ call 01a14h ; e8 bf b8 ; 0xf6152
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6155
+ jmp near 05e0ch ; e9 b1 fc ; 0xf6158 disk.c:454
+ mov bx, 00db2h ; bb b2 0d ; 0xf615b disk.c:461
+ mov cx, ds ; 8c d9 ; 0xf615e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6160
+ call 019d3h ; e8 6d b8 ; 0xf6163
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6166
+ shr ax, 008h ; c1 e8 08 ; 0xf6169
+ push ax ; 50 ; 0xf616c
+ push 00690h ; 68 90 06 ; 0xf616d
+ push 007d9h ; 68 d9 07 ; 0xf6170
+ jmp near 05ea1h ; e9 2b fd ; 0xf6173
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6176 disk.c:467
+ xor ah, ah ; 30 e4 ; 0xf6179
+ or ah, 001h ; 80 cc 01 ; 0xf617b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf617e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6181 disk.c:469
+ shr ax, 008h ; c1 e8 08 ; 0xf6184
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6187 disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf618a
+ mov es, dx ; 8e c2 ; 0xf618d
+ mov byte [es:bx], al ; 26 88 07 ; 0xf618f
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6192 disk.c:471
+ jmp near 05e20h ; e9 87 fc ; 0xf6196 disk.c:472
+ ; disGetNextSymbol 0xf6199 LB 0x3eac -> off=0x20 cb=000000000000029e uValue=00000000000f4bb9 'int13_harddisk_ext'
+ db 049h, 062h, 061h, 062h, 061h, 062h, 061h, 062h, 03fh, 064h, 0cbh, 063h, 061h, 062h, 0d3h, 063h
+ db 03fh, 064h, 024h, 064h, 024h, 064h, 024h, 064h, 024h, 064h, 00ch, 064h, 024h, 064h, 024h, 064h
+int13_harddisk_ext: ; 0xf61b9 LB 0x29e
+ push bp ; 55 ; 0xf61b9 disk.c:482
+ mov bp, sp ; 89 e5 ; 0xf61ba
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf61bc
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf61bf disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf61c2
+ mov es, ax ; 8e c0 ; 0xf61c5
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf61c7
+ mov di, 00122h ; bf 22 01 ; 0xf61ca disk.c:49
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf61cd
+ mov bx, 0008eh ; bb 8e 00 ; 0xf61d0 disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf61d3
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf61d7 disk.c:506
+ xor ah, ah ; 30 e4 ; 0xf61da
+ cmp ax, 00080h ; 3d 80 00 ; 0xf61dc
+ jc short 061e6h ; 72 05 ; 0xf61df
+ cmp ax, 00090h ; 3d 90 00 ; 0xf61e1
+ jc short 06204h ; 72 1e ; 0xf61e4
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf61e6 disk.c:507
+ xor ah, ah ; 30 e4 ; 0xf61e9
+ push ax ; 50 ; 0xf61eb
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61ec
+ shr ax, 008h ; c1 e8 08 ; 0xf61ef
+ push ax ; 50 ; 0xf61f2
+ push 00807h ; 68 07 08 ; 0xf61f3
+ push 0069fh ; 68 9f 06 ; 0xf61f6
+ push strict byte 00004h ; 6a 04 ; 0xf61f9
+ call 01a14h ; e8 16 b8 ; 0xf61fb
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf61fe
+ jmp near 063eah ; e9 e6 01 ; 0xf6201 disk.c:508
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6204 disk.c:512
+ xor ah, ah ; 30 e4 ; 0xf6207
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6209
+ mov bx, di ; 89 fb ; 0xf620c
+ add bx, ax ; 01 c3 ; 0xf620e
+ mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf6210
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf6215
+ cmp dl, 010h ; 80 fa 10 ; 0xf6218 disk.c:515
+ jc short 0622dh ; 72 10 ; 0xf621b
+ push ax ; 50 ; 0xf621d disk.c:516
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf621e
+ shr ax, 008h ; c1 e8 08 ; 0xf6221
+ push ax ; 50 ; 0xf6224
+ push 00807h ; 68 07 08 ; 0xf6225
+ push 006cah ; 68 ca 06 ; 0xf6228
+ jmp short 061f9h ; eb cc ; 0xf622b
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf622d disk.c:520
+ shr bx, 008h ; c1 eb 08 ; 0xf6230
+ sub bx, strict byte 00041h ; 83 eb 41 ; 0xf6233
+ cmp bx, strict byte 0000fh ; 83 fb 0f ; 0xf6236
+ jnbe near 06424h ; 0f 87 e7 01 ; 0xf6239
+ add bx, bx ; 01 db ; 0xf623d
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf623f
+ xor ch, ch ; 30 ed ; 0xf6242
+ jmp word [cs:bx+06199h] ; 2e ff a7 99 61 ; 0xf6244
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf6249 disk.c:522
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf624e disk.c:523
+ xor ah, ah ; 30 e4 ; 0xf6251
+ or ah, 030h ; 80 cc 30 ; 0xf6253
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6256
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf6259 disk.c:524
+ jmp near 06443h ; e9 e2 01 ; 0xf625e disk.c:525
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6261 disk.c:534
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf6264
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf6267
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf626a
+ mov [bp-010h], es ; 8c 46 f0 ; 0xf626d
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6270 disk.c:536
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6274
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf6277 disk.c:537
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf627b
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf627e disk.c:538
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf6282
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf6285 disk.c:541
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf6289
+ xor ax, ax ; 31 c0 ; 0xf628d disk.c:542
+ xor bx, bx ; 31 db ; 0xf628f
+ mov si, strict word 00020h ; be 20 00 ; 0xf6291
+ call 09fa0h ; e8 09 3d ; 0xf6294
+ mov si, ax ; 89 c6 ; 0xf6297
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf6299
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf629c disk.c:543
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf629f
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf62a3
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf62a6
+ or dx, word [bp-016h] ; 0b 56 ea ; 0xf62aa
+ or cx, ax ; 09 c1 ; 0xf62ad
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf62af disk.c:548
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf62b3
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf62b6
+ mov bx, di ; 89 fb ; 0xf62b9
+ add bx, ax ; 01 c3 ; 0xf62bb
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf62bd
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf62c1
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf62c4 disk.c:549
+ cmp si, ax ; 39 c6 ; 0xf62c8
+ jnbe short 062eeh ; 77 22 ; 0xf62ca
+ jne short 06311h ; 75 43 ; 0xf62cc
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf62ce
+ cmp ax, word [es:bx+03ah] ; 26 3b 47 3a ; 0xf62d1
+ jnbe short 062eeh ; 77 17 ; 0xf62d5
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf62d7
+ cmp ax, word [es:bx+03ah] ; 26 3b 47 3a ; 0xf62da
+ jne short 06311h ; 75 31 ; 0xf62de
+ cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf62e0
+ jnbe short 062eeh ; 77 08 ; 0xf62e4
+ jne short 06311h ; 75 29 ; 0xf62e6
+ cmp dx, word [es:bx+036h] ; 26 3b 57 36 ; 0xf62e8
+ jc short 06311h ; 72 23 ; 0xf62ec
+ mov bx, 00db2h ; bb b2 0d ; 0xf62ee disk.c:550
+ mov cx, ds ; 8c d9 ; 0xf62f1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf62f3
+ call 019d3h ; e8 da b6 ; 0xf62f6
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62f9
+ shr ax, 008h ; c1 e8 08 ; 0xf62fc
+ push ax ; 50 ; 0xf62ff
+ push 00807h ; 68 07 08 ; 0xf6300
+ push 0081ah ; 68 1a 08 ; 0xf6303
+ push strict byte 00004h ; 6a 04 ; 0xf6306
+ call 01a14h ; e8 09 b7 ; 0xf6308
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf630b
+ jmp near 063eah ; e9 d9 00 ; 0xf630e disk.c:551
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6311 disk.c:555
+ shr ax, 008h ; c1 e8 08 ; 0xf6314
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6317
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf631a
+ je near 0643fh ; 0f 84 1e 01 ; 0xf631d
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf6321
+ je near 0643fh ; 0f 84 17 01 ; 0xf6324
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6328 disk.c:559
+ db 066h, 026h, 0c7h, 045h, 018h, 000h, 000h, 000h, 000h
+ ; mov dword [es:di+018h], strict dword 000000000h ; 66 26 c7 45 18 00 00 00 00; 0xf632b
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf6334 disk.c:560
+ mov word [es:di+006h], si ; 26 89 75 06 ; 0xf633a disk.c:563
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf633e
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf6341
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf6345
+ mov word [es:di], dx ; 26 89 15 ; 0xf6349
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf634c disk.c:564
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf634f
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf6353
+ mov word [es:di+00ah], ax ; 26 89 45 0a ; 0xf6356
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf635a disk.c:565
+ mov word [es:di+00eh], ax ; 26 89 45 0e ; 0xf635d
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf6361 disk.c:566
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf6367 disk.c:567
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf636d disk.c:568
+ mov byte [es:di+00ch], al ; 26 88 45 0c ; 0xf6370
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6374 disk.c:571
+ add bx, bx ; 01 db ; 0xf6377
+ movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf6379
+ sal ax, 002h ; c1 e0 02 ; 0xf637d
+ add bx, ax ; 01 c3 ; 0xf6380
+ push ES ; 06 ; 0xf6382
+ push di ; 57 ; 0xf6383
+ call word [word bx-00002h] ; ff 97 fe ff ; 0xf6384
+ mov dx, ax ; 89 c2 ; 0xf6388
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf638a disk.c:572
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf638d
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6391
+ les bx, [bp-012h] ; c4 5e ee ; 0xf6394 disk.c:573
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6397
+ test dl, dl ; 84 d2 ; 0xf639b disk.c:575
+ je near 0643fh ; 0f 84 9e 00 ; 0xf639d
+ mov bx, 00db2h ; bb b2 0d ; 0xf63a1 disk.c:576
+ mov cx, ds ; 8c d9 ; 0xf63a4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf63a6
+ call 019d3h ; e8 27 b6 ; 0xf63a9
+ movzx ax, dl ; 0f b6 c2 ; 0xf63ac
+ push ax ; 50 ; 0xf63af
+ push word [bp-008h] ; ff 76 f8 ; 0xf63b0
+ push 00807h ; 68 07 08 ; 0xf63b3
+ push 0076bh ; 68 6b 07 ; 0xf63b6
+ push strict byte 00004h ; 6a 04 ; 0xf63b9
+ call 01a14h ; e8 56 b6 ; 0xf63bb
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf63be
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf63c1 disk.c:577
+ xor ah, ah ; 30 e4 ; 0xf63c4
+ or ah, 00ch ; 80 cc 0c ; 0xf63c6
+ jmp short 063f2h ; eb 27 ; 0xf63c9 disk.c:578
+ or ch, 0b2h ; 80 cd b2 ; 0xf63cb disk.c:590
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf63ce
+ jmp short 063f5h ; eb 22 ; 0xf63d1 disk.c:591
+ movzx ax, byte [bp-002h] ; 0f b6 46 fe ; 0xf63d3 disk.c:595
+ push ax ; 50 ; 0xf63d7
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf63d8
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf63db
+ mov bx, di ; 89 fb ; 0xf63de
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf63e0
+ call 05a50h ; e8 6a f6 ; 0xf63e3
+ test ax, ax ; 85 c0 ; 0xf63e6
+ je short 0643fh ; 74 55 ; 0xf63e8
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf63ea disk.c:596
+ xor ah, ah ; 30 e4 ; 0xf63ed
+ or ah, 001h ; 80 cc 01 ; 0xf63ef
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf63f2
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf63f5
+ shr ax, 008h ; c1 e8 08 ; 0xf63f8
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf63fb
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf63fe
+ mov es, dx ; 8e c2 ; 0xf6401
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6403
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6406
+ jmp short 06453h ; eb 47 ; 0xf640a
+ cmp cx, strict byte 00006h ; 83 f9 06 ; 0xf640c disk.c:603
+ je short 0643fh ; 74 2e ; 0xf640f
+ cmp cx, strict byte 00001h ; 83 f9 01 ; 0xf6411
+ jc short 063eah ; 72 d4 ; 0xf6414
+ jbe short 0643fh ; 76 27 ; 0xf6416
+ cmp cx, strict byte 00003h ; 83 f9 03 ; 0xf6418
+ jc short 063eah ; 72 cd ; 0xf641b
+ cmp cx, strict byte 00004h ; 83 f9 04 ; 0xf641d
+ jbe short 0643fh ; 76 1d ; 0xf6420
+ jmp short 063eah ; eb c6 ; 0xf6422 disk.c:611
+ mov bx, 00db2h ; bb b2 0d ; 0xf6424 disk.c:617
+ mov cx, ds ; 8c d9 ; 0xf6427
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6429
+ call 019d3h ; e8 a4 b5 ; 0xf642c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf642f
+ shr ax, 008h ; c1 e8 08 ; 0xf6432
+ push ax ; 50 ; 0xf6435
+ push 00807h ; 68 07 08 ; 0xf6436
+ push 007d9h ; 68 d9 07 ; 0xf6439
+ jmp near 06306h ; e9 c7 fe ; 0xf643c
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf643f disk.c:630
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf6443 disk.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6446
+ mov es, ax ; 8e c0 ; 0xf6449
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf644b
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf644f disk.c:633
+ mov sp, bp ; 89 ec ; 0xf6453 disk.c:635
+ pop bp ; 5d ; 0xf6455
+ retn ; c3 ; 0xf6456
+ ; disGetNextSymbol 0xf6457 LB 0x3bee -> off=0x0 cb=0000000000000151 uValue=00000000000f4e57 'int14_function'
+int14_function: ; 0xf6457 LB 0x151
+ push bp ; 55 ; 0xf6457 serial.c:60
+ mov bp, sp ; 89 e5 ; 0xf6458
+ push si ; 56 ; 0xf645a
+ push di ; 57 ; 0xf645b
+ sti ; fb ; 0xf645c serial.c:65
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf645d serial.c:67
+ add si, si ; 01 f6 ; 0xf6460
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6462 serial.c:48
+ mov es, ax ; 8e c0 ; 0xf6465
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6467
+ mov bx, si ; 89 f3 ; 0xf646a serial.c:49
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf646c serial.c:68
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf646f
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf6472 serial.c:38
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf6475 serial.c:69
+ jnc near 0659dh ; 0f 83 20 01 ; 0xf6479
+ test si, si ; 85 f6 ; 0xf647d
+ jbe near 0659dh ; 0f 86 1a 01 ; 0xf647f
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6483 serial.c:70
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6486
+ jc short 0649bh ; 72 11 ; 0xf6488
+ jbe short 064f4h ; 76 68 ; 0xf648a
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf648c
+ je near 06586h ; 0f 84 f4 00 ; 0xf648e
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf6492
+ je near 0653fh ; 0f 84 a7 00 ; 0xf6494
+ jmp near 06597h ; e9 fc 00 ; 0xf6498
+ test al, al ; 84 c0 ; 0xf649b
+ jne near 06597h ; 0f 85 f6 00 ; 0xf649d
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf64a1 serial.c:72
+ in AL, DX ; ec ; 0xf64a4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64a5
+ or AL, strict byte 080h ; 0c 80 ; 0xf64a7
+ out DX, AL ; ee ; 0xf64a9
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf64aa
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf64ad serial.c:73
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf64b0
+ jne short 064c0h ; 75 0c ; 0xf64b2
+ mov AL, strict byte 017h ; b0 17 ; 0xf64b4 serial.c:74
+ mov dx, bx ; 89 da ; 0xf64b6
+ out DX, AL ; ee ; 0xf64b8
+ mov AL, strict byte 004h ; b0 04 ; 0xf64b9 serial.c:75
+ mov dx, si ; 89 f2 ; 0xf64bb
+ out DX, AL ; ee ; 0xf64bd
+ jmp short 064d6h ; eb 16 ; 0xf64be serial.c:76
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf64c0 serial.c:77
+ movzx cx, al ; 0f b6 c8 ; 0xf64c2
+ sar cx, 005h ; c1 f9 05 ; 0xf64c5
+ mov ax, 00600h ; b8 00 06 ; 0xf64c8
+ sar ax, CL ; d3 f8 ; 0xf64cb
+ mov dx, bx ; 89 da ; 0xf64cd serial.c:78
+ out DX, AL ; ee ; 0xf64cf
+ shr ax, 008h ; c1 e8 08 ; 0xf64d0 serial.c:79
+ mov dx, si ; 89 f2 ; 0xf64d3
+ out DX, AL ; ee ; 0xf64d5
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf64d6 serial.c:81
+ and AL, strict byte 01fh ; 24 1f ; 0xf64d9
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf64db
+ out DX, AL ; ee ; 0xf64de
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf64df serial.c:82
+ in AL, DX ; ec ; 0xf64e2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64e3
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf64e5
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf64e8 serial.c:83
+ in AL, DX ; ec ; 0xf64eb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64ec
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf64ee
+ jmp near 06578h ; e9 84 00 ; 0xf64f1
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf64f4 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf64f7
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf64fa serial.c:88
+ in AL, DX ; ec ; 0xf64fd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf64fe
+ and ax, strict word 00060h ; 25 60 00 ; 0xf6500
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6503
+ je short 06521h ; 74 19 ; 0xf6506
+ test cl, cl ; 84 c9 ; 0xf6508
+ je short 06521h ; 74 15 ; 0xf650a
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf650c serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf650f
+ mov es, ax ; 8e c0 ; 0xf6512
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf6514
+ cmp ax, si ; 39 f0 ; 0xf6517 serial.c:90
+ je short 064fah ; 74 df ; 0xf6519
+ mov si, ax ; 89 c6 ; 0xf651b serial.c:91
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf651d serial.c:92
+ jmp short 064fah ; eb d9 ; 0xf651f serial.c:94
+ test cl, cl ; 84 c9 ; 0xf6521 serial.c:95
+ je short 0652bh ; 74 06 ; 0xf6523
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6525
+ mov dx, bx ; 89 da ; 0xf6528
+ out DX, AL ; ee ; 0xf652a
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf652b serial.c:96
+ in AL, DX ; ec ; 0xf652e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf652f
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6531
+ test cl, cl ; 84 c9 ; 0xf6534 serial.c:97
+ jne short 06578h ; 75 40 ; 0xf6536
+ or AL, strict byte 080h ; 0c 80 ; 0xf6538
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf653a
+ jmp short 06578h ; eb 39 ; 0xf653d
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf653f serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf6542
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6545 serial.c:102
+ in AL, DX ; ec ; 0xf6548
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6549
+ test AL, strict byte 001h ; a8 01 ; 0xf654b
+ jne short 06568h ; 75 19 ; 0xf654d
+ test cl, cl ; 84 c9 ; 0xf654f
+ je short 06568h ; 74 15 ; 0xf6551
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6553 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6556
+ mov es, ax ; 8e c0 ; 0xf6559
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf655b
+ cmp ax, si ; 39 f0 ; 0xf655e serial.c:104
+ je short 06545h ; 74 e3 ; 0xf6560
+ mov si, ax ; 89 c6 ; 0xf6562 serial.c:105
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf6564 serial.c:106
+ jmp short 06545h ; eb dd ; 0xf6566 serial.c:108
+ test cl, cl ; 84 c9 ; 0xf6568 serial.c:109
+ je short 0657eh ; 74 12 ; 0xf656a
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf656c serial.c:110
+ mov dx, bx ; 89 da ; 0xf6570 serial.c:111
+ in AL, DX ; ec ; 0xf6572
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6573
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6575
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6578 serial.c:112
+ jmp short 065a1h ; eb 23 ; 0xf657c
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf657e serial.c:113
+ in AL, DX ; ec ; 0xf6581
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6582
+ jmp short 0653ah ; eb b4 ; 0xf6584
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf6586 serial.c:118
+ in AL, DX ; ec ; 0xf6589
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf658a
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf658c
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf658f serial.c:119
+ in AL, DX ; ec ; 0xf6592
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6593
+ jmp short 06575h ; eb de ; 0xf6595
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6597 serial.c:123
+ jmp short 065a1h ; eb 04 ; 0xf659b serial.c:125
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf659d serial.c:126
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf65a1 serial.c:128
+ pop di ; 5f ; 0xf65a4
+ pop si ; 5e ; 0xf65a5
+ pop bp ; 5d ; 0xf65a6
+ retn ; c3 ; 0xf65a7
+ ; disGetNextSymbol 0xf65a8 LB 0x3a9d -> off=0x0 cb=0000000000000043 uValue=00000000000f4fa8 'timer_wait'
+timer_wait: ; 0xf65a8 LB 0x43
+ push bp ; 55 ; 0xf65a8 system.c:289
+ mov bp, sp ; 89 e5 ; 0xf65a9
+ push bx ; 53 ; 0xf65ab
+ push cx ; 51 ; 0xf65ac
+ push ax ; 50 ; 0xf65ad
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf65ae system.c:296
+ xor cx, cx ; 31 c9 ; 0xf65b1
+ call 09f50h ; e8 9a 39 ; 0xf65b3
+ mov cx, ax ; 89 c1 ; 0xf65b6
+ mov bx, dx ; 89 d3 ; 0xf65b8
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf65ba system.c:298
+ in AL, DX ; ec ; 0xf65bd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65be
+ and AL, strict byte 010h ; 24 10 ; 0xf65c0
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf65c2
+ add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf65c5 system.c:299
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf65c8
+ cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf65cb
+ jne short 065d5h ; 75 05 ; 0xf65ce
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf65d0
+ je short 065e4h ; 74 0f ; 0xf65d3
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf65d5 system.c:302
+ in AL, DX ; ec ; 0xf65d8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65d9
+ and AL, strict byte 010h ; 24 10 ; 0xf65db
+ cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf65dd system.c:303
+ jne short 065d5h ; 75 f3 ; 0xf65e0
+ jmp short 065c5h ; eb e1 ; 0xf65e2 system.c:305
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf65e4 system.c:306
+ pop cx ; 59 ; 0xf65e7
+ pop bx ; 5b ; 0xf65e8
+ pop bp ; 5d ; 0xf65e9
+ retn ; c3 ; 0xf65ea
+ ; disGetNextSymbol 0xf65eb LB 0x3a5a -> off=0x0 cb=000000000000002c uValue=00000000000f4feb 'set_enable_a20'
+set_enable_a20: ; 0xf65eb LB 0x2c
+ push bp ; 55 ; 0xf65eb system.c:308
+ mov bp, sp ; 89 e5 ; 0xf65ec
+ push bx ; 53 ; 0xf65ee
+ push cx ; 51 ; 0xf65ef
+ push dx ; 52 ; 0xf65f0
+ mov bx, ax ; 89 c3 ; 0xf65f1
+ mov dx, 00092h ; ba 92 00 ; 0xf65f3 system.c:315
+ in AL, DX ; ec ; 0xf65f6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65f7
+ mov cl, al ; 88 c1 ; 0xf65f9
+ test bx, bx ; 85 db ; 0xf65fb system.c:318
+ je short 06604h ; 74 05 ; 0xf65fd
+ or AL, strict byte 002h ; 0c 02 ; 0xf65ff system.c:319
+ out DX, AL ; ee ; 0xf6601
+ jmp short 06607h ; eb 03 ; 0xf6602 system.c:320
+ and AL, strict byte 0fdh ; 24 fd ; 0xf6604 system.c:321
+ out DX, AL ; ee ; 0xf6606
+ test cl, 002h ; f6 c1 02 ; 0xf6607 system.c:323
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf660a
+ xor ah, ah ; 30 e4 ; 0xf660d
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf660f system.c:324
+ pop dx ; 5a ; 0xf6612
+ pop cx ; 59 ; 0xf6613
+ pop bx ; 5b ; 0xf6614
+ pop bp ; 5d ; 0xf6615
+ retn ; c3 ; 0xf6616
+ ; disGetNextSymbol 0xf6617 LB 0x3a2e -> off=0x3b cb=00000000000002f7 uValue=00000000000f5052 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 02bh, 069h, 08fh, 066h, 0cch, 068h, 0a2h, 066h, 0cch, 068h, 024h, 069h, 0e6h
+ db 066h, 01ch, 067h, 0b9h, 067h, 0c5h, 067h, 0eeh, 067h, 0b2h, 067h, 0b2h, 067h, 0b6h, 068h, 0deh
+ db 068h, 0f1h, 068h, 0cch, 068h, 005h, 069h, 07bh, 067h, 00ch, 069h
+int15_function: ; 0xf6652 LB 0x2f7
+ push bp ; 55 ; 0xf6652 system.c:345
+ mov bp, sp ; 89 e5 ; 0xf6653
+ push si ; 56 ; 0xf6655
+ push di ; 57 ; 0xf6656
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6657 system.c:352
+ shr ax, 008h ; c1 e8 08 ; 0xf665a
+ cmp ax, 000ech ; 3d ec 00 ; 0xf665d
+ jnbe near 0692bh ; 0f 87 c7 02 ; 0xf6660
+ push CS ; 0e ; 0xf6664
+ pop ES ; 07 ; 0xf6665
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf6666
+ mov di, 06617h ; bf 17 66 ; 0xf6669
+ repne scasb ; f2 ae ; 0xf666c
+ sal cx, 1 ; d1 e1 ; 0xf666e
+ mov di, cx ; 89 cf ; 0xf6670
+ mov cx, word [cs:di+0662ah] ; 2e 8b 8d 2a 66 ; 0xf6672
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6677
+ xor ah, ah ; 30 e4 ; 0xf667a
+ mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf667c
+ and bl, 0feh ; 80 e3 fe ; 0xf667f
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xf6682
+ or si, strict byte 00001h ; 83 ce 01 ; 0xf6685
+ mov dx, ax ; 89 c2 ; 0xf6688
+ or dh, 086h ; 80 ce 86 ; 0xf668a
+ jmp cx ; ff e1 ; 0xf668d
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf668f system.c:354
+ xor ah, ah ; 30 e4 ; 0xf6692
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf6694
+ jne near 0692bh ; 0f 85 90 02 ; 0xf6697
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf669b system.c:361
+ jmp near 068d5h ; e9 33 02 ; 0xf669f
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf66a2 system.c:365
+ xor ah, ah ; 30 e4 ; 0xf66a5
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf66a7
+ jc short 066bah ; 72 0e ; 0xf66aa
+ jbe short 066ceh ; 76 20 ; 0xf66ac
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf66ae
+ je short 066f0h ; 74 3d ; 0xf66b1
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf66b3
+ je short 066d3h ; 74 1b ; 0xf66b6
+ jmp short 066fdh ; eb 43 ; 0xf66b8
+ test ax, ax ; 85 c0 ; 0xf66ba
+ jne short 066fdh ; 75 3f ; 0xf66bc
+ xor ax, ax ; 31 c0 ; 0xf66be system.c:367
+ call 065ebh ; e8 28 ff ; 0xf66c0
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66c3 system.c:368
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf66c7 system.c:369
+ jmp near 067b2h ; e9 e4 00 ; 0xf66cb system.c:370
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf66ce system.c:372
+ jmp short 066c0h ; eb ed ; 0xf66d1
+ mov dx, 00092h ; ba 92 00 ; 0xf66d3 system.c:377
+ in AL, DX ; ec ; 0xf66d6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf66d7
+ shr ax, 1 ; d1 e8 ; 0xf66d9
+ and ax, strict word 00001h ; 25 01 00 ; 0xf66db
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf66de
+ mov dl, al ; 88 c2 ; 0xf66e1
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf66e3
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66e6 system.c:378
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf66ea system.c:379
+ jmp near 067b2h ; e9 c2 00 ; 0xf66ed system.c:380
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf66f0 system.c:382
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf66f4 system.c:383
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf66f7 system.c:384
+ jmp near 067b2h ; e9 b5 00 ; 0xf66fa system.c:385
+ mov bx, 00db2h ; bb b2 0d ; 0xf66fd system.c:387
+ mov cx, ds ; 8c d9 ; 0xf6700
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6702
+ call 019d3h ; e8 cb b2 ; 0xf6705
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6708
+ xor ah, ah ; 30 e4 ; 0xf670b
+ push ax ; 50 ; 0xf670d
+ push 00840h ; 68 40 08 ; 0xf670e
+ push strict byte 00004h ; 6a 04 ; 0xf6711
+ call 01a14h ; e8 fe b2 ; 0xf6713
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6716
+ jmp near 068cch ; e9 b0 01 ; 0xf6719
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf671c system.c:419
+ jne short 06784h ; 75 62 ; 0xf6720
+ mov bx, 000a0h ; bb a0 00 ; 0xf6722 system.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6725
+ mov es, ax ; 8e c0 ; 0xf6728
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf672a
+ test AL, strict byte 001h ; a8 01 ; 0xf672d system.c:39
+ jne short 0677bh ; 75 4a ; 0xf672f
+ mov DL, strict byte 001h ; b2 01 ; 0xf6731 system.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf6733 system.c:43
+ mov bx, 00098h ; bb 98 00 ; 0xf6736 system.c:51
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf6739
+ mov word [es:bx], dx ; 26 89 17 ; 0xf673c system.c:53
+ mov bx, 0009ah ; bb 9a 00 ; 0xf673f system.c:51
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf6742
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6745 system.c:53
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6748 system.c:51
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf674b
+ mov word [es:bx], dx ; 26 89 17 ; 0xf674e system.c:53
+ mov bx, 0009eh ; bb 9e 00 ; 0xf6751 system.c:51
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6754
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6757 system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf675a system.c:428
+ mov dx, 000a1h ; ba a1 00 ; 0xf675e system.c:429
+ in AL, DX ; ec ; 0xf6761
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6762
+ and AL, strict byte 0feh ; 24 fe ; 0xf6764 system.c:430
+ out DX, AL ; ee ; 0xf6766
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6767 system.c:431
+ call 01756h ; e8 e9 af ; 0xf676a
+ or AL, strict byte 040h ; 0c 40 ; 0xf676d system.c:432
+ movzx dx, al ; 0f b6 d0 ; 0xf676f
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6772
+ call 01773h ; e8 fb af ; 0xf6775
+ jmp near 067b2h ; e9 37 00 ; 0xf6778 system.c:433
+ mov word [bp+018h], si ; 89 76 18 ; 0xf677b system.c:436
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf677e system.c:437
+ jmp near 067b2h ; e9 2e 00 ; 0xf6781 system.c:439
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6784
+ jne short 067a3h ; 75 1a ; 0xf6787
+ mov bx, 000a0h ; bb a0 00 ; 0xf6789 system.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf678c
+ mov es, ax ; 8e c0 ; 0xf678f
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6791
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6795 system.c:442
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6799 system.c:443
+ call 01756h ; e8 b7 af ; 0xf679c
+ and AL, strict byte 0bfh ; 24 bf ; 0xf679f system.c:444
+ jmp short 0676fh ; eb cc ; 0xf67a1
+ mov word [bp+018h], si ; 89 76 18 ; 0xf67a3 system.c:447
+ mov ax, dx ; 89 d0 ; 0xf67a6 system.c:449
+ xor ah, dh ; 30 f4 ; 0xf67a8
+ xor dl, dl ; 30 d2 ; 0xf67aa
+ dec ax ; 48 ; 0xf67ac
+ or dx, ax ; 09 c2 ; 0xf67ad
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf67af
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf67b2 system.c:452
+ pop di ; 5f ; 0xf67b5
+ pop si ; 5e ; 0xf67b6
+ pop bp ; 5d ; 0xf67b7
+ retn ; c3 ; 0xf67b8
+ sti ; fb ; 0xf67b9 system.c:458
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf67ba system.c:459
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf67bd
+ call 065a8h ; e8 e5 fd ; 0xf67c0
+ jmp short 067b2h ; eb ed ; 0xf67c3 system.c:460
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf67c5 system.c:465
+ call 01756h ; e8 8b af ; 0xf67c8
+ movzx dx, al ; 0f b6 d0 ; 0xf67cb
+ sal dx, 008h ; c1 e2 08 ; 0xf67ce
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf67d1
+ call 01756h ; e8 7f af ; 0xf67d4
+ xor ah, ah ; 30 e4 ; 0xf67d7
+ or dx, ax ; 09 c2 ; 0xf67d9
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf67db
+ cmp dx, strict byte 0ffc0h ; 83 fa c0 ; 0xf67de system.c:470
+ jbe short 067e8h ; 76 05 ; 0xf67e1
+ mov word [bp+012h], strict word 0ffc0h ; c7 46 12 c0 ff ; 0xf67e3 system.c:471
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67e8 system.c:480
+ jmp short 067b2h ; eb c4 ; 0xf67ec system.c:485
+ cli ; fa ; 0xf67ee system.c:494
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf67ef system.c:496
+ call 065ebh ; e8 f6 fd ; 0xf67f2
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf67f5 system.c:499
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf67f8
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf67fb system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf67fe
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6803 system.c:500
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf6806
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6809 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf680c system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6811 system.c:501
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf6814
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6817 system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf681a
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf681e system.c:502
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf6821
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6824 system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6827
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf682b system.c:503
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf682e
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6831 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6834
+ mov AL, strict byte 011h ; b0 11 ; 0xf6839 system.c:506
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf683b
+ out DX, AL ; ee ; 0xf683e
+ mov dx, 000a0h ; ba a0 00 ; 0xf683f system.c:507
+ out DX, AL ; ee ; 0xf6842
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6843 system.c:508
+ shr ax, 008h ; c1 e8 08 ; 0xf6846
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6849
+ out DX, AL ; ee ; 0xf684c
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf684d system.c:509
+ mov dx, 000a1h ; ba a1 00 ; 0xf6850
+ out DX, AL ; ee ; 0xf6853
+ mov AL, strict byte 004h ; b0 04 ; 0xf6854 system.c:510
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6856
+ out DX, AL ; ee ; 0xf6859
+ mov AL, strict byte 002h ; b0 02 ; 0xf685a system.c:511
+ mov dx, 000a1h ; ba a1 00 ; 0xf685c
+ out DX, AL ; ee ; 0xf685f
+ mov AL, strict byte 001h ; b0 01 ; 0xf6860 system.c:512
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6862
+ out DX, AL ; ee ; 0xf6865
+ mov dx, 000a1h ; ba a1 00 ; 0xf6866 system.c:513
+ out DX, AL ; ee ; 0xf6869
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf686a system.c:515
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf686c
+ out DX, AL ; ee ; 0xf686f
+ mov dx, 000a1h ; ba a1 00 ; 0xf6870 system.c:516
+ out DX, AL ; ee ; 0xf6873
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf6874 system.c:518
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6877
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf687c
+ push strict byte 00038h ; 6a 38 ; 0xf6881
+ call 06886h ; e8 00 00 ; 0xf6883
+ pop ax ; 58 ; 0xf6886
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6887
+ push ax ; 50 ; 0xf688a
+ smsw ax ; 0f 01 e0 ; 0xf688b
+ or AL, strict byte 001h ; 0c 01 ; 0xf688e
+ lmsw ax ; 0f 01 f0 ; 0xf6890
+ retf ; cb ; 0xf6893
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf6894
+ mov ds, ax ; 8e d8 ; 0xf6897
+ add AL, strict byte 008h ; 04 08 ; 0xf6899
+ mov es, ax ; 8e c0 ; 0xf689b
+ add AL, strict byte 008h ; 04 08 ; 0xf689d
+ mov ss, ax ; 8e d0 ; 0xf689f
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf68a1 system.c:519
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf68a4
+ popaw ; 61 ; 0xf68a6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf68a7
+ pop cx ; 59 ; 0xf68aa
+ pop ax ; 58 ; 0xf68ab
+ pop ax ; 58 ; 0xf68ac
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf68ad
+ push ax ; 50 ; 0xf68b0
+ push cx ; 51 ; 0xf68b1
+ retf ; cb ; 0xf68b2
+ jmp near 067b2h ; e9 fc fe ; 0xf68b3 system.c:525
+ mov bx, 00db2h ; bb b2 0d ; 0xf68b6 system.c:532
+ mov cx, ds ; 8c d9 ; 0xf68b9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf68bb
+ call 019d3h ; e8 12 b1 ; 0xf68be
+ push 00880h ; 68 80 08 ; 0xf68c1
+ push strict byte 00004h ; 6a 04 ; 0xf68c4
+ call 01a14h ; e8 4b b1 ; 0xf68c6
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf68c9
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf68cc
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf68d0
+ xor ah, ah ; 30 e4 ; 0xf68d3
+ or ah, 086h ; 80 cc 86 ; 0xf68d5
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf68d8
+ jmp near 067b2h ; e9 d4 fe ; 0xf68db
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf68de system.c:538
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf68e1 system.c:539
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf68e4 system.c:540
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf68e9 system.c:541
+ jmp near 067b2h ; e9 c1 fe ; 0xf68ee system.c:542
+ mov si, strict word 0000eh ; be 0e 00 ; 0xf68f1 system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf68f4
+ mov es, ax ; 8e c0 ; 0xf68f7
+ mov ax, word [es:si] ; 26 8b 04 ; 0xf68f9
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf68fc system.c:49
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf68ff system.c:546
+ jmp near 067b2h ; e9 ad fe ; 0xf6902 system.c:547
+ push 008afh ; 68 af 08 ; 0xf6905 system.c:550
+ push strict byte 00008h ; 6a 08 ; 0xf6908
+ jmp short 068c6h ; eb ba ; 0xf690a
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf690c system.c:562
+ jne short 0692bh ; 75 19 ; 0xf6910
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6912 system.c:564
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf6915 system.c:565
+ xor ah, ah ; 30 e4 ; 0xf6918
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf691a
+ jc short 06924h ; 72 05 ; 0xf691d
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf691f
+ jbe short 068ffh ; 76 db ; 0xf6922
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6924 system.c:568
+ jmp near 067b2h ; e9 87 fe ; 0xf6928 system.c:569
+ mov bx, 00db2h ; bb b2 0d ; 0xf692b system.c:573
+ mov cx, ds ; 8c d9 ; 0xf692e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6930
+ call 019d3h ; e8 9d b0 ; 0xf6933
+ push word [bp+00ch] ; ff 76 0c ; 0xf6936
+ push word [bp+012h] ; ff 76 12 ; 0xf6939
+ push 008c6h ; 68 c6 08 ; 0xf693c
+ push strict byte 00004h ; 6a 04 ; 0xf693f
+ call 01a14h ; e8 d0 b0 ; 0xf6941
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6944
+ jmp short 068cch ; eb 83 ; 0xf6947
+ ; disGetNextSymbol 0xf6949 LB 0x36fc -> off=0x0 cb=0000000000000057 uValue=00000000000f5349 'set_e820_range'
+set_e820_range: ; 0xf6949 LB 0x57
+ push si ; 56 ; 0xf6949 system.c:590
+ push bp ; 55 ; 0xf694a
+ mov bp, sp ; 89 e5 ; 0xf694b
+ mov es, ax ; 8e c0 ; 0xf694d
+ mov si, dx ; 89 d6 ; 0xf694f
+ mov word [es:si], bx ; 26 89 1c ; 0xf6951 system.c:596
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf6954
+ movzx ax, byte [bp+00ah] ; 0f b6 46 0a ; 0xf6958 system.c:597
+ mov word [es:si+004h], ax ; 26 89 44 04 ; 0xf695c
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf6960
+ sub word [bp+006h], bx ; 29 5e 06 ; 0xf6966 system.c:598
+ sbb word [bp+008h], cx ; 19 4e 08 ; 0xf6969
+ mov al, byte [bp+00ah] ; 8a 46 0a ; 0xf696c system.c:599
+ sub byte [bp+00ch], al ; 28 46 0c ; 0xf696f
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf6972 system.c:600
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6975
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf6979
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf697c
+ movzx ax, byte [bp+00ch] ; 0f b6 46 0c ; 0xf6980 system.c:601
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf6984
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6988
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf698e system.c:602
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf6991
+ mov word [es:si+012h], strict word 00000h ; 26 c7 44 12 00 00 ; 0xf6995
+ pop bp ; 5d ; 0xf699b system.c:603
+ pop si ; 5e ; 0xf699c
+ retn 0000ah ; c2 0a 00 ; 0xf699d
+ ; disGetNextSymbol 0xf69a0 LB 0x36a5 -> off=0x14 cb=0000000000000386 uValue=00000000000f53b4 'int15_function32'
+ db 01bh, 06bh, 03dh, 06bh, 060h, 06bh, 082h, 06bh, 0a2h, 06bh, 0c3h, 06bh, 0e7h, 06bh, 00bh, 06ch
+ db 04ah, 06ch, 076h, 06ch
+int15_function32: ; 0xf69b4 LB 0x386
+ push bp ; 55 ; 0xf69b4 system.c:605
+ mov bp, sp ; 89 e5 ; 0xf69b5
+ push si ; 56 ; 0xf69b7
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf69b8
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf69bb system.c:614
+ shr ax, 008h ; c1 e8 08 ; 0xf69be
+ cmp ax, 000e8h ; 3d e8 00 ; 0xf69c1
+ je near 06a3ah ; 0f 84 72 00 ; 0xf69c4
+ cmp ax, 000d0h ; 3d d0 00 ; 0xf69c8
+ jne near 06d0ah ; 0f 85 3b 03 ; 0xf69cb
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf69cf system.c:616
+ xor ah, ah ; 30 e4 ; 0xf69d2
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf69d4
+ jne near 06d0ah ; 0f 85 2f 03 ; 0xf69d7
+ cmp word [bp+016h], 05052h ; 81 7e 16 52 50 ; 0xf69db system.c:618
+ jne near 06d0ah ; 0f 85 26 03 ; 0xf69e0
+ cmp word [bp+014h], 04f43h ; 81 7e 14 43 4f ; 0xf69e4
+ jne near 06d0ah ; 0f 85 1d 03 ; 0xf69e9
+ cmp word [bp+01eh], 04d4fh ; 81 7e 1e 4f 4d ; 0xf69ed
+ jne near 06d0ah ; 0f 85 14 03 ; 0xf69f2
+ cmp word [bp+01ch], 04445h ; 81 7e 1c 45 44 ; 0xf69f6
+ jne near 06d0ah ; 0f 85 0b 03 ; 0xf69fb
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf69ff
+ or ax, word [bp+008h] ; 0b 46 08 ; 0xf6a02
+ jne near 06d0ah ; 0f 85 01 03 ; 0xf6a05
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf6a09
+ or ax, word [bp+004h] ; 0b 46 04 ; 0xf6a0c
+ jne near 06d0ah ; 0f 85 f7 02 ; 0xf6a0f
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6a13 system.c:620
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6a17 system.c:621
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6a1a
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6a1d
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6a20
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6a23 system.c:622
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf6a26
+ mov ax, word [bp+01eh] ; 8b 46 1e ; 0xf6a29
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6a2c
+ mov dword [bp+020h], strict dword 049413332h ; 66 c7 46 20 32 33 41 49 ; 0xf6a2f system.c:623
+ jmp near 06d34h ; e9 fa 02 ; 0xf6a37 system.c:627
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6a3a system.c:630
+ xor ah, ah ; 30 e4 ; 0xf6a3d
+ cmp ax, strict word 00020h ; 3d 20 00 ; 0xf6a3f
+ je short 06a4eh ; 74 0a ; 0xf6a42
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf6a44
+ je near 06cbdh ; 0f 84 72 02 ; 0xf6a47
+ jmp near 06d0ah ; e9 bc 02 ; 0xf6a4b
+ cmp word [bp+01ah], 0534dh ; 81 7e 1a 4d 53 ; 0xf6a4e system.c:632
+ jne near 06d0ah ; 0f 85 b3 02 ; 0xf6a53
+ cmp word [bp+018h], 04150h ; 81 7e 18 50 41 ; 0xf6a57
+ jne near 06d0ah ; 0f 85 aa 02 ; 0xf6a5c
+ mov ax, strict word 00035h ; b8 35 00 ; 0xf6a60 system.c:633
+ call 01756h ; e8 f0 ac ; 0xf6a63
+ movzx bx, al ; 0f b6 d8 ; 0xf6a66
+ xor dx, dx ; 31 d2 ; 0xf6a69
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf6a6b system.c:634
+ sal bx, 1 ; d1 e3 ; 0xf6a6e
+ rcl dx, 1 ; d1 d2 ; 0xf6a70
+ loop 06a6eh ; e2 fa ; 0xf6a72
+ mov ax, strict word 00034h ; b8 34 00 ; 0xf6a74 system.c:635
+ call 01756h ; e8 dc ac ; 0xf6a77
+ xor ah, ah ; 30 e4 ; 0xf6a7a
+ mov dx, bx ; 89 da ; 0xf6a7c
+ or dx, ax ; 09 c2 ; 0xf6a7e
+ xor bx, bx ; 31 db ; 0xf6a80 system.c:644
+ add bx, bx ; 01 db ; 0xf6a82
+ adc dx, 00100h ; 81 d2 00 01 ; 0xf6a84
+ cmp dx, 00100h ; 81 fa 00 01 ; 0xf6a88 system.c:646
+ jc short 06a94h ; 72 06 ; 0xf6a8c
+ jne short 06ac1h ; 75 31 ; 0xf6a8e
+ test bx, bx ; 85 db ; 0xf6a90
+ jnbe short 06ac1h ; 77 2d ; 0xf6a92
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf6a94 system.c:647
+ call 01756h ; e8 bc ac ; 0xf6a97
+ movzx bx, al ; 0f b6 d8 ; 0xf6a9a
+ xor dx, dx ; 31 d2 ; 0xf6a9d
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf6a9f system.c:648
+ sal bx, 1 ; d1 e3 ; 0xf6aa2
+ rcl dx, 1 ; d1 d2 ; 0xf6aa4
+ loop 06aa2h ; e2 fa ; 0xf6aa6
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6aa8 system.c:649
+ call 01756h ; e8 a8 ac ; 0xf6aab
+ xor ah, ah ; 30 e4 ; 0xf6aae
+ or bx, ax ; 09 c3 ; 0xf6ab0
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf6ab2 system.c:650
+ sal bx, 1 ; d1 e3 ; 0xf6ab5
+ rcl dx, 1 ; d1 d2 ; 0xf6ab7
+ loop 06ab5h ; e2 fa ; 0xf6ab9
+ add bx, strict byte 00000h ; 83 c3 00 ; 0xf6abb system.c:651
+ adc dx, strict byte 00010h ; 83 d2 10 ; 0xf6abe
+ mov ax, strict word 00062h ; b8 62 00 ; 0xf6ac1 system.c:656
+ call 01756h ; e8 8f ac ; 0xf6ac4
+ xor ah, ah ; 30 e4 ; 0xf6ac7
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6ac9
+ xor al, al ; 30 c0 ; 0xf6acc
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6ace
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf6ad1 system.c:657
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf6ad4
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf6ad7
+ loop 06ad4h ; e2 f8 ; 0xf6ada
+ mov ax, strict word 00061h ; b8 61 00 ; 0xf6adc system.c:658
+ call 01756h ; e8 74 ac ; 0xf6adf
+ xor ah, ah ; 30 e4 ; 0xf6ae2
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf6ae4
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf6ae7 system.c:659
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6aea
+ mov word [bp-00ah], strict word 00000h ; c7 46 f6 00 00 ; 0xf6aed
+ mov ax, strict word 00063h ; b8 63 00 ; 0xf6af2 system.c:660
+ call 01756h ; e8 5e ac ; 0xf6af5
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6af8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6afb
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf6afe system.c:674
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf6b01
+ jnbe near 06d0ah ; 0f 87 02 02 ; 0xf6b04
+ mov si, ax ; 89 c6 ; 0xf6b08
+ add si, ax ; 01 c6 ; 0xf6b0a
+ mov cx, bx ; 89 d9 ; 0xf6b0c
+ add cx, strict byte 00000h ; 83 c1 00 ; 0xf6b0e
+ mov ax, dx ; 89 d0 ; 0xf6b11
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf6b13
+ jmp word [cs:si+069a0h] ; 2e ff a4 a0 69 ; 0xf6b16
+ push strict byte 00001h ; 6a 01 ; 0xf6b1b system.c:677
+ push dword 000000000h ; 66 6a 00 ; 0xf6b1d
+ push strict byte 00009h ; 6a 09 ; 0xf6b20
+ push 0fc00h ; 68 00 fc ; 0xf6b22
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b25
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b28
+ xor bx, bx ; 31 db ; 0xf6b2b
+ xor cx, cx ; 31 c9 ; 0xf6b2d
+ call 06949h ; e8 17 fe ; 0xf6b2f
+ mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00 ; 0xf6b32 system.c:683
+ jmp near 06ca7h ; e9 6a 01 ; 0xf6b3a system.c:684
+ push strict byte 00002h ; 6a 02 ; 0xf6b3d system.c:686
+ push dword 000000000h ; 66 6a 00 ; 0xf6b3f
+ push strict byte 0000ah ; 6a 0a ; 0xf6b42
+ push strict byte 00000h ; 6a 00 ; 0xf6b44
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b46
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b49
+ mov bx, 0fc00h ; bb 00 fc ; 0xf6b4c
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf6b4f
+ call 06949h ; e8 f4 fd ; 0xf6b52
+ mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00 ; 0xf6b55 system.c:692
+ jmp near 06ca7h ; e9 47 01 ; 0xf6b5d system.c:693
+ push strict byte 00002h ; 6a 02 ; 0xf6b60 system.c:707
+ push dword 000000000h ; 66 6a 00 ; 0xf6b62
+ push strict byte 00010h ; 6a 10 ; 0xf6b65
+ push strict byte 00000h ; 6a 00 ; 0xf6b67
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b69
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b6c
+ xor bx, bx ; 31 db ; 0xf6b6f
+ mov cx, strict word 0000fh ; b9 0f 00 ; 0xf6b71
+ call 06949h ; e8 d2 fd ; 0xf6b74
+ mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00 ; 0xf6b77 system.c:713
+ jmp near 06ca7h ; e9 25 01 ; 0xf6b7f system.c:714
+ push strict byte 00001h ; 6a 01 ; 0xf6b82 system.c:717
+ push dword 000000000h ; 66 6a 00 ; 0xf6b84
+ push ax ; 50 ; 0xf6b87
+ push cx ; 51 ; 0xf6b88
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6b89
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6b8c
+ xor bx, bx ; 31 db ; 0xf6b8f
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf6b91
+ call 06949h ; e8 b2 fd ; 0xf6b94
+ mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00 ; 0xf6b97 system.c:720
+ jmp near 06ca7h ; e9 05 01 ; 0xf6b9f system.c:727
+ push strict byte 00003h ; 6a 03 ; 0xf6ba2 system.c:729
+ push dword 000000000h ; 66 6a 00 ; 0xf6ba4
+ push dx ; 52 ; 0xf6ba7
+ push bx ; 53 ; 0xf6ba8
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6ba9
+ mov si, word [bp+024h] ; 8b 76 24 ; 0xf6bac
+ mov bx, cx ; 89 cb ; 0xf6baf
+ mov cx, ax ; 89 c1 ; 0xf6bb1
+ mov ax, si ; 89 f0 ; 0xf6bb3
+ call 06949h ; e8 91 fd ; 0xf6bb5
+ mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00 ; 0xf6bb8 system.c:732
+ jmp near 06ca7h ; e9 e4 00 ; 0xf6bc0 system.c:733
+ push strict byte 00002h ; 6a 02 ; 0xf6bc3 system.c:735
+ push dword 000000000h ; 66 6a 00 ; 0xf6bc5
+ push 0fec0h ; 68 c0 fe ; 0xf6bc8
+ push 01000h ; 68 00 10 ; 0xf6bcb
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6bce
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6bd1
+ xor bx, bx ; 31 db ; 0xf6bd4
+ mov cx, 0fec0h ; b9 c0 fe ; 0xf6bd6
+ call 06949h ; e8 6d fd ; 0xf6bd9
+ mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00 ; 0xf6bdc system.c:738
+ jmp near 06ca7h ; e9 c0 00 ; 0xf6be4 system.c:739
+ push strict byte 00002h ; 6a 02 ; 0xf6be7 system.c:741
+ push dword 000000000h ; 66 6a 00 ; 0xf6be9
+ push 0fee0h ; 68 e0 fe ; 0xf6bec
+ push 01000h ; 68 00 10 ; 0xf6bef
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6bf2
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6bf5
+ xor bx, bx ; 31 db ; 0xf6bf8
+ mov cx, 0fee0h ; b9 e0 fe ; 0xf6bfa
+ call 06949h ; e8 49 fd ; 0xf6bfd
+ mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00 ; 0xf6c00 system.c:744
+ jmp near 06ca7h ; e9 9c 00 ; 0xf6c08 system.c:745
+ push strict byte 00002h ; 6a 02 ; 0xf6c0b system.c:752
+ push dword 000000000h ; 66 6a 00 ; 0xf6c0d
+ push dword 000000000h ; 66 6a 00 ; 0xf6c10
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c13
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c16
+ xor bx, bx ; 31 db ; 0xf6c19
+ mov cx, strict word 0fffch ; b9 fc ff ; 0xf6c1b
+ call 06949h ; e8 28 fd ; 0xf6c1e
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6c21
+ jne short 06c2eh ; 75 07 ; 0xf6c25
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6c27
+ test ax, ax ; 85 c0 ; 0xf6c2a
+ je short 06c42h ; 74 14 ; 0xf6c2c
+ mov dword [bp+014h], strict dword 000000009h ; 66 c7 46 14 09 00 00 00 ; 0xf6c2e
+ jmp short 06ca7h ; eb 6f ; 0xf6c36
+ mov dword [bp+014h], strict dword 000000008h ; 66 c7 46 14 08 00 00 00 ; 0xf6c38 system.c:755
+ jmp short 06ca7h ; eb 65 ; 0xf6c40 system.c:756
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6c42 system.c:761
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6c45
+ jmp short 06ca7h ; eb 5d ; 0xf6c48 system.c:763
+ push strict byte 00002h ; 6a 02 ; 0xf6c4a system.c:766
+ push dword 000000000h ; 66 6a 00 ; 0xf6c4c
+ push dword 000000000h ; 66 6a 00 ; 0xf6c4f
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c52
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c55
+ xor bx, bx ; 31 db ; 0xf6c58
+ xor cx, cx ; 31 c9 ; 0xf6c5a
+ call 06949h ; e8 ea fc ; 0xf6c5c
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6c5f system.c:769
+ jne short 06c6ch ; 75 07 ; 0xf6c63
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6c65
+ test ax, ax ; 85 c0 ; 0xf6c68
+ je short 06c6eh ; 74 02 ; 0xf6c6a
+ jmp short 06c2eh ; eb c0 ; 0xf6c6c
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6c6e system.c:772
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6c71
+ jmp short 06ca7h ; eb 31 ; 0xf6c74 system.c:773
+ cmp byte [bp-004h], 000h ; 80 7e fc 00 ; 0xf6c76 system.c:781
+ jne short 06c82h ; 75 06 ; 0xf6c7a
+ cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf6c7c
+ je short 06ca7h ; 74 25 ; 0xf6c80
+ push strict byte 00001h ; 6a 01 ; 0xf6c82 system.c:783
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6c84
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6c87
+ xor ah, ah ; 30 e4 ; 0xf6c89
+ push ax ; 50 ; 0xf6c8b
+ push strict byte 00001h ; 6a 01 ; 0xf6c8c
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf6c8e
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6c92
+ mov ax, word [bp+024h] ; 8b 46 24 ; 0xf6c95
+ xor bx, bx ; 31 db ; 0xf6c98
+ xor cx, cx ; 31 c9 ; 0xf6c9a
+ call 06949h ; e8 aa fc ; 0xf6c9c
+ xor ax, ax ; 31 c0 ; 0xf6c9f system.c:786
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6ca1
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf6ca4
+ mov dword [bp+020h], strict dword 0534d4150h ; 66 c7 46 20 50 41 4d 53 ; 0xf6ca7 system.c:802
+ mov dword [bp+01ch], strict dword 000000014h ; 66 c7 46 1c 14 00 00 00 ; 0xf6caf system.c:803
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6cb7 system.c:804
+ jmp short 06d34h ; eb 77 ; 0xf6cbb system.c:809
+ and byte [bp+028h], 0feh ; 80 66 28 fe ; 0xf6cbd system.c:813
+ mov ax, strict word 00031h ; b8 31 00 ; 0xf6cc1 system.c:823
+ call 01756h ; e8 8f aa ; 0xf6cc4
+ xor ah, ah ; 30 e4 ; 0xf6cc7
+ mov dx, ax ; 89 c2 ; 0xf6cc9
+ sal dx, 008h ; c1 e2 08 ; 0xf6ccb
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6cce
+ call 01756h ; e8 82 aa ; 0xf6cd1
+ xor ah, ah ; 30 e4 ; 0xf6cd4
+ or dx, ax ; 09 c2 ; 0xf6cd6
+ mov word [bp+01ch], dx ; 89 56 1c ; 0xf6cd8
+ cmp dx, 03c00h ; 81 fa 00 3c ; 0xf6cdb system.c:826
+ jbe short 06ce6h ; 76 05 ; 0xf6cdf
+ mov word [bp+01ch], 03c00h ; c7 46 1c 00 3c ; 0xf6ce1 system.c:827
+ mov ax, strict word 00035h ; b8 35 00 ; 0xf6ce6 system.c:830
+ call 01756h ; e8 6a aa ; 0xf6ce9
+ movzx dx, al ; 0f b6 d0 ; 0xf6cec
+ sal dx, 008h ; c1 e2 08 ; 0xf6cef
+ mov ax, strict word 00034h ; b8 34 00 ; 0xf6cf2
+ call 01756h ; e8 5e aa ; 0xf6cf5
+ xor ah, ah ; 30 e4 ; 0xf6cf8
+ or dx, ax ; 09 c2 ; 0xf6cfa
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf6cfc
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf6cff system.c:833
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf6d02
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf6d05 system.c:834
+ jmp short 06d34h ; eb 2a ; 0xf6d08 system.c:839
+ mov bx, 00db2h ; bb b2 0d ; 0xf6d0a system.c:844
+ mov cx, ds ; 8c d9 ; 0xf6d0d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d0f
+ call 019d3h ; e8 be ac ; 0xf6d12
+ push word [bp+014h] ; ff 76 14 ; 0xf6d15
+ push word [bp+020h] ; ff 76 20 ; 0xf6d18
+ push 008c6h ; 68 c6 08 ; 0xf6d1b
+ push strict byte 00004h ; 6a 04 ; 0xf6d1e
+ call 01a14h ; e8 f1 ac ; 0xf6d20
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf6d23
+ or byte [bp+028h], 001h ; 80 4e 28 01 ; 0xf6d26 system.c:845
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf6d2a system.c:846
+ xor al, al ; 30 c0 ; 0xf6d2d
+ or AL, strict byte 086h ; 0c 86 ; 0xf6d2f
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf6d31
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6d34 system.c:849
+ pop si ; 5e ; 0xf6d37
+ pop bp ; 5d ; 0xf6d38
+ retn ; c3 ; 0xf6d39
+ ; disGetNextSymbol 0xf6d3a LB 0x330b -> off=0x0 cb=0000000000000156 uValue=00000000000f573a 'int15_blkmove'
+int15_blkmove: ; 0xf6d3a LB 0x156
+ push bp ; 55 ; 0xf6d3a system.c:858
+ mov bp, sp ; 89 e5 ; 0xf6d3b
+ push si ; 56 ; 0xf6d3d
+ push di ; 57 ; 0xf6d3e
+ cli ; fa ; 0xf6d3f system.c:868
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6d40 system.c:870
+ call 065ebh ; e8 a5 f8 ; 0xf6d43
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf6d46 system.c:893
+ sal bx, 004h ; c1 e3 04 ; 0xf6d49
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6d4c
+ add ax, bx ; 01 d8 ; 0xf6d4f
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf6d51 system.c:894
+ shr dx, 00ch ; c1 ea 0c ; 0xf6d54
+ mov cl, dl ; 88 d1 ; 0xf6d57
+ cmp ax, bx ; 39 d8 ; 0xf6d59 system.c:895
+ jnc short 06d5fh ; 73 02 ; 0xf6d5b
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf6d5d system.c:896
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d5f system.c:897
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf6d62
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf6d65 system.c:51
+ mov word [es:bx], strict word 0002fh ; 26 c7 07 2f 00 ; 0xf6d68
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d6d system.c:898
+ add bx, strict byte 0000ah ; 83 c3 0a ; 0xf6d70
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6d73 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d76 system.c:899
+ add bx, strict byte 0000ch ; 83 c3 0c ; 0xf6d79
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf6d7c system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d7f system.c:900
+ add bx, strict byte 0000dh ; 83 c3 0d ; 0xf6d82
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6d85 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d89 system.c:901
+ add bx, strict byte 0000eh ; 83 c3 0e ; 0xf6d8c
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6d8f system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d94 system.c:904
+ add bx, strict byte 00020h ; 83 c3 20 ; 0xf6d97
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6d9a system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6d9f system.c:905
+ add bx, strict byte 00022h ; 83 c3 22 ; 0xf6da2
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6da5 system.c:53
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6daa system.c:906
+ add bx, strict byte 00024h ; 83 c3 24 ; 0xf6dad
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf6db0 system.c:41
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6db4 system.c:907
+ add bx, strict byte 00025h ; 83 c3 25 ; 0xf6db7
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf6dba system.c:41
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dbe system.c:908
+ add bx, strict byte 00026h ; 83 c3 26 ; 0xf6dc1
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6dc4 system.c:51
+ mov ax, ss ; 8c d0 ; 0xf6dc9 system.c:911
+ mov cx, ax ; 89 c1 ; 0xf6dcb
+ sal ax, 004h ; c1 e0 04 ; 0xf6dcd system.c:912
+ shr cx, 00ch ; c1 e9 0c ; 0xf6dd0
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dd3 system.c:914
+ add bx, strict byte 00028h ; 83 c3 28 ; 0xf6dd6
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6dd9 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dde system.c:915
+ add bx, strict byte 0002ah ; 83 c3 2a ; 0xf6de1
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6de4 system.c:51
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6de7 system.c:916
+ add bx, strict byte 0002ch ; 83 c3 2c ; 0xf6dea
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf6ded system.c:41
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6df0 system.c:917
+ add bx, strict byte 0002dh ; 83 c3 2d ; 0xf6df3
+ mov byte [es:bx], 093h ; 26 c6 07 93 ; 0xf6df6 system.c:43
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf6dfa system.c:918
+ add bx, strict byte 0002eh ; 83 c3 2e ; 0xf6dfd
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf6e00 system.c:53
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf6e05 system.c:924
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf6e08
+ push DS ; 1e ; 0xf6e0b
+ push eax ; 66 50 ; 0xf6e0c
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6e0e
+ mov ds, ax ; 8e d8 ; 0xf6e10
+ mov word [00467h], sp ; 89 26 67 04 ; 0xf6e12
+ mov [00469h], ss ; 8c 16 69 04 ; 0xf6e16
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf6e1a system.c:928
+ lidt [cs:0efe1h] ; 2e 0f 01 1e e1 ef ; 0xf6e1f
+ push strict byte 00020h ; 6a 20 ; 0xf6e25
+ call 06e2ah ; e8 00 00 ; 0xf6e27
+ pop ax ; 58 ; 0xf6e2a
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6e2b
+ push ax ; 50 ; 0xf6e2e
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6e2f
+ or AL, strict byte 001h ; 0c 01 ; 0xf6e32
+ mov cr0, eax ; 0f 22 c0 ; 0xf6e34
+ retf ; cb ; 0xf6e37
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf6e38
+ mov ds, ax ; 8e d8 ; 0xf6e3b
+ add AL, strict byte 008h ; 04 08 ; 0xf6e3d
+ mov es, ax ; 8e c0 ; 0xf6e3f
+ add AL, strict byte 010h ; 04 10 ; 0xf6e41
+ mov ss, ax ; 8e d0 ; 0xf6e43
+ db 033h, 0f6h
+ ; xor si, si ; 33 f6 ; 0xf6e45 system.c:929
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xf6e47
+ cld ; fc ; 0xf6e49
+ rep movsw ; f3 a5 ; 0xf6e4a
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf6e4c system.c:930
+ mov ds, ax ; 8e d8 ; 0xf6e4f
+ mov es, ax ; 8e c0 ; 0xf6e51
+ push 0f000h ; 68 00 f0 ; 0xf6e53
+ call 06e59h ; e8 00 00 ; 0xf6e56
+ pop ax ; 58 ; 0xf6e59
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf6e5a
+ push ax ; 50 ; 0xf6e5d
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6e5e
+ and AL, strict byte 0feh ; 24 fe ; 0xf6e61
+ mov cr0, eax ; 0f 22 c0 ; 0xf6e63
+ retf ; cb ; 0xf6e66
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xf6e67
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf6e6d system.c:931
+ mov ds, ax ; 8e d8 ; 0xf6e6f
+ mov es, ax ; 8e c0 ; 0xf6e71
+ lss sp, [00467h] ; 0f b2 26 67 04 ; 0xf6e73
+ pop eax ; 66 58 ; 0xf6e78
+ pop DS ; 1f ; 0xf6e7a
+ xor ax, ax ; 31 c0 ; 0xf6e7b system.c:933
+ call 065ebh ; e8 6b f7 ; 0xf6e7d
+ sti ; fb ; 0xf6e80 system.c:936
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf6e81 system.c:938
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf6e85 system.c:939
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e89 system.c:940
+ pop di ; 5f ; 0xf6e8c
+ pop si ; 5e ; 0xf6e8d
+ pop bp ; 5d ; 0xf6e8e
+ retn ; c3 ; 0xf6e8f
+ ; disGetNextSymbol 0xf6e90 LB 0x31b5 -> off=0x0 cb=0000000000000195 uValue=00000000000f5890 'inv_op_handler'
+inv_op_handler: ; 0xf6e90 LB 0x195
+ push bp ; 55 ; 0xf6e90 invop.c:237
+ mov bp, sp ; 89 e5 ; 0xf6e91
+ push si ; 56 ; 0xf6e93
+ push di ; 57 ; 0xf6e94
+ push ax ; 50 ; 0xf6e95
+ push ax ; 50 ; 0xf6e96
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf6e97 invop.c:239
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf6e9a invop.c:241
+ jne short 06ea6h ; 75 06 ; 0xf6e9e
+ inc word [bp+018h] ; ff 46 18 ; 0xf6ea0 invop.c:243
+ jmp near 0701eh ; e9 78 01 ; 0xf6ea3 invop.c:244
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf6ea6
+ jne near 0701ah ; 0f 85 6b 01 ; 0xf6eab
+ mov si, 00800h ; be 00 08 ; 0xf6eaf invop.c:246
+ xor ax, ax ; 31 c0 ; 0xf6eb2
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6eb4
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6eb7 invop.c:249
+ mov es, ax ; 8e c0 ; 0xf6eba invop.c:257
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6ebc
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6ec0
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6ec3
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6ec7 invop.c:258
+ mov es, dx ; 8e c2 ; 0xf6ecb
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6ecd
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6ed0 invop.c:259
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6ed3
+ mov es, dx ; 8e c2 ; 0xf6ed7
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6ed9
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6edd invop.c:260
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6ee0
+ mov es, dx ; 8e c2 ; 0xf6ee4
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6ee6
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6eea invop.c:263
+ movzx bx, byte [es:si+038h] ; 26 0f b6 5c 38 ; 0xf6eed
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6ef2
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6ef6 invop.c:264
+ xor dx, dx ; 31 d2 ; 0xf6efa
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6efc
+ sal ax, 1 ; d1 e0 ; 0xf6eff
+ rcl dx, 1 ; d1 d2 ; 0xf6f01
+ loop 06effh ; e2 fa ; 0xf6f03
+ cmp bx, dx ; 39 d3 ; 0xf6f05
+ jne short 06f0dh ; 75 04 ; 0xf6f07
+ cmp di, ax ; 39 c7 ; 0xf6f09
+ je short 06f12h ; 74 05 ; 0xf6f0b
+ mov word [bp-008h], strict word 00001h ; c7 46 f8 01 00 ; 0xf6f0d invop.c:265
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6f12 invop.c:266
+ movzx di, byte [es:si+04ah] ; 26 0f b6 7c 4a ; 0xf6f15
+ mov bx, word [es:si+048h] ; 26 8b 5c 48 ; 0xf6f1a
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6f1e invop.c:267
+ xor dx, dx ; 31 d2 ; 0xf6f22
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6f24
+ sal ax, 1 ; d1 e0 ; 0xf6f27
+ rcl dx, 1 ; d1 d2 ; 0xf6f29
+ loop 06f27h ; e2 fa ; 0xf6f2b
+ cmp di, dx ; 39 d7 ; 0xf6f2d
+ jne short 06f35h ; 75 04 ; 0xf6f2f
+ cmp bx, ax ; 39 c3 ; 0xf6f31
+ je short 06f39h ; 74 04 ; 0xf6f33
+ or byte [bp-008h], 002h ; 80 4e f8 02 ; 0xf6f35 invop.c:268
+ push strict byte 00000h ; 6a 00 ; 0xf6f39 invop.c:271
+ push 00800h ; 68 00 08 ; 0xf6f3b
+ push strict byte 0001fh ; 6a 1f ; 0xf6f3e
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6f40
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6f42
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6f46
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf6f49 invop.c:274
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6f4c
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6f50
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6f54 invop.c:275
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6f58
+ movzx dx, byte [es:si+039h] ; 26 0f b6 54 39 ; 0xf6f5c invop.c:276
+ sal dx, 008h ; c1 e2 08 ; 0xf6f61
+ movzx ax, byte [es:si+038h] ; 26 0f b6 44 38 ; 0xf6f64
+ or dx, ax ; 09 c2 ; 0xf6f69
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6f6b
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6f6f invop.c:277
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6f75 invop.c:280
+ mov word [es:si], ax ; 26 89 04 ; 0xf6f79
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6f7c invop.c:281
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6f80
+ movzx dx, byte [es:si+04bh] ; 26 0f b6 54 4b ; 0xf6f84 invop.c:282
+ sal dx, 008h ; c1 e2 08 ; 0xf6f89
+ movzx ax, byte [es:si+04ah] ; 26 0f b6 44 4a ; 0xf6f8c
+ or dx, ax ; 09 c2 ; 0xf6f91
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6f93
+ movzx ax, byte [es:si+05ch] ; 26 0f b6 44 5c ; 0xf6f97 invop.c:285
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6f9c
+ push ax ; 50 ; 0xf6fa0 invop.c:286
+ push dx ; 52 ; 0xf6fa1
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6fa2
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6fa6
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf6fa8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6fac
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf6faf invop.c:289
+ mov ax, 00080h ; b8 80 00 ; 0xf6fb2
+ mov ss, ax ; 8e d0 ; 0xf6fb5
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6fb7
+ mov ds, ax ; 8e d8 ; 0xf6fbb
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6fbd
+ mov es, ax ; 8e c0 ; 0xf6fc1
+ smsw ax ; 0f 01 e0 ; 0xf6fc3 invop.c:290
+ inc ax ; 40 ; 0xf6fc6
+ lmsw ax ; 0f 01 f0 ; 0xf6fc7
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6fca
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6fcd
+ je near 06fd7h ; 0f 84 02 00 ; 0xf6fd1
+ mov es, ax ; 8e c0 ; 0xf6fd5
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6fd7
+ je near 06fffh ; 0f 84 20 00 ; 0xf6fdb
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6fdf
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6fe4
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6fe9
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6fee
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6ff3
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6ff8
+ mov ds, ax ; 8e d8 ; 0xf6ffd
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6fff
+ dec ax ; 48 ; 0xf7002
+ mov cr0, eax ; 0f 22 c0 ; 0xf7003
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf7006 invop.c:291
+ popaw ; 61 ; 0xf7009
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf700a
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf700f
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf7012
+ iret ; cf ; 0xf7017
+ jmp short 0701eh ; eb 04 ; 0xf7018 invop.c:343
+ sti ; fb ; 0xf701a invop.c:347
+ hlt ; f4 ; 0xf701b invop.c:348
+ jmp short 0701bh ; eb fd ; 0xf701c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf701e invop.c:350
+ pop di ; 5f ; 0xf7021
+ pop si ; 5e ; 0xf7022
+ pop bp ; 5d ; 0xf7023
+ retn ; c3 ; 0xf7024
+ ; disGetNextSymbol 0xf7025 LB 0x3020 -> off=0x0 cb=0000000000000028 uValue=00000000000f5a25 'init_rtc'
+init_rtc: ; 0xf7025 LB 0x28
+ push bp ; 55 ; 0xf7025 timepci.c:74
+ mov bp, sp ; 89 e5 ; 0xf7026
+ push dx ; 52 ; 0xf7028
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf7029 timepci.c:76
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf702c
+ call 01773h ; e8 41 a7 ; 0xf702f
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf7032 timepci.c:77
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7035
+ call 01773h ; e8 38 a7 ; 0xf7038
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf703b timepci.c:78
+ call 01756h ; e8 15 a7 ; 0xf703e
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf7041 timepci.c:79
+ call 01756h ; e8 0f a7 ; 0xf7044
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7047 timepci.c:80
+ pop dx ; 5a ; 0xf704a
+ pop bp ; 5d ; 0xf704b
+ retn ; c3 ; 0xf704c
+ ; disGetNextSymbol 0xf704d LB 0x2ff8 -> off=0x0 cb=0000000000000021 uValue=00000000000f5a4d 'rtc_updating'
+rtc_updating: ; 0xf704d LB 0x21
+ push bp ; 55 ; 0xf704d timepci.c:82
+ mov bp, sp ; 89 e5 ; 0xf704e
+ push dx ; 52 ; 0xf7050
+ mov dx, 061a8h ; ba a8 61 ; 0xf7051 timepci.c:95
+ dec dx ; 4a ; 0xf7054 timepci.c:96
+ je short 07065h ; 74 0e ; 0xf7055
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf7057 timepci.c:97
+ call 01756h ; e8 f9 a6 ; 0xf705a
+ test AL, strict byte 080h ; a8 80 ; 0xf705d
+ jne short 07054h ; 75 f3 ; 0xf705f
+ xor ax, ax ; 31 c0 ; 0xf7061 timepci.c:98
+ jmp short 07068h ; eb 03 ; 0xf7063
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7065 timepci.c:100
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7068 timepci.c:101
+ pop dx ; 5a ; 0xf706b
+ pop bp ; 5d ; 0xf706c
+ retn ; c3 ; 0xf706d
+ ; disGetNextSymbol 0xf706e LB 0x2fd7 -> off=0x0 cb=0000000000000091 uValue=00000000000f5a6e 'int70_function'
+int70_function: ; 0xf706e LB 0x91
+ push bp ; 55 ; 0xf706e timepci.c:110
+ mov bp, sp ; 89 e5 ; 0xf706f
+ push si ; 56 ; 0xf7071
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7072 timepci.c:116
+ call 01756h ; e8 de a6 ; 0xf7075
+ mov bl, al ; 88 c3 ; 0xf7078
+ mov dh, al ; 88 c6 ; 0xf707a
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf707c timepci.c:117
+ call 01756h ; e8 d4 a6 ; 0xf707f
+ mov dl, al ; 88 c2 ; 0xf7082
+ test bl, 060h ; f6 c3 60 ; 0xf7084 timepci.c:119
+ je short 070f6h ; 74 6d ; 0xf7087
+ test AL, strict byte 020h ; a8 20 ; 0xf7089 timepci.c:120
+ je short 07091h ; 74 04 ; 0xf708b
+ sti ; fb ; 0xf708d timepci.c:122
+ int 04ah ; cd 4a ; 0xf708e timepci.c:123
+ cli ; fa ; 0xf7090 timepci.c:124
+ test dl, 040h ; f6 c2 40 ; 0xf7091 timepci.c:126
+ je short 070f6h ; 74 60 ; 0xf7094
+ mov bx, 000a0h ; bb a0 00 ; 0xf7096 timepci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7099
+ mov es, ax ; 8e c0 ; 0xf709c
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf709e
+ test al, al ; 84 c0 ; 0xf70a1 timepci.c:39
+ je short 070f6h ; 74 51 ; 0xf70a3
+ mov bx, 0009ch ; bb 9c 00 ; 0xf70a5 timepci.c:58
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf70a8
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf70ab
+ test bx, bx ; 85 db ; 0xf70af timepci.c:134
+ jne short 070e4h ; 75 31 ; 0xf70b1
+ cmp ax, 003d1h ; 3d d1 03 ; 0xf70b3
+ jnc short 070e4h ; 73 2c ; 0xf70b6
+ mov bx, 00098h ; bb 98 00 ; 0xf70b8 timepci.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf70bb
+ mov bx, 0009ah ; bb 9a 00 ; 0xf70be timepci.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf70c1
+ mov si, 000a0h ; be a0 00 ; 0xf70c4 timepci.c:43
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf70c7
+ mov al, dh ; 88 f0 ; 0xf70cb timepci.c:141
+ and AL, strict byte 037h ; 24 37 ; 0xf70cd
+ movzx dx, al ; 0f b6 d0 ; 0xf70cf
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf70d2
+ call 01773h ; e8 9b a6 ; 0xf70d5
+ mov es, cx ; 8e c1 ; 0xf70d8 timepci.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf70da
+ or AL, strict byte 080h ; 0c 80 ; 0xf70dd timepci.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf70df timepci.c:43
+ jmp short 070f6h ; eb 12 ; 0xf70e2 timepci.c:143
+ add ax, 0fc2fh ; 05 2f fc ; 0xf70e4 timepci.c:145
+ mov dx, bx ; 89 da ; 0xf70e7
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf70e9
+ mov bx, 0009ch ; bb 9c 00 ; 0xf70ec timepci.c:63
+ mov word [es:bx], ax ; 26 89 07 ; 0xf70ef
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf70f2
+ call 0e030h ; e8 37 6f ; 0xf70f6 timepci.c:151
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf70f9 timepci.c:152
+ pop si ; 5e ; 0xf70fc
+ pop bp ; 5d ; 0xf70fd
+ retn ; c3 ; 0xf70fe
+ ; disGetNextSymbol 0xf70ff LB 0x2f46 -> off=0x10 cb=00000000000001c8 uValue=00000000000f5b0f 'int1a_function'
+ db 026h, 071h, 04fh, 071h, 074h, 071h, 0a6h, 071h, 0f5h, 071h, 02dh, 072h, 070h, 072h, 0c7h, 072h
+int1a_function: ; 0xf710f LB 0x1c8
+ push bp ; 55 ; 0xf710f timepci.c:157
+ mov bp, sp ; 89 e5 ; 0xf7110
+ sti ; fb ; 0xf7112 timepci.c:163
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf7113 timepci.c:165
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf7116
+ jnbe near 0714bh ; 0f 87 2f 00 ; 0xf7118
+ movzx bx, al ; 0f b6 d8 ; 0xf711c
+ add bx, bx ; 01 db ; 0xf711f
+ jmp word [cs:bx+070ffh] ; 2e ff a7 ff 70 ; 0xf7121
+ cli ; fa ; 0xf7126 timepci.c:167
+ mov bx, 0046eh ; bb 6e 04 ; 0xf7127 timepci.c:168
+ xor ax, ax ; 31 c0 ; 0xf712a
+ mov es, ax ; 8e c0 ; 0xf712c
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf712e
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf7131
+ mov bx, 0046ch ; bb 6c 04 ; 0xf7134 timepci.c:169
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7137
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf713a
+ mov bx, 00470h ; bb 70 04 ; 0xf713d timepci.c:170
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7140
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf7143
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7146 timepci.c:171
+ sti ; fb ; 0xf714a timepci.c:172
+ mov sp, bp ; 89 ec ; 0xf714b timepci.c:175
+ pop bp ; 5d ; 0xf714d
+ retn ; c3 ; 0xf714e
+ cli ; fa ; 0xf714f timepci.c:178
+ mov bx, 0046eh ; bb 6e 04 ; 0xf7150 timepci.c:179
+ xor ax, ax ; 31 c0 ; 0xf7153
+ mov es, ax ; 8e c0 ; 0xf7155
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf7157
+ mov word [es:bx], ax ; 26 89 07 ; 0xf715a
+ mov bx, 0046ch ; bb 6c 04 ; 0xf715d timepci.c:180
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7160
+ mov word [es:bx], ax ; 26 89 07 ; 0xf7163
+ mov bx, 00470h ; bb 70 04 ; 0xf7166 timepci.c:181
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7169
+ sti ; fb ; 0xf716d timepci.c:182
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf716e timepci.c:183
+ jmp short 0714bh ; eb d7 ; 0xf7172 timepci.c:185
+ call 0704dh ; e8 d6 fe ; 0xf7174 timepci.c:188
+ test ax, ax ; 85 c0 ; 0xf7177
+ je short 0717dh ; 74 02 ; 0xf7179
+ jmp short 0714bh ; eb ce ; 0xf717b timepci.c:190
+ xor ax, ax ; 31 c0 ; 0xf717d timepci.c:193
+ call 01756h ; e8 d4 a5 ; 0xf717f
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf7182
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7185 timepci.c:194
+ call 01756h ; e8 cb a5 ; 0xf7188
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf718b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf718e timepci.c:195
+ call 01756h ; e8 c2 a5 ; 0xf7191
+ mov bl, al ; 88 c3 ; 0xf7194
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf7196
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7199 timepci.c:196
+ call 01756h ; e8 b7 a5 ; 0xf719c
+ and AL, strict byte 001h ; 24 01 ; 0xf719f
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf71a1
+ jmp short 071ebh ; eb 45 ; 0xf71a4
+ call 0704dh ; e8 a4 fe ; 0xf71a6 timepci.c:213
+ test ax, ax ; 85 c0 ; 0xf71a9
+ je short 071b0h ; 74 03 ; 0xf71ab
+ call 07025h ; e8 75 fe ; 0xf71ad timepci.c:214
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf71b0 timepci.c:217
+ xor ax, ax ; 31 c0 ; 0xf71b4
+ call 01773h ; e8 ba a5 ; 0xf71b6
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf71b9 timepci.c:218
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf71bd
+ call 01773h ; e8 b0 a5 ; 0xf71c0
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf71c3 timepci.c:219
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf71c7
+ call 01773h ; e8 a6 a5 ; 0xf71ca
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf71cd timepci.c:221
+ call 01756h ; e8 83 a5 ; 0xf71d0
+ mov bl, al ; 88 c3 ; 0xf71d3
+ and bl, 060h ; 80 e3 60 ; 0xf71d5
+ or bl, 002h ; 80 cb 02 ; 0xf71d8
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf71db
+ and AL, strict byte 001h ; 24 01 ; 0xf71de
+ or bl, al ; 08 c3 ; 0xf71e0
+ movzx dx, bl ; 0f b6 d3 ; 0xf71e2 timepci.c:223
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf71e5
+ call 01773h ; e8 88 a5 ; 0xf71e8
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf71eb
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf71ef
+ jmp near 0714bh ; e9 56 ff ; 0xf71f2
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf71f5 timepci.c:230
+ call 0704dh ; e8 51 fe ; 0xf71f9 timepci.c:231
+ test ax, ax ; 85 c0 ; 0xf71fc
+ je short 07203h ; 74 03 ; 0xf71fe
+ jmp near 0714bh ; e9 48 ff ; 0xf7200 timepci.c:233
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf7203 timepci.c:235
+ call 01756h ; e8 4d a5 ; 0xf7206
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf7209
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf720c timepci.c:236
+ call 01756h ; e8 44 a5 ; 0xf720f
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf7212
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7215 timepci.c:237
+ call 01756h ; e8 3b a5 ; 0xf7218
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf721b
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf721e timepci.c:238
+ call 01756h ; e8 32 a5 ; 0xf7221
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf7224
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf7227 timepci.c:239
+ jmp near 0714bh ; e9 1e ff ; 0xf722a timepci.c:241
+ call 0704dh ; e8 1d fe ; 0xf722d timepci.c:254
+ test ax, ax ; 85 c0 ; 0xf7230
+ je short 0723ah ; 74 06 ; 0xf7232
+ call 07025h ; e8 ee fd ; 0xf7234 timepci.c:255
+ jmp near 0714bh ; e9 11 ff ; 0xf7237 timepci.c:257
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf723a timepci.c:259
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf723e
+ call 01773h ; e8 2f a5 ; 0xf7241
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf7244 timepci.c:260
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf7248
+ call 01773h ; e8 25 a5 ; 0xf724b
+ movzx dx, byte [bp+00eh] ; 0f b6 56 0e ; 0xf724e timepci.c:261
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7252
+ call 01773h ; e8 1b a5 ; 0xf7255
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf7258 timepci.c:262
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf725c
+ call 01773h ; e8 11 a5 ; 0xf725f
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7262 timepci.c:263
+ call 01756h ; e8 ee a4 ; 0xf7265
+ mov bl, al ; 88 c3 ; 0xf7268
+ and bl, 07fh ; 80 e3 7f ; 0xf726a
+ jmp near 071e2h ; e9 72 ff ; 0xf726d
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf7270 timepci.c:281
+ call 01756h ; e8 e0 a4 ; 0xf7273
+ mov bl, al ; 88 c3 ; 0xf7276
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf7278 timepci.c:282
+ test AL, strict byte 020h ; a8 20 ; 0xf727d timepci.c:283
+ je short 07284h ; 74 03 ; 0xf727f
+ jmp near 0714bh ; e9 c7 fe ; 0xf7281 timepci.c:286
+ call 0704dh ; e8 c6 fd ; 0xf7284 timepci.c:288
+ test ax, ax ; 85 c0 ; 0xf7287
+ je short 0728eh ; 74 03 ; 0xf7289
+ call 07025h ; e8 97 fd ; 0xf728b timepci.c:289
+ movzx dx, byte [bp+00fh] ; 0f b6 56 0f ; 0xf728e timepci.c:292
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7292
+ call 01773h ; e8 db a4 ; 0xf7295
+ movzx dx, byte [bp+010h] ; 0f b6 56 10 ; 0xf7298 timepci.c:293
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf729c
+ call 01773h ; e8 d1 a4 ; 0xf729f
+ movzx dx, byte [bp+011h] ; 0f b6 56 11 ; 0xf72a2 timepci.c:294
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf72a6
+ call 01773h ; e8 c7 a4 ; 0xf72a9
+ mov dx, 000a1h ; ba a1 00 ; 0xf72ac timepci.c:295
+ in AL, DX ; ec ; 0xf72af
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf72b0
+ and AL, strict byte 0feh ; 24 fe ; 0xf72b2
+ out DX, AL ; ee ; 0xf72b4
+ mov al, bl ; 88 d8 ; 0xf72b5 timepci.c:297
+ and AL, strict byte 05fh ; 24 5f ; 0xf72b7
+ or AL, strict byte 020h ; 0c 20 ; 0xf72b9
+ movzx dx, al ; 0f b6 d0 ; 0xf72bb
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf72be
+ call 01773h ; e8 af a4 ; 0xf72c1
+ jmp near 0714bh ; e9 84 fe ; 0xf72c4 timepci.c:299
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf72c7 timepci.c:312
+ call 01756h ; e8 89 a4 ; 0xf72ca
+ mov bl, al ; 88 c3 ; 0xf72cd
+ and AL, strict byte 057h ; 24 57 ; 0xf72cf timepci.c:314
+ movzx dx, al ; 0f b6 d0 ; 0xf72d1
+ jmp near 071e5h ; e9 0e ff ; 0xf72d4
+ ; disGetNextSymbol 0xf72d7 LB 0x2d6e -> off=0x0 cb=0000000000000034 uValue=00000000000f5cd7 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf72d7 LB 0x34
+ push bp ; 55 ; 0xf72d7 ps2mouse.c:77
+ mov bp, sp ; 89 e5 ; 0xf72d8
+ push bx ; 53 ; 0xf72da
+ push dx ; 52 ; 0xf72db
+ mov bl, al ; 88 c3 ; 0xf72dc
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf72de ps2mouse.c:81
+ in AL, DX ; ec ; 0xf72e1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf72e2
+ test AL, strict byte 002h ; a8 02 ; 0xf72e4
+ je short 072f6h ; 74 0e ; 0xf72e6
+ push 00900h ; 68 00 09 ; 0xf72e8 ps2mouse.c:82
+ push 0117ah ; 68 7a 11 ; 0xf72eb
+ push strict byte 00007h ; 6a 07 ; 0xf72ee
+ call 01a14h ; e8 21 a7 ; 0xf72f0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf72f3
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf72f6 ps2mouse.c:83
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf72f8
+ out DX, AL ; ee ; 0xf72fb
+ mov al, bl ; 88 d8 ; 0xf72fc ps2mouse.c:84
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf72fe
+ out DX, AL ; ee ; 0xf7301
+ xor al, bl ; 30 d8 ; 0xf7302 ps2mouse.c:86
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7304
+ pop dx ; 5a ; 0xf7307
+ pop bx ; 5b ; 0xf7308
+ pop bp ; 5d ; 0xf7309
+ retn ; c3 ; 0xf730a
+ ; disGetNextSymbol 0xf730b LB 0x2d3a -> off=0x0 cb=000000000000005c uValue=00000000000f5d0b 'get_mouse_data'
+get_mouse_data: ; 0xf730b LB 0x5c
+ push bp ; 55 ; 0xf730b ps2mouse.c:89
+ mov bp, sp ; 89 e5 ; 0xf730c
+ push bx ; 53 ; 0xf730e
+ push cx ; 51 ; 0xf730f
+ push ax ; 50 ; 0xf7310
+ mov bx, ax ; 89 c3 ; 0xf7311
+ mov es, dx ; 8e c2 ; 0xf7313
+ mov cx, 02710h ; b9 10 27 ; 0xf7315 ps2mouse.c:91
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf7318 ps2mouse.c:94
+ in AL, DX ; ec ; 0xf731b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf731c
+ and ax, strict word 00021h ; 25 21 00 ; 0xf731e
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf7321
+ je short 0734dh ; 74 27 ; 0xf7324
+ test cx, cx ; 85 c9 ; 0xf7326
+ je short 0734dh ; 74 23 ; 0xf7328
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf732a ps2mouse.c:97
+ in AL, DX ; ec ; 0xf732d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf732e
+ and AL, strict byte 010h ; 24 10 ; 0xf7330
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7332
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf7335 ps2mouse.c:98
+ in AL, DX ; ec ; 0xf7338
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7339
+ mov dx, ax ; 89 c2 ; 0xf733b
+ xor dh, ah ; 30 e6 ; 0xf733d
+ and dl, 010h ; 80 e2 10 ; 0xf733f
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7342
+ cmp dx, ax ; 39 c2 ; 0xf7346
+ je short 07335h ; 74 eb ; 0xf7348
+ dec cx ; 49 ; 0xf734a ps2mouse.c:100
+ jmp short 07318h ; eb cb ; 0xf734b ps2mouse.c:101
+ test cx, cx ; 85 c9 ; 0xf734d ps2mouse.c:103
+ jne short 07355h ; 75 04 ; 0xf734f
+ mov AL, strict byte 001h ; b0 01 ; 0xf7351 ps2mouse.c:104
+ jmp short 07360h ; eb 0b ; 0xf7353
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf7355 ps2mouse.c:106
+ in AL, DX ; ec ; 0xf7358
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7359
+ mov byte [es:bx], al ; 26 88 07 ; 0xf735b ps2mouse.c:107
+ xor al, al ; 30 c0 ; 0xf735e ps2mouse.c:108
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7360 ps2mouse.c:109
+ pop cx ; 59 ; 0xf7363
+ pop bx ; 5b ; 0xf7364
+ pop bp ; 5d ; 0xf7365
+ retn ; c3 ; 0xf7366
+ ; disGetNextSymbol 0xf7367 LB 0x2cde -> off=0x0 cb=0000000000000032 uValue=00000000000f5d67 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf7367 LB 0x32
+ push bp ; 55 ; 0xf7367 ps2mouse.c:111
+ mov bp, sp ; 89 e5 ; 0xf7368
+ push bx ; 53 ; 0xf736a
+ push dx ; 52 ; 0xf736b
+ mov bl, al ; 88 c3 ; 0xf736c
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf736e ps2mouse.c:113
+ in AL, DX ; ec ; 0xf7371
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7372
+ test AL, strict byte 002h ; a8 02 ; 0xf7374
+ je short 07386h ; 74 0e ; 0xf7376
+ push 0090ah ; 68 0a 09 ; 0xf7378 ps2mouse.c:114
+ push 0117ah ; 68 7a 11 ; 0xf737b
+ push strict byte 00007h ; 6a 07 ; 0xf737e
+ call 01a14h ; e8 91 a6 ; 0xf7380
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7383
+ mov AL, strict byte 060h ; b0 60 ; 0xf7386 ps2mouse.c:116
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf7388
+ out DX, AL ; ee ; 0xf738b
+ mov al, bl ; 88 d8 ; 0xf738c ps2mouse.c:117
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf738e
+ out DX, AL ; ee ; 0xf7391
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7392 ps2mouse.c:118
+ pop dx ; 5a ; 0xf7395
+ pop bx ; 5b ; 0xf7396
+ pop bp ; 5d ; 0xf7397
+ retn ; c3 ; 0xf7398
+ ; disGetNextSymbol 0xf7399 LB 0x2cac -> off=0x0 cb=0000000000000094 uValue=00000000000f5d99 'int74_function'
+int74_function: ; 0xf7399 LB 0x94
+ push bp ; 55 ; 0xf7399 ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf739a
+ push si ; 56 ; 0xf739c
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf739d ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf73a0
+ mov es, ax ; 8e c0 ; 0xf73a3
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf73a5
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf73a8 ps2mouse.c:129
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf73ad ps2mouse.c:131
+ in AL, DX ; ec ; 0xf73b0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73b1
+ and AL, strict byte 021h ; 24 21 ; 0xf73b3 ps2mouse.c:132
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf73b5
+ jne short 07427h ; 75 6e ; 0xf73b7
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf73b9 ps2mouse.c:135
+ in AL, DX ; ec ; 0xf73bc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73bd
+ mov cl, al ; 88 c1 ; 0xf73bf
+ mov si, strict word 00026h ; be 26 00 ; 0xf73c1 ps2mouse.c:38
+ mov es, bx ; 8e c3 ; 0xf73c4
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf73c6
+ mov si, strict word 00027h ; be 27 00 ; 0xf73c9 ps2mouse.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf73cc
+ mov dl, ah ; 88 e2 ; 0xf73cf ps2mouse.c:39
+ test ah, 080h ; f6 c4 80 ; 0xf73d1 ps2mouse.c:141
+ je short 07427h ; 74 51 ; 0xf73d4
+ mov dh, dl ; 88 d6 ; 0xf73d6 ps2mouse.c:145
+ and dh, 007h ; 80 e6 07 ; 0xf73d8
+ mov ah, al ; 88 c4 ; 0xf73db ps2mouse.c:146
+ and ah, 007h ; 80 e4 07 ; 0xf73dd
+ movzx si, ah ; 0f b6 f4 ; 0xf73e0 ps2mouse.c:147
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf73e3
+ mov es, bx ; 8e c3 ; 0xf73e6 ps2mouse.c:43
+ mov byte [es:si], cl ; 26 88 0c ; 0xf73e8
+ cmp ah, dh ; 38 f4 ; 0xf73eb ps2mouse.c:149
+ jc short 0741dh ; 72 2e ; 0xf73ed
+ mov si, strict word 00028h ; be 28 00 ; 0xf73ef ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf73f2
+ xor ah, ah ; 30 e4 ; 0xf73f5 ps2mouse.c:39
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf73f7
+ mov si, strict word 00029h ; be 29 00 ; 0xf73fa ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf73fd
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf7400 ps2mouse.c:39
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf7403 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7406
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7409 ps2mouse.c:39
+ xor al, al ; 30 c0 ; 0xf740c ps2mouse.c:154
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf740e
+ test dl, 080h ; f6 c2 80 ; 0xf7411 ps2mouse.c:157
+ je short 0741fh ; 74 09 ; 0xf7414
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf7416 ps2mouse.c:158
+ jmp short 0741fh ; eb 02 ; 0xf741b ps2mouse.c:160
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf741d ps2mouse.c:161
+ mov si, strict word 00026h ; be 26 00 ; 0xf741f ps2mouse.c:43
+ mov es, bx ; 8e c3 ; 0xf7422
+ mov byte [es:si], al ; 26 88 04 ; 0xf7424
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7427 ps2mouse.c:164
+ pop si ; 5e ; 0xf742a
+ pop bp ; 5d ; 0xf742b
+ retn ; c3 ; 0xf742c
+ ; disGetNextSymbol 0xf742d LB 0x2c18 -> off=0x10 cb=0000000000000370 uValue=00000000000f5e3d 'int15_function_mouse'
+ db 080h, 074h, 0eeh, 074h, 069h, 075h, 0fah, 075h, 068h, 076h, 0cch, 074h, 090h, 076h, 055h, 077h
+int15_function_mouse: ; 0xf743d LB 0x370
+ push bp ; 55 ; 0xf743d ps2mouse.c:166
+ mov bp, sp ; 89 e5 ; 0xf743e
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7440
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7443 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7446
+ mov es, ax ; 8e c0 ; 0xf7449
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf744b
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf744e ps2mouse.c:188
+ jbe short 0745fh ; 76 0b ; 0xf7452
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7454 ps2mouse.c:191
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf7458 ps2mouse.c:192
+ jmp near 077a9h ; e9 4a 03 ; 0xf745c ps2mouse.c:193
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf745f ps2mouse.c:197
+ call 07367h ; e8 02 ff ; 0xf7462
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf7465 ps2mouse.c:198
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf7469 ps2mouse.c:199
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf746d ps2mouse.c:201
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf7470
+ jnbe near 07790h ; 0f 87 1a 03 ; 0xf7472
+ movzx bx, al ; 0f b6 d8 ; 0xf7476
+ add bx, bx ; 01 db ; 0xf7479
+ jmp word [cs:bx+0742dh] ; 2e ff a7 2d 74 ; 0xf747b
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf7480 ps2mouse.c:204
+ jnbe near 0779bh ; 0f 87 13 03 ; 0xf7484
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7488 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf748b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf748d
+ test AL, strict byte 080h ; a8 80 ; 0xf7490 ps2mouse.c:212
+ jne short 0749fh ; 75 0b ; 0xf7492
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7494 ps2mouse.c:214
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf7498 ps2mouse.c:215
+ jmp near 077a3h ; e9 04 03 ; 0xf749c ps2mouse.c:216
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf749f ps2mouse.c:218
+ db 00fh, 094h, 0c0h
+ ; sete al ; 0f 94 c0 ; 0xf74a3
+ add AL, strict byte 0f4h ; 04 f4 ; 0xf74a6
+ xor ah, ah ; 30 e4 ; 0xf74a8 ps2mouse.c:226
+ call 072d7h ; e8 2a fe ; 0xf74aa
+ test al, al ; 84 c0 ; 0xf74ad ps2mouse.c:227
+ jne near 07731h ; 0f 85 7e 02 ; 0xf74af
+ mov dx, ss ; 8c d2 ; 0xf74b3 ps2mouse.c:228
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf74b5
+ call 0730bh ; e8 50 fe ; 0xf74b8
+ test al, al ; 84 c0 ; 0xf74bb ps2mouse.c:229
+ je near 077a3h ; 0f 84 e2 02 ; 0xf74bd
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf74c1
+ jne near 07731h ; 0f 85 68 02 ; 0xf74c5
+ jmp near 077a3h ; e9 d7 02 ; 0xf74c9 ps2mouse.c:231
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf74cc ps2mouse.c:242
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf74cf
+ jc short 074d7h ; 72 04 ; 0xf74d1
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf74d3
+ jbe short 074dah ; 76 03 ; 0xf74d5
+ jmp near 0765dh ; e9 83 01 ; 0xf74d7
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf74da ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf74dd
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf74df
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf74e2 ps2mouse.c:248
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf74e5
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf74e7
+ or al, ah ; 08 e0 ; 0xf74e9
+ mov byte [es:bx], al ; 26 88 07 ; 0xf74eb ps2mouse.c:43
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf74ee ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf74f1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf74f3
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf74f6 ps2mouse.c:256
+ mov byte [es:bx], al ; 26 88 07 ; 0xf74f8 ps2mouse.c:43
+ mov ax, 000ffh ; b8 ff 00 ; 0xf74fb ps2mouse.c:258
+ call 072d7h ; e8 d6 fd ; 0xf74fe
+ test al, al ; 84 c0 ; 0xf7501 ps2mouse.c:259
+ jne near 07731h ; 0f 85 2a 02 ; 0xf7503
+ mov dx, ss ; 8c d2 ; 0xf7507 ps2mouse.c:260
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7509
+ call 0730bh ; e8 fc fd ; 0xf750c
+ mov dl, al ; 88 c2 ; 0xf750f
+ cmp byte [bp-004h], 0feh ; 80 7e fc fe ; 0xf7511 ps2mouse.c:262
+ jne short 07522h ; 75 0b ; 0xf7515
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7517 ps2mouse.c:263
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf751b ps2mouse.c:264
+ jmp near 077a3h ; e9 81 02 ; 0xf751f ps2mouse.c:265
+ cmp byte [bp-004h], 0fah ; 80 7e fc fa ; 0xf7522 ps2mouse.c:267
+ je short 07538h ; 74 10 ; 0xf7526
+ movzx ax, byte [bp-004h] ; 0f b6 46 fc ; 0xf7528 ps2mouse.c:268
+ push ax ; 50 ; 0xf752c
+ push 00915h ; 68 15 09 ; 0xf752d
+ push strict byte 00007h ; 6a 07 ; 0xf7530
+ call 01a14h ; e8 df a4 ; 0xf7532
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7535
+ test dl, dl ; 84 d2 ; 0xf7538 ps2mouse.c:269
+ jne near 07731h ; 0f 85 f3 01 ; 0xf753a
+ mov dx, ss ; 8c d2 ; 0xf753e ps2mouse.c:270
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7540
+ call 0730bh ; e8 c5 fd ; 0xf7543
+ test al, al ; 84 c0 ; 0xf7546 ps2mouse.c:271
+ jne near 07731h ; 0f 85 e5 01 ; 0xf7548
+ mov dx, ss ; 8c d2 ; 0xf754c ps2mouse.c:272
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf754e
+ call 0730bh ; e8 b7 fd ; 0xf7551
+ test al, al ; 84 c0 ; 0xf7554 ps2mouse.c:273
+ jne near 07731h ; 0f 85 d7 01 ; 0xf7556
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf755a ps2mouse.c:275
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf755d
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf7560 ps2mouse.c:276
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf7563
+ jmp near 077a3h ; e9 3a 02 ; 0xf7566 ps2mouse.c:277
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7569 ps2mouse.c:290
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf756c
+ jc short 07580h ; 72 10 ; 0xf756e
+ jbe short 0759eh ; 76 2c ; 0xf7570
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf7572
+ je short 075b0h ; 74 3a ; 0xf7574
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf7576
+ je short 075aah ; 74 30 ; 0xf7578
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf757a
+ je short 075a4h ; 74 26 ; 0xf757c
+ jmp short 075b6h ; eb 36 ; 0xf757e
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7580
+ je short 07598h ; 74 14 ; 0xf7582
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7584
+ je short 07592h ; 74 0a ; 0xf7586
+ test al, al ; 84 c0 ; 0xf7588
+ jne short 075b6h ; 75 2a ; 0xf758a
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf758c ps2mouse.c:291
+ jmp short 075bah ; eb 28 ; 0xf7590
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf7592 ps2mouse.c:292
+ jmp short 075bah ; eb 22 ; 0xf7596
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf7598 ps2mouse.c:293
+ jmp short 075bah ; eb 1c ; 0xf759c
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf759e ps2mouse.c:294
+ jmp short 075bah ; eb 16 ; 0xf75a2
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf75a4 ps2mouse.c:295
+ jmp short 075bah ; eb 10 ; 0xf75a8
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf75aa ps2mouse.c:296
+ jmp short 075bah ; eb 0a ; 0xf75ae
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf75b0 ps2mouse.c:297
+ jmp short 075bah ; eb 04 ; 0xf75b4
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf75b6 ps2mouse.c:298
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf75ba ps2mouse.c:300
+ jbe short 075efh ; 76 2f ; 0xf75be
+ mov ax, 000f3h ; b8 f3 00 ; 0xf75c0 ps2mouse.c:301
+ call 072d7h ; e8 11 fd ; 0xf75c3
+ test al, al ; 84 c0 ; 0xf75c6 ps2mouse.c:302
+ jne short 075e4h ; 75 1a ; 0xf75c8
+ mov dx, ss ; 8c d2 ; 0xf75ca ps2mouse.c:303
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf75cc
+ call 0730bh ; e8 39 fd ; 0xf75cf
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf75d2 ps2mouse.c:304
+ call 072d7h ; e8 fe fc ; 0xf75d6
+ mov dx, ss ; 8c d2 ; 0xf75d9 ps2mouse.c:305
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf75db
+ call 0730bh ; e8 2a fd ; 0xf75de
+ jmp near 077a3h ; e9 bf 01 ; 0xf75e1 ps2mouse.c:307
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf75e4 ps2mouse.c:309
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf75e8 ps2mouse.c:310
+ jmp near 077a3h ; e9 b4 01 ; 0xf75ec ps2mouse.c:312
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf75ef ps2mouse.c:314
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf75f3 ps2mouse.c:315
+ jmp near 077a3h ; e9 a9 01 ; 0xf75f7 ps2mouse.c:317
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf75fa ps2mouse.c:326
+ jnc short 0765dh ; 73 5d ; 0xf75fe
+ mov ax, 000e8h ; b8 e8 00 ; 0xf7600 ps2mouse.c:327
+ call 072d7h ; e8 d1 fc ; 0xf7603
+ test al, al ; 84 c0 ; 0xf7606 ps2mouse.c:328
+ jne short 07652h ; 75 48 ; 0xf7608
+ mov dx, ss ; 8c d2 ; 0xf760a ps2mouse.c:329
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf760c
+ call 0730bh ; e8 f9 fc ; 0xf760f
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7612 ps2mouse.c:330
+ je short 07628h ; 74 10 ; 0xf7616
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7618 ps2mouse.c:331
+ push ax ; 50 ; 0xf761c
+ push 00940h ; 68 40 09 ; 0xf761d
+ push strict byte 00007h ; 6a 07 ; 0xf7620
+ call 01a14h ; e8 ef a3 ; 0xf7622
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7625
+ movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf7628 ps2mouse.c:332
+ call 072d7h ; e8 a8 fc ; 0xf762c
+ mov dx, ss ; 8c d2 ; 0xf762f ps2mouse.c:333
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7631
+ call 0730bh ; e8 d4 fc ; 0xf7634
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7637 ps2mouse.c:334
+ je near 077a3h ; 0f 84 64 01 ; 0xf763b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf763f ps2mouse.c:335
+ push ax ; 50 ; 0xf7643
+ push 00940h ; 68 40 09 ; 0xf7644
+ push strict byte 00007h ; 6a 07 ; 0xf7647
+ call 01a14h ; e8 c8 a3 ; 0xf7649
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf764c
+ jmp near 077a3h ; e9 51 01 ; 0xf764f ps2mouse.c:337
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7652 ps2mouse.c:339
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7656 ps2mouse.c:340
+ jmp near 077a3h ; e9 46 01 ; 0xf765a ps2mouse.c:342
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf765d ps2mouse.c:344
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf7661 ps2mouse.c:345
+ jmp near 077a3h ; e9 3b 01 ; 0xf7665 ps2mouse.c:347
+ mov ax, 000f2h ; b8 f2 00 ; 0xf7668 ps2mouse.c:351
+ call 072d7h ; e8 69 fc ; 0xf766b
+ test al, al ; 84 c0 ; 0xf766e ps2mouse.c:352
+ jne short 07685h ; 75 13 ; 0xf7670
+ mov dx, ss ; 8c d2 ; 0xf7672 ps2mouse.c:353
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7674
+ call 0730bh ; e8 91 fc ; 0xf7677
+ mov dx, ss ; 8c d2 ; 0xf767a ps2mouse.c:354
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf767c
+ call 0730bh ; e8 89 fc ; 0xf767f
+ jmp near 07560h ; e9 db fe ; 0xf7682
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7685 ps2mouse.c:355
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7689 ps2mouse.c:360
+ jmp near 077a3h ; e9 13 01 ; 0xf768d ps2mouse.c:362
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7690 ps2mouse.c:366
+ test al, al ; 84 c0 ; 0xf7693
+ jbe short 0769eh ; 76 07 ; 0xf7695
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7697
+ jbe short 07707h ; 76 6c ; 0xf7699
+ jmp near 0773bh ; e9 9d 00 ; 0xf769b
+ mov ax, 000e9h ; b8 e9 00 ; 0xf769e ps2mouse.c:368
+ call 072d7h ; e8 33 fc ; 0xf76a1
+ test al, al ; 84 c0 ; 0xf76a4 ps2mouse.c:369
+ jne near 07731h ; 0f 85 87 00 ; 0xf76a6
+ mov dx, ss ; 8c d2 ; 0xf76aa ps2mouse.c:370
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf76ac
+ call 0730bh ; e8 59 fc ; 0xf76af
+ mov dl, al ; 88 c2 ; 0xf76b2
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf76b4 ps2mouse.c:371
+ je short 076cah ; 74 10 ; 0xf76b8
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf76ba ps2mouse.c:372
+ push ax ; 50 ; 0xf76be
+ push 00940h ; 68 40 09 ; 0xf76bf
+ push strict byte 00007h ; 6a 07 ; 0xf76c2
+ call 01a14h ; e8 4d a3 ; 0xf76c4
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf76c7
+ test dl, dl ; 84 d2 ; 0xf76ca ps2mouse.c:373
+ jne short 07731h ; 75 63 ; 0xf76cc
+ mov dx, ss ; 8c d2 ; 0xf76ce ps2mouse.c:374
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf76d0
+ call 0730bh ; e8 35 fc ; 0xf76d3
+ test al, al ; 84 c0 ; 0xf76d6 ps2mouse.c:375
+ jne short 07731h ; 75 57 ; 0xf76d8
+ mov dx, ss ; 8c d2 ; 0xf76da ps2mouse.c:376
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf76dc
+ call 0730bh ; e8 29 fc ; 0xf76df
+ test al, al ; 84 c0 ; 0xf76e2 ps2mouse.c:377
+ jne short 07731h ; 75 4b ; 0xf76e4
+ mov dx, ss ; 8c d2 ; 0xf76e6 ps2mouse.c:378
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf76e8
+ call 0730bh ; e8 1d fc ; 0xf76eb
+ test al, al ; 84 c0 ; 0xf76ee ps2mouse.c:379
+ jne short 07731h ; 75 3f ; 0xf76f0
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf76f2 ps2mouse.c:380
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf76f5
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf76f8 ps2mouse.c:381
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf76fb
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf76fe ps2mouse.c:382
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf7701
+ jmp near 077a3h ; e9 9c 00 ; 0xf7704 ps2mouse.c:384
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7707 ps2mouse.c:398
+ jne short 07710h ; 75 05 ; 0xf7709
+ mov ax, 000e6h ; b8 e6 00 ; 0xf770b ps2mouse.c:399
+ jmp short 07713h ; eb 03 ; 0xf770e ps2mouse.c:400
+ mov ax, 000e7h ; b8 e7 00 ; 0xf7710 ps2mouse.c:401
+ call 072d7h ; e8 c1 fb ; 0xf7713
+ mov dl, al ; 88 c2 ; 0xf7716
+ test dl, dl ; 84 d2 ; 0xf7718 ps2mouse.c:403
+ jne short 0772bh ; 75 0f ; 0xf771a
+ mov dx, ss ; 8c d2 ; 0xf771c ps2mouse.c:404
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf771e
+ call 0730bh ; e8 e7 fb ; 0xf7721
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7724 ps2mouse.c:405
+ db 00fh, 095h, 0c2h
+ ; setne dl ; 0f 95 c2 ; 0xf7728
+ test dl, dl ; 84 d2 ; 0xf772b ps2mouse.c:407
+ je near 077a3h ; 0f 84 72 00 ; 0xf772d
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7731 ps2mouse.c:409
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7735 ps2mouse.c:410
+ jmp short 077a3h ; eb 68 ; 0xf7739 ps2mouse.c:412
+ movzx ax, byte [bp+00dh] ; 0f b6 46 0d ; 0xf773b ps2mouse.c:415
+ push ax ; 50 ; 0xf773f
+ push 0096ch ; 68 6c 09 ; 0xf7740
+ push strict byte 00007h ; 6a 07 ; 0xf7743
+ call 01a14h ; e8 cc a2 ; 0xf7745
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7748
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf774b ps2mouse.c:417
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf774f ps2mouse.c:418
+ jmp short 077a3h ; eb 4e ; 0xf7753 ps2mouse.c:420
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf7755 ps2mouse.c:425
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf7758 ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf775b
+ mov word [es:bx], cx ; 26 89 0f ; 0xf775d
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf7760 ps2mouse.c:53
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf7763
+ mov word [es:bx], ax ; 26 89 07 ; 0xf7766
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7769 ps2mouse.c:38
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf776c
+ mov al, bl ; 88 d8 ; 0xf776f ps2mouse.c:39
+ test cx, cx ; 85 c9 ; 0xf7771 ps2mouse.c:429
+ jne short 07784h ; 75 0f ; 0xf7773
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf7775
+ jne short 07784h ; 75 09 ; 0xf7779
+ test bl, 080h ; f6 c3 80 ; 0xf777b ps2mouse.c:431
+ je short 07786h ; 74 06 ; 0xf777e
+ and AL, strict byte 07fh ; 24 7f ; 0xf7780 ps2mouse.c:432
+ jmp short 07786h ; eb 02 ; 0xf7782 ps2mouse.c:435
+ or AL, strict byte 080h ; 0c 80 ; 0xf7784 ps2mouse.c:437
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7786 ps2mouse.c:43
+ mov es, dx ; 8e c2 ; 0xf7789
+ mov byte [es:bx], al ; 26 88 07 ; 0xf778b
+ jmp short 077a3h ; eb 13 ; 0xf778e ps2mouse.c:440
+ push 00986h ; 68 86 09 ; 0xf7790 ps2mouse.c:443
+ push strict byte 00007h ; 6a 07 ; 0xf7793
+ call 01a14h ; e8 7c a2 ; 0xf7795
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7798
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf779b ps2mouse.c:445
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf779f ps2mouse.c:446
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf77a3 ps2mouse.c:450
+ call 07367h ; e8 be fb ; 0xf77a6
+ mov sp, bp ; 89 ec ; 0xf77a9 ps2mouse.c:451
+ pop bp ; 5d ; 0xf77ab
+ retn ; c3 ; 0xf77ac
+ ; disGetNextSymbol 0xf77ad LB 0x2898 -> off=0x0 cb=00000000000000b2 uValue=00000000000f61ad 'int17_function'
+int17_function: ; 0xf77ad LB 0xb2
+ push bp ; 55 ; 0xf77ad parallel.c:60
+ mov bp, sp ; 89 e5 ; 0xf77ae
+ push si ; 56 ; 0xf77b0
+ push di ; 57 ; 0xf77b1
+ push ax ; 50 ; 0xf77b2
+ sti ; fb ; 0xf77b3 parallel.c:65
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf77b4 parallel.c:67
+ add bx, bx ; 01 db ; 0xf77b7
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf77b9
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf77bc parallel.c:48
+ mov es, ax ; 8e c0 ; 0xf77bf
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf77c1
+ mov si, bx ; 89 de ; 0xf77c4 parallel.c:49
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf77c6 parallel.c:68
+ jnc near 07854h ; 0f 83 86 00 ; 0xf77ca
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf77ce
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf77d1
+ jnc near 07854h ; 0f 83 7c 00 ; 0xf77d4
+ test bx, bx ; 85 db ; 0xf77d8
+ jbe near 07854h ; 0f 86 76 00 ; 0xf77da
+ mov di, ax ; 89 c7 ; 0xf77de parallel.c:69
+ add di, strict byte 00078h ; 83 c7 78 ; 0xf77e0
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf77e3 parallel.c:38
+ movzx cx, al ; 0f b6 c8 ; 0xf77e6 parallel.c:39
+ sal cx, 008h ; c1 e1 08 ; 0xf77e9
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf77ec parallel.c:70
+ jne short 0781fh ; 75 2d ; 0xf77f0
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf77f2 parallel.c:71
+ mov dx, bx ; 89 da ; 0xf77f5
+ out DX, AL ; ee ; 0xf77f7
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf77f8 parallel.c:72
+ in AL, DX ; ec ; 0xf77fb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf77fc
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf77fe
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7801 parallel.c:73
+ or AL, strict byte 001h ; 0c 01 ; 0xf7804
+ out DX, AL ; ee ; 0xf7806
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7807 parallel.c:74
+ and AL, strict byte 0feh ; 24 fe ; 0xf780b
+ out DX, AL ; ee ; 0xf780d
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf780e parallel.c:75
+ in AL, DX ; ec ; 0xf7811
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7812
+ test AL, strict byte 040h ; a8 40 ; 0xf7814
+ je short 0781fh ; 74 07 ; 0xf7816
+ test cx, cx ; 85 c9 ; 0xf7818
+ je short 0781fh ; 74 03 ; 0xf781a
+ dec cx ; 49 ; 0xf781c parallel.c:76
+ jmp short 0780eh ; eb ef ; 0xf781d parallel.c:77
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf781f parallel.c:79
+ jne short 0783bh ; 75 16 ; 0xf7823
+ lea dx, [si+002h] ; 8d 54 02 ; 0xf7825 parallel.c:80
+ in AL, DX ; ec ; 0xf7828
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7829
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf782b
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf782e parallel.c:81
+ and AL, strict byte 0fbh ; 24 fb ; 0xf7832
+ out DX, AL ; ee ; 0xf7834
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7835 parallel.c:82
+ or AL, strict byte 004h ; 0c 04 ; 0xf7838
+ out DX, AL ; ee ; 0xf783a
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf783b parallel.c:84
+ in AL, DX ; ec ; 0xf783e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf783f
+ xor AL, strict byte 048h ; 34 48 ; 0xf7841 parallel.c:85
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf7843
+ test cx, cx ; 85 c9 ; 0xf7846 parallel.c:86
+ jne short 0784eh ; 75 04 ; 0xf7848
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf784a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf784e parallel.c:87
+ jmp short 07858h ; eb 04 ; 0xf7852 parallel.c:88
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf7854 parallel.c:89
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7858 parallel.c:91
+ pop di ; 5f ; 0xf785b
+ pop si ; 5e ; 0xf785c
+ pop bp ; 5d ; 0xf785d
+ retn ; c3 ; 0xf785e
+ ; disGetNextSymbol 0xf785f LB 0x27e6 -> off=0x0 cb=00000000000000b8 uValue=00000000000f625f '_wait_'
+_wait_: ; 0xf785f LB 0xb8
+ push bp ; 55 ; 0xf785f logo.c:171
+ mov bp, sp ; 89 e5 ; 0xf7860
+ push bx ; 53 ; 0xf7862
+ push cx ; 51 ; 0xf7863
+ push si ; 56 ; 0xf7864
+ push di ; 57 ; 0xf7865
+ sub sp, strict byte 0000ah ; 83 ec 0a ; 0xf7866
+ mov di, ax ; 89 c7 ; 0xf7869
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf786b
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf786e logo.c:176
+ pushfw ; 9c ; 0xf7872 logo.c:182
+ pop ax ; 58 ; 0xf7873
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7874
+ sti ; fb ; 0xf7877 logo.c:183
+ xor dx, dx ; 31 d2 ; 0xf7878 logo.c:189
+ mov bx, 0046ch ; bb 6c 04 ; 0xf787a logo.c:58
+ mov es, dx ; 8e c2 ; 0xf787d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf787f
+ mov cx, word [es:bx+002h] ; 26 8b 4f 02 ; 0xf7882
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf7886 logo.c:59
+ hlt ; f4 ; 0xf7889 logo.c:193
+ mov bx, 0046ch ; bb 6c 04 ; 0xf788a logo.c:58
+ xor ax, ax ; 31 c0 ; 0xf788d
+ mov es, ax ; 8e c0 ; 0xf788f
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf7891
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf7894
+ mov bx, si ; 89 f3 ; 0xf7898 logo.c:59
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf789a
+ cmp ax, cx ; 39 c8 ; 0xf789d logo.c:195
+ jnbe short 078a8h ; 77 07 ; 0xf789f
+ jne short 078afh ; 75 0c ; 0xf78a1
+ cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf78a3
+ jbe short 078afh ; 76 07 ; 0xf78a6
+ sub si, word [bp-00eh] ; 2b 76 f2 ; 0xf78a8 logo.c:197
+ sbb ax, cx ; 19 c8 ; 0xf78ab
+ jmp short 078bah ; eb 0b ; 0xf78ad logo.c:200
+ cmp ax, cx ; 39 c8 ; 0xf78af
+ jc short 078bah ; 72 07 ; 0xf78b1
+ jne short 078beh ; 75 09 ; 0xf78b3
+ cmp si, word [bp-00eh] ; 3b 76 f2 ; 0xf78b5
+ jnc short 078beh ; 73 04 ; 0xf78b8
+ sub di, si ; 29 f7 ; 0xf78ba logo.c:201
+ sbb dx, ax ; 19 c2 ; 0xf78bc
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf78be logo.c:202
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf78c1
+ mov ax, 00100h ; b8 00 01 ; 0xf78c4 logo.c:204
+ int 016h ; cd 16 ; 0xf78c7
+ je near 078d2h ; 0f 84 05 00 ; 0xf78c9
+ mov AL, strict byte 001h ; b0 01 ; 0xf78cd
+ jmp near 078d4h ; e9 02 00 ; 0xf78cf
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf78d2
+ test al, al ; 84 c0 ; 0xf78d4
+ je short 078fch ; 74 24 ; 0xf78d6
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf78d8 logo.c:206
+ int 016h ; cd 16 ; 0xf78da
+ xchg ah, al ; 86 c4 ; 0xf78dc
+ mov bl, al ; 88 c3 ; 0xf78de
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf78e0
+ movzx ax, bl ; 0f b6 c3 ; 0xf78e3 logo.c:207
+ push ax ; 50 ; 0xf78e6
+ push 009a8h ; 68 a8 09 ; 0xf78e7
+ push strict byte 00004h ; 6a 04 ; 0xf78ea
+ call 01a14h ; e8 25 a1 ; 0xf78ec
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf78ef
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf78f2 logo.c:208
+ je short 078fch ; 74 04 ; 0xf78f6
+ mov al, bl ; 88 d8 ; 0xf78f8 logo.c:209
+ jmp short 0790eh ; eb 12 ; 0xf78fa
+ test dx, dx ; 85 d2 ; 0xf78fc logo.c:211
+ jnle short 07889h ; 7f 89 ; 0xf78fe
+ jne short 07906h ; 75 04 ; 0xf7900
+ test di, di ; 85 ff ; 0xf7902
+ jnbe short 07889h ; 77 83 ; 0xf7904
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf7906 logo.c:212
+ push ax ; 50 ; 0xf7909
+ popfw ; 9d ; 0xf790a
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf790b logo.c:213
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf790e logo.c:214
+ pop di ; 5f ; 0xf7911
+ pop si ; 5e ; 0xf7912
+ pop cx ; 59 ; 0xf7913
+ pop bx ; 5b ; 0xf7914
+ pop bp ; 5d ; 0xf7915
+ retn ; c3 ; 0xf7916
+ ; disGetNextSymbol 0xf7917 LB 0x272e -> off=0x0 cb=0000000000000016 uValue=00000000000f6317 'read_logo_byte'
+read_logo_byte: ; 0xf7917 LB 0x16
+ push bp ; 55 ; 0xf7917 logo.c:216
+ mov bp, sp ; 89 e5 ; 0xf7918
+ push dx ; 52 ; 0xf791a
+ xor ah, ah ; 30 e4 ; 0xf791b logo.c:218
+ or ah, 001h ; 80 cc 01 ; 0xf791d
+ mov dx, 003b8h ; ba b8 03 ; 0xf7920
+ out DX, ax ; ef ; 0xf7923
+ in AL, DX ; ec ; 0xf7924 logo.c:219
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7925
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf7927 logo.c:220
+ pop dx ; 5a ; 0xf792a
+ pop bp ; 5d ; 0xf792b
+ retn ; c3 ; 0xf792c
+ ; disGetNextSymbol 0xf792d LB 0x2718 -> off=0x0 cb=0000000000000014 uValue=00000000000f632d 'read_logo_word'
+read_logo_word: ; 0xf792d LB 0x14
+ push bp ; 55 ; 0xf792d logo.c:222
+ mov bp, sp ; 89 e5 ; 0xf792e
+ push dx ; 52 ; 0xf7930
+ xor ah, ah ; 30 e4 ; 0xf7931 logo.c:224
+ or ah, 001h ; 80 cc 01 ; 0xf7933
+ mov dx, 003b8h ; ba b8 03 ; 0xf7936
+ out DX, ax ; ef ; 0xf7939
+ in ax, DX ; ed ; 0xf793a logo.c:225
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf793b logo.c:226
+ pop dx ; 5a ; 0xf793e
+ pop bp ; 5d ; 0xf793f
+ retn ; c3 ; 0xf7940
+ ; disGetNextSymbol 0xf7941 LB 0x2704 -> off=0x0 cb=0000000000000133 uValue=00000000000f6341 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf7941 LB 0x133
+ push bp ; 55 ; 0xf7941 logo.c:245
+ mov bp, sp ; 89 e5 ; 0xf7942
+ push bx ; 53 ; 0xf7944
+ push cx ; 51 ; 0xf7945
+ push dx ; 52 ; 0xf7946
+ push si ; 56 ; 0xf7947
+ push di ; 57 ; 0xf7948
+ push ax ; 50 ; 0xf7949
+ push ax ; 50 ; 0xf794a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf794b logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf794e
+ mov es, ax ; 8e c0 ; 0xf7951
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf7953
+ mov di, si ; 89 f7 ; 0xf7956 logo.c:49
+ xor ch, ch ; 30 ed ; 0xf7958 logo.c:250
+ xor cl, cl ; 30 c9 ; 0xf795a logo.c:251
+ mov byte [bp-00eh], ch ; 88 6e f2 ; 0xf795c logo.c:252
+ mov bx, 00304h ; bb 04 03 ; 0xf795f logo.c:38
+ mov es, si ; 8e c6 ; 0xf7962
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7964
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7967 logo.c:39
+ xor bl, bl ; 30 db ; 0xf796a logo.c:257
+ cmp bl, byte [bp-00ch] ; 3a 5e f4 ; 0xf796c
+ jnc near 07a46h ; 0f 83 d3 00 ; 0xf796f
+ movzx si, bl ; 0f b6 f3 ; 0xf7973 logo.c:259
+ add si, 00305h ; 81 c6 05 03 ; 0xf7976
+ mov es, di ; 8e c7 ; 0xf797a logo.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf797c
+ mov bh, al ; 88 c7 ; 0xf797f logo.c:39
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf7981 logo.c:262
+ jc short 079a9h ; 72 24 ; 0xf7983
+ test cl, cl ; 84 c9 ; 0xf7985 logo.c:264
+ jne short 07996h ; 75 0d ; 0xf7987
+ push 009b9h ; 68 b9 09 ; 0xf7989 logo.c:266
+ push strict byte 00002h ; 6a 02 ; 0xf798c
+ call 01a14h ; e8 83 a0 ; 0xf798e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7991
+ mov CL, strict byte 001h ; b1 01 ; 0xf7994 logo.c:267
+ movzx ax, bl ; 0f b6 c3 ; 0xf7996 logo.c:270
+ inc ax ; 40 ; 0xf7999
+ push ax ; 50 ; 0xf799a
+ push 009ceh ; 68 ce 09 ; 0xf799b
+ push strict byte 00002h ; 6a 02 ; 0xf799e
+ call 01a14h ; e8 71 a0 ; 0xf79a0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf79a3
+ jmp near 07a41h ; e9 98 00 ; 0xf79a6 logo.c:273
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf79a9 logo.c:276
+ jc short 079c4h ; 72 17 ; 0xf79ab
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf79ad logo.c:278
+ jne short 079c2h ; 75 0f ; 0xf79b1
+ push 009e1h ; 68 e1 09 ; 0xf79b3 logo.c:280
+ push strict byte 00002h ; 6a 02 ; 0xf79b6
+ call 01a14h ; e8 59 a0 ; 0xf79b8
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf79bb
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf79be logo.c:281
+ jmp short 07996h ; eb d2 ; 0xf79c2 logo.c:282
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf79c4 logo.c:291
+ jnc short 079dbh ; 73 13 ; 0xf79c6
+ test ch, ch ; 84 ed ; 0xf79c8
+ jne short 079dbh ; 75 0f ; 0xf79ca
+ push 009f6h ; 68 f6 09 ; 0xf79cc logo.c:293
+ push strict byte 00002h ; 6a 02 ; 0xf79cf
+ call 01a14h ; e8 40 a0 ; 0xf79d1
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf79d4
+ mov CH, strict byte 001h ; b5 01 ; 0xf79d7 logo.c:294
+ jmp short 079f1h ; eb 16 ; 0xf79d9 logo.c:296
+ cmp bh, 004h ; 80 ff 04 ; 0xf79db
+ jc short 079f1h ; 72 11 ; 0xf79de
+ test cl, cl ; 84 c9 ; 0xf79e0
+ jne short 079f1h ; 75 0d ; 0xf79e2
+ push 00a08h ; 68 08 0a ; 0xf79e4 logo.c:298
+ push strict byte 00002h ; 6a 02 ; 0xf79e7
+ call 01a14h ; e8 28 a0 ; 0xf79e9
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf79ec
+ mov CL, strict byte 001h ; b1 01 ; 0xf79ef logo.c:299
+ movzx ax, bl ; 0f b6 c3 ; 0xf79f1 logo.c:302
+ inc ax ; 40 ; 0xf79f4
+ push ax ; 50 ; 0xf79f5
+ push 00a1ch ; 68 1c 0a ; 0xf79f6
+ push strict byte 00002h ; 6a 02 ; 0xf79f9
+ call 01a14h ; e8 16 a0 ; 0xf79fb
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf79fe
+ cmp bh, 004h ; 80 ff 04 ; 0xf7a01 logo.c:309
+ jc short 07a09h ; 72 03 ; 0xf7a04
+ sub bh, 004h ; 80 ef 04 ; 0xf7a06 logo.c:310
+ movzx ax, bh ; 0f b6 c7 ; 0xf7a09 logo.c:312
+ cwd ; 99 ; 0xf7a0c
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf7a0d
+ sar ax, 1 ; d1 f8 ; 0xf7a0f
+ test ax, ax ; 85 c0 ; 0xf7a11
+ je short 07a1ah ; 74 05 ; 0xf7a13
+ push 00a26h ; 68 26 0a ; 0xf7a15 logo.c:313
+ jmp short 07a1dh ; eb 03 ; 0xf7a18 logo.c:314
+ push 00a31h ; 68 31 0a ; 0xf7a1a logo.c:315
+ push strict byte 00002h ; 6a 02 ; 0xf7a1d
+ call 01a14h ; e8 f2 9f ; 0xf7a1f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a22
+ movzx ax, bh ; 0f b6 c7 ; 0xf7a25 logo.c:317
+ cwd ; 99 ; 0xf7a28
+ mov si, strict word 00002h ; be 02 00 ; 0xf7a29
+ idiv si ; f7 fe ; 0xf7a2c
+ test dx, dx ; 85 d2 ; 0xf7a2e
+ je short 07a37h ; 74 05 ; 0xf7a30
+ push 00a3ah ; 68 3a 0a ; 0xf7a32 logo.c:318
+ jmp short 07a3ah ; eb 03 ; 0xf7a35 logo.c:319
+ push 00a40h ; 68 40 0a ; 0xf7a37 logo.c:320
+ push si ; 56 ; 0xf7a3a
+ call 01a14h ; e8 d6 9f ; 0xf7a3b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a3e
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf7a41 logo.c:322
+ jmp near 0796ch ; e9 26 ff ; 0xf7a43
+ test ch, ch ; 84 ed ; 0xf7a46 logo.c:324
+ jne short 07a5fh ; 75 15 ; 0xf7a48
+ test cl, cl ; 84 c9 ; 0xf7a4a
+ jne short 07a5fh ; 75 11 ; 0xf7a4c
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7a4e
+ jne short 07a5fh ; 75 0b ; 0xf7a52
+ push 00a47h ; 68 47 0a ; 0xf7a54 logo.c:327
+ push strict byte 00002h ; 6a 02 ; 0xf7a57
+ call 01a14h ; e8 b8 9f ; 0xf7a59
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a5c
+ push 00a5bh ; 68 5b 0a ; 0xf7a5f logo.c:329
+ push strict byte 00002h ; 6a 02 ; 0xf7a62
+ call 01a14h ; e8 ad 9f ; 0xf7a64
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7a67
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7a6a logo.c:330
+ pop di ; 5f ; 0xf7a6d
+ pop si ; 5e ; 0xf7a6e
+ pop dx ; 5a ; 0xf7a6f
+ pop cx ; 59 ; 0xf7a70
+ pop bx ; 5b ; 0xf7a71
+ pop bp ; 5d ; 0xf7a72
+ retn ; c3 ; 0xf7a73
+ ; disGetNextSymbol 0xf7a74 LB 0x25d1 -> off=0x0 cb=0000000000000024 uValue=00000000000f6474 'get_boot_drive'
+get_boot_drive: ; 0xf7a74 LB 0x24
+ push bx ; 53 ; 0xf7a74 logo.c:332
+ push dx ; 52 ; 0xf7a75
+ push bp ; 55 ; 0xf7a76
+ mov bp, sp ; 89 e5 ; 0xf7a77
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7a79 logo.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7a7c
+ mov es, dx ; 8e c2 ; 0xf7a7f
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7a81
+ mov bx, 00304h ; bb 04 03 ; 0xf7a84 logo.c:38
+ mov es, dx ; 8e c2 ; 0xf7a87
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7a89
+ sub AL, strict byte 002h ; 2c 02 ; 0xf7a8c logo.c:340
+ cmp al, dl ; 38 d0 ; 0xf7a8e logo.c:342
+ jc short 07a94h ; 72 02 ; 0xf7a90
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf7a92 logo.c:343
+ pop bp ; 5d ; 0xf7a94 logo.c:347
+ pop dx ; 5a ; 0xf7a95
+ pop bx ; 5b ; 0xf7a96
+ retn ; c3 ; 0xf7a97
+ ; disGetNextSymbol 0xf7a98 LB 0x25ad -> off=0x0 cb=0000000000000254 uValue=00000000000f6498 'show_logo'
+show_logo: ; 0xf7a98 LB 0x254
+ push bp ; 55 ; 0xf7a98 logo.c:349
+ mov bp, sp ; 89 e5 ; 0xf7a99
+ push bx ; 53 ; 0xf7a9b
+ push cx ; 51 ; 0xf7a9c
+ push dx ; 52 ; 0xf7a9d
+ push si ; 56 ; 0xf7a9e
+ push di ; 57 ; 0xf7a9f
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf7aa0
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7aa3 logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7aa6
+ mov es, ax ; 8e c0 ; 0xf7aa9
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf7aab
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf7aae logo.c:352
+ xor dx, dx ; 31 d2 ; 0xf7ab2 logo.c:356
+ mov AL, strict byte 034h ; b0 34 ; 0xf7ab4 logo.c:363
+ out strict byte 043h, AL ; e6 43 ; 0xf7ab6
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7ab8
+ out strict byte 040h, AL ; e6 40 ; 0xf7aba
+ mov AL, strict byte 048h ; b0 48 ; 0xf7abc
+ out strict byte 040h, AL ; e6 40 ; 0xf7abe
+ movzx ax, dl ; 0f b6 c2 ; 0xf7ac0 logo.c:366
+ call 0792dh ; e8 67 fe ; 0xf7ac3
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf7ac6 logo.c:367
+ jne near 07bcbh ; 0f 85 fe 00 ; 0xf7ac9
+ push SS ; 16 ; 0xf7acd logo.c:371
+ pop ES ; 07 ; 0xf7ace
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf7acf
+ mov ax, 04f03h ; b8 03 4f ; 0xf7ad2
+ int 010h ; cd 10 ; 0xf7ad5
+ mov word [es:di], bx ; 26 89 1d ; 0xf7ad7
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7ada
+ jne near 07bcbh ; 0f 85 ea 00 ; 0xf7add
+ mov al, dl ; 88 d0 ; 0xf7ae1 logo.c:375
+ add AL, strict byte 004h ; 04 04 ; 0xf7ae3
+ xor ah, ah ; 30 e4 ; 0xf7ae5
+ call 07917h ; e8 2d fe ; 0xf7ae7
+ mov bl, al ; 88 c3 ; 0xf7aea
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf7aec
+ mov al, dl ; 88 d0 ; 0xf7aef logo.c:376
+ add AL, strict byte 005h ; 04 05 ; 0xf7af1
+ xor ah, ah ; 30 e4 ; 0xf7af3
+ call 07917h ; e8 1f fe ; 0xf7af5
+ mov dh, al ; 88 c6 ; 0xf7af8
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf7afa
+ mov al, dl ; 88 d0 ; 0xf7afd logo.c:377
+ add AL, strict byte 002h ; 04 02 ; 0xf7aff
+ xor ah, ah ; 30 e4 ; 0xf7b01
+ call 0792dh ; e8 27 fe ; 0xf7b03
+ mov cx, ax ; 89 c1 ; 0xf7b06
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf7b08
+ mov al, dl ; 88 d0 ; 0xf7b0b logo.c:378
+ add AL, strict byte 006h ; 04 06 ; 0xf7b0d
+ xor ah, ah ; 30 e4 ; 0xf7b0f
+ call 07917h ; e8 03 fe ; 0xf7b11
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf7b14
+ test bl, bl ; 84 db ; 0xf7b17 logo.c:381
+ jne short 07b25h ; 75 0a ; 0xf7b19
+ test dh, dh ; 84 f6 ; 0xf7b1b
+ jne short 07b25h ; 75 06 ; 0xf7b1d
+ test cx, cx ; 85 c9 ; 0xf7b1f
+ je near 07bcbh ; 0f 84 a6 00 ; 0xf7b21
+ mov BH, strict byte 020h ; b7 20 ; 0xf7b25 logo.c:385
+ mov dx, 001e0h ; ba e0 01 ; 0xf7b27
+ mov cx, 00280h ; b9 80 02 ; 0xf7b2a
+ mov ax, 05642h ; b8 42 56 ; 0xf7b2d
+ mov BL, strict byte 000h ; b3 00 ; 0xf7b30
+ int 010h ; cd 10 ; 0xf7b32
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7b34 logo.c:387
+ je short 07b41h ; 74 08 ; 0xf7b37
+ mov bx, 00142h ; bb 42 01 ; 0xf7b39 logo.c:388
+ mov ax, 04f02h ; b8 02 4f ; 0xf7b3c
+ int 010h ; cd 10 ; 0xf7b3f
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7b41 logo.c:390
+ je short 07b6ch ; 74 25 ; 0xf7b45
+ xor bx, bx ; 31 db ; 0xf7b47 logo.c:392
+ jmp short 07b51h ; eb 06 ; 0xf7b49
+ inc bx ; 43 ; 0xf7b4b logo.c:394
+ cmp bx, strict byte 00010h ; 83 fb 10 ; 0xf7b4c
+ jnbe short 07b73h ; 77 22 ; 0xf7b4f
+ mov ax, bx ; 89 d8 ; 0xf7b51
+ or ah, 002h ; 80 cc 02 ; 0xf7b53
+ mov dx, 003b8h ; ba b8 03 ; 0xf7b56
+ out DX, ax ; ef ; 0xf7b59
+ xor dx, dx ; 31 d2 ; 0xf7b5a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7b5c
+ call 0785fh ; e8 fd fc ; 0xf7b5f
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7b62
+ jne short 07b4bh ; 75 e5 ; 0xf7b64
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7b66
+ jmp short 07b73h ; eb 07 ; 0xf7b6a
+ mov ax, 00210h ; b8 10 02 ; 0xf7b6c logo.c:404
+ mov dx, 003b8h ; ba b8 03 ; 0xf7b6f
+ out DX, ax ; ef ; 0xf7b72
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7b73 logo.c:407
+ jne short 07b8dh ; 75 14 ; 0xf7b77
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7b79 logo.c:409
+ shr ax, 004h ; c1 e8 04 ; 0xf7b7c
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7b7f
+ call 0785fh ; e8 da fc ; 0xf7b82
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7b85 logo.c:410
+ jne short 07b8dh ; 75 04 ; 0xf7b87
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7b89 logo.c:411
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7b8d logo.c:415
+ je short 07bbeh ; 74 2b ; 0xf7b91
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7b93
+ jne short 07bbeh ; 75 25 ; 0xf7b97
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf7b99 logo.c:417
+ jmp short 07ba3h ; eb 05 ; 0xf7b9c
+ dec bx ; 4b ; 0xf7b9e logo.c:419
+ test bx, bx ; 85 db ; 0xf7b9f
+ jbe short 07bcbh ; 76 28 ; 0xf7ba1
+ mov ax, bx ; 89 d8 ; 0xf7ba3
+ or ah, 002h ; 80 cc 02 ; 0xf7ba5
+ mov dx, 003b8h ; ba b8 03 ; 0xf7ba8
+ out DX, ax ; ef ; 0xf7bab
+ xor dx, dx ; 31 d2 ; 0xf7bac
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7bae
+ call 0785fh ; e8 ab fc ; 0xf7bb1
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7bb4
+ jne short 07b9eh ; 75 e6 ; 0xf7bb6
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7bb8
+ jmp short 07bcbh ; eb 0d ; 0xf7bbc
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7bbe logo.c:428
+ jne short 07bcbh ; 75 07 ; 0xf7bc2
+ mov ax, 00200h ; b8 00 02 ; 0xf7bc4 logo.c:429
+ mov dx, 003b8h ; ba b8 03 ; 0xf7bc7
+ out DX, ax ; ef ; 0xf7bca
+ mov bx, 0037dh ; bb 7d 03 ; 0xf7bcb logo.c:43
+ mov es, si ; 8e c6 ; 0xf7bce
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf7bd0
+ mov AL, strict byte 003h ; b0 03 ; 0xf7bd4 logo.c:437
+ mov AH, strict byte 000h ; b4 00 ; 0xf7bd6
+ int 010h ; cd 10 ; 0xf7bd8
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf7bda logo.c:440
+ je near 07ccdh ; 0f 84 eb 00 ; 0xf7bde
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7be2 logo.c:443
+ jne short 07c1ch ; 75 34 ; 0xf7be6
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7be8
+ jne short 07c1ch ; 75 2e ; 0xf7bec
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf7bee
+ jne short 07c1ch ; 75 28 ; 0xf7bf2
+ cmp byte [bp-014h], 002h ; 80 7e ec 02 ; 0xf7bf4 logo.c:445
+ jne short 07c05h ; 75 0b ; 0xf7bf8
+ push 00a5dh ; 68 5d 0a ; 0xf7bfa logo.c:446
+ push strict byte 00002h ; 6a 02 ; 0xf7bfd
+ call 01a14h ; e8 12 9e ; 0xf7bff
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c02
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7c05 logo.c:449
+ jne short 07c1ch ; 75 11 ; 0xf7c09
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7c0b logo.c:452
+ mov ax, 000c0h ; b8 c0 00 ; 0xf7c0e
+ call 0785fh ; e8 4b fc ; 0xf7c11
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7c14 logo.c:453
+ jne short 07c1ch ; 75 04 ; 0xf7c16
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf7c18 logo.c:454
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf7c1c logo.c:459
+ je near 07ccdh ; 0f 84 a9 00 ; 0xf7c20
+ mov byte [bp-010h], 000h ; c6 46 f0 00 ; 0xf7c24 logo.c:461
+ mov ax, 00100h ; b8 00 01 ; 0xf7c28 logo.c:464
+ mov cx, 01000h ; b9 00 10 ; 0xf7c2b
+ int 010h ; cd 10 ; 0xf7c2e
+ mov ax, 00700h ; b8 00 07 ; 0xf7c30
+ mov BH, strict byte 007h ; b7 07 ; 0xf7c33
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf7c35
+ mov dx, 0184fh ; ba 4f 18 ; 0xf7c37
+ int 010h ; cd 10 ; 0xf7c3a
+ mov ax, 00200h ; b8 00 02 ; 0xf7c3c
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf7c3f
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf7c41
+ int 010h ; cd 10 ; 0xf7c43
+ push 00a7fh ; 68 7f 0a ; 0xf7c45 logo.c:467
+ push strict byte 00002h ; 6a 02 ; 0xf7c48
+ call 01a14h ; e8 c7 9d ; 0xf7c4a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c4d
+ call 07941h ; e8 ee fc ; 0xf7c50 logo.c:468
+ push 00ac3h ; 68 c3 0a ; 0xf7c53 logo.c:469
+ push strict byte 00002h ; 6a 02 ; 0xf7c56
+ call 01a14h ; e8 b9 9d ; 0xf7c58
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7c5b
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7c5e logo.c:478
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7c61
+ call 0785fh ; e8 f8 fb ; 0xf7c64
+ mov bl, al ; 88 c3 ; 0xf7c67
+ test al, al ; 84 c0 ; 0xf7c69 logo.c:479
+ je short 07c5eh ; 74 f1 ; 0xf7c6b
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7c6d logo.c:481
+ je short 07cbch ; 74 4b ; 0xf7c6f
+ cmp bl, 002h ; 80 fb 02 ; 0xf7c71 logo.c:488
+ jc short 07c95h ; 72 1f ; 0xf7c74
+ cmp bl, 009h ; 80 fb 09 ; 0xf7c76
+ jnbe short 07c95h ; 77 1a ; 0xf7c79
+ movzx ax, bl ; 0f b6 c3 ; 0xf7c7b logo.c:490
+ call 07a74h ; e8 f3 fd ; 0xf7c7e
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf7c81 logo.c:497
+ jne short 07c87h ; 75 02 ; 0xf7c83
+ jmp short 07c5eh ; eb d7 ; 0xf7c85 logo.c:498
+ mov bx, 0037ch ; bb 7c 03 ; 0xf7c87 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7c8a
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7c8c
+ mov byte [bp-010h], 002h ; c6 46 f0 02 ; 0xf7c8f logo.c:501
+ jmp short 07cbch ; eb 27 ; 0xf7c93 logo.c:502
+ cmp bl, 02eh ; 80 fb 2e ; 0xf7c95 logo.c:505
+ je short 07caah ; 74 10 ; 0xf7c98
+ cmp bl, 026h ; 80 fb 26 ; 0xf7c9a
+ je short 07cb0h ; 74 11 ; 0xf7c9d
+ cmp bl, 021h ; 80 fb 21 ; 0xf7c9f
+ jne short 07cb6h ; 75 12 ; 0xf7ca2
+ mov byte [bp-010h], 001h ; c6 46 f0 01 ; 0xf7ca4 logo.c:509
+ jmp short 07cbch ; eb 12 ; 0xf7ca8 logo.c:510
+ mov byte [bp-010h], 003h ; c6 46 f0 03 ; 0xf7caa logo.c:513
+ jmp short 07cbch ; eb 0c ; 0xf7cae logo.c:514
+ mov byte [bp-010h], 004h ; c6 46 f0 04 ; 0xf7cb0 logo.c:517
+ jmp short 07cbch ; eb 06 ; 0xf7cb4 logo.c:518
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf7cb6 logo.c:521
+ je short 07c5eh ; 74 a2 ; 0xf7cba
+ mov bx, 0037dh ; bb 7d 03 ; 0xf7cbc logo.c:43
+ mov es, si ; 8e c6 ; 0xf7cbf
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf7cc1
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7cc4
+ mov AL, strict byte 003h ; b0 03 ; 0xf7cc7 logo.c:528
+ mov AH, strict byte 000h ; b4 00 ; 0xf7cc9
+ int 010h ; cd 10 ; 0xf7ccb
+ mov AL, strict byte 034h ; b0 34 ; 0xf7ccd logo.c:533
+ out strict byte 043h, AL ; e6 43 ; 0xf7ccf
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7cd1
+ out strict byte 040h, AL ; e6 40 ; 0xf7cd3
+ out strict byte 040h, AL ; e6 40 ; 0xf7cd5
+ pushad ; 66 60 ; 0xf7cd7
+ push DS ; 1e ; 0xf7cd9
+ mov ds, ax ; 8e d8 ; 0xf7cda
+ call 0edbfh ; e8 e0 70 ; 0xf7cdc
+ pop DS ; 1f ; 0xf7cdf
+ popad ; 66 61 ; 0xf7ce0
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf7ce2 logo.c:536
+ pop di ; 5f ; 0xf7ce5
+ pop si ; 5e ; 0xf7ce6
+ pop dx ; 5a ; 0xf7ce7
+ pop cx ; 59 ; 0xf7ce8
+ pop bx ; 5b ; 0xf7ce9
+ pop bp ; 5d ; 0xf7cea
+ retn ; c3 ; 0xf7ceb
+ ; disGetNextSymbol 0xf7cec LB 0x2359 -> off=0x0 cb=0000000000000067 uValue=00000000000f66ec 'delay_boot'
+delay_boot: ; 0xf7cec LB 0x67
+ push bp ; 55 ; 0xf7cec logo.c:539
+ mov bp, sp ; 89 e5 ; 0xf7ced
+ push bx ; 53 ; 0xf7cef
+ push dx ; 52 ; 0xf7cf0
+ mov dx, ax ; 89 c2 ; 0xf7cf1
+ test ax, ax ; 85 c0 ; 0xf7cf3 logo.c:543
+ je short 07d4ch ; 74 55 ; 0xf7cf5
+ mov AL, strict byte 034h ; b0 34 ; 0xf7cf7 logo.c:547
+ out strict byte 043h, AL ; e6 43 ; 0xf7cf9
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7cfb
+ out strict byte 040h, AL ; e6 40 ; 0xf7cfd
+ mov AL, strict byte 048h ; b0 48 ; 0xf7cff
+ out strict byte 040h, AL ; e6 40 ; 0xf7d01
+ push dx ; 52 ; 0xf7d03 logo.c:549
+ push 00b0dh ; 68 0d 0b ; 0xf7d04
+ push strict byte 00002h ; 6a 02 ; 0xf7d07
+ call 01a14h ; e8 08 9d ; 0xf7d09
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7d0c
+ mov bx, dx ; 89 d3 ; 0xf7d0f logo.c:550
+ test bx, bx ; 85 db ; 0xf7d11
+ jbe short 07d2ch ; 76 17 ; 0xf7d13
+ push bx ; 53 ; 0xf7d15 logo.c:552
+ push 00b2bh ; 68 2b 0b ; 0xf7d16
+ push strict byte 00002h ; 6a 02 ; 0xf7d19
+ call 01a14h ; e8 f6 9c ; 0xf7d1b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7d1e
+ xor dx, dx ; 31 d2 ; 0xf7d21 logo.c:553
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7d23
+ call 0785fh ; e8 36 fb ; 0xf7d26
+ dec bx ; 4b ; 0xf7d29 logo.c:554
+ jmp short 07d11h ; eb e5 ; 0xf7d2a
+ push 00a5bh ; 68 5b 0a ; 0xf7d2c logo.c:555
+ push strict byte 00002h ; 6a 02 ; 0xf7d2f
+ call 01a14h ; e8 e0 9c ; 0xf7d31
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7d34
+ mov AL, strict byte 034h ; b0 34 ; 0xf7d37 logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf7d39
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf7d3b
+ out strict byte 040h, AL ; e6 40 ; 0xf7d3d
+ out strict byte 040h, AL ; e6 40 ; 0xf7d3f
+ pushad ; 66 60 ; 0xf7d41
+ push DS ; 1e ; 0xf7d43
+ mov ds, ax ; 8e d8 ; 0xf7d44
+ call 0edbfh ; e8 76 70 ; 0xf7d46
+ pop DS ; 1f ; 0xf7d49
+ popad ; 66 61 ; 0xf7d4a
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7d4c logo.c:558
+ pop dx ; 5a ; 0xf7d4f
+ pop bx ; 5b ; 0xf7d50
+ pop bp ; 5d ; 0xf7d51
+ retn ; c3 ; 0xf7d52
+ ; disGetNextSymbol 0xf7d53 LB 0x22f2 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6753 'scsi_cmd_data_in'
+scsi_cmd_data_in: ; 0xf7d53 LB 0xd5
+ push bp ; 55 ; 0xf7d53 scsi.c:99
+ mov bp, sp ; 89 e5 ; 0xf7d54
+ push si ; 56 ; 0xf7d56
+ push di ; 57 ; 0xf7d57
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7d58
+ mov si, ax ; 89 c6 ; 0xf7d5b
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7d5d
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7d60
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7d63
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7d66
+ mov dx, si ; 89 f2 ; 0xf7d69 scsi.c:107
+ in AL, DX ; ec ; 0xf7d6b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d6c
+ test AL, strict byte 001h ; a8 01 ; 0xf7d6e scsi.c:108
+ jne short 07d69h ; 75 f7 ; 0xf7d70
+ cmp byte [bp+004h], 010h ; 80 7e 04 10 ; 0xf7d72 scsi.c:110
+ jne short 07d7ch ; 75 04 ; 0xf7d76
+ xor ax, ax ; 31 c0 ; 0xf7d78
+ jmp short 07d80h ; eb 04 ; 0xf7d7a
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7d7c
+ mov di, ax ; 89 c7 ; 0xf7d80
+ mov ax, bx ; 89 d8 ; 0xf7d82
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7d84
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7d87
+ shr dx, 1 ; d1 ea ; 0xf7d8a
+ rcr ax, 1 ; d1 d8 ; 0xf7d8c
+ loop 07d8ah ; e2 fa ; 0xf7d8e
+ mov cx, ax ; 89 c1 ; 0xf7d90
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7d92
+ or cx, di ; 09 f9 ; 0xf7d96
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d98 scsi.c:111
+ mov dx, si ; 89 f2 ; 0xf7d9b
+ out DX, AL ; ee ; 0xf7d9d
+ xor al, al ; 30 c0 ; 0xf7d9e scsi.c:112
+ out DX, AL ; ee ; 0xf7da0
+ mov al, cl ; 88 c8 ; 0xf7da1 scsi.c:113
+ out DX, AL ; ee ; 0xf7da3
+ mov al, bl ; 88 d8 ; 0xf7da4 scsi.c:114
+ out DX, AL ; ee ; 0xf7da6
+ mov ax, bx ; 89 d8 ; 0xf7da7 scsi.c:115
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7da9
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7dac
+ shr dx, 1 ; d1 ea ; 0xf7daf
+ rcr ax, 1 ; d1 d8 ; 0xf7db1
+ loop 07dafh ; e2 fa ; 0xf7db3
+ mov dx, si ; 89 f2 ; 0xf7db5
+ out DX, AL ; ee ; 0xf7db7
+ xor cx, cx ; 31 c9 ; 0xf7db8 scsi.c:116
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7dba
+ cmp cx, ax ; 39 c1 ; 0xf7dbe
+ jnc short 07dd0h ; 73 0e ; 0xf7dc0
+ les di, [bp-00ah] ; c4 7e f6 ; 0xf7dc2 scsi.c:117
+ add di, cx ; 01 cf ; 0xf7dc5
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7dc7
+ mov dx, si ; 89 f2 ; 0xf7dca
+ out DX, AL ; ee ; 0xf7dcc
+ inc cx ; 41 ; 0xf7dcd
+ jmp short 07dbah ; eb ea ; 0xf7dce
+ mov dx, si ; 89 f2 ; 0xf7dd0 scsi.c:121
+ in AL, DX ; ec ; 0xf7dd2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7dd3
+ test AL, strict byte 001h ; a8 01 ; 0xf7dd5 scsi.c:122
+ jne short 07dd0h ; 75 f7 ; 0xf7dd7
+ test AL, strict byte 002h ; a8 02 ; 0xf7dd9 scsi.c:125
+ je short 07debh ; 74 0e ; 0xf7ddb
+ lea dx, [si+003h] ; 8d 54 03 ; 0xf7ddd scsi.c:126
+ xor al, al ; 30 c0 ; 0xf7de0
+ out DX, AL ; ee ; 0xf7de2
+ in AL, DX ; ec ; 0xf7de3 scsi.c:128
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7de4
+ mov di, strict word 00004h ; bf 04 00 ; 0xf7de6 scsi.c:130
+ jmp short 07e1dh ; eb 32 ; 0xf7de9
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf7deb scsi.c:136
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7dee
+ jne short 07dfah ; 75 06 ; 0xf7df2
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7df4
+ jbe short 07e14h ; 76 1a ; 0xf7df8
+ mov cx, 08000h ; b9 00 80 ; 0xf7dfa scsi.c:138
+ les di, [bp+006h] ; c4 7e 06 ; 0xf7dfd
+ rep insb ; f3 6c ; 0xf7e00
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7e02 scsi.c:139
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7e06
+ mov ax, es ; 8c c0 ; 0xf7e0a
+ add ax, 00800h ; 05 00 08 ; 0xf7e0c
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7e0f
+ jmp short 07debh ; eb d7 ; 0xf7e12 scsi.c:141
+ mov cx, bx ; 89 d9 ; 0xf7e14 scsi.c:144
+ les di, [bp+006h] ; c4 7e 06 ; 0xf7e16
+ rep insb ; f3 6c ; 0xf7e19
+ xor di, di ; 31 ff ; 0xf7e1b scsi.c:146
+ mov ax, di ; 89 f8 ; 0xf7e1d scsi.c:147
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7e1f
+ pop di ; 5f ; 0xf7e22
+ pop si ; 5e ; 0xf7e23
+ pop bp ; 5d ; 0xf7e24
+ retn 0000ah ; c2 0a 00 ; 0xf7e25
+ ; disGetNextSymbol 0xf7e28 LB 0x221d -> off=0x0 cb=00000000000000d5 uValue=00000000000f6828 'scsi_cmd_data_out'
+scsi_cmd_data_out: ; 0xf7e28 LB 0xd5
+ push bp ; 55 ; 0xf7e28 scsi.c:149
+ mov bp, sp ; 89 e5 ; 0xf7e29
+ push si ; 56 ; 0xf7e2b
+ push di ; 57 ; 0xf7e2c
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf7e2d
+ mov di, ax ; 89 c7 ; 0xf7e30
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7e32
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7e35
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7e38
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7e3b
+ mov dx, di ; 89 fa ; 0xf7e3e scsi.c:157
+ in AL, DX ; ec ; 0xf7e40
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7e41
+ test AL, strict byte 001h ; a8 01 ; 0xf7e43 scsi.c:158
+ jne short 07e3eh ; 75 f7 ; 0xf7e45
+ cmp byte [bp+004h], 010h ; 80 7e 04 10 ; 0xf7e47 scsi.c:161
+ jne short 07e51h ; 75 04 ; 0xf7e4b
+ xor ax, ax ; 31 c0 ; 0xf7e4d
+ jmp short 07e55h ; eb 04 ; 0xf7e4f
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7e51
+ mov si, ax ; 89 c6 ; 0xf7e55
+ mov ax, bx ; 89 d8 ; 0xf7e57
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7e59
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7e5c
+ shr dx, 1 ; d1 ea ; 0xf7e5f
+ rcr ax, 1 ; d1 d8 ; 0xf7e61
+ loop 07e5fh ; e2 fa ; 0xf7e63
+ mov cx, ax ; 89 c1 ; 0xf7e65
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7e67
+ or cx, si ; 09 f1 ; 0xf7e6b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7e6d scsi.c:162
+ mov dx, di ; 89 fa ; 0xf7e70
+ out DX, AL ; ee ; 0xf7e72
+ mov AL, strict byte 001h ; b0 01 ; 0xf7e73 scsi.c:163
+ out DX, AL ; ee ; 0xf7e75
+ mov al, cl ; 88 c8 ; 0xf7e76 scsi.c:164
+ out DX, AL ; ee ; 0xf7e78
+ mov al, bl ; 88 d8 ; 0xf7e79 scsi.c:165
+ out DX, AL ; ee ; 0xf7e7b
+ mov ax, bx ; 89 d8 ; 0xf7e7c scsi.c:166
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7e7e
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7e81
+ shr dx, 1 ; d1 ea ; 0xf7e84
+ rcr ax, 1 ; d1 d8 ; 0xf7e86
+ loop 07e84h ; e2 fa ; 0xf7e88
+ mov dx, di ; 89 fa ; 0xf7e8a
+ out DX, AL ; ee ; 0xf7e8c
+ xor cx, cx ; 31 c9 ; 0xf7e8d scsi.c:167
+ movzx ax, byte [bp+004h] ; 0f b6 46 04 ; 0xf7e8f
+ cmp cx, ax ; 39 c1 ; 0xf7e93
+ jnc short 07ea5h ; 73 0e ; 0xf7e95
+ les si, [bp-00ah] ; c4 76 f6 ; 0xf7e97 scsi.c:168
+ add si, cx ; 01 ce ; 0xf7e9a
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7e9c
+ mov dx, di ; 89 fa ; 0xf7e9f
+ out DX, AL ; ee ; 0xf7ea1
+ inc cx ; 41 ; 0xf7ea2
+ jmp short 07e8fh ; eb ea ; 0xf7ea3
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7ea5 scsi.c:173
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7ea8
+ jne short 07eb4h ; 75 06 ; 0xf7eac
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7eae
+ jbe short 07ecfh ; 76 1b ; 0xf7eb2
+ mov cx, 08000h ; b9 00 80 ; 0xf7eb4 scsi.c:175
+ les si, [bp+006h] ; c4 76 06 ; 0xf7eb7
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7eba
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7ebd scsi.c:176
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7ec1
+ mov ax, es ; 8c c0 ; 0xf7ec5
+ add ax, 00800h ; 05 00 08 ; 0xf7ec7
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7eca
+ jmp short 07ea5h ; eb d6 ; 0xf7ecd scsi.c:178
+ mov cx, bx ; 89 d9 ; 0xf7ecf scsi.c:181
+ les si, [bp+006h] ; c4 76 06 ; 0xf7ed1
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7ed4
+ mov dx, di ; 89 fa ; 0xf7ed7 scsi.c:185
+ in AL, DX ; ec ; 0xf7ed9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7eda
+ test AL, strict byte 001h ; a8 01 ; 0xf7edc scsi.c:186
+ jne short 07ed7h ; 75 f7 ; 0xf7ede
+ test AL, strict byte 002h ; a8 02 ; 0xf7ee0 scsi.c:189
+ je short 07ef2h ; 74 0e ; 0xf7ee2
+ lea dx, [di+003h] ; 8d 55 03 ; 0xf7ee4 scsi.c:190
+ xor al, al ; 30 c0 ; 0xf7ee7
+ out DX, AL ; ee ; 0xf7ee9
+ in AL, DX ; ec ; 0xf7eea scsi.c:192
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7eeb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7eed scsi.c:194
+ jmp short 07ef4h ; eb 02 ; 0xf7ef0
+ xor ax, ax ; 31 c0 ; 0xf7ef2 scsi.c:197
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ef4 scsi.c:198
+ pop di ; 5f ; 0xf7ef7
+ pop si ; 5e ; 0xf7ef8
+ pop bp ; 5d ; 0xf7ef9
+ retn 0000ah ; c2 0a 00 ; 0xf7efa
+ ; disGetNextSymbol 0xf7efd LB 0x2148 -> off=0x0 cb=00000000000000db uValue=00000000000f68fd 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7efd LB 0xdb
+ push bp ; 55 ; 0xf7efd scsi.c:207
+ mov bp, sp ; 89 e5 ; 0xf7efe
+ push si ; 56 ; 0xf7f00
+ push di ; 57 ; 0xf7f01
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7f02
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7f05
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7f08 scsi.c:216
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7f0b
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7f0f
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7f11
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7f14 scsi.c:217
+ jbe short 07f2bh ; 76 13 ; 0xf7f16
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7f18 scsi.c:218
+ push ax ; 50 ; 0xf7f1c
+ push 00b30h ; 68 30 0b ; 0xf7f1d
+ push 00b42h ; 68 42 0b ; 0xf7f20
+ push strict byte 00007h ; 6a 07 ; 0xf7f23
+ call 01a14h ; e8 ec 9a ; 0xf7f25
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7f28
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7f2b scsi.c:220
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7f2e
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7f32 scsi.c:223
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7f37 scsi.c:224
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7f3b
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7f3f
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7f43
+ xchg ah, al ; 86 c4 ; 0xf7f46
+ xchg bh, bl ; 86 df ; 0xf7f48
+ xchg ch, cl ; 86 cd ; 0xf7f4a
+ xchg dh, dl ; 86 d6 ; 0xf7f4c
+ xchg dx, ax ; 92 ; 0xf7f4e
+ xchg bx, cx ; 87 cb ; 0xf7f4f
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7f51
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7f54
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7f57
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7f5a
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7f5d scsi.c:225
+ mov ax, di ; 89 f8 ; 0xf7f61 scsi.c:226
+ xor dx, dx ; 31 d2 ; 0xf7f63
+ xchg ah, al ; 86 c4 ; 0xf7f65
+ xchg dh, dl ; 86 d6 ; 0xf7f67
+ xchg dx, ax ; 92 ; 0xf7f69
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7f6a
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7f6d
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7f70 scsi.c:227
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7f74 scsi.c:230
+ sal ax, 002h ; c1 e0 02 ; 0xf7f78
+ mov bx, si ; 89 f3 ; 0xf7f7b
+ add bx, ax ; 01 c3 ; 0xf7f7d
+ mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7f7f
+ mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf7f84 scsi.c:231
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7f89 scsi.c:236
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7f8c
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7f91
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7f94
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7f97
+ loop 07f94h ; e2 f8 ; 0xf7f9a
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf7f9c
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf7fa0
+ push strict byte 00010h ; 6a 10 ; 0xf7fa5
+ xor dh, dh ; 30 f6 ; 0xf7fa7
+ mov cx, ss ; 8c d1 ; 0xf7fa9
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7fab
+ call 07d53h ; e8 a2 fd ; 0xf7fae
+ mov ah, al ; 88 c4 ; 0xf7fb1
+ test al, al ; 84 c0 ; 0xf7fb3 scsi.c:239
+ jne short 07fcch ; 75 15 ; 0xf7fb5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7fb7 scsi.c:241
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7fba
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7fbe scsi.c:242
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7fc1
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7fc5
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7fc8
+ movzx ax, ah ; 0f b6 c4 ; 0xf7fcc scsi.c:246
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7fcf scsi.c:247
+ pop di ; 5f ; 0xf7fd2
+ pop si ; 5e ; 0xf7fd3
+ pop bp ; 5d ; 0xf7fd4
+ retn 00004h ; c2 04 00 ; 0xf7fd5
+ ; disGetNextSymbol 0xf7fd8 LB 0x206d -> off=0x0 cb=00000000000000db uValue=00000000000f69d8 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf7fd8 LB 0xdb
+ push bp ; 55 ; 0xf7fd8 scsi.c:256
+ mov bp, sp ; 89 e5 ; 0xf7fd9
+ push si ; 56 ; 0xf7fdb
+ push di ; 57 ; 0xf7fdc
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7fdd
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7fe0
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7fe3 scsi.c:265
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7fe6
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7fea
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7fec
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7fef scsi.c:266
+ jbe short 08006h ; 76 13 ; 0xf7ff1
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf7ff3 scsi.c:267
+ push ax ; 50 ; 0xf7ff7
+ push 00b61h ; 68 61 0b ; 0xf7ff8
+ push 00b42h ; 68 42 0b ; 0xf7ffb
+ push strict byte 00007h ; 6a 07 ; 0xf7ffe
+ call 01a14h ; e8 11 9a ; 0xf8000
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8003
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8006 scsi.c:269
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf8009
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf800d scsi.c:272
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf8012 scsi.c:273
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf8016
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf801a
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf801e
+ xchg ah, al ; 86 c4 ; 0xf8021
+ xchg bh, bl ; 86 df ; 0xf8023
+ xchg ch, cl ; 86 cd ; 0xf8025
+ xchg dh, dl ; 86 d6 ; 0xf8027
+ xchg dx, ax ; 92 ; 0xf8029
+ xchg bx, cx ; 87 cb ; 0xf802a
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf802c
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf802f
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf8032
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf8035
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf8038 scsi.c:274
+ mov ax, di ; 89 f8 ; 0xf803c scsi.c:275
+ xor dx, dx ; 31 d2 ; 0xf803e
+ xchg ah, al ; 86 c4 ; 0xf8040
+ xchg dh, dl ; 86 d6 ; 0xf8042
+ xchg dx, ax ; 92 ; 0xf8044
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8045
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf8048
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf804b scsi.c:276
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf804f scsi.c:278
+ sal ax, 002h ; c1 e0 02 ; 0xf8053
+ mov bx, si ; 89 f3 ; 0xf8056
+ add bx, ax ; 01 c3 ; 0xf8058
+ mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf805a
+ mov dl, byte [es:bx+0021eh] ; 26 8a 97 1e 02 ; 0xf805f scsi.c:279
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf8064 scsi.c:284
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf8067
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf806c
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf806f
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf8072
+ loop 0806fh ; e2 f8 ; 0xf8075
+ push dword [bp-00ah] ; 66 ff 76 f6 ; 0xf8077
+ db 066h, 026h, 0ffh, 074h, 008h
+ ; push dword [es:si+008h] ; 66 26 ff 74 08 ; 0xf807b
+ push strict byte 00010h ; 6a 10 ; 0xf8080
+ xor dh, dh ; 30 f6 ; 0xf8082
+ mov cx, ss ; 8c d1 ; 0xf8084
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf8086
+ call 07e28h ; e8 9c fd ; 0xf8089
+ mov ah, al ; 88 c4 ; 0xf808c
+ test al, al ; 84 c0 ; 0xf808e scsi.c:287
+ jne short 080a7h ; 75 15 ; 0xf8090
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8092 scsi.c:289
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8095
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8099 scsi.c:290
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf809c
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf80a0
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf80a3
+ movzx ax, ah ; 0f b6 c4 ; 0xf80a7 scsi.c:294
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf80aa scsi.c:295
+ pop di ; 5f ; 0xf80ad
+ pop si ; 5e ; 0xf80ae
+ pop bp ; 5d ; 0xf80af
+ retn 00004h ; c2 04 00 ; 0xf80b0
+ ; disGetNextSymbol 0xf80b3 LB 0x1f92 -> off=0x0 cb=0000000000000168 uValue=00000000000f6ab3 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf80b3 LB 0x168
+ push bp ; 55 ; 0xf80b3 scsi.c:315
+ mov bp, sp ; 89 e5 ; 0xf80b4
+ push si ; 56 ; 0xf80b6
+ push di ; 57 ; 0xf80b7
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf80b8
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf80bb
+ mov word [bp-00eh], bx ; 89 5e f2 ; 0xf80be
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf80c1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf80c4 scsi.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf80c7
+ mov es, dx ; 8e c2 ; 0xf80ca
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf80cc
+ mov si, 00122h ; be 22 01 ; 0xf80cf scsi.c:49
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf80d2
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf80d5 scsi.c:326
+ jne short 080fah ; 75 1f ; 0xf80d9
+ mov bx, 00db2h ; bb b2 0d ; 0xf80db scsi.c:327
+ mov cx, ds ; 8c d9 ; 0xf80de
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf80e0
+ call 019d3h ; e8 ed 98 ; 0xf80e3
+ push 00b74h ; 68 74 0b ; 0xf80e6
+ push 00b84h ; 68 84 0b ; 0xf80e9
+ push strict byte 00004h ; 6a 04 ; 0xf80ec
+ call 01a14h ; e8 23 99 ; 0xf80ee
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf80f1
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf80f4 scsi.c:328
+ jmp near 08210h ; e9 16 01 ; 0xf80f7
+ sub ax, strict word 00008h ; 2d 08 00 ; 0xf80fa scsi.c:332
+ sal ax, 002h ; c1 e0 02 ; 0xf80fd scsi.c:342
+ sub byte [bp-006h], 002h ; 80 6e fa 02 ; 0xf8100 scsi.c:340
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8104
+ mov di, si ; 89 f7 ; 0xf8107
+ add di, ax ; 01 c7 ; 0xf8109
+ mov bx, word [es:di+0021ch] ; 26 8b 9d 1c 02 ; 0xf810b
+ mov al, byte [es:di+0021eh] ; 26 8a 85 1e 02 ; 0xf8110 scsi.c:343
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf8115
+ mov dx, bx ; 89 da ; 0xf8118 scsi.c:347
+ in AL, DX ; ec ; 0xf811a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf811b
+ test AL, strict byte 001h ; a8 01 ; 0xf811d scsi.c:348
+ jne short 08118h ; 75 f7 ; 0xf811f
+ xor dx, bx ; 31 da ; 0xf8121 scsi.c:354
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8123
+ add ax, word [bp+004h] ; 03 46 04 ; 0xf8126
+ mov cx, word [bp+008h] ; 8b 4e 08 ; 0xf8129
+ adc cx, dx ; 11 d1 ; 0xf812c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf812e
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf8131
+ xor di, di ; 31 ff ; 0xf8135
+ add ax, dx ; 01 d0 ; 0xf8137
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8139
+ adc di, cx ; 11 cf ; 0xf813c
+ mov dx, di ; 89 fa ; 0xf813e scsi.c:356
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf8140
+ shr dx, 1 ; d1 ea ; 0xf8143
+ rcr ax, 1 ; d1 d8 ; 0xf8145
+ loop 08143h ; e2 fa ; 0xf8147
+ and ax, 000f0h ; 25 f0 00 ; 0xf8149
+ movzx cx, byte [bp-006h] ; 0f b6 4e fa ; 0xf814c
+ or cx, ax ; 09 c1 ; 0xf8150
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8152 scsi.c:357
+ mov dx, bx ; 89 da ; 0xf8155
+ out DX, AL ; ee ; 0xf8157
+ xor al, al ; 30 c0 ; 0xf8158 scsi.c:358
+ out DX, AL ; ee ; 0xf815a
+ mov al, cl ; 88 c8 ; 0xf815b scsi.c:359
+ out DX, AL ; ee ; 0xf815d
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf815e scsi.c:360
+ out DX, AL ; ee ; 0xf8161
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8162 scsi.c:361
+ mov dx, di ; 89 fa ; 0xf8165
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf8167
+ shr dx, 1 ; d1 ea ; 0xf816a
+ rcr ax, 1 ; d1 d8 ; 0xf816c
+ loop 0816ah ; e2 fa ; 0xf816e
+ mov dx, bx ; 89 da ; 0xf8170
+ out DX, AL ; ee ; 0xf8172
+ xor cx, cx ; 31 c9 ; 0xf8173 scsi.c:362
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf8175
+ cmp cx, ax ; 39 c1 ; 0xf8179
+ jnc short 0818bh ; 73 0e ; 0xf817b
+ les di, [bp-00eh] ; c4 7e f2 ; 0xf817d scsi.c:363
+ add di, cx ; 01 cf ; 0xf8180
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf8182
+ mov dx, bx ; 89 da ; 0xf8185
+ out DX, AL ; ee ; 0xf8187
+ inc cx ; 41 ; 0xf8188
+ jmp short 08175h ; eb ea ; 0xf8189
+ mov dx, bx ; 89 da ; 0xf818b scsi.c:367
+ in AL, DX ; ec ; 0xf818d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf818e
+ test AL, strict byte 001h ; a8 01 ; 0xf8190 scsi.c:368
+ jne short 0818bh ; 75 f7 ; 0xf8192
+ test AL, strict byte 002h ; a8 02 ; 0xf8194 scsi.c:371
+ je short 081a6h ; 74 0e ; 0xf8196
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf8198 scsi.c:372
+ xor al, al ; 30 c0 ; 0xf819b
+ out DX, AL ; ee ; 0xf819d
+ in AL, DX ; ec ; 0xf819e scsi.c:374
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf819f
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf81a1 scsi.c:376
+ jmp short 08210h ; eb 6a ; 0xf81a4
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf81a6 scsi.c:381
+ test ax, ax ; 85 c0 ; 0xf81a9
+ je short 081b5h ; 74 08 ; 0xf81ab
+ lea dx, [bx+001h] ; 8d 57 01 ; 0xf81ad scsi.c:382
+ mov cx, ax ; 89 c1 ; 0xf81b0
+ in AL, DX ; ec ; 0xf81b2
+ loop 081b2h ; e2 fd ; 0xf81b3
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf81b5 scsi.c:384
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81b8
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf81bb
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf81bf
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf81c2
+ lea ax, [bx+001h] ; 8d 47 01 ; 0xf81c6 scsi.c:389
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf81c9
+ jne short 081d6h ; 75 07 ; 0xf81cd
+ cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf81cf
+ jbe short 081f3h ; 76 1d ; 0xf81d4
+ mov dx, ax ; 89 c2 ; 0xf81d6 scsi.c:391
+ mov cx, 08000h ; b9 00 80 ; 0xf81d8
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf81db
+ rep insb ; f3 6c ; 0xf81de
+ add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf81e0 scsi.c:392
+ adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf81e5
+ mov ax, es ; 8c c0 ; 0xf81e9
+ add ax, 00800h ; 05 00 08 ; 0xf81eb
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf81ee
+ jmp short 081c6h ; eb d3 ; 0xf81f1 scsi.c:394
+ mov dx, ax ; 89 c2 ; 0xf81f3 scsi.c:397
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf81f5
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf81f8
+ rep insb ; f3 6c ; 0xf81fb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf81fd scsi.c:399
+ cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf8200
+ je short 0820eh ; 74 07 ; 0xf8205
+ mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf8207 scsi.c:400
+ in AL, DX ; ec ; 0xf820b
+ loop 0820bh ; e2 fd ; 0xf820c
+ xor dx, dx ; 31 d2 ; 0xf820e scsi.c:402
+ mov ax, dx ; 89 d0 ; 0xf8210 scsi.c:403
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8212
+ pop di ; 5f ; 0xf8215
+ pop si ; 5e ; 0xf8216
+ pop bp ; 5d ; 0xf8217
+ retn 0000ch ; c2 0c 00 ; 0xf8218
+ ; disGetNextSymbol 0xf821b LB 0x1e2a -> off=0x0 cb=0000000000000484 uValue=00000000000f6c1b 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf821b LB 0x484
+ push bp ; 55 ; 0xf821b scsi.c:411
+ mov bp, sp ; 89 e5 ; 0xf821c
+ push bx ; 53 ; 0xf821e
+ push cx ; 51 ; 0xf821f
+ push dx ; 52 ; 0xf8220
+ push si ; 56 ; 0xf8221
+ push di ; 57 ; 0xf8222
+ sub sp, 0023ch ; 81 ec 3c 02 ; 0xf8223
+ push ax ; 50 ; 0xf8227
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8228 scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf822b
+ mov es, ax ; 8e c0 ; 0xf822e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8230
+ mov di, 00122h ; bf 22 01 ; 0xf8233 scsi.c:49
+ mov word [bp-022h], ax ; 89 46 de ; 0xf8236
+ mov word [bp-01ch], strict word 00000h ; c7 46 e4 00 00 ; 0xf8239 scsi.c:420
+ jmp near 08621h ; e9 e0 03 ; 0xf823e
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8241 scsi.c:440
+ jnc near 08695h ; 0f 83 4e 04 ; 0xf8243
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf8247 scsi.c:455
+ xor bx, bx ; 31 db ; 0xf824a
+ mov dx, ss ; 8c d2 ; 0xf824c
+ lea ax, [bp-046h] ; 8d 46 ba ; 0xf824e
+ call 09fb0h ; e8 5c 1d ; 0xf8251
+ mov byte [bp-046h], 09eh ; c6 46 ba 9e ; 0xf8254 scsi.c:456
+ mov byte [bp-045h], 010h ; c6 46 bb 10 ; 0xf8258 scsi.c:457
+ mov byte [bp-039h], 020h ; c6 46 c7 20 ; 0xf825c scsi.c:458
+ push dword 000000020h ; 66 6a 20 ; 0xf8260 scsi.c:460
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf8263
+ push SS ; 16 ; 0xf8267
+ push dx ; 52 ; 0xf8268
+ push strict byte 00010h ; 6a 10 ; 0xf8269
+ movzx dx, byte [bp-01ch] ; 0f b6 56 e4 ; 0xf826b
+ mov cx, ss ; 8c d1 ; 0xf826f
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf8271
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8274
+ call 07d53h ; e8 d8 fa ; 0xf8278
+ test al, al ; 84 c0 ; 0xf827b scsi.c:461
+ je short 0828dh ; 74 0e ; 0xf827d
+ push 00ba4h ; 68 a4 0b ; 0xf827f scsi.c:462
+ push 00bddh ; 68 dd 0b ; 0xf8282
+ push strict byte 00007h ; 6a 07 ; 0xf8285
+ call 01a14h ; e8 8a 97 ; 0xf8287
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf828a
+ mov ax, word [bp-00240h] ; 8b 86 c0 fd ; 0xf828d scsi.c:467
+ mov bx, word [bp-00242h] ; 8b 9e be fd ; 0xf8291
+ mov cx, word [bp-00244h] ; 8b 8e bc fd ; 0xf8295
+ mov dx, word [bp-00246h] ; 8b 96 ba fd ; 0xf8299
+ xchg ah, al ; 86 c4 ; 0xf829d
+ xchg bh, bl ; 86 df ; 0xf829f
+ xchg ch, cl ; 86 cd ; 0xf82a1
+ xchg dh, dl ; 86 d6 ; 0xf82a3
+ xchg dx, ax ; 92 ; 0xf82a5
+ xchg bx, cx ; 87 cb ; 0xf82a6
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf82a8
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf82ab
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf82ae
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf82b1
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf82b4
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf82b7
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf82ba
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf82bd
+ movzx si, byte [bp-0023eh] ; 0f b6 b6 c2 fd ; 0xf82c0 scsi.c:469
+ sal si, 008h ; c1 e6 08 ; 0xf82c5
+ movzx ax, byte [bp-0023dh] ; 0f b6 86 c3 fd ; 0xf82c8
+ xor bx, bx ; 31 db ; 0xf82cd
+ or si, ax ; 09 c6 ; 0xf82cf
+ movzx ax, byte [bp-0023ch] ; 0f b6 86 c4 fd ; 0xf82d1
+ xor dx, dx ; 31 d2 ; 0xf82d6
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf82d8
+ sal ax, 1 ; d1 e0 ; 0xf82db
+ rcl dx, 1 ; d1 d2 ; 0xf82dd
+ loop 082dbh ; e2 fa ; 0xf82df
+ or ax, bx ; 09 d8 ; 0xf82e1
+ or dx, si ; 09 f2 ; 0xf82e3
+ movzx bx, byte [bp-0023bh] ; 0f b6 9e c5 fd ; 0xf82e5
+ or ax, bx ; 09 d8 ; 0xf82ea
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf82ec
+ test dx, dx ; 85 d2 ; 0xf82ef scsi.c:475
+ jne short 082f8h ; 75 05 ; 0xf82f1
+ cmp ax, 00200h ; 3d 00 02 ; 0xf82f3
+ je short 08318h ; 74 20 ; 0xf82f6
+ mov bx, 00db2h ; bb b2 0d ; 0xf82f8 scsi.c:478
+ mov cx, ds ; 8c d9 ; 0xf82fb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf82fd
+ call 019d3h ; e8 d0 96 ; 0xf8300
+ push dx ; 52 ; 0xf8303
+ push word [bp-028h] ; ff 76 d8 ; 0xf8304
+ push word [bp-01ch] ; ff 76 e4 ; 0xf8307
+ push 00bfch ; 68 fc 0b ; 0xf830a
+ push strict byte 00004h ; 6a 04 ; 0xf830d
+ call 01a14h ; e8 02 97 ; 0xf830f
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf8312
+ jmp near 08618h ; e9 00 03 ; 0xf8315 scsi.c:479
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8318 scsi.c:483
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf831b
+ jc short 0832bh ; 72 0c ; 0xf831d
+ jbe short 08333h ; 76 12 ; 0xf831f
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf8321
+ je short 0833bh ; 74 16 ; 0xf8323
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf8325
+ je short 08337h ; 74 0e ; 0xf8327
+ jmp short 08384h ; eb 59 ; 0xf8329
+ test al, al ; 84 c0 ; 0xf832b
+ jne short 08384h ; 75 55 ; 0xf832d
+ mov BL, strict byte 090h ; b3 90 ; 0xf832f scsi.c:486
+ jmp short 0833dh ; eb 0a ; 0xf8331 scsi.c:487
+ mov BL, strict byte 098h ; b3 98 ; 0xf8333 scsi.c:489
+ jmp short 0833dh ; eb 06 ; 0xf8335 scsi.c:490
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf8337 scsi.c:492
+ jmp short 0833dh ; eb 02 ; 0xf8339 scsi.c:493
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf833b scsi.c:495
+ mov al, bl ; 88 d8 ; 0xf833d scsi.c:499
+ add AL, strict byte 007h ; 04 07 ; 0xf833f
+ movzx cx, al ; 0f b6 c8 ; 0xf8341
+ mov ax, cx ; 89 c8 ; 0xf8344
+ call 01756h ; e8 0d 94 ; 0xf8346
+ test al, al ; 84 c0 ; 0xf8349
+ je short 08384h ; 74 37 ; 0xf834b
+ mov al, bl ; 88 d8 ; 0xf834d scsi.c:504
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf834f
+ xor ah, ah ; 30 e4 ; 0xf8351
+ call 01756h ; e8 00 94 ; 0xf8353
+ movzx dx, al ; 0f b6 d0 ; 0xf8356
+ sal dx, 008h ; c1 e2 08 ; 0xf8359
+ movzx ax, bl ; 0f b6 c3 ; 0xf835c
+ call 01756h ; e8 f4 93 ; 0xf835f
+ xor ah, ah ; 30 e4 ; 0xf8362
+ add ax, dx ; 01 d0 ; 0xf8364
+ cwd ; 99 ; 0xf8366
+ mov si, ax ; 89 c6 ; 0xf8367
+ mov al, bl ; 88 d8 ; 0xf8369 scsi.c:505
+ add AL, strict byte 002h ; 04 02 ; 0xf836b
+ xor ah, ah ; 30 e4 ; 0xf836d
+ call 01756h ; e8 e4 93 ; 0xf836f
+ xor ah, ah ; 30 e4 ; 0xf8372
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf8374
+ mov ax, cx ; 89 c8 ; 0xf8377 scsi.c:506
+ call 01756h ; e8 da 93 ; 0xf8379
+ xor ah, ah ; 30 e4 ; 0xf837c
+ mov word [bp-026h], ax ; 89 46 da ; 0xf837e
+ jmp near 08473h ; e9 ef 00 ; 0xf8381 scsi.c:508
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8384 scsi.c:509
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf8387
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf838a
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf838d
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf8390
+ call 09f90h ; e8 fa 1b ; 0xf8393
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf8396
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf8399
+ mov word [bp-018h], cx ; 89 4e e8 ; 0xf839c
+ mov word [bp-02ah], dx ; 89 56 d6 ; 0xf839f
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf83a2 scsi.c:513
+ test ax, ax ; 85 c0 ; 0xf83a5
+ jnbe short 083bfh ; 77 16 ; 0xf83a7
+ jne near 08434h ; 0f 85 87 00 ; 0xf83a9
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf83ad
+ jnbe short 083bfh ; 77 0c ; 0xf83b1
+ jne near 08434h ; 0f 85 7d 00 ; 0xf83b3
+ cmp word [bp-010h], strict byte 00040h ; 83 7e f0 40 ; 0xf83b7
+ jnbe short 083bfh ; 77 02 ; 0xf83bb
+ jne short 08434h ; 75 75 ; 0xf83bd
+ mov word [bp-032h], 000ffh ; c7 46 ce ff 00 ; 0xf83bf scsi.c:515
+ mov word [bp-026h], strict word 0003fh ; c7 46 da 3f 00 ; 0xf83c4 scsi.c:516
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf83c9 scsi.c:518
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf83cc
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf83cf
+ mov si, strict word 00006h ; be 06 00 ; 0xf83d2
+ call 09f90h ; e8 b8 1b ; 0xf83d5
+ mov si, word [bp-02ah] ; 8b 76 d6 ; 0xf83d8
+ add si, dx ; 01 d6 ; 0xf83db
+ mov word [bp-02ch], si ; 89 76 d4 ; 0xf83dd
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf83e0
+ adc dx, cx ; 11 ca ; 0xf83e3
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf83e5
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf83e8
+ adc dx, bx ; 11 da ; 0xf83eb
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf83ed
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf83f0
+ adc dx, ax ; 11 c2 ; 0xf83f3
+ mov word [bp-036h], dx ; 89 56 ca ; 0xf83f5
+ mov ax, dx ; 89 d0 ; 0xf83f8 scsi.c:519
+ mov bx, word [bp-034h] ; 8b 5e cc ; 0xf83fa
+ mov cx, word [bp-01eh] ; 8b 4e e2 ; 0xf83fd
+ mov dx, si ; 89 f2 ; 0xf8400
+ mov si, strict word 00008h ; be 08 00 ; 0xf8402
+ call 09f90h ; e8 88 1b ; 0xf8405
+ mov word [bp-02eh], bx ; 89 5e d2 ; 0xf8408
+ mov word [bp-020h], cx ; 89 4e e0 ; 0xf840b
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf840e
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf8411
+ mov bx, word [bp-034h] ; 8b 5e cc ; 0xf8414
+ mov cx, word [bp-01eh] ; 8b 4e e2 ; 0xf8417
+ mov dx, word [bp-02ch] ; 8b 56 d4 ; 0xf841a
+ mov si, strict word 00010h ; be 10 00 ; 0xf841d
+ call 09f90h ; e8 6d 1b ; 0xf8420
+ mov si, word [bp-030h] ; 8b 76 d0 ; 0xf8423
+ add si, dx ; 01 d6 ; 0xf8426
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf8428
+ adc dx, cx ; 11 ca ; 0xf842b
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf842d
+ adc ax, bx ; 11 d8 ; 0xf8430
+ jmp short 08473h ; eb 3f ; 0xf8432 scsi.c:521
+ test ax, ax ; 85 c0 ; 0xf8434
+ jnbe short 0844ah ; 77 12 ; 0xf8436
+ jne short 08456h ; 75 1c ; 0xf8438
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf843a
+ jnbe short 0844ah ; 77 0a ; 0xf843e
+ jne short 08456h ; 75 14 ; 0xf8440
+ cmp word [bp-010h], strict byte 00020h ; 83 7e f0 20 ; 0xf8442
+ jnbe short 0844ah ; 77 02 ; 0xf8446
+ jne short 08456h ; 75 0c ; 0xf8448
+ mov word [bp-032h], 00080h ; c7 46 ce 80 00 ; 0xf844a scsi.c:523
+ mov word [bp-026h], strict word 00020h ; c7 46 da 20 00 ; 0xf844f scsi.c:524
+ jmp short 0846fh ; eb 19 ; 0xf8454 scsi.c:527
+ mov word [bp-032h], strict word 00040h ; c7 46 ce 40 00 ; 0xf8456 scsi.c:529
+ mov word [bp-026h], strict word 00020h ; c7 46 da 20 00 ; 0xf845b scsi.c:530
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf8460 scsi.c:531
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8463
+ mov dx, word [bp-012h] ; 8b 56 ee ; 0xf8466
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf8469
+ call 09f90h ; e8 21 1b ; 0xf846c
+ mov si, dx ; 89 d6 ; 0xf846f
+ mov dx, cx ; 89 ca ; 0xf8471
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8473 scsi.c:536
+ add AL, strict byte 008h ; 04 08 ; 0xf8476
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8478
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf847b scsi.c:538
+ sal ax, 002h ; c1 e0 02 ; 0xf847f
+ mov es, [bp-022h] ; 8e 46 de ; 0xf8482
+ mov bx, di ; 89 fb ; 0xf8485
+ add bx, ax ; 01 c3 ; 0xf8487
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf8489
+ mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf848d
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf8492 scsi.c:539
+ mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf8495
+ movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf849a scsi.c:540
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf849e
+ add bx, di ; 01 fb ; 0xf84a1
+ db 066h, 026h, 0c7h, 047h, 022h, 004h, 0ffh, 000h, 000h
+ ; mov dword [es:bx+022h], strict dword 00000ff04h ; 66 26 c7 47 22 04 ff 00 00; 0xf84a3
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf84ac scsi.c:544
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf84af
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf84b3 scsi.c:545
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf84b8 scsi.c:548
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf84bb
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf84bf scsi.c:549
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf84c2
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf84c6 scsi.c:550
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf84c9
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf84cd scsi.c:551
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf84d0
+ test dx, dx ; 85 d2 ; 0xf84d4 scsi.c:553
+ jne short 084deh ; 75 06 ; 0xf84d6
+ cmp si, 00400h ; 81 fe 00 04 ; 0xf84d8
+ jbe short 084ech ; 76 0e ; 0xf84dc
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf84de scsi.c:554
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf84e4 scsi.c:555
+ jmp short 084f4h ; eb 08 ; 0xf84ea scsi.c:556
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf84ec scsi.c:557
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf84f0 scsi.c:558
+ mov bx, 00db2h ; bb b2 0d ; 0xf84f4 scsi.c:562
+ mov cx, ds ; 8c d9 ; 0xf84f7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf84f9
+ call 019d3h ; e8 d4 94 ; 0xf84fc
+ push word [bp-024h] ; ff 76 dc ; 0xf84ff
+ push word [bp-016h] ; ff 76 ea ; 0xf8502
+ push dword [bp-012h] ; 66 ff 76 ee ; 0xf8505
+ push word [bp-026h] ; ff 76 da ; 0xf8509
+ push word [bp-032h] ; ff 76 ce ; 0xf850c
+ push dx ; 52 ; 0xf850f
+ push si ; 56 ; 0xf8510
+ push word [bp-01ch] ; ff 76 e4 ; 0xf8511
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf8514
+ push ax ; 50 ; 0xf8518
+ push 00c2ah ; 68 2a 0c ; 0xf8519
+ push strict byte 00004h ; 6a 04 ; 0xf851c
+ call 01a14h ; e8 f3 94 ; 0xf851e
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf8521
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf8524 scsi.c:564
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf8528
+ mov es, [bp-022h] ; 8e 46 de ; 0xf852b
+ mov bx, di ; 89 fb ; 0xf852e
+ add bx, ax ; 01 c3 ; 0xf8530
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8532
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf8535
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf8539
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf853c
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8540
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8543
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8547
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf854a
+ mov al, byte [es:di+001e2h] ; 26 8a 85 e2 01 ; 0xf854e scsi.c:567
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8553 scsi.c:568
+ add ah, 008h ; 80 c4 08 ; 0xf8556
+ movzx bx, al ; 0f b6 d8 ; 0xf8559
+ add bx, di ; 01 fb ; 0xf855c
+ mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf855e
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8563 scsi.c:569
+ mov byte [es:di+001e2h], al ; 26 88 85 e2 01 ; 0xf8565 scsi.c:570
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf856a scsi.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf856d
+ mov es, ax ; 8e c0 ; 0xf8570
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf8572
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8575 scsi.c:574
+ mov byte [es:bx], al ; 26 88 07 ; 0xf8577 scsi.c:43
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf857a scsi.c:577
+ jmp near 0860dh ; e9 8d 00 ; 0xf857d scsi.c:579
+ mov bx, 00db2h ; bb b2 0d ; 0xf8580 scsi.c:591
+ mov cx, ds ; 8c d9 ; 0xf8583
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8585
+ call 019d3h ; e8 48 94 ; 0xf8588
+ push word [bp-01ch] ; ff 76 e4 ; 0xf858b
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf858e
+ push ax ; 50 ; 0xf8592
+ push 00c58h ; 68 58 0c ; 0xf8593
+ push strict byte 00004h ; 6a 04 ; 0xf8596
+ call 01a14h ; e8 79 94 ; 0xf8598
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf859b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf859e scsi.c:594
+ add AL, strict byte 008h ; 04 08 ; 0xf85a1
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf85a3
+ test byte [bp-00245h], 080h ; f6 86 bb fd 80 ; 0xf85a6 scsi.c:596
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf85ab
+ xor ah, ah ; 30 e4 ; 0xf85ae
+ mov dx, ax ; 89 c2 ; 0xf85b0
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf85b2 scsi.c:598
+ sal ax, 002h ; c1 e0 02 ; 0xf85b6
+ mov es, [bp-022h] ; 8e 46 de ; 0xf85b9
+ mov bx, di ; 89 fb ; 0xf85bc
+ add bx, ax ; 01 c3 ; 0xf85be
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf85c0
+ mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf85c4
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf85c9 scsi.c:599
+ mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf85cc
+ movzx bx, byte [bp-00eh] ; 0f b6 5e f2 ; 0xf85d1 scsi.c:600
+ imul bx, bx, strict byte 0001ch ; 6b db 1c ; 0xf85d5
+ add bx, di ; 01 fb ; 0xf85d8
+ mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf85da
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf85e0 scsi.c:602
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf85e4 scsi.c:603
+ mov byte [es:bx+027h], dh ; 26 88 77 27 ; 0xf85ea scsi.c:604
+ mov al, byte [es:di+001f3h] ; 26 8a 85 f3 01 ; 0xf85ee scsi.c:607
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf85f3 scsi.c:608
+ add ah, 008h ; 80 c4 08 ; 0xf85f6
+ movzx bx, al ; 0f b6 d8 ; 0xf85f9
+ add bx, di ; 01 fb ; 0xf85fc
+ mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf85fe
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8603 scsi.c:609
+ mov byte [es:di+001f3h], al ; 26 88 85 f3 01 ; 0xf8605 scsi.c:610
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf860a scsi.c:612
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf860d scsi.c:617
+ mov es, [bp-022h] ; 8e 46 de ; 0xf8610
+ mov byte [es:di+0022ch], al ; 26 88 85 2c 02 ; 0xf8613
+ inc word [bp-01ch] ; ff 46 e4 ; 0xf8618 scsi.c:618
+ cmp word [bp-01ch], strict byte 00010h ; 83 7e e4 10 ; 0xf861b
+ jnl short 08695h ; 7d 74 ; 0xf861f
+ mov byte [bp-046h], 012h ; c6 46 ba 12 ; 0xf8621
+ xor al, al ; 30 c0 ; 0xf8625
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf8627
+ mov byte [bp-044h], al ; 88 46 bc ; 0xf862a
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf862d
+ mov byte [bp-042h], 005h ; c6 46 be 05 ; 0xf8630
+ mov byte [bp-041h], al ; 88 46 bf ; 0xf8634
+ push dword 000000005h ; 66 6a 05 ; 0xf8637
+ lea dx, [bp-00246h] ; 8d 96 ba fd ; 0xf863a
+ push SS ; 16 ; 0xf863e
+ push dx ; 52 ; 0xf863f
+ push strict byte 00006h ; 6a 06 ; 0xf8640
+ movzx dx, byte [bp-01ch] ; 0f b6 56 e4 ; 0xf8642
+ mov cx, ss ; 8c d1 ; 0xf8646
+ lea bx, [bp-046h] ; 8d 5e ba ; 0xf8648
+ mov ax, word [bp-00248h] ; 8b 86 b8 fd ; 0xf864b
+ call 07d53h ; e8 01 f7 ; 0xf864f
+ test al, al ; 84 c0 ; 0xf8652
+ je short 08664h ; 74 0e ; 0xf8654
+ push 00ba4h ; 68 a4 0b ; 0xf8656
+ push 00bc4h ; 68 c4 0b ; 0xf8659
+ push strict byte 00007h ; 6a 07 ; 0xf865c
+ call 01a14h ; e8 b3 93 ; 0xf865e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8661
+ mov es, [bp-022h] ; 8e 46 de ; 0xf8664
+ mov al, byte [es:di+0022ch] ; 26 8a 85 2c 02 ; 0xf8667
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf866c
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf866f
+ jne short 0867fh ; 75 09 ; 0xf8674
+ test byte [bp-00246h], 01fh ; f6 86 ba fd 1f ; 0xf8676
+ je near 08241h ; 0f 84 c2 fb ; 0xf867b
+ test byte [bp-00246h], 0e0h ; f6 86 ba fd e0 ; 0xf867f
+ jne short 0860dh ; 75 87 ; 0xf8684
+ mov al, byte [bp-00246h] ; 8a 86 ba fd ; 0xf8686
+ and AL, strict byte 01fh ; 24 1f ; 0xf868a
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf868c
+ je near 08580h ; 0f 84 ee fe ; 0xf868e
+ jmp near 0860dh ; e9 78 ff ; 0xf8692
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf8695 scsi.c:619
+ pop di ; 5f ; 0xf8698
+ pop si ; 5e ; 0xf8699
+ pop dx ; 5a ; 0xf869a
+ pop cx ; 59 ; 0xf869b
+ pop bx ; 5b ; 0xf869c
+ pop bp ; 5d ; 0xf869d
+ retn ; c3 ; 0xf869e
+ ; disGetNextSymbol 0xf869f LB 0x19a6 -> off=0x0 cb=000000000000002d uValue=00000000000f709f 'scsi_pci_init'
+scsi_pci_init: ; 0xf869f LB 0x2d
+ push bp ; 55 ; 0xf869f scsi.c:621
+ mov bp, sp ; 89 e5 ; 0xf86a0
+ push bx ; 53 ; 0xf86a2
+ push cx ; 51 ; 0xf86a3
+ push si ; 56 ; 0xf86a4
+ call 09d7ah ; e8 d2 16 ; 0xf86a5 scsi.c:625
+ mov dx, ax ; 89 c2 ; 0xf86a8
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf86aa scsi.c:626
+ je short 086c4h ; 74 15 ; 0xf86ad
+ movzx si, dl ; 0f b6 f2 ; 0xf86af scsi.c:633
+ mov ax, dx ; 89 d0 ; 0xf86b2
+ shr ax, 008h ; c1 e8 08 ; 0xf86b4
+ xor ah, ah ; 30 e4 ; 0xf86b7
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf86b9
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf86bc
+ mov dx, si ; 89 f2 ; 0xf86bf
+ call 09e0ch ; e8 48 17 ; 0xf86c1
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf86c4 scsi.c:634
+ pop si ; 5e ; 0xf86c7
+ pop cx ; 59 ; 0xf86c8
+ pop bx ; 5b ; 0xf86c9
+ pop bp ; 5d ; 0xf86ca
+ retn ; c3 ; 0xf86cb
+ ; disGetNextSymbol 0xf86cc LB 0x1979 -> off=0x0 cb=0000000000000081 uValue=00000000000f70cc 'scsi_init'
+scsi_init: ; 0xf86cc LB 0x81
+ push bp ; 55 ; 0xf86cc scsi.c:639
+ mov bp, sp ; 89 e5 ; 0xf86cd
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf86cf scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf86d2
+ mov es, ax ; 8e c0 ; 0xf86d5
+ mov es, [es:bx] ; 26 8e 07 ; 0xf86d7
+ mov bx, 00122h ; bb 22 01 ; 0xf86da scsi.c:49
+ mov byte [es:bx+0022ch], 000h ; 26 c6 87 2c 02 00 ; 0xf86dd scsi.c:646
+ mov AL, strict byte 055h ; b0 55 ; 0xf86e3 scsi.c:651
+ mov dx, 00432h ; ba 32 04 ; 0xf86e5
+ out DX, AL ; ee ; 0xf86e8
+ in AL, DX ; ec ; 0xf86e9 scsi.c:652
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf86ea
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf86ec scsi.c:654
+ jne short 08705h ; 75 15 ; 0xf86ee
+ xor al, al ; 30 c0 ; 0xf86f0 scsi.c:658
+ mov dx, 00433h ; ba 33 04 ; 0xf86f2
+ out DX, AL ; ee ; 0xf86f5
+ mov ax, 00430h ; b8 30 04 ; 0xf86f6 scsi.c:659
+ call 0821bh ; e8 1f fb ; 0xf86f9
+ mov dx, 01040h ; ba 40 10 ; 0xf86fc scsi.c:660
+ mov ax, 0104bh ; b8 4b 10 ; 0xf86ff
+ call 0869fh ; e8 9a ff ; 0xf8702
+ mov AL, strict byte 055h ; b0 55 ; 0xf8705 scsi.c:668
+ mov dx, 00436h ; ba 36 04 ; 0xf8707
+ out DX, AL ; ee ; 0xf870a
+ in AL, DX ; ec ; 0xf870b scsi.c:669
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf870c
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf870e scsi.c:671
+ jne short 08727h ; 75 15 ; 0xf8710
+ xor al, al ; 30 c0 ; 0xf8712 scsi.c:675
+ mov dx, 00437h ; ba 37 04 ; 0xf8714
+ out DX, AL ; ee ; 0xf8717
+ mov ax, 00434h ; b8 34 04 ; 0xf8718 scsi.c:676
+ call 0821bh ; e8 fd fa ; 0xf871b
+ mov dx, strict word 00030h ; ba 30 00 ; 0xf871e scsi.c:677
+ mov ax, 01000h ; b8 00 10 ; 0xf8721
+ call 0869fh ; e8 78 ff ; 0xf8724
+ mov AL, strict byte 055h ; b0 55 ; 0xf8727 scsi.c:685
+ mov dx, 0043ah ; ba 3a 04 ; 0xf8729
+ out DX, AL ; ee ; 0xf872c
+ in AL, DX ; ec ; 0xf872d scsi.c:686
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf872e
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8730 scsi.c:688
+ jne short 08749h ; 75 15 ; 0xf8732
+ xor al, al ; 30 c0 ; 0xf8734 scsi.c:692
+ mov dx, 0043bh ; ba 3b 04 ; 0xf8736
+ out DX, AL ; ee ; 0xf8739
+ mov ax, 00438h ; b8 38 04 ; 0xf873a scsi.c:693
+ call 0821bh ; e8 db fa ; 0xf873d
+ mov dx, strict word 00054h ; ba 54 00 ; 0xf8740 scsi.c:694
+ mov ax, 01000h ; b8 00 10 ; 0xf8743
+ call 0869fh ; e8 56 ff ; 0xf8746
+ mov sp, bp ; 89 ec ; 0xf8749 scsi.c:700
+ pop bp ; 5d ; 0xf874b
+ retn ; c3 ; 0xf874c
+ ; disGetNextSymbol 0xf874d LB 0x18f8 -> off=0x0 cb=000000000000001b uValue=00000000000f714d 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf874d LB 0x1b
+ push si ; 56 ; 0xf874d ahci.c:279
+ push bp ; 55 ; 0xf874e
+ mov bp, sp ; 89 e5 ; 0xf874f
+ mov si, bx ; 89 de ; 0xf8751
+ and ax, bx ; 21 d8 ; 0xf8753 ahci.c:281
+ and dx, cx ; 21 ca ; 0xf8755
+ movzx cx, byte [bp+006h] ; 0f b6 4e 06 ; 0xf8757
+ jcxz 08763h ; e3 06 ; 0xf875b
+ shr dx, 1 ; d1 ea ; 0xf875d
+ rcr ax, 1 ; d1 d8 ; 0xf875f
+ loop 0875dh ; e2 fa ; 0xf8761
+ pop bp ; 5d ; 0xf8763 ahci.c:282
+ pop si ; 5e ; 0xf8764
+ retn 00002h ; c2 02 00 ; 0xf8765
+ ; disGetNextSymbol 0xf8768 LB 0x18dd -> off=0x0 cb=000000000000001e uValue=00000000000f7168 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf8768 LB 0x1e
+ push bx ; 53 ; 0xf8768 ahci.c:287
+ push cx ; 51 ; 0xf8769
+ push bp ; 55 ; 0xf876a
+ mov bp, sp ; 89 e5 ; 0xf876b
+ mov bx, ax ; 89 c3 ; 0xf876d
+ mov ax, dx ; 89 d0 ; 0xf876f
+ xor dx, dx ; 31 d2 ; 0xf8771 ahci.c:289
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf8773
+ sal ax, 1 ; d1 e0 ; 0xf8776
+ rcl dx, 1 ; d1 d2 ; 0xf8778
+ loop 08776h ; e2 fa ; 0xf877a
+ xor cx, cx ; 31 c9 ; 0xf877c
+ add ax, bx ; 01 d8 ; 0xf877e
+ adc dx, cx ; 11 ca ; 0xf8780
+ pop bp ; 5d ; 0xf8782 ahci.c:290
+ pop cx ; 59 ; 0xf8783
+ pop bx ; 5b ; 0xf8784
+ retn ; c3 ; 0xf8785
+ ; disGetNextSymbol 0xf8786 LB 0x18bf -> off=0x0 cb=000000000000014b uValue=00000000000f7186 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf8786 LB 0x14b
+ push bp ; 55 ; 0xf8786 ahci.c:295
+ mov bp, sp ; 89 e5 ; 0xf8787
+ push cx ; 51 ; 0xf8789
+ push si ; 56 ; 0xf878a
+ push di ; 57 ; 0xf878b
+ push ax ; 50 ; 0xf878c
+ mov si, ax ; 89 c6 ; 0xf878d
+ mov cx, dx ; 89 d1 ; 0xf878f
+ mov al, bl ; 88 d8 ; 0xf8791
+ mov es, dx ; 8e c2 ; 0xf8793 ahci.c:300
+ mov ah, byte [es:si+00262h] ; 26 8a a4 62 02 ; 0xf8795
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf879a
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf879d ahci.c:301
+ cmp ah, 0ffh ; 80 fc ff ; 0xf87a2 ahci.c:303
+ je near 088c9h ; 0f 84 20 01 ; 0xf87a5
+ movzx dx, byte [es:si+00263h] ; 26 0f b6 94 63 02 ; 0xf87a9 ahci.c:306
+ xor di, di ; 31 ff ; 0xf87af
+ or di, 00080h ; 81 cf 80 00 ; 0xf87b1
+ xor ah, ah ; 30 e4 ; 0xf87b5
+ or di, ax ; 09 c7 ; 0xf87b7
+ mov word [es:si], di ; 26 89 3c ; 0xf87b9
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf87bc
+ db 066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00; 0xf87c0 ahci.c:307
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf87c9 ahci.c:308
+ mov dx, cx ; 89 ca ; 0xf87cd
+ call 08768h ; e8 96 ff ; 0xf87cf
+ mov es, cx ; 8e c1 ; 0xf87d2
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf87d4
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf87d8
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf87dc ahci.c:311
+ sal di, 007h ; c1 e7 07 ; 0xf87e0
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf87e3
+ xor cx, cx ; 31 c9 ; 0xf87e7 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf87e9
+ xchg cx, ax ; 91 ; 0xf87eb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87ec
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87f0
+ out DX, eax ; 66 ef ; 0xf87f2
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf87f4 ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf87f7
+ in eax, DX ; 66 ed ; 0xf87f9
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf87fb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf87fd
+ xchg dx, ax ; 92 ; 0xf8801
+ or AL, strict byte 011h ; 0c 11 ; 0xf8802
+ mov cx, dx ; 89 d1 ; 0xf8804
+ mov dx, si ; 89 f2 ; 0xf8806
+ xchg cx, ax ; 91 ; 0xf8808
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8809
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf880d
+ out DX, eax ; 66 ef ; 0xf880f
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf8811 ahci.c:315
+ cwd ; 99 ; 0xf8815
+ mov cx, dx ; 89 d1 ; 0xf8816
+ mov dx, bx ; 89 da ; 0xf8818
+ xchg cx, ax ; 91 ; 0xf881a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf881b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf881f
+ out DX, eax ; 66 ef ; 0xf8821
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8823
+ xor cx, cx ; 31 c9 ; 0xf8826
+ mov dx, si ; 89 f2 ; 0xf8828
+ xchg cx, ax ; 91 ; 0xf882a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf882b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf882f
+ out DX, eax ; 66 ef ; 0xf8831
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8833 ahci.c:319
+ sal ax, 007h ; c1 e0 07 ; 0xf8837
+ add ax, 00110h ; 05 10 01 ; 0xf883a
+ xor cx, cx ; 31 c9 ; 0xf883d ahci.c:271
+ mov dx, bx ; 89 da ; 0xf883f
+ xchg cx, ax ; 91 ; 0xf8841
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8842
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8846
+ out DX, eax ; 66 ef ; 0xf8848
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf884a ahci.c:272
+ in eax, DX ; 66 ed ; 0xf884d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf884f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8851
+ xchg dx, ax ; 92 ; 0xf8855
+ test dh, 040h ; f6 c6 40 ; 0xf8856
+ jne short 0885fh ; 75 04 ; 0xf8859
+ test AL, strict byte 001h ; a8 01 ; 0xf885b
+ je short 08863h ; 74 04 ; 0xf885d
+ mov AL, strict byte 001h ; b0 01 ; 0xf885f
+ jmp short 08865h ; eb 02 ; 0xf8861
+ xor al, al ; 30 c0 ; 0xf8863
+ test al, al ; 84 c0 ; 0xf8865 ahci.c:273
+ je short 08833h ; 74 ca ; 0xf8867
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf8869 ahci.c:325
+ sal di, 007h ; c1 e7 07 ; 0xf886d
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf8870
+ xor cx, cx ; 31 c9 ; 0xf8874 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf8876
+ xchg cx, ax ; 91 ; 0xf8878
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8879
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf887d
+ out DX, eax ; 66 ef ; 0xf887f
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf8881 ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf8884
+ in eax, DX ; 66 ed ; 0xf8886
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8888
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf888a
+ xchg dx, ax ; 92 ; 0xf888e
+ or AL, strict byte 001h ; 0c 01 ; 0xf888f
+ mov cx, dx ; 89 d1 ; 0xf8891
+ mov dx, si ; 89 f2 ; 0xf8893
+ xchg cx, ax ; 91 ; 0xf8895
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8896
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf889a
+ out DX, eax ; 66 ef ; 0xf889c
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf889e ahci.c:329
+ xor cx, cx ; 31 c9 ; 0xf88a2 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf88a4
+ xchg cx, ax ; 91 ; 0xf88a6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88a7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88ab
+ out DX, eax ; 66 ef ; 0xf88ad
+ mov dx, si ; 89 f2 ; 0xf88af ahci.c:262
+ in eax, DX ; 66 ed ; 0xf88b1
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf88b3
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf88b5
+ xchg dx, ax ; 92 ; 0xf88b9
+ and AL, strict byte 0feh ; 24 fe ; 0xf88ba
+ mov cx, dx ; 89 d1 ; 0xf88bc
+ mov dx, si ; 89 f2 ; 0xf88be
+ xchg cx, ax ; 91 ; 0xf88c0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88c1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88c5
+ out DX, eax ; 66 ef ; 0xf88c7
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf88c9 ahci.c:335
+ pop di ; 5f ; 0xf88cc
+ pop si ; 5e ; 0xf88cd
+ pop cx ; 59 ; 0xf88ce
+ pop bp ; 5d ; 0xf88cf
+ retn ; c3 ; 0xf88d0
+ ; disGetNextSymbol 0xf88d1 LB 0x1774 -> off=0x0 cb=0000000000000262 uValue=00000000000f72d1 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf88d1 LB 0x262
+ push bp ; 55 ; 0xf88d1 ahci.c:340
+ mov bp, sp ; 89 e5 ; 0xf88d2
+ push cx ; 51 ; 0xf88d4
+ push si ; 56 ; 0xf88d5
+ push di ; 57 ; 0xf88d6
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf88d7
+ push ax ; 50 ; 0xf88da
+ push dx ; 52 ; 0xf88db
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf88dc
+ xor di, di ; 31 ff ; 0xf88df ahci.c:342
+ mov es, dx ; 8e c2 ; 0xf88e1
+ mov bx, ax ; 89 c3 ; 0xf88e3
+ mov ax, word [es:bx+00232h] ; 26 8b 87 32 02 ; 0xf88e5
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf88ea
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf88ed
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf88f0
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf88f3 ahci.c:343
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf88f7
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf88fa ahci.c:344
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf88fe
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8901 ahci.c:347
+ xor bx, bx ; 31 db ; 0xf8904
+ mov ax, 00080h ; b8 80 00 ; 0xf8906
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8909
+ call 09fb0h ; e8 a1 16 ; 0xf890c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf890f ahci.c:350
+ mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf8912
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8919 ahci.c:352
+ mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf891c
+ mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf8921 ahci.c:353
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8927 ahci.c:355
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf892a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf892d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8930
+ mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf8933
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8938 ahci.c:356
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf893b
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf893f
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8943
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8946
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf894a
+ mov si, strict word 00008h ; be 08 00 ; 0xf894d
+ call 09f90h ; e8 3d 16 ; 0xf8950
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8953
+ mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf8956
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf895b ahci.c:357
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf895e
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8961
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8965
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8969
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf896c
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8970
+ mov si, strict word 00010h ; be 10 00 ; 0xf8973
+ call 09f90h ; e8 17 16 ; 0xf8976
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8979
+ mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf897c
+ mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf8981 ahci.c:358
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8987 ahci.c:360
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf898a
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf898d
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8991
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8995
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8998
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf899c
+ mov si, strict word 00018h ; be 18 00 ; 0xf899f
+ call 09f90h ; e8 eb 15 ; 0xf89a2
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89a5
+ mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf89a8
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf89ad ahci.c:361
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf89b0
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89b3
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf89b7
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf89bb
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf89be
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf89c2
+ mov si, strict word 00020h ; be 20 00 ; 0xf89c5
+ call 09f90h ; e8 c5 15 ; 0xf89c8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89cb
+ mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf89ce
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf89d3 ahci.c:362
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf89d6
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf89d9
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf89dd
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf89e1
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf89e4
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf89e8
+ mov si, strict word 00028h ; be 28 00 ; 0xf89eb
+ call 09f90h ; e8 9f 15 ; 0xf89ee
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89f1
+ mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf89f4
+ mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf89f9 ahci.c:363
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf89ff ahci.c:365
+ mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf8a02
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8a07 ahci.c:366
+ shr ax, 008h ; c1 e8 08 ; 0xf8a0a
+ mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf8a0d
+ mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf8a12 ahci.c:369
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf8a19 ahci.c:372
+ xor dx, dx ; 31 d2 ; 0xf8a1c
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf8a1e
+ xor cx, cx ; 31 c9 ; 0xf8a21
+ call 09f10h ; e8 ea 14 ; 0xf8a23
+ push dx ; 52 ; 0xf8a26
+ push ax ; 50 ; 0xf8a27
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8a28
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8a2b
+ mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf8a2e
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8a32
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf8a35
+ mov ax, 0026ah ; b8 6a 02 ; 0xf8a39
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a3c
+ call 09e63h ; e8 21 14 ; 0xf8a3f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a42 ahci.c:375
+ mov ax, word [es:di+0027eh] ; 26 8b 85 7e 02 ; 0xf8a45
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf8a4a
+ mov dx, word [es:di+00280h] ; 26 8b 95 80 02 ; 0xf8a4d
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf8a52
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8a55
+ sal bx, 004h ; c1 e3 04 ; 0xf8a5b
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8a5e
+ mov word [es:bx+0010eh], dx ; 26 89 97 0e 01 ; 0xf8a63
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8a68 ahci.c:376
+ sal bx, 004h ; c1 e3 04 ; 0xf8a6e
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf8a71
+ mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf8a76
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf8a7b
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf8a80
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8a85 ahci.c:377
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8a8a ahci.c:379
+ mov bx, si ; 89 f3 ; 0xf8a8d
+ mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf8a8f
+ test ax, ax ; 85 c0 ; 0xf8a93
+ je short 08ad0h ; 74 39 ; 0xf8a95
+ dec ax ; 48 ; 0xf8a97 ahci.c:380
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a98
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8a9b
+ sal bx, 004h ; c1 e3 04 ; 0xf8aa1
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf8aa4
+ mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf8aa9
+ movzx bx, byte [es:di+00263h] ; 26 0f b6 9d 63 02 ; 0xf8aae ahci.c:381
+ sal bx, 004h ; c1 e3 04 ; 0xf8ab4
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf8ab7
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf8abc
+ mov word [es:bx+00100h], dx ; 26 89 97 00 01 ; 0xf8ac1
+ mov word [es:bx+00102h], ax ; 26 89 87 02 01 ; 0xf8ac6
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8acb ahci.c:382
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8ad0 ahci.c:397
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf8ad3
+ jne short 08addh ; 75 06 ; 0xf8ad5
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8ad7 ahci.c:398
+ jmp short 08af4h ; eb 17 ; 0xf8adb ahci.c:399
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf8add
+ jne short 08af0h ; 75 0f ; 0xf8adf
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf8ae1 ahci.c:400
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8ae5 ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8ae8
+ jmp short 08af4h ; eb 04 ; 0xf8aee ahci.c:402
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf8af0 ahci.c:403
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8af4 ahci.c:405
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf8af8 ahci.c:407
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8afc
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8aff
+ call 08786h ; e8 81 fc ; 0xf8b02
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf8b05 ahci.c:410
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8b08
+ add bx, 00240h ; 81 c3 40 02 ; 0xf8b0b
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8b0f ahci.c:414
+ add ax, 0026ah ; 05 6a 02 ; 0xf8b12
+ mov dx, cx ; 89 ca ; 0xf8b15
+ call 09edch ; e8 c2 13 ; 0xf8b17
+ mov es, cx ; 8e c1 ; 0xf8b1a ahci.c:415
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf8b1c
+ test al, al ; 84 c0 ; 0xf8b20
+ je short 08b29h ; 74 05 ; 0xf8b22
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8b24
+ jmp short 08b2bh ; eb 02 ; 0xf8b27
+ xor ah, ah ; 30 e4 ; 0xf8b29
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b2b ahci.c:416
+ pop di ; 5f ; 0xf8b2e
+ pop si ; 5e ; 0xf8b2f
+ pop cx ; 59 ; 0xf8b30
+ pop bp ; 5d ; 0xf8b31
+ retn ; c3 ; 0xf8b32
+ ; disGetNextSymbol 0xf8b33 LB 0x1512 -> off=0x0 cb=000000000000017f uValue=00000000000f7533 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf8b33 LB 0x17f
+ push bp ; 55 ; 0xf8b33 ahci.c:421
+ mov bp, sp ; 89 e5 ; 0xf8b34
+ push bx ; 53 ; 0xf8b36
+ push cx ; 51 ; 0xf8b37
+ push si ; 56 ; 0xf8b38
+ push di ; 57 ; 0xf8b39
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8b3a
+ mov di, ax ; 89 c7 ; 0xf8b3d
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf8b3f
+ mov es, dx ; 8e c2 ; 0xf8b42 ahci.c:426
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8b44
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8b49 ahci.c:427
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf8b4e
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf8b51 ahci.c:429
+ je near 08ca9h ; 0f 84 52 01 ; 0xf8b53
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8b57 ahci.c:432
+ sal ax, 007h ; c1 e0 07 ; 0xf8b5b
+ add ax, 00118h ; 05 18 01 ; 0xf8b5e
+ xor cx, cx ; 31 c9 ; 0xf8b61 ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf8b63
+ xchg cx, ax ; 91 ; 0xf8b65
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b66
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b6a
+ out DX, eax ; 66 ef ; 0xf8b6c
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8b6e ahci.c:262
+ mov dx, bx ; 89 da ; 0xf8b71
+ in eax, DX ; 66 ed ; 0xf8b73
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8b75
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8b77
+ xchg dx, ax ; 92 ; 0xf8b7b
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8b7c
+ mov cx, dx ; 89 d1 ; 0xf8b7e
+ mov dx, bx ; 89 da ; 0xf8b80
+ xchg cx, ax ; 91 ; 0xf8b82
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b83
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b87
+ out DX, eax ; 66 ef ; 0xf8b89
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8b8b ahci.c:435
+ sal ax, 007h ; c1 e0 07 ; 0xf8b8f
+ add ax, 00118h ; 05 18 01 ; 0xf8b92
+ xor cx, cx ; 31 c9 ; 0xf8b95 ahci.c:271
+ mov dx, si ; 89 f2 ; 0xf8b97
+ xchg cx, ax ; 91 ; 0xf8b99
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b9a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b9e
+ out DX, eax ; 66 ef ; 0xf8ba0
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf8ba2 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8ba5
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8ba7
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8ba9
+ xchg dx, ax ; 92 ; 0xf8bad
+ test ax, 0c011h ; a9 11 c0 ; 0xf8bae
+ je short 08bb7h ; 74 04 ; 0xf8bb1
+ mov AL, strict byte 001h ; b0 01 ; 0xf8bb3
+ jmp short 08bb9h ; eb 02 ; 0xf8bb5
+ xor al, al ; 30 c0 ; 0xf8bb7
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8bb9 ahci.c:273
+ je short 08b8bh ; 74 ce ; 0xf8bbb
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8bbd ahci.c:446
+ xor bx, bx ; 31 db ; 0xf8bc0
+ mov ax, di ; 89 f8 ; 0xf8bc2
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8bc4
+ call 09fb0h ; e8 e6 13 ; 0xf8bc7
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf8bca ahci.c:447
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8bce
+ xor bx, bx ; 31 db ; 0xf8bd1
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8bd3
+ call 09fb0h ; e8 d7 13 ; 0xf8bd6
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf8bd9 ahci.c:448
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf8bdd
+ xor bx, bx ; 31 db ; 0xf8be0
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8be2
+ call 09fb0h ; e8 c8 13 ; 0xf8be5
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf8be8 ahci.c:450
+ sal ax, 007h ; c1 e0 07 ; 0xf8bec
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf8bef
+ add ax, 00108h ; 05 08 01 ; 0xf8bf2
+ cwd ; 99 ; 0xf8bf5
+ mov cx, dx ; 89 d1 ; 0xf8bf6
+ mov dx, si ; 89 f2 ; 0xf8bf8
+ xchg cx, ax ; 91 ; 0xf8bfa
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bfb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8bff
+ out DX, eax ; 66 ef ; 0xf8c01
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8c03
+ xor ax, ax ; 31 c0 ; 0xf8c06
+ xor cx, cx ; 31 c9 ; 0xf8c08
+ mov dx, bx ; 89 da ; 0xf8c0a
+ xchg cx, ax ; 91 ; 0xf8c0c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c0d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c11
+ out DX, eax ; 66 ef ; 0xf8c13
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c15 ahci.c:451
+ add ax, 0010ch ; 05 0c 01 ; 0xf8c18
+ cwd ; 99 ; 0xf8c1b
+ mov cx, dx ; 89 d1 ; 0xf8c1c
+ mov dx, si ; 89 f2 ; 0xf8c1e
+ xchg cx, ax ; 91 ; 0xf8c20
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c21
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c25
+ out DX, eax ; 66 ef ; 0xf8c27
+ xor ax, ax ; 31 c0 ; 0xf8c29
+ xor cx, cx ; 31 c9 ; 0xf8c2b
+ mov dx, bx ; 89 da ; 0xf8c2d
+ xchg cx, ax ; 91 ; 0xf8c2f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c30
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c34
+ out DX, eax ; 66 ef ; 0xf8c36
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c38 ahci.c:453
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf8c3b
+ cwd ; 99 ; 0xf8c3d
+ mov cx, dx ; 89 d1 ; 0xf8c3e
+ mov dx, si ; 89 f2 ; 0xf8c40
+ xchg cx, ax ; 91 ; 0xf8c42
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c43
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c47
+ out DX, eax ; 66 ef ; 0xf8c49
+ xor ax, ax ; 31 c0 ; 0xf8c4b
+ xor cx, cx ; 31 c9 ; 0xf8c4d
+ mov dx, bx ; 89 da ; 0xf8c4f
+ xchg cx, ax ; 91 ; 0xf8c51
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c52
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c56
+ out DX, eax ; 66 ef ; 0xf8c58
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c5a ahci.c:454
+ add ax, 00104h ; 05 04 01 ; 0xf8c5d
+ cwd ; 99 ; 0xf8c60
+ mov cx, dx ; 89 d1 ; 0xf8c61
+ mov dx, si ; 89 f2 ; 0xf8c63
+ xchg cx, ax ; 91 ; 0xf8c65
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c66
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c6a
+ out DX, eax ; 66 ef ; 0xf8c6c
+ xor ax, ax ; 31 c0 ; 0xf8c6e
+ xor cx, cx ; 31 c9 ; 0xf8c70
+ mov dx, bx ; 89 da ; 0xf8c72
+ xchg cx, ax ; 91 ; 0xf8c74
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c75
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c79
+ out DX, eax ; 66 ef ; 0xf8c7b
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf8c7d ahci.c:457
+ add ax, 00114h ; 05 14 01 ; 0xf8c80
+ cwd ; 99 ; 0xf8c83
+ mov cx, dx ; 89 d1 ; 0xf8c84
+ mov dx, si ; 89 f2 ; 0xf8c86
+ xchg cx, ax ; 91 ; 0xf8c88
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c89
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c8d
+ out DX, eax ; 66 ef ; 0xf8c8f
+ xor ax, ax ; 31 c0 ; 0xf8c91
+ xor cx, cx ; 31 c9 ; 0xf8c93
+ mov dx, bx ; 89 da ; 0xf8c95
+ xchg cx, ax ; 91 ; 0xf8c97
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c98
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8c9c
+ out DX, eax ; 66 ef ; 0xf8c9e
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8ca0 ahci.c:459
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf8ca3
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf8ca9 ahci.c:461
+ pop di ; 5f ; 0xf8cac
+ pop si ; 5e ; 0xf8cad
+ pop cx ; 59 ; 0xf8cae
+ pop bx ; 5b ; 0xf8caf
+ pop bp ; 5d ; 0xf8cb0
+ retn ; c3 ; 0xf8cb1
+ ; disGetNextSymbol 0xf8cb2 LB 0x1393 -> off=0x0 cb=000000000000024a uValue=00000000000f76b2 'ahci_port_init'
+ahci_port_init: ; 0xf8cb2 LB 0x24a
+ push bp ; 55 ; 0xf8cb2 ahci.c:467
+ mov bp, sp ; 89 e5 ; 0xf8cb3
+ push cx ; 51 ; 0xf8cb5
+ push si ; 56 ; 0xf8cb6
+ push di ; 57 ; 0xf8cb7
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8cb8
+ mov si, ax ; 89 c6 ; 0xf8cbb
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8cbd
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8cc0
+ call 08b33h ; e8 6d fe ; 0xf8cc3 ahci.c:470
+ movzx ax, bl ; 0f b6 c3 ; 0xf8cc6 ahci.c:473
+ sal ax, 007h ; c1 e0 07 ; 0xf8cc9
+ add ax, 00118h ; 05 18 01 ; 0xf8ccc
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ccf ahci.c:259
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8cd2
+ xor cx, cx ; 31 c9 ; 0xf8cd7 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf8cd9
+ xchg cx, ax ; 91 ; 0xf8cdb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cdc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ce0
+ out DX, eax ; 66 ef ; 0xf8ce2
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8ce4 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf8ce7
+ in eax, DX ; 66 ed ; 0xf8ce9
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8ceb
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8ced
+ xchg dx, ax ; 92 ; 0xf8cf1
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8cf2
+ mov cx, dx ; 89 d1 ; 0xf8cf4
+ mov dx, bx ; 89 da ; 0xf8cf6
+ xchg cx, ax ; 91 ; 0xf8cf8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8cf9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8cfd
+ out DX, eax ; 66 ef ; 0xf8cff
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf8d01 ahci.c:476
+ sal ax, 007h ; c1 e0 07 ; 0xf8d05
+ add ax, 00118h ; 05 18 01 ; 0xf8d08
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d0b ahci.c:269
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8d0e
+ xor cx, cx ; 31 c9 ; 0xf8d13 ahci.c:271
+ mov dx, bx ; 89 da ; 0xf8d15
+ xchg cx, ax ; 91 ; 0xf8d17
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d18
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8d1c
+ out DX, eax ; 66 ef ; 0xf8d1e
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8d20 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8d23
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8d25
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8d27
+ xchg dx, ax ; 92 ; 0xf8d2b
+ test ax, 0c011h ; a9 11 c0 ; 0xf8d2c
+ je short 08d35h ; 74 04 ; 0xf8d2f
+ mov AL, strict byte 001h ; b0 01 ; 0xf8d31
+ jmp short 08d37h ; eb 02 ; 0xf8d33
+ xor al, al ; 30 c0 ; 0xf8d35
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf8d37 ahci.c:273
+ je short 08d01h ; 74 c6 ; 0xf8d39
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8d3b ahci.c:487
+ xor bx, bx ; 31 db ; 0xf8d3e
+ mov ax, si ; 89 f0 ; 0xf8d40
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d42
+ call 09fb0h ; e8 68 12 ; 0xf8d45
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf8d48 ahci.c:488
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8d4c
+ xor bx, bx ; 31 db ; 0xf8d4f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d51
+ call 09fb0h ; e8 59 12 ; 0xf8d54
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf8d57 ahci.c:489
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf8d5b
+ xor bx, bx ; 31 db ; 0xf8d5e
+ mov ax, di ; 89 f8 ; 0xf8d60
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d62
+ call 09fb0h ; e8 48 12 ; 0xf8d65
+ movzx bx, byte [bp-008h] ; 0f b6 5e f8 ; 0xf8d68 ahci.c:493
+ sal bx, 007h ; c1 e3 07 ; 0xf8d6c
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf8d6f
+ cwd ; 99 ; 0xf8d73
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d74
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf8d77
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf8d7c
+ mov cx, dx ; 89 d1 ; 0xf8d7f
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf8d81
+ xchg cx, ax ; 91 ; 0xf8d84
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8d85
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8d89
+ out DX, eax ; 66 ef ; 0xf8d8b
+ mov ax, di ; 89 f8 ; 0xf8d8d
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d8f
+ call 08768h ; e8 d3 f9 ; 0xf8d92
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d95
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8d98
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8d9d
+ mov cx, dx ; 89 d1 ; 0xf8da0
+ mov dx, di ; 89 fa ; 0xf8da2
+ xchg cx, ax ; 91 ; 0xf8da4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8da5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8da9
+ out DX, eax ; 66 ef ; 0xf8dab
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8dad ahci.c:494
+ cwd ; 99 ; 0xf8db1
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8db2
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8db5
+ mov cx, dx ; 89 d1 ; 0xf8dba
+ mov dx, di ; 89 fa ; 0xf8dbc
+ xchg cx, ax ; 91 ; 0xf8dbe
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8dbf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8dc3
+ out DX, eax ; 66 ef ; 0xf8dc5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8dc7
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8dca
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8dcf
+ xor ax, ax ; 31 c0 ; 0xf8dd2
+ xor cx, cx ; 31 c9 ; 0xf8dd4
+ xchg cx, ax ; 91 ; 0xf8dd6
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8dd7
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ddb
+ out DX, eax ; 66 ef ; 0xf8ddd
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8ddf ahci.c:497
+ cwd ; 99 ; 0xf8de3
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8de4
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8de7
+ mov cx, dx ; 89 d1 ; 0xf8dec
+ mov dx, di ; 89 fa ; 0xf8dee
+ xchg cx, ax ; 91 ; 0xf8df0
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8df1
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8df5
+ out DX, eax ; 66 ef ; 0xf8df7
+ mov ax, si ; 89 f0 ; 0xf8df9
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8dfb
+ call 08768h ; e8 67 f9 ; 0xf8dfe
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e01
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e04
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8e09
+ mov cx, dx ; 89 d1 ; 0xf8e0c
+ mov dx, di ; 89 fa ; 0xf8e0e
+ xchg cx, ax ; 91 ; 0xf8e10
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e11
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e15
+ out DX, eax ; 66 ef ; 0xf8e17
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8e19 ahci.c:498
+ cwd ; 99 ; 0xf8e1d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e1e
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e21
+ mov cx, dx ; 89 d1 ; 0xf8e26
+ mov dx, di ; 89 fa ; 0xf8e28
+ xchg cx, ax ; 91 ; 0xf8e2a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e2b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e2f
+ out DX, eax ; 66 ef ; 0xf8e31
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e33
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e36
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e3b
+ xor ax, ax ; 31 c0 ; 0xf8e3e
+ xor cx, cx ; 31 c9 ; 0xf8e40
+ xchg cx, ax ; 91 ; 0xf8e42
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e43
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e47
+ out DX, eax ; 66 ef ; 0xf8e49
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8e4b ahci.c:501
+ cwd ; 99 ; 0xf8e4f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e50
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e53
+ mov cx, dx ; 89 d1 ; 0xf8e58
+ mov dx, di ; 89 fa ; 0xf8e5a
+ xchg cx, ax ; 91 ; 0xf8e5c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e5d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e61
+ out DX, eax ; 66 ef ; 0xf8e63
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e65
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e68
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e6d
+ xor ax, ax ; 31 c0 ; 0xf8e70
+ xor cx, cx ; 31 c9 ; 0xf8e72
+ xchg cx, ax ; 91 ; 0xf8e74
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e75
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e79
+ out DX, eax ; 66 ef ; 0xf8e7b
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8e7d ahci.c:502
+ cwd ; 99 ; 0xf8e81
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e82
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8e85
+ mov cx, dx ; 89 d1 ; 0xf8e8a
+ mov dx, di ; 89 fa ; 0xf8e8c
+ xchg cx, ax ; 91 ; 0xf8e8e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e8f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e93
+ out DX, eax ; 66 ef ; 0xf8e95
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8e97
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e9a
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e9f
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ea2
+ mov cx, ax ; 89 c1 ; 0xf8ea5
+ xchg cx, ax ; 91 ; 0xf8ea7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ea8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8eac
+ out DX, eax ; 66 ef ; 0xf8eae
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8eb0 ahci.c:504
+ cwd ; 99 ; 0xf8eb4
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8eb5
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8eb8
+ mov cx, dx ; 89 d1 ; 0xf8ebd
+ mov dx, bx ; 89 da ; 0xf8ebf
+ xchg cx, ax ; 91 ; 0xf8ec1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ec2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ec6
+ out DX, eax ; 66 ef ; 0xf8ec8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8eca
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ecd
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ed2
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8ed5
+ mov cx, ax ; 89 c1 ; 0xf8ed8
+ xchg cx, ax ; 91 ; 0xf8eda
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8edb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8edf
+ out DX, eax ; 66 ef ; 0xf8ee1
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8ee3 ahci.c:506
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8ee6
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8ee9
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8eee ahci.c:507
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8ef4 ahci.c:508
+ pop di ; 5f ; 0xf8ef7
+ pop si ; 5e ; 0xf8ef8
+ pop cx ; 59 ; 0xf8ef9
+ pop bp ; 5d ; 0xf8efa
+ retn ; c3 ; 0xf8efb
+ ; disGetNextSymbol 0xf8efc LB 0x1149 -> off=0x0 cb=00000000000000a6 uValue=00000000000f78fc 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8efc LB 0xa6
+ push bp ; 55 ; 0xf8efc ahci.c:517
+ mov bp, sp ; 89 e5 ; 0xf8efd
+ push si ; 56 ; 0xf8eff
+ push di ; 57 ; 0xf8f00
+ push ax ; 50 ; 0xf8f01
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8f02 ahci.c:522
+ movzx di, byte [es:di+00ch] ; 26 0f b6 7d 0c ; 0xf8f05
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8f0a
+ cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8f0d ahci.c:523
+ jbe short 08f21h ; 76 0f ; 0xf8f10
+ push di ; 57 ; 0xf8f12 ahci.c:524
+ push 00c74h ; 68 74 0c ; 0xf8f13
+ push 00c86h ; 68 86 0c ; 0xf8f16
+ push strict byte 00007h ; 6a 07 ; 0xf8f19
+ call 01a14h ; e8 f6 8a ; 0xf8f1b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8f1e
+ xor bx, bx ; 31 db ; 0xf8f21 ahci.c:530
+ les si, [bp+004h] ; c4 76 04 ; 0xf8f23
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8f26
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f2b ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8f2f
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8f31
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8f36 ahci.c:531
+ add di, si ; 01 f7 ; 0xf8f39
+ movzx bx, byte [es:di+0022dh] ; 26 0f b6 9d 2d 02 ; 0xf8f3b
+ mov di, si ; 89 f7 ; 0xf8f41
+ mov dx, word [es:di+00232h] ; 26 8b 95 32 02 ; 0xf8f43
+ xor ax, ax ; 31 c0 ; 0xf8f48
+ call 08cb2h ; e8 65 fd ; 0xf8f4a
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf8f4d ahci.c:532
+ mov ax, si ; 89 f0 ; 0xf8f50
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8f52
+ call 088d1h ; e8 79 f9 ; 0xf8f55
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf8f58
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8f5b ahci.c:534
+ mov bx, si ; 89 f3 ; 0xf8f5e
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8f60
+ mov word [es:bx+018h], ax ; 26 89 47 18 ; 0xf8f64
+ mov cx, ax ; 89 c1 ; 0xf8f68 ahci.c:536
+ sal cx, 009h ; c1 e1 09 ; 0xf8f6a
+ shr cx, 1 ; d1 e9 ; 0xf8f6d
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8f6f
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf8f73
+ mov si, di ; 89 fe ; 0xf8f77
+ mov dx, ax ; 89 c2 ; 0xf8f79
+ mov es, ax ; 8e c0 ; 0xf8f7b
+ push DS ; 1e ; 0xf8f7d
+ mov ds, dx ; 8e da ; 0xf8f7e
+ rep movsw ; f3 a5 ; 0xf8f80
+ pop DS ; 1f ; 0xf8f82
+ xor bx, bx ; 31 db ; 0xf8f83 ahci.c:538
+ les di, [bp+004h] ; c4 7e 04 ; 0xf8f85
+ mov es, [es:di+00232h] ; 26 8e 85 32 02 ; 0xf8f88
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8f8d ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f92
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf8f96 ahci.c:540
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8f99
+ pop di ; 5f ; 0xf8f9c
+ pop si ; 5e ; 0xf8f9d
+ pop bp ; 5d ; 0xf8f9e
+ retn 00004h ; c2 04 00 ; 0xf8f9f
+ ; disGetNextSymbol 0xf8fa2 LB 0x10a3 -> off=0x0 cb=0000000000000084 uValue=00000000000f79a2 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf8fa2 LB 0x84
+ push bp ; 55 ; 0xf8fa2 ahci.c:549
+ mov bp, sp ; 89 e5 ; 0xf8fa3
+ push si ; 56 ; 0xf8fa5
+ push di ; 57 ; 0xf8fa6
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8fa7
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8faa
+ mov es, cx ; 8e c1 ; 0xf8fad ahci.c:554
+ movzx dx, byte [es:si+00ch] ; 26 0f b6 54 0c ; 0xf8faf
+ sub dx, strict byte 0000ch ; 83 ea 0c ; 0xf8fb4
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf8fb7 ahci.c:555
+ jbe short 08fcbh ; 76 0f ; 0xf8fba
+ push dx ; 52 ; 0xf8fbc ahci.c:556
+ push 00ca5h ; 68 a5 0c ; 0xf8fbd
+ push 00c86h ; 68 86 0c ; 0xf8fc0
+ push strict byte 00007h ; 6a 07 ; 0xf8fc3
+ call 01a14h ; e8 4c 8a ; 0xf8fc5
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8fc8
+ xor bx, bx ; 31 db ; 0xf8fcb ahci.c:562
+ mov es, cx ; 8e c1 ; 0xf8fcd
+ mov di, word [es:si+00232h] ; 26 8b bc 32 02 ; 0xf8fcf
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8fd4 ahci.c:239
+ mov es, di ; 8e c7 ; 0xf8fd8
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8fda
+ mov es, cx ; 8e c1 ; 0xf8fdf ahci.c:563
+ mov bx, si ; 89 f3 ; 0xf8fe1
+ add bx, dx ; 01 d3 ; 0xf8fe3
+ movzx bx, byte [es:bx+0022dh] ; 26 0f b6 9f 2d 02 ; 0xf8fe5
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8feb
+ xor ax, ax ; 31 c0 ; 0xf8ff0
+ call 08cb2h ; e8 bd fc ; 0xf8ff2
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8ff5 ahci.c:564
+ mov ax, si ; 89 f0 ; 0xf8ff8
+ mov dx, cx ; 89 ca ; 0xf8ffa
+ call 088d1h ; e8 d2 f8 ; 0xf8ffc
+ mov dx, ax ; 89 c2 ; 0xf8fff
+ mov es, cx ; 8e c1 ; 0xf9001 ahci.c:566
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf9003
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf9007
+ xor bx, bx ; 31 db ; 0xf900b ahci.c:567
+ mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf900d
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf9012 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9017
+ mov ax, dx ; 89 d0 ; 0xf901b ahci.c:569
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf901d
+ pop di ; 5f ; 0xf9020
+ pop si ; 5e ; 0xf9021
+ pop bp ; 5d ; 0xf9022
+ retn 00004h ; c2 04 00 ; 0xf9023
+ ; disGetNextSymbol 0xf9026 LB 0x101f -> off=0x0 cb=0000000000000185 uValue=00000000000f7a26 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf9026 LB 0x185
+ push bp ; 55 ; 0xf9026 ahci.c:576
+ mov bp, sp ; 89 e5 ; 0xf9027
+ push si ; 56 ; 0xf9029
+ push di ; 57 ; 0xf902a
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf902b
+ push ax ; 50 ; 0xf902e
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf902f
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf9032
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf9035
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf9038 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf903b
+ mov es, ax ; 8e c0 ; 0xf903e
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf9040
+ mov si, 00122h ; be 22 01 ; 0xf9043 ahci.c:49
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf9046
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf9049 ahci.c:583
+ jne short 0906eh ; 75 1f ; 0xf904d
+ mov bx, 00db2h ; bb b2 0d ; 0xf904f ahci.c:584
+ mov cx, ds ; 8c d9 ; 0xf9052
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9054
+ call 019d3h ; e8 79 89 ; 0xf9057
+ push 00cb8h ; 68 b8 0c ; 0xf905a
+ push 00cc8h ; 68 c8 0c ; 0xf905d
+ push strict byte 00004h ; 6a 04 ; 0xf9060
+ call 01a14h ; e8 af 89 ; 0xf9062
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf9065
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9068 ahci.c:585
+ jmp near 091a2h ; e9 34 01 ; 0xf906b
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf906e ahci.c:589
+ jne short 09068h ; 75 f4 ; 0xf9072
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9074 ahci.c:603
+ mov di, word [bp+008h] ; 8b 7e 08 ; 0xf9077
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf907a
+ sal bx, 1 ; d1 e3 ; 0xf907d
+ rcl di, 1 ; d1 d7 ; 0xf907f
+ loop 0907dh ; e2 fa ; 0xf9081
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf9083
+ mov word [es:si], bx ; 26 89 1c ; 0xf9086
+ mov word [es:si+002h], di ; 26 89 7c 02 ; 0xf9089
+ db 066h, 026h, 0c7h, 044h, 004h, 000h, 000h, 000h, 000h
+ ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00; 0xf908d
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf9096 ahci.c:604
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf9099
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf909d
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf90a0
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf90a4 ahci.c:605
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf90a8
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf90ab
+ xor cx, cx ; 31 c9 ; 0xf90ae
+ call 09f50h ; e8 9d 0e ; 0xf90b0
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf90b3
+ xor di, di ; 31 ff ; 0xf90b7 ahci.c:608
+ mov ax, word [es:si+00232h] ; 26 8b 84 32 02 ; 0xf90b9
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf90be
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf90c1
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf90c4
+ sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf90c7 ahci.c:595
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf90cb ahci.c:239
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf90cf
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf90d2
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf90d7 ahci.c:611
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf90da
+ add bx, si ; 01 f3 ; 0xf90dd
+ movzx bx, byte [es:bx+0022dh] ; 26 0f b6 9f 2d 02 ; 0xf90df
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf90e5
+ xor ax, ax ; 31 c0 ; 0xf90ea
+ call 08cb2h ; e8 c3 fb ; 0xf90ec
+ movzx ax, byte [bp-006h] ; 0f b6 46 fa ; 0xf90ef ahci.c:614
+ push ax ; 50 ; 0xf90f3
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf90f4
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf90f7
+ mov ax, 000c0h ; b8 c0 00 ; 0xf90fa
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf90fd
+ call 09fc0h ; e8 bd 0e ; 0xf9100
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf9103 ahci.c:618
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf9106
+ mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf910a ahci.c:619
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf910e
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf9112 ahci.c:622
+ test ax, ax ; 85 c0 ; 0xf9116
+ je short 09141h ; 74 27 ; 0xf9118
+ dec ax ; 48 ; 0xf911a ahci.c:623
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf911b
+ mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf911e
+ mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf9123
+ mov dx, word [es:di+00264h] ; 26 8b 95 64 02 ; 0xf9128 ahci.c:624
+ mov ax, word [es:di+00266h] ; 26 8b 85 66 02 ; 0xf912d
+ mov word [es:di+00100h], dx ; 26 89 95 00 01 ; 0xf9132
+ mov word [es:di+00102h], ax ; 26 89 85 02 01 ; 0xf9137
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf913c ahci.c:625
+ mov bx, 000a0h ; bb a0 00 ; 0xf9141 ahci.c:628
+ mov ax, si ; 89 f0 ; 0xf9144
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf9146
+ call 088d1h ; e8 85 f7 ; 0xf9149
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf914c ahci.c:630
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf914f
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf9153
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf9157
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf915a
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf915e
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf9162 ahci.c:632
+ mov cx, dx ; 89 d1 ; 0xf9166
+ shr cx, 1 ; d1 e9 ; 0xf9168
+ rcr bx, 1 ; d1 db ; 0xf916a
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf916c
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf9170
+ mov cx, bx ; 89 d9 ; 0xf9174
+ mov si, di ; 89 fe ; 0xf9176
+ mov dx, ax ; 89 c2 ; 0xf9178
+ mov es, ax ; 8e c0 ; 0xf917a
+ push DS ; 1e ; 0xf917c
+ mov ds, dx ; 8e da ; 0xf917d
+ rep movsw ; f3 a5 ; 0xf917f
+ pop DS ; 1f ; 0xf9181
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf9182 ahci.c:244
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf9185
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf918a
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf918e ahci.c:636
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf9191
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf9195
+ jne short 091a0h ; 75 05 ; 0xf9199
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf919b
+ jmp short 091a2h ; eb 02 ; 0xf919e
+ xor ax, ax ; 31 c0 ; 0xf91a0
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf91a2 ahci.c:637
+ pop di ; 5f ; 0xf91a5
+ pop si ; 5e ; 0xf91a6
+ pop bp ; 5d ; 0xf91a7
+ retn 0000ch ; c2 0c 00 ; 0xf91a8
+ ; disGetNextSymbol 0xf91ab LB 0xe9a -> off=0x0 cb=0000000000000005 uValue=00000000000f7bab 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf91ab LB 0x5
+ push bp ; 55 ; 0xf91ab ahci.c:640
+ mov bp, sp ; 89 e5 ; 0xf91ac
+ pop bp ; 5d ; 0xf91ae ahci.c:642
+ retn ; c3 ; 0xf91af
+ ; disGetNextSymbol 0xf91b0 LB 0xe95 -> off=0x0 cb=00000000000004c9 uValue=00000000000f7bb0 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf91b0 LB 0x4c9
+ push bp ; 55 ; 0xf91b0 ahci.c:644
+ mov bp, sp ; 89 e5 ; 0xf91b1
+ push cx ; 51 ; 0xf91b3
+ push si ; 56 ; 0xf91b4
+ push di ; 57 ; 0xf91b5
+ sub sp, 0022ch ; 81 ec 2c 02 ; 0xf91b6
+ mov si, ax ; 89 c6 ; 0xf91ba
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf91bc
+ mov byte [bp-00eh], bl ; 88 5e f2 ; 0xf91bf
+ mov word [bp-024h], strict word 00000h ; c7 46 dc 00 00 ; 0xf91c2 ahci.c:650
+ movzx di, bl ; 0f b6 fb ; 0xf91c7 ahci.c:652
+ mov bx, di ; 89 fb ; 0xf91ca
+ call 08cb2h ; e8 e3 fa ; 0xf91cc
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf91cf ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf91d2
+ mov es, ax ; 8e c0 ; 0xf91d5
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf91d7
+ mov word [bp-02ch], 00122h ; c7 46 d4 22 01 ; 0xf91da ahci.c:49
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf91df
+ mov ax, di ; 89 f8 ; 0xf91e2 ahci.c:657
+ sal ax, 007h ; c1 e0 07 ; 0xf91e4
+ add ax, 0012ch ; 05 2c 01 ; 0xf91e7
+ cwd ; 99 ; 0xf91ea
+ mov bx, ax ; 89 c3 ; 0xf91eb
+ mov di, dx ; 89 d7 ; 0xf91ed
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf91ef
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf91f2
+ mov cx, di ; 89 f9 ; 0xf91f7
+ xchg cx, ax ; 91 ; 0xf91f9
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf91fa
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf91fe
+ out DX, eax ; 66 ef ; 0xf9200
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9202
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9205
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf920a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf920d
+ xor cx, cx ; 31 c9 ; 0xf9210
+ xchg cx, ax ; 91 ; 0xf9212
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9213
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9217
+ out DX, eax ; 66 ef ; 0xf9219
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf921b ahci.c:662
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf921e
+ mov ax, bx ; 89 d8 ; 0xf9223
+ mov cx, di ; 89 f9 ; 0xf9225
+ xchg cx, ax ; 91 ; 0xf9227
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9228
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf922c
+ out DX, eax ; 66 ef ; 0xf922e
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9230
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9233
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf9238
+ xor ax, ax ; 31 c0 ; 0xf923b
+ xor cx, cx ; 31 c9 ; 0xf923d
+ xchg cx, ax ; 91 ; 0xf923f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9240
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9244
+ out DX, eax ; 66 ef ; 0xf9246
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf9248 ahci.c:671
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf924b
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf924e
+ mov es, ax ; 8e c0 ; 0xf9251 ahci.c:672
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9253
+ add ax, strict word 00003h ; 05 03 00 ; 0xf9256
+ mov word [bp-026h], ax ; 89 46 da ; 0xf9259
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf925c
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf9260
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf9263
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf9266 ahci.c:674
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf9269
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf926d
+ jc short 09283h ; 72 11 ; 0xf9270
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf9272
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf9276
+ jne short 092ceh ; 75 53 ; 0xf9279
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf927b
+ cmp ax, word [bp-026h] ; 3b 46 da ; 0xf927e
+ jnc short 092ceh ; 73 4b ; 0xf9281
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf9283 ahci.c:677
+ sal ax, 007h ; c1 e0 07 ; 0xf9287
+ add ax, 00128h ; 05 28 01 ; 0xf928a
+ cwd ; 99 ; 0xf928d
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf928e
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9291
+ mov cx, dx ; 89 d1 ; 0xf9296
+ mov dx, bx ; 89 da ; 0xf9298
+ xchg cx, ax ; 91 ; 0xf929a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf929b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf929f
+ out DX, eax ; 66 ef ; 0xf92a1
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf92a3
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf92a6
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf92ab
+ in eax, DX ; 66 ed ; 0xf92ae
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf92b0
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf92b2
+ xchg dx, ax ; 92 ; 0xf92b6
+ mov word [bp-022h], ax ; 89 46 de ; 0xf92b7
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xf92ba
+ push strict byte 00000h ; 6a 00 ; 0xf92bd ahci.c:678
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf92bf
+ xor cx, cx ; 31 c9 ; 0xf92c2
+ call 0874dh ; e8 86 f4 ; 0xf92c4
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf92c7
+ jne short 09266h ; 75 9a ; 0xf92ca
+ jmp short 092d6h ; eb 08 ; 0xf92cc ahci.c:680
+ cmp word [bp-024h], strict byte 00000h ; 83 7e dc 00 ; 0xf92ce ahci.c:685
+ je near 09671h ; 0f 84 9b 03 ; 0xf92d2
+ push strict byte 00000h ; 6a 00 ; 0xf92d6 ahci.c:690
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf92d8
+ xor cx, cx ; 31 c9 ; 0xf92db
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf92dd
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf92e0
+ call 0874dh ; e8 67 f4 ; 0xf92e3
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf92e6
+ jne near 09671h ; 0f 85 84 03 ; 0xf92e9
+ movzx di, byte [bp-00eh] ; 0f b6 7e f2 ; 0xf92ed ahci.c:698
+ sal di, 007h ; c1 e7 07 ; 0xf92f1
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf92f4
+ cwd ; 99 ; 0xf92f8
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf92f9
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf92fc
+ mov cx, dx ; 89 d1 ; 0xf9301
+ mov dx, bx ; 89 da ; 0xf9303
+ xchg cx, ax ; 91 ; 0xf9305
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9306
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf930a
+ out DX, eax ; 66 ef ; 0xf930c
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf930e
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf9311
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf9316
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9319
+ mov cx, ax ; 89 c1 ; 0xf931c
+ xchg cx, ax ; 91 ; 0xf931e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf931f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9323
+ out DX, eax ; 66 ef ; 0xf9325
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9327 ahci.c:700
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf932a
+ mov al, byte [es:bx+00231h] ; 26 8a 87 31 02 ; 0xf932d
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9332
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf9335 ahci.c:705
+ jnc near 09671h ; 0f 83 36 03 ; 0xf9337
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf933b ahci.c:708
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf933f ahci.c:250
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9342
+ xor cx, cx ; 31 c9 ; 0xf9347 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf9349
+ xchg cx, ax ; 91 ; 0xf934b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf934c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9350
+ out DX, eax ; 66 ef ; 0xf9352
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf9354 ahci.c:253
+ mov dx, bx ; 89 da ; 0xf9357
+ in eax, DX ; 66 ed ; 0xf9359
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf935b
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf935d
+ xchg dx, ax ; 92 ; 0xf9361
+ or AL, strict byte 010h ; 0c 10 ; 0xf9362
+ mov cx, dx ; 89 d1 ; 0xf9364
+ mov dx, bx ; 89 da ; 0xf9366
+ xchg cx, ax ; 91 ; 0xf9368
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9369
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf936d
+ out DX, eax ; 66 ef ; 0xf936f
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf9371 ahci.c:712
+ cwd ; 99 ; 0xf9375
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf9376
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf9379
+ mov cx, dx ; 89 d1 ; 0xf937e
+ mov dx, bx ; 89 da ; 0xf9380
+ xchg cx, ax ; 91 ; 0xf9382
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9383
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9387
+ out DX, eax ; 66 ef ; 0xf9389
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf938b
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf938e
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf9393
+ in eax, DX ; 66 ed ; 0xf9396
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9398
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf939a
+ xchg dx, ax ; 92 ; 0xf939e
+ mov si, ax ; 89 c6 ; 0xf939f
+ mov ax, dx ; 89 d0 ; 0xf93a1
+ mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf93a3
+ add dl, 00ch ; 80 c2 0c ; 0xf93a6
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf93a9
+ test ax, ax ; 85 c0 ; 0xf93ac ahci.c:713
+ jne near 095b9h ; 0f 85 07 02 ; 0xf93ae
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf93b2
+ jne near 095b9h ; 0f 85 ff 01 ; 0xf93b6
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf93ba ahci.c:723
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf93bd
+ db 066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00; 0xf93c0
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf93c9
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf93d1 ahci.c:724
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf93d5
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf93d9
+ db 066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 002h
+ ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02; 0xf93dd ahci.c:725
+ mov bx, 000ech ; bb ec 00 ; 0xf93e6 ahci.c:727
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf93e9
+ mov dx, es ; 8c c2 ; 0xf93ec
+ call 088d1h ; e8 e0 f4 ; 0xf93ee
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf93f1 ahci.c:730
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf93f4
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf93f7 ahci.c:732
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf93fc
+ xor ah, ah ; 30 e4 ; 0xf93ff
+ mov dx, word [bp-00230h] ; 8b 96 d0 fd ; 0xf9401 ahci.c:733
+ mov word [bp-01eh], dx ; 89 56 e2 ; 0xf9405
+ mov dx, word [bp-0022ch] ; 8b 96 d4 fd ; 0xf9408 ahci.c:734
+ mov word [bp-01ah], dx ; 89 56 e6 ; 0xf940c
+ mov dx, word [bp-00226h] ; 8b 96 da fd ; 0xf940f ahci.c:735
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf9413
+ mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf9416 ahci.c:736
+ mov si, word [bp-001b8h] ; 8b b6 48 fe ; 0xf941a
+ mov dword [bp-018h], strict dword 000000000h ; 66 c7 46 e8 00 00 00 00 ; 0xf941e
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf9426 ahci.c:738
+ jne short 09447h ; 75 1b ; 0xf942a
+ cmp di, strict byte 0ffffh ; 83 ff ff ; 0xf942c
+ jne short 09447h ; 75 16 ; 0xf942f
+ mov dx, word [bp-00164h] ; 8b 96 9c fe ; 0xf9431 ahci.c:739
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf9435
+ mov dx, word [bp-00166h] ; 8b 96 9a fe ; 0xf9438
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf943c
+ mov si, word [bp-00168h] ; 8b b6 98 fe ; 0xf943f
+ mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf9443
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf9447 ahci.c:743
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf944b
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf944e
+ mov ah, byte [bp-00eh] ; 8a 66 f2 ; 0xf9451
+ mov byte [es:bx+0022dh], ah ; 26 88 a7 2d 02 ; 0xf9454
+ movzx dx, byte [bp-00ah] ; 0f b6 56 f6 ; 0xf9459 ahci.c:744
+ imul dx, dx, strict byte 0001ch ; 6b d2 1c ; 0xf945d
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9460
+ add bx, dx ; 01 d3 ; 0xf9463
+ mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf9465
+ mov byte [es:bx+024h], al ; 26 88 47 24 ; 0xf946b ahci.c:746
+ mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf946f ahci.c:747
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9474 ahci.c:748
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf947a ahci.c:749
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf947f ahci.c:750
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf9482
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9486
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf9489
+ mov word [es:bx+038h], si ; 26 89 77 38 ; 0xf948d
+ mov word [es:bx+036h], di ; 26 89 7f 36 ; 0xf9491
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9495 ahci.c:752
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf9498
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf949c ahci.c:753
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf949f
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf94a3 ahci.c:754
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf94a6
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf94aa ahci.c:757
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf94ad
+ jc short 094bdh ; 72 0c ; 0xf94af
+ jbe short 094c5h ; 76 12 ; 0xf94b1
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf94b3
+ je short 094cdh ; 74 16 ; 0xf94b5
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf94b7
+ je short 094c9h ; 74 0e ; 0xf94b9
+ jmp short 0951ah ; eb 5d ; 0xf94bb
+ test al, al ; 84 c0 ; 0xf94bd
+ jne short 0951ah ; 75 59 ; 0xf94bf
+ mov BL, strict byte 040h ; b3 40 ; 0xf94c1 ahci.c:760
+ jmp short 094cfh ; eb 0a ; 0xf94c3 ahci.c:761
+ mov BL, strict byte 048h ; b3 48 ; 0xf94c5 ahci.c:763
+ jmp short 094cfh ; eb 06 ; 0xf94c7 ahci.c:764
+ mov BL, strict byte 050h ; b3 50 ; 0xf94c9 ahci.c:766
+ jmp short 094cfh ; eb 02 ; 0xf94cb ahci.c:767
+ mov BL, strict byte 058h ; b3 58 ; 0xf94cd ahci.c:769
+ mov al, bl ; 88 d8 ; 0xf94cf ahci.c:773
+ add AL, strict byte 007h ; 04 07 ; 0xf94d1
+ movzx dx, al ; 0f b6 d0 ; 0xf94d3
+ mov ax, dx ; 89 d0 ; 0xf94d6
+ call 01756h ; e8 7b 82 ; 0xf94d8
+ test al, al ; 84 c0 ; 0xf94db
+ je short 0951ah ; 74 3b ; 0xf94dd
+ mov al, bl ; 88 d8 ; 0xf94df ahci.c:776
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf94e1
+ xor ah, ah ; 30 e4 ; 0xf94e3
+ call 01756h ; e8 6e 82 ; 0xf94e5
+ xor ah, ah ; 30 e4 ; 0xf94e8
+ sal ax, 008h ; c1 e0 08 ; 0xf94ea
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf94ed
+ movzx ax, bl ; 0f b6 c3 ; 0xf94f0
+ call 01756h ; e8 60 82 ; 0xf94f3
+ xor ah, ah ; 30 e4 ; 0xf94f6
+ mov cx, word [bp-02ah] ; 8b 4e d6 ; 0xf94f8
+ add cx, ax ; 01 c1 ; 0xf94fb
+ mov word [bp-030h], cx ; 89 4e d0 ; 0xf94fd
+ mov al, bl ; 88 d8 ; 0xf9500 ahci.c:777
+ add AL, strict byte 002h ; 04 02 ; 0xf9502
+ xor ah, ah ; 30 e4 ; 0xf9504
+ call 01756h ; e8 4d 82 ; 0xf9506
+ xor ah, ah ; 30 e4 ; 0xf9509
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf950b
+ mov ax, dx ; 89 d0 ; 0xf950e ahci.c:778
+ call 01756h ; e8 43 82 ; 0xf9510
+ xor ah, ah ; 30 e4 ; 0xf9513
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf9515
+ jmp short 0952ah ; eb 10 ; 0xf9518 ahci.c:780
+ push word [bp-018h] ; ff 76 e8 ; 0xf951a ahci.c:781
+ push word [bp-016h] ; ff 76 ea ; 0xf951d
+ push si ; 56 ; 0xf9520
+ push di ; 57 ; 0xf9521
+ mov dx, ss ; 8c d2 ; 0xf9522
+ lea ax, [bp-032h] ; 8d 46 ce ; 0xf9524
+ call 0599dh ; e8 73 c4 ; 0xf9527
+ mov bx, 00db2h ; bb b2 0d ; 0xf952a ahci.c:785
+ mov cx, ds ; 8c d9 ; 0xf952d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf952f
+ call 019d3h ; e8 9e 84 ; 0xf9532
+ push word [bp-018h] ; ff 76 e8 ; 0xf9535
+ push word [bp-016h] ; ff 76 ea ; 0xf9538
+ push si ; 56 ; 0xf953b
+ push di ; 57 ; 0xf953c
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf953d
+ push ax ; 50 ; 0xf9540
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf9541
+ push ax ; 50 ; 0xf9544
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf9545
+ push ax ; 50 ; 0xf9548
+ push word [bp-020h] ; ff 76 e0 ; 0xf9549
+ push word [bp-01ah] ; ff 76 e6 ; 0xf954c
+ push word [bp-01eh] ; ff 76 e2 ; 0xf954f
+ movzx ax, byte [bp-00eh] ; 0f b6 46 f2 ; 0xf9552
+ push ax ; 50 ; 0xf9556
+ movzx ax, byte [bp-00ch] ; 0f b6 46 f4 ; 0xf9557
+ push ax ; 50 ; 0xf955b
+ push 00ce8h ; 68 e8 0c ; 0xf955c
+ push strict byte 00004h ; 6a 04 ; 0xf955f
+ call 01a14h ; e8 b0 84 ; 0xf9561
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf9564
+ movzx ax, byte [bp-00ah] ; 0f b6 46 f6 ; 0xf9567 ahci.c:787
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf956b
+ mov di, word [bp-02ch] ; 8b 7e d4 ; 0xf956e
+ add di, ax ; 01 c7 ; 0xf9571
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9573
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf9576
+ push DS ; 1e ; 0xf9579
+ push SS ; 16 ; 0xf957a
+ pop DS ; 1f ; 0xf957b
+ lea si, [bp-032h] ; 8d 76 ce ; 0xf957c
+ movsw ; a5 ; 0xf957f
+ movsw ; a5 ; 0xf9580
+ movsw ; a5 ; 0xf9581
+ pop DS ; 1f ; 0xf9582
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9583 ahci.c:790
+ mov al, byte [es:bx+001e2h] ; 26 8a 87 e2 01 ; 0xf9586
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf958b ahci.c:791
+ add ah, 00ch ; 80 c4 0c ; 0xf958e
+ movzx bx, al ; 0f b6 d8 ; 0xf9591
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf9594
+ mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf9597
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf959c ahci.c:792
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf959e ahci.c:793
+ mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf95a1
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf95a6 ahci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf95a9
+ mov es, ax ; 8e c0 ; 0xf95ac
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf95ae
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf95b1 ahci.c:797
+ mov byte [es:bx], al ; 26 88 07 ; 0xf95b3 ahci.c:43
+ jmp near 09660h ; e9 a7 00 ; 0xf95b6 ahci.c:800
+ cmp ax, 0eb14h ; 3d 14 eb ; 0xf95b9
+ jne near 09660h ; 0f 85 a0 00 ; 0xf95bc
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf95c0
+ jne near 09660h ; 0f 85 98 00 ; 0xf95c4
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf95c8 ahci.c:805
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf95cb
+ db 066h, 026h, 0c7h, 047h, 004h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx+004h], strict dword 000000000h ; 66 26 c7 47 04 00 00 00 00; 0xf95ce
+ db 066h, 026h, 0c7h, 007h, 000h, 000h, 000h, 000h
+ ; mov dword [es:bx], strict dword 000000000h ; 66 26 c7 07 00 00 00 00 ; 0xf95d7
+ lea dx, [bp-00232h] ; 8d 96 ce fd ; 0xf95df ahci.c:806
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf95e3
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf95e7
+ db 066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 002h
+ ; mov dword [es:bx+00eh], strict dword 002000001h ; 66 26 c7 47 0e 01 00 00 02; 0xf95eb ahci.c:807
+ mov bx, 000a1h ; bb a1 00 ; 0xf95f4 ahci.c:809
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf95f7
+ mov dx, es ; 8c c2 ; 0xf95fa
+ call 088d1h ; e8 d2 f2 ; 0xf95fc
+ test byte [bp-00232h], 080h ; f6 86 ce fd 80 ; 0xf95ff ahci.c:814
+ db 00fh, 095h, 0c0h
+ ; setne al ; 0f 95 c0 ; 0xf9604
+ xor ah, ah ; 30 e4 ; 0xf9607
+ mov dx, ax ; 89 c2 ; 0xf9609
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf960b ahci.c:816
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf960f
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf9612
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9615
+ mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf9618
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf961d ahci.c:817
+ imul ax, ax, strict byte 0001ch ; 6b c0 1c ; 0xf9621
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9624
+ add bx, ax ; 01 c3 ; 0xf9627
+ mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf9629
+ mov byte [es:bx+024h], dl ; 26 88 57 24 ; 0xf962f ahci.c:819
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf9633 ahci.c:820
+ mov byte [es:bx+027h], dh ; 26 88 77 27 ; 0xf9639 ahci.c:821
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf963d ahci.c:824
+ mov al, byte [es:bx+001f3h] ; 26 8a 87 f3 01 ; 0xf9640
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf9645 ahci.c:825
+ add ah, 00ch ; 80 c4 0c ; 0xf9648
+ movzx bx, al ; 0f b6 d8 ; 0xf964b
+ add bx, word [bp-02ch] ; 03 5e d4 ; 0xf964e
+ mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf9651
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9656 ahci.c:826
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9658 ahci.c:827
+ mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf965b
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf9660 ahci.c:832
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9663 ahci.c:833
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf9666
+ mov bx, word [bp-02ch] ; 8b 5e d4 ; 0xf9669
+ mov byte [es:bx+00231h], al ; 26 88 87 31 02 ; 0xf966c
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9671 ahci.c:838
+ pop di ; 5f ; 0xf9674
+ pop si ; 5e ; 0xf9675
+ pop cx ; 59 ; 0xf9676
+ pop bp ; 5d ; 0xf9677
+ retn ; c3 ; 0xf9678
+ ; disGetNextSymbol 0xf9679 LB 0x9cc -> off=0x0 cb=000000000000003a uValue=00000000000f8079 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf9679 LB 0x3a
+ push bx ; 53 ; 0xf9679 ahci.c:843
+ push cx ; 51 ; 0xf967a
+ push dx ; 52 ; 0xf967b
+ push di ; 57 ; 0xf967c
+ push bp ; 55 ; 0xf967d
+ mov bp, sp ; 89 e5 ; 0xf967e
+ mov di, 00413h ; bf 13 04 ; 0xf9680 ahci.c:48
+ xor ax, ax ; 31 c0 ; 0xf9683
+ mov es, ax ; 8e c0 ; 0xf9685
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9687
+ test ax, ax ; 85 c0 ; 0xf968a ahci.c:852
+ je short 096adh ; 74 1f ; 0xf968c
+ dec ax ; 48 ; 0xf968e ahci.c:853
+ mov bx, ax ; 89 c3 ; 0xf968f
+ xor dx, dx ; 31 d2 ; 0xf9691 ahci.c:856
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9693
+ sal ax, 1 ; d1 e0 ; 0xf9696
+ rcl dx, 1 ; d1 d2 ; 0xf9698
+ loop 09696h ; e2 fa ; 0xf969a
+ mov di, dx ; 89 d7 ; 0xf969c
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf969e
+ shr di, 1 ; d1 ef ; 0xf96a1
+ rcr ax, 1 ; d1 d8 ; 0xf96a3
+ loop 096a1h ; e2 fa ; 0xf96a5
+ mov di, 00413h ; bf 13 04 ; 0xf96a7 ahci.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf96aa
+ pop bp ; 5d ; 0xf96ad ahci.c:861
+ pop di ; 5f ; 0xf96ae
+ pop dx ; 5a ; 0xf96af
+ pop cx ; 59 ; 0xf96b0
+ pop bx ; 5b ; 0xf96b1
+ retn ; c3 ; 0xf96b2
+ ; disGetNextSymbol 0xf96b3 LB 0x992 -> off=0x0 cb=000000000000014f uValue=00000000000f80b3 'ahci_hba_init'
+ahci_hba_init: ; 0xf96b3 LB 0x14f
+ push bp ; 55 ; 0xf96b3 ahci.c:866
+ mov bp, sp ; 89 e5 ; 0xf96b4
+ push bx ; 53 ; 0xf96b6
+ push cx ; 51 ; 0xf96b7
+ push dx ; 52 ; 0xf96b8
+ push si ; 56 ; 0xf96b9
+ push di ; 57 ; 0xf96ba
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf96bb
+ mov si, ax ; 89 c6 ; 0xf96be
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf96c0 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf96c3
+ mov es, ax ; 8e c0 ; 0xf96c6
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf96c8
+ mov bx, 00122h ; bb 22 01 ; 0xf96cb ahci.c:877
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf96ce ahci.c:879
+ xor cx, cx ; 31 c9 ; 0xf96d1
+ mov dx, si ; 89 f2 ; 0xf96d3
+ xchg cx, ax ; 91 ; 0xf96d5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf96d6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf96da
+ out DX, eax ; 66 ef ; 0xf96dc
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf96de
+ in eax, DX ; 66 ed ; 0xf96e1
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf96e3
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf96e5
+ xchg dx, ax ; 92 ; 0xf96e9
+ call 09679h ; e8 8c ff ; 0xf96ea ahci.c:885
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf96ed
+ test ax, ax ; 85 c0 ; 0xf96f0 ahci.c:886
+ je near 097f8h ; 0f 84 02 01 ; 0xf96f2
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf96f6 ahci.c:889
+ mov es, di ; 8e c7 ; 0xf96f9
+ mov word [es:bx+00232h], ax ; 26 89 87 32 02 ; 0xf96fb
+ mov byte [es:bx+00231h], 000h ; 26 c6 87 31 02 00 ; 0xf9700 ahci.c:895
+ xor bx, bx ; 31 db ; 0xf9706 ahci.c:897
+ mov es, ax ; 8e c0 ; 0xf9708
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf970a ahci.c:898
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf9710 ahci.c:899
+ db 066h, 026h, 0c7h, 087h, 064h, 002h, 000h, 0c0h, 00ch, 000h
+ ; mov dword [es:bx+00264h], strict dword 0000cc000h ; 66 26 c7 87 64 02 00 c0 0c 00; 0xf9715 ahci.c:904
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf971f ahci.c:252
+ xor cx, cx ; 31 c9 ; 0xf9722
+ mov dx, si ; 89 f2 ; 0xf9724
+ xchg cx, ax ; 91 ; 0xf9726
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9727
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf972b
+ out DX, eax ; 66 ef ; 0xf972d
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf972f ahci.c:253
+ mov dx, bx ; 89 da ; 0xf9732
+ in eax, DX ; 66 ed ; 0xf9734
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9736
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9738
+ xchg dx, ax ; 92 ; 0xf973c
+ or AL, strict byte 001h ; 0c 01 ; 0xf973d
+ mov cx, dx ; 89 d1 ; 0xf973f
+ mov dx, bx ; 89 da ; 0xf9741
+ xchg cx, ax ; 91 ; 0xf9743
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9744
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9748
+ out DX, eax ; 66 ef ; 0xf974a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf974c ahci.c:910
+ xor cx, cx ; 31 c9 ; 0xf974f
+ mov dx, si ; 89 f2 ; 0xf9751
+ xchg cx, ax ; 91 ; 0xf9753
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9754
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9758
+ out DX, eax ; 66 ef ; 0xf975a
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf975c
+ mov dx, bx ; 89 da ; 0xf975f
+ in eax, DX ; 66 ed ; 0xf9761
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9763
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9765
+ xchg dx, ax ; 92 ; 0xf9769
+ test AL, strict byte 001h ; a8 01 ; 0xf976a ahci.c:911
+ jne short 0974ch ; 75 de ; 0xf976c
+ xor ax, ax ; 31 c0 ; 0xf976e ahci.c:913
+ xor cx, cx ; 31 c9 ; 0xf9770
+ mov dx, si ; 89 f2 ; 0xf9772
+ xchg cx, ax ; 91 ; 0xf9774
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9775
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9779
+ out DX, eax ; 66 ef ; 0xf977b
+ mov dx, bx ; 89 da ; 0xf977d
+ in eax, DX ; 66 ed ; 0xf977f
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9781
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9783
+ xchg dx, ax ; 92 ; 0xf9787
+ push strict byte 00000h ; 6a 00 ; 0xf9788 ahci.c:914
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf978a
+ xor cx, cx ; 31 c9 ; 0xf978d
+ call 0874dh ; e8 bb ef ; 0xf978f
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9792
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9794
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9797 ahci.c:919
+ jmp short 097bdh ; eb 20 ; 0xf979b ahci.c:920
+ xor al, al ; 30 c0 ; 0xf979d ahci.c:272
+ test al, al ; 84 c0 ; 0xf979f ahci.c:273
+ je short 097b4h ; 74 11 ; 0xf97a1
+ movzx bx, byte [bp-00ch] ; 0f b6 5e f4 ; 0xf97a3 ahci.c:925
+ xor ax, ax ; 31 c0 ; 0xf97a7
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf97a9
+ call 091b0h ; e8 01 fa ; 0xf97ac
+ dec byte [bp-00eh] ; fe 4e f2 ; 0xf97af ahci.c:926
+ je short 097f6h ; 74 42 ; 0xf97b2 ahci.c:927
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf97b4 ahci.c:930
+ cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf97b7 ahci.c:931
+ jnc short 097f6h ; 73 39 ; 0xf97bb
+ movzx cx, byte [bp-00ch] ; 0f b6 4e f4 ; 0xf97bd
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf97c1
+ xor di, di ; 31 ff ; 0xf97c4
+ jcxz 097ceh ; e3 06 ; 0xf97c6
+ sal bx, 1 ; d1 e3 ; 0xf97c8
+ rcl di, 1 ; d1 d7 ; 0xf97ca
+ loop 097c8h ; e2 fa ; 0xf97cc
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf97ce
+ xor cx, cx ; 31 c9 ; 0xf97d1
+ mov dx, si ; 89 f2 ; 0xf97d3
+ xchg cx, ax ; 91 ; 0xf97d5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf97d6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf97da
+ out DX, eax ; 66 ef ; 0xf97dc
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf97de
+ in eax, DX ; 66 ed ; 0xf97e1
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf97e3
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf97e5
+ xchg dx, ax ; 92 ; 0xf97e9
+ test dx, di ; 85 fa ; 0xf97ea
+ jne short 097f2h ; 75 04 ; 0xf97ec
+ test ax, bx ; 85 d8 ; 0xf97ee
+ je short 0979dh ; 74 ab ; 0xf97f0
+ mov AL, strict byte 001h ; b0 01 ; 0xf97f2
+ jmp short 0979fh ; eb a9 ; 0xf97f4
+ xor ax, ax ; 31 c0 ; 0xf97f6 ahci.c:933
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf97f8 ahci.c:934
+ pop di ; 5f ; 0xf97fb
+ pop si ; 5e ; 0xf97fc
+ pop dx ; 5a ; 0xf97fd
+ pop cx ; 59 ; 0xf97fe
+ pop bx ; 5b ; 0xf97ff
+ pop bp ; 5d ; 0xf9800
+ retn ; c3 ; 0xf9801
+ ; disGetNextSymbol 0xf9802 LB 0x843 -> off=0x17 cb=0000000000000116 uValue=00000000000f8219 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0e9h, 098h, 0c7h, 098h, 0cdh, 098h, 0d3h, 098h, 0d9h
+ db 098h, 0dfh, 098h, 0e5h, 098h, 0e9h, 098h
+ahci_init: ; 0xf9819 LB 0x116
+ push bp ; 55 ; 0xf9819 ahci.c:939
+ mov bp, sp ; 89 e5 ; 0xf981a
+ push si ; 56 ; 0xf981c
+ push di ; 57 ; 0xf981d
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf981e
+ mov ax, 00601h ; b8 01 06 ; 0xf9821 ahci.c:943
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf9824
+ call 09d4fh ; e8 25 05 ; 0xf9827
+ mov bx, ax ; 89 c3 ; 0xf982a
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf982c ahci.c:944
+ je near 09928h ; 0f 84 f5 00 ; 0xf982f
+ xor al, al ; 30 c0 ; 0xf9833 ahci.c:949
+ shr ax, 008h ; c1 e8 08 ; 0xf9835
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9838
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf983b ahci.c:950
+ movzx dx, bl ; 0f b6 d3 ; 0xf983e ahci.c:955
+ xor ah, ah ; 30 e4 ; 0xf9841
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf9843
+ call 09d9fh ; e8 56 05 ; 0xf9846
+ mov cl, al ; 88 c1 ; 0xf9849
+ test cl, cl ; 84 c9 ; 0xf984b ahci.c:957
+ je short 09872h ; 74 23 ; 0xf984d
+ movzx bx, cl ; 0f b6 d9 ; 0xf984f ahci.c:959
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf9852
+ movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf9856
+ mov dx, di ; 89 fa ; 0xf985a
+ mov ax, si ; 89 f0 ; 0xf985c
+ call 09d9fh ; e8 3e 05 ; 0xf985e
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf9861 ahci.c:963
+ je short 09872h ; 74 0d ; 0xf9863
+ mov al, cl ; 88 c8 ; 0xf9865 ahci.c:967
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9867
+ movzx bx, al ; 0f b6 d8 ; 0xf9869
+ mov dx, di ; 89 fa ; 0xf986c
+ mov ax, si ; 89 f0 ; 0xf986e
+ jmp short 09846h ; eb d4 ; 0xf9870 ahci.c:968
+ test cl, cl ; 84 c9 ; 0xf9872 ahci.c:970
+ je near 09928h ; 0f 84 b0 00 ; 0xf9874
+ add cl, 002h ; 80 c1 02 ; 0xf9878 ahci.c:977
+ movzx bx, cl ; 0f b6 d9 ; 0xf987b ahci.c:979
+ movzx si, byte [bp-008h] ; 0f b6 76 f8 ; 0xf987e
+ movzx di, byte [bp-00ah] ; 0f b6 7e f6 ; 0xf9882
+ mov dx, si ; 89 f2 ; 0xf9886
+ mov ax, di ; 89 f8 ; 0xf9888
+ call 09d9fh ; e8 12 05 ; 0xf988a
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf988d ahci.c:980
+ jne near 09928h ; 0f 85 95 00 ; 0xf988f
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf9893 ahci.c:983
+ mov al, cl ; 88 c8 ; 0xf9897 ahci.c:985
+ add AL, strict byte 002h ; 04 02 ; 0xf9899
+ movzx bx, al ; 0f b6 d8 ; 0xf989b
+ mov dx, si ; 89 f2 ; 0xf989e
+ mov ax, di ; 89 f8 ; 0xf98a0
+ call 09dc3h ; e8 1e 05 ; 0xf98a2
+ mov dx, ax ; 89 c2 ; 0xf98a5
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf98a7 ahci.c:989
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf98aa
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf98ad
+ jnbe short 098e9h ; 77 37 ; 0xf98b0
+ push CS ; 0e ; 0xf98b2
+ pop ES ; 07 ; 0xf98b3
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf98b4
+ mov di, 09802h ; bf 02 98 ; 0xf98b7
+ repne scasb ; f2 ae ; 0xf98ba
+ sal cx, 1 ; d1 e1 ; 0xf98bc
+ mov di, cx ; 89 cf ; 0xf98be
+ mov ax, word [cs:di-067f7h] ; 2e 8b 85 09 98 ; 0xf98c0
+ jmp ax ; ff e0 ; 0xf98c5
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf98c7 ahci.c:992
+ jmp short 098e9h ; eb 1c ; 0xf98cb ahci.c:993
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf98cd ahci.c:995
+ jmp short 098e9h ; eb 16 ; 0xf98d1 ahci.c:996
+ mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf98d3 ahci.c:998
+ jmp short 098e9h ; eb 10 ; 0xf98d7 ahci.c:999
+ mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf98d9 ahci.c:1001
+ jmp short 098e9h ; eb 0a ; 0xf98dd ahci.c:1002
+ mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf98df ahci.c:1004
+ jmp short 098e9h ; eb 04 ; 0xf98e3 ahci.c:1005
+ mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf98e5 ahci.c:1007
+ mov cx, dx ; 89 d1 ; 0xf98e9 ahci.c:1016
+ shr cx, 004h ; c1 e9 04 ; 0xf98eb
+ sal cx, 002h ; c1 e1 02 ; 0xf98ee
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf98f1 ahci.c:1018
+ test al, al ; 84 c0 ; 0xf98f4
+ je short 09928h ; 74 30 ; 0xf98f6
+ movzx bx, al ; 0f b6 d8 ; 0xf98f8 ahci.c:1020
+ movzx di, byte [bp-008h] ; 0f b6 7e f8 ; 0xf98fb
+ movzx si, byte [bp-00ah] ; 0f b6 76 f6 ; 0xf98ff
+ mov dx, di ; 89 fa ; 0xf9903
+ mov ax, si ; 89 f0 ; 0xf9905
+ call 09de5h ; e8 db 04 ; 0xf9907
+ test AL, strict byte 001h ; a8 01 ; 0xf990a ahci.c:1024
+ je short 09928h ; 74 1a ; 0xf990c
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf990e ahci.c:1027
+ add ax, cx ; 01 c8 ; 0xf9910
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf9912
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf9915 ahci.c:1030
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf9918
+ mov dx, di ; 89 fa ; 0xf991b
+ mov ax, si ; 89 f0 ; 0xf991d
+ call 09e0ch ; e8 ea 04 ; 0xf991f
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9922 ahci.c:1033
+ call 096b3h ; e8 8b fd ; 0xf9925
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9928 ahci.c:1047
+ pop di ; 5f ; 0xf992b
+ pop si ; 5e ; 0xf992c
+ pop bp ; 5d ; 0xf992d
+ retn ; c3 ; 0xf992e
+ ; disGetNextSymbol 0xf992f LB 0x716 -> off=0x0 cb=000000000000001b uValue=00000000000f832f 'apm_out_str'
+apm_out_str: ; 0xf992f LB 0x1b
+ push bp ; 55 ; 0xf992f apm.c:146
+ mov bp, sp ; 89 e5 ; 0xf9930
+ push bx ; 53 ; 0xf9932
+ mov bx, ax ; 89 c3 ; 0xf9933
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xf9935 apm.c:148
+ je short 09944h ; 74 0a ; 0xf9938
+ mov al, byte [bx] ; 8a 07 ; 0xf993a apm.c:149
+ out DX, AL ; ee ; 0xf993c
+ inc bx ; 43 ; 0xf993d
+ mov al, byte [bx] ; 8a 07 ; 0xf993e
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xf9940
+ jne short 0993ch ; 75 f8 ; 0xf9942
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9944 apm.c:150
+ pop bx ; 5b ; 0xf9947
+ pop bp ; 5d ; 0xf9948
+ retn ; c3 ; 0xf9949
+ ; disGetNextSymbol 0xf994a LB 0x6fb -> off=0x1e cb=00000000000000f5 uValue=00000000000f8368 'apm_function'
+ db 08bh, 099h, 057h, 09ah, 09dh, 099h, 0b8h, 099h, 057h, 09ah, 0e3h, 099h, 057h, 09ah, 0e8h, 099h
+ db 02ch, 09ah, 02ch, 09ah, 02ch, 09ah, 027h, 09ah, 02ch, 09ah, 02ch, 09ah, 020h, 09ah
+apm_function: ; 0xf9968 LB 0xf5
+ push bp ; 55 ; 0xf9968 apm.c:152
+ mov bp, sp ; 89 e5 ; 0xf9969
+ push si ; 56 ; 0xf996b
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf996c apm.c:156
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9970 apm.c:157
+ xor ah, ah ; 30 e4 ; 0xf9973
+ cmp ax, strict word 0000eh ; 3d 0e 00 ; 0xf9975
+ jnbe near 09a2ch ; 0f 87 b0 00 ; 0xf9978
+ mov bx, ax ; 89 c3 ; 0xf997c
+ add bx, ax ; 01 c3 ; 0xf997e
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf9980
+ or dl, 001h ; 80 ca 01 ; 0xf9983
+ jmp word [cs:bx-066b6h] ; 2e ff a7 4a 99 ; 0xf9986
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf998b apm.c:159
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xf9990 apm.c:160
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xf9995 apm.c:161
+ jmp near 09a57h ; e9 ba 00 ; 0xf999a apm.c:162
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf999d apm.c:172
+ mov word [bp+00ch], 0a034h ; c7 46 0c 34 a0 ; 0xf99a2 apm.c:173
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xf99a7 apm.c:174
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf99ac apm.c:175
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf99af
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf99b2 apm.c:176
+ jmp near 09a57h ; e9 9f 00 ; 0xf99b5 apm.c:177
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf99b8 apm.c:183
+ mov word [bp+00ch], 0da40h ; c7 46 0c 40 da ; 0xf99bd apm.c:184
+ mov ax, 0f000h ; b8 00 f0 ; 0xf99c2 apm.c:185
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf99c5
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf99c8 apm.c:186
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf99cb apm.c:187
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf99ce
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf99d1 apm.c:188
+ xor bx, bx ; 31 db ; 0xf99d4 apm.c:189
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xf99d6
+ mov si, ax ; 89 c6 ; 0xf99da apm.c:190
+ sal esi, 010h ; 66 c1 e6 10 ; 0xf99dc
+ jmp near 09a57h ; e9 74 00 ; 0xf99e0 apm.c:191
+ sti ; fb ; 0xf99e3 apm.c:194
+ hlt ; f4 ; 0xf99e4 apm.c:195
+ jmp near 09a57h ; e9 6f 00 ; 0xf99e5 apm.c:196
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xf99e8 apm.c:200
+ je short 09a0dh ; 74 1f ; 0xf99ec
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xf99ee
+ je short 09a05h ; 74 11 ; 0xf99f2
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xf99f4
+ jne short 09a15h ; 75 1b ; 0xf99f8
+ mov dx, 0040fh ; ba 0f 04 ; 0xf99fa apm.c:202
+ mov ax, 00d22h ; b8 22 0d ; 0xf99fd
+ call 0992fh ; e8 2c ff ; 0xf9a00
+ jmp short 09a57h ; eb 52 ; 0xf9a03 apm.c:203
+ mov dx, 0040fh ; ba 0f 04 ; 0xf9a05 apm.c:205
+ mov ax, 00d2ah ; b8 2a 0d ; 0xf9a08
+ jmp short 09a00h ; eb f3 ; 0xf9a0b
+ mov dx, 0040fh ; ba 0f 04 ; 0xf9a0d apm.c:208
+ mov ax, 00d32h ; b8 32 0d ; 0xf9a10
+ jmp short 09a00h ; eb eb ; 0xf9a13
+ or ah, 00ah ; 80 cc 0a ; 0xf9a15 apm.c:211
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf9a18
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf9a1b apm.c:212
+ jmp short 09a57h ; eb 37 ; 0xf9a1e apm.c:214
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf9a20 apm.c:216
+ jmp short 09a57h ; eb 30 ; 0xf9a25 apm.c:217
+ or ah, 080h ; 80 cc 80 ; 0xf9a27 apm.c:224
+ jmp short 09a18h ; eb ec ; 0xf9a2a
+ mov bx, 00db2h ; bb b2 0d ; 0xf9a2c apm.c:228
+ mov cx, ds ; 8c d9 ; 0xf9a2f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9a31
+ call 019d3h ; e8 9c 7f ; 0xf9a34
+ push word [bp+00ch] ; ff 76 0c ; 0xf9a37
+ push word [bp+012h] ; ff 76 12 ; 0xf9a3a
+ push 00d3bh ; 68 3b 0d ; 0xf9a3d
+ push strict byte 00004h ; 6a 04 ; 0xf9a40
+ call 01a14h ; e8 cf 7f ; 0xf9a42
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9a45
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9a48 apm.c:229
+ xor ah, ah ; 30 e4 ; 0xf9a4b
+ or ah, 00ch ; 80 cc 0c ; 0xf9a4d
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf9a50
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf9a53 apm.c:230
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a57 apm.c:232
+ pop si ; 5e ; 0xf9a5a
+ pop bp ; 5d ; 0xf9a5b
+ retn ; c3 ; 0xf9a5c
+ ; disGetNextSymbol 0xf9a5d LB 0x5e8 -> off=0x0 cb=0000000000000024 uValue=00000000000f845d 'pci16_select_reg'
+pci16_select_reg: ; 0xf9a5d LB 0x24
+ push bp ; 55 ; 0xf9a5d pcibios.c:188
+ mov bp, sp ; 89 e5 ; 0xf9a5e
+ push bx ; 53 ; 0xf9a60
+ and dl, 0fch ; 80 e2 fc ; 0xf9a61 pcibios.c:190
+ mov bx, dx ; 89 d3 ; 0xf9a64
+ mov dx, 00cf8h ; ba f8 0c ; 0xf9a66
+ movzx eax, ax ; 66 0f b7 c0 ; 0xf9a69
+ sal eax, 008h ; 66 c1 e0 08 ; 0xf9a6d
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xf9a71
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xf9a77
+ out DX, eax ; 66 ef ; 0xf9a79
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9a7b pcibios.c:191
+ pop bx ; 5b ; 0xf9a7e
+ pop bp ; 5d ; 0xf9a7f
+ retn ; c3 ; 0xf9a80
+ ; disGetNextSymbol 0xf9a81 LB 0x5c4 -> off=0x0 cb=00000000000000eb uValue=00000000000f8481 'pci16_find_device'
+pci16_find_device: ; 0xf9a81 LB 0xeb
+ push bp ; 55 ; 0xf9a81 pcibios.c:221
+ mov bp, sp ; 89 e5 ; 0xf9a82
+ push si ; 56 ; 0xf9a84
+ push di ; 57 ; 0xf9a85
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9a86
+ push ax ; 50 ; 0xf9a89
+ push dx ; 52 ; 0xf9a8a
+ mov si, bx ; 89 de ; 0xf9a8b
+ mov di, cx ; 89 cf ; 0xf9a8d
+ test cx, cx ; 85 c9 ; 0xf9a8f pcibios.c:231
+ xor bx, bx ; 31 db ; 0xf9a91 pcibios.c:238
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf9a93 pcibios.c:239
+ test bl, 007h ; f6 c3 07 ; 0xf9a97 pcibios.c:249
+ jne short 09ac9h ; 75 2d ; 0xf9a9a
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xf9a9c pcibios.c:250
+ mov ax, bx ; 89 d8 ; 0xf9a9f
+ call 09a5dh ; e8 b9 ff ; 0xf9aa1
+ mov dx, 00cfeh ; ba fe 0c ; 0xf9aa4 pcibios.c:251
+ in AL, DX ; ec ; 0xf9aa7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9aa8
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf9aaa
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf9aad pcibios.c:252
+ jne short 09ab7h ; 75 06 ; 0xf9aaf
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf9ab1 pcibios.c:253
+ jmp near 09b4ah ; e9 93 00 ; 0xf9ab4 pcibios.c:254
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf9ab7 pcibios.c:256
+ je short 09ac4h ; 74 07 ; 0xf9abb
+ mov word [bp-00ah], strict word 00001h ; c7 46 f6 01 00 ; 0xf9abd pcibios.c:257
+ jmp short 09ac9h ; eb 05 ; 0xf9ac2 pcibios.c:258
+ mov word [bp-00ah], strict word 00008h ; c7 46 f6 08 00 ; 0xf9ac4 pcibios.c:259
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9ac9 pcibios.c:270
+ and AL, strict byte 007h ; 24 07 ; 0xf9acc
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9ace
+ jne short 09af1h ; 75 1f ; 0xf9ad0
+ mov ax, bx ; 89 d8 ; 0xf9ad2
+ shr ax, 008h ; c1 e8 08 ; 0xf9ad4
+ test ax, ax ; 85 c0 ; 0xf9ad7
+ jne short 09af1h ; 75 16 ; 0xf9ad9
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xf9adb pcibios.c:272
+ mov ax, bx ; 89 d8 ; 0xf9ade
+ call 09a5dh ; e8 7a ff ; 0xf9ae0
+ mov dx, 00cfeh ; ba fe 0c ; 0xf9ae3 pcibios.c:273
+ in AL, DX ; ec ; 0xf9ae6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9ae7
+ cmp al, byte [bp-008h] ; 3a 46 f8 ; 0xf9ae9 pcibios.c:274
+ jbe short 09af1h ; 76 03 ; 0xf9aec
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf9aee pcibios.c:275
+ test di, di ; 85 ff ; 0xf9af1 pcibios.c:279
+ je short 09afah ; 74 05 ; 0xf9af3
+ mov dx, strict word 00008h ; ba 08 00 ; 0xf9af5
+ jmp short 09afch ; eb 02 ; 0xf9af8
+ xor dx, dx ; 31 d2 ; 0xf9afa
+ mov ax, bx ; 89 d8 ; 0xf9afc
+ call 09a5dh ; e8 5c ff ; 0xf9afe
+ mov dx, 00cfch ; ba fc 0c ; 0xf9b01 pcibios.c:280
+ in eax, DX ; 66 ed ; 0xf9b04
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9b06
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9b08
+ xchg dx, ax ; 92 ; 0xf9b0c
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9b0d
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9b10
+ mov word [bp-010h], strict word 00000h ; c7 46 f0 00 00 ; 0xf9b13 pcibios.c:281
+ test di, di ; 85 ff ; 0xf9b18 pcibios.c:284
+ je short 09b2bh ; 74 0f ; 0xf9b1a
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf9b1c pcibios.c:285
+ shr dx, 1 ; d1 ea ; 0xf9b1f
+ rcr ax, 1 ; d1 d8 ; 0xf9b21
+ loop 09b1fh ; e2 fa ; 0xf9b23
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf9b25
+ mov word [bp-00ch], dx ; 89 56 f4 ; 0xf9b28
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf9b2b pcibios.c:292
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf9b2e
+ jne short 09b3bh ; 75 08 ; 0xf9b31
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf9b33
+ cmp ax, word [bp-012h] ; 3b 46 ee ; 0xf9b36
+ je short 09b41h ; 74 06 ; 0xf9b39
+ cmp word [bp-010h], strict byte 00000h ; 83 7e f0 00 ; 0xf9b3b pcibios.c:293
+ je short 09b47h ; 74 06 ; 0xf9b3f
+ dec si ; 4e ; 0xf9b41
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9b42
+ je short 09b59h ; 74 12 ; 0xf9b45
+ add bx, word [bp-00ah] ; 03 5e f6 ; 0xf9b47 pcibios.c:301
+ mov dx, bx ; 89 da ; 0xf9b4a pcibios.c:302
+ shr dx, 008h ; c1 ea 08 ; 0xf9b4c
+ movzx ax, byte [bp-008h] ; 0f b6 46 f8 ; 0xf9b4f
+ cmp dx, ax ; 39 c2 ; 0xf9b53
+ jbe near 09a97h ; 0f 86 3e ff ; 0xf9b55
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9b59 pcibios.c:304
+ jne short 09b62h ; 75 04 ; 0xf9b5c pcibios.c:308
+ mov ax, bx ; 89 d8 ; 0xf9b5e
+ jmp short 09b65h ; eb 03 ; 0xf9b60
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9b62
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b65 pcibios.c:309
+ pop di ; 5f ; 0xf9b68
+ pop si ; 5e ; 0xf9b69
+ pop bp ; 5d ; 0xf9b6a
+ retn ; c3 ; 0xf9b6b
+ ; disGetNextSymbol 0xf9b6c LB 0x4d9 -> off=0xc cb=00000000000001d7 uValue=00000000000f8578 'pci16_function'
+ db 05ah, 09ch, 074h, 09ch, 087h, 09ch, 09ch, 09ch, 0afh, 09ch, 0c2h, 09ch
+pci16_function: ; 0xf9b78 LB 0x1d7
+ push bp ; 55 ; 0xf9b78 pcibios.c:311
+ mov bp, sp ; 89 e5 ; 0xf9b79
+ push si ; 56 ; 0xf9b7b
+ push di ; 57 ; 0xf9b7c
+ push ax ; 50 ; 0xf9b7d
+ push ax ; 50 ; 0xf9b7e
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xf9b7f pcibios.c:318
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xf9b84 pcibios.c:319
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9b88 pcibios.c:321
+ xor bh, bh ; 30 ff ; 0xf9b8b
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9b8d
+ xor ah, ah ; 30 e4 ; 0xf9b90
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf9b92
+ jc short 09bb1h ; 72 1a ; 0xf9b95
+ jbe short 09c09h ; 76 70 ; 0xf9b97
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xf9b99
+ je near 09cd6h ; 0f 84 36 01 ; 0xf9b9c
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xf9ba0
+ jc near 09d1bh ; 0f 82 74 01 ; 0xf9ba3
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xf9ba7
+ jbe near 09c2eh ; 0f 86 80 00 ; 0xf9baa
+ jmp near 09d1bh ; e9 6a 01 ; 0xf9bae
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf9bb1
+ je short 09bd9h ; 74 23 ; 0xf9bb4
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf9bb6
+ jne near 09d1bh ; 0f 85 5e 01 ; 0xf9bb9
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xf9bbd pcibios.c:323
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xf9bc2 pcibios.c:324
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xf9bc7 pcibios.c:326
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xf9bcc pcibios.c:327
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xf9bd1
+ jmp near 09d48h ; e9 6f 01 ; 0xf9bd6 pcibios.c:328
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xf9bd9 pcibios.c:333
+ jne short 09be5h ; 75 06 ; 0xf9bdd
+ or ah, 083h ; 80 cc 83 ; 0xf9bdf pcibios.c:334
+ jmp near 09d41h ; e9 5c 01 ; 0xf9be2 pcibios.c:335
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf9be5 pcibios.c:337
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xf9be8
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf9beb
+ xor cx, cx ; 31 c9 ; 0xf9bee
+ call 09a81h ; e8 8e fe ; 0xf9bf0
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9bf3 pcibios.c:338
+ jne short 09c03h ; 75 0b ; 0xf9bf6
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9bf8 pcibios.c:339
+ xor ah, ah ; 30 e4 ; 0xf9bfb
+ or ah, 086h ; 80 cc 86 ; 0xf9bfd
+ jmp near 09d41h ; e9 3e 01 ; 0xf9c00
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf9c03 pcibios.c:340
+ jmp near 09d48h ; e9 3f 01 ; 0xf9c06 pcibios.c:345
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf9c09 pcibios.c:347
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9c0c
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xf9c0f
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf9c12
+ call 09a81h ; e8 69 fe ; 0xf9c15
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf9c18 pcibios.c:348
+ jne short 09c28h ; 75 0b ; 0xf9c1b
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9c1d pcibios.c:349
+ xor ah, ah ; 30 e4 ; 0xf9c20
+ or ah, 086h ; 80 cc 86 ; 0xf9c22
+ jmp near 09d41h ; e9 19 01 ; 0xf9c25 pcibios.c:350
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf9c28 pcibios.c:352
+ jmp near 09d48h ; e9 1a 01 ; 0xf9c2b pcibios.c:354
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xf9c2e pcibios.c:361
+ jc short 09c3bh ; 72 06 ; 0xf9c33
+ or ah, 087h ; 80 cc 87 ; 0xf9c35 pcibios.c:362
+ jmp near 09d41h ; e9 06 01 ; 0xf9c38 pcibios.c:363
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c3b pcibios.c:365
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9c3e
+ call 09a5dh ; e8 19 fe ; 0xf9c41
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9c44 pcibios.c:366
+ xor bh, bh ; 30 ff ; 0xf9c47
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xf9c49
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xf9c4c
+ jnbe near 09d48h ; 0f 87 f5 00 ; 0xf9c4f
+ add bx, bx ; 01 db ; 0xf9c53
+ jmp word [cs:bx-06494h] ; 2e ff a7 6c 9b ; 0xf9c55
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xf9c5a pcibios.c:368
+ xor bl, bl ; 30 db ; 0xf9c5d
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c5f
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xf9c62
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf9c65
+ in AL, DX ; ec ; 0xf9c69
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9c6a
+ or bx, ax ; 09 c3 ; 0xf9c6c
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xf9c6e
+ jmp near 09d48h ; e9 d4 00 ; 0xf9c71 pcibios.c:369
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c74 pcibios.c:371
+ xor dh, dh ; 30 f6 ; 0xf9c77
+ and dl, 002h ; 80 e2 02 ; 0xf9c79
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf9c7c
+ in ax, DX ; ed ; 0xf9c80
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf9c81
+ jmp near 09d48h ; e9 c1 00 ; 0xf9c84 pcibios.c:372
+ mov dx, 00cfch ; ba fc 0c ; 0xf9c87 pcibios.c:374
+ in eax, DX ; 66 ed ; 0xf9c8a
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9c8c
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9c8e
+ xchg dx, ax ; 92 ; 0xf9c92
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf9c93
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xf9c96
+ jmp near 09d48h ; e9 ac 00 ; 0xf9c99 pcibios.c:375
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9c9c pcibios.c:377
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9c9f
+ xor dh, dh ; 30 f6 ; 0xf9ca2
+ and dl, 003h ; 80 e2 03 ; 0xf9ca4
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf9ca7
+ out DX, AL ; ee ; 0xf9cab
+ jmp near 09d48h ; e9 99 00 ; 0xf9cac pcibios.c:378
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9caf pcibios.c:380
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9cb2
+ xor dh, dh ; 30 f6 ; 0xf9cb5
+ and dl, 002h ; 80 e2 02 ; 0xf9cb7
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf9cba
+ out DX, ax ; ef ; 0xf9cbe
+ jmp near 09d48h ; e9 86 00 ; 0xf9cbf pcibios.c:381
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9cc2 pcibios.c:383
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xf9cc5
+ mov dx, 00cfch ; ba fc 0c ; 0xf9cc8
+ xchg cx, ax ; 91 ; 0xf9ccb
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9ccc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9cd0
+ out DX, eax ; 66 ef ; 0xf9cd2
+ jmp short 09d48h ; eb 72 ; 0xf9cd4 pcibios.c:387
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9cd6 pcibios.c:389
+ mov es, [bp+026h] ; 8e 46 26 ; 0xf9cd9
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf9cdc
+ mov [bp-006h], es ; 8c 46 fa ; 0xf9cdf
+ mov cx, word [0f370h] ; 8b 0e 70 f3 ; 0xf9ce2 pcibios.c:393
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xf9ce6
+ jbe short 09cfch ; 76 11 ; 0xf9ce9
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9ceb pcibios.c:394
+ xor ah, ah ; 30 e4 ; 0xf9cee
+ or ah, 089h ; 80 cc 89 ; 0xf9cf0
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf9cf3
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9cf6 pcibios.c:395
+ jmp short 09d10h ; eb 14 ; 0xf9cfa pcibios.c:396
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xf9cfc pcibios.c:397
+ mov si, 0f190h ; be 90 f1 ; 0xf9d00
+ mov dx, ds ; 8c da ; 0xf9d03
+ push DS ; 1e ; 0xf9d05
+ mov ds, dx ; 8e da ; 0xf9d06
+ rep movsb ; f3 a4 ; 0xf9d08
+ pop DS ; 1f ; 0xf9d0a
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xf9d0b pcibios.c:399
+ mov ax, word [0f370h] ; a1 70 f3 ; 0xf9d10 pcibios.c:401
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf9d13
+ mov word [es:bx], ax ; 26 89 07 ; 0xf9d16
+ jmp short 09d48h ; eb 2d ; 0xf9d19 pcibios.c:402
+ mov bx, 00db2h ; bb b2 0d ; 0xf9d1b pcibios.c:404
+ mov cx, ds ; 8c d9 ; 0xf9d1e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf9d20
+ call 019d3h ; e8 ad 7c ; 0xf9d23
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf9d26
+ push ax ; 50 ; 0xf9d29
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9d2a
+ push ax ; 50 ; 0xf9d2d
+ push 00d6eh ; 68 6e 0d ; 0xf9d2e
+ push strict byte 00004h ; 6a 04 ; 0xf9d31
+ call 01a14h ; e8 de 7c ; 0xf9d33
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9d36
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9d39 pcibios.c:405
+ xor ah, ah ; 30 e4 ; 0xf9d3c
+ or ah, 081h ; 80 cc 81 ; 0xf9d3e
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf9d41
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf9d44 pcibios.c:406
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9d48 pcibios.c:408
+ pop di ; 5f ; 0xf9d4b
+ pop si ; 5e ; 0xf9d4c
+ pop bp ; 5d ; 0xf9d4d
+ retn ; c3 ; 0xf9d4e
+ ; disGetNextSymbol 0xf9d4f LB 0x2f6 -> off=0x0 cb=000000000000002b uValue=00000000000f874f 'pci_find_classcode'
+pci_find_classcode: ; 0xf9d4f LB 0x2b
+ push bp ; 55 ; 0xf9d4f pciutil.c:126
+ mov bp, sp ; 89 e5 ; 0xf9d50
+ push bx ; 53 ; 0xf9d52
+ push cx ; 51 ; 0xf9d53
+ push si ; 56 ; 0xf9d54
+ mov cx, dx ; 89 d1 ; 0xf9d55
+ xor si, si ; 31 f6 ; 0xf9d57 pciutil.c:129
+ mov dx, ax ; 89 c2 ; 0xf9d59
+ mov ax, 0b103h ; b8 03 b1 ; 0xf9d5b
+ sal ecx, 010h ; 66 c1 e1 10 ; 0xf9d5e
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xf9d62
+ int 01ah ; cd 1a ; 0xf9d64
+ cmp ah, 000h ; 80 fc 00 ; 0xf9d66
+ je near 09d70h ; 0f 84 03 00 ; 0xf9d69
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf9d6d
+ mov ax, bx ; 89 d8 ; 0xf9d70
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9d72 pciutil.c:133
+ pop si ; 5e ; 0xf9d75
+ pop cx ; 59 ; 0xf9d76
+ pop bx ; 5b ; 0xf9d77
+ pop bp ; 5d ; 0xf9d78
+ retn ; c3 ; 0xf9d79
+ ; disGetNextSymbol 0xf9d7a LB 0x2cb -> off=0x0 cb=0000000000000025 uValue=00000000000f877a 'pci_find_device'
+pci_find_device: ; 0xf9d7a LB 0x25
+ push bp ; 55 ; 0xf9d7a pciutil.c:146
+ mov bp, sp ; 89 e5 ; 0xf9d7b
+ push bx ; 53 ; 0xf9d7d
+ push cx ; 51 ; 0xf9d7e
+ push si ; 56 ; 0xf9d7f
+ mov cx, dx ; 89 d1 ; 0xf9d80
+ xor si, si ; 31 f6 ; 0xf9d82 pciutil.c:148
+ mov dx, ax ; 89 c2 ; 0xf9d84
+ mov ax, 0b102h ; b8 02 b1 ; 0xf9d86
+ int 01ah ; cd 1a ; 0xf9d89
+ cmp ah, 000h ; 80 fc 00 ; 0xf9d8b
+ je near 09d95h ; 0f 84 03 00 ; 0xf9d8e
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf9d92
+ mov ax, bx ; 89 d8 ; 0xf9d95
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9d97 pciutil.c:149
+ pop si ; 5e ; 0xf9d9a
+ pop cx ; 59 ; 0xf9d9b
+ pop bx ; 5b ; 0xf9d9c
+ pop bp ; 5d ; 0xf9d9d
+ retn ; c3 ; 0xf9d9e
+ ; disGetNextSymbol 0xf9d9f LB 0x2a6 -> off=0x0 cb=0000000000000024 uValue=00000000000f879f 'pci_read_config_byte'
+pci_read_config_byte: ; 0xf9d9f LB 0x24
+ push bp ; 55 ; 0xf9d9f pciutil.c:151
+ mov bp, sp ; 89 e5 ; 0xf9da0
+ push cx ; 51 ; 0xf9da2
+ push di ; 57 ; 0xf9da3
+ movzx di, bl ; 0f b6 fb ; 0xf9da4 pciutil.c:153
+ movzx bx, al ; 0f b6 d8 ; 0xf9da7
+ sal bx, 008h ; c1 e3 08 ; 0xf9daa
+ movzx ax, dl ; 0f b6 c2 ; 0xf9dad
+ or bx, ax ; 09 c3 ; 0xf9db0
+ mov ax, 0b108h ; b8 08 b1 ; 0xf9db2
+ int 01ah ; cd 1a ; 0xf9db5
+ movzx ax, cl ; 0f b6 c1 ; 0xf9db7
+ xor dx, dx ; 31 d2 ; 0xf9dba pciutil.c:154
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9dbc
+ pop di ; 5f ; 0xf9dbf
+ pop cx ; 59 ; 0xf9dc0
+ pop bp ; 5d ; 0xf9dc1
+ retn ; c3 ; 0xf9dc2
+ ; disGetNextSymbol 0xf9dc3 LB 0x282 -> off=0x0 cb=0000000000000022 uValue=00000000000f87c3 'pci_read_config_word'
+pci_read_config_word: ; 0xf9dc3 LB 0x22
+ push bp ; 55 ; 0xf9dc3 pciutil.c:156
+ mov bp, sp ; 89 e5 ; 0xf9dc4
+ push cx ; 51 ; 0xf9dc6
+ push di ; 57 ; 0xf9dc7
+ movzx di, bl ; 0f b6 fb ; 0xf9dc8 pciutil.c:158
+ xor ah, ah ; 30 e4 ; 0xf9dcb
+ sal ax, 008h ; c1 e0 08 ; 0xf9dcd
+ movzx bx, dl ; 0f b6 da ; 0xf9dd0
+ or bx, ax ; 09 c3 ; 0xf9dd3
+ mov ax, 0b109h ; b8 09 b1 ; 0xf9dd5
+ int 01ah ; cd 1a ; 0xf9dd8
+ mov ax, cx ; 89 c8 ; 0xf9dda
+ xor dx, dx ; 31 d2 ; 0xf9ddc pciutil.c:159
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9dde
+ pop di ; 5f ; 0xf9de1
+ pop cx ; 59 ; 0xf9de2
+ pop bp ; 5d ; 0xf9de3
+ retn ; c3 ; 0xf9de4
+ ; disGetNextSymbol 0xf9de5 LB 0x260 -> off=0x0 cb=0000000000000027 uValue=00000000000f87e5 'pci_read_config_dword'
+pci_read_config_dword: ; 0xf9de5 LB 0x27
+ push bp ; 55 ; 0xf9de5 pciutil.c:161
+ mov bp, sp ; 89 e5 ; 0xf9de6
+ push cx ; 51 ; 0xf9de8
+ push di ; 57 ; 0xf9de9
+ movzx di, bl ; 0f b6 fb ; 0xf9dea pciutil.c:164
+ movzx bx, al ; 0f b6 d8 ; 0xf9ded
+ sal bx, 008h ; c1 e3 08 ; 0xf9df0
+ movzx ax, dl ; 0f b6 c2 ; 0xf9df3
+ or bx, ax ; 09 c3 ; 0xf9df6
+ mov ax, 0b10ah ; b8 0a b1 ; 0xf9df8
+ int 01ah ; cd 1a ; 0xf9dfb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9dfd
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xf9dff
+ mov dx, cx ; 89 ca ; 0xf9e03
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9e05 pciutil.c:169
+ pop di ; 5f ; 0xf9e08
+ pop cx ; 59 ; 0xf9e09
+ pop bp ; 5d ; 0xf9e0a
+ retn ; c3 ; 0xf9e0b
+ ; disGetNextSymbol 0xf9e0c LB 0x239 -> off=0x0 cb=000000000000001c uValue=00000000000f880c 'pci_write_config_word'
+pci_write_config_word: ; 0xf9e0c LB 0x1c
+ push bp ; 55 ; 0xf9e0c pciutil.c:171
+ mov bp, sp ; 89 e5 ; 0xf9e0d
+ push di ; 57 ; 0xf9e0f
+ movzx di, bl ; 0f b6 fb ; 0xf9e10 pciutil.c:173
+ xor ah, ah ; 30 e4 ; 0xf9e13
+ sal ax, 008h ; c1 e0 08 ; 0xf9e15
+ movzx bx, dl ; 0f b6 da ; 0xf9e18
+ or bx, ax ; 09 c3 ; 0xf9e1b
+ mov ax, 0b10ch ; b8 0c b1 ; 0xf9e1d
+ int 01ah ; cd 1a ; 0xf9e20
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9e22 pciutil.c:174
+ pop di ; 5f ; 0xf9e25
+ pop bp ; 5d ; 0xf9e26
+ retn ; c3 ; 0xf9e27
+ ; disGetNextSymbol 0xf9e28 LB 0x21d -> off=0x0 cb=000000000000001d uValue=00000000000f8828 'vds_is_present'
+vds_is_present: ; 0xf9e28 LB 0x1d
+ push bx ; 53 ; 0xf9e28 vds.c:32
+ push bp ; 55 ; 0xf9e29
+ mov bp, sp ; 89 e5 ; 0xf9e2a
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xf9e2c vds.c:36
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9e2f
+ mov es, ax ; 8e c0 ; 0xf9e32
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xf9e34 vds.c:37
+ je short 09e40h ; 74 06 ; 0xf9e38
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9e3a
+ pop bp ; 5d ; 0xf9e3d
+ pop bx ; 5b ; 0xf9e3e
+ retn ; c3 ; 0xf9e3f
+ xor ax, ax ; 31 c0 ; 0xf9e40
+ pop bp ; 5d ; 0xf9e42 vds.c:38
+ pop bx ; 5b ; 0xf9e43
+ retn ; c3 ; 0xf9e44
+ ; disGetNextSymbol 0xf9e45 LB 0x200 -> off=0x0 cb=000000000000001e uValue=00000000000f8845 'vds_real_to_lin'
+vds_real_to_lin: ; 0xf9e45 LB 0x1e
+ push bx ; 53 ; 0xf9e45 vds.c:67
+ push cx ; 51 ; 0xf9e46
+ push bp ; 55 ; 0xf9e47
+ mov bp, sp ; 89 e5 ; 0xf9e48
+ mov bx, ax ; 89 c3 ; 0xf9e4a
+ mov ax, dx ; 89 d0 ; 0xf9e4c
+ xor dx, dx ; 31 d2 ; 0xf9e4e vds.c:69
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9e50
+ sal ax, 1 ; d1 e0 ; 0xf9e53
+ rcl dx, 1 ; d1 d2 ; 0xf9e55
+ loop 09e53h ; e2 fa ; 0xf9e57
+ xor cx, cx ; 31 c9 ; 0xf9e59
+ add ax, bx ; 01 d8 ; 0xf9e5b
+ adc dx, cx ; 11 ca ; 0xf9e5d
+ pop bp ; 5d ; 0xf9e5f vds.c:70
+ pop cx ; 59 ; 0xf9e60
+ pop bx ; 5b ; 0xf9e61
+ retn ; c3 ; 0xf9e62
+ ; disGetNextSymbol 0xf9e63 LB 0x1e2 -> off=0x0 cb=0000000000000079 uValue=00000000000f8863 'vds_build_sg_list'
+vds_build_sg_list: ; 0xf9e63 LB 0x79
+ push bp ; 55 ; 0xf9e63 vds.c:77
+ mov bp, sp ; 89 e5 ; 0xf9e64
+ push si ; 56 ; 0xf9e66
+ push di ; 57 ; 0xf9e67
+ mov di, ax ; 89 c7 ; 0xf9e68
+ mov si, dx ; 89 d6 ; 0xf9e6a
+ mov ax, bx ; 89 d8 ; 0xf9e6c
+ mov dx, cx ; 89 ca ; 0xf9e6e
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9e70 vds.c:82
+ mov es, si ; 8e c6 ; 0xf9e73
+ mov word [es:di], bx ; 26 89 1d ; 0xf9e75
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9e78
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xf9e7b
+ call 09e45h ; e8 c3 ff ; 0xf9e7f vds.c:83
+ mov es, si ; 8e c6 ; 0xf9e82
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9e84
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9e88
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xf9e8c vds.c:84
+ call 09e28h ; e8 93 ff ; 0xf9e92 vds.c:85
+ test ax, ax ; 85 c0 ; 0xf9e95
+ je short 09each ; 74 13 ; 0xf9e97
+ mov es, si ; 8e c6 ; 0xf9e99 vds.c:87
+ mov ax, 08105h ; b8 05 81 ; 0xf9e9b
+ mov dx, strict word 00000h ; ba 00 00 ; 0xf9e9e
+ int 04bh ; cd 4b ; 0xf9ea1
+ jc near 09ea9h ; 0f 82 02 00 ; 0xf9ea3
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf9ea7
+ cbw ; 98 ; 0xf9ea9
+ jmp short 09ed3h ; eb 27 ; 0xf9eaa vds.c:88
+ mov es, si ; 8e c6 ; 0xf9eac vds.c:90
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xf9eae
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xf9eb4 vds.c:91
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf9eb8
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf9ebc
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xf9ec0
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9ec4 vds.c:92
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xf9ec7
+ mov ax, bx ; 89 d8 ; 0xf9ecb
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xf9ecd
+ xor ax, bx ; 31 d8 ; 0xf9ed1 vds.c:93
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ed3 vds.c:96
+ pop di ; 5f ; 0xf9ed6
+ pop si ; 5e ; 0xf9ed7
+ pop bp ; 5d ; 0xf9ed8
+ retn 00004h ; c2 04 00 ; 0xf9ed9
+ ; disGetNextSymbol 0xf9edc LB 0x169 -> off=0x0 cb=0000000000000030 uValue=00000000000f88dc 'vds_free_sg_list'
+vds_free_sg_list: ; 0xf9edc LB 0x30
+ push bp ; 55 ; 0xf9edc vds.c:102
+ mov bp, sp ; 89 e5 ; 0xf9edd
+ push bx ; 53 ; 0xf9edf
+ push di ; 57 ; 0xf9ee0
+ mov bx, ax ; 89 c3 ; 0xf9ee1
+ call 09e28h ; e8 42 ff ; 0xf9ee3 vds.c:106
+ test ax, ax ; 85 c0 ; 0xf9ee6
+ je short 09efdh ; 74 13 ; 0xf9ee8
+ mov di, bx ; 89 df ; 0xf9eea vds.c:108
+ mov es, dx ; 8e c2 ; 0xf9eec
+ mov ax, 08106h ; b8 06 81 ; 0xf9eee
+ mov dx, strict word 00000h ; ba 00 00 ; 0xf9ef1
+ int 04bh ; cd 4b ; 0xf9ef4
+ jc near 09efch ; 0f 82 02 00 ; 0xf9ef6
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf9efa
+ cbw ; 98 ; 0xf9efc
+ mov es, dx ; 8e c2 ; 0xf9efd vds.c:116
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9eff
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9f05 vds.c:118
+ pop di ; 5f ; 0xf9f08
+ pop bx ; 5b ; 0xf9f09
+ pop bp ; 5d ; 0xf9f0a
+ retn ; c3 ; 0xf9f0b
+ ; disGetNextSymbol 0xf9f0c LB 0x139 -> off=0x4 cb=0000000000000040 uValue=00000000000f8910 '__U4M'
+ db 000h, 000h, 000h, 000h
+__U4M: ; 0xf9f10 LB 0x40
+ pushfw ; 9c ; 0xf9f10 __U4M.asm:37
+ push eax ; 66 50 ; 0xf9f11 __U4M.asm:40
+ push edx ; 66 52 ; 0xf9f13 __U4M.asm:41
+ push ecx ; 66 51 ; 0xf9f15 __U4M.asm:42
+ rol eax, 010h ; 66 c1 c0 10 ; 0xf9f17 __U4M.asm:44
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf9f1b __U4M.asm:45
+ ror eax, 010h ; 66 c1 c8 10 ; 0xf9f1d __U4M.asm:46
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xf9f21 __U4M.asm:47
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xf9f24 __U4M.asm:49
+ db 08bh, 0cbh
+ ; mov cx, bx ; 8b cb ; 0xf9f28 __U4M.asm:50
+ mul ecx ; 66 f7 e1 ; 0xf9f2a __U4M.asm:52
+ pop ecx ; 66 59 ; 0xf9f2d __U4M.asm:54
+ pop edx ; 66 5a ; 0xf9f2f __U4M.asm:56
+ ror eax, 010h ; 66 c1 c8 10 ; 0xf9f31 __U4M.asm:57
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9f35 __U4M.asm:58
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9f37 __U4M.asm:59
+ pop ax ; 58 ; 0xf9f3a __U4M.asm:60
+ rol eax, 010h ; 66 c1 c0 10 ; 0xf9f3b __U4M.asm:61
+ popfw ; 9d ; 0xf9f3f __U4M.asm:103
+ retn ; c3 ; 0xf9f40 __U4M.asm:104
+ times 0xf db 0
+ ; disGetNextSymbol 0xf9f50 LB 0xf5 -> off=0x0 cb=0000000000000040 uValue=00000000000f8950 '__U4D'
+__U4D: ; 0xf9f50 LB 0x40
+ pushfw ; 9c ; 0xf9f50 __U4D.asm:44
+ push eax ; 66 50 ; 0xf9f51 __U4D.asm:47
+ push edx ; 66 52 ; 0xf9f53 __U4D.asm:48
+ push ecx ; 66 51 ; 0xf9f55 __U4D.asm:49
+ rol eax, 010h ; 66 c1 c0 10 ; 0xf9f57 __U4D.asm:51
+ db 08bh, 0c2h
+ ; mov ax, dx ; 8b c2 ; 0xf9f5b __U4D.asm:52
+ ror eax, 010h ; 66 c1 c8 10 ; 0xf9f5d __U4D.asm:53
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xf9f61 __U4D.asm:54
+ shr ecx, 010h ; 66 c1 e9 10 ; 0xf9f64 __U4D.asm:56
+ db 08bh, 0cbh
+ ; mov cx, bx ; 8b cb ; 0xf9f68 __U4D.asm:57
+ div ecx ; 66 f7 f1 ; 0xf9f6a __U4D.asm:59
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xf9f6d __U4D.asm:61
+ pop ecx ; 66 59 ; 0xf9f6f __U4D.asm:62
+ shr edx, 010h ; 66 c1 ea 10 ; 0xf9f71 __U4D.asm:63
+ db 08bh, 0cah
+ ; mov cx, dx ; 8b ca ; 0xf9f75 __U4D.asm:64
+ pop edx ; 66 5a ; 0xf9f77 __U4D.asm:66
+ ror eax, 010h ; 66 c1 c8 10 ; 0xf9f79 __U4D.asm:67
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9f7d __U4D.asm:68
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9f7f __U4D.asm:69
+ pop ax ; 58 ; 0xf9f82 __U4D.asm:70
+ rol eax, 010h ; 66 c1 c0 10 ; 0xf9f83 __U4D.asm:71
+ popfw ; 9d ; 0xf9f87 __U4D.asm:129
+ retn ; c3 ; 0xf9f88 __U4D.asm:130
+ times 0x7 db 0
+ ; disGetNextSymbol 0xf9f90 LB 0xb5 -> off=0x0 cb=0000000000000010 uValue=00000000000f8990 '__U8RS'
+__U8RS: ; 0xf9f90 LB 0x10
+ test si, si ; 85 f6 ; 0xf9f90 __U8RS.asm:40
+ je short 09f9fh ; 74 0b ; 0xf9f92 __U8RS.asm:41
+ shr ax, 1 ; d1 e8 ; 0xf9f94 __U8RS.asm:43
+ rcr bx, 1 ; d1 db ; 0xf9f96 __U8RS.asm:44
+ rcr cx, 1 ; d1 d9 ; 0xf9f98 __U8RS.asm:45
+ rcr dx, 1 ; d1 da ; 0xf9f9a __U8RS.asm:46
+ dec si ; 4e ; 0xf9f9c __U8RS.asm:47
+ jne short 09f94h ; 75 f5 ; 0xf9f9d __U8RS.asm:48
+ retn ; c3 ; 0xf9f9f __U8RS.asm:50
+ ; disGetNextSymbol 0xf9fa0 LB 0xa5 -> off=0x0 cb=0000000000000010 uValue=00000000000f89a0 '__U8LS'
+__U8LS: ; 0xf9fa0 LB 0x10
+ test si, si ; 85 f6 ; 0xf9fa0 __U8LS.asm:40
+ je short 09fafh ; 74 0b ; 0xf9fa2 __U8LS.asm:41
+ sal dx, 1 ; d1 e2 ; 0xf9fa4 __U8LS.asm:43
+ rcl cx, 1 ; d1 d1 ; 0xf9fa6 __U8LS.asm:44
+ rcl bx, 1 ; d1 d3 ; 0xf9fa8 __U8LS.asm:45
+ rcl ax, 1 ; d1 d0 ; 0xf9faa __U8LS.asm:46
+ dec si ; 4e ; 0xf9fac __U8LS.asm:47
+ jne short 09fa4h ; 75 f5 ; 0xf9fad __U8LS.asm:48
+ retn ; c3 ; 0xf9faf __U8LS.asm:50
+ ; disGetNextSymbol 0xf9fb0 LB 0x95 -> off=0x0 cb=0000000000000010 uValue=00000000000f89b0 '_fmemset_'
+_fmemset_: ; 0xf9fb0 LB 0x10
+ push di ; 57 ; 0xf9fb0 fmemset.asm:42
+ mov es, dx ; 8e c2 ; 0xf9fb1 fmemset.asm:44
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xf9fb3 fmemset.asm:45
+ xchg al, bl ; 86 d8 ; 0xf9fb5 fmemset.asm:46
+ rep stosb ; f3 aa ; 0xf9fb7 fmemset.asm:47
+ xchg al, bl ; 86 d8 ; 0xf9fb9 fmemset.asm:48
+ pop di ; 5f ; 0xf9fbb fmemset.asm:50
+ retn ; c3 ; 0xf9fbc fmemset.asm:51
+ times 0x3 db 0
+ ; disGetNextSymbol 0xf9fc0 LB 0x85 -> off=0x0 cb=000000000000003a uValue=00000000000f89c0 '_fmemcpy_'
+_fmemcpy_: ; 0xf9fc0 LB 0x3a
+ push bp ; 55 ; 0xf9fc0 fmemcpy.asm:42
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xf9fc1 fmemcpy.asm:43
+ push di ; 57 ; 0xf9fc3 fmemcpy.asm:44
+ push DS ; 1e ; 0xf9fc4 fmemcpy.asm:45
+ push si ; 56 ; 0xf9fc5 fmemcpy.asm:46
+ mov es, dx ; 8e c2 ; 0xf9fc6 fmemcpy.asm:48
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xf9fc8 fmemcpy.asm:49
+ mov ds, cx ; 8e d9 ; 0xf9fca fmemcpy.asm:50
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xf9fcc fmemcpy.asm:51
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9fce fmemcpy.asm:52
+ rep movsb ; f3 a4 ; 0xf9fd1 fmemcpy.asm:53
+ pop si ; 5e ; 0xf9fd3 fmemcpy.asm:55
+ pop DS ; 1f ; 0xf9fd4 fmemcpy.asm:56
+ pop di ; 5f ; 0xf9fd5 fmemcpy.asm:57
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xf9fd6 fmemcpy.asm:58
+ pop bp ; 5d ; 0xf9fd8 fmemcpy.asm:59
+ retn ; c3 ; 0xf9fd9 fmemcpy.asm:60
+ add byte [bx+si], al ; 00 00 ; 0xf9fda
+ add byte [bx+si], al ; 00 00 ; 0xf9fdc
+ add byte [bx+si], al ; 00 00 ; 0xf9fde
+ adc byte [bx+si-05feeh], ah ; 10 a0 12 a0 ; 0xf9fe0
+ push SS ; 16 ; 0xf9fe4
+ mov AL, byte [0a016h] ; a0 16 a0 ; 0xf9fe5
+ push SS ; 16 ; 0xf9fe8
+ mov AL, byte [0a018h] ; a0 18 a0 ; 0xf9fe9
+ sbb byte [bx+si-05fe6h], ah ; 18 a0 1a a0 ; 0xf9fec
+ push DS ; 1e ; 0xf9ff0
+ mov AL, byte [0a01eh] ; a0 1e a0 ; 0xf9ff1
+ and byte [bx+si-05fdbh], ah ; 20 a0 25 a0 ; 0xf9ff4
+ daa ; 27 ; 0xf9ff8
+ db 0a0h
+ ; disGetNextSymbol 0xf9ffa LB 0x4b -> off=0x0 cb=000000000000003a uValue=00000000000089fa 'apm_worker'
+apm_worker: ; 0xf9ffa LB 0x3a
+ sti ; fb ; 0xf9ffa apm_pm.asm:56
+ push ax ; 50 ; 0xf9ffb apm_pm.asm:58
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xf9ffc apm_pm.asm:59
+ sub AL, strict byte 004h ; 2c 04 ; 0xf9ffe apm_pm.asm:60
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xfa000 apm_pm.asm:61
+ sal bp, 1 ; d1 e5 ; 0xfa002 apm_pm.asm:62
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfa004 apm_pm.asm:63
+ pop ax ; 58 ; 0xfa006 apm_pm.asm:64
+ mov AH, strict byte 053h ; b4 53 ; 0xfa007 apm_pm.asm:65
+ jnc short 0a030h ; 73 25 ; 0xfa009 apm_pm.asm:66
+ jmp word [cs:bp-06020h] ; 2e ff a6 e0 9f ; 0xfa00b apm_pm.asm:68
+ jmp short 0a02eh ; eb 1c ; 0xfa010 apm_pm.asm:71
+ sti ; fb ; 0xfa012 apm_pm.asm:74
+ hlt ; f4 ; 0xfa013 apm_pm.asm:75
+ jmp short 0a02eh ; eb 18 ; 0xfa014 apm_pm.asm:76
+ jmp short 0a02eh ; eb 16 ; 0xfa016 apm_pm.asm:85
+ jmp short 0a030h ; eb 16 ; 0xfa018 apm_pm.asm:91
+ mov AH, strict byte 080h ; b4 80 ; 0xfa01a apm_pm.asm:94
+ jmp short 0a032h ; eb 14 ; 0xfa01c apm_pm.asm:95
+ jmp short 0a030h ; eb 10 ; 0xfa01e apm_pm.asm:100
+ mov ax, 00102h ; b8 02 01 ; 0xfa020 apm_pm.asm:103
+ jmp short 0a02eh ; eb 09 ; 0xfa023 apm_pm.asm:104
+ jmp short 0a02eh ; eb 07 ; 0xfa025 apm_pm.asm:108
+ mov BL, strict byte 000h ; b3 00 ; 0xfa027 apm_pm.asm:111
+ mov cx, strict word 00000h ; b9 00 00 ; 0xfa029 apm_pm.asm:112
+ jmp short 0a02eh ; eb 00 ; 0xfa02c apm_pm.asm:113
+ clc ; f8 ; 0xfa02e apm_pm.asm:116
+ retn ; c3 ; 0xfa02f apm_pm.asm:117
+ mov AH, strict byte 009h ; b4 09 ; 0xfa030 apm_pm.asm:120
+ stc ; f9 ; 0xfa032 apm_pm.asm:123
+ retn ; c3 ; 0xfa033 apm_pm.asm:124
+ ; disGetNextSymbol 0xfa034 LB 0x11 -> off=0x0 cb=0000000000000011 uValue=00000000000f8a34 'apm_pm16_entry'
+apm_pm16_entry: ; 0xfa034 LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xfa034 apm_pm.asm:136
+ push DS ; 1e ; 0xfa036 apm_pm.asm:142
+ push bp ; 55 ; 0xfa037 apm_pm.asm:143
+ push CS ; 0e ; 0xfa038 apm_pm.asm:145
+ pop bp ; 5d ; 0xfa039 apm_pm.asm:146
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfa03a apm_pm.asm:147
+ mov ds, bp ; 8e dd ; 0xfa03d apm_pm.asm:148
+ call 09ffah ; e8 b8 ff ; 0xfa03f apm_pm.asm:150
+ pop bp ; 5d ; 0xfa042 apm_pm.asm:152
+ pop DS ; 1f ; 0xfa043 apm_pm.asm:153
+ retf ; cb ; 0xfa044 apm_pm.asm:155
+
+ ; Padding 0x39bb bytes at 0xfa045
+ times 14779 db 0
+
+section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
+ ; disGetNextSymbol 0xfda00 LB 0x3cb -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service'
+bios32_service: ; 0xfda00 LB 0x26
+ pushfw ; 9c ; 0xfda00 pcibio32.asm:52
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61
+ db 00fh
+ add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13
+ add byte [bx+si], al ; 00 00 ; 0xfda17
+ mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64
+ popfw ; 9d ; 0xfda20 pcibio32.asm:66
+ retf ; cb ; 0xfda21 pcibio32.asm:67
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71
+ ; disGetNextSymbol 0xfda26 LB 0x3a5 -> off=0x0 cb=000000000000001a uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0x1a
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:80
+ cld ; fc ; 0xfda27 pcibio32.asm:81
+ push ES ; 06 ; 0xfda28 pcibio32.asm:83
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:84
+ call 0db78h ; e8 4b 01 ; 0xfda2a pcibio32.asm:85
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:86
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:87
+ popfw ; 9d ; 0xfda31 pcibio32.asm:89
+ retf ; cb ; 0xfda32 pcibio32.asm:90
+ times 0xd db 0
+ ; disGetNextSymbol 0xfda40 LB 0x38b -> off=0x0 cb=0000000000000021 uValue=00000000000f0040 'apm_pm32_entry'
+apm_pm32_entry: ; 0xfda40 LB 0x21
+ push bp ; 55 ; 0xfda40 apm_pm.asm:180
+ mov ebp, cs ; 66 8c cd ; 0xfda41 apm_pm.asm:182
+ push ebp ; 66 55 ; 0xfda44 apm_pm.asm:183
+ mov bp, 0da5fh ; bd 5f da ; 0xfda46 apm_pm.asm:184
+ add byte [bx+si], al ; 00 00 ; 0xfda49
+ push ebp ; 66 55 ; 0xfda4b apm_pm.asm:185
+ push CS ; 0e ; 0xfda4d apm_pm.asm:187
+ pop bp ; 5d ; 0xfda4e apm_pm.asm:188
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xfda4f apm_pm.asm:189
+ push ebp ; 66 55 ; 0xfda52 apm_pm.asm:190
+ mov bp, 0a036h ; bd 36 a0 ; 0xfda54 apm_pm.asm:192
+ add byte [bx+si], al ; 00 00 ; 0xfda57
+ push ebp ; 66 55 ; 0xfda59 apm_pm.asm:193
+ mov AH, strict byte 003h ; b4 03 ; 0xfda5b apm_pm.asm:195
+ db 066h, 0cbh
+ ; retf ; 66 cb ; 0xfda5d
+ pop bp ; 5d ; 0xfda5f apm_pm.asm:202
+ retf ; cb ; 0xfda60 apm_pm.asm:203
+ ; disGetNextSymbol 0xfda61 LB 0x36a -> off=0x0 cb=0000000000000022 uValue=00000000000f0061 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda61 LB 0x22
+ push bp ; 55 ; 0xfda61 pci32.c:188
+ mov bp, sp ; 89 e5 ; 0xfda62
+ push bx ; 53 ; 0xfda64
+ and dl, 0fch ; 80 e2 fc ; 0xfda65 pci32.c:190
+ mov bx, dx ; 89 d3 ; 0xfda68
+ mov dx, 00cf8h ; ba f8 0c ; 0xfda6a
+ add byte [bx+si], al ; 00 00 ; 0xfda6d
+ db 00fh, 0b7h, 0c0h
+ ; movzx ax, ax ; 0f b7 c0 ; 0xfda6f
+ sal ax, 008h ; c1 e0 08 ; 0xfda72
+ or ax, strict word 00000h ; 0d 00 00 ; 0xfda75
+ add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda78
+ out DX, ax ; ef ; 0xfda7c
+ lea sp, [di-004h] ; 8d 65 fc ; 0xfda7d pci32.c:191
+ pop bx ; 5b ; 0xfda80
+ pop bp ; 5d ; 0xfda81
+ retn ; c3 ; 0xfda82
+ ; disGetNextSymbol 0xfda83 LB 0x348 -> off=0x0 cb=00000000000000f7 uValue=00000000000f0083 'pci32_find_device_'
+pci32_find_device_: ; 0xfda83 LB 0xf7
+ push bp ; 55 ; 0xfda83 pci32.c:221
+ mov bp, sp ; 89 e5 ; 0xfda84
+ push cx ; 51 ; 0xfda86
+ push si ; 56 ; 0xfda87
+ push di ; 57 ; 0xfda88
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda89
+ push ax ; 50 ; 0xfda8c
+ mov cx, dx ; 89 d1 ; 0xfda8d
+ mov si, bx ; 89 de ; 0xfda8f
+ test bx, bx ; 85 db ; 0xfda91 pci32.c:231
+ xor bx, bx ; 31 db ; 0xfda93 pci32.c:238
+ mov byte [di-010h], 000h ; c6 45 f0 00 ; 0xfda95 pci32.c:239
+ test bl, 007h ; f6 c3 07 ; 0xfda99 pci32.c:249
+ jne short 0dad4h ; 75 36 ; 0xfda9c
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda9e pci32.c:250
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfdaa1
+ add byte [bx+si], al ; 00 00 ; 0xfdaa4
+ call 0da5fh ; e8 b6 ff ; 0xfdaa6
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfdaab pci32.c:251
+ add byte [bx+si], al ; 00 00 ; 0xfdaae
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdab0
+ in AL, DX ; ec ; 0xfdab2
+ mov byte [di-014h], al ; 88 45 ec ; 0xfdab3
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfdab6 pci32.c:252
+ jne short 0dac2h ; 75 08 ; 0xfdab8
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfdaba pci32.c:253
+ jmp near 0db4ah ; e9 8a 00 ; 0xfdabd pci32.c:254
+ add byte [bx+si], al ; 00 00 ; 0xfdac0
+ test byte [di-014h], 080h ; f6 45 ec 80 ; 0xfdac2 pci32.c:256
+ je short 0dacfh ; 74 07 ; 0xfdac6
+ mov di, strict word 00001h ; bf 01 00 ; 0xfdac8 pci32.c:257
+ add byte [bx+si], al ; 00 00 ; 0xfdacb
+ jmp short 0dad4h ; eb 05 ; 0xfdacd pci32.c:258
+ mov di, strict word 00008h ; bf 08 00 ; 0xfdacf pci32.c:259
+ add byte [bx+si], al ; 00 00 ; 0xfdad2
+ mov al, byte [di-014h] ; 8a 45 ec ; 0xfdad4 pci32.c:270
+ and AL, strict byte 007h ; 24 07 ; 0xfdad7
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfdad9
+ jne short 0db03h ; 75 26 ; 0xfdadb
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdadd
+ mov dx, ax ; 89 c2 ; 0xfdae0
+ sar dx, 008h ; c1 fa 08 ; 0xfdae2
+ test dx, dx ; 85 d2 ; 0xfdae5
+ jne short 0db03h ; 75 1a ; 0xfdae7
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdae9 pci32.c:272
+ add byte [bx+si], al ; 00 00 ; 0xfdaec
+ call 0da5fh ; e8 6e ff ; 0xfdaee
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfdaf3 pci32.c:273
+ add byte [bx+si], al ; 00 00 ; 0xfdaf6
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdaf8
+ in AL, DX ; ec ; 0xfdafa
+ cmp al, byte [di-010h] ; 3a 45 f0 ; 0xfdafb pci32.c:274
+ jbe short 0db03h ; 76 03 ; 0xfdafe
+ mov byte [di-010h], al ; 88 45 f0 ; 0xfdb00 pci32.c:275
+ test si, si ; 85 f6 ; 0xfdb03 pci32.c:279
+ je short 0db0eh ; 74 07 ; 0xfdb05
+ mov ax, strict word 00008h ; b8 08 00 ; 0xfdb07
+ add byte [bx+si], al ; 00 00 ; 0xfdb0a
+ jmp short 0db10h ; eb 02 ; 0xfdb0c
+ xor ax, ax ; 31 c0 ; 0xfdb0e
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdb10
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb13
+ call 0da5fh ; e8 46 ff ; 0xfdb16
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfch ; ba fc 0c ; 0xfdb1b pci32.c:280
+ add byte [bx+si], al ; 00 00 ; 0xfdb1e
+ in ax, DX ; ed ; 0xfdb20
+ mov word [di-018h], ax ; 89 45 e8 ; 0xfdb21
+ mov word [di-020h], strict word 00000h ; c7 45 e0 00 00 ; 0xfdb24 pci32.c:281
+ add byte [bx+si], al ; 00 00 ; 0xfdb29
+ test si, si ; 85 f6 ; 0xfdb2b pci32.c:284
+ je short 0db35h ; 74 06 ; 0xfdb2d
+ shr ax, 008h ; c1 e8 08 ; 0xfdb2f pci32.c:285
+ mov word [di-018h], ax ; 89 45 e8 ; 0xfdb32
+ mov ax, word [di-018h] ; 8b 45 e8 ; 0xfdb35 pci32.c:292
+ cmp ax, word [di-024h] ; 3b 45 dc ; 0xfdb38
+ je short 0db43h ; 74 06 ; 0xfdb3b
+ cmp word [di-020h], strict byte 00000h ; 83 7d e0 00 ; 0xfdb3d pci32.c:293
+ je short 0db4ah ; 74 07 ; 0xfdb41
+ dec cx ; 49 ; 0xfdb43
+ cmp ecx, strict byte 0ffffffffh ; 66 83 f9 ff ; 0xfdb44
+ je short 0db62h ; 74 18 ; 0xfdb48
+ add bx, di ; 01 fb ; 0xfdb4a pci32.c:301
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb4c pci32.c:302
+ sar ax, 008h ; c1 f8 08 ; 0xfdb4f
+ mov word [di-01ch], ax ; 89 45 e4 ; 0xfdb52
+ movzx ax, byte [di-010h] ; 0f b6 45 f0 ; 0xfdb55
+ cmp ax, word [di-01ch] ; 3b 45 e4 ; 0xfdb59
+ jnl near 0da97h ; 0f 8d 37 ff ; 0xfdb5c
+ db 0ffh
+ jmp word [bp-07dh] ; ff 66 83 ; 0xfdb61
+ stc ; f9 ; 0xfdb64
+ push word [di+005h] ; ff 75 05 ; 0xfdb65
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb68
+ jmp short 0db72h ; eb 05 ; 0xfdb6b
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb6d
+ add byte [bx+si], al ; 00 00 ; 0xfdb70
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdb72 pci32.c:309
+ pop di ; 5f ; 0xfdb75
+ pop si ; 5e ; 0xfdb76
+ pop cx ; 59 ; 0xfdb77
+ pop bp ; 5d ; 0xfdb78
+ retn ; c3 ; 0xfdb79
+ ; disGetNextSymbol 0xfdb7a LB 0x251 -> off=0x0 cb=0000000000000251 uValue=00000000000f017a '_pci32_function'
+_pci32_function: ; 0xfdb7a LB 0x251
+ push bp ; 55 ; 0xfdb7a pci32.c:311
+ mov bp, sp ; 89 e5 ; 0xfdb7b
+ push bx ; 53 ; 0xfdb7d
+ push si ; 56 ; 0xfdb7e
+ push di ; 57 ; 0xfdb7f
+ push ax ; 50 ; 0xfdb80
+ push ax ; 50 ; 0xfdb81
+ and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb82 pci32.c:318
+ sub AL, strict byte 0feh ; 2c fe ; 0xfdb8a
+ inc word [bx+si] ; ff 00 ; 0xfdb8c
+ add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb8e
+ xor ah, ah ; 30 e4 ; 0xfdb92
+ cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb94
+ jbe near 0dc37h ; 0f 86 99 00 ; 0xfdb9a
+ add byte [bx+si], al ; 00 00 ; 0xfdb9e
+ cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdba0
+ test ax, strict word 00001h ; a9 01 00 ; 0xfdba6
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdba9
+ or byte [bx+si], al ; 08 00 ; 0xfdbac
+ jc near 0ddb1h ; 0f 82 ff 01 ; 0xfdbae
+ add byte [bx+si], al ; 00 00 ; 0xfdbb2
+ cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdbb4
+ test AL, strict byte 000h ; a8 00 ; 0xfdbba
+ add byte [bx+si], al ; 00 00 ; 0xfdbbc
+ jmp near 0ddb1h ; e9 f0 01 ; 0xfdbbe
+ add byte [bx+si], al ; 00 00 ; 0xfdbc1
+ cmp eax, strict dword 028740002h ; 66 3d 02 00 74 28 ; 0xfdbc3
+ cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdbc9
+ loopne 0dbd2h ; e0 01 ; 0xfdbcf
+ add byte [bx+si], al ; 00 00 ; 0xfdbd1
+ mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdbd3 pci32.c:323
+ inc bp ; 45 ; 0xfdbdb
+ sbb byte [bx+si], dl ; 18 10 ; 0xfdbdc
+ add dh, byte [bx+di] ; 02 31 ; 0xfdbde
+ sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbe0
+ and bh, al ; 20 c7 ; 0xfdbe4
+ inc bp ; 45 ; 0xfdbe6
+ sbb AL, strict byte 050h ; 1c 50 ; 0xfdbe7
+ inc bx ; 43 ; 0xfdbe9
+ dec cx ; 49 ; 0xfdbea
+ and cl, ch ; 20 e9 ; 0xfdbeb
+ rol byte [bx+di], CL ; d2 01 ; 0xfdbed
+ add byte [bx+si], al ; 00 00 ; 0xfdbef
+ cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbf1 pci32.c:333
+ jne short 0dc05h ; 75 0d ; 0xfdbf6
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbf8 pci32.c:334
+ xor ah, ah ; 30 e4 ; 0xfdbfb
+ or ah, 083h ; 80 cc 83 ; 0xfdbfd
+ jmp near 0ddb9h ; e9 b6 01 ; 0xfdc00 pci32.c:335
+ add byte [bx+si], al ; 00 00 ; 0xfdc03
+ xor bx, bx ; 31 db ; 0xfdc05 pci32.c:337
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc07
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdc0b
+ sal ax, 010h ; c1 e0 10 ; 0xfdc0f
+ db 00fh, 0b7h, 04dh, 01ch
+ ; movzx cx, [di+01ch] ; 0f b7 4d 1c ; 0xfdc12
+ or ax, cx ; 09 c8 ; 0xfdc16
+ call 0da81h ; e8 66 fe ; 0xfdc18
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc1c
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc20
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc23 pci32.c:339
+ xor ah, ah ; 30 e4 ; 0xfdc26
+ or ah, 086h ; 80 cc 86 ; 0xfdc28
+ jmp near 0ddb9h ; e9 8b 01 ; 0xfdc2b
+ add byte [bx+si], al ; 00 00 ; 0xfdc2e
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc30 pci32.c:340
+ jmp near 0ddc1h ; e9 8a 01 ; 0xfdc34 pci32.c:345
+ add byte [bx+si], al ; 00 00 ; 0xfdc37
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc39 pci32.c:347
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc3d
+ mov bx, strict word 00001h ; bb 01 00 ; 0xfdc40
+ add byte [bx+si], al ; 00 00 ; 0xfdc43
+ call 0da81h ; e8 39 fe ; 0xfdc45
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc49
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc4d
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc50 pci32.c:349
+ xor ah, ah ; 30 e4 ; 0xfdc53
+ or ah, 086h ; 80 cc 86 ; 0xfdc55
+ jmp near 0ddb9h ; e9 5e 01 ; 0xfdc58 pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdc5b
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc5d pci32.c:352
+ jmp near 0ddc1h ; e9 5d 01 ; 0xfdc61 pci32.c:354
+ add byte [bx+si], al ; 00 00 ; 0xfdc64
+ cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc66 pci32.c:361
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc6e pci32.c:362
+ xor ah, ah ; 30 e4 ; 0xfdc71
+ or ah, 087h ; 80 cc 87 ; 0xfdc73
+ jmp near 0ddb9h ; e9 40 01 ; 0xfdc76 pci32.c:363
+ add byte [bx+si], al ; 00 00 ; 0xfdc79
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc7b pci32.c:365
+ db 00fh, 0b7h, 045h, 018h
+ ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc7f
+ call 0da5fh ; e8 d9 fd ; 0xfdc83
+ db 0ffh
+ dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc87
+ xor ah, ah ; 30 e4 ; 0xfdc8b
+ cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc8d
+ jbe short 0dd04h ; 76 6f ; 0xfdc93
+ cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc95
+ test ax, strict word 00000h ; a9 00 00 ; 0xfdc9b
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc9e
+ or AL, strict byte 000h ; 0c 00 ; 0xfdca1
+ je near 0dd2ah ; 0f 84 83 00 ; 0xfdca3
+ add byte [bx+si], al ; 00 00 ; 0xfdca7
+ cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdca9
+ jmp near 0ddc1h ; e9 0f 01 ; 0xfdcaf
+ add byte [bx+si], al ; 00 00 ; 0xfdcb2
+ cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdcb4
+ cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdcba
+ inc word [bx+si] ; ff 00 ; 0xfdcc0
+ add byte [bx+si], al ; 00 00 ; 0xfdcc2
+ mov bx, word [di+020h] ; 8b 5d 20 ; 0xfdcc4 pci32.c:368
+ xor bl, bl ; 30 db ; 0xfdcc7
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcc9
+ xor ah, ah ; 30 e4 ; 0xfdccc
+ and AL, strict byte 003h ; 24 03 ; 0xfdcce
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcd0
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcd3
+ add byte [bx+si], al ; 00 00 ; 0xfdcd7
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcd9
+ in AL, DX ; ec ; 0xfdcdb
+ or bx, ax ; 09 c3 ; 0xfdcdc
+ mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcde
+ jmp near 0ddc1h ; e9 dc 00 ; 0xfdce2 pci32.c:369
+ add byte [bx+si], al ; 00 00 ; 0xfdce5
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdce7 pci32.c:371
+ xor ah, ah ; 30 e4 ; 0xfdcea
+ and AL, strict byte 002h ; 24 02 ; 0xfdcec
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcee
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcf1
+ add byte [bx+si], al ; 00 00 ; 0xfdcf5
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcf7
+ in eax, DX ; 66 ed ; 0xfdcf9
+ mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdcfb
+ jmp near 0ddc1h ; e9 bf 00 ; 0xfdcff pci32.c:372
+ add byte [bx+si], al ; 00 00 ; 0xfdd02
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd04 pci32.c:374
+ add byte [bx+si], al ; 00 00 ; 0xfdd07
+ in ax, DX ; ed ; 0xfdd09
+ mov word [di+020h], ax ; 89 45 20 ; 0xfdd0a
+ jmp near 0ddc1h ; e9 b1 00 ; 0xfdd0d pci32.c:375
+ add byte [bx+si], al ; 00 00 ; 0xfdd10
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd12 pci32.c:377
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd15
+ xor dh, dh ; 30 f6 ; 0xfdd18
+ and dl, 003h ; 80 e2 03 ; 0xfdd1a
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd1d
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd20
+ add byte [bx+si], al ; 00 00 ; 0xfdd24
+ out DX, AL ; ee ; 0xfdd26
+ jmp near 0ddc1h ; e9 97 00 ; 0xfdd27 pci32.c:378
+ add byte [bx+si], al ; 00 00 ; 0xfdd2a
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdd2c pci32.c:380
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd30
+ xor dh, dh ; 30 f6 ; 0xfdd33
+ and dl, 002h ; 80 e2 02 ; 0xfdd35
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd38
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd3b
+ add byte [bx+si], al ; 00 00 ; 0xfdd3f
+ out DX, eax ; 66 ef ; 0xfdd41
+ jmp near 0ddc1h ; e9 7b 00 ; 0xfdd43 pci32.c:381
+ add byte [bx+si], al ; 00 00 ; 0xfdd46
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd48 pci32.c:383
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd4b
+ add byte [bx+si], al ; 00 00 ; 0xfdd4e
+ out DX, ax ; ef ; 0xfdd50
+ jmp short 0ddc3h ; eb 70 ; 0xfdd51 pci32.c:387
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd53 pci32.c:389
+ mov es, [di+028h] ; 8e 45 28 ; 0xfdd57
+ mov [di-010h], es ; 8c 45 f0 ; 0xfdd5a
+ mov bx, ax ; 89 c3 ; 0xfdd5d
+ mov edx, dword [di] ; 66 8b 15 ; 0xfdd5f pci32.c:393
+ jo short 0dd57h ; 70 f3 ; 0xfdd62
+ add byte [bx+si], al ; 00 00 ; 0xfdd64
+ db 066h, 026h, 03bh, 010h
+ ; cmp edx, dword [es:bx+si] ; 66 26 3b 10 ; 0xfdd66
+ jbe short 0dd7eh ; 76 12 ; 0xfdd6a
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd6c pci32.c:394
+ xor ah, ah ; 30 e4 ; 0xfdd6f
+ or ah, 089h ; 80 cc 89 ; 0xfdd71
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd74
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd78 pci32.c:395
+ jmp short 0dda4h ; eb 26 ; 0xfdd7c pci32.c:396
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd7e pci32.c:397
+ db 066h, 026h, 08bh, 050h, 006h
+ ; mov edx, dword [es:bx+si+006h] ; 66 26 8b 50 06 ; 0xfdd81
+ mov word [di-014h], dx ; 89 55 ec ; 0xfdd86
+ mov di, word [es:bx+si+002h] ; 26 8b 78 02 ; 0xfdd89
+ mov dx, ds ; 8c da ; 0xfdd8d
+ mov si, 0f190h ; be 90 f1 ; 0xfdd8f
+ add byte [bx+si], al ; 00 00 ; 0xfdd92
+ mov es, [di-014h] ; 8e 45 ec ; 0xfdd94
+ push DS ; 1e ; 0xfdd97
+ db 066h, 08eh, 0dah
+ ; mov ds, edx ; 66 8e da ; 0xfdd98
+ rep movsb ; f3 a4 ; 0xfdd9b
+ pop DS ; 1f ; 0xfdd9d
+ mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd9e pci32.c:399
+ jo short 0dd9bh ; 70 f3 ; 0xfdda6
+ add byte [bx+si], al ; 00 00 ; 0xfdda8
+ mov es, [di-010h] ; 8e 45 f0 ; 0xfddaa
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfddad
+ jmp short 0ddc3h ; eb 10 ; 0xfddb1 pci32.c:402
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfddb3 pci32.c:405
+ xor ah, ah ; 30 e4 ; 0xfddb6
+ or ah, 081h ; 80 cc 81 ; 0xfddb8
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfddbb
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfddbf pci32.c:406
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfddc3 pci32.c:408
+ pop di ; 5f ; 0xfddc6
+ pop si ; 5e ; 0xfddc7
+ pop bx ; 5b ; 0xfddc8
+ pop bp ; 5d ; 0xfddc9
+ retn ; c3 ; 0xfddca
+
+ ; Padding 0x1 bytes at 0xfddcb
+ times 1 db 0
+
+section BIOS32CONST progbits vstart=0xddcc align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32CONST2 progbits vstart=0xddcc align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32_DATA progbits vstart=0xddcc align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+ ; Padding 0x234 bytes at 0xfddcc
+ times 564 db 0
+
+section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO
+ ; disGetNextSymbol 0xfe000 LB 0x2000 -> off=0x0 cb=0000000000000030 uValue=00000000000f0000 'biosorg_check_before_or_at_0E02Eh'
+biosorg_check_before_or_at_0E02Eh: ; 0xfe000 LB 0x30
+ times 0x2e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe030 LB 0x1fd0 -> off=0x0 cb=0000000000000004 uValue=00000000000f0030 'eoi_both_pics'
+eoi_both_pics: ; 0xfe030 LB 0x4
+ mov AL, strict byte 020h ; b0 20 ; 0xfe030 orgs.asm:238
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:239
+ ; disGetNextSymbol 0xfe034 LB 0x1fcc -> off=0x0 cb=0000000000000005 uValue=00000000000f0034 'eoi_master_pic'
+eoi_master_pic: ; 0xfe034 LB 0x5
+ mov AL, strict byte 020h ; b0 20 ; 0xfe034 orgs.asm:241
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:242
+ retn ; c3 ; 0xfe038 orgs.asm:243
+ ; disGetNextSymbol 0xfe039 LB 0x1fc7 -> off=0x0 cb=000000000000000b uValue=0000000000000039 'set_int_vects'
+set_int_vects: ; 0xfe039 LB 0xb
+ mov word [bx], ax ; 89 07 ; 0xfe039 orgs.asm:250
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:251
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:252
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:253
+ retn ; c3 ; 0xfe043 orgs.asm:254
+ ; disGetNextSymbol 0xfe044 LB 0x1fbc -> off=0x0 cb=0000000000000006 uValue=00000000000f0044 'eoi_jmp_post'
+eoi_jmp_post: ; 0xfe044 LB 0x6
+ in AL, strict byte 060h ; e4 60 ; 0xfe044 orgs.asm:262
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:263
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:264
+ ; disGetNextSymbol 0xfe04a LB 0x1fb6 -> off=0x0 cb=0000000000000009 uValue=00000000000f004a 'no_eoi_jmp_post'
+no_eoi_jmp_post: ; 0xfe04a LB 0x9
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe04a orgs.asm:267
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:268
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:269
+ ; disGetNextSymbol 0xfe053 LB 0x1fad -> off=0x0 cb=0000000000000002 uValue=00000000000f0053 'seg_40_value'
+seg_40_value: ; 0xfe053 LB 0x2
+ inc ax ; 40 ; 0xfe053
+ times 0x1 db 0
+ ; disGetNextSymbol 0xfe055 LB 0x1fab -> off=0x0 cb=0000000000000006 uValue=00000000000f0055 'biosorg_check_before_or_at_0E059h'
+biosorg_check_before_or_at_0E059h: ; 0xfe055 LB 0x6
+ add byte [bx+si], al ; 00 00 ; 0xfe055
+ add byte [bx+si], al ; 00 00 ; 0xfe057
+ pop ax ; 58 ; 0xfe059
+ dec bp ; 4d ; 0xfe05a
+ ; disGetNextSymbol 0xfe05b LB 0x1fa5 -> off=0x0 cb=000000000000006e uValue=00000000000f005b 'post'
+post: ; 0xfe05b LB 0x6e
+ cli ; fa ; 0xfe05b orgs.asm:278
+ smsw ax ; 0f 01 e0 ; 0xfe05c orgs.asm:284
+ test ax, strict word 00001h ; a9 01 00 ; 0xfe05f orgs.asm:285
+ je short 0e06ah ; 74 06 ; 0xfe062 orgs.asm:286
+ mov AL, strict byte 001h ; b0 01 ; 0xfe064 orgs.asm:295
+ out strict byte 092h, AL ; e6 92 ; 0xfe066 orgs.asm:296
+ jmp short 0e068h ; eb fe ; 0xfe068 orgs.asm:297
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe06a orgs.asm:302
+ out strict byte 070h, AL ; e6 70 ; 0xfe06c orgs.asm:303
+ in AL, strict byte 071h ; e4 71 ; 0xfe06e orgs.asm:304
+ xchg ah, al ; 86 c4 ; 0xfe070 orgs.asm:307
+ in AL, strict byte 064h ; e4 64 ; 0xfe072 orgs.asm:311
+ test AL, strict byte 004h ; a8 04 ; 0xfe074 orgs.asm:312
+ je short 0e08bh ; 74 13 ; 0xfe076 orgs.asm:313
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe078 orgs.asm:316
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe07a orgs.asm:317
+ jne short 0e08bh ; 75 0d ; 0xfe07c orgs.asm:318
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe07e orgs.asm:324
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe083 orgs.asm:325
+ jne short 0e064h ; 75 d9 ; 0xfe089 orgs.asm:326
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe08b orgs.asm:330
+ out strict byte 070h, AL ; e6 70 ; 0xfe08d orgs.asm:331
+ mov AL, strict byte 000h ; b0 00 ; 0xfe08f orgs.asm:332
+ out strict byte 071h, AL ; e6 71 ; 0xfe091 orgs.asm:333
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe093 orgs.asm:337
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe095 orgs.asm:338
+ je short 0e0abh ; 74 12 ; 0xfe097 orgs.asm:339
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe099 orgs.asm:340
+ je short 0e0abh ; 74 0e ; 0xfe09b orgs.asm:341
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe09d orgs.asm:343
+ out strict byte 00dh, AL ; e6 0d ; 0xfe09f orgs.asm:346
+ out strict byte 0dah, AL ; e6 da ; 0xfe0a1 orgs.asm:347
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe0a3 orgs.asm:350
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe0a5 orgs.asm:351
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a7 orgs.asm:352
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a9 orgs.asm:353
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0ab orgs.asm:357
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0ad orgs.asm:358
+ je short 0e0c9h ; 74 18 ; 0xfe0af orgs.asm:359
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0b1 orgs.asm:361
+ jnc short 0e0c9h ; 73 14 ; 0xfe0b3 orgs.asm:362
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0b5 orgs.asm:363
+ jne short 0e0bch ; 75 03 ; 0xfe0b7 orgs.asm:364
+ jmp near 0e363h ; e9 a7 02 ; 0xfe0b9 orgs.asm:365
+ mov sp, 00400h ; bc 00 04 ; 0xfe0bc orgs.asm:368
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0bf orgs.asm:370
+ je short 0e044h ; 74 81 ; 0xfe0c1 orgs.asm:371
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0c3 orgs.asm:373
+ je short 0e04ah ; 74 83 ; 0xfe0c5 orgs.asm:374
+ jmp short 0e0c9h ; eb 00 ; 0xfe0c7 orgs.asm:378
+ ; disGetNextSymbol 0xfe0c9 LB 0x1f37 -> off=0x0 cb=00000000000001f6 uValue=00000000000f00c9 'normal_post'
+normal_post: ; 0xfe0c9 LB 0x1f6
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c9 orgs.asm:387
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0cc orgs.asm:388
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0ce orgs.asm:389
+ mov ds, ax ; 8e d8 ; 0xfe0d0 orgs.asm:390
+ mov ss, ax ; 8e d0 ; 0xfe0d2 orgs.asm:391
+ mov es, ax ; 8e c0 ; 0xfe0d4 orgs.asm:395
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d6 orgs.asm:396
+ cld ; fc ; 0xfe0d8 orgs.asm:397
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d9 orgs.asm:398
+ rep stosw ; f3 ab ; 0xfe0dc orgs.asm:399
+ inc di ; 47 ; 0xfe0de orgs.asm:400
+ inc di ; 47 ; 0xfe0df orgs.asm:401
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0e0 orgs.asm:402
+ rep stosw ; f3 ab ; 0xfe0e3 orgs.asm:403
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0e5 orgs.asm:407
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e7 orgs.asm:409
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0eb orgs.asm:410
+ jnc short 0e0fch ; 73 0b ; 0xfe0ef orgs.asm:411
+ mov es, bx ; 8e c3 ; 0xfe0f1 orgs.asm:412
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f3 orgs.asm:413
+ mov cx, 08000h ; b9 00 80 ; 0xfe0f5 orgs.asm:414
+ rep stosw ; f3 ab ; 0xfe0f8 orgs.asm:415
+ jmp short 0e0e7h ; eb eb ; 0xfe0fa orgs.asm:416
+ mov es, bx ; 8e c3 ; 0xfe0fc orgs.asm:418
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0fe orgs.asm:419
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe100 orgs.asm:420
+ rep stosw ; f3 ab ; 0xfe103 orgs.asm:421
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe105 orgs.asm:422
+ push CS ; 0e ; 0xfe107 orgs.asm:104
+ pop DS ; 1f ; 0xfe108 orgs.asm:105
+ cld ; fc ; 0xfe109 orgs.asm:106
+ call 01820h ; e8 13 37 ; 0xfe10a orgs.asm:426
+ call 0e8e7h ; e8 d7 07 ; 0xfe10d orgs.asm:429
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe110 orgs.asm:433
+ mov ds, bx ; 8e db ; 0xfe112 orgs.asm:434
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe114 orgs.asm:435
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe117 orgs.asm:436
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe11a orgs.asm:437
+ call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:438
+ mov bx, 001a0h ; bb a0 01 ; 0xfe120 orgs.asm:443
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe123 orgs.asm:444
+ call 0e039h ; e8 10 ff ; 0xfe126 orgs.asm:445
+ mov ax, 0027fh ; b8 7f 02 ; 0xfe129 orgs.asm:448
+ mov word [00413h], ax ; a3 13 04 ; 0xfe12c orgs.asm:449
+ mov ax, 0e9cch ; b8 cc e9 ; 0xfe12f orgs.asm:95
+ mov word [00018h], ax ; a3 18 00 ; 0xfe132 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe135 orgs.asm:97
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe138 orgs.asm:98
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe13b orgs.asm:95
+ mov word [00044h], ax ; a3 44 00 ; 0xfe13e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe141 orgs.asm:97
+ mov word [00046h], ax ; a3 46 00 ; 0xfe144 orgs.asm:98
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe147 orgs.asm:95
+ mov word [00048h], ax ; a3 48 00 ; 0xfe14a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe14d orgs.asm:97
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe150 orgs.asm:98
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe153 orgs.asm:95
+ mov word [00054h], ax ; a3 54 00 ; 0xfe156 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe159 orgs.asm:97
+ mov word [00056h], ax ; a3 56 00 ; 0xfe15c orgs.asm:98
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe15f orgs.asm:95
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe162 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe165 orgs.asm:97
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe168 orgs.asm:98
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe16b orgs.asm:95
+ mov word [00060h], ax ; a3 60 00 ; 0xfe16e orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe171 orgs.asm:97
+ mov word [00062h], ax ; a3 62 00 ; 0xfe174 orgs.asm:98
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe177 orgs.asm:95
+ mov word [00064h], ax ; a3 64 00 ; 0xfe17a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe17d orgs.asm:97
+ mov word [00066h], ax ; a3 66 00 ; 0xfe180 orgs.asm:98
+ mov ax, 0efedh ; b8 ed ef ; 0xfe183 orgs.asm:95
+ mov word [00070h], ax ; a3 70 00 ; 0xfe186 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe189 orgs.asm:97
+ mov word [00072h], ax ; a3 72 00 ; 0xfe18c orgs.asm:98
+ call 0e778h ; e8 e6 05 ; 0xfe18f orgs.asm:465
+ call 0f13bh ; e8 a6 0f ; 0xfe192 orgs.asm:469
+ call 0f166h ; e8 ce 0f ; 0xfe195 orgs.asm:470
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe198 orgs.asm:95
+ mov word [00068h], ax ; a3 68 00 ; 0xfe19b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe19e orgs.asm:97
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe1a1 orgs.asm:98
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe1a4 orgs.asm:95
+ mov word [00020h], ax ; a3 20 00 ; 0xfe1a7 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1aa orgs.asm:97
+ mov word [00022h], ax ; a3 22 00 ; 0xfe1ad orgs.asm:98
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1b0 orgs.asm:476
+ out strict byte 043h, AL ; e6 43 ; 0xfe1b2 orgs.asm:477
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1b4 orgs.asm:478
+ out strict byte 040h, AL ; e6 40 ; 0xfe1b6 orgs.asm:479
+ out strict byte 040h, AL ; e6 40 ; 0xfe1b8 orgs.asm:480
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1ba orgs.asm:95
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1bd orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1c0 orgs.asm:97
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1c3 orgs.asm:98
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1c6 orgs.asm:95
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1c9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1cc orgs.asm:97
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1cf orgs.asm:98
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1d2 orgs.asm:95
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1d5 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1d8 orgs.asm:97
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1db orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1de orgs.asm:489
+ mov ds, ax ; 8e d8 ; 0xfe1e0 orgs.asm:490
+ mov byte [00417h], AL ; a2 17 04 ; 0xfe1e2 orgs.asm:492
+ mov byte [00418h], AL ; a2 18 04 ; 0xfe1e5 orgs.asm:493
+ mov byte [00419h], AL ; a2 19 04 ; 0xfe1e8 orgs.asm:494
+ mov byte [00471h], AL ; a2 71 04 ; 0xfe1eb orgs.asm:495
+ mov byte [00497h], AL ; a2 97 04 ; 0xfe1ee orgs.asm:496
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1f1 orgs.asm:497
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1f3 orgs.asm:498
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1f6 orgs.asm:500
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1f9 orgs.asm:501
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1fd orgs.asm:502
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe201 orgs.asm:503
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe205 orgs.asm:504
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe208 orgs.asm:505
+ mov AL, strict byte 014h ; b0 14 ; 0xfe20c orgs.asm:508
+ out strict byte 070h, AL ; e6 70 ; 0xfe20e orgs.asm:509
+ in AL, strict byte 071h ; e4 71 ; 0xfe210 orgs.asm:510
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe212 orgs.asm:511
+ push DS ; 1e ; 0xfe215 orgs.asm:513
+ push CS ; 0e ; 0xfe216 orgs.asm:104
+ pop DS ; 1f ; 0xfe217 orgs.asm:105
+ cld ; fc ; 0xfe218 orgs.asm:106
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe219 orgs.asm:518
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe21c orgs.asm:519
+ call 01600h ; e8 de 33 ; 0xfe21f orgs.asm:520
+ call 04f68h ; e8 43 6d ; 0xfe222 orgs.asm:523
+ pop DS ; 1f ; 0xfe225 orgs.asm:524
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe226 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe229 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe22c orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe22f orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe232 orgs.asm:528
+ mov ds, ax ; 8e d8 ; 0xfe234 orgs.asm:529
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe236 orgs.asm:530
+ mov CL, strict byte 014h ; b1 14 ; 0xfe238 orgs.asm:531
+ mov dx, 00378h ; ba 78 03 ; 0xfe23a orgs.asm:532
+ call 0ecedh ; e8 ad 0a ; 0xfe23d orgs.asm:533
+ mov dx, 00278h ; ba 78 02 ; 0xfe240 orgs.asm:534
+ call 0ecedh ; e8 a7 0a ; 0xfe243 orgs.asm:535
+ sal bx, 00eh ; c1 e3 0e ; 0xfe246 orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe249 orgs.asm:537
+ and ax, 03fffh ; 25 ff 3f ; 0xfe24c orgs.asm:538
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe24f orgs.asm:539
+ mov word [00410h], ax ; a3 10 04 ; 0xfe251 orgs.asm:540
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe254 orgs.asm:95
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe257 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe25a orgs.asm:97
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe25d orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe260 orgs.asm:95
+ mov word [00030h], ax ; a3 30 00 ; 0xfe263 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe266 orgs.asm:97
+ mov word [00032h], ax ; a3 32 00 ; 0xfe269 orgs.asm:98
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe26c orgs.asm:95
+ mov word [00050h], ax ; a3 50 00 ; 0xfe26f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe272 orgs.asm:97
+ mov word [00052h], ax ; a3 52 00 ; 0xfe275 orgs.asm:98
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe278 orgs.asm:546
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe27a orgs.asm:547
+ mov dx, 003f8h ; ba f8 03 ; 0xfe27c orgs.asm:548
+ call 0ed0bh ; e8 89 0a ; 0xfe27f orgs.asm:549
+ mov dx, 002f8h ; ba f8 02 ; 0xfe282 orgs.asm:550
+ call 0ed0bh ; e8 83 0a ; 0xfe285 orgs.asm:551
+ mov dx, 003e8h ; ba e8 03 ; 0xfe288 orgs.asm:552
+ call 0ed0bh ; e8 7d 0a ; 0xfe28b orgs.asm:553
+ mov dx, 002e8h ; ba e8 02 ; 0xfe28e orgs.asm:554
+ call 0ed0bh ; e8 77 0a ; 0xfe291 orgs.asm:555
+ sal bx, 009h ; c1 e3 09 ; 0xfe294 orgs.asm:200
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe297 orgs.asm:557
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe29a orgs.asm:558
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe29d orgs.asm:559
+ mov word [00410h], ax ; a3 10 04 ; 0xfe29f orgs.asm:560
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe2a2 orgs.asm:95
+ mov word [00128h], ax ; a3 28 01 ; 0xfe2a5 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2a8 orgs.asm:97
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2ab orgs.asm:98
+ mov ax, 0f8f9h ; b8 f9 f8 ; 0xfe2ae orgs.asm:95
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2b1 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2b4 orgs.asm:97
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2b7 orgs.asm:98
+ call 0edbfh ; e8 02 0b ; 0xfe2ba orgs.asm:566
+ jmp short 0e303h ; eb 44 ; 0xfe2bd orgs.asm:568
+ ; disGetNextSymbol 0xfe2bf LB 0x1d41 -> off=0x0 cb=0000000000000004 uValue=00000000000f02bf 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2bf LB 0x4
+ add byte [bx+si], al ; 00 00 ; 0xfe2bf
+ pop ax ; 58 ; 0xfe2c1
+ dec bp ; 4d ; 0xfe2c2
+ ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi'
+nmi: ; 0xfe2c3 LB 0x7
+ push CS ; 0e ; 0xfe2c3 orgs.asm:104
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:105
+ cld ; fc ; 0xfe2c5 orgs.asm:106
+ call 017fch ; e8 33 35 ; 0xfe2c6 orgs.asm:577
+ iret ; cf ; 0xfe2c9 orgs.asm:578
+ ; disGetNextSymbol 0xfe2ca LB 0x1d36 -> off=0x0 cb=0000000000000008 uValue=00000000000f02ca 'int75_handler'
+int75_handler: ; 0xfe2ca LB 0x8
+ out strict byte 0f0h, AL ; e6 f0 ; 0xfe2ca orgs.asm:581
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:582
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:583
+ iret ; cf ; 0xfe2d1 orgs.asm:584
+ ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000ba uValue=00000000000f02d2 'hard_drive_post'
+hard_drive_post: ; 0xfe2d2 LB 0xba
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:589
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:590
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:592
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:593
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:594
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:595
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:596
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:597
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:598
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98
+ mov ax, 0f8e7h ; b8 e7 f8 ; 0xfe2f6 orgs.asm:95
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98
+ retn ; c3 ; 0xfe302 orgs.asm:603
+ mov ax, 0f8bch ; b8 bc f8 ; 0xfe303 orgs.asm:95
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98
+ call 0e753h ; e8 35 04 ; 0xfe31b orgs.asm:615
+ push CS ; 0e ; 0xfe31e orgs.asm:104
+ pop DS ; 1f ; 0xfe31f orgs.asm:105
+ cld ; fc ; 0xfe320 orgs.asm:106
+ pushad ; 66 60 ; 0xfe321 orgs.asm:622
+ call 01692h ; e8 6c 33 ; 0xfe323 orgs.asm:623
+ popad ; 66 61 ; 0xfe326 orgs.asm:624
+ call 01d51h ; e8 26 3a ; 0xfe328 orgs.asm:629
+ call 021dch ; e8 ae 3e ; 0xfe32b orgs.asm:630
+ sti ; fb ; 0xfe32e orgs.asm:637
+ call 09819h ; e8 e7 b4 ; 0xfe32f orgs.asm:638
+ cli ; fa ; 0xfe332 orgs.asm:639
+ call 086cch ; e8 96 a3 ; 0xfe333 orgs.asm:644
+ call 0ed2fh ; e8 f6 09 ; 0xfe336 orgs.asm:648
+ call 0e2d2h ; e8 96 ff ; 0xfe339 orgs.asm:651
+ push CS ; 0e ; 0xfe33c orgs.asm:104
+ pop DS ; 1f ; 0xfe33d orgs.asm:105
+ cld ; fc ; 0xfe33e orgs.asm:106
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe33f orgs.asm:655
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe342 orgs.asm:656
+ call 01600h ; e8 b8 32 ; 0xfe345 orgs.asm:657
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfe348 orgs.asm:664
+ db 066h, 033h, 0dbh
+ ; xor ebx, ebx ; 66 33 db ; 0xfe34b orgs.asm:665
+ db 066h, 033h, 0c9h
+ ; xor ecx, ecx ; 66 33 c9 ; 0xfe34e orgs.asm:666
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfe351 orgs.asm:667
+ call 01840h ; e8 e9 34 ; 0xfe354 orgs.asm:671
+ call 03c84h ; e8 2a 59 ; 0xfe357 orgs.asm:674
+ sti ; fb ; 0xfe35a orgs.asm:677
+ int 019h ; cd 19 ; 0xfe35b orgs.asm:678
+ sti ; fb ; 0xfe35d orgs.asm:680
+ hlt ; f4 ; 0xfe35e orgs.asm:682
+ jmp short 0e35eh ; eb fd ; 0xfe35f orgs.asm:683
+ cli ; fa ; 0xfe361 orgs.asm:684
+ hlt ; f4 ; 0xfe362 orgs.asm:685
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe363 orgs.asm:694
+ mov ds, ax ; 8e d8 ; 0xfe366 orgs.asm:695
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe368 orgs.asm:697
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe36c orgs.asm:698
+ in AL, strict byte 092h ; e4 92 ; 0xfe370 orgs.asm:700
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe372 orgs.asm:701
+ out strict byte 092h, AL ; e6 92 ; 0xfe374 orgs.asm:702
+ lidt [cs:0efe7h] ; 2e 0f 01 1e e7 ef ; 0xfe376 orgs.asm:704
+ pop DS ; 1f ; 0xfe37c orgs.asm:706
+ pop ES ; 07 ; 0xfe37d orgs.asm:707
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe37e orgs.asm:709
+ in AL, strict byte 080h ; e4 80 ; 0xfe380 orgs.asm:711
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe382 orgs.asm:712
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe385 orgs.asm:714
+ popaw ; 61 ; 0xfe387 orgs.asm:716
+ sti ; fb ; 0xfe388 orgs.asm:717
+ retf 00002h ; ca 02 00 ; 0xfe389 orgs.asm:718
+ ; disGetNextSymbol 0xfe38c LB 0x1c74 -> off=0x0 cb=0000000000000072 uValue=00000000000f038c 'biosorg_check_before_or_at_0E3FCh'
+biosorg_check_before_or_at_0E3FCh: ; 0xfe38c LB 0x72
+ times 0x70 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe3fe LB 0x1c02 -> off=0x0 cb=0000000000000003 uValue=00000000000f03fe 'int13_handler'
+int13_handler: ; 0xfe3fe LB 0x3
+ jmp near 0ec5bh ; e9 5a 08 ; 0xfe3fe orgs.asm:728
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x2f1
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h
+ db 04dh
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:744
+ ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h'
+biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa
+ or word [bx+si], ax ; 09 00 ; 0xfe6f5
+ cld ; fc ; 0xfe6f7
+ add byte [bx+di], al ; 00 01 ; 0xfe6f8
+ je short 0e73ch ; 74 40 ; 0xfe6fa
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h'
+biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a
+ times 0x28 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h'
+biosorg_check_at_0E729h: ; 0xfe729 LB 0x10
+ times 0xe db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=000000000000001a uValue=00000000000f0739 'biosorg_check_at_0E739h'
+biosorg_check_at_0E739h: ; 0xfe739 LB 0x1a
+ push DS ; 1e ; 0xfe739 orgs.asm:817
+ push ES ; 06 ; 0xfe73a orgs.asm:818
+ pushaw ; 60 ; 0xfe73b orgs.asm:97
+ push CS ; 0e ; 0xfe73c orgs.asm:104
+ pop DS ; 1f ; 0xfe73d orgs.asm:105
+ cld ; fc ; 0xfe73e orgs.asm:106
+ call 06457h ; e8 15 7d ; 0xfe73f orgs.asm:821
+ popaw ; 61 ; 0xfe742 orgs.asm:114
+ pop ES ; 07 ; 0xfe743 orgs.asm:823
+ pop DS ; 1f ; 0xfe744 orgs.asm:824
+ iret ; cf ; 0xfe745 orgs.asm:825
+ push DS ; 1e ; 0xfe746 orgs.asm:833
+ push ES ; 06 ; 0xfe747 orgs.asm:834
+ pushaw ; 60 ; 0xfe748 orgs.asm:97
+ push CS ; 0e ; 0xfe749 orgs.asm:104
+ pop DS ; 1f ; 0xfe74a orgs.asm:105
+ cld ; fc ; 0xfe74b orgs.asm:106
+ call 01792h ; e8 43 30 ; 0xfe74c orgs.asm:837
+ popaw ; 61 ; 0xfe74f orgs.asm:114
+ pop ES ; 07 ; 0xfe750 orgs.asm:839
+ pop DS ; 1f ; 0xfe751 orgs.asm:840
+ iret ; cf ; 0xfe752 orgs.asm:841
+ ; disGetNextSymbol 0xfe753 LB 0x18ad -> off=0x0 cb=0000000000000025 uValue=00000000000f0753 'init_pic'
+init_pic: ; 0xfe753 LB 0x25
+ mov AL, strict byte 011h ; b0 11 ; 0xfe753 orgs.asm:846
+ out strict byte 020h, AL ; e6 20 ; 0xfe755 orgs.asm:847
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe757 orgs.asm:848
+ mov AL, strict byte 008h ; b0 08 ; 0xfe759 orgs.asm:849
+ out strict byte 021h, AL ; e6 21 ; 0xfe75b orgs.asm:850
+ mov AL, strict byte 070h ; b0 70 ; 0xfe75d orgs.asm:851
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe75f orgs.asm:852
+ mov AL, strict byte 004h ; b0 04 ; 0xfe761 orgs.asm:853
+ out strict byte 021h, AL ; e6 21 ; 0xfe763 orgs.asm:854
+ mov AL, strict byte 002h ; b0 02 ; 0xfe765 orgs.asm:855
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe767 orgs.asm:856
+ mov AL, strict byte 001h ; b0 01 ; 0xfe769 orgs.asm:857
+ out strict byte 021h, AL ; e6 21 ; 0xfe76b orgs.asm:858
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe76d orgs.asm:859
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe76f orgs.asm:860
+ out strict byte 021h, AL ; e6 21 ; 0xfe771 orgs.asm:861
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe773 orgs.asm:862
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe775 orgs.asm:863
+ retn ; c3 ; 0xfe777 orgs.asm:864
+ ; disGetNextSymbol 0xfe778 LB 0x1888 -> off=0x0 cb=0000000000000051 uValue=00000000000f0778 'ebda_post'
+ebda_post: ; 0xfe778 LB 0x51
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe778 orgs.asm:95
+ mov word [00034h], ax ; a3 34 00 ; 0xfe77b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe77e orgs.asm:97
+ mov word [00036h], ax ; a3 36 00 ; 0xfe781 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe784 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe787 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe78a orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe78d orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe790 orgs.asm:95
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe793 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe796 orgs.asm:97
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe799 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe79c orgs.asm:95
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe79f orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a2 orgs.asm:97
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7a5 orgs.asm:98
+ mov ax, 0e746h ; b8 46 e7 ; 0xfe7a8 orgs.asm:95
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7ab orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ae orgs.asm:97
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7b1 orgs.asm:98
+ mov ax, 09fc0h ; b8 c0 9f ; 0xfe7b4 orgs.asm:876
+ mov ds, ax ; 8e d8 ; 0xfe7b7 orgs.asm:877
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7b9 orgs.asm:878
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7be orgs.asm:880
+ mov ds, ax ; 8e d8 ; 0xfe7c0 orgs.asm:881
+ mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7c2 orgs.asm:882
+ retn ; c3 ; 0xfe7c8 orgs.asm:883
+ ; disGetNextSymbol 0xfe7c9 LB 0x1837 -> off=0x0 cb=0000000000000065 uValue=00000000000f07c9 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7c9 LB 0x65
+ times 0x63 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=000000000000003d uValue=00000000000f082e 'biosorg_check_at_0E82Eh'
+biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x3d
+ sti ; fb ; 0xfe82e orgs.asm:894
+ pushfw ; 9c ; 0xfe82f orgs.asm:897
+ push ES ; 06 ; 0xfe830 orgs.asm:898
+ push DS ; 1e ; 0xfe831 orgs.asm:899
+ pushaw ; 60 ; 0xfe832 orgs.asm:97
+ cmp ah, 000h ; 80 fc 00 ; 0xfe833 orgs.asm:902
+ je short 0e84ah ; 74 12 ; 0xfe836 orgs.asm:903
+ cmp ah, 010h ; 80 fc 10 ; 0xfe838 orgs.asm:905
+ je short 0e84ah ; 74 0d ; 0xfe83b orgs.asm:906
+ push CS ; 0e ; 0xfe83d orgs.asm:104
+ pop DS ; 1f ; 0xfe83e orgs.asm:105
+ cld ; fc ; 0xfe83f orgs.asm:106
+ call 056b6h ; e8 73 6e ; 0xfe840 orgs.asm:909
+ popaw ; 61 ; 0xfe843 orgs.asm:114
+ pop DS ; 1f ; 0xfe844 orgs.asm:911
+ pop ES ; 07 ; 0xfe845 orgs.asm:912
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe846 orgs.asm:913
+ iret ; cf ; 0xfe849 orgs.asm:914
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe84a orgs.asm:917
+ mov ds, bx ; 8e db ; 0xfe84d orgs.asm:918
+ cli ; fa ; 0xfe84f orgs.asm:920
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe850 orgs.asm:921
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe854 orgs.asm:922
+ jne short 0e85eh ; 75 04 ; 0xfe858 orgs.asm:923
+ sti ; fb ; 0xfe85a orgs.asm:924
+ nop ; 90 ; 0xfe85b orgs.asm:925
+ jmp short 0e84fh ; eb f1 ; 0xfe85c orgs.asm:933
+ push CS ; 0e ; 0xfe85e orgs.asm:104
+ pop DS ; 1f ; 0xfe85f orgs.asm:105
+ cld ; fc ; 0xfe860 orgs.asm:106
+ call 056b6h ; e8 52 6e ; 0xfe861 orgs.asm:937
+ popaw ; 61 ; 0xfe864 orgs.asm:114
+ pop DS ; 1f ; 0xfe865 orgs.asm:939
+ pop ES ; 07 ; 0xfe866 orgs.asm:940
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe867 orgs.asm:941
+ iret ; cf ; 0xfe86a orgs.asm:949
+ ; disGetNextSymbol 0xfe86b LB 0x1795 -> off=0x0 cb=000000000000001b uValue=00000000000f086b 'pmode_enter'
+pmode_enter: ; 0xfe86b LB 0x1b
+ push CS ; 0e ; 0xfe86b orgs.asm:30
+ pop DS ; 1f ; 0xfe86c orgs.asm:31
+ lgdt [cs:0e899h] ; 2e 0f 01 16 99 e8 ; 0xfe86d orgs.asm:33
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe873 orgs.asm:34
+ or AL, strict byte 001h ; 0c 01 ; 0xfe876 orgs.asm:35
+ mov cr0, eax ; 0f 22 c0 ; 0xfe878 orgs.asm:36
+ jmp far 00020h:0e880h ; ea 80 e8 20 00 ; 0xfe87b
+ mov ax, strict word 00018h ; b8 18 00 ; 0xfe880 orgs.asm:42
+ mov ds, ax ; 8e d8 ; 0xfe883 orgs.asm:43
+ retn ; c3 ; 0xfe885 orgs.asm:44
+ ; disGetNextSymbol 0xfe886 LB 0x177a -> off=0x0 cb=0000000000000013 uValue=00000000000f0886 'pmode_exit'
+pmode_exit: ; 0xfe886 LB 0x13
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe886 orgs.asm:51
+ mov ds, ax ; 8e d8 ; 0xfe889 orgs.asm:52
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe88b orgs.asm:54
+ and AL, strict byte 0feh ; 24 fe ; 0xfe88e orgs.asm:55
+ mov cr0, eax ; 0f 22 c0 ; 0xfe890 orgs.asm:56
+ jmp far 0f000h:0e898h ; ea 98 e8 00 f0 ; 0xfe893 orgs.asm:58
+ retn ; c3 ; 0xfe898 orgs.asm:60
+ ; disGetNextSymbol 0xfe899 LB 0x1767 -> off=0x0 cb=0000000000000006 uValue=00000000000f0899 'pmbios_gdt_desc'
+pmbios_gdt_desc: ; 0xfe899 LB 0x6
+ db 047h, 000h, 09fh, 0e8h, 00fh, 000h
+ ; disGetNextSymbol 0xfe89f LB 0x1761 -> off=0x0 cb=0000000000000048 uValue=00000000000f089f 'pmbios_gdt'
+pmbios_gdt: ; 0xfe89f LB 0x48
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 0ffh, 0ffh, 000h, 000h, 000h, 09bh, 0cfh, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 093h, 0cfh, 000h
+ db 0ffh, 0ffh, 000h, 000h, 00fh, 09bh, 000h, 000h, 0ffh, 0ffh, 000h, 000h, 000h, 093h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 0ffh, 0ffh, 000h, 004h, 000h, 093h, 000h, 000h
+ ; disGetNextSymbol 0xfe8e7 LB 0x1719 -> off=0x0 cb=000000000000005c uValue=00000000000f08e7 'pmode_setup'
+pmode_setup: ; 0xfe8e7 LB 0x5c
+ push eax ; 66 50 ; 0xfe8e7 orgs.asm:31
+ push esi ; 66 56 ; 0xfe8e9 orgs.asm:32
+ pushfw ; 9c ; 0xfe8eb orgs.asm:33
+ cli ; fa ; 0xfe8ec orgs.asm:34
+ call 0e86bh ; e8 7b ff ; 0xfe8ed orgs.asm:35
+ mov eax, cr0 ; 0f 20 c0 ; 0xfe8f0 orgs.asm:37
+ and eax, strict dword 09fffffffh ; 66 25 ff ff ff 9f ; 0xfe8f3 orgs.asm:38
+ mov cr0, eax ; 0f 22 c0 ; 0xfe8f9 orgs.asm:39
+ mov esi, strict dword 0fee000f0h ; 66 be f0 00 e0 fe ; 0xfe8fc orgs.asm:41
+ mov eax, strict dword 00000010fh ; 66 b8 0f 01 00 00 ; 0xfe902 orgs.asm:42
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe908 orgs.asm:43
+ mov esi, strict dword 0fee00350h ; 66 be 50 03 e0 fe ; 0xfe90c orgs.asm:45
+ mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe912 orgs.asm:46
+ and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe916 orgs.asm:47
+ or ah, 007h ; 80 cc 07 ; 0xfe91c orgs.asm:48
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe91f orgs.asm:49
+ mov esi, strict dword 0fee00360h ; 66 be 60 03 e0 fe ; 0xfe923 orgs.asm:51
+ mov eax, dword [esi] ; 67 66 8b 06 ; 0xfe929 orgs.asm:52
+ and eax, strict dword 0fffe00ffh ; 66 25 ff 00 fe ff ; 0xfe92d orgs.asm:53
+ or ah, 004h ; 80 cc 04 ; 0xfe933 orgs.asm:54
+ mov dword [esi], eax ; 67 66 89 06 ; 0xfe936 orgs.asm:55
+ call 0e886h ; e8 49 ff ; 0xfe93a orgs.asm:57
+ popfw ; 9d ; 0xfe93d orgs.asm:58
+ pop esi ; 66 5e ; 0xfe93e orgs.asm:59
+ pop eax ; 66 58 ; 0xfe940 orgs.asm:60
+ retn ; c3 ; 0xfe942 orgs.asm:62
+ ; disGetNextSymbol 0xfe943 LB 0x16bd -> off=0x0 cb=0000000000000044 uValue=00000000000f0943 'biosorg_check_before_or_at_0E985h'
+biosorg_check_before_or_at_0E985h: ; 0xfe943 LB 0x44
+ times 0x42 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe987 LB 0x1679 -> off=0x0 cb=0000000000000052 uValue=00000000000f0987 'biosorg_check_at_0E987h'
+biosorg_check_at_0E987h: ; 0xfe987 LB 0x52
+ cli ; fa ; 0xfe987 orgs.asm:966
+ push ax ; 50 ; 0xfe988 orgs.asm:967
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:968
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:969
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:971
+ push DS ; 1e ; 0xfe98f orgs.asm:972
+ pushaw ; 60 ; 0xfe990 orgs.asm:97
+ cld ; fc ; 0xfe991 orgs.asm:974
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe992 orgs.asm:976
+ stc ; f9 ; 0xfe994 orgs.asm:977
+ int 015h ; cd 15 ; 0xfe995 orgs.asm:978
+ jnc short 0e9c0h ; 73 27 ; 0xfe997 orgs.asm:979
+ sti ; fb ; 0xfe999 orgs.asm:981
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe99a orgs.asm:984
+ jne short 0e9a9h ; 75 0b ; 0xfe99c orgs.asm:985
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe99e orgs.asm:986
+ mov ds, ax ; 8e d8 ; 0xfe9a0 orgs.asm:987
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a2 orgs.asm:988
+ jmp short 0e9c0h ; eb 17 ; 0xfe9a7 orgs.asm:989
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9a9 orgs.asm:992
+ jne short 0e9b8h ; 75 0b ; 0xfe9ab orgs.asm:993
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9ad orgs.asm:994
+ mov ds, ax ; 8e d8 ; 0xfe9af orgs.asm:995
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b1 orgs.asm:996
+ jmp short 0e9c0h ; eb 08 ; 0xfe9b6 orgs.asm:997
+ push ES ; 06 ; 0xfe9b8 orgs.asm:1000
+ push CS ; 0e ; 0xfe9b9 orgs.asm:104
+ pop DS ; 1f ; 0xfe9ba orgs.asm:105
+ cld ; fc ; 0xfe9bb orgs.asm:106
+ call 0525ah ; e8 9b 68 ; 0xfe9bc orgs.asm:1002
+ pop ES ; 07 ; 0xfe9bf orgs.asm:1003
+ popaw ; 61 ; 0xfe9c0 orgs.asm:114
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:1007
+ cli ; fa ; 0xfe9c2 orgs.asm:1008
+ call 0e034h ; e8 6e f6 ; 0xfe9c3 orgs.asm:1009
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9c6 orgs.asm:1011
+ out strict byte 064h, AL ; e6 64 ; 0xfe9c8 orgs.asm:1012
+ pop ax ; 58 ; 0xfe9ca orgs.asm:1013
+ iret ; cf ; 0xfe9cb orgs.asm:1014
+ pushaw ; 60 ; 0xfe9cc orgs.asm:97
+ push ES ; 06 ; 0xfe9cd orgs.asm:1023
+ push DS ; 1e ; 0xfe9ce orgs.asm:1024
+ push CS ; 0e ; 0xfe9cf orgs.asm:104
+ pop DS ; 1f ; 0xfe9d0 orgs.asm:105
+ cld ; fc ; 0xfe9d1 orgs.asm:106
+ call 06e90h ; e8 bb 84 ; 0xfe9d2 orgs.asm:1026
+ pop DS ; 1f ; 0xfe9d5 orgs.asm:1027
+ pop ES ; 07 ; 0xfe9d6 orgs.asm:1028
+ popaw ; 61 ; 0xfe9d7 orgs.asm:114
+ iret ; cf ; 0xfe9d8 orgs.asm:1030
+ ; disGetNextSymbol 0xfe9d9 LB 0x1627 -> off=0x0 cb=0000000000000280 uValue=00000000000f09d9 'biosorg_check_before_or_at_0EC57h'
+biosorg_check_before_or_at_0EC57h: ; 0xfe9d9 LB 0x280
+ times 0x27e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfec59 LB 0x13a7 -> off=0x0 cb=0000000000000002 uValue=00000000000f0c59 'biosorg_check_at_0EC59h'
+biosorg_check_at_0EC59h: ; 0xfec59 LB 0x2
+ jmp short 0ecb0h ; eb 55 ; 0xfec59 orgs.asm:1037
+ ; disGetNextSymbol 0xfec5b LB 0x13a5 -> off=0x0 cb=0000000000000055 uValue=00000000000f0c5b 'int13_relocated'
+int13_relocated: ; 0xfec5b LB 0x55
+ cmp ah, 04ah ; 80 fc 4a ; 0xfec5b orgs.asm:1046
+ jc short 0ec71h ; 72 11 ; 0xfec5e orgs.asm:1047
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1049
+ jnbe short 0ec71h ; 77 0c ; 0xfec63 orgs.asm:1050
+ pushaw ; 60 ; 0xfec65 orgs.asm:97
+ push ES ; 06 ; 0xfec66 orgs.asm:1053
+ push DS ; 1e ; 0xfec67 orgs.asm:1054
+ push CS ; 0e ; 0xfec68 orgs.asm:104
+ pop DS ; 1f ; 0xfec69 orgs.asm:105
+ cld ; fc ; 0xfec6a orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec6b orgs.asm:83
+ jmp near 03cc7h ; e9 56 50 ; 0xfec6e orgs.asm:84
+ push ES ; 06 ; 0xfec71 orgs.asm:1062
+ push ax ; 50 ; 0xfec72 orgs.asm:1063
+ push bx ; 53 ; 0xfec73 orgs.asm:1064
+ push cx ; 51 ; 0xfec74 orgs.asm:1065
+ push dx ; 52 ; 0xfec75 orgs.asm:1066
+ call 03c9bh ; e8 22 50 ; 0xfec76 orgs.asm:1069
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec79 orgs.asm:1070
+ je short 0ecabh ; 74 2e ; 0xfec7b orgs.asm:1071
+ call 03cb1h ; e8 31 50 ; 0xfec7d orgs.asm:1074
+ pop dx ; 5a ; 0xfec80 orgs.asm:1075
+ push dx ; 52 ; 0xfec81 orgs.asm:1076
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec82 orgs.asm:1077
+ jne short 0ec97h ; 75 11 ; 0xfec84 orgs.asm:1078
+ pop dx ; 5a ; 0xfec86 orgs.asm:1080
+ pop cx ; 59 ; 0xfec87 orgs.asm:1081
+ pop bx ; 5b ; 0xfec88 orgs.asm:1082
+ pop ax ; 58 ; 0xfec89 orgs.asm:1083
+ pop ES ; 07 ; 0xfec8a orgs.asm:1084
+ pushaw ; 60 ; 0xfec8b orgs.asm:97
+ push ES ; 06 ; 0xfec8c orgs.asm:1087
+ push DS ; 1e ; 0xfec8d orgs.asm:1088
+ push CS ; 0e ; 0xfec8e orgs.asm:104
+ pop DS ; 1f ; 0xfec8f orgs.asm:105
+ cld ; fc ; 0xfec90 orgs.asm:106
+ push 0ece9h ; 68 e9 ec ; 0xfec91 orgs.asm:83
+ jmp near 04278h ; e9 e1 55 ; 0xfec94 orgs.asm:84
+ and dl, 0e0h ; 80 e2 e0 ; 0xfec97 orgs.asm:1094
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec9a orgs.asm:1095
+ jne short 0ecabh ; 75 0d ; 0xfec9c orgs.asm:1096
+ pop dx ; 5a ; 0xfec9e orgs.asm:1098
+ pop cx ; 59 ; 0xfec9f orgs.asm:1099
+ pop bx ; 5b ; 0xfeca0 orgs.asm:1100
+ pop ax ; 58 ; 0xfeca1 orgs.asm:1101
+ pop ES ; 07 ; 0xfeca2 orgs.asm:1102
+ push ax ; 50 ; 0xfeca3 orgs.asm:1104
+ push cx ; 51 ; 0xfeca4 orgs.asm:1105
+ push dx ; 52 ; 0xfeca5 orgs.asm:1106
+ push bx ; 53 ; 0xfeca6 orgs.asm:1107
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfeca7 orgs.asm:1109
+ jmp short 0ecb4h ; eb 09 ; 0xfeca9 orgs.asm:1110
+ pop dx ; 5a ; 0xfecab orgs.asm:1113
+ pop cx ; 59 ; 0xfecac orgs.asm:1114
+ pop bx ; 5b ; 0xfecad orgs.asm:1115
+ pop ax ; 58 ; 0xfecae orgs.asm:1116
+ pop ES ; 07 ; 0xfecaf orgs.asm:1117
+ ; disGetNextSymbol 0xfecb0 LB 0x1350 -> off=0x0 cb=0000000000000004 uValue=00000000000f0cb0 'int13_noeltorito'
+int13_noeltorito: ; 0xfecb0 LB 0x4
+ push ax ; 50 ; 0xfecb0 orgs.asm:1120
+ push cx ; 51 ; 0xfecb1 orgs.asm:1121
+ push dx ; 52 ; 0xfecb2 orgs.asm:1122
+ push bx ; 53 ; 0xfecb3 orgs.asm:1123
+ ; disGetNextSymbol 0xfecb4 LB 0x134c -> off=0x0 cb=0000000000000014 uValue=00000000000f0cb4 'int13_legacy'
+int13_legacy: ; 0xfecb4 LB 0x14
+ push dx ; 52 ; 0xfecb4 orgs.asm:1125
+ push bp ; 55 ; 0xfecb5 orgs.asm:1126
+ push si ; 56 ; 0xfecb6 orgs.asm:1127
+ push di ; 57 ; 0xfecb7 orgs.asm:1128
+ push ES ; 06 ; 0xfecb8 orgs.asm:1129
+ push DS ; 1e ; 0xfecb9 orgs.asm:1130
+ push CS ; 0e ; 0xfecba orgs.asm:104
+ pop DS ; 1f ; 0xfecbb orgs.asm:105
+ cld ; fc ; 0xfecbc orgs.asm:106
+ test dl, 080h ; f6 c2 80 ; 0xfecbd orgs.asm:1135
+ jne short 0ecc8h ; 75 06 ; 0xfecc0 orgs.asm:1136
+ push 0ece9h ; 68 e9 ec ; 0xfecc2 orgs.asm:83
+ jmp near 032cah ; e9 02 46 ; 0xfecc5 orgs.asm:84
+ ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cc8 'int13_notfloppy'
+int13_notfloppy: ; 0xfecc8 LB 0x14
+ cmp dl, 0e0h ; 80 fa e0 ; 0xfecc8 orgs.asm:1141
+ jc short 0ecdch ; 72 0f ; 0xfeccb orgs.asm:1142
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfeccd orgs.asm:1148
+ push bx ; 53 ; 0xfecd1 orgs.asm:1149
+ call 048a9h ; e8 d4 5b ; 0xfecd2 orgs.asm:1150
+ pop bx ; 5b ; 0xfecd5 orgs.asm:1151
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecd6 orgs.asm:1152
+ jmp short 0ece9h ; eb 0d ; 0xfecda orgs.asm:1154
+ ; disGetNextSymbol 0xfecdc LB 0x1324 -> off=0x0 cb=000000000000000d uValue=00000000000f0cdc 'int13_disk'
+int13_disk: ; 0xfecdc LB 0xd
+ cmp ah, 040h ; 80 fc 40 ; 0xfecdc orgs.asm:1158
+ jnbe short 0ece6h ; 77 05 ; 0xfecdf orgs.asm:1159
+ call 05d6fh ; e8 8b 70 ; 0xfece1 orgs.asm:1160
+ jmp short 0ece9h ; eb 03 ; 0xfece4 orgs.asm:1161
+ call 061b9h ; e8 d0 74 ; 0xfece6 orgs.asm:1164
+ ; disGetNextSymbol 0xfece9 LB 0x1317 -> off=0x0 cb=0000000000000004 uValue=00000000000f0ce9 'int13_out'
+int13_out: ; 0xfece9 LB 0x4
+ pop DS ; 1f ; 0xfece9 orgs.asm:1167
+ pop ES ; 07 ; 0xfecea orgs.asm:1168
+ popaw ; 61 ; 0xfeceb orgs.asm:114
+ iret ; cf ; 0xfecec orgs.asm:1170
+ ; disGetNextSymbol 0xfeced LB 0x1313 -> off=0x0 cb=000000000000001e uValue=00000000000f0ced 'detect_parport'
+detect_parport: ; 0xfeced LB 0x1e
+ push dx ; 52 ; 0xfeced orgs.asm:1177
+ inc dx ; 42 ; 0xfecee orgs.asm:1178
+ inc dx ; 42 ; 0xfecef orgs.asm:1179
+ in AL, DX ; ec ; 0xfecf0 orgs.asm:1180
+ and AL, strict byte 0dfh ; 24 df ; 0xfecf1 orgs.asm:1181
+ out DX, AL ; ee ; 0xfecf3 orgs.asm:1182
+ pop dx ; 5a ; 0xfecf4 orgs.asm:1183
+ mov AL, strict byte 0aah ; b0 aa ; 0xfecf5 orgs.asm:1184
+ out DX, AL ; ee ; 0xfecf7 orgs.asm:1185
+ in AL, DX ; ec ; 0xfecf8 orgs.asm:1186
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfecf9 orgs.asm:1187
+ jne short 0ed0ah ; 75 0d ; 0xfecfb orgs.asm:1188
+ push bx ; 53 ; 0xfecfd orgs.asm:1190
+ sal bx, 1 ; d1 e3 ; 0xfecfe orgs.asm:1191
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed00 orgs.asm:1192
+ pop bx ; 5b ; 0xfed04 orgs.asm:1193
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed05 orgs.asm:1194
+ inc bx ; 43 ; 0xfed09 orgs.asm:1195
+ retn ; c3 ; 0xfed0a orgs.asm:1197
+ ; disGetNextSymbol 0xfed0b LB 0x12f5 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d0b 'detect_serial'
+detect_serial: ; 0xfed0b LB 0x24
+ push dx ; 52 ; 0xfed0b orgs.asm:1204
+ inc dx ; 42 ; 0xfed0c orgs.asm:1205
+ mov AL, strict byte 002h ; b0 02 ; 0xfed0d orgs.asm:1206
+ out DX, AL ; ee ; 0xfed0f orgs.asm:1207
+ in AL, DX ; ec ; 0xfed10 orgs.asm:1208
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed11 orgs.asm:1209
+ jne short 0ed2dh ; 75 18 ; 0xfed13 orgs.asm:1210
+ inc dx ; 42 ; 0xfed15 orgs.asm:1212
+ in AL, DX ; ec ; 0xfed16 orgs.asm:1213
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed17 orgs.asm:1214
+ jne short 0ed2dh ; 75 12 ; 0xfed19 orgs.asm:1215
+ dec dx ; 4a ; 0xfed1b orgs.asm:1217
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed1c orgs.asm:1218
+ pop dx ; 5a ; 0xfed1e orgs.asm:1219
+ push bx ; 53 ; 0xfed1f orgs.asm:1220
+ sal bx, 1 ; d1 e3 ; 0xfed20 orgs.asm:1221
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed22 orgs.asm:1222
+ pop bx ; 5b ; 0xfed26 orgs.asm:1223
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed27 orgs.asm:1224
+ inc bx ; 43 ; 0xfed2b orgs.asm:1225
+ retn ; c3 ; 0xfed2c orgs.asm:1226
+ pop dx ; 5a ; 0xfed2d orgs.asm:1229
+ retn ; c3 ; 0xfed2e orgs.asm:1230
+ ; disGetNextSymbol 0xfed2f LB 0x12d1 -> off=0x0 cb=0000000000000087 uValue=00000000000f0d2f 'floppy_post'
+floppy_post: ; 0xfed2f LB 0x87
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfed2f orgs.asm:1240
+ mov ds, ax ; 8e d8 ; 0xfed31 orgs.asm:1241
+ mov AL, strict byte 000h ; b0 00 ; 0xfed33 orgs.asm:1245
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed35 orgs.asm:1246
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed38 orgs.asm:1247
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed3b orgs.asm:1248
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed3e orgs.asm:1249
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed41 orgs.asm:1250
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed44 orgs.asm:1251
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed47 orgs.asm:1252
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed4a orgs.asm:1253
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed4d orgs.asm:1254
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed50 orgs.asm:1255
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed53 orgs.asm:1256
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed56 orgs.asm:1258
+ mov AL, strict byte 010h ; b0 10 ; 0xfed59 orgs.asm:1260
+ out strict byte 070h, AL ; e6 70 ; 0xfed5b orgs.asm:1261
+ in AL, strict byte 071h ; e4 71 ; 0xfed5d orgs.asm:1262
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed5f orgs.asm:1263
+ shr al, 004h ; c0 e8 04 ; 0xfed61 orgs.asm:169
+ je short 0ed6ah ; 74 04 ; 0xfed64 orgs.asm:1268
+ mov BL, strict byte 007h ; b3 07 ; 0xfed66 orgs.asm:1269
+ jmp short 0ed6ch ; eb 02 ; 0xfed68 orgs.asm:1270
+ mov BL, strict byte 000h ; b3 00 ; 0xfed6a orgs.asm:1273
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed6c orgs.asm:1276
+ and AL, strict byte 00fh ; 24 0f ; 0xfed6e orgs.asm:1277
+ je short 0ed75h ; 74 03 ; 0xfed70 orgs.asm:1278
+ or bl, 070h ; 80 cb 70 ; 0xfed72 orgs.asm:1279
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed75 orgs.asm:1281
+ mov AL, strict byte 000h ; b0 00 ; 0xfed79 orgs.asm:1284
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed7b orgs.asm:1285
+ mov byte [00491h], AL ; a2 91 04 ; 0xfed7e orgs.asm:1286
+ mov byte [00492h], AL ; a2 92 04 ; 0xfed81 orgs.asm:1287
+ mov byte [00493h], AL ; a2 93 04 ; 0xfed84 orgs.asm:1288
+ mov byte [00494h], AL ; a2 94 04 ; 0xfed87 orgs.asm:1289
+ mov byte [00495h], AL ; a2 95 04 ; 0xfed8a orgs.asm:1290
+ mov AL, strict byte 002h ; b0 02 ; 0xfed8d orgs.asm:1292
+ out strict byte 00ah, AL ; e6 0a ; 0xfed8f orgs.asm:1293
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfed91 orgs.asm:95
+ mov word [00078h], ax ; a3 78 00 ; 0xfed94 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfed97 orgs.asm:97
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfed9a orgs.asm:98
+ mov ax, 0ec59h ; b8 59 ec ; 0xfed9d orgs.asm:95
+ mov word [00100h], ax ; a3 00 01 ; 0xfeda0 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfeda3 orgs.asm:97
+ mov word [00102h], ax ; a3 02 01 ; 0xfeda6 orgs.asm:98
+ mov ax, 0ef57h ; b8 57 ef ; 0xfeda9 orgs.asm:95
+ mov word [00038h], ax ; a3 38 00 ; 0xfedac orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedaf orgs.asm:97
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedb2 orgs.asm:98
+ retn ; c3 ; 0xfedb5 orgs.asm:1299
+ ; disGetNextSymbol 0xfedb6 LB 0x124a -> off=0x0 cb=0000000000000009 uValue=0000000000000db6 'bcd_to_bin'
+bcd_to_bin: ; 0xfedb6 LB 0x9
+ sal ax, 004h ; c1 e0 04 ; 0xfedb6 orgs.asm:1309
+ shr al, 004h ; c0 e8 04 ; 0xfedb9 orgs.asm:1310
+ aad 00ah ; d5 0a ; 0xfedbc orgs.asm:1318
+ retn ; c3 ; 0xfedbe orgs.asm:1319
+ ; disGetNextSymbol 0xfedbf LB 0x1241 -> off=0x0 cb=0000000000000077 uValue=00000000000f0dbf 'rtc_post'
+rtc_post: ; 0xfedbf LB 0x77
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfedbf orgs.asm:1376
+ mov AL, strict byte 000h ; b0 00 ; 0xfedc2 orgs.asm:1377
+ out strict byte 070h, AL ; e6 70 ; 0xfedc4 orgs.asm:1378
+ in AL, strict byte 071h ; e4 71 ; 0xfedc6 orgs.asm:1379
+ call 0edb6h ; e8 eb ff ; 0xfedc8 orgs.asm:1380
+ mov edx, strict dword 00115cf2bh ; 66 ba 2b cf 15 01 ; 0xfedcb orgs.asm:1381
+ mul edx ; 66 f7 e2 ; 0xfedd1 orgs.asm:1382
+ mov ebx, strict dword 0000f4240h ; 66 bb 40 42 0f 00 ; 0xfedd4 orgs.asm:1383
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfedda orgs.asm:1384
+ div ebx ; 66 f7 f3 ; 0xfeddd orgs.asm:1385
+ db 066h, 08bh, 0c8h
+ ; mov ecx, eax ; 66 8b c8 ; 0xfede0 orgs.asm:1386
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfede3 orgs.asm:1389
+ mov AL, strict byte 002h ; b0 02 ; 0xfede6 orgs.asm:1390
+ out strict byte 070h, AL ; e6 70 ; 0xfede8 orgs.asm:1391
+ in AL, strict byte 071h ; e4 71 ; 0xfedea orgs.asm:1392
+ call 0edb6h ; e8 c7 ff ; 0xfedec orgs.asm:1393
+ mov edx, strict dword 000a6af80h ; 66 ba 80 af a6 00 ; 0xfedef orgs.asm:1394
+ mul edx ; 66 f7 e2 ; 0xfedf5 orgs.asm:1395
+ mov ebx, strict dword 000002710h ; 66 bb 10 27 00 00 ; 0xfedf8 orgs.asm:1396
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfedfe orgs.asm:1397
+ div ebx ; 66 f7 f3 ; 0xfee01 orgs.asm:1398
+ db 066h, 003h, 0c8h
+ ; add ecx, eax ; 66 03 c8 ; 0xfee04 orgs.asm:1399
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xfee07 orgs.asm:1402
+ mov AL, strict byte 004h ; b0 04 ; 0xfee0a orgs.asm:1403
+ out strict byte 070h, AL ; e6 70 ; 0xfee0c orgs.asm:1404
+ in AL, strict byte 071h ; e4 71 ; 0xfee0e orgs.asm:1405
+ call 0edb6h ; e8 a3 ff ; 0xfee10 orgs.asm:1406
+ mov edx, strict dword 003e81d03h ; 66 ba 03 1d e8 03 ; 0xfee13 orgs.asm:1407
+ mul edx ; 66 f7 e2 ; 0xfee19 orgs.asm:1408
+ mov ebx, strict dword 0000003e8h ; 66 bb e8 03 00 00 ; 0xfee1c orgs.asm:1409
+ db 066h, 033h, 0d2h
+ ; xor edx, edx ; 66 33 d2 ; 0xfee22 orgs.asm:1410
+ div ebx ; 66 f7 f3 ; 0xfee25 orgs.asm:1411
+ db 066h, 003h, 0c8h
+ ; add ecx, eax ; 66 03 c8 ; 0xfee28 orgs.asm:1412
+ mov dword [0046ch], ecx ; 66 89 0e 6c 04 ; 0xfee2b orgs.asm:1414
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfee30 orgs.asm:1415
+ mov byte [00470h], AL ; a2 70 04 ; 0xfee32 orgs.asm:1416
+ retn ; c3 ; 0xfee35 orgs.asm:1419
+ ; disGetNextSymbol 0xfee36 LB 0x11ca -> off=0x0 cb=0000000000000121 uValue=00000000000f0e36 'biosorg_check_before_or_at_0EF55h'
+biosorg_check_before_or_at_0EF55h: ; 0xfee36 LB 0x121
+ times 0x11f db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfef57 LB 0x10a9 -> off=0x0 cb=000000000000003b uValue=00000000000f0f57 'int0e_handler'
+int0e_handler: ; 0xfef57 LB 0x3b
+ push ax ; 50 ; 0xfef57 orgs.asm:1430
+ push dx ; 52 ; 0xfef58 orgs.asm:1431
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1432
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1433
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1434
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1435
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1436
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1437
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1438
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1439
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1441
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1442
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1443
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1444
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1445
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1448
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1449
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1450
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1451
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1452
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1453
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1454
+ push DS ; 1e ; 0xfef81 orgs.asm:1457
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1458
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1459
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1460
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1462
+ pop DS ; 1f ; 0xfef8e orgs.asm:1463
+ pop dx ; 5a ; 0xfef8f orgs.asm:1464
+ pop ax ; 58 ; 0xfef90 orgs.asm:1465
+ iret ; cf ; 0xfef91 orgs.asm:1466
+ ; disGetNextSymbol 0xfef92 LB 0x106e -> off=0x0 cb=0000000000000035 uValue=00000000000f0f92 'biosorg_check_before_or_at_0EFC5h'
+biosorg_check_before_or_at_0EFC5h: ; 0xfef92 LB 0x35
+ times 0x33 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfefc7 LB 0x1039 -> off=0x0 cb=000000000000000b uValue=00000000000f0fc7 '_diskette_param_table'
+_diskette_param_table: ; 0xfefc7 LB 0xb
+ scasw ; af ; 0xfefc7
+ add ah, byte [di] ; 02 25 ; 0xfefc8
+ add dl, byte [bp+si] ; 02 12 ; 0xfefca
+ db 01bh, 0ffh
+ ; sbb di, di ; 1b ff ; 0xfefcc
+ insb ; 6c ; 0xfefce
+ db 0f6h
+ invd ; 0f 08 ; 0xfefd0
+ ; disGetNextSymbol 0xfefd2 LB 0x102e -> off=0x0 cb=0000000000000002 uValue=00000000000f0fd2 'biosorg_check_at_0EFD2h'
+biosorg_check_at_0EFD2h: ; 0xfefd2 LB 0x2
+ jmp short 0efd4h ; eb 00 ; 0xfefd2 orgs.asm:1493
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000000d uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0xd
+ push DS ; 1e ; 0xfefd4 orgs.asm:1496
+ push ES ; 06 ; 0xfefd5 orgs.asm:1497
+ pushaw ; 60 ; 0xfefd6 orgs.asm:97
+ push CS ; 0e ; 0xfefd7 orgs.asm:104
+ pop DS ; 1f ; 0xfefd8 orgs.asm:105
+ cld ; fc ; 0xfefd9 orgs.asm:106
+ call 077adh ; e8 d0 87 ; 0xfefda orgs.asm:1500
+ popaw ; 61 ; 0xfefdd orgs.asm:114
+ pop ES ; 07 ; 0xfefde orgs.asm:1502
+ pop DS ; 1f ; 0xfefdf orgs.asm:1503
+ iret ; cf ; 0xfefe0 orgs.asm:1504
+ ; disGetNextSymbol 0xfefe1 LB 0x101f -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe1 '_pmode_IDT'
+_pmode_IDT: ; 0xfefe1 LB 0x6
+ db 000h, 000h, 000h, 000h, 00fh, 000h
+ ; disGetNextSymbol 0xfefe7 LB 0x1019 -> off=0x0 cb=0000000000000006 uValue=00000000000f0fe7 '_rmode_IDT'
+_rmode_IDT: ; 0xfefe7 LB 0x6
+ db 0ffh, 003h, 000h, 000h, 000h, 000h
+ ; disGetNextSymbol 0xfefed LB 0x1013 -> off=0x0 cb=0000000000000001 uValue=00000000000f0fed 'int1c_handler'
+int1c_handler: ; 0xfefed LB 0x1
+ iret ; cf ; 0xfefed orgs.asm:1539
+ ; disGetNextSymbol 0xfefee LB 0x1012 -> off=0x0 cb=0000000000000057 uValue=00000000000f0fee 'biosorg_check_before_or_at_0F043h'
+biosorg_check_before_or_at_0F043h: ; 0xfefee LB 0x57
+ times 0x55 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff045 LB 0xfbb -> off=0x0 cb=0000000000000001 uValue=00000000000f1045 'biosorg_check_at_0F045h'
+biosorg_check_at_0F045h: ; 0xff045 LB 0x1
+ iret ; cf ; 0xff045 orgs.asm:1548
+ ; disGetNextSymbol 0xff046 LB 0xfba -> off=0x0 cb=000000000000001f uValue=00000000000f1046 'biosorg_check_before_or_at_0F063h'
+biosorg_check_before_or_at_0F063h: ; 0xff046 LB 0x1f
+ times 0x1d db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff065 LB 0xf9b -> off=0x0 cb=0000000000000001 uValue=00000000000f1065 'int10_handler'
+int10_handler: ; 0xff065 LB 0x1
+ iret ; cf ; 0xff065 orgs.asm:1557
+ ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h'
+biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e
+ times 0x3c db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8
+ push CS ; 0e ; 0xff0a4 orgs.asm:104
+ pop DS ; 1f ; 0xff0a5 orgs.asm:105
+ cld ; fc ; 0xff0a6 orgs.asm:106
+ call 0180eh ; e8 64 27 ; 0xff0a7 orgs.asm:1572
+ hlt ; f4 ; 0xff0aa orgs.asm:1574
+ iret ; cf ; 0xff0ab orgs.asm:1575
+ ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=000000000000008f uValue=00000000000f10ac 'int19_relocated'
+int19_relocated: ; 0xff0ac LB 0x8f
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1586
+ mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1587
+ cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1588
+ je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1589
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1591
+ mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1592
+ mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1593
+ mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1594
+ jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1595
+ push CS ; 0e ; 0xff0c3 orgs.asm:104
+ pop DS ; 1f ; 0xff0c4 orgs.asm:105
+ cld ; fc ; 0xff0c5 orgs.asm:106
+ push bp ; 55 ; 0xff0c6 orgs.asm:1602
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1603
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1606
+ push ax ; 50 ; 0xff0cc orgs.asm:1607
+ call 04d10h ; e8 40 5c ; 0xff0cd orgs.asm:1608
+ inc sp ; 44 ; 0xff0d0 orgs.asm:1609
+ inc sp ; 44 ; 0xff0d1 orgs.asm:1610
+ test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1611
+ jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1612
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1615
+ push ax ; 50 ; 0xff0d9 orgs.asm:1616
+ call 04d10h ; e8 33 5c ; 0xff0da orgs.asm:1617
+ inc sp ; 44 ; 0xff0dd orgs.asm:1618
+ inc sp ; 44 ; 0xff0de orgs.asm:1619
+ test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1620
+ jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1621
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1624
+ push ax ; 50 ; 0xff0e6 orgs.asm:1625
+ call 04d10h ; e8 26 5c ; 0xff0e7 orgs.asm:1626
+ inc sp ; 44 ; 0xff0ea orgs.asm:1627
+ inc sp ; 44 ; 0xff0eb orgs.asm:1628
+ test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1629
+ jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1630
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1633
+ push ax ; 50 ; 0xff0f3 orgs.asm:1634
+ call 04d10h ; e8 19 5c ; 0xff0f4 orgs.asm:1635
+ inc sp ; 44 ; 0xff0f7 orgs.asm:1636
+ inc sp ; 44 ; 0xff0f8 orgs.asm:1637
+ test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1638
+ je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1639
+ sal eax, 004h ; 66 c1 e0 04 ; 0xff0fd orgs.asm:1651
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff101 orgs.asm:1652
+ shr eax, 004h ; 66 c1 e8 04 ; 0xff104 orgs.asm:1654
+ and ax, 0f000h ; 25 00 f0 ; 0xff108 orgs.asm:1657
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff10b orgs.asm:1658
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff10e orgs.asm:1659
+ mov ds, ax ; 8e d8 ; 0xff110 orgs.asm:1660
+ mov es, ax ; 8e c0 ; 0xff112 orgs.asm:1661
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff114 orgs.asm:1662
+ mov ax, 0aa55h ; b8 55 aa ; 0xff117 orgs.asm:1663
+ pop bp ; 5d ; 0xff11a orgs.asm:1665
+ iret ; cf ; 0xff11b orgs.asm:1666
+ or cx, word [bp+si] ; 0b 0a ; 0xff11c
+ or word [bp+di], cx ; 09 0b ; 0xff11e
+ push eax ; 66 50 ; 0xff120 orgs.asm:88
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff122 orgs.asm:89
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff128 orgs.asm:90
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff12a orgs.asm:91
+ and dl, 0fch ; 80 e2 fc ; 0xff12e orgs.asm:92
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff131 orgs.asm:93
+ mov dx, 00cf8h ; ba f8 0c ; 0xff133 orgs.asm:94
+ out DX, eax ; 66 ef ; 0xff136 orgs.asm:95
+ pop eax ; 66 58 ; 0xff138 orgs.asm:96
+ retn ; c3 ; 0xff13a orgs.asm:97
+ ; disGetNextSymbol 0xff13b LB 0xec5 -> off=0x0 cb=0000000000000012 uValue=00000000000f113b 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff13b LB 0x12
+ push bp ; 55 ; 0xff13b orgs.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff13c orgs.asm:101
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff13e orgs.asm:103
+ mov dx, 00410h ; ba 10 04 ; 0xff144 orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff147 orgs.asm:105
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff149 orgs.asm:218
+ pop bp ; 5d ; 0xff14b orgs.asm:219
+ retn ; c3 ; 0xff14c orgs.asm:220
+ ; disGetNextSymbol 0xff14d LB 0xeb3 -> off=0x0 cb=000000000000000c uValue=00000000000f114d 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff14d LB 0xc
+ push ax ; 50 ; 0xff14d orgs.asm:223
+ push cx ; 51 ; 0xff14e orgs.asm:224
+ mov dx, 004d0h ; ba d0 04 ; 0xff14f orgs.asm:225
+ test AL, strict byte 008h ; a8 08 ; 0xff152 orgs.asm:226
+ je short 0f159h ; 74 03 ; 0xff154 orgs.asm:227
+ inc dx ; 42 ; 0xff156 orgs.asm:229
+ and AL, strict byte 007h ; 24 07 ; 0xff157 orgs.asm:230
+ ; disGetNextSymbol 0xff159 LB 0xea7 -> off=0x0 cb=000000000000000d uValue=00000000000f1159 'is_master_pic'
+is_master_pic: ; 0xff159 LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff159 orgs.asm:232
+ mov BL, strict byte 001h ; b3 01 ; 0xff15b orgs.asm:233
+ sal bl, CL ; d2 e3 ; 0xff15d orgs.asm:234
+ in AL, DX ; ec ; 0xff15f orgs.asm:235
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff160 orgs.asm:236
+ out DX, AL ; ee ; 0xff162 orgs.asm:237
+ pop cx ; 59 ; 0xff163 orgs.asm:238
+ pop ax ; 58 ; 0xff164 orgs.asm:239
+ retn ; c3 ; 0xff165 orgs.asm:240
+ ; disGetNextSymbol 0xff166 LB 0xe9a -> off=0x0 cb=000000000000002a uValue=00000000000f1166 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff166 LB 0x2a
+ push DS ; 1e ; 0xff166 orgs.asm:243
+ push bp ; 55 ; 0xff167 orgs.asm:244
+ mov ax, 0f000h ; b8 00 f0 ; 0xff168 orgs.asm:245
+ mov ds, ax ; 8e d8 ; 0xff16b orgs.asm:246
+ pop bp ; 5d ; 0xff16d orgs.asm:353
+ pop DS ; 1f ; 0xff16e orgs.asm:354
+ retn ; c3 ; 0xff16f orgs.asm:355
+ and AL, strict byte 050h ; 24 50 ; 0xff170
+ dec cx ; 49 ; 0xff172
+ push dx ; 52 ; 0xff173
+ add byte [bx+di], al ; 00 01 ; 0xff174
+ add byte [bp+si], al ; 00 02 ; 0xff176
+ add byte [bx+si], cl ; 00 08 ; 0xff178
+ add byte [bx+si], al ; 00 00 ; 0xff17a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff17c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff190 LB 0xe70 -> off=0x0 cb=00000000000001e0 uValue=00000000000f1190 '_pci_routing_table'
+_pci_routing_table: ; 0xff190 LB 0x1e0
+ db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
+ db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
+ db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h
+ db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h
+ db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h
+ db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h
+ db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h
+ db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h
+ db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h
+ db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h
+ db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h
+ db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h
+ db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h
+ db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h
+ db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h
+ db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h
+ db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h
+ db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h
+ db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h
+ db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h
+ db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h
+ db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h
+ db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h
+ db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h
+ db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h
+ db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h
+ db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h
+ db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h
+ db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
+ db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
+ ; disGetNextSymbol 0xff370 LB 0xc90 -> off=0x0 cb=0000000000000002 uValue=00000000000f1370 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff370 LB 0x2
+ loopne 0f373h ; e0 01 ; 0xff370
+ ; disGetNextSymbol 0xff372 LB 0xc8e -> off=0x0 cb=00000000000004cf uValue=00000000000f1372 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff372 LB 0x4cf
+ times 0x4cd db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler'
+int12_handler: ; 0xff841 LB 0xc
+ sti ; fb ; 0xff841 orgs.asm:1680
+ push DS ; 1e ; 0xff842 orgs.asm:1681
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1682
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1683
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1684
+ pop DS ; 1f ; 0xff84b orgs.asm:1685
+ iret ; cf ; 0xff84c orgs.asm:1686
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1695
+ push DS ; 1e ; 0xff84e orgs.asm:1696
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1697
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1698
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1699
+ pop DS ; 1f ; 0xff857 orgs.asm:1700
+ iret ; cf ; 0xff858 orgs.asm:1701
+ ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=000000000000003b uValue=00000000000f1859 'int15_handler'
+int15_handler: ; 0xff859 LB 0x3b
+ cmp ah, 087h ; 80 fc 87 ; 0xff859 orgs.asm:1711
+ jne short 0f86bh ; 75 0d ; 0xff85c orgs.asm:1712
+ pushaw ; 60 ; 0xff85e orgs.asm:1717
+ push ES ; 06 ; 0xff85f orgs.asm:1718
+ push DS ; 1e ; 0xff860 orgs.asm:1719
+ push CS ; 0e ; 0xff861 orgs.asm:104
+ pop DS ; 1f ; 0xff862 orgs.asm:105
+ cld ; fc ; 0xff863 orgs.asm:106
+ call 06d3ah ; e8 d3 74 ; 0xff864 orgs.asm:1721
+ pop DS ; 1f ; 0xff867 orgs.asm:1722
+ pop ES ; 07 ; 0xff868 orgs.asm:1723
+ popaw ; 61 ; 0xff869 orgs.asm:1724
+ iret ; cf ; 0xff86a orgs.asm:1725
+ pushfw ; 9c ; 0xff86b orgs.asm:1730
+ push DS ; 1e ; 0xff86c orgs.asm:1731
+ push ES ; 06 ; 0xff86d orgs.asm:1732
+ push CS ; 0e ; 0xff86e orgs.asm:104
+ pop DS ; 1f ; 0xff86f orgs.asm:105
+ cld ; fc ; 0xff870 orgs.asm:106
+ cmp ah, 0e8h ; 80 fc e8 ; 0xff871 orgs.asm:1737
+ je short 0f899h ; 74 23 ; 0xff874 orgs.asm:1738
+ cmp ah, 0d0h ; 80 fc d0 ; 0xff876 orgs.asm:1739
+ je short 0f899h ; 74 1e ; 0xff879 orgs.asm:1740
+ pushaw ; 60 ; 0xff87b orgs.asm:97
+ cmp ah, 053h ; 80 fc 53 ; 0xff87c orgs.asm:1743
+ je short 0f88fh ; 74 0e ; 0xff87f orgs.asm:1744
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff881 orgs.asm:1745
+ je short 0f894h ; 74 0e ; 0xff884 orgs.asm:1746
+ call 06652h ; e8 c9 6d ; 0xff886 orgs.asm:1748
+ popaw ; 61 ; 0xff889 orgs.asm:114
+ pop ES ; 07 ; 0xff88a orgs.asm:1754
+ pop DS ; 1f ; 0xff88b orgs.asm:1755
+ popfw ; 9d ; 0xff88c orgs.asm:1756
+ jmp short 0f8a2h ; eb 13 ; 0xff88d orgs.asm:1757
+ call 09968h ; e8 d6 a0 ; 0xff88f orgs.asm:1760
+ jmp short 0f889h ; eb f5 ; 0xff892 orgs.asm:1761
+ ; disGetNextSymbol 0xff894 LB 0x76c -> off=0x0 cb=0000000000000005 uValue=00000000000f1894 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff894 LB 0x5
+ call 0743dh ; e8 a6 7b ; 0xff894 orgs.asm:1764
+ jmp short 0f889h ; eb f0 ; 0xff897 orgs.asm:1765
+ ; disGetNextSymbol 0xff899 LB 0x767 -> off=0x0 cb=0000000000000009 uValue=00000000000f1899 'int15_handler32'
+int15_handler32: ; 0xff899 LB 0x9
+ pushad ; 66 60 ; 0xff899 orgs.asm:1771
+ call 069b4h ; e8 16 71 ; 0xff89b orgs.asm:1772
+ popad ; 66 61 ; 0xff89e orgs.asm:1773
+ jmp short 0f88ah ; eb e8 ; 0xff8a0 orgs.asm:1775
+ ; disGetNextSymbol 0xff8a2 LB 0x75e -> off=0x0 cb=000000000000001a uValue=00000000000f18a2 'iret_modify_cf'
+iret_modify_cf: ; 0xff8a2 LB 0x1a
+ jc short 0f8b2h ; 72 0e ; 0xff8a2 orgs.asm:1782
+ push bp ; 55 ; 0xff8a4 orgs.asm:1783
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8a5 orgs.asm:1784
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff8a7 orgs.asm:1785
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff8ab orgs.asm:1786
+ pop bp ; 5d ; 0xff8b0 orgs.asm:1787
+ iret ; cf ; 0xff8b1 orgs.asm:1788
+ push bp ; 55 ; 0xff8b2 orgs.asm:1790
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff8b3 orgs.asm:1791
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff8b5 orgs.asm:1792
+ pop bp ; 5d ; 0xff8ba orgs.asm:1793
+ iret ; cf ; 0xff8bb orgs.asm:1794
+ ; disGetNextSymbol 0xff8bc LB 0x744 -> off=0x0 cb=000000000000002b uValue=00000000000f18bc 'int74_handler'
+int74_handler: ; 0xff8bc LB 0x2b
+ sti ; fb ; 0xff8bc orgs.asm:1801
+ pushaw ; 60 ; 0xff8bd orgs.asm:97
+ push ES ; 06 ; 0xff8be orgs.asm:1803
+ push DS ; 1e ; 0xff8bf orgs.asm:1804
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1805
+ push ax ; 50 ; 0xff8c2 orgs.asm:1806
+ push ax ; 50 ; 0xff8c3 orgs.asm:1807
+ push ax ; 50 ; 0xff8c4 orgs.asm:1808
+ push ax ; 50 ; 0xff8c5 orgs.asm:1809
+ push ax ; 50 ; 0xff8c6 orgs.asm:1810
+ push CS ; 0e ; 0xff8c7 orgs.asm:104
+ pop DS ; 1f ; 0xff8c8 orgs.asm:105
+ cld ; fc ; 0xff8c9 orgs.asm:106
+ call 07399h ; e8 cc 7a ; 0xff8ca orgs.asm:1812
+ pop cx ; 59 ; 0xff8cd orgs.asm:1813
+ jcxz 0f8dch ; e3 0c ; 0xff8ce orgs.asm:1814
+ push strict byte 00000h ; 6a 00 ; 0xff8d0 orgs.asm:1818
+ pop DS ; 1f ; 0xff8d2 orgs.asm:1823
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8d3 orgs.asm:1824
+ pop DS ; 1f ; 0xff8d7 orgs.asm:1825
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8d8 orgs.asm:1826
+ cli ; fa ; 0xff8dc orgs.asm:1828
+ call 0e030h ; e8 50 e7 ; 0xff8dd orgs.asm:1829
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8e0 orgs.asm:1830
+ pop DS ; 1f ; 0xff8e3 orgs.asm:1831
+ pop ES ; 07 ; 0xff8e4 orgs.asm:1832
+ popaw ; 61 ; 0xff8e5 orgs.asm:114
+ iret ; cf ; 0xff8e6 orgs.asm:1834
+ ; disGetNextSymbol 0xff8e7 LB 0x719 -> off=0x0 cb=0000000000000012 uValue=00000000000f18e7 'int76_handler'
+int76_handler: ; 0xff8e7 LB 0x12
+ push ax ; 50 ; 0xff8e7 orgs.asm:1841
+ push DS ; 1e ; 0xff8e8 orgs.asm:1842
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8e9 orgs.asm:1843
+ mov ds, ax ; 8e d8 ; 0xff8ec orgs.asm:1844
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8ee orgs.asm:1845
+ call 0e030h ; e8 3a e7 ; 0xff8f3 orgs.asm:1846
+ pop DS ; 1f ; 0xff8f6 orgs.asm:1847
+ pop ax ; 58 ; 0xff8f7 orgs.asm:1848
+ iret ; cf ; 0xff8f8 orgs.asm:1849
+ ; disGetNextSymbol 0xff8f9 LB 0x707 -> off=0x0 cb=000000000000000d uValue=00000000000f18f9 'int70_handler'
+int70_handler: ; 0xff8f9 LB 0xd
+ push ES ; 06 ; 0xff8f9 orgs.asm:1858
+ push DS ; 1e ; 0xff8fa orgs.asm:1859
+ pushaw ; 60 ; 0xff8fb orgs.asm:97
+ push CS ; 0e ; 0xff8fc orgs.asm:104
+ pop DS ; 1f ; 0xff8fd orgs.asm:105
+ cld ; fc ; 0xff8fe orgs.asm:106
+ call 0706eh ; e8 6c 77 ; 0xff8ff orgs.asm:1862
+ popaw ; 61 ; 0xff902 orgs.asm:114
+ pop DS ; 1f ; 0xff903 orgs.asm:1864
+ pop ES ; 07 ; 0xff904 orgs.asm:1865
+ iret ; cf ; 0xff905 orgs.asm:1866
+ ; disGetNextSymbol 0xff906 LB 0x6fa -> off=0x0 cb=0000000000000168 uValue=00000000000f1906 'biosorg_check_before_or_at_0FA6Ch'
+biosorg_check_before_or_at_0FA6Ch: ; 0xff906 LB 0x168
+ times 0x166 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffa6e LB 0x592 -> off=0x0 cb=0000000000000400 uValue=00000000000f1a6e 'font8x8'
+font8x8: ; 0xffa6e LB 0x400
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
+ db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
+ db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h, 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch
+ db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch, 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h
+ db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh, 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h
+ db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh, 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h
+ db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h, 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h
+ db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h, 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h
+ db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h, 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h
+ db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h
+ db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h, 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h
+ db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h, 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh
+ db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h
+ db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h, 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h
+ db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h
+ db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h
+ db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h, 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h
+ db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h, 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h
+ db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h, 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h
+ db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h, 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h
+ db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h, 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h, 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h, 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h
+ db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h, 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h
+ db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h, 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h
+ db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h, 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h
+ db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h, 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h
+ db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h, 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h
+ db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h
+ db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h, 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h
+ db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h, 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h
+ db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h, 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h
+ db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h, 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h
+ db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h, 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h
+ db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h, 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h
+ db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h, 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h, 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h
+ db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h, 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h
+ db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h, 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h
+ db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h, 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h
+ db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h, 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h
+ db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h, 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h
+ db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h, 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h
+ db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h
+ db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h, 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h
+ db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h, 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h
+ db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh
+ db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h
+ db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h, 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h
+ db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h, 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h
+ db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h, 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h
+ db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h
+ db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h, 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h
+ db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h, 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h
+ db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh
+ db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h, 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h
+ db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h, 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h
+ db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h, 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h
+ db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
+ db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
+ ; disGetNextSymbol 0xffe6e LB 0x192 -> off=0x0 cb=0000000000000021 uValue=00000000000f1e6e 'biosorg_check_at_0FE6Eh'
+biosorg_check_at_0FE6Eh: ; 0xffe6e LB 0x21
+ cmp ah, 0b1h ; 80 fc b1 ; 0xffe6e orgs.asm:1903
+ jne short 0fe82h ; 75 0f ; 0xffe71 orgs.asm:1904
+ push ES ; 06 ; 0xffe73 orgs.asm:1906
+ push DS ; 1e ; 0xffe74 orgs.asm:1907
+ push CS ; 0e ; 0xffe75 orgs.asm:104
+ pop DS ; 1f ; 0xffe76 orgs.asm:105
+ cld ; fc ; 0xffe77 orgs.asm:106
+ pushad ; 66 60 ; 0xffe78 orgs.asm:1910
+ call 09b78h ; e8 fb 9c ; 0xffe7a orgs.asm:1911
+ popad ; 66 61 ; 0xffe7d orgs.asm:1912
+ pop DS ; 1f ; 0xffe7f orgs.asm:1914
+ pop ES ; 07 ; 0xffe80 orgs.asm:1915
+ iret ; cf ; 0xffe81 orgs.asm:1916
+ push ES ; 06 ; 0xffe82 orgs.asm:1920
+ push DS ; 1e ; 0xffe83 orgs.asm:1921
+ pushaw ; 60 ; 0xffe84 orgs.asm:97
+ push CS ; 0e ; 0xffe85 orgs.asm:104
+ pop DS ; 1f ; 0xffe86 orgs.asm:105
+ cld ; fc ; 0xffe87 orgs.asm:106
+ call 0710fh ; e8 84 72 ; 0xffe88 orgs.asm:1925
+ popaw ; 61 ; 0xffe8b orgs.asm:114
+ pop DS ; 1f ; 0xffe8c orgs.asm:1927
+ pop ES ; 07 ; 0xffe8d orgs.asm:1928
+ iret ; cf ; 0xffe8e orgs.asm:1929
+ ; disGetNextSymbol 0xffe8f LB 0x171 -> off=0x0 cb=0000000000000016 uValue=00000000000f1e8f 'biosorg_check_before_or_at_0FEA3h'
+biosorg_check_before_or_at_0FEA3h: ; 0xffe8f LB 0x16
+ times 0x14 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffea5 LB 0x15b -> off=0x0 cb=0000000000000043 uValue=00000000000f1ea5 'int08_handler'
+int08_handler: ; 0xffea5 LB 0x43
+ sti ; fb ; 0xffea5 orgs.asm:1939
+ push eax ; 66 50 ; 0xffea6 orgs.asm:1940
+ push DS ; 1e ; 0xffea8 orgs.asm:1945
+ push dx ; 52 ; 0xffea9 orgs.asm:1946
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffeaa orgs.asm:1947
+ mov ds, ax ; 8e d8 ; 0xffead orgs.asm:1948
+ mov eax, dword [0006ch] ; 66 a1 6c 00 ; 0xffeaf orgs.asm:1951
+ inc eax ; 66 40 ; 0xffeb3 orgs.asm:1952
+ cmp eax, strict dword 0001800b0h ; 66 3d b0 00 18 00 ; 0xffeb5 orgs.asm:1964
+ jc short 0fec4h ; 72 07 ; 0xffebb orgs.asm:1965
+ db 066h, 033h, 0c0h
+ ; xor eax, eax ; 66 33 c0 ; 0xffebd orgs.asm:1974
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xffec0 orgs.asm:1975
+ mov dword [0006ch], eax ; 66 a3 6c 00 ; 0xffec4 orgs.asm:1978
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1986
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1987
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1988
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:1989
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1990
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1991
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:1993
+ in AL, DX ; ec ; 0xffed9 orgs.asm:1994
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:1995
+ out DX, AL ; ee ; 0xffedc orgs.asm:1996
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:1999
+ cli ; fa ; 0xffedf orgs.asm:2001
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2002
+ pop dx ; 5a ; 0xffee3 orgs.asm:2003
+ pop DS ; 1f ; 0xffee4 orgs.asm:2004
+ pop eax ; 66 58 ; 0xffee5 orgs.asm:2006
+ iret ; cf ; 0xffee7 orgs.asm:2011
+ ; disGetNextSymbol 0xffee8 LB 0x118 -> off=0x0 cb=000000000000000b uValue=00000000000f1ee8 'biosorg_check_before_or_at_0FEF1h'
+biosorg_check_before_or_at_0FEF1h: ; 0xffee8 LB 0xb
+ times 0x9 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffef3 LB 0x10d -> off=0x0 cb=000000000000000d uValue=00000000000f1ef3 'biosorg_check_at_0FEF3h'
+biosorg_check_at_0FEF3h: ; 0xffef3 LB 0xd
+ times 0xb db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfff00 LB 0x100 -> off=0x0 cb=0000000000000019 uValue=00000000000f1f00 'biosorg_check_at_0FF00h'
+biosorg_check_at_0FF00h: ; 0xfff00 LB 0x19
+ dec di ; 4f ; 0xfff00
+ jc short 0ff64h ; 72 61 ; 0xfff01
+ arpl [si+065h], bp ; 63 6c 65 ; 0xfff03
+ and byte [bp+04dh], dl ; 20 56 4d ; 0xfff06
+ and byte [bp+069h], dl ; 20 56 69 ; 0xfff09
+ jc short 0ff82h ; 72 74 ; 0xfff0c
+ jne short 0ff71h ; 75 61 ; 0xfff0e
+ insb ; 6c ; 0xfff10
+ inc dx ; 42 ; 0xfff11
+ outsw ; 6f ; 0xfff12
+ js short 0ff35h ; 78 20 ; 0xfff13
+ inc dx ; 42 ; 0xfff15
+ dec cx ; 49 ; 0xfff16
+ dec di ; 4f ; 0xfff17
+ push bx ; 53 ; 0xfff18
+ ; disGetNextSymbol 0xfff19 LB 0xe7 -> off=0x0 cb=000000000000003a uValue=00000000000f1f19 'biosorg_check_before_or_at_0FF51h'
+biosorg_check_before_or_at_0FF51h: ; 0xfff19 LB 0x3a
+ times 0x38 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfff53 LB 0xad -> off=0x0 cb=0000000000000001 uValue=00000000000f1f53 'dummy_iret'
+dummy_iret: ; 0xfff53 LB 0x1
+ iret ; cf ; 0xfff53 orgs.asm:2036
+ ; disGetNextSymbol 0xfff54 LB 0xac -> off=0x0 cb=000000000000002c uValue=00000000000f1f54 'biosorg_check_at_0FF54h'
+biosorg_check_at_0FF54h: ; 0xfff54 LB 0x2c
+ iret ; cf ; 0xfff54 orgs.asm:2045
+ mov ax, ax ; 89 c0 ; 0xfff55
+ mov ax, ax ; 89 c0 ; 0xfff57
+ mov ax, ax ; 89 c0 ; 0xfff59
+ mov ax, ax ; 89 c0 ; 0xfff5b
+ mov ax, ax ; 89 c0 ; 0xfff5d
+ cld ; fc ; 0xfff5f
+ pop di ; 5f ; 0xfff60
+ push bx ; 53 ; 0xfff61
+ dec bp ; 4d ; 0xfff62
+ pop di ; 5f ; 0xfff63
+ jnl short 0ff85h ; 7d 1f ; 0xfff64
+ add al, byte [di] ; 02 05 ; 0xfff66
+ inc word [bx+si] ; ff 00 ; 0xfff68
+ add byte [bx+si], al ; 00 00 ; 0xfff6a
+ add byte [bx+si], al ; 00 00 ; 0xfff6c
+ add byte [bx+si], al ; 00 00 ; 0xfff6e
+ pop di ; 5f ; 0xfff70
+ inc sp ; 44 ; 0xfff71
+ dec bp ; 4d ; 0xfff72
+ dec cx ; 49 ; 0xfff73
+ pop di ; 5f ; 0xfff74
+ and ax, strict word 00000h ; 25 00 00 ; 0xfff75
+ add byte [bx+si], dl ; 00 10 ; 0xfff78
+ push CS ; 0e ; 0xfff7a
+ add byte [bx+si], al ; 00 00 ; 0xfff7b
+ add byte [di], ah ; 00 25 ; 0xfff7d
+ times 0x1 db 0
+ ; disGetNextSymbol 0xfff80 LB 0x80 -> off=0x0 cb=0000000000000070 uValue=00000000000f1f80 'biosorg_check_before_or_at_0FFEEh'
+biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70
+ times 0x6e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffff0 LB 0x10 -> off=0x0 cb=0000000000000010 uValue=00000000000f1ff0 'cpu_reset'
+cpu_reset: ; 0xffff0 LB 0x10
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2055
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 041h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
new file mode 100644
index 00000000..0e14786b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
@@ -0,0 +1 @@
+bf4957d3b704b8fe66ba88679a891536 *VBoxPcBios386.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
new file mode 100644
index 00000000..a18b3206
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
@@ -0,0 +1,17844 @@
+; $Id: VBoxBiosAlternative8086.asm $
+;; @file
+; Auto Generated source file. Do not edit.
+;
+
+;
+; Source file: post.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BIOS POST routines. Used only during initialization.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: bios.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: print.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ata.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppy.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: floppyt.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Floppy drive tables.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: eltorito.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: boot.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: keyboard.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: disk.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: serial.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: system.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: invop.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Real mode invalid opcode handler.
+;
+;
+;
+; Copyright (C) 2013-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: timepci.c
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: ps2mouse.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: parallel.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PC BIOS - ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: logo.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Stuff for drawing the BIOS logo.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: scsi.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; SCSI host adapter driver to boot from SCSI disks
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ahci.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: apm.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; APM BIOS support. Implements APM version 1.2.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pcibios.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; PCI BIOS support.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: pciutil.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Utility routines for calling the PCI BIOS.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: vds.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Utility routines for calling the Virtual DMA Services.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: __U4M.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U4D.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8RS.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: __U8LS.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemset.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: fmemcpy.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; Compiler support routines.
+;
+;
+;
+; Copyright (C) 2012-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pcibio32.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+;
+; Source file: apm_pm.asm
+;
+; $Id:
+; Protected-mode APM implementation.
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: orgs.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; ???
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+;
+; Source file: DoUInt32Div.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; AHCI host adapter driver to boot from SATA disks.
+;
+;
+;
+; Copyright (C) 2011-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+;
+; Source file: ASMBitLastSetU16.asm
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; BiosCommonCode - ASMBitLastSetU16() - borrowed from IPRT.
+;
+;
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;
+; Source file: pci32.c
+;
+; $Id: VBoxBiosAlternative8086.asm $
+; 32-bit PCI BIOS wrapper.
+;
+;
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+
+
+
+
+section _DATA progbits vstart=0x0 align=1 ; size=0xb0 class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0000 LB 0xb0 -> off=0x0 cb=000000000000005b uValue=00000000000f0000 '_fd_parm'
+_fd_parm: ; 0xf0000 LB 0x5b
+ db 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 080h, 0dfh, 002h, 025h
+ db 002h, 009h, 02ah, 0ffh, 050h, 0f6h, 00fh, 008h, 027h, 040h, 0dfh, 002h, 025h, 002h, 00fh, 01bh
+ db 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 000h, 0dfh, 002h, 025h, 002h, 009h, 02ah, 0ffh, 050h, 0f6h
+ db 00fh, 008h, 04fh, 080h, 0afh, 002h, 025h, 002h, 012h, 01bh, 0ffh, 06ch, 0f6h, 00fh, 008h, 04fh
+ db 000h, 0afh, 002h, 025h, 002h, 024h, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 04fh, 0c0h, 0afh, 002h
+ db 025h, 002h, 0ffh, 01bh, 0ffh, 054h, 0f6h, 00fh, 008h, 0ffh, 000h
+ ; disGetNextSymbol 0xf005b LB 0x55 -> off=0x0 cb=000000000000000f uValue=00000000000f005b '_fd_map'
+_fd_map: ; 0xf005b LB 0xf
+ db 001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
+ ; disGetNextSymbol 0xf006a LB 0x46 -> off=0x0 cb=000000000000000c uValue=00000000000f006a '_pktacc'
+_pktacc: ; 0xf006a LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 044h, 02bh, 0a1h, 07ch, 087h, 08ch
+ ; disGetNextSymbol 0xf0076 LB 0x3a -> off=0x0 cb=000000000000000c uValue=00000000000f0076 '_softrst'
+_softrst: ; 0xf0076 LB 0xc
+ db 000h, 000h, 000h, 000h, 000h, 000h, 0d9h, 02dh, 0dah, 03bh, 0dah, 03bh
+ ; disGetNextSymbol 0xf0082 LB 0x2e -> off=0x0 cb=000000000000002e uValue=00000000000f0082 '_dskacc'
+_dskacc: ; 0xf0082 LB 0x2e
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 028h, 02ah, 0e9h, 02ah, 000h, 000h, 000h, 000h
+ db 0cfh, 07ah, 0b8h, 07bh, 055h, 08bh, 0ffh, 08bh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+ db 032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
+
+section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf00b0 LB 0xcde -> off=0xcde cb=0000000000000000 uValue=00000000000f0d8e 'bios_cvs_version_string'
+ db 'NMI Handler called', 00ah, 000h
+ db 'INT18: BOOT FAILURE', 00ah, 000h
+ db '%s', 00ah, 000h, 000h
+ db 'FATAL: ', 000h
+ db 'bios_printf: unknown %ll format', 00ah, 000h
+ db 'bios_printf: unknown format', 00ah, 000h
+ db 'ata-detect: Failed to detect ATA device', 00ah, 000h
+ db 'ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u', 00ah, 000h
+ db 'ata-detect: Failed to detect ATAPI device', 00ah, 000h
+ db ' slave', 000h
+ db 'master', 000h
+ db 'ata%d %s: ', 000h
+ db '%c', 000h
+ db ' ATA-%d Hard-Disk (%lu MBytes)', 00ah, 000h
+ db ' ATAPI-%d CD-ROM/DVD-ROM', 00ah, 000h
+ db ' ATAPI-%d Device', 00ah, 000h
+ db 'ata%d %s: Unknown device', 00ah, 000h
+ db 'ata_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'set_diskette_current_cyl: drive > 1', 00ah, 000h
+ db 'int13_diskette_function', 000h
+ db '%s: drive>1 || head>1 ...', 00ah, 000h
+ db '%s: ctrl not ready', 00ah, 000h
+ db '%s: write error', 00ah, 000h
+ db '%s: bad floppy type', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h, 000h
+ db 'int13_eltorito', 000h
+ db '%s: call with AX=%04x not implemented.', 00ah, 000h
+ db '%s: unsupported AH=%02x', 00ah, 000h
+ db 'int13_cdemu', 000h
+ db '%s: function %02x, emulation not active for DL= %02x', 00ah, 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db '%s: function %02x. Can', 027h, 't use 64bits lba', 00ah, 000h
+ db '%s: function %02x, status %02x !', 00ah, 000h
+ db '%s: function AH=%02x unsupported, returns fail', 00ah, 000h
+ db 'int13_cdrom', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h, 000h
+ db 'Booting from %s...', 00ah, 000h
+ db 'Boot from %s failed', 00ah, 000h
+ db 'Boot from %s %d failed', 00ah, 000h
+ db 'No bootable medium found! System halted.', 00ah, 000h
+ db 'Could not read from the boot medium! System halted.', 00ah, 000h
+ db 'CDROM boot failure code : %04x', 00ah, 000h
+ db 'Boot : bseqnr=%d, bootseq=%x', 00dh, 00ah, 000h, 000h
+ db 'Keyboard error:%u', 00ah, 000h
+ db 'KBD: int09 handler: AL=0', 00ah, 000h
+ db 'KBD: int09h_handler(): unknown scancode read: 0x%02x!', 00ah, 000h
+ db 'KBD: int09h_handler(): scancode & asciicode are zero?', 00ah, 000h
+ db 'KBD: int16h: out of keyboard input', 00ah, 000h
+ db 'KBD: unsupported int 16h function %02x', 00ah, 000h
+ db 'AX=%04x BX=%04x CX=%04x DX=%04x ', 00ah, 000h, 000h
+ db 'int13_harddisk', 000h
+ db '%s: function %02x, ELDL out of range %02x', 00ah, 000h
+ db '%s: function %02x, unmapped device for ELDL=%02x', 00ah, 000h
+ db '%s: function %02x, count out of range!', 00ah, 000h
+ db '%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!', 00ah
+ db 000h
+ db '%s: function %02x, error %02x !', 00ah, 000h
+ db 'format disk track called', 00ah, 000h
+ db '%s: function %02xh unimplemented, returns success', 00ah, 000h
+ db '%s: function %02xh unsupported, returns fail', 00ah, 000h
+ db 'int13_harddisk_ext', 000h
+ db '%s: function %02x. LBA out of range', 00ah, 000h, 000h
+ db 'int15: Func 24h, subfunc %02xh, A20 gate control not supported', 00ah, 000h
+ db '*** int 15h function AH=bf not yet supported!', 00ah, 000h
+ db 'EISA BIOS not present', 00ah, 000h
+ db '*** int 15h function AX=%04x, BX=%04x not yet supported!', 00ah, 000h
+ db 'sendmouse', 000h
+ db 'setkbdcomm', 000h
+ db 'Mouse reset returned %02x (should be ack)', 00ah, 000h
+ db 'Mouse status returned %02x (should be ack)', 00ah, 000h
+ db 'INT 15h C2 AL=6, BH=%02x', 00ah, 000h
+ db 'INT 15h C2 default case entered', 00ah, 000h, 000h
+ db 'Key pressed: %x', 00ah, 000h
+ db 00ah, 00ah, ' AHCI controller:', 000h
+ db 00ah, ' %d) Hard disk', 000h
+ db 00ah, 00ah, ' SCSI controller:', 000h
+ db ' IDE controller:', 000h
+ db 00ah, 00ah, 'AHCI controller:', 00ah, 000h
+ db 00ah, ' %d) ', 000h
+ db 'Secondary ', 000h
+ db 'Primary ', 000h
+ db 'Slave', 000h
+ db 'Master', 000h
+ db 'No hard disks found', 000h
+ db 00ah, 000h
+ db 'Press F12 to select boot device.', 00ah, 000h
+ db 00ah, 'VirtualBox temporary boot device selection', 00ah, 00ah, 'Detected H'
+ db 'ard disks:', 00ah, 00ah, 000h
+ db 00ah, 'Other boot devices:', 00ah, ' f) Floppy', 00ah, ' c) CD-ROM', 00ah
+ db ' l) LAN', 00ah, 00ah, ' b) Continue booting', 00ah, 000h
+ db 'Delaying boot for %d seconds:', 000h
+ db ' %d', 000h, 000h
+ db 'scsi_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'scsi_write_sectors', 000h
+ db 'scsi_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'scsi_enumerate_attached_devices', 000h
+ db '%s: SCSI_INQUIRY failed', 00ah, 000h
+ db '%s: SCSI_READ_CAPACITY failed', 00ah, 000h
+ db 'Disk %d has an unsupported sector size of %u', 00ah, 000h
+ db 'SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'SCSI %d-ID#%d: CD/DVD-ROM', 00ah, 000h, 000h
+ db 'ahci_read_sectors', 000h
+ db '%s: device_id out of range %d', 00ah, 000h
+ db 'ahci_write_sectors', 000h
+ db 'ahci_cmd_packet', 000h
+ db '%s: DATA_OUT not supported yet', 00ah, 000h
+ db 'AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors', 00ah, 000h
+ db 'Standby', 000h
+ db 'Suspend', 000h
+ db 'Shutdown', 000h
+ db 'APM: Unsupported function AX=%04X BX=%04X called', 00ah, 000h, 000h
+ db 'PCI: Unsupported function AX=%04X BX=%04X called', 00ah, 000h
+
+section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
+ ; disGetNextSymbol 0xf0d8e LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0d8e 'bios_cvs_version_string'
+bios_cvs_version_string: ; 0xf0d8e LB 0x12
+ db 'VirtualBox 6.0.4', 000h, 000h
+ ; disGetNextSymbol 0xf0da0 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0da0 '_bios_prefix_string'
+_bios_prefix_string: ; 0xf0da0 LB 0x8
+ db 'BIOS: ', 000h, 000h
+ ; disGetNextSymbol 0xf0da8 LB 0x3e0 -> off=0x0 cb=0000000000000006 uValue=00000000000f0da8 'isotag'
+isotag: ; 0xf0da8 LB 0x6
+ db 'CD001', 000h
+ ; disGetNextSymbol 0xf0dae LB 0x3da -> off=0x0 cb=0000000000000018 uValue=00000000000f0dae 'eltorito'
+eltorito: ; 0xf0dae LB 0x18
+ db 'EL TORITO SPECIFICATION', 000h
+ ; disGetNextSymbol 0xf0dc6 LB 0x3c2 -> off=0x0 cb=0000000000000028 uValue=00000000000f0dc6 'drivetypes'
+drivetypes: ; 0xf0dc6 LB 0x28
+ db 046h, 06ch, 06fh, 070h, 070h, 079h, 000h, 000h, 000h, 000h, 048h, 061h, 072h, 064h, 020h, 044h
+ db 069h, 073h, 06bh, 000h, 043h, 044h, 02dh, 052h, 04fh, 04dh, 000h, 000h, 000h, 000h, 04ch, 041h
+ db 04eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ ; disGetNextSymbol 0xf0dee LB 0x39a -> off=0x0 cb=000000000000037a uValue=00000000000f0dee 'scan_to_scanascii'
+scan_to_scanascii: ; 0xf0dee LB 0x37a
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01bh, 001h, 01bh, 001h, 01bh, 001h
+ db 000h, 001h, 000h, 000h, 031h, 002h, 021h, 002h, 000h, 000h, 000h, 078h, 000h, 000h, 032h, 003h
+ db 040h, 003h, 000h, 003h, 000h, 079h, 000h, 000h, 033h, 004h, 023h, 004h, 000h, 000h, 000h, 07ah
+ db 000h, 000h, 034h, 005h, 024h, 005h, 000h, 000h, 000h, 07bh, 000h, 000h, 035h, 006h, 025h, 006h
+ db 000h, 000h, 000h, 07ch, 000h, 000h, 036h, 007h, 05eh, 007h, 01eh, 007h, 000h, 07dh, 000h, 000h
+ db 037h, 008h, 026h, 008h, 000h, 000h, 000h, 07eh, 000h, 000h, 038h, 009h, 02ah, 009h, 000h, 000h
+ db 000h, 07fh, 000h, 000h, 039h, 00ah, 028h, 00ah, 000h, 000h, 000h, 080h, 000h, 000h, 030h, 00bh
+ db 029h, 00bh, 000h, 000h, 000h, 081h, 000h, 000h, 02dh, 00ch, 05fh, 00ch, 01fh, 00ch, 000h, 082h
+ db 000h, 000h, 03dh, 00dh, 02bh, 00dh, 000h, 000h, 000h, 083h, 000h, 000h, 008h, 00eh, 008h, 00eh
+ db 07fh, 00eh, 000h, 000h, 000h, 000h, 009h, 00fh, 000h, 00fh, 000h, 000h, 000h, 000h, 000h, 000h
+ db 071h, 010h, 051h, 010h, 011h, 010h, 000h, 010h, 040h, 000h, 077h, 011h, 057h, 011h, 017h, 011h
+ db 000h, 011h, 040h, 000h, 065h, 012h, 045h, 012h, 005h, 012h, 000h, 012h, 040h, 000h, 072h, 013h
+ db 052h, 013h, 012h, 013h, 000h, 013h, 040h, 000h, 074h, 014h, 054h, 014h, 014h, 014h, 000h, 014h
+ db 040h, 000h, 079h, 015h, 059h, 015h, 019h, 015h, 000h, 015h, 040h, 000h, 075h, 016h, 055h, 016h
+ db 015h, 016h, 000h, 016h, 040h, 000h, 069h, 017h, 049h, 017h, 009h, 017h, 000h, 017h, 040h, 000h
+ db 06fh, 018h, 04fh, 018h, 00fh, 018h, 000h, 018h, 040h, 000h, 070h, 019h, 050h, 019h, 010h, 019h
+ db 000h, 019h, 040h, 000h, 05bh, 01ah, 07bh, 01ah, 01bh, 01ah, 000h, 000h, 000h, 000h, 05dh, 01bh
+ db 07dh, 01bh, 01dh, 01bh, 000h, 000h, 000h, 000h, 00dh, 01ch, 00dh, 01ch, 00ah, 01ch, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 061h, 01eh, 041h, 01eh
+ db 001h, 01eh, 000h, 01eh, 040h, 000h, 073h, 01fh, 053h, 01fh, 013h, 01fh, 000h, 01fh, 040h, 000h
+ db 064h, 020h, 044h, 020h, 004h, 020h, 000h, 020h, 040h, 000h, 066h, 021h, 046h, 021h, 006h, 021h
+ db 000h, 021h, 040h, 000h, 067h, 022h, 047h, 022h, 007h, 022h, 000h, 022h, 040h, 000h, 068h, 023h
+ db 048h, 023h, 008h, 023h, 000h, 023h, 040h, 000h, 06ah, 024h, 04ah, 024h, 00ah, 024h, 000h, 024h
+ db 040h, 000h, 06bh, 025h, 04bh, 025h, 00bh, 025h, 000h, 025h, 040h, 000h, 06ch, 026h, 04ch, 026h
+ db 00ch, 026h, 000h, 026h, 040h, 000h, 03bh, 027h, 03ah, 027h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 027h, 028h, 022h, 028h, 000h, 000h, 000h, 000h, 000h, 000h, 060h, 029h, 07eh, 029h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 02bh
+ db 07ch, 02bh, 01ch, 02bh, 000h, 000h, 000h, 000h, 07ah, 02ch, 05ah, 02ch, 01ah, 02ch, 000h, 02ch
+ db 040h, 000h, 078h, 02dh, 058h, 02dh, 018h, 02dh, 000h, 02dh, 040h, 000h, 063h, 02eh, 043h, 02eh
+ db 003h, 02eh, 000h, 02eh, 040h, 000h, 076h, 02fh, 056h, 02fh, 016h, 02fh, 000h, 02fh, 040h, 000h
+ db 062h, 030h, 042h, 030h, 002h, 030h, 000h, 030h, 040h, 000h, 06eh, 031h, 04eh, 031h, 00eh, 031h
+ db 000h, 031h, 040h, 000h, 06dh, 032h, 04dh, 032h, 00dh, 032h, 000h, 032h, 040h, 000h, 02ch, 033h
+ db 03ch, 033h, 000h, 000h, 000h, 000h, 000h, 000h, 02eh, 034h, 03eh, 034h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 02fh, 035h, 03fh, 035h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 02ah, 037h, 02ah, 037h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 020h, 039h, 020h, 039h, 020h, 039h
+ db 020h, 039h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03bh
+ db 000h, 054h, 000h, 05eh, 000h, 068h, 000h, 000h, 000h, 03ch, 000h, 055h, 000h, 05fh, 000h, 069h
+ db 000h, 000h, 000h, 03dh, 000h, 056h, 000h, 060h, 000h, 06ah, 000h, 000h, 000h, 03eh, 000h, 057h
+ db 000h, 061h, 000h, 06bh, 000h, 000h, 000h, 03fh, 000h, 058h, 000h, 062h, 000h, 06ch, 000h, 000h
+ db 000h, 040h, 000h, 059h, 000h, 063h, 000h, 06dh, 000h, 000h, 000h, 041h, 000h, 05ah, 000h, 064h
+ db 000h, 06eh, 000h, 000h, 000h, 042h, 000h, 05bh, 000h, 065h, 000h, 06fh, 000h, 000h, 000h, 043h
+ db 000h, 05ch, 000h, 066h, 000h, 070h, 000h, 000h, 000h, 044h, 000h, 05dh, 000h, 067h, 000h, 071h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 047h, 037h, 047h, 000h, 077h, 000h, 000h, 020h, 000h
+ db 000h, 048h, 038h, 048h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 049h, 039h, 049h, 000h, 084h
+ db 000h, 000h, 020h, 000h, 02dh, 04ah, 02dh, 04ah, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04bh
+ db 034h, 04bh, 000h, 073h, 000h, 000h, 020h, 000h, 000h, 04ch, 035h, 04ch, 000h, 000h, 000h, 000h
+ db 020h, 000h, 000h, 04dh, 036h, 04dh, 000h, 074h, 000h, 000h, 020h, 000h, 02bh, 04eh, 02bh, 04eh
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04fh, 031h, 04fh, 000h, 075h, 000h, 000h, 020h, 000h
+ db 000h, 050h, 032h, 050h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 051h, 033h, 051h, 000h, 076h
+ db 000h, 000h, 020h, 000h, 000h, 052h, 030h, 052h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 053h
+ db 02eh, 053h, 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 05ch, 056h, 07ch, 056h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 000h, 087h, 000h, 089h, 000h, 08bh, 000h, 000h
+ db 000h, 086h, 000h, 088h, 000h, 08ah, 000h, 08ch, 000h, 000h
+ ; disGetNextSymbol 0xf1168 LB 0x20 -> off=0x0 cb=0000000000000020 uValue=00000000000f1168 'panic_msg_keyb_buffer_full'
+panic_msg_keyb_buffer_full: ; 0xf1168 LB 0x20
+ db '%s: keyboard input buffer full', 00ah, 000h
+
+ ; Padding 0x478 bytes at 0xf1188
+ times 1144 db 0
+
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x8948 class=CODE group=AUTO
+ ; disGetNextSymbol 0xf1600 LB 0x8948 -> off=0x0 cb=0000000000000052 uValue=00000000000f0000 'rom_scan'
+rom_scan: ; 0xf1600 LB 0x52
+ push bp ; 55 ; 0xf1600 post.c:73
+ mov bp, sp ; 89 e5 ; 0xf1601
+ push bx ; 53 ; 0xf1603
+ push cx ; 51 ; 0xf1604
+ push si ; 56 ; 0xf1605
+ push di ; 57 ; 0xf1606
+ push ax ; 50 ; 0xf1607
+ push ax ; 50 ; 0xf1608
+ mov bx, ax ; 89 c3 ; 0xf1609
+ mov di, dx ; 89 d7 ; 0xf160b
+ cmp bx, di ; 39 fb ; 0xf160d post.c:80
+ jnc short 01649h ; 73 38 ; 0xf160f
+ xor si, si ; 31 f6 ; 0xf1611 post.c:81
+ mov dx, bx ; 89 da ; 0xf1613
+ mov es, bx ; 8e c3 ; 0xf1615 post.c:83
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf1617
+ jne short 01643h ; 75 25 ; 0xf161c
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf161e post.c:89
+ mov word [bp-00ch], strict word 00003h ; c7 46 f4 03 00 ; 0xf1621
+ call far [bp-00ch] ; ff 5e f4 ; 0xf1626 post.c:90
+ cli ; fa ; 0xf1629 post.c:91
+ mov es, bx ; 8e c3 ; 0xf162a post.c:95
+ mov al, byte [es:si+002h] ; 26 8a 44 02 ; 0xf162c
+ add AL, strict byte 003h ; 04 03 ; 0xf1630
+ and AL, strict byte 0fch ; 24 fc ; 0xf1632
+ xor ah, ah ; 30 e4 ; 0xf1634 post.c:96
+ cwd ; 99 ; 0xf1636
+ mov CL, strict byte 002h ; b1 02 ; 0xf1637
+ sal dx, CL ; d3 e2 ; 0xf1639
+ db 01bh, 0c2h
+ ; sbb ax, dx ; 1b c2 ; 0xf163b
+ sar ax, CL ; d3 f8 ; 0xf163d
+ add bx, ax ; 01 c3 ; 0xf163f
+ jmp short 0160dh ; eb ca ; 0xf1641 post.c:98
+ add bx, 00080h ; 81 c3 80 00 ; 0xf1643 post.c:100
+ jmp short 0160dh ; eb c4 ; 0xf1647 post.c:102
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf1649 post.c:103
+ pop di ; 5f ; 0xf164c
+ pop si ; 5e ; 0xf164d
+ pop cx ; 59 ; 0xf164e
+ pop bx ; 5b ; 0xf164f
+ pop bp ; 5d ; 0xf1650
+ retn ; c3 ; 0xf1651
+ ; disGetNextSymbol 0xf1652 LB 0x88f6 -> off=0x0 cb=000000000000001b uValue=00000000000f0052 'inb_cmos'
+inb_cmos: ; 0xf1652 LB 0x1b
+ push bp ; 55 ; 0xf1652 bios.c:65
+ mov bp, sp ; 89 e5 ; 0xf1653
+ push dx ; 52 ; 0xf1655
+ mov AH, strict byte 070h ; b4 70 ; 0xf1656 bios.c:67
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1658 bios.c:69
+ jc short 0165eh ; 72 02 ; 0xf165a
+ mov AH, strict byte 072h ; b4 72 ; 0xf165c bios.c:70
+ mov dl, ah ; 88 e2 ; 0xf165e bios.c:71
+ xor dh, dh ; 30 f6 ; 0xf1660
+ out DX, AL ; ee ; 0xf1662
+ inc dx ; 42 ; 0xf1663 bios.c:72
+ in AL, DX ; ec ; 0xf1664
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1665
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1667 bios.c:73
+ pop dx ; 5a ; 0xf166a
+ pop bp ; 5d ; 0xf166b
+ retn ; c3 ; 0xf166c
+ ; disGetNextSymbol 0xf166d LB 0x88db -> off=0x0 cb=000000000000001d uValue=00000000000f006d 'outb_cmos'
+outb_cmos: ; 0xf166d LB 0x1d
+ push bp ; 55 ; 0xf166d bios.c:75
+ mov bp, sp ; 89 e5 ; 0xf166e
+ push bx ; 53 ; 0xf1670
+ mov bl, dl ; 88 d3 ; 0xf1671
+ mov AH, strict byte 070h ; b4 70 ; 0xf1673 bios.c:77
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf1675 bios.c:79
+ jc short 0167bh ; 72 02 ; 0xf1677
+ mov AH, strict byte 072h ; b4 72 ; 0xf1679 bios.c:80
+ mov dl, ah ; 88 e2 ; 0xf167b bios.c:81
+ xor dh, dh ; 30 f6 ; 0xf167d
+ out DX, AL ; ee ; 0xf167f
+ inc dx ; 42 ; 0xf1680 bios.c:82
+ mov al, bl ; 88 d8 ; 0xf1681
+ out DX, AL ; ee ; 0xf1683
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf1684 bios.c:83
+ pop bx ; 5b ; 0xf1687
+ pop bp ; 5d ; 0xf1688
+ retn ; c3 ; 0xf1689
+ ; disGetNextSymbol 0xf168a LB 0x88be -> off=0x0 cb=0000000000000061 uValue=00000000000f008a 'dummy_isr_function'
+dummy_isr_function: ; 0xf168a LB 0x61
+ push bp ; 55 ; 0xf168a bios.c:85
+ mov bp, sp ; 89 e5 ; 0xf168b
+ push ax ; 50 ; 0xf168d
+ mov CL, strict byte 0ffh ; b1 ff ; 0xf168e bios.c:93
+ mov AL, strict byte 00bh ; b0 0b ; 0xf1690 bios.c:95
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1692
+ out DX, AL ; ee ; 0xf1695
+ in AL, DX ; ec ; 0xf1696 bios.c:96
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1697
+ mov bx, ax ; 89 c3 ; 0xf1699
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf169b
+ test al, al ; 84 c0 ; 0xf169e bios.c:97
+ je short 016dch ; 74 3a ; 0xf16a0
+ mov AL, strict byte 00bh ; b0 0b ; 0xf16a2 bios.c:98
+ mov dx, 000a0h ; ba a0 00 ; 0xf16a4
+ out DX, AL ; ee ; 0xf16a7
+ in AL, DX ; ec ; 0xf16a8 bios.c:99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16a9
+ mov cx, ax ; 89 c1 ; 0xf16ab
+ test al, al ; 84 c0 ; 0xf16ad bios.c:100
+ je short 016c4h ; 74 13 ; 0xf16af
+ mov dx, 000a1h ; ba a1 00 ; 0xf16b1 bios.c:101
+ in AL, DX ; ec ; 0xf16b4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16b5
+ mov bl, cl ; 88 cb ; 0xf16b7 bios.c:102
+ or al, bl ; 08 d8 ; 0xf16b9
+ out DX, AL ; ee ; 0xf16bb
+ mov AL, strict byte 020h ; b0 20 ; 0xf16bc bios.c:103
+ mov dx, 000a0h ; ba a0 00 ; 0xf16be
+ out DX, AL ; ee ; 0xf16c1
+ jmp short 016d3h ; eb 0f ; 0xf16c2 bios.c:104
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf16c4 bios.c:105
+ in AL, DX ; ec ; 0xf16c7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf16c8
+ and bl, 0fbh ; 80 e3 fb ; 0xf16ca bios.c:106
+ mov byte [bp-002h], bl ; 88 5e fe ; 0xf16cd
+ or al, bl ; 08 d8 ; 0xf16d0 bios.c:107
+ out DX, AL ; ee ; 0xf16d2
+ mov AL, strict byte 020h ; b0 20 ; 0xf16d3 bios.c:109
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf16d5
+ out DX, AL ; ee ; 0xf16d8
+ mov cl, byte [bp-002h] ; 8a 4e fe ; 0xf16d9 bios.c:110
+ mov bx, strict word 0006bh ; bb 6b 00 ; 0xf16dc bios.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf16df
+ mov es, ax ; 8e c0 ; 0xf16e2
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf16e4
+ mov sp, bp ; 89 ec ; 0xf16e7 bios.c:113
+ pop bp ; 5d ; 0xf16e9
+ retn ; c3 ; 0xf16ea
+ ; disGetNextSymbol 0xf16eb LB 0x885d -> off=0x0 cb=0000000000000015 uValue=00000000000f00eb 'nmi_handler_msg'
+nmi_handler_msg: ; 0xf16eb LB 0x15
+ push bp ; 55 ; 0xf16eb bios.c:116
+ mov bp, sp ; 89 e5 ; 0xf16ec
+ mov ax, 000b0h ; b8 b0 00 ; 0xf16ee bios.c:118
+ push ax ; 50 ; 0xf16f1
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf16f2
+ push ax ; 50 ; 0xf16f5
+ call 0190fh ; e8 16 02 ; 0xf16f6
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf16f9
+ mov sp, bp ; 89 ec ; 0xf16fc bios.c:119
+ pop bp ; 5d ; 0xf16fe
+ retn ; c3 ; 0xf16ff
+ ; disGetNextSymbol 0xf1700 LB 0x8848 -> off=0x0 cb=0000000000000015 uValue=00000000000f0100 'int18_panic_msg'
+int18_panic_msg: ; 0xf1700 LB 0x15
+ push bp ; 55 ; 0xf1700 bios.c:121
+ mov bp, sp ; 89 e5 ; 0xf1701
+ mov ax, 000c4h ; b8 c4 00 ; 0xf1703 bios.c:123
+ push ax ; 50 ; 0xf1706
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1707
+ push ax ; 50 ; 0xf170a
+ call 0190fh ; e8 01 02 ; 0xf170b
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf170e
+ mov sp, bp ; 89 ec ; 0xf1711 bios.c:124
+ pop bp ; 5d ; 0xf1713
+ retn ; c3 ; 0xf1714
+ ; disGetNextSymbol 0xf1715 LB 0x8833 -> off=0x0 cb=0000000000000024 uValue=00000000000f0115 'log_bios_start'
+log_bios_start: ; 0xf1715 LB 0x24
+ push bp ; 55 ; 0xf1715 bios.c:126
+ mov bp, sp ; 89 e5 ; 0xf1716
+ mov bx, 00da0h ; bb a0 0d ; 0xf1718 bios.c:131
+ mov cx, ds ; 8c d9 ; 0xf171b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf171d
+ call 018cch ; e8 a9 01 ; 0xf1720
+ mov ax, 00d8eh ; b8 8e 0d ; 0xf1723
+ push ax ; 50 ; 0xf1726
+ mov ax, 000d9h ; b8 d9 00 ; 0xf1727
+ push ax ; 50 ; 0xf172a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf172b
+ push ax ; 50 ; 0xf172e
+ call 0190fh ; e8 dd 01 ; 0xf172f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf1732
+ mov sp, bp ; 89 ec ; 0xf1735 bios.c:132
+ pop bp ; 5d ; 0xf1737
+ retn ; c3 ; 0xf1738
+ ; disGetNextSymbol 0xf1739 LB 0x880f -> off=0x0 cb=0000000000000027 uValue=00000000000f0139 'print_bios_banner'
+print_bios_banner: ; 0xf1739 LB 0x27
+ push bp ; 55 ; 0xf1739 bios.c:151
+ mov bp, sp ; 89 e5 ; 0xf173a
+ mov bx, strict word 00072h ; bb 72 00 ; 0xf173c bios.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf173f
+ mov es, ax ; 8e c0 ; 0xf1742
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1744
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf1747 bios.c:53
+ cmp ax, 01234h ; 3d 34 12 ; 0xf174c bios.c:157
+ jne short 01759h ; 75 08 ; 0xf174f
+ mov AL, strict byte 003h ; b0 03 ; 0xf1751 bios.c:160
+ mov AH, strict byte 000h ; b4 00 ; 0xf1753
+ int 010h ; cd 10 ; 0xf1755
+ jmp short 0175ch ; eb 03 ; 0xf1757 bios.c:161
+ call 07657h ; e8 fb 5e ; 0xf1759 bios.c:164
+ mov sp, bp ; 89 ec ; 0xf175c bios.c:191
+ pop bp ; 5d ; 0xf175e
+ retn ; c3 ; 0xf175f
+ ; disGetNextSymbol 0xf1760 LB 0x87e8 -> off=0x0 cb=000000000000003b uValue=00000000000f0160 'send'
+send: ; 0xf1760 LB 0x3b
+ push bp ; 55 ; 0xf1760 print.c:72
+ mov bp, sp ; 89 e5 ; 0xf1761
+ push bx ; 53 ; 0xf1763
+ push cx ; 51 ; 0xf1764
+ mov bx, ax ; 89 c3 ; 0xf1765
+ mov cl, dl ; 88 d1 ; 0xf1767
+ test AL, strict byte 008h ; a8 08 ; 0xf1769 print.c:80
+ je short 01773h ; 74 06 ; 0xf176b
+ mov al, dl ; 88 d0 ; 0xf176d print.c:81
+ mov dx, 00403h ; ba 03 04 ; 0xf176f
+ out DX, AL ; ee ; 0xf1772
+ test bl, 004h ; f6 c3 04 ; 0xf1773 print.c:82
+ je short 0177eh ; 74 06 ; 0xf1776
+ mov al, cl ; 88 c8 ; 0xf1778 print.c:83
+ mov dx, 00504h ; ba 04 05 ; 0xf177a
+ out DX, AL ; ee ; 0xf177d
+ test bl, 002h ; f6 c3 02 ; 0xf177e print.c:85
+ je short 01794h ; 74 11 ; 0xf1781
+ cmp cl, 00ah ; 80 f9 0a ; 0xf1783 print.c:86
+ jne short 0178eh ; 75 06 ; 0xf1786
+ mov AL, strict byte 00dh ; b0 0d ; 0xf1788 print.c:87
+ mov AH, strict byte 00eh ; b4 0e ; 0xf178a
+ int 010h ; cd 10 ; 0xf178c
+ mov al, cl ; 88 c8 ; 0xf178e print.c:88
+ mov AH, strict byte 00eh ; b4 0e ; 0xf1790
+ int 010h ; cd 10 ; 0xf1792
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1794 print.c:90
+ pop cx ; 59 ; 0xf1797
+ pop bx ; 5b ; 0xf1798
+ pop bp ; 5d ; 0xf1799
+ retn ; c3 ; 0xf179a
+ ; disGetNextSymbol 0xf179b LB 0x87ad -> off=0x0 cb=0000000000000063 uValue=00000000000f019b 'put_int'
+put_int: ; 0xf179b LB 0x63
+ push bp ; 55 ; 0xf179b print.c:92
+ mov bp, sp ; 89 e5 ; 0xf179c
+ push si ; 56 ; 0xf179e
+ push di ; 57 ; 0xf179f
+ push ax ; 50 ; 0xf17a0
+ push ax ; 50 ; 0xf17a1
+ mov si, ax ; 89 c6 ; 0xf17a2
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf17a4
+ mov di, bx ; 89 df ; 0xf17a7
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf17a9 print.c:94
+ mov ax, dx ; 89 d0 ; 0xf17ac
+ cwd ; 99 ; 0xf17ae
+ idiv bx ; f7 fb ; 0xf17af
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf17b1
+ test ax, ax ; 85 c0 ; 0xf17b4 print.c:95
+ je short 017c4h ; 74 0c ; 0xf17b6
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf17b8 print.c:96
+ mov dx, ax ; 89 c2 ; 0xf17bb
+ mov ax, si ; 89 f0 ; 0xf17bd
+ call 0179bh ; e8 d9 ff ; 0xf17bf
+ jmp short 017dfh ; eb 1b ; 0xf17c2 print.c:97
+ dec di ; 4f ; 0xf17c4 print.c:98
+ test di, di ; 85 ff ; 0xf17c5
+ jle short 017d3h ; 7e 0a ; 0xf17c7
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf17c9 print.c:99
+ mov ax, si ; 89 f0 ; 0xf17cc
+ call 01760h ; e8 8f ff ; 0xf17ce
+ jmp short 017c4h ; eb f1 ; 0xf17d1
+ test cx, cx ; 85 c9 ; 0xf17d3 print.c:100
+ je short 017dfh ; 74 08 ; 0xf17d5
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf17d7 print.c:101
+ mov ax, si ; 89 f0 ; 0xf17da
+ call 01760h ; e8 81 ff ; 0xf17dc
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf17df print.c:103
+ mov BL, strict byte 00ah ; b3 0a ; 0xf17e2
+ mul bl ; f6 e3 ; 0xf17e4
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf17e6
+ sub bl, al ; 28 c3 ; 0xf17e9
+ add bl, 030h ; 80 c3 30 ; 0xf17eb
+ xor bh, bh ; 30 ff ; 0xf17ee
+ mov dx, bx ; 89 da ; 0xf17f0
+ mov ax, si ; 89 f0 ; 0xf17f2
+ call 01760h ; e8 69 ff ; 0xf17f4
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf17f7 print.c:104
+ pop di ; 5f ; 0xf17fa
+ pop si ; 5e ; 0xf17fb
+ pop bp ; 5d ; 0xf17fc
+ retn ; c3 ; 0xf17fd
+ ; disGetNextSymbol 0xf17fe LB 0x874a -> off=0x0 cb=000000000000005e uValue=00000000000f01fe 'put_uint'
+put_uint: ; 0xf17fe LB 0x5e
+ push bp ; 55 ; 0xf17fe print.c:106
+ mov bp, sp ; 89 e5 ; 0xf17ff
+ push si ; 56 ; 0xf1801
+ push di ; 57 ; 0xf1802
+ push ax ; 50 ; 0xf1803
+ push ax ; 50 ; 0xf1804
+ mov si, ax ; 89 c6 ; 0xf1805
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf1807
+ mov ax, dx ; 89 d0 ; 0xf180a print.c:108
+ xor dx, dx ; 31 d2 ; 0xf180c
+ mov di, strict word 0000ah ; bf 0a 00 ; 0xf180e
+ div di ; f7 f7 ; 0xf1811
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf1813
+ test ax, ax ; 85 c0 ; 0xf1816 print.c:109
+ je short 01824h ; 74 0a ; 0xf1818
+ dec bx ; 4b ; 0xf181a print.c:110
+ mov dx, ax ; 89 c2 ; 0xf181b
+ mov ax, si ; 89 f0 ; 0xf181d
+ call 017feh ; e8 dc ff ; 0xf181f
+ jmp short 0183fh ; eb 1b ; 0xf1822 print.c:111
+ dec bx ; 4b ; 0xf1824 print.c:112
+ test bx, bx ; 85 db ; 0xf1825
+ jle short 01833h ; 7e 0a ; 0xf1827
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1829 print.c:113
+ mov ax, si ; 89 f0 ; 0xf182c
+ call 01760h ; e8 2f ff ; 0xf182e
+ jmp short 01824h ; eb f1 ; 0xf1831
+ test cx, cx ; 85 c9 ; 0xf1833 print.c:114
+ je short 0183fh ; 74 08 ; 0xf1835
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf1837 print.c:115
+ mov ax, si ; 89 f0 ; 0xf183a
+ call 01760h ; e8 21 ff ; 0xf183c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf183f print.c:117
+ mov DL, strict byte 00ah ; b2 0a ; 0xf1842
+ mul dl ; f6 e2 ; 0xf1844
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf1846
+ sub dl, al ; 28 c2 ; 0xf1849
+ add dl, 030h ; 80 c2 30 ; 0xf184b
+ xor dh, dh ; 30 f6 ; 0xf184e
+ mov ax, si ; 89 f0 ; 0xf1850
+ call 01760h ; e8 0b ff ; 0xf1852
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1855 print.c:118
+ pop di ; 5f ; 0xf1858
+ pop si ; 5e ; 0xf1859
+ pop bp ; 5d ; 0xf185a
+ retn ; c3 ; 0xf185b
+ ; disGetNextSymbol 0xf185c LB 0x86ec -> off=0x0 cb=0000000000000070 uValue=00000000000f025c 'put_luint'
+put_luint: ; 0xf185c LB 0x70
+ push bp ; 55 ; 0xf185c print.c:120
+ mov bp, sp ; 89 e5 ; 0xf185d
+ push si ; 56 ; 0xf185f
+ push di ; 57 ; 0xf1860
+ push ax ; 50 ; 0xf1861
+ push ax ; 50 ; 0xf1862
+ mov si, ax ; 89 c6 ; 0xf1863
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf1865
+ mov di, dx ; 89 d7 ; 0xf1868
+ mov ax, bx ; 89 d8 ; 0xf186a print.c:122
+ mov dx, cx ; 89 ca ; 0xf186c
+ mov bx, strict word 0000ah ; bb 0a 00 ; 0xf186e
+ xor cx, cx ; 31 c9 ; 0xf1871
+ call 09be0h ; e8 6a 83 ; 0xf1873
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf1876
+ mov cx, dx ; 89 d1 ; 0xf1879
+ mov dx, ax ; 89 c2 ; 0xf187b print.c:123
+ or dx, cx ; 09 ca ; 0xf187d
+ je short 01890h ; 74 0f ; 0xf187f
+ push word [bp+004h] ; ff 76 04 ; 0xf1881 print.c:124
+ lea dx, [di-001h] ; 8d 55 ff ; 0xf1884
+ mov bx, ax ; 89 c3 ; 0xf1887
+ mov ax, si ; 89 f0 ; 0xf1889
+ call 0185ch ; e8 ce ff ; 0xf188b
+ jmp short 018adh ; eb 1d ; 0xf188e print.c:125
+ dec di ; 4f ; 0xf1890 print.c:126
+ test di, di ; 85 ff ; 0xf1891
+ jle short 0189fh ; 7e 0a ; 0xf1893
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf1895 print.c:127
+ mov ax, si ; 89 f0 ; 0xf1898
+ call 01760h ; e8 c3 fe ; 0xf189a
+ jmp short 01890h ; eb f1 ; 0xf189d
+ cmp word [bp+004h], strict byte 00000h ; 83 7e 04 00 ; 0xf189f print.c:128
+ je short 018adh ; 74 08 ; 0xf18a3
+ mov dx, strict word 0002dh ; ba 2d 00 ; 0xf18a5 print.c:129
+ mov ax, si ; 89 f0 ; 0xf18a8
+ call 01760h ; e8 b3 fe ; 0xf18aa
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf18ad print.c:131
+ mov DL, strict byte 00ah ; b2 0a ; 0xf18b0
+ mul dl ; f6 e2 ; 0xf18b2
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf18b4
+ sub dl, al ; 28 c2 ; 0xf18b7
+ add dl, 030h ; 80 c2 30 ; 0xf18b9
+ xor dh, dh ; 30 f6 ; 0xf18bc
+ mov ax, si ; 89 f0 ; 0xf18be
+ call 01760h ; e8 9d fe ; 0xf18c0
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18c3 print.c:132
+ pop di ; 5f ; 0xf18c6
+ pop si ; 5e ; 0xf18c7
+ pop bp ; 5d ; 0xf18c8
+ retn 00002h ; c2 02 00 ; 0xf18c9
+ ; disGetNextSymbol 0xf18cc LB 0x867c -> off=0x0 cb=0000000000000021 uValue=00000000000f02cc 'put_str'
+put_str: ; 0xf18cc LB 0x21
+ push bp ; 55 ; 0xf18cc print.c:134
+ mov bp, sp ; 89 e5 ; 0xf18cd
+ push dx ; 52 ; 0xf18cf
+ push si ; 56 ; 0xf18d0
+ mov si, ax ; 89 c6 ; 0xf18d1
+ mov es, cx ; 8e c1 ; 0xf18d3 print.c:138
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf18d5
+ test dl, dl ; 84 d2 ; 0xf18d8
+ je short 018e6h ; 74 0a ; 0xf18da
+ xor dh, dh ; 30 f6 ; 0xf18dc print.c:139
+ mov ax, si ; 89 f0 ; 0xf18de
+ call 01760h ; e8 7d fe ; 0xf18e0
+ inc bx ; 43 ; 0xf18e3 print.c:140
+ jmp short 018d3h ; eb ed ; 0xf18e4 print.c:141
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf18e6 print.c:142
+ pop si ; 5e ; 0xf18e9
+ pop dx ; 5a ; 0xf18ea
+ pop bp ; 5d ; 0xf18eb
+ retn ; c3 ; 0xf18ec
+ ; disGetNextSymbol 0xf18ed LB 0x865b -> off=0x0 cb=0000000000000022 uValue=00000000000f02ed 'put_str_near'
+put_str_near: ; 0xf18ed LB 0x22
+ push bp ; 55 ; 0xf18ed print.c:144
+ mov bp, sp ; 89 e5 ; 0xf18ee
+ push bx ; 53 ; 0xf18f0
+ push cx ; 51 ; 0xf18f1
+ mov cx, ax ; 89 c1 ; 0xf18f2
+ mov bx, dx ; 89 d3 ; 0xf18f4
+ mov al, byte [bx] ; 8a 07 ; 0xf18f6 print.c:148
+ test al, al ; 84 c0 ; 0xf18f8
+ je short 01908h ; 74 0c ; 0xf18fa
+ xor ah, ah ; 30 e4 ; 0xf18fc print.c:149
+ mov dx, ax ; 89 c2 ; 0xf18fe
+ mov ax, cx ; 89 c8 ; 0xf1900
+ call 01760h ; e8 5b fe ; 0xf1902
+ inc bx ; 43 ; 0xf1905 print.c:150
+ jmp short 018f6h ; eb ee ; 0xf1906 print.c:151
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf1908 print.c:152
+ pop cx ; 59 ; 0xf190b
+ pop bx ; 5b ; 0xf190c
+ pop bp ; 5d ; 0xf190d
+ retn ; c3 ; 0xf190e
+ ; disGetNextSymbol 0xf190f LB 0x8639 -> off=0x0 cb=000000000000034f uValue=00000000000f030f 'bios_printf'
+bios_printf: ; 0xf190f LB 0x34f
+ push bp ; 55 ; 0xf190f print.c:165
+ mov bp, sp ; 89 e5 ; 0xf1910
+ push bx ; 53 ; 0xf1912
+ push cx ; 51 ; 0xf1913
+ push dx ; 52 ; 0xf1914
+ push si ; 56 ; 0xf1915
+ push di ; 57 ; 0xf1916
+ sub sp, strict byte 0001ch ; 83 ec 1c ; 0xf1917
+ lea bx, [bp+008h] ; 8d 5e 08 ; 0xf191a print.c:173
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf191d
+ mov [bp-014h], ss ; 8c 56 ec ; 0xf1920
+ xor cx, cx ; 31 c9 ; 0xf1923 print.c:175
+ xor di, di ; 31 ff ; 0xf1925 print.c:176
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1927 print.c:178
+ and ax, strict word 00007h ; 25 07 00 ; 0xf192a
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf192d
+ jne short 01940h ; 75 0e ; 0xf1930
+ mov ax, 000deh ; b8 de 00 ; 0xf1932 print.c:179
+ push ax ; 50 ; 0xf1935
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf1936
+ push ax ; 50 ; 0xf1939
+ call 0190fh ; e8 d2 ff ; 0xf193a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf193d
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1940 print.c:182
+ mov dl, byte [bx] ; 8a 17 ; 0xf1943
+ test dl, dl ; 84 d2 ; 0xf1945
+ je short 019aah ; 74 61 ; 0xf1947
+ cmp dl, 025h ; 80 fa 25 ; 0xf1949 print.c:183
+ jne short 01956h ; 75 08 ; 0xf194c
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf194e print.c:184
+ xor di, di ; 31 ff ; 0xf1951 print.c:185
+ jmp near 01c3ch ; e9 e6 02 ; 0xf1953 print.c:187
+ test cx, cx ; 85 c9 ; 0xf1956
+ je short 019adh ; 74 53 ; 0xf1958
+ cmp dl, 030h ; 80 fa 30 ; 0xf195a print.c:188
+ jc short 01979h ; 72 1a ; 0xf195d
+ cmp dl, 039h ; 80 fa 39 ; 0xf195f
+ jnbe short 01979h ; 77 15 ; 0xf1962
+ mov bl, dl ; 88 d3 ; 0xf1964 print.c:189
+ xor bh, bh ; 30 ff ; 0xf1966
+ mov ax, di ; 89 f8 ; 0xf1968
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf196a
+ mul dx ; f7 e2 ; 0xf196d
+ sub bx, strict byte 00030h ; 83 eb 30 ; 0xf196f
+ mov di, ax ; 89 c7 ; 0xf1972
+ add di, bx ; 01 df ; 0xf1974
+ jmp near 01c3ch ; e9 c3 02 ; 0xf1976 print.c:191
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1979 print.c:192
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf197c
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf197f
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1983
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1986
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf198a
+ cmp dl, 078h ; 80 fa 78 ; 0xf198d print.c:193
+ je short 01997h ; 74 05 ; 0xf1990
+ cmp dl, 058h ; 80 fa 58 ; 0xf1992
+ jne short 019f2h ; 75 5b ; 0xf1995
+ test di, di ; 85 ff ; 0xf1997 print.c:194
+ jne short 0199eh ; 75 03 ; 0xf1999
+ mov di, strict word 00004h ; bf 04 00 ; 0xf199b print.c:195
+ cmp dl, 078h ; 80 fa 78 ; 0xf199e print.c:196
+ jne short 019b0h ; 75 0d ; 0xf19a1
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf19a3 print.c:197
+ jmp short 019b5h ; eb 0b ; 0xf19a8 print.c:198
+ jmp near 01c42h ; e9 95 02 ; 0xf19aa
+ jmp near 01c34h ; e9 84 02 ; 0xf19ad
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf19b0 print.c:199
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf19b5 print.c:200
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf19b8
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf19bb
+ test ax, ax ; 85 c0 ; 0xf19be
+ jl short 01a03h ; 7c 41 ; 0xf19c0
+ mov cx, ax ; 89 c1 ; 0xf19c2 print.c:201
+ sal cx, 1 ; d1 e1 ; 0xf19c4
+ sal cx, 1 ; d1 e1 ; 0xf19c6
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf19c8
+ shr ax, CL ; d3 e8 ; 0xf19cb
+ xor ah, ah ; 30 e4 ; 0xf19cd
+ and AL, strict byte 00fh ; 24 0f ; 0xf19cf
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf19d1 print.c:202
+ jnbe short 019ddh ; 77 07 ; 0xf19d4
+ mov dx, ax ; 89 c2 ; 0xf19d6
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf19d8
+ jmp short 019e5h ; eb 08 ; 0xf19db
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf19dd
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf19e0
+ add dx, ax ; 01 c2 ; 0xf19e3
+ xor dh, dh ; 30 f6 ; 0xf19e5
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19e7
+ call 01760h ; e8 73 fd ; 0xf19ea
+ dec word [bp-012h] ; ff 4e ee ; 0xf19ed print.c:203
+ jmp short 019bbh ; eb c9 ; 0xf19f0
+ cmp dl, 075h ; 80 fa 75 ; 0xf19f2 print.c:205
+ jne short 01a06h ; 75 0f ; 0xf19f5
+ xor cx, cx ; 31 c9 ; 0xf19f7 print.c:206
+ mov bx, di ; 89 fb ; 0xf19f9
+ mov dx, ax ; 89 c2 ; 0xf19fb
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf19fd
+ call 017feh ; e8 fb fd ; 0xf1a00
+ jmp near 01c30h ; e9 2a 02 ; 0xf1a03 print.c:208
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1a06
+ jne short 01a13h ; 75 08 ; 0xf1a09
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a0b
+ cmp dl, byte [bx+001h] ; 3a 57 01 ; 0xf1a0e
+ je short 01a16h ; 74 03 ; 0xf1a11
+ jmp near 01aebh ; e9 d5 00 ; 0xf1a13
+ add word [bp+006h], strict byte 00002h ; 83 46 06 02 ; 0xf1a16 print.c:212
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf1a1a print.c:213
+ mov dl, byte [bx] ; 8a 17 ; 0xf1a1d
+ mov word [bp-026h], ax ; 89 46 da ; 0xf1a1f print.c:215
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a22 print.c:216
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a25
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a28
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a2c
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a2f
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf1a33
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a36 print.c:217
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a39
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a3c
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a40
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a43
+ mov word [bp-022h], ax ; 89 46 de ; 0xf1a47
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1a4a print.c:218
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1a4d
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1a50
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1a54
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1a57
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf1a5b
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a5e print.c:219
+ je short 01a68h ; 74 05 ; 0xf1a61
+ cmp dl, 058h ; 80 fa 58 ; 0xf1a63
+ jne short 01ac3h ; 75 5b ; 0xf1a66
+ test di, di ; 85 ff ; 0xf1a68 print.c:220
+ jne short 01a6fh ; 75 03 ; 0xf1a6a
+ mov di, strict word 00010h ; bf 10 00 ; 0xf1a6c print.c:221
+ cmp dl, 078h ; 80 fa 78 ; 0xf1a6f print.c:222
+ jne short 01a7bh ; 75 07 ; 0xf1a72
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1a74 print.c:223
+ jmp short 01a80h ; eb 05 ; 0xf1a79 print.c:224
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1a7b print.c:225
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1a80 print.c:226
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1a83
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf1a86
+ test ax, ax ; 85 c0 ; 0xf1a89
+ jl short 01ae8h ; 7c 5b ; 0xf1a8b
+ sal ax, 1 ; d1 e0 ; 0xf1a8d print.c:227
+ sal ax, 1 ; d1 e0 ; 0xf1a8f
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf1a91
+ xor ax, ax ; 31 c0 ; 0xf1a94
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf1a96
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf1a99
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf1a9c
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf1a9f
+ mov bx, word [bp-022h] ; 8b 5e de ; 0xf1aa2
+ mov cx, word [bp-024h] ; 8b 4e dc ; 0xf1aa5
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf1aa8
+ mov si, word [bp-01eh] ; 8b 76 e2 ; 0xf1aab
+ call 09c10h ; e8 5f 81 ; 0xf1aae
+ mov ax, dx ; 89 d0 ; 0xf1ab1
+ xor ah, dh ; 30 f4 ; 0xf1ab3
+ and AL, strict byte 00fh ; 24 0f ; 0xf1ab5
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1ab7 print.c:228
+ jnbe short 01ac5h ; 77 09 ; 0xf1aba
+ mov dx, ax ; 89 c2 ; 0xf1abc
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1abe
+ jmp short 01acdh ; eb 0a ; 0xf1ac1
+ jmp short 01adah ; eb 15 ; 0xf1ac3
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1ac5
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ac8
+ add dx, ax ; 01 c2 ; 0xf1acb
+ xor dh, dh ; 30 f6 ; 0xf1acd
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1acf
+ call 01760h ; e8 8b fc ; 0xf1ad2
+ dec word [bp-012h] ; ff 4e ee ; 0xf1ad5 print.c:229
+ jmp short 01a86h ; eb ac ; 0xf1ad8
+ mov ax, 000e6h ; b8 e6 00 ; 0xf1ada print.c:231
+ push ax ; 50 ; 0xf1add
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1ade
+ push ax ; 50 ; 0xf1ae1
+ call 0190fh ; e8 2a fe ; 0xf1ae2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1ae5
+ jmp near 01c30h ; e9 45 01 ; 0xf1ae8 print.c:234
+ lea bx, [di-001h] ; 8d 5d ff ; 0xf1aeb
+ cmp dl, 06ch ; 80 fa 6c ; 0xf1aee
+ jne short 01b4bh ; 75 58 ; 0xf1af1
+ inc word [bp+006h] ; ff 46 06 ; 0xf1af3 print.c:235
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf1af6 print.c:236
+ mov dl, byte [si] ; 8a 14 ; 0xf1af9
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1afb print.c:237
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1afe
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1b01
+ les si, [bp-016h] ; c4 76 ea ; 0xf1b05
+ mov ax, word [es:si-002h] ; 26 8b 44 fe ; 0xf1b08
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1b0c
+ cmp dl, 064h ; 80 fa 64 ; 0xf1b0f print.c:238
+ jne short 01b44h ; 75 30 ; 0xf1b12
+ test byte [bp-00fh], 080h ; f6 46 f1 80 ; 0xf1b14 print.c:239
+ je short 01b31h ; 74 17 ; 0xf1b18
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1b1a print.c:240
+ push ax ; 50 ; 0xf1b1d
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b1e
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b21
+ neg cx ; f7 d9 ; 0xf1b24
+ neg ax ; f7 d8 ; 0xf1b26
+ sbb cx, strict byte 00000h ; 83 d9 00 ; 0xf1b28
+ mov dx, bx ; 89 da ; 0xf1b2b
+ mov bx, ax ; 89 c3 ; 0xf1b2d
+ jmp short 01b3ch ; eb 0b ; 0xf1b2f print.c:241
+ xor ax, ax ; 31 c0 ; 0xf1b31 print.c:242
+ push ax ; 50 ; 0xf1b33
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1b34
+ mov dx, di ; 89 fa ; 0xf1b37
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1b39
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1b3c
+ call 0185ch ; e8 1a fd ; 0xf1b3f
+ jmp short 01ae8h ; eb a4 ; 0xf1b42 print.c:244
+ cmp dl, 075h ; 80 fa 75 ; 0xf1b44
+ jne short 01b4dh ; 75 04 ; 0xf1b47
+ jmp short 01b31h ; eb e6 ; 0xf1b49
+ jmp short 01bb4h ; eb 67 ; 0xf1b4b
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b4d print.c:247
+ je short 01b57h ; 74 05 ; 0xf1b50
+ cmp dl, 058h ; 80 fa 58 ; 0xf1b52
+ jne short 01ae8h ; 75 91 ; 0xf1b55
+ test di, di ; 85 ff ; 0xf1b57 print.c:249
+ jne short 01b5eh ; 75 03 ; 0xf1b59
+ mov di, strict word 00008h ; bf 08 00 ; 0xf1b5b print.c:250
+ cmp dl, 078h ; 80 fa 78 ; 0xf1b5e print.c:251
+ jne short 01b6ah ; 75 07 ; 0xf1b61
+ mov word [bp-00eh], strict word 00061h ; c7 46 f2 61 00 ; 0xf1b63 print.c:252
+ jmp short 01b6fh ; eb 05 ; 0xf1b68 print.c:253
+ mov word [bp-00eh], strict word 00041h ; c7 46 f2 41 00 ; 0xf1b6a print.c:254
+ lea ax, [di-001h] ; 8d 45 ff ; 0xf1b6f print.c:255
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1b72
+ cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf1b75
+ jl short 01bd6h ; 7c 5b ; 0xf1b79
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1b7b print.c:256
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf1b7e
+ sal cx, 1 ; d1 e1 ; 0xf1b81
+ sal cx, 1 ; d1 e1 ; 0xf1b83
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf1b85
+ jcxz 01b90h ; e3 06 ; 0xf1b88
+ shr dx, 1 ; d1 ea ; 0xf1b8a
+ rcr ax, 1 ; d1 d8 ; 0xf1b8c
+ loop 01b8ah ; e2 fa ; 0xf1b8e
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf1b90
+ cmp ax, strict word 00009h ; 3d 09 00 ; 0xf1b93 print.c:257
+ jnbe short 01b9fh ; 77 07 ; 0xf1b96
+ mov dx, ax ; 89 c2 ; 0xf1b98
+ add dx, strict byte 00030h ; 83 c2 30 ; 0xf1b9a
+ jmp short 01ba7h ; eb 08 ; 0xf1b9d
+ sub ax, strict word 0000ah ; 2d 0a 00 ; 0xf1b9f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf1ba2
+ add dx, ax ; 01 c2 ; 0xf1ba5
+ xor dh, dh ; 30 f6 ; 0xf1ba7
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1ba9
+ call 01760h ; e8 b1 fb ; 0xf1bac
+ dec word [bp-012h] ; ff 4e ee ; 0xf1baf print.c:258
+ jmp short 01b75h ; eb c1 ; 0xf1bb2
+ cmp dl, 064h ; 80 fa 64 ; 0xf1bb4 print.c:261
+ jne short 01bd8h ; 75 1f ; 0xf1bb7
+ test byte [bp-00bh], 080h ; f6 46 f5 80 ; 0xf1bb9 print.c:262
+ je short 01bc9h ; 74 0a ; 0xf1bbd
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1bbf print.c:263
+ neg dx ; f7 da ; 0xf1bc2
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf1bc4
+ jmp short 01bd0h ; eb 07 ; 0xf1bc7 print.c:264
+ xor cx, cx ; 31 c9 ; 0xf1bc9 print.c:265
+ mov bx, di ; 89 fb ; 0xf1bcb
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1bcd
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1bd0
+ call 0179bh ; e8 c5 fb ; 0xf1bd3
+ jmp short 01c30h ; eb 58 ; 0xf1bd6 print.c:267
+ cmp dl, 073h ; 80 fa 73 ; 0xf1bd8
+ jne short 01beah ; 75 0d ; 0xf1bdb
+ mov cx, ds ; 8c d9 ; 0xf1bdd print.c:268
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf1bdf
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1be2
+ call 018cch ; e8 e4 fc ; 0xf1be5
+ jmp short 01c30h ; eb 46 ; 0xf1be8 print.c:270
+ cmp dl, 053h ; 80 fa 53 ; 0xf1bea
+ jne short 01c10h ; 75 21 ; 0xf1bed
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf1bef print.c:271
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1bf2
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf1bf5 print.c:272
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1bf8
+ add word [bp-016h], strict byte 00002h ; 83 46 ea 02 ; 0xf1bfb
+ les bx, [bp-016h] ; c4 5e ea ; 0xf1bff
+ mov ax, word [es:bx-002h] ; 26 8b 47 fe ; 0xf1c02
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1c06
+ mov bx, ax ; 89 c3 ; 0xf1c09 print.c:273
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf1c0b
+ jmp short 01be2h ; eb d2 ; 0xf1c0e
+ cmp dl, 063h ; 80 fa 63 ; 0xf1c10 print.c:275
+ jne short 01c22h ; 75 0d ; 0xf1c13
+ mov dl, byte [bp-00ch] ; 8a 56 f4 ; 0xf1c15 print.c:276
+ xor dh, dh ; 30 f6 ; 0xf1c18
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c1a
+ call 01760h ; e8 40 fb ; 0xf1c1d
+ jmp short 01c30h ; eb 0e ; 0xf1c20 print.c:278
+ mov ax, 00107h ; b8 07 01 ; 0xf1c22 print.c:279
+ push ax ; 50 ; 0xf1c25
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf1c26
+ push ax ; 50 ; 0xf1c29
+ call 0190fh ; e8 e2 fc ; 0xf1c2a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf1c2d
+ xor cx, cx ; 31 c9 ; 0xf1c30 print.c:280
+ jmp short 01c3ch ; eb 08 ; 0xf1c32 print.c:283
+ xor dh, dh ; 30 f6 ; 0xf1c34 print.c:284
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf1c36
+ call 01760h ; e8 24 fb ; 0xf1c39
+ inc word [bp+006h] ; ff 46 06 ; 0xf1c3c print.c:286
+ jmp near 01940h ; e9 fe fc ; 0xf1c3f print.c:287
+ xor ax, ax ; 31 c0 ; 0xf1c42 print.c:288
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf1c44
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf1c47
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf1c4a print.c:289
+ je short 01c54h ; 74 04 ; 0xf1c4e
+ cli ; fa ; 0xf1c50 print.c:291
+ hlt ; f4 ; 0xf1c51 print.c:292
+ jmp short 01c51h ; eb fd ; 0xf1c52
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1c54 print.c:294
+ pop di ; 5f ; 0xf1c57
+ pop si ; 5e ; 0xf1c58
+ pop dx ; 5a ; 0xf1c59
+ pop cx ; 59 ; 0xf1c5a
+ pop bx ; 5b ; 0xf1c5b
+ pop bp ; 5d ; 0xf1c5c
+ retn ; c3 ; 0xf1c5d
+ ; disGetNextSymbol 0xf1c5e LB 0x82ea -> off=0x0 cb=00000000000000f0 uValue=00000000000f065e 'ata_init'
+ata_init: ; 0xf1c5e LB 0xf0
+ push si ; 56 ; 0xf1c5e ata.c:97
+ push di ; 57 ; 0xf1c5f
+ push bp ; 55 ; 0xf1c60
+ mov bp, sp ; 89 e5 ; 0xf1c61
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1c63 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1c66
+ mov es, ax ; 8e c0 ; 0xf1c69
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf1c6b
+ mov si, 00122h ; be 22 01 ; 0xf1c6e ata.c:49
+ xor cl, cl ; 30 c9 ; 0xf1c71 ata.c:105
+ jmp short 01c7ah ; eb 05 ; 0xf1c73
+ cmp cl, 004h ; 80 f9 04 ; 0xf1c75
+ jnc short 01ca7h ; 73 2d ; 0xf1c78
+ mov al, cl ; 88 c8 ; 0xf1c7a ata.c:106
+ xor ah, ah ; 30 e4 ; 0xf1c7c
+ mov bx, strict word 00006h ; bb 06 00 ; 0xf1c7e
+ imul bx ; f7 eb ; 0xf1c81
+ mov es, di ; 8e c7 ; 0xf1c83
+ mov bx, si ; 89 f3 ; 0xf1c85
+ add bx, ax ; 01 c3 ; 0xf1c87
+ mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf1c89
+ mov word [es:bx+00206h], strict word 00000h ; 26 c7 87 06 02 00 00 ; 0xf1c8f ata.c:107
+ mov word [es:bx+00208h], strict word 00000h ; 26 c7 87 08 02 00 00 ; 0xf1c96 ata.c:108
+ mov byte [es:bx+00205h], 000h ; 26 c6 87 05 02 00 ; 0xf1c9d ata.c:109
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1ca3 ata.c:110
+ jmp short 01c75h ; eb ce ; 0xf1ca5
+ xor cl, cl ; 30 c9 ; 0xf1ca7 ata.c:113
+ jmp short 01cb0h ; eb 05 ; 0xf1ca9
+ cmp cl, 008h ; 80 f9 08 ; 0xf1cab
+ jnc short 01d1bh ; 73 6b ; 0xf1cae
+ mov al, cl ; 88 c8 ; 0xf1cb0 ata.c:114
+ xor ah, ah ; 30 e4 ; 0xf1cb2
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf1cb4
+ imul bx ; f7 eb ; 0xf1cb7
+ mov es, di ; 8e c7 ; 0xf1cb9
+ mov bx, si ; 89 f3 ; 0xf1cbb
+ add bx, ax ; 01 c3 ; 0xf1cbd
+ mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00 ; 0xf1cbf
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf1cc5 ata.c:116
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf1ccb ata.c:118
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf1cd0 ata.c:119
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf1cd6 ata.c:120
+ mov word [es:bx+02ah], strict word 00000h ; 26 c7 47 2a 00 00 ; 0xf1cdb ata.c:121
+ mov word [es:bx+02ch], strict word 00000h ; 26 c7 47 2c 00 00 ; 0xf1ce1 ata.c:122
+ mov word [es:bx+02eh], strict word 00000h ; 26 c7 47 2e 00 00 ; 0xf1ce7 ata.c:123
+ mov word [es:bx+030h], strict word 00000h ; 26 c7 47 30 00 00 ; 0xf1ced ata.c:124
+ mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00 ; 0xf1cf3 ata.c:125
+ mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00 ; 0xf1cf9 ata.c:126
+ mov word [es:bx+03ch], strict word 00000h ; 26 c7 47 3c 00 00 ; 0xf1cff ata.c:127
+ mov word [es:bx+03ah], strict word 00000h ; 26 c7 47 3a 00 00 ; 0xf1d05
+ mov word [es:bx+038h], strict word 00000h ; 26 c7 47 38 00 00 ; 0xf1d0b
+ mov word [es:bx+036h], strict word 00000h ; 26 c7 47 36 00 00 ; 0xf1d11
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1d17 ata.c:128
+ jmp short 01cabh ; eb 90 ; 0xf1d19
+ xor cl, cl ; 30 c9 ; 0xf1d1b ata.c:131
+ jmp short 01d24h ; eb 05 ; 0xf1d1d
+ cmp cl, 010h ; 80 f9 10 ; 0xf1d1f
+ jnc short 01d3ch ; 73 18 ; 0xf1d22
+ mov bl, cl ; 88 cb ; 0xf1d24 ata.c:132
+ xor bh, bh ; 30 ff ; 0xf1d26
+ mov es, di ; 8e c7 ; 0xf1d28
+ add bx, si ; 01 f3 ; 0xf1d2a
+ mov byte [es:bx+001e3h], 010h ; 26 c6 87 e3 01 10 ; 0xf1d2c
+ mov byte [es:bx+001f4h], 010h ; 26 c6 87 f4 01 10 ; 0xf1d32 ata.c:133
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf1d38 ata.c:134
+ jmp short 01d1fh ; eb e3 ; 0xf1d3a
+ mov es, di ; 8e c7 ; 0xf1d3c ata.c:136
+ mov byte [es:si+001e2h], 000h ; 26 c6 84 e2 01 00 ; 0xf1d3e
+ mov byte [es:si+001f3h], 000h ; 26 c6 84 f3 01 00 ; 0xf1d44 ata.c:137
+ pop bp ; 5d ; 0xf1d4a ata.c:138
+ pop di ; 5f ; 0xf1d4b
+ pop si ; 5e ; 0xf1d4c
+ retn ; c3 ; 0xf1d4d
+ ; disGetNextSymbol 0xf1d4e LB 0x81fa -> off=0x0 cb=00000000000000ea uValue=00000000000f074e 'ata_reset'
+ata_reset: ; 0xf1d4e LB 0xea
+ push bp ; 55 ; 0xf1d4e ata.c:146
+ mov bp, sp ; 89 e5 ; 0xf1d4f
+ push bx ; 53 ; 0xf1d51
+ push cx ; 51 ; 0xf1d52
+ push dx ; 52 ; 0xf1d53
+ push si ; 56 ; 0xf1d54
+ push di ; 57 ; 0xf1d55
+ push ax ; 50 ; 0xf1d56
+ push ax ; 50 ; 0xf1d57
+ push ax ; 50 ; 0xf1d58
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf1d59 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf1d5c
+ mov es, ax ; 8e c0 ; 0xf1d5f
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf1d61
+ mov word [bp-00eh], 00122h ; c7 46 f2 22 01 ; 0xf1d64 ata.c:49
+ mov di, bx ; 89 df ; 0xf1d69
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1d6b ata.c:155
+ shr ax, 1 ; d1 e8 ; 0xf1d6e
+ mov ah, byte [bp-010h] ; 8a 66 f0 ; 0xf1d70 ata.c:156
+ and ah, 001h ; 80 e4 01 ; 0xf1d73
+ mov byte [bp-00ch], ah ; 88 66 f4 ; 0xf1d76
+ xor ah, ah ; 30 e4 ; 0xf1d79 ata.c:158
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf1d7b
+ imul dx ; f7 ea ; 0xf1d7e
+ mov es, bx ; 8e c3 ; 0xf1d80
+ mov bx, ax ; 89 c3 ; 0xf1d82
+ add bx, 00122h ; 81 c3 22 01 ; 0xf1d84
+ mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf1d88
+ mov si, word [es:bx+00208h] ; 26 8b b7 08 02 ; 0xf1d8d ata.c:159
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1d92 ata.c:164
+ mov AL, strict byte 00eh ; b0 0e ; 0xf1d95
+ out DX, AL ; ee ; 0xf1d97
+ mov bx, 000ffh ; bb ff 00 ; 0xf1d98 ata.c:167
+ dec bx ; 4b ; 0xf1d9b ata.c:168
+ test bx, bx ; 85 db ; 0xf1d9c
+ jbe short 01dach ; 76 0c ; 0xf1d9e
+ mov dx, cx ; 89 ca ; 0xf1da0 ata.c:169
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1da2
+ in AL, DX ; ec ; 0xf1da5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1da6
+ test AL, strict byte 080h ; a8 80 ; 0xf1da8 ata.c:170
+ je short 01d9bh ; 74 ef ; 0xf1daa
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1dac ata.c:175
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1daf
+ out DX, AL ; ee ; 0xf1db1
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1db2 ata.c:177
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1db5
+ imul dx ; f7 ea ; 0xf1db8
+ mov es, di ; 8e c7 ; 0xf1dba
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf1dbc
+ add bx, ax ; 01 c3 ; 0xf1dbf
+ cmp byte [es:bx+022h], 000h ; 26 80 7f 22 00 ; 0xf1dc1
+ je short 01e14h ; 74 4c ; 0xf1dc6
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf1dc8 ata.c:180
+ je short 01dd3h ; 74 05 ; 0xf1dcc
+ mov ax, 000b0h ; b8 b0 00 ; 0xf1dce
+ jmp short 01dd6h ; eb 03 ; 0xf1dd1
+ mov ax, 000a0h ; b8 a0 00 ; 0xf1dd3
+ mov dx, cx ; 89 ca ; 0xf1dd6
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1dd8
+ out DX, AL ; ee ; 0xf1ddb
+ mov dx, cx ; 89 ca ; 0xf1ddc ata.c:181
+ inc dx ; 42 ; 0xf1dde
+ inc dx ; 42 ; 0xf1ddf
+ in AL, DX ; ec ; 0xf1de0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1de1
+ mov bx, ax ; 89 c3 ; 0xf1de3
+ mov dx, cx ; 89 ca ; 0xf1de5 ata.c:182
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1de7
+ in AL, DX ; ec ; 0xf1dea
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1deb
+ cmp bl, 001h ; 80 fb 01 ; 0xf1ded ata.c:184
+ jne short 01e14h ; 75 22 ; 0xf1df0
+ cmp al, bl ; 38 d8 ; 0xf1df2
+ jne short 01e14h ; 75 1e ; 0xf1df4
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf1df6 ata.c:186
+ dec bx ; 4b ; 0xf1df9 ata.c:187
+ test bx, bx ; 85 db ; 0xf1dfa
+ jbe short 01e14h ; 76 16 ; 0xf1dfc
+ mov dx, cx ; 89 ca ; 0xf1dfe ata.c:188
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e00
+ in AL, DX ; ec ; 0xf1e03
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e04
+ test AL, strict byte 080h ; a8 80 ; 0xf1e06 ata.c:189
+ je short 01e14h ; 74 0a ; 0xf1e08
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf1e0a ata.c:191
+ dec ax ; 48 ; 0xf1e0d ata.c:192
+ test ax, ax ; 85 c0 ; 0xf1e0e
+ jnbe short 01e0dh ; 77 fb ; 0xf1e10
+ jmp short 01df9h ; eb e5 ; 0xf1e12 ata.c:195
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf1e14 ata.c:200
+ dec bx ; 4b ; 0xf1e17 ata.c:201
+ test bx, bx ; 85 db ; 0xf1e18
+ jbe short 01e28h ; 76 0c ; 0xf1e1a
+ mov dx, cx ; 89 ca ; 0xf1e1c ata.c:202
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e1e
+ in AL, DX ; ec ; 0xf1e21
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e22
+ test AL, strict byte 040h ; a8 40 ; 0xf1e24 ata.c:203
+ je short 01e17h ; 74 ef ; 0xf1e26
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf1e28 ata.c:208
+ mov AL, strict byte 008h ; b0 08 ; 0xf1e2b
+ out DX, AL ; ee ; 0xf1e2d
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf1e2e ata.c:209
+ pop di ; 5f ; 0xf1e31
+ pop si ; 5e ; 0xf1e32
+ pop dx ; 5a ; 0xf1e33
+ pop cx ; 59 ; 0xf1e34
+ pop bx ; 5b ; 0xf1e35
+ pop bp ; 5d ; 0xf1e36
+ retn ; c3 ; 0xf1e37
+ ; disGetNextSymbol 0xf1e38 LB 0x8110 -> off=0x0 cb=00000000000002b7 uValue=00000000000f0838 'ata_cmd_data_in'
+ata_cmd_data_in: ; 0xf1e38 LB 0x2b7
+ push bp ; 55 ; 0xf1e38 ata.c:223
+ mov bp, sp ; 89 e5 ; 0xf1e39
+ push si ; 56 ; 0xf1e3b
+ push di ; 57 ; 0xf1e3c
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf1e3d
+ push ax ; 50 ; 0xf1e40
+ push dx ; 52 ; 0xf1e41
+ push bx ; 53 ; 0xf1e42
+ push cx ; 51 ; 0xf1e43
+ mov es, dx ; 8e c2 ; 0xf1e44 ata.c:233
+ mov bx, ax ; 89 c3 ; 0xf1e46
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf1e48
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf1e4c
+ mov bl, al ; 88 c3 ; 0xf1e4f ata.c:235
+ xor bh, ah ; 30 e7 ; 0xf1e51
+ mov ax, bx ; 89 d8 ; 0xf1e53
+ cwd ; 99 ; 0xf1e55
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf1e56
+ sar ax, 1 ; d1 f8 ; 0xf1e58
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf1e5a
+ imul dx ; f7 ea ; 0xf1e5d
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1e5f
+ add di, ax ; 01 c7 ; 0xf1e62
+ mov ax, word [es:di+00206h] ; 26 8b 85 06 02 ; 0xf1e64
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf1e69
+ mov ax, word [es:di+00208h] ; 26 8b 85 08 02 ; 0xf1e6c ata.c:236
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf1e71
+ mov ax, bx ; 89 d8 ; 0xf1e74 ata.c:238
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf1e76
+ imul dx ; f7 ea ; 0xf1e79
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1e7b
+ add bx, ax ; 01 c3 ; 0xf1e7e
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf1e80
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf1e84
+ test ax, ax ; 85 c0 ; 0xf1e87 ata.c:239
+ jne short 01e92h ; 75 07 ; 0xf1e89
+ mov word [bp-00eh], 08000h ; c7 46 f2 00 80 ; 0xf1e8b ata.c:245
+ jmp short 01e95h ; eb 03 ; 0xf1e90 ata.c:246
+ shr word [bp-00eh], 1 ; d1 6e f2 ; 0xf1e92 ata.c:252
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1e95 ata.c:255
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf1e98
+ in AL, DX ; ec ; 0xf1e9b
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf1e9c
+ test AL, strict byte 080h ; a8 80 ; 0xf1e9e ata.c:256
+ je short 01eb1h ; 74 0f ; 0xf1ea0
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1ea2 ata.c:260
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1ea5
+ mov AL, strict byte 008h ; b0 08 ; 0xf1ea8
+ out DX, AL ; ee ; 0xf1eaa
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf1eab ata.c:261
+ jmp near 020e8h ; e9 37 02 ; 0xf1eae
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1eb1 ata.c:264
+ mov di, word [bp-016h] ; 8b 7e ea ; 0xf1eb4
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf1eb7
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1ebb
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf1ebe
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf1ec2
+ mov al, byte [es:bx+016h] ; 26 8a 47 16 ; 0xf1ec5 ata.c:265
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1ec9
+ mov ax, word [es:bx+012h] ; 26 8b 47 12 ; 0xf1ecc ata.c:266
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf1ed0
+ mov bl, byte [es:bx+014h] ; 26 8a 5f 14 ; 0xf1ed3 ata.c:267
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1ed7 ata.c:270
+ test al, al ; 84 c0 ; 0xf1eda
+ je short 01ee1h ; 74 03 ; 0xf1edc
+ jmp near 01fc6h ; e9 e5 00 ; 0xf1ede
+ xor ah, ah ; 30 e4 ; 0xf1ee1 ata.c:271
+ xor bx, bx ; 31 db ; 0xf1ee3
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf1ee5
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1ee8
+ mov cx, word [es:si] ; 26 8b 0c ; 0xf1eeb
+ add cx, word [bp-01ch] ; 03 4e e4 ; 0xf1eee
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf1ef1
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf1ef5
+ mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf1ef9
+ adc dx, word [bp-014h] ; 13 56 ec ; 0xf1efd
+ test dx, dx ; 85 d2 ; 0xf1f00
+ jnbe short 01f16h ; 77 12 ; 0xf1f02
+ je short 01f09h ; 74 03 ; 0xf1f04
+ jmp near 01f7ch ; e9 73 00 ; 0xf1f06
+ test bx, bx ; 85 db ; 0xf1f09
+ jnbe short 01f16h ; 77 09 ; 0xf1f0b
+ jne short 01f7ch ; 75 6d ; 0xf1f0d
+ cmp ax, 01000h ; 3d 00 10 ; 0xf1f0f
+ jnbe short 01f16h ; 77 02 ; 0xf1f12
+ jne short 01f7ch ; 75 66 ; 0xf1f14
+ mov bx, si ; 89 f3 ; 0xf1f16 ata.c:273
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f18
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f1c
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f20
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f24
+ mov si, strict word 00018h ; be 18 00 ; 0xf1f27
+ call 09c10h ; e8 e3 7c ; 0xf1f2a
+ xor dh, dh ; 30 f6 ; 0xf1f2d
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf1f2f
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f32 ata.c:274
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f35
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f39
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f3d
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f40
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f44
+ mov si, strict word 00020h ; be 20 00 ; 0xf1f47
+ call 09c10h ; e8 c3 7c ; 0xf1f4a
+ mov bx, dx ; 89 d3 ; 0xf1f4d
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf1f4f
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf1f52 ata.c:275
+ mov al, ah ; 88 e0 ; 0xf1f55
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f57
+ inc dx ; 42 ; 0xf1f5a
+ inc dx ; 42 ; 0xf1f5b
+ out DX, AL ; ee ; 0xf1f5c
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f5d ata.c:276
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1f60
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf1f63
+ out DX, AL ; ee ; 0xf1f66
+ xor bh, bh ; 30 ff ; 0xf1f67 ata.c:277
+ mov ax, bx ; 89 d8 ; 0xf1f69
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f6b
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1f6e
+ out DX, AL ; ee ; 0xf1f71
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1f72 ata.c:278
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1f75
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf1f78
+ out DX, AL ; ee ; 0xf1f7b
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf1f7c ata.c:282
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1f7f
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf1f82
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf1f85
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1f88 ata.c:283
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1f8c
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1f90
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1f93
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1f97
+ mov si, strict word 00008h ; be 08 00 ; 0xf1f9a
+ call 09c10h ; e8 70 7c ; 0xf1f9d
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf1fa0
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf1fa3 ata.c:284
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf1fa6
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf1faa
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf1fae
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf1fb1
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf1fb5
+ mov si, strict word 00018h ; be 18 00 ; 0xf1fb8
+ call 09c10h ; e8 52 7c ; 0xf1fbb
+ mov bl, dl ; 88 d3 ; 0xf1fbe
+ and bl, 00fh ; 80 e3 0f ; 0xf1fc0
+ or bl, 040h ; 80 cb 40 ; 0xf1fc3
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf1fc6 ata.c:287
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf1fc9
+ mov AL, strict byte 00ah ; b0 0a ; 0xf1fcc
+ out DX, AL ; ee ; 0xf1fce
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fcf ata.c:288
+ inc dx ; 42 ; 0xf1fd2
+ xor al, al ; 30 c0 ; 0xf1fd3
+ out DX, AL ; ee ; 0xf1fd5
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fd6 ata.c:289
+ inc dx ; 42 ; 0xf1fd9
+ inc dx ; 42 ; 0xf1fda
+ mov al, byte [bp-01ch] ; 8a 46 e4 ; 0xf1fdb
+ out DX, AL ; ee ; 0xf1fde
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fdf ata.c:290
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf1fe2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf1fe5
+ out DX, AL ; ee ; 0xf1fe8
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf1fe9 ata.c:291
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1fec
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf1fef
+ out DX, AL ; ee ; 0xf1ff2
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf1ff3 ata.c:292
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf1ff6
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf1ff9
+ out DX, AL ; ee ; 0xf1ffc
+ test byte [bp-008h], 001h ; f6 46 f8 01 ; 0xf1ffd ata.c:293
+ je short 02008h ; 74 05 ; 0xf2001
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2003
+ jmp short 0200bh ; eb 03 ; 0xf2006
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2008
+ mov dl, bl ; 88 da ; 0xf200b
+ xor dh, dh ; 30 f6 ; 0xf200d
+ or ax, dx ; 09 d0 ; 0xf200f
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2011
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2014
+ out DX, AL ; ee ; 0xf2017
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2018 ata.c:294
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf201b
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf201e
+ out DX, AL ; ee ; 0xf2021
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf2022 ata.c:296
+ cmp ax, 000c4h ; 3d c4 00 ; 0xf2025
+ je short 0202fh ; 74 05 ; 0xf2028
+ cmp ax, strict word 00029h ; 3d 29 00 ; 0xf202a
+ jne short 02039h ; 75 0a ; 0xf202d
+ mov si, word [bp-01ch] ; 8b 76 e4 ; 0xf202f ata.c:297
+ mov word [bp-01ch], strict word 00001h ; c7 46 e4 01 00 ; 0xf2032 ata.c:298
+ jmp short 0203ch ; eb 03 ; 0xf2037 ata.c:299
+ mov si, strict word 00001h ; be 01 00 ; 0xf2039 ata.c:300
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf203c ata.c:304
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf203f
+ in AL, DX ; ec ; 0xf2042
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2043
+ mov bl, al ; 88 c3 ; 0xf2045
+ test AL, strict byte 080h ; a8 80 ; 0xf2047 ata.c:305
+ jne short 0203ch ; 75 f1 ; 0xf2049
+ test AL, strict byte 001h ; a8 01 ; 0xf204b ata.c:309
+ je short 0205eh ; 74 0f ; 0xf204d
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf204f ata.c:312
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2052
+ mov AL, strict byte 008h ; b0 08 ; 0xf2055
+ out DX, AL ; ee ; 0xf2057
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2058 ata.c:313
+ jmp near 020e8h ; e9 8a 00 ; 0xf205b
+ test bl, 008h ; f6 c3 08 ; 0xf205e ata.c:314
+ jne short 02072h ; 75 0f ; 0xf2061
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf2063 ata.c:317
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2066
+ mov AL, strict byte 008h ; b0 08 ; 0xf2069
+ out DX, AL ; ee ; 0xf206b
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf206c ata.c:318
+ jmp near 020e8h ; e9 76 00 ; 0xf206f
+ sti ; fb ; 0xf2072 ata.c:323
+ cmp di, 0f800h ; 81 ff 00 f8 ; 0xf2073 ata.c:328
+ jc short 02086h ; 72 0d ; 0xf2077
+ sub di, 00800h ; 81 ef 00 08 ; 0xf2079 ata.c:329
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf207d
+ add ax, 00080h ; 05 80 00 ; 0xf2080
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2083
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf2086 ata.c:336
+ mov cx, word [bp-00eh] ; 8b 4e f2 ; 0xf2089
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf208c
+ rep insw ; f3 6d ; 0xf208f
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf2091 ata.c:337
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf2094
+ add word [es:bx+018h], si ; 26 01 77 18 ; 0xf2097
+ dec word [bp-01ch] ; ff 4e e4 ; 0xf209b ata.c:338
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf209e ata.c:340
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf20a1
+ in AL, DX ; ec ; 0xf20a4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf20a5
+ mov bl, al ; 88 c3 ; 0xf20a7
+ test AL, strict byte 080h ; a8 80 ; 0xf20a9 ata.c:341
+ jne short 0209eh ; 75 f1 ; 0xf20ab
+ cmp word [bp-01ch], strict byte 00000h ; 83 7e e4 00 ; 0xf20ad ata.c:344
+ jne short 020c7h ; 75 14 ; 0xf20b1
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf20b3 ata.c:345
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf20b5
+ je short 020ddh ; 74 24 ; 0xf20b7
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20b9 ata.c:349
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20bc
+ mov AL, strict byte 008h ; b0 08 ; 0xf20bf
+ out DX, AL ; ee ; 0xf20c1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf20c2 ata.c:350
+ jmp short 020e8h ; eb 21 ; 0xf20c5
+ mov al, bl ; 88 d8 ; 0xf20c7 ata.c:355
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf20c9
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf20cb
+ je short 02073h ; 74 a4 ; 0xf20cd
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20cf ata.c:359
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20d2
+ mov AL, strict byte 008h ; b0 08 ; 0xf20d5
+ out DX, AL ; ee ; 0xf20d7
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf20d8 ata.c:360
+ jmp short 020e8h ; eb 0b ; 0xf20db
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf20dd ata.c:366
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf20e0
+ mov AL, strict byte 008h ; b0 08 ; 0xf20e3
+ out DX, AL ; ee ; 0xf20e5
+ xor ax, ax ; 31 c0 ; 0xf20e6 ata.c:367
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf20e8 ata.c:368
+ pop di ; 5f ; 0xf20eb
+ pop si ; 5e ; 0xf20ec
+ pop bp ; 5d ; 0xf20ed
+ retn ; c3 ; 0xf20ee
+ ; disGetNextSymbol 0xf20ef LB 0x7e59 -> off=0x0 cb=00000000000006ab uValue=00000000000f0aef 'ata_detect'
+ata_detect: ; 0xf20ef LB 0x6ab
+ push bp ; 55 ; 0xf20ef ata.c:374
+ mov bp, sp ; 89 e5 ; 0xf20f0
+ push si ; 56 ; 0xf20f2
+ push di ; 57 ; 0xf20f3
+ sub sp, 00264h ; 81 ec 64 02 ; 0xf20f4
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf20f8 ata.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf20fb
+ mov es, ax ; 8e c0 ; 0xf20fe
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf2100
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf2103 ata.c:49
+ mov bx, 00122h ; bb 22 01 ; 0xf2106 ata.c:381
+ mov es, ax ; 8e c0 ; 0xf2109
+ mov word [bp-030h], bx ; 89 5e d0 ; 0xf210b
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf210e
+ mov byte [es:bx+00204h], 000h ; 26 c6 87 04 02 00 ; 0xf2111 ata.c:384
+ mov word [es:bx+00206h], 001f0h ; 26 c7 87 06 02 f0 01 ; 0xf2117 ata.c:385
+ mov word [es:bx+00208h], 003f0h ; 26 c7 87 08 02 f0 03 ; 0xf211e ata.c:386
+ mov byte [es:bx+00205h], 00eh ; 26 c6 87 05 02 0e ; 0xf2125 ata.c:387
+ mov byte [es:bx+0020ah], 000h ; 26 c6 87 0a 02 00 ; 0xf212b ata.c:390
+ mov word [es:bx+0020ch], 00170h ; 26 c7 87 0c 02 70 01 ; 0xf2131 ata.c:391
+ mov word [es:bx+0020eh], 00370h ; 26 c7 87 0e 02 70 03 ; 0xf2138 ata.c:392
+ mov byte [es:bx+0020bh], 00fh ; 26 c6 87 0b 02 0f ; 0xf213f ata.c:393
+ xor al, al ; 30 c0 ; 0xf2145 ata.c:414
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf2147
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf214a
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf214d ata.c:416
+ jmp near 0271fh ; e9 cc 05 ; 0xf2150
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2153 ata.c:431
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2156
+ out DX, AL ; ee ; 0xf2159
+ lea di, [bx+002h] ; 8d 7f 02 ; 0xf215a ata.c:432
+ mov AL, strict byte 055h ; b0 55 ; 0xf215d
+ mov dx, di ; 89 fa ; 0xf215f
+ out DX, AL ; ee ; 0xf2161
+ lea si, [bx+003h] ; 8d 77 03 ; 0xf2162 ata.c:433
+ mov AL, strict byte 0aah ; b0 aa ; 0xf2165
+ mov dx, si ; 89 f2 ; 0xf2167
+ out DX, AL ; ee ; 0xf2169
+ mov dx, di ; 89 fa ; 0xf216a ata.c:434
+ out DX, AL ; ee ; 0xf216c
+ mov AL, strict byte 055h ; b0 55 ; 0xf216d ata.c:435
+ mov dx, si ; 89 f2 ; 0xf216f
+ out DX, AL ; ee ; 0xf2171
+ mov dx, di ; 89 fa ; 0xf2172 ata.c:436
+ out DX, AL ; ee ; 0xf2174
+ mov AL, strict byte 0aah ; b0 aa ; 0xf2175 ata.c:437
+ mov dx, si ; 89 f2 ; 0xf2177
+ out DX, AL ; ee ; 0xf2179
+ mov dx, di ; 89 fa ; 0xf217a ata.c:440
+ in AL, DX ; ec ; 0xf217c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf217d
+ mov cx, ax ; 89 c1 ; 0xf217f
+ mov dx, si ; 89 f2 ; 0xf2181 ata.c:441
+ in AL, DX ; ec ; 0xf2183
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2184
+ cmp cl, 055h ; 80 f9 55 ; 0xf2186 ata.c:443
+ jne short 021d4h ; 75 49 ; 0xf2189
+ cmp AL, strict byte 0aah ; 3c aa ; 0xf218b
+ jne short 021d4h ; 75 45 ; 0xf218d
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf218f ata.c:444
+ xor ah, ah ; 30 e4 ; 0xf2192
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2194
+ imul dx ; f7 ea ; 0xf2197
+ les si, [bp-030h] ; c4 76 d0 ; 0xf2199
+ add si, ax ; 01 c6 ; 0xf219c
+ mov byte [es:si+022h], 001h ; 26 c6 44 22 01 ; 0xf219e
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf21a3 ata.c:447
+ xor ah, ah ; 30 e4 ; 0xf21a6
+ call 01d4eh ; e8 a3 fb ; 0xf21a8
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf21ab ata.c:450
+ je short 021b6h ; 74 05 ; 0xf21af
+ mov ax, 000b0h ; b8 b0 00 ; 0xf21b1
+ jmp short 021b9h ; eb 03 ; 0xf21b4
+ mov ax, 000a0h ; b8 a0 00 ; 0xf21b6
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf21b9
+ out DX, AL ; ee ; 0xf21bc
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf21bd ata.c:451
+ in AL, DX ; ec ; 0xf21c0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21c1
+ mov cx, ax ; 89 c1 ; 0xf21c3
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf21c5 ata.c:452
+ in AL, DX ; ec ; 0xf21c8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21c9
+ cmp cl, 001h ; 80 f9 01 ; 0xf21cb ata.c:453
+ jne short 02211h ; 75 41 ; 0xf21ce
+ cmp al, cl ; 38 c8 ; 0xf21d0
+ je short 021d6h ; 74 02 ; 0xf21d2
+ jmp short 02211h ; eb 3b ; 0xf21d4
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf21d6 ata.c:454
+ in AL, DX ; ec ; 0xf21d9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21da
+ mov cx, ax ; 89 c1 ; 0xf21dc
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf21de
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf21e1 ata.c:455
+ in AL, DX ; ec ; 0xf21e4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21e5
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf21e7
+ mov ch, byte [bp-01ch] ; 8a 6e e4 ; 0xf21ea
+ lea dx, [bx+007h] ; 8d 57 07 ; 0xf21ed ata.c:456
+ in AL, DX ; ec ; 0xf21f0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf21f1
+ cmp cl, 014h ; 80 f9 14 ; 0xf21f3 ata.c:458
+ jne short 02213h ; 75 1b ; 0xf21f6
+ cmp ch, 0ebh ; 80 fd eb ; 0xf21f8
+ jne short 02213h ; 75 16 ; 0xf21fb
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf21fd ata.c:459
+ xor ah, ah ; 30 e4 ; 0xf2200
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2202
+ imul dx ; f7 ea ; 0xf2205
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf2207
+ add bx, ax ; 01 c3 ; 0xf220a
+ mov byte [es:bx+022h], 003h ; 26 c6 47 22 03 ; 0xf220c
+ jmp short 02256h ; eb 43 ; 0xf2211 ata.c:460
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf2213
+ jne short 02237h ; 75 1e ; 0xf2217
+ test ch, ch ; 84 ed ; 0xf2219
+ jne short 02237h ; 75 1a ; 0xf221b
+ test al, al ; 84 c0 ; 0xf221d
+ je short 02237h ; 74 16 ; 0xf221f
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2221 ata.c:461
+ xor ah, ah ; 30 e4 ; 0xf2224
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2226
+ imul dx ; f7 ea ; 0xf2229
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf222b
+ add bx, ax ; 01 c3 ; 0xf222e
+ mov byte [es:bx+022h], 002h ; 26 c6 47 22 02 ; 0xf2230
+ jmp short 02256h ; eb 1f ; 0xf2235 ata.c:462
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf2237
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf223a
+ jne short 02256h ; 75 18 ; 0xf223c
+ cmp ch, al ; 38 c5 ; 0xf223e
+ jne short 02256h ; 75 14 ; 0xf2240
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2242 ata.c:463
+ xor ah, ah ; 30 e4 ; 0xf2245
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2247
+ imul dx ; f7 ea ; 0xf224a
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf224c
+ add bx, ax ; 01 c3 ; 0xf224f
+ mov byte [es:bx+022h], 000h ; 26 c6 47 22 00 ; 0xf2251
+ mov dx, word [bp-02ah] ; 8b 56 d6 ; 0xf2256 ata.c:469
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2259
+ mov AL, strict byte 008h ; b0 08 ; 0xf225c
+ out DX, AL ; ee ; 0xf225e
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf225f ata.c:471
+ xor ah, ah ; 30 e4 ; 0xf2262
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2264
+ imul dx ; f7 ea ; 0xf2267
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf2269
+ add bx, ax ; 01 c3 ; 0xf226c
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf226e
+ mov byte [bp-018h], al ; 88 46 e8 ; 0xf2272
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2275 ata.c:474
+ jne short 022c5h ; 75 4c ; 0xf2277
+ mov byte [es:bx+023h], 0ffh ; 26 c6 47 23 ff ; 0xf2279 ata.c:482
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf227e ata.c:483
+ lea dx, [bp-00268h] ; 8d 96 98 fd ; 0xf2283 ata.c:484
+ mov bx, word [bp-030h] ; 8b 5e d0 ; 0xf2287
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf228a
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf228e
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2292 ata.c:485
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2295
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf2299 ata.c:487
+ mov bx, 000ech ; bb ec 00 ; 0xf229c
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf229f
+ mov dx, es ; 8c c2 ; 0xf22a2
+ call 01e38h ; e8 91 fb ; 0xf22a4
+ test ax, ax ; 85 c0 ; 0xf22a7
+ je short 022b9h ; 74 0e ; 0xf22a9
+ mov ax, 00124h ; b8 24 01 ; 0xf22ab ata.c:488
+ push ax ; 50 ; 0xf22ae
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf22af
+ push ax ; 50 ; 0xf22b2
+ call 0190fh ; e8 59 f6 ; 0xf22b3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf22b6
+ test byte [bp-00268h], 080h ; f6 86 98 fd 80 ; 0xf22b9 ata.c:490
+ je short 022c8h ; 74 08 ; 0xf22be
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf22c0
+ jmp short 022cah ; eb 05 ; 0xf22c3
+ jmp near 024d6h ; e9 0e 02 ; 0xf22c5
+ xor ax, ax ; 31 c0 ; 0xf22c8
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf22ca
+ mov byte [bp-012h], 000h ; c6 46 ee 00 ; 0xf22cd ata.c:494
+ mov word [bp-034h], 00200h ; c7 46 cc 00 02 ; 0xf22d1 ata.c:496
+ mov ax, word [bp-00266h] ; 8b 86 9a fd ; 0xf22d6 ata.c:498
+ mov word [bp-02ch], ax ; 89 46 d4 ; 0xf22da
+ mov ax, word [bp-00262h] ; 8b 86 9e fd ; 0xf22dd ata.c:499
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf22e1
+ mov ax, word [bp-0025ch] ; 8b 86 a4 fd ; 0xf22e4 ata.c:500
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf22e8
+ mov ax, word [bp-001f0h] ; 8b 86 10 fe ; 0xf22eb ata.c:502
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf22ef
+ mov si, word [bp-001eeh] ; 8b b6 12 fe ; 0xf22f2
+ xor ax, ax ; 31 c0 ; 0xf22f6
+ mov word [bp-022h], ax ; 89 46 de ; 0xf22f8
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf22fb
+ cmp si, 00fffh ; 81 fe ff 0f ; 0xf22fe ata.c:503
+ jne short 02323h ; 75 1f ; 0xf2302
+ cmp word [bp-036h], strict byte 0ffffh ; 83 7e ca ff ; 0xf2304
+ jne short 02323h ; 75 19 ; 0xf2308
+ mov ax, word [bp-0019ah] ; 8b 86 66 fe ; 0xf230a ata.c:504
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf230e
+ mov ax, word [bp-0019ch] ; 8b 86 64 fe ; 0xf2311
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2315
+ mov si, word [bp-0019eh] ; 8b b6 62 fe ; 0xf2318
+ mov ax, word [bp-001a0h] ; 8b 86 60 fe ; 0xf231c
+ mov word [bp-036h], ax ; 89 46 ca ; 0xf2320
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2323 ata.c:505
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2326
+ jc short 02336h ; 72 0c ; 0xf2328
+ jbe short 0233eh ; 76 12 ; 0xf232a
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf232c
+ je short 02346h ; 74 16 ; 0xf232e
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2330
+ je short 02342h ; 74 0e ; 0xf2332
+ jmp short 0237bh ; eb 45 ; 0xf2334
+ test al, al ; 84 c0 ; 0xf2336
+ jne short 0237bh ; 75 41 ; 0xf2338
+ mov BL, strict byte 01eh ; b3 1e ; 0xf233a ata.c:508
+ jmp short 02348h ; eb 0a ; 0xf233c ata.c:509
+ mov BL, strict byte 026h ; b3 26 ; 0xf233e ata.c:511
+ jmp short 02348h ; eb 06 ; 0xf2340 ata.c:512
+ mov BL, strict byte 067h ; b3 67 ; 0xf2342 ata.c:514
+ jmp short 02348h ; eb 02 ; 0xf2344 ata.c:515
+ mov BL, strict byte 070h ; b3 70 ; 0xf2346 ata.c:517
+ mov al, bl ; 88 d8 ; 0xf2348 ata.c:524
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf234a
+ xor ah, ah ; 30 e4 ; 0xf234c
+ call 01652h ; e8 01 f3 ; 0xf234e
+ mov dh, al ; 88 c6 ; 0xf2351
+ mov al, bl ; 88 d8 ; 0xf2353
+ xor ah, ah ; 30 e4 ; 0xf2355
+ call 01652h ; e8 f8 f2 ; 0xf2357
+ mov ah, dh ; 88 f4 ; 0xf235a
+ mov word [bp-03ch], ax ; 89 46 c4 ; 0xf235c
+ mov al, bl ; 88 d8 ; 0xf235f ata.c:525
+ add AL, strict byte 002h ; 04 02 ; 0xf2361
+ xor ah, ah ; 30 e4 ; 0xf2363
+ call 01652h ; e8 ea f2 ; 0xf2365
+ xor ah, ah ; 30 e4 ; 0xf2368
+ mov word [bp-03eh], ax ; 89 46 c2 ; 0xf236a
+ mov al, bl ; 88 d8 ; 0xf236d ata.c:526
+ add AL, strict byte 007h ; 04 07 ; 0xf236f
+ call 01652h ; e8 de f2 ; 0xf2371
+ xor ah, ah ; 30 e4 ; 0xf2374
+ mov word [bp-03ah], ax ; 89 46 c6 ; 0xf2376
+ jmp short 0238dh ; eb 12 ; 0xf2379 ata.c:528
+ push word [bp-020h] ; ff 76 e0 ; 0xf237b ata.c:529
+ push word [bp-022h] ; ff 76 de ; 0xf237e
+ push si ; 56 ; 0xf2381
+ push word [bp-036h] ; ff 76 ca ; 0xf2382
+ mov dx, ss ; 8c d2 ; 0xf2385
+ lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf2387
+ call 059dch ; e8 4f 36 ; 0xf238a
+ mov bx, 00da0h ; bb a0 0d ; 0xf238d ata.c:532
+ mov cx, ds ; 8c d9 ; 0xf2390
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2392
+ call 018cch ; e8 34 f5 ; 0xf2395
+ mov ax, word [bp-03ah] ; 8b 46 c6 ; 0xf2398
+ push ax ; 50 ; 0xf239b
+ mov ax, word [bp-03eh] ; 8b 46 c2 ; 0xf239c
+ push ax ; 50 ; 0xf239f
+ mov ax, word [bp-03ch] ; 8b 46 c4 ; 0xf23a0
+ push ax ; 50 ; 0xf23a3
+ push word [bp-032h] ; ff 76 ce ; 0xf23a4
+ push word [bp-01eh] ; ff 76 e2 ; 0xf23a7
+ push word [bp-02ch] ; ff 76 d4 ; 0xf23aa
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf23ad
+ xor ah, ah ; 30 e4 ; 0xf23b0
+ push ax ; 50 ; 0xf23b2
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf23b3
+ push ax ; 50 ; 0xf23b6
+ mov ax, 0014dh ; b8 4d 01 ; 0xf23b7
+ push ax ; 50 ; 0xf23ba
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf23bb
+ push ax ; 50 ; 0xf23be
+ call 0190fh ; e8 4d f5 ; 0xf23bf
+ add sp, strict byte 00014h ; 83 c4 14 ; 0xf23c2
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf23c5 ata.c:534
+ xor ah, ah ; 30 e4 ; 0xf23c8
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf23ca
+ imul dx ; f7 ea ; 0xf23cd
+ les di, [bp-030h] ; c4 7e d0 ; 0xf23cf
+ add di, ax ; 01 c7 ; 0xf23d2
+ mov byte [es:di+023h], 0ffh ; 26 c6 45 23 ff ; 0xf23d4
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf23d9 ata.c:535
+ mov byte [es:di+024h], al ; 26 88 45 24 ; 0xf23dc
+ mov al, byte [bp-012h] ; 8a 46 ee ; 0xf23e0 ata.c:536
+ mov byte [es:di+026h], al ; 26 88 45 26 ; 0xf23e3
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf23e7 ata.c:537
+ mov word [es:di+028h], ax ; 26 89 45 28 ; 0xf23ea
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf23ee ata.c:538
+ mov word [es:di+030h], ax ; 26 89 45 30 ; 0xf23f1
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf23f5 ata.c:539
+ mov word [es:di+032h], ax ; 26 89 45 32 ; 0xf23f8
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf23fc ata.c:540
+ mov word [es:di+034h], ax ; 26 89 45 34 ; 0xf23ff
+ mov ax, word [bp-020h] ; 8b 46 e0 ; 0xf2403 ata.c:541
+ mov word [es:di+03ch], ax ; 26 89 45 3c ; 0xf2406
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf240a
+ mov word [es:di+03ah], ax ; 26 89 45 3a ; 0xf240d
+ mov word [es:di+038h], si ; 26 89 75 38 ; 0xf2411
+ mov ax, word [bp-036h] ; 8b 46 ca ; 0xf2415
+ mov word [es:di+036h], ax ; 26 89 45 36 ; 0xf2418
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf241c ata.c:542
+ push DS ; 1e ; 0xf241f
+ push SS ; 16 ; 0xf2420
+ pop DS ; 1f ; 0xf2421
+ lea si, [bp-03eh] ; 8d 76 c2 ; 0xf2422
+ movsw ; a5 ; 0xf2425
+ movsw ; a5 ; 0xf2426
+ movsw ; a5 ; 0xf2427
+ pop DS ; 1f ; 0xf2428
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2429 ata.c:543
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf242c
+ jnc short 024a0h ; 73 70 ; 0xf242e
+ test al, al ; 84 c0 ; 0xf2430 ata.c:549
+ jne short 02439h ; 75 05 ; 0xf2432
+ mov si, strict word 0003dh ; be 3d 00 ; 0xf2434 ata.c:550
+ jmp short 0243ch ; eb 03 ; 0xf2437 ata.c:551
+ mov si, strict word 0004dh ; be 4d 00 ; 0xf2439 ata.c:552
+ mov cx, word [bp-028h] ; 8b 4e d8 ; 0xf243c
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf243f ata.c:564
+ xor ah, ah ; 30 e4 ; 0xf2442
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf2444
+ imul dx ; f7 ea ; 0xf2447
+ mov bx, ax ; 89 c3 ; 0xf2449
+ sal bx, 1 ; d1 e3 ; 0xf244b
+ sal bx, 1 ; d1 e3 ; 0xf244d
+ add bx, 00104h ; 81 c3 04 01 ; 0xf244f
+ xor ax, ax ; 31 c0 ; 0xf2453
+ mov es, ax ; 8e c0 ; 0xf2455
+ mov word [es:bx], si ; 26 89 37 ; 0xf2457 ata.c:565
+ mov word [es:bx+002h], cx ; 26 89 4f 02 ; 0xf245a
+ mov es, cx ; 8e c1 ; 0xf245e ata.c:571
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf2460
+ mov word [es:si+005h], ax ; 26 89 44 05 ; 0xf2464
+ mov word [es:si+007h], ax ; 26 89 44 07 ; 0xf2468
+ mov bx, word [bp-03ch] ; 8b 5e c4 ; 0xf246c ata.c:573
+ mov word [es:si], bx ; 26 89 1c ; 0xf246f
+ mov bl, byte [bp-03eh] ; 8a 5e c2 ; 0xf2472 ata.c:574
+ mov byte [es:si+002h], bl ; 26 88 5c 02 ; 0xf2475
+ mov byte [es:si+003h], 0a0h ; 26 c6 44 03 a0 ; 0xf2479 ata.c:575
+ mov al, byte [bp-032h] ; 8a 46 ce ; 0xf247e ata.c:576
+ mov byte [es:si+004h], al ; 26 88 44 04 ; 0xf2481
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf2485 ata.c:577
+ mov word [es:si+009h], ax ; 26 89 44 09 ; 0xf2488
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf248c ata.c:578
+ mov byte [es:si+00bh], al ; 26 88 44 0b ; 0xf248f
+ mov bl, byte [bp-03ah] ; 8a 5e c6 ; 0xf2493 ata.c:579
+ mov byte [es:si+00eh], bl ; 26 88 5c 0e ; 0xf2496
+ xor bl, bl ; 30 db ; 0xf249a ata.c:580
+ xor bh, bh ; 30 ff ; 0xf249c ata.c:581
+ jmp short 024a7h ; eb 07 ; 0xf249e
+ jmp short 024c0h ; eb 1e ; 0xf24a0
+ cmp bh, 00fh ; 80 ff 0f ; 0xf24a2
+ jnc short 024b8h ; 73 11 ; 0xf24a5
+ mov al, bh ; 88 f8 ; 0xf24a7 ata.c:582
+ xor ah, ah ; 30 e4 ; 0xf24a9
+ mov es, cx ; 8e c1 ; 0xf24ab
+ mov di, si ; 89 f7 ; 0xf24ad
+ add di, ax ; 01 c7 ; 0xf24af
+ add bl, byte [es:di] ; 26 02 1d ; 0xf24b1
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf24b4
+ jmp short 024a2h ; eb ea ; 0xf24b6
+ neg bl ; f6 db ; 0xf24b8 ata.c:583
+ mov es, cx ; 8e c1 ; 0xf24ba ata.c:584
+ mov byte [es:si+00fh], bl ; 26 88 5c 0f ; 0xf24bc
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf24c0 ata.c:588
+ xor bh, bh ; 30 ff ; 0xf24c3
+ mov es, [bp-02eh] ; 8e 46 d2 ; 0xf24c5
+ add bx, word [bp-030h] ; 03 5e d0 ; 0xf24c8
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf24cb
+ mov byte [es:bx+001e3h], al ; 26 88 87 e3 01 ; 0xf24ce
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf24d3 ata.c:589
+ cmp byte [bp-018h], 003h ; 80 7e e8 03 ; 0xf24d6 ata.c:593
+ jne short 02540h ; 75 64 ; 0xf24da
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf24dc ata.c:598
+ xor ah, ah ; 30 e4 ; 0xf24df
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf24e1
+ imul dx ; f7 ea ; 0xf24e4
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf24e6
+ add bx, ax ; 01 c3 ; 0xf24e9
+ mov byte [es:bx+023h], 005h ; 26 c6 47 23 05 ; 0xf24eb
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf24f0 ata.c:599
+ lea dx, [bp-00268h] ; 8d 96 98 fd ; 0xf24f5 ata.c:600
+ mov bx, word [bp-030h] ; 8b 5e d0 ; 0xf24f9
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf24fc
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf2500
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2504 ata.c:601
+ mov byte [es:bx+00ch], al ; 26 88 47 0c ; 0xf2507
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf250b ata.c:603
+ mov bx, 000a1h ; bb a1 00 ; 0xf250e
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf2511
+ mov dx, es ; 8c c2 ; 0xf2514
+ call 01e38h ; e8 1f f9 ; 0xf2516
+ test ax, ax ; 85 c0 ; 0xf2519
+ je short 0252bh ; 74 0e ; 0xf251b
+ mov ax, 00174h ; b8 74 01 ; 0xf251d ata.c:604
+ push ax ; 50 ; 0xf2520
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2521
+ push ax ; 50 ; 0xf2524
+ call 0190fh ; e8 e7 f3 ; 0xf2525
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2528
+ mov al, byte [bp-00267h] ; 8a 86 99 fd ; 0xf252b ata.c:606
+ and AL, strict byte 01fh ; 24 1f ; 0xf252f
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf2531
+ test byte [bp-00268h], 080h ; f6 86 98 fd 80 ; 0xf2534 ata.c:607
+ je short 02542h ; 74 07 ; 0xf2539
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf253b
+ jmp short 02544h ; eb 04 ; 0xf253e
+ jmp short 0257ch ; eb 3a ; 0xf2540
+ xor cx, cx ; 31 c9 ; 0xf2542
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2544 ata.c:615
+ xor ah, ah ; 30 e4 ; 0xf2547
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf2549
+ imul dx ; f7 ea ; 0xf254c
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf254e
+ add bx, ax ; 01 c3 ; 0xf2551
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2553
+ mov byte [es:bx+023h], al ; 26 88 47 23 ; 0xf2556
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf255a ata.c:616
+ mov byte [es:bx+026h], 000h ; 26 c6 47 26 00 ; 0xf255e ata.c:617
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf2563 ata.c:618
+ mov bl, byte [bp-014h] ; 8a 5e ec ; 0xf2569 ata.c:621
+ xor bh, bh ; 30 ff ; 0xf256c
+ add bx, word [bp-030h] ; 03 5e d0 ; 0xf256e
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2571
+ mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf2574
+ inc byte [bp-014h] ; fe 46 ec ; 0xf2579 ata.c:622
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf257c ata.c:631
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf257f
+ je short 025b2h ; 74 2f ; 0xf2581
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2583
+ jne short 025d9h ; 75 52 ; 0xf2585
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf2587 ata.c:633
+ xor ah, ah ; 30 e4 ; 0xf258a
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf258c
+ imul dx ; f7 ea ; 0xf258f
+ les si, [bp-030h] ; c4 76 d0 ; 0xf2591
+ add si, ax ; 01 c6 ; 0xf2594
+ mov ax, word [es:si+03ch] ; 26 8b 44 3c ; 0xf2596
+ mov bx, word [es:si+03ah] ; 26 8b 5c 3a ; 0xf259a
+ mov cx, word [es:si+038h] ; 26 8b 4c 38 ; 0xf259e
+ mov dx, word [es:si+036h] ; 26 8b 54 36 ; 0xf25a2
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf25a6
+ call 09c10h ; e8 64 76 ; 0xf25a9
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf25ac
+ mov word [bp-026h], cx ; 89 4e da ; 0xf25af
+ mov ah, byte [bp-001c7h] ; 8a a6 39 fe ; 0xf25b2 ata.c:636
+ mov al, byte [bp-001c8h] ; 8a 86 38 fe ; 0xf25b6
+ mov byte [bp-01ah], 00fh ; c6 46 e6 0f ; 0xf25ba ata.c:637
+ jmp short 025c9h ; eb 09 ; 0xf25be
+ dec byte [bp-01ah] ; fe 4e e6 ; 0xf25c0 ata.c:640
+ cmp byte [bp-01ah], 000h ; 80 7e e6 00 ; 0xf25c3
+ jbe short 025d5h ; 76 0c ; 0xf25c7
+ mov cl, byte [bp-01ah] ; 8a 4e e6 ; 0xf25c9
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf25cc
+ sal dx, CL ; d3 e2 ; 0xf25cf
+ test ax, dx ; 85 d0 ; 0xf25d1
+ je short 025c0h ; 74 eb ; 0xf25d3
+ xor si, si ; 31 f6 ; 0xf25d5 ata.c:643
+ jmp short 025e0h ; eb 07 ; 0xf25d7
+ jmp short 0260fh ; eb 34 ; 0xf25d9
+ cmp si, strict byte 00014h ; 83 fe 14 ; 0xf25db
+ jnl short 025f5h ; 7d 15 ; 0xf25de
+ mov di, si ; 89 f7 ; 0xf25e0 ata.c:644
+ sal di, 1 ; d1 e7 ; 0xf25e2
+ mov al, byte [bp+di-00231h] ; 8a 83 cf fd ; 0xf25e4
+ mov byte [bp+di-068h], al ; 88 43 98 ; 0xf25e8
+ mov al, byte [bp+di-00232h] ; 8a 83 ce fd ; 0xf25eb ata.c:645
+ mov byte [bp+di-067h], al ; 88 43 99 ; 0xf25ef
+ inc si ; 46 ; 0xf25f2 ata.c:646
+ jmp short 025dbh ; eb e6 ; 0xf25f3
+ mov byte [bp-040h], 000h ; c6 46 c0 00 ; 0xf25f5 ata.c:649
+ mov si, strict word 00027h ; be 27 00 ; 0xf25f9 ata.c:650
+ jmp short 02603h ; eb 05 ; 0xf25fc
+ dec si ; 4e ; 0xf25fe ata.c:655
+ test si, si ; 85 f6 ; 0xf25ff
+ jle short 0260fh ; 7e 0c ; 0xf2601
+ cmp byte [bp+si-068h], 020h ; 80 7a 98 20 ; 0xf2603
+ jne short 0260fh ; 75 06 ; 0xf2607
+ mov byte [bp+si-068h], 000h ; c6 42 98 00 ; 0xf2609
+ jmp short 025feh ; eb ef ; 0xf260d
+ mov al, byte [bp-018h] ; 8a 46 e8 ; 0xf260f ata.c:662
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf2612
+ je short 0267ch ; 74 66 ; 0xf2614
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf2616
+ je short 02621h ; 74 07 ; 0xf2618
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf261a
+ je short 02687h ; 74 69 ; 0xf261c
+ jmp near 02716h ; e9 f5 00 ; 0xf261e
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2621 ata.c:665
+ je short 0262ch ; 74 05 ; 0xf2625
+ mov ax, 0019fh ; b8 9f 01 ; 0xf2627
+ jmp short 0262fh ; eb 03 ; 0xf262a
+ mov ax, 001a6h ; b8 a6 01 ; 0xf262c
+ push ax ; 50 ; 0xf262f
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2630
+ xor ah, ah ; 30 e4 ; 0xf2633
+ push ax ; 50 ; 0xf2635
+ mov ax, 001adh ; b8 ad 01 ; 0xf2636
+ push ax ; 50 ; 0xf2639
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf263a
+ push ax ; 50 ; 0xf263d
+ call 0190fh ; e8 ce f2 ; 0xf263e
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2641
+ xor si, si ; 31 f6 ; 0xf2644 ata.c:666
+ mov al, byte [bp+si-068h] ; 8a 42 98 ; 0xf2646 ata.c:667
+ xor ah, ah ; 30 e4 ; 0xf2649
+ inc si ; 46 ; 0xf264b
+ test ax, ax ; 85 c0 ; 0xf264c
+ je short 02661h ; 74 11 ; 0xf264e
+ push ax ; 50 ; 0xf2650 ata.c:668
+ mov ax, 001b8h ; b8 b8 01 ; 0xf2651
+ push ax ; 50 ; 0xf2654
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2655
+ push ax ; 50 ; 0xf2658
+ call 0190fh ; e8 b3 f2 ; 0xf2659
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf265c
+ jmp short 02646h ; eb e5 ; 0xf265f
+ push word [bp-026h] ; ff 76 da ; 0xf2661 ata.c:669
+ push word [bp-024h] ; ff 76 dc ; 0xf2664
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2667
+ push ax ; 50 ; 0xf266a
+ mov ax, 001bbh ; b8 bb 01 ; 0xf266b
+ push ax ; 50 ; 0xf266e
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf266f
+ push ax ; 50 ; 0xf2672
+ call 0190fh ; e8 99 f2 ; 0xf2673
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf2676
+ jmp near 02716h ; e9 9a 00 ; 0xf2679 ata.c:670
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf267c ata.c:672
+ je short 02689h ; 74 07 ; 0xf2680
+ mov ax, 0019fh ; b8 9f 01 ; 0xf2682
+ jmp short 0268ch ; eb 05 ; 0xf2685
+ jmp short 026f3h ; eb 6a ; 0xf2687
+ mov ax, 001a6h ; b8 a6 01 ; 0xf2689
+ push ax ; 50 ; 0xf268c
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf268d
+ xor ah, ah ; 30 e4 ; 0xf2690
+ push ax ; 50 ; 0xf2692
+ mov ax, 001adh ; b8 ad 01 ; 0xf2693
+ push ax ; 50 ; 0xf2696
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2697
+ push ax ; 50 ; 0xf269a
+ call 0190fh ; e8 71 f2 ; 0xf269b
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf269e
+ xor si, si ; 31 f6 ; 0xf26a1 ata.c:673
+ mov al, byte [bp+si-068h] ; 8a 42 98 ; 0xf26a3 ata.c:674
+ xor ah, ah ; 30 e4 ; 0xf26a6
+ inc si ; 46 ; 0xf26a8
+ test ax, ax ; 85 c0 ; 0xf26a9
+ je short 026beh ; 74 11 ; 0xf26ab
+ push ax ; 50 ; 0xf26ad ata.c:675
+ mov ax, 001b8h ; b8 b8 01 ; 0xf26ae
+ push ax ; 50 ; 0xf26b1
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26b2
+ push ax ; 50 ; 0xf26b5
+ call 0190fh ; e8 56 f2 ; 0xf26b6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26b9
+ jmp short 026a3h ; eb e5 ; 0xf26bc
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf26be ata.c:676
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf26c1
+ imul dx ; f7 ea ; 0xf26c4
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf26c6
+ add bx, ax ; 01 c3 ; 0xf26c9
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf26cb
+ jne short 026ddh ; 75 0b ; 0xf26d0
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf26d2 ata.c:677
+ xor ah, ah ; 30 e4 ; 0xf26d5
+ push ax ; 50 ; 0xf26d7
+ mov ax, 001dbh ; b8 db 01 ; 0xf26d8
+ jmp short 026e6h ; eb 09 ; 0xf26db ata.c:678
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf26dd ata.c:679
+ xor ah, ah ; 30 e4 ; 0xf26e0
+ push ax ; 50 ; 0xf26e2
+ mov ax, 001f5h ; b8 f5 01 ; 0xf26e3
+ push ax ; 50 ; 0xf26e6
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf26e7
+ push ax ; 50 ; 0xf26ea
+ call 0190fh ; e8 21 f2 ; 0xf26eb
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf26ee
+ jmp short 02716h ; eb 23 ; 0xf26f1 ata.c:680
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf26f3 ata.c:682
+ je short 026feh ; 74 05 ; 0xf26f7
+ mov ax, 0019fh ; b8 9f 01 ; 0xf26f9
+ jmp short 02701h ; eb 03 ; 0xf26fc
+ mov ax, 001a6h ; b8 a6 01 ; 0xf26fe
+ push ax ; 50 ; 0xf2701
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf2702
+ xor ah, ah ; 30 e4 ; 0xf2705
+ push ax ; 50 ; 0xf2707
+ mov ax, 00207h ; b8 07 02 ; 0xf2708
+ push ax ; 50 ; 0xf270b
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf270c
+ push ax ; 50 ; 0xf270f
+ call 0190fh ; e8 fc f1 ; 0xf2710
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf2713
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf2716 ata.c:687
+ cmp byte [bp-00eh], 008h ; 80 7e f2 08 ; 0xf2719
+ jnc short 02772h ; 73 53 ; 0xf271d
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf271f
+ xor bh, bh ; 30 ff ; 0xf2722
+ mov ax, bx ; 89 d8 ; 0xf2724
+ cwd ; 99 ; 0xf2726
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf2727
+ sar ax, 1 ; d1 f8 ; 0xf2729
+ mov word [bp-038h], ax ; 89 46 c8 ; 0xf272b
+ mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf272e
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf2731
+ mov ax, bx ; 89 d8 ; 0xf2734
+ cwd ; 99 ; 0xf2736
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf2737
+ idiv bx ; f7 fb ; 0xf273a
+ mov cx, dx ; 89 d1 ; 0xf273c
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf273e
+ mov al, byte [bp-038h] ; 8a 46 c8 ; 0xf2741
+ xor ah, ah ; 30 e4 ; 0xf2744
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2746
+ imul dx ; f7 ea ; 0xf2749
+ les si, [bp-030h] ; c4 76 d0 ; 0xf274b
+ add si, ax ; 01 c6 ; 0xf274e
+ mov bx, word [es:si+00206h] ; 26 8b 9c 06 02 ; 0xf2750
+ mov ax, word [es:si+00208h] ; 26 8b 84 08 02 ; 0xf2755
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf275a
+ mov dx, ax ; 89 c2 ; 0xf275d
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf275f
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2762
+ out DX, AL ; ee ; 0xf2764
+ test cl, cl ; 84 c9 ; 0xf2765
+ jne short 0276ch ; 75 03 ; 0xf2767
+ jmp near 02153h ; e9 e7 f9 ; 0xf2769
+ mov ax, 000b0h ; b8 b0 00 ; 0xf276c
+ jmp near 02156h ; e9 e4 f9 ; 0xf276f
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf2772 ata.c:690
+ les bx, [bp-030h] ; c4 5e d0 ; 0xf2775
+ mov byte [es:bx+001e2h], al ; 26 88 87 e2 01 ; 0xf2778
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf277d ata.c:691
+ mov byte [es:bx+001f3h], al ; 26 88 87 f3 01 ; 0xf2780
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf2785 ata.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2788
+ mov es, ax ; 8e c0 ; 0xf278b
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf278d
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2790
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2793 ata.c:704
+ pop di ; 5f ; 0xf2796
+ pop si ; 5e ; 0xf2797
+ pop bp ; 5d ; 0xf2798
+ retn ; c3 ; 0xf2799
+ ; disGetNextSymbol 0xf279a LB 0x77ae -> off=0x0 cb=000000000000028e uValue=00000000000f119a 'ata_cmd_data_out'
+ata_cmd_data_out: ; 0xf279a LB 0x28e
+ push bp ; 55 ; 0xf279a ata.c:718
+ mov bp, sp ; 89 e5 ; 0xf279b
+ push si ; 56 ; 0xf279d
+ push di ; 57 ; 0xf279e
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf279f
+ mov di, ax ; 89 c7 ; 0xf27a2
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf27a4
+ mov word [bp-01eh], bx ; 89 5e e2 ; 0xf27a7
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf27aa
+ mov es, dx ; 8e c2 ; 0xf27ad ata.c:730
+ mov al, byte [es:di+00ch] ; 26 8a 45 0c ; 0xf27af
+ xor ah, ah ; 30 e4 ; 0xf27b3
+ mov dx, ax ; 89 c2 ; 0xf27b5
+ shr ax, 1 ; d1 e8 ; 0xf27b7 ata.c:731
+ and dl, 001h ; 80 e2 01 ; 0xf27b9 ata.c:732
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf27bc
+ xor ah, ah ; 30 e4 ; 0xf27bf ata.c:734
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf27c1
+ imul dx ; f7 ea ; 0xf27c4
+ mov bx, di ; 89 fb ; 0xf27c6
+ add bx, ax ; 01 c3 ; 0xf27c8
+ mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf27ca
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf27cf
+ mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf27d2 ata.c:735
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf27d7
+ mov word [bp-01ch], 00100h ; c7 46 e4 00 01 ; 0xf27da ata.c:743
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf27df ata.c:745
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf27e2
+ in AL, DX ; ec ; 0xf27e5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf27e6
+ test AL, strict byte 080h ; a8 80 ; 0xf27e8 ata.c:746
+ je short 027fbh ; 74 0f ; 0xf27ea
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf27ec ata.c:749
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf27ef
+ mov AL, strict byte 008h ; b0 08 ; 0xf27f2
+ out DX, AL ; ee ; 0xf27f4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf27f5 ata.c:750
+ jmp near 02a21h ; e9 26 02 ; 0xf27f8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf27fb ata.c:753
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf27fe
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2802
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf2805
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf2809
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf280c
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf2810
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf2813
+ mov word [bp-022h], ax ; 89 46 de ; 0xf2816
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf2819 ata.c:754
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf281d
+ mov ax, word [es:di+00ah] ; 26 8b 45 0a ; 0xf2820
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2824
+ mov ax, word [es:di+016h] ; 26 8b 45 16 ; 0xf2827 ata.c:755
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf282b
+ mov ax, word [es:di+012h] ; 26 8b 45 12 ; 0xf282e ata.c:756
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf2832
+ mov ax, word [es:di+014h] ; 26 8b 45 14 ; 0xf2835 ata.c:757
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf2839
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf283c ata.c:760
+ test ax, ax ; 85 c0 ; 0xf283f
+ je short 02846h ; 74 03 ; 0xf2841
+ jmp near 0290dh ; e9 c7 00 ; 0xf2843
+ xor bx, bx ; 31 db ; 0xf2846 ata.c:761
+ xor dx, dx ; 31 d2 ; 0xf2848
+ mov si, word [bp-022h] ; 8b 76 de ; 0xf284a
+ add si, word [bp-01ah] ; 03 76 e6 ; 0xf284d
+ adc bx, word [bp-010h] ; 13 5e f0 ; 0xf2850
+ adc dx, word [bp-020h] ; 13 56 e0 ; 0xf2853
+ adc ax, word [bp-00ch] ; 13 46 f4 ; 0xf2856
+ test ax, ax ; 85 c0 ; 0xf2859
+ jnbe short 0286dh ; 77 10 ; 0xf285b
+ jne short 028d0h ; 75 71 ; 0xf285d
+ test dx, dx ; 85 d2 ; 0xf285f
+ jnbe short 0286dh ; 77 0a ; 0xf2861
+ jne short 028d0h ; 75 6b ; 0xf2863
+ cmp bx, 01000h ; 81 fb 00 10 ; 0xf2865
+ jnbe short 0286dh ; 77 02 ; 0xf2869
+ jne short 028d0h ; 75 63 ; 0xf286b
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf286d ata.c:763
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf2870
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf2873
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf2876
+ mov si, strict word 00018h ; be 18 00 ; 0xf2879
+ call 09c10h ; e8 91 73 ; 0xf287c
+ xor dh, dh ; 30 f6 ; 0xf287f
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf2881
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2884 ata.c:764
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf2887
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf288a
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf288d
+ mov si, strict word 00020h ; be 20 00 ; 0xf2890
+ call 09c10h ; e8 7a 73 ; 0xf2893
+ mov bx, dx ; 89 d3 ; 0xf2896
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf2898
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf289b ata.c:765
+ mov al, ah ; 88 e0 ; 0xf289e
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28a0
+ inc dx ; 42 ; 0xf28a3
+ inc dx ; 42 ; 0xf28a4
+ out DX, AL ; ee ; 0xf28a5
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28a6 ata.c:766
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf28a9
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf28ac
+ out DX, AL ; ee ; 0xf28af
+ xor bh, bh ; 30 ff ; 0xf28b0 ata.c:767
+ mov ax, bx ; 89 d8 ; 0xf28b2
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28b4
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf28b7
+ out DX, AL ; ee ; 0xf28ba
+ mov al, byte [bp-023h] ; 8a 46 dd ; 0xf28bb ata.c:768
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf28be
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf28c1
+ out DX, AL ; ee ; 0xf28c4
+ xor al, al ; 30 c0 ; 0xf28c5 ata.c:771
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf28c7
+ mov word [bp-020h], ax ; 89 46 e0 ; 0xf28ca
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28cd
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf28d0 ata.c:773
+ xor ah, ah ; 30 e4 ; 0xf28d3
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf28d5
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf28d8 ata.c:774
+ mov bx, word [bp-020h] ; 8b 5e e0 ; 0xf28db
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf28de
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf28e1
+ mov si, strict word 00008h ; be 08 00 ; 0xf28e4
+ call 09c10h ; e8 26 73 ; 0xf28e7
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf28ea
+ mov word [bp-020h], bx ; 89 5e e0 ; 0xf28ed
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf28f0
+ mov word [bp-022h], dx ; 89 56 de ; 0xf28f3
+ mov word [bp-024h], dx ; 89 56 dc ; 0xf28f6 ata.c:775
+ mov si, strict word 00010h ; be 10 00 ; 0xf28f9 ata.c:776
+ call 09c10h ; e8 11 73 ; 0xf28fc
+ mov word [bp-022h], dx ; 89 56 de ; 0xf28ff
+ mov ax, dx ; 89 d0 ; 0xf2902 ata.c:777
+ xor ah, dh ; 30 f4 ; 0xf2904
+ and AL, strict byte 00fh ; 24 0f ; 0xf2906
+ or AL, strict byte 040h ; 0c 40 ; 0xf2908
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf290a
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf290d ata.c:780
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2910
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2913
+ out DX, AL ; ee ; 0xf2915
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2916 ata.c:781
+ inc dx ; 42 ; 0xf2919
+ xor al, al ; 30 c0 ; 0xf291a
+ out DX, AL ; ee ; 0xf291c
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf291d ata.c:782
+ inc dx ; 42 ; 0xf2920
+ inc dx ; 42 ; 0xf2921
+ mov al, byte [bp-01ah] ; 8a 46 e6 ; 0xf2922
+ out DX, AL ; ee ; 0xf2925
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2926 ata.c:783
+ add dx, strict byte 00003h ; 83 c2 03 ; 0xf2929
+ mov al, byte [bp-014h] ; 8a 46 ec ; 0xf292c
+ out DX, AL ; ee ; 0xf292f
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf2930 ata.c:784
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2933
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2936
+ out DX, AL ; ee ; 0xf2939
+ mov al, byte [bp-023h] ; 8a 46 dd ; 0xf293a ata.c:785
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf293d
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2940
+ out DX, AL ; ee ; 0xf2943
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf2944 ata.c:786
+ je short 0294fh ; 74 05 ; 0xf2948
+ mov ax, 000b0h ; b8 b0 00 ; 0xf294a
+ jmp short 02952h ; eb 03 ; 0xf294d
+ mov ax, 000a0h ; b8 a0 00 ; 0xf294f
+ mov dl, byte [bp-018h] ; 8a 56 e8 ; 0xf2952
+ xor dh, dh ; 30 f6 ; 0xf2955
+ or ax, dx ; 09 d0 ; 0xf2957
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2959
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf295c
+ out DX, AL ; ee ; 0xf295f
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2960 ata.c:787
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2963
+ mov al, byte [bp-01eh] ; 8a 46 e2 ; 0xf2966
+ out DX, AL ; ee ; 0xf2969
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf296a ata.c:790
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf296d
+ in AL, DX ; ec ; 0xf2970
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2971
+ mov bl, al ; 88 c3 ; 0xf2973
+ test AL, strict byte 080h ; a8 80 ; 0xf2975 ata.c:791
+ jne short 0296ah ; 75 f1 ; 0xf2977
+ test AL, strict byte 001h ; a8 01 ; 0xf2979 ata.c:795
+ je short 0298ch ; 74 0f ; 0xf297b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf297d ata.c:798
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2980
+ mov AL, strict byte 008h ; b0 08 ; 0xf2983
+ out DX, AL ; ee ; 0xf2985
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2986 ata.c:799
+ jmp near 02a21h ; e9 95 00 ; 0xf2989
+ test bl, 008h ; f6 c3 08 ; 0xf298c ata.c:800
+ jne short 029a0h ; 75 0f ; 0xf298f
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2991 ata.c:803
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2994
+ mov AL, strict byte 008h ; b0 08 ; 0xf2997
+ out DX, AL ; ee ; 0xf2999
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf299a ata.c:804
+ jmp near 02a21h ; e9 81 00 ; 0xf299d
+ sti ; fb ; 0xf29a0 ata.c:809
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf29a1 ata.c:814
+ cmp ax, 0f800h ; 3d 00 f8 ; 0xf29a4
+ jc short 029bbh ; 72 12 ; 0xf29a7
+ mov dx, ax ; 89 c2 ; 0xf29a9 ata.c:815
+ sub dx, 00800h ; 81 ea 00 08 ; 0xf29ab
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf29af
+ add ax, 00080h ; 05 80 00 ; 0xf29b2
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf29b5
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf29b8
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29bb ata.c:822
+ mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf29be
+ mov si, word [bp-016h] ; 8b 76 ea ; 0xf29c1
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf29c4
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf29c7
+ mov word [bp-016h], si ; 89 76 ea ; 0xf29ca
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf29cd ata.c:824
+ inc word [es:di+018h] ; 26 ff 45 18 ; 0xf29d0
+ dec word [bp-01ah] ; ff 4e e6 ; 0xf29d4 ata.c:825
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf29d7 ata.c:827
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf29da
+ in AL, DX ; ec ; 0xf29dd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf29de
+ mov bl, al ; 88 c3 ; 0xf29e0
+ test AL, strict byte 080h ; a8 80 ; 0xf29e2 ata.c:828
+ jne short 029d7h ; 75 f1 ; 0xf29e4
+ cmp word [bp-01ah], strict byte 00000h ; 83 7e e6 00 ; 0xf29e6 ata.c:831
+ jne short 02a00h ; 75 14 ; 0xf29ea
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf29ec ata.c:832
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf29ee
+ je short 02a16h ; 74 24 ; 0xf29f0
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf29f2 ata.c:836
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf29f5
+ mov AL, strict byte 008h ; b0 08 ; 0xf29f8
+ out DX, AL ; ee ; 0xf29fa
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf29fb ata.c:837
+ jmp short 02a21h ; eb 21 ; 0xf29fe
+ mov al, bl ; 88 d8 ; 0xf2a00 ata.c:842
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2a02
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2a04
+ je short 029a1h ; 74 99 ; 0xf2a06
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a08 ata.c:846
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a0b
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a0e
+ out DX, AL ; ee ; 0xf2a10
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2a11 ata.c:847
+ jmp short 02a21h ; eb 0b ; 0xf2a14
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf2a16 ata.c:853
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2a19
+ mov AL, strict byte 008h ; b0 08 ; 0xf2a1c
+ out DX, AL ; ee ; 0xf2a1e
+ xor ax, ax ; 31 c0 ; 0xf2a1f ata.c:854
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2a21 ata.c:855
+ pop di ; 5f ; 0xf2a24
+ pop si ; 5e ; 0xf2a25
+ pop bp ; 5d ; 0xf2a26
+ retn ; c3 ; 0xf2a27
+ ; disGetNextSymbol 0xf2a28 LB 0x7520 -> off=0x0 cb=00000000000000c1 uValue=00000000000f1428 'ata_read_sectors'
+ata_read_sectors: ; 0xf2a28 LB 0xc1
+ push bp ; 55 ; 0xf2a28 ata.c:865
+ mov bp, sp ; 89 e5 ; 0xf2a29
+ push si ; 56 ; 0xf2a2b
+ push di ; 57 ; 0xf2a2c
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf2a2d
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf2a30
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf2a33 ata.c:871
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf2a36
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf2a3a ata.c:872
+ mov CL, strict byte 009h ; b1 09 ; 0xf2a3e
+ mov dx, bx ; 89 da ; 0xf2a40
+ sal dx, CL ; d3 e2 ; 0xf2a42
+ mov cx, dx ; 89 d1 ; 0xf2a44
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2a46 ata.c:874
+ je short 02a70h ; 74 23 ; 0xf2a4b
+ xor ah, ah ; 30 e4 ; 0xf2a4d ata.c:876
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf2a4f
+ imul di ; f7 ef ; 0xf2a52
+ mov dx, es ; 8c c2 ; 0xf2a54
+ mov [bp-00ah], es ; 8c 46 f6 ; 0xf2a56
+ mov di, si ; 89 f7 ; 0xf2a59
+ add di, ax ; 01 c7 ; 0xf2a5b
+ mov word [es:di+028h], cx ; 26 89 4d 28 ; 0xf2a5d
+ mov cx, bx ; 89 d9 ; 0xf2a61 ata.c:878
+ mov bx, 000c4h ; bb c4 00 ; 0xf2a63
+ mov ax, si ; 89 f0 ; 0xf2a66
+ call 01e38h ; e8 cd f3 ; 0xf2a68
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf2a6b ata.c:879
+ jmp short 02adah ; eb 6a ; 0xf2a6e ata.c:880
+ xor di, di ; 31 ff ; 0xf2a70 ata.c:882
+ mov word [bp-008h], di ; 89 7e f8 ; 0xf2a72
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf2a75
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf2a78
+ add dx, bx ; 01 da ; 0xf2a7b
+ mov word [bp-006h], dx ; 89 56 fa ; 0xf2a7d
+ adc di, word [es:si+002h] ; 26 13 7c 02 ; 0xf2a80
+ mov dx, word [es:si+004h] ; 26 8b 54 04 ; 0xf2a84
+ adc dx, word [bp-008h] ; 13 56 f8 ; 0xf2a88
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf2a8b
+ mov dx, word [es:si+006h] ; 26 8b 54 06 ; 0xf2a8e
+ adc dx, word [bp-00ah] ; 13 56 f6 ; 0xf2a92
+ test dx, dx ; 85 d2 ; 0xf2a95
+ jnbe short 02aabh ; 77 12 ; 0xf2a97
+ jne short 02ab9h ; 75 1e ; 0xf2a99
+ cmp word [bp-008h], strict byte 00000h ; 83 7e f8 00 ; 0xf2a9b
+ jnbe short 02aabh ; 77 0a ; 0xf2a9f
+ jne short 02ab9h ; 75 16 ; 0xf2aa1
+ cmp di, 01000h ; 81 ff 00 10 ; 0xf2aa3
+ jnbe short 02aabh ; 77 02 ; 0xf2aa7
+ jne short 02ab9h ; 75 0e ; 0xf2aa9
+ mov cx, bx ; 89 d9 ; 0xf2aab ata.c:884
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf2aad
+ mov ax, si ; 89 f0 ; 0xf2ab0
+ mov dx, es ; 8c c2 ; 0xf2ab2
+ call 01e38h ; e8 81 f3 ; 0xf2ab4
+ jmp short 02ae0h ; eb 27 ; 0xf2ab7 ata.c:885
+ xor ah, ah ; 30 e4 ; 0xf2ab9 ata.c:886
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf2abb
+ imul di ; f7 ef ; 0xf2abe
+ mov dx, es ; 8c c2 ; 0xf2ac0
+ mov [bp-006h], es ; 8c 46 fa ; 0xf2ac2
+ mov di, si ; 89 f7 ; 0xf2ac5
+ add di, ax ; 01 c7 ; 0xf2ac7
+ mov word [es:di+028h], cx ; 26 89 4d 28 ; 0xf2ac9
+ mov cx, bx ; 89 d9 ; 0xf2acd ata.c:888
+ mov bx, 000c4h ; bb c4 00 ; 0xf2acf
+ mov ax, si ; 89 f0 ; 0xf2ad2
+ call 01e38h ; e8 61 f3 ; 0xf2ad4
+ mov es, [bp-006h] ; 8e 46 fa ; 0xf2ad7 ata.c:889
+ mov word [es:di+028h], 00200h ; 26 c7 45 28 00 02 ; 0xf2ada
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2ae0 ata.c:893
+ pop di ; 5f ; 0xf2ae3
+ pop si ; 5e ; 0xf2ae4
+ pop bp ; 5d ; 0xf2ae5
+ retn 00004h ; c2 04 00 ; 0xf2ae6
+ ; disGetNextSymbol 0xf2ae9 LB 0x745f -> off=0x0 cb=000000000000005b uValue=00000000000f14e9 'ata_write_sectors'
+ata_write_sectors: ; 0xf2ae9 LB 0x5b
+ push bp ; 55 ; 0xf2ae9 ata.c:902
+ mov bp, sp ; 89 e5 ; 0xf2aea
+ push si ; 56 ; 0xf2aec
+ push di ; 57 ; 0xf2aed
+ push ax ; 50 ; 0xf2aee
+ les si, [bp+004h] ; c4 76 04 ; 0xf2aef
+ mov cx, word [es:si+00eh] ; 26 8b 4c 0e ; 0xf2af2 ata.c:906
+ cmp word [es:si+016h], strict byte 00000h ; 26 83 7c 16 00 ; 0xf2af6 ata.c:908
+ je short 02b09h ; 74 0c ; 0xf2afb
+ mov bx, strict word 00030h ; bb 30 00 ; 0xf2afd ata.c:910
+ mov ax, si ; 89 f0 ; 0xf2b00
+ mov dx, es ; 8c c2 ; 0xf2b02
+ call 0279ah ; e8 93 fc ; 0xf2b04
+ jmp short 02b3bh ; eb 32 ; 0xf2b07
+ xor ax, ax ; 31 c0 ; 0xf2b09 ata.c:913
+ xor bx, bx ; 31 db ; 0xf2b0b
+ xor dx, dx ; 31 d2 ; 0xf2b0d
+ mov di, word [es:si] ; 26 8b 3c ; 0xf2b0f
+ add di, cx ; 01 cf ; 0xf2b12
+ mov word [bp-006h], di ; 89 7e fa ; 0xf2b14
+ adc ax, word [es:si+002h] ; 26 13 44 02 ; 0xf2b17
+ adc bx, word [es:si+004h] ; 26 13 5c 04 ; 0xf2b1b
+ adc dx, word [es:si+006h] ; 26 13 54 06 ; 0xf2b1f
+ test dx, dx ; 85 d2 ; 0xf2b23
+ jnbe short 02b36h ; 77 0f ; 0xf2b25
+ jne short 02afdh ; 75 d4 ; 0xf2b27
+ test bx, bx ; 85 db ; 0xf2b29
+ jnbe short 02b36h ; 77 09 ; 0xf2b2b
+ jne short 02afdh ; 75 ce ; 0xf2b2d
+ cmp ax, 01000h ; 3d 00 10 ; 0xf2b2f
+ jnbe short 02b36h ; 77 02 ; 0xf2b32
+ jne short 02afdh ; 75 c7 ; 0xf2b34
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf2b36 ata.c:914
+ jmp short 02b00h ; eb c5 ; 0xf2b39
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2b3b ata.c:918
+ pop di ; 5f ; 0xf2b3e
+ pop si ; 5e ; 0xf2b3f
+ pop bp ; 5d ; 0xf2b40
+ retn 00004h ; c2 04 00 ; 0xf2b41
+ ; disGetNextSymbol 0xf2b44 LB 0x7404 -> off=0x0 cb=0000000000000295 uValue=00000000000f1544 'ata_cmd_packet'
+ata_cmd_packet: ; 0xf2b44 LB 0x295
+ push bp ; 55 ; 0xf2b44 ata.c:930
+ mov bp, sp ; 89 e5 ; 0xf2b45
+ push si ; 56 ; 0xf2b47
+ push di ; 57 ; 0xf2b48
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf2b49
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf2b4c
+ mov si, bx ; 89 de ; 0xf2b4f
+ mov di, cx ; 89 cf ; 0xf2b51
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2b53 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2b56
+ mov es, dx ; 8e c2 ; 0xf2b59
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf2b5b
+ mov word [bp-00ah], 00122h ; c7 46 f6 22 01 ; 0xf2b5e ata.c:49
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf2b63
+ mov dx, ax ; 89 c2 ; 0xf2b66 ata.c:942
+ shr dx, 1 ; d1 ea ; 0xf2b68
+ mov ah, dl ; 88 d4 ; 0xf2b6a
+ mov cl, al ; 88 c1 ; 0xf2b6c ata.c:943
+ and cl, 001h ; 80 e1 01 ; 0xf2b6e
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf2b71 ata.c:946
+ jne short 02b9ah ; 75 23 ; 0xf2b75
+ mov bx, 00da0h ; bb a0 0d ; 0xf2b77 ata.c:947
+ mov cx, ds ; 8c d9 ; 0xf2b7a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2b7c
+ call 018cch ; e8 4a ed ; 0xf2b7f
+ mov ax, 00221h ; b8 21 02 ; 0xf2b82
+ push ax ; 50 ; 0xf2b85
+ mov ax, 00230h ; b8 30 02 ; 0xf2b86
+ push ax ; 50 ; 0xf2b89
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2b8a
+ push ax ; 50 ; 0xf2b8d
+ call 0190fh ; e8 7e ed ; 0xf2b8e
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf2b91
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2b94 ata.c:948
+ jmp near 02dd0h ; e9 36 02 ; 0xf2b97
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf2b9a ata.c:952
+ jne short 02b94h ; 75 f4 ; 0xf2b9e
+ mov al, ah ; 88 e0 ; 0xf2ba0 ata.c:957
+ xor ah, ah ; 30 e4 ; 0xf2ba2
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2ba4
+ imul dx ; f7 ea ; 0xf2ba7
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2ba9
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2bac
+ add bx, ax ; 01 c3 ; 0xf2baf
+ mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf2bb1
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf2bb6
+ mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf2bb9 ata.c:958
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf2bbe
+ xor ax, ax ; 31 c0 ; 0xf2bc1 ata.c:960
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf2bc3
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf2bc6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf2bc9 ata.c:962
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf2bcc
+ jnc short 02bd6h ; 73 06 ; 0xf2bce
+ mov byte [bp-006h], 00ch ; c6 46 fa 0c ; 0xf2bd0 ata.c:963
+ jmp short 02bdch ; eb 06 ; 0xf2bd4
+ jbe short 02bdch ; 76 04 ; 0xf2bd6 ata.c:964
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf2bd8 ata.c:965
+ shr byte [bp-006h], 1 ; d0 6e fa ; 0xf2bdc ata.c:966
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2bdf ata.c:970
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2be2
+ mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00 ; 0xf2be5
+ mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00 ; 0xf2beb ata.c:971
+ mov word [es:bx+01ch], strict word 00000h ; 26 c7 47 1c 00 00 ; 0xf2bf1
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2bf7 ata.c:973
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2bfa
+ in AL, DX ; ec ; 0xf2bfd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2bfe
+ test AL, strict byte 080h ; a8 80 ; 0xf2c00 ata.c:974
+ je short 02c0ah ; 74 06 ; 0xf2c02
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf2c04 ata.c:975
+ jmp near 02dd0h ; e9 c6 01 ; 0xf2c07
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c0a ata.c:977
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c0d
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2c10
+ out DX, AL ; ee ; 0xf2c12
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c13 ata.c:981
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2c16
+ mov AL, strict byte 0f0h ; b0 f0 ; 0xf2c19
+ out DX, AL ; ee ; 0xf2c1b
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c1c ata.c:982
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2c1f
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf2c22
+ out DX, AL ; ee ; 0xf2c24
+ test cl, cl ; 84 c9 ; 0xf2c25 ata.c:983
+ je short 02c2eh ; 74 05 ; 0xf2c27
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2c29
+ jmp short 02c31h ; eb 03 ; 0xf2c2c
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2c2e
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c31
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c34
+ out DX, AL ; ee ; 0xf2c37
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c38 ata.c:984
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c3b
+ mov AL, strict byte 0a0h ; b0 a0 ; 0xf2c3e
+ out DX, AL ; ee ; 0xf2c40
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c41 ata.c:988
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c44
+ in AL, DX ; ec ; 0xf2c47
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c48
+ mov bl, al ; 88 c3 ; 0xf2c4a
+ test AL, strict byte 080h ; a8 80 ; 0xf2c4c ata.c:989
+ jne short 02c41h ; 75 f1 ; 0xf2c4e
+ test AL, strict byte 001h ; a8 01 ; 0xf2c50 ata.c:992
+ je short 02c63h ; 74 0f ; 0xf2c52
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c54 ata.c:995
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c57
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c5a
+ out DX, AL ; ee ; 0xf2c5c
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf2c5d ata.c:996
+ jmp near 02dd0h ; e9 6d 01 ; 0xf2c60
+ test bl, 008h ; f6 c3 08 ; 0xf2c63 ata.c:997
+ jne short 02c77h ; 75 0f ; 0xf2c66
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2c68 ata.c:1000
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2c6b
+ mov AL, strict byte 008h ; b0 08 ; 0xf2c6e
+ out DX, AL ; ee ; 0xf2c70
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf2c71 ata.c:1001
+ jmp near 02dd0h ; e9 59 01 ; 0xf2c74
+ sti ; fb ; 0xf2c77 ata.c:1004
+ mov CL, strict byte 004h ; b1 04 ; 0xf2c78 ata.c:1008
+ mov ax, si ; 89 f0 ; 0xf2c7a
+ shr ax, CL ; d3 e8 ; 0xf2c7c
+ add di, ax ; 01 c7 ; 0xf2c7e
+ and si, strict byte 0000fh ; 83 e6 0f ; 0xf2c80
+ mov cl, byte [bp-006h] ; 8a 4e fa ; 0xf2c83 ata.c:1013
+ xor ch, ch ; 30 ed ; 0xf2c86
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2c88
+ mov es, di ; 8e c7 ; 0xf2c8b
+ db 0f3h, 026h, 06fh
+ ; rep es outsw ; f3 26 6f ; 0xf2c8d
+ cmp byte [bp+00ah], 000h ; 80 7e 0a 00 ; 0xf2c90 ata.c:1015
+ jne short 02ca1h ; 75 0b ; 0xf2c94
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2c96 ata.c:1016
+ in AL, DX ; ec ; 0xf2c99
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2c9a
+ mov bl, al ; 88 c3 ; 0xf2c9c
+ jmp near 02db1h ; e9 10 01 ; 0xf2c9e ata.c:1018
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2ca1 ata.c:1022
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2ca4
+ in AL, DX ; ec ; 0xf2ca7
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2ca8
+ mov bl, al ; 88 c3 ; 0xf2caa
+ test AL, strict byte 080h ; a8 80 ; 0xf2cac ata.c:1023
+ jne short 02ca1h ; 75 f1 ; 0xf2cae
+ test AL, strict byte 088h ; a8 88 ; 0xf2cb0 ata.c:1028
+ je short 02d14h ; 74 60 ; 0xf2cb2
+ test AL, strict byte 001h ; a8 01 ; 0xf2cb4 ata.c:1031
+ je short 02cc3h ; 74 0b ; 0xf2cb6
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2cb8 ata.c:1034
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cbb
+ mov AL, strict byte 008h ; b0 08 ; 0xf2cbe
+ out DX, AL ; ee ; 0xf2cc0
+ jmp short 02c5dh ; eb 9a ; 0xf2cc1
+ mov al, bl ; 88 d8 ; 0xf2cc3 ata.c:1039
+ and AL, strict byte 0c9h ; 24 c9 ; 0xf2cc5
+ cmp AL, strict byte 048h ; 3c 48 ; 0xf2cc7
+ je short 02cd6h ; 74 0b ; 0xf2cc9
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2ccb ata.c:1043
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2cce
+ mov AL, strict byte 008h ; b0 08 ; 0xf2cd1
+ out DX, AL ; ee ; 0xf2cd3
+ jmp short 02c71h ; eb 9b ; 0xf2cd4
+ mov CL, strict byte 004h ; b1 04 ; 0xf2cd6 ata.c:1049
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf2cd8
+ shr ax, CL ; d3 e8 ; 0xf2cdb
+ add ax, word [bp+00eh] ; 03 46 0e ; 0xf2cdd
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf2ce0
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf2ce3
+ mov word [bp+00ch], dx ; 89 56 0c ; 0xf2ce6
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf2ce9
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2cec ata.c:1054
+ add dx, strict byte 00005h ; 83 c2 05 ; 0xf2cef
+ in AL, DX ; ec ; 0xf2cf2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2cf3
+ mov bh, al ; 88 c7 ; 0xf2cf5
+ xor bl, bl ; 30 db ; 0xf2cf7
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2cf9
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf2cfc
+ in AL, DX ; ec ; 0xf2cff
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2d00
+ add bx, ax ; 01 c3 ; 0xf2d02
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf2d04 ata.c:1057
+ cmp bx, ax ; 39 c3 ; 0xf2d07
+ jnc short 02d17h ; 73 0c ; 0xf2d09
+ mov cx, bx ; 89 d9 ; 0xf2d0b ata.c:1058
+ sub word [bp+004h], bx ; 29 5e 04 ; 0xf2d0d ata.c:1059
+ xor bx, bx ; 31 db ; 0xf2d10 ata.c:1060
+ jmp short 02d20h ; eb 0c ; 0xf2d12 ata.c:1062
+ jmp near 02db1h ; e9 9a 00 ; 0xf2d14
+ mov cx, ax ; 89 c1 ; 0xf2d17 ata.c:1063
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf2d19 ata.c:1064
+ sub bx, ax ; 29 c3 ; 0xf2d1e ata.c:1065
+ xor ax, ax ; 31 c0 ; 0xf2d20 ata.c:1068
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf2d22
+ jne short 02d3eh ; 75 16 ; 0xf2d26
+ cmp bx, word [bp+006h] ; 3b 5e 06 ; 0xf2d28
+ jbe short 02d3eh ; 76 11 ; 0xf2d2b
+ sub bx, word [bp+006h] ; 2b 5e 06 ; 0xf2d2d ata.c:1069
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf2d30
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf2d33 ata.c:1070
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf2d36 ata.c:1071
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf2d39
+ jmp short 02d47h ; eb 09 ; 0xf2d3c ata.c:1073
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf2d3e ata.c:1074
+ sub word [bp+006h], bx ; 29 5e 06 ; 0xf2d41 ata.c:1075
+ sbb word [bp+008h], ax ; 19 46 08 ; 0xf2d44
+ mov si, bx ; 89 de ; 0xf2d47 ata.c:1079
+ test cl, 003h ; f6 c1 03 ; 0xf2d49 ata.c:1086
+ test bl, 003h ; f6 c3 03 ; 0xf2d4c ata.c:1088
+ test byte [bp-012h], 003h ; f6 46 ee 03 ; 0xf2d4f ata.c:1090
+ test bl, 001h ; f6 c3 01 ; 0xf2d53 ata.c:1094
+ je short 02d68h ; 74 10 ; 0xf2d56
+ inc bx ; 43 ; 0xf2d58 ata.c:1095
+ cmp word [bp-012h], strict byte 00000h ; 83 7e ee 00 ; 0xf2d59 ata.c:1096
+ jbe short 02d68h ; 76 09 ; 0xf2d5d
+ test byte [bp-012h], 001h ; f6 46 ee 01 ; 0xf2d5f
+ je short 02d68h ; 74 03 ; 0xf2d63
+ dec word [bp-012h] ; ff 4e ee ; 0xf2d65 ata.c:1097
+ shr bx, 1 ; d1 eb ; 0xf2d68 ata.c:1109
+ shr cx, 1 ; d1 e9 ; 0xf2d6a ata.c:1110
+ shr word [bp-012h], 1 ; d1 6e ee ; 0xf2d6c ata.c:1111
+ test cx, cx ; 85 c9 ; 0xf2d6f ata.c:1124
+ je short 02d79h ; 74 06 ; 0xf2d71
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2d73 ata.c:1125
+ in ax, DX ; ed ; 0xf2d76
+ loop 02d76h ; e2 fd ; 0xf2d77
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf2d79 ata.c:1126
+ mov cx, bx ; 89 d9 ; 0xf2d7c
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf2d7e
+ rep insw ; f3 6d ; 0xf2d81
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf2d83 ata.c:1127
+ test ax, ax ; 85 c0 ; 0xf2d86
+ je short 02d8fh ; 74 05 ; 0xf2d88
+ mov cx, ax ; 89 c1 ; 0xf2d8a ata.c:1128
+ in ax, DX ; ed ; 0xf2d8c
+ loop 02d8ch ; e2 fd ; 0xf2d8d
+ add word [bp+00ch], si ; 01 76 0c ; 0xf2d8f ata.c:1133
+ xor ax, ax ; 31 c0 ; 0xf2d92 ata.c:1136
+ add word [bp-00eh], si ; 01 76 f2 ; 0xf2d94
+ adc word [bp-00ch], ax ; 11 46 f4 ; 0xf2d97
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf2d9a ata.c:1137
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf2d9d
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf2da0
+ mov word [es:bx+01ah], ax ; 26 89 47 1a ; 0xf2da3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf2da7
+ mov word [es:bx+01ch], ax ; 26 89 47 1c ; 0xf2daa
+ jmp near 02ca1h ; e9 f0 fe ; 0xf2dae ata.c:1138
+ mov al, bl ; 88 d8 ; 0xf2db1 ata.c:1142
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2db3
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2db5
+ je short 02dc5h ; 74 0c ; 0xf2db7
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2db9 ata.c:1146
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dbc
+ mov AL, strict byte 008h ; b0 08 ; 0xf2dbf
+ out DX, AL ; ee ; 0xf2dc1
+ jmp near 02c71h ; e9 ac fe ; 0xf2dc2
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf2dc5 ata.c:1151
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2dc8
+ mov AL, strict byte 008h ; b0 08 ; 0xf2dcb
+ out DX, AL ; ee ; 0xf2dcd
+ xor ax, ax ; 31 c0 ; 0xf2dce ata.c:1152
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf2dd0 ata.c:1153
+ pop di ; 5f ; 0xf2dd3
+ pop si ; 5e ; 0xf2dd4
+ pop bp ; 5d ; 0xf2dd5
+ retn 0000ch ; c2 0c 00 ; 0xf2dd6
+ ; disGetNextSymbol 0xf2dd9 LB 0x716f -> off=0x0 cb=0000000000000083 uValue=00000000000f17d9 'ata_soft_reset'
+ata_soft_reset: ; 0xf2dd9 LB 0x83
+ push bp ; 55 ; 0xf2dd9 ata.c:1161
+ mov bp, sp ; 89 e5 ; 0xf2dda
+ push bx ; 53 ; 0xf2ddc
+ push cx ; 51 ; 0xf2ddd
+ push dx ; 52 ; 0xf2dde
+ push ax ; 50 ; 0xf2ddf
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf2de0 ata.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2de3
+ mov es, dx ; 8e c2 ; 0xf2de6
+ mov es, [es:bx] ; 26 8e 07 ; 0xf2de8
+ mov dx, ax ; 89 c2 ; 0xf2deb ata.c:1170
+ shr dx, 1 ; d1 ea ; 0xf2ded
+ and AL, strict byte 001h ; 24 01 ; 0xf2def ata.c:1171
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2df1
+ mov al, dl ; 88 d0 ; 0xf2df4 ata.c:1173
+ xor ah, ah ; 30 e4 ; 0xf2df6
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf2df8
+ imul dx ; f7 ea ; 0xf2dfb
+ mov bx, ax ; 89 c3 ; 0xf2dfd
+ add bx, 00122h ; 81 c3 22 01 ; 0xf2dff
+ mov cx, word [es:bx+00206h] ; 26 8b 8f 06 02 ; 0xf2e03
+ mov bx, word [es:bx+00208h] ; 26 8b 9f 08 02 ; 0xf2e08 ata.c:1174
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e0d ata.c:1177
+ mov AL, strict byte 00ah ; b0 0a ; 0xf2e10
+ out DX, AL ; ee ; 0xf2e12
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2e13 ata.c:1178
+ je short 02e1eh ; 74 05 ; 0xf2e17
+ mov ax, 000b0h ; b8 b0 00 ; 0xf2e19
+ jmp short 02e21h ; eb 03 ; 0xf2e1c
+ mov ax, 000a0h ; b8 a0 00 ; 0xf2e1e
+ mov dx, cx ; 89 ca ; 0xf2e21
+ add dx, strict byte 00006h ; 83 c2 06 ; 0xf2e23
+ out DX, AL ; ee ; 0xf2e26
+ mov dx, cx ; 89 ca ; 0xf2e27 ata.c:1179
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e29
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e2c
+ out DX, AL ; ee ; 0xf2e2e
+ mov dx, cx ; 89 ca ; 0xf2e2f ata.c:1183
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf2e31
+ in AL, DX ; ec ; 0xf2e34
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2e35
+ test AL, strict byte 080h ; a8 80 ; 0xf2e37 ata.c:1184
+ jne short 02e2fh ; 75 f4 ; 0xf2e39
+ and AL, strict byte 0e9h ; 24 e9 ; 0xf2e3b ata.c:1188
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf2e3d
+ je short 02e4ch ; 74 0b ; 0xf2e3f
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e41 ata.c:1192
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e44
+ out DX, AL ; ee ; 0xf2e46
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf2e47 ata.c:1193
+ jmp short 02e54h ; eb 08 ; 0xf2e4a
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf2e4c ata.c:1197
+ mov AL, strict byte 008h ; b0 08 ; 0xf2e4f
+ out DX, AL ; ee ; 0xf2e51
+ xor ax, ax ; 31 c0 ; 0xf2e52 ata.c:1198
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2e54 ata.c:1199
+ pop dx ; 5a ; 0xf2e57
+ pop cx ; 59 ; 0xf2e58
+ pop bx ; 5b ; 0xf2e59
+ pop bp ; 5d ; 0xf2e5a
+ retn ; c3 ; 0xf2e5b
+ ; disGetNextSymbol 0xf2e5c LB 0x70ec -> off=0x0 cb=000000000000002c uValue=00000000000f185c 'set_diskette_current_cyl'
+set_diskette_current_cyl: ; 0xf2e5c LB 0x2c
+ push bp ; 55 ; 0xf2e5c floppy.c:71
+ mov bp, sp ; 89 e5 ; 0xf2e5d
+ push bx ; 53 ; 0xf2e5f
+ mov bl, al ; 88 c3 ; 0xf2e60
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf2e62 floppy.c:73
+ jbe short 02e74h ; 76 0e ; 0xf2e64
+ mov ax, 00250h ; b8 50 02 ; 0xf2e66 floppy.c:74
+ push ax ; 50 ; 0xf2e69
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf2e6a
+ push ax ; 50 ; 0xf2e6d
+ call 0190fh ; e8 9e ea ; 0xf2e6e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf2e71
+ xor bh, bh ; 30 ff ; 0xf2e74 floppy.c:75
+ add bx, 00094h ; 81 c3 94 00 ; 0xf2e76
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e7a floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf2e7d
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf2e7f
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2e82 floppy.c:76
+ pop bx ; 5b ; 0xf2e85
+ pop bp ; 5d ; 0xf2e86
+ retn ; c3 ; 0xf2e87
+ ; disGetNextSymbol 0xf2e88 LB 0x70c0 -> off=0x0 cb=0000000000000023 uValue=00000000000f1888 'floppy_wait_for_interrupt'
+floppy_wait_for_interrupt: ; 0xf2e88 LB 0x23
+ push bp ; 55 ; 0xf2e88 floppy.c:96
+ mov bp, sp ; 89 e5 ; 0xf2e89
+ push bx ; 53 ; 0xf2e8b
+ cli ; fa ; 0xf2e8c floppy.c:98
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2e8d floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2e90
+ mov es, ax ; 8e c0 ; 0xf2e93
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2e95
+ test AL, strict byte 080h ; a8 80 ; 0xf2e98 floppy.c:102
+ je short 02ea0h ; 74 04 ; 0xf2e9a
+ and AL, strict byte 080h ; 24 80 ; 0xf2e9c floppy.c:103
+ jmp short 02ea5h ; eb 05 ; 0xf2e9e
+ sti ; fb ; 0xf2ea0 floppy.c:104
+ hlt ; f4 ; 0xf2ea1
+ cli ; fa ; 0xf2ea2
+ jmp short 02e8dh ; eb e8 ; 0xf2ea3 floppy.c:105
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2ea5 floppy.c:106
+ pop bx ; 5b ; 0xf2ea8
+ pop bp ; 5d ; 0xf2ea9
+ retn ; c3 ; 0xf2eaa
+ ; disGetNextSymbol 0xf2eab LB 0x709d -> off=0x0 cb=0000000000000038 uValue=00000000000f18ab 'floppy_wait_for_interrupt_or_timeout'
+floppy_wait_for_interrupt_or_timeout: ; 0xf2eab LB 0x38
+ push bp ; 55 ; 0xf2eab floppy.c:116
+ mov bp, sp ; 89 e5 ; 0xf2eac
+ push bx ; 53 ; 0xf2eae
+ cli ; fa ; 0xf2eaf floppy.c:118
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2eb0 floppy.c:38
+ mov es, bx ; 8e c3 ; 0xf2eb3
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2eb5
+ test al, al ; 84 c0 ; 0xf2eb8 floppy.c:122
+ jne short 02ebfh ; 75 03 ; 0xf2eba
+ sti ; fb ; 0xf2ebc floppy.c:123
+ jmp short 02eddh ; eb 1e ; 0xf2ebd floppy.c:124
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2ebf floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2ec2
+ mov es, ax ; 8e c0 ; 0xf2ec5
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2ec7
+ test AL, strict byte 080h ; a8 80 ; 0xf2eca floppy.c:128
+ je short 02ed8h ; 74 0a ; 0xf2ecc
+ mov ah, al ; 88 c4 ; 0xf2ece floppy.c:129
+ and ah, 07fh ; 80 e4 7f ; 0xf2ed0
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf2ed3 floppy.c:43
+ jmp short 02eddh ; eb 05 ; 0xf2ed6 floppy.c:130
+ sti ; fb ; 0xf2ed8 floppy.c:132
+ hlt ; f4 ; 0xf2ed9
+ cli ; fa ; 0xf2eda
+ jmp short 02eb0h ; eb d3 ; 0xf2edb floppy.c:133
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf2edd floppy.c:134
+ pop bx ; 5b ; 0xf2ee0
+ pop bp ; 5d ; 0xf2ee1
+ retn ; c3 ; 0xf2ee2
+ ; disGetNextSymbol 0xf2ee3 LB 0x7065 -> off=0x0 cb=000000000000003f uValue=00000000000f18e3 'floppy_reset_controller'
+floppy_reset_controller: ; 0xf2ee3 LB 0x3f
+ push bp ; 55 ; 0xf2ee3 floppy.c:138
+ mov bp, sp ; 89 e5 ; 0xf2ee4
+ push bx ; 53 ; 0xf2ee6
+ push cx ; 51 ; 0xf2ee7
+ push dx ; 52 ; 0xf2ee8
+ mov cx, ax ; 89 c1 ; 0xf2ee9
+ mov dx, 003f2h ; ba f2 03 ; 0xf2eeb floppy.c:143
+ in AL, DX ; ec ; 0xf2eee
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2eef
+ mov bx, ax ; 89 c3 ; 0xf2ef1
+ and AL, strict byte 0fbh ; 24 fb ; 0xf2ef3 floppy.c:144
+ out DX, AL ; ee ; 0xf2ef5
+ mov al, bl ; 88 d8 ; 0xf2ef6 floppy.c:145
+ or AL, strict byte 004h ; 0c 04 ; 0xf2ef8
+ out DX, AL ; ee ; 0xf2efa
+ mov dx, 003f4h ; ba f4 03 ; 0xf2efb floppy.c:149
+ in AL, DX ; ec ; 0xf2efe
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2eff
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2f01 floppy.c:150
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2f03
+ jne short 02efbh ; 75 f4 ; 0xf2f05
+ mov bx, cx ; 89 cb ; 0xf2f07 floppy.c:153
+ add bx, 00090h ; 81 c3 90 00 ; 0xf2f09
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f0d floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2f10
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f12
+ and AL, strict byte 0efh ; 24 ef ; 0xf2f15 floppy.c:154
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f17 floppy.c:43
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f1a floppy.c:157
+ pop dx ; 5a ; 0xf2f1d
+ pop cx ; 59 ; 0xf2f1e
+ pop bx ; 5b ; 0xf2f1f
+ pop bp ; 5d ; 0xf2f20
+ retn ; c3 ; 0xf2f21
+ ; disGetNextSymbol 0xf2f22 LB 0x7026 -> off=0x0 cb=0000000000000075 uValue=00000000000f1922 'floppy_prepare_controller'
+floppy_prepare_controller: ; 0xf2f22 LB 0x75
+ push bp ; 55 ; 0xf2f22 floppy.c:159
+ mov bp, sp ; 89 e5 ; 0xf2f23
+ push bx ; 53 ; 0xf2f25
+ push cx ; 51 ; 0xf2f26
+ push dx ; 52 ; 0xf2f27
+ push ax ; 50 ; 0xf2f28
+ mov cx, ax ; 89 c1 ; 0xf2f29
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f2b floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2f2e
+ mov es, ax ; 8e c0 ; 0xf2f31
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f33
+ and AL, strict byte 07fh ; 24 7f ; 0xf2f36 floppy.c:165
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f38 floppy.c:43
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f3b floppy.c:169
+ in AL, DX ; ec ; 0xf2f3e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f3f
+ and AL, strict byte 004h ; 24 04 ; 0xf2f41
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf2f43
+ test cx, cx ; 85 c9 ; 0xf2f46 floppy.c:170
+ je short 02f4eh ; 74 04 ; 0xf2f48
+ mov AL, strict byte 020h ; b0 20 ; 0xf2f4a floppy.c:171
+ jmp short 02f50h ; eb 02 ; 0xf2f4c floppy.c:172
+ mov AL, strict byte 010h ; b0 10 ; 0xf2f4e floppy.c:173
+ or AL, strict byte 00ch ; 0c 0c ; 0xf2f50 floppy.c:174
+ or al, cl ; 08 c8 ; 0xf2f52 floppy.c:175
+ mov dx, 003f2h ; ba f2 03 ; 0xf2f54 floppy.c:176
+ out DX, AL ; ee ; 0xf2f57
+ mov bx, strict word 00040h ; bb 40 00 ; 0xf2f58 floppy.c:43
+ mov es, bx ; 8e c3 ; 0xf2f5b
+ mov byte [es:bx], 025h ; 26 c6 07 25 ; 0xf2f5d
+ mov bx, 0008bh ; bb 8b 00 ; 0xf2f61 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2f64
+ mov CL, strict byte 006h ; b1 06 ; 0xf2f67 floppy.c:183
+ shr al, CL ; d2 e8 ; 0xf2f69
+ mov dx, 003f7h ; ba f7 03 ; 0xf2f6b floppy.c:184
+ out DX, AL ; ee ; 0xf2f6e
+ mov dx, 003f4h ; ba f4 03 ; 0xf2f6f floppy.c:188
+ in AL, DX ; ec ; 0xf2f72
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf2f73
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf2f75 floppy.c:189
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf2f77
+ jne short 02f6fh ; 75 f4 ; 0xf2f79
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf2f7b floppy.c:191
+ jne short 02f8fh ; 75 0e ; 0xf2f7f
+ call 02e88h ; e8 04 ff ; 0xf2f81 floppy.c:202
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f84 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2f87
+ mov es, dx ; 8e c2 ; 0xf2f8a
+ mov byte [es:bx], al ; 26 88 07 ; 0xf2f8c
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf2f8f floppy.c:206
+ pop dx ; 5a ; 0xf2f92
+ pop cx ; 59 ; 0xf2f93
+ pop bx ; 5b ; 0xf2f94
+ pop bp ; 5d ; 0xf2f95
+ retn ; c3 ; 0xf2f96
+ ; disGetNextSymbol 0xf2f97 LB 0x6fb1 -> off=0x0 cb=000000000000004c uValue=00000000000f1997 'floppy_media_known'
+floppy_media_known: ; 0xf2f97 LB 0x4c
+ push bx ; 53 ; 0xf2f97 floppy.c:208
+ push cx ; 51 ; 0xf2f98
+ push dx ; 52 ; 0xf2f99
+ push bp ; 55 ; 0xf2f9a
+ mov bp, sp ; 89 e5 ; 0xf2f9b
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xf2f9d floppy.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf2fa0
+ mov es, dx ; 8e c2 ; 0xf2fa3
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf2fa5
+ mov bl, bh ; 88 fb ; 0xf2fa8 floppy.c:39
+ test ax, ax ; 85 c0 ; 0xf2faa floppy.c:214
+ je short 02fb0h ; 74 02 ; 0xf2fac
+ shr bl, 1 ; d0 eb ; 0xf2fae floppy.c:215
+ and bl, 001h ; 80 e3 01 ; 0xf2fb0 floppy.c:216
+ jne short 02fb9h ; 75 04 ; 0xf2fb3 floppy.c:217
+ xor bh, bh ; 30 ff ; 0xf2fb5 floppy.c:218
+ jmp short 02fdch ; eb 23 ; 0xf2fb7
+ mov bx, 00090h ; bb 90 00 ; 0xf2fb9 floppy.c:220
+ test ax, ax ; 85 c0 ; 0xf2fbc floppy.c:221
+ je short 02fc3h ; 74 03 ; 0xf2fbe
+ mov bx, 00091h ; bb 91 00 ; 0xf2fc0 floppy.c:222
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf2fc3 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf2fc6
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf2fc8
+ xor ah, ah ; 30 e4 ; 0xf2fcb floppy.c:225
+ mov CL, strict byte 004h ; b1 04 ; 0xf2fcd
+ sar ax, CL ; d3 f8 ; 0xf2fcf
+ and AL, strict byte 001h ; 24 01 ; 0xf2fd1
+ jne short 02fd9h ; 75 04 ; 0xf2fd3 floppy.c:226
+ xor bx, bx ; 31 db ; 0xf2fd5 floppy.c:227
+ jmp short 02fdch ; eb 03 ; 0xf2fd7
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf2fd9 floppy.c:230
+ mov ax, bx ; 89 d8 ; 0xf2fdc floppy.c:231
+ pop bp ; 5d ; 0xf2fde
+ pop dx ; 5a ; 0xf2fdf
+ pop cx ; 59 ; 0xf2fe0
+ pop bx ; 5b ; 0xf2fe1
+ retn ; c3 ; 0xf2fe2
+ ; disGetNextSymbol 0xf2fe3 LB 0x6f65 -> off=0x0 cb=0000000000000052 uValue=00000000000f19e3 'floppy_read_id'
+floppy_read_id: ; 0xf2fe3 LB 0x52
+ push bp ; 55 ; 0xf2fe3 floppy.c:233
+ mov bp, sp ; 89 e5 ; 0xf2fe4
+ push bx ; 53 ; 0xf2fe6
+ push dx ; 52 ; 0xf2fe7
+ push si ; 56 ; 0xf2fe8
+ mov bx, ax ; 89 c3 ; 0xf2fe9
+ call 02f22h ; e8 34 ff ; 0xf2feb floppy.c:240
+ mov AL, strict byte 04ah ; b0 4a ; 0xf2fee floppy.c:243
+ mov dx, 003f5h ; ba f5 03 ; 0xf2ff0
+ out DX, AL ; ee ; 0xf2ff3
+ mov al, bl ; 88 d8 ; 0xf2ff4 floppy.c:244
+ out DX, AL ; ee ; 0xf2ff6
+ call 02e88h ; e8 8e fe ; 0xf2ff7 floppy.c:259
+ xor bx, bx ; 31 db ; 0xf2ffa floppy.c:263
+ jmp short 03003h ; eb 05 ; 0xf2ffc
+ cmp bx, strict byte 00007h ; 83 fb 07 ; 0xf2ffe
+ jnl short 03017h ; 7d 14 ; 0xf3001
+ mov dx, 003f5h ; ba f5 03 ; 0xf3003 floppy.c:264
+ in AL, DX ; ec ; 0xf3006
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3007
+ lea si, [bx+042h] ; 8d 77 42 ; 0xf3009
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf300c floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf300f
+ mov byte [es:si], al ; 26 88 04 ; 0xf3011
+ inc bx ; 43 ; 0xf3014 floppy.c:264
+ jmp short 02ffeh ; eb e7 ; 0xf3015
+ mov bx, strict word 00042h ; bb 42 00 ; 0xf3017 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf301a
+ mov es, ax ; 8e c0 ; 0xf301d
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf301f
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf3022 floppy.c:39
+ je short 0302ah ; 74 04 ; 0xf3024
+ xor ax, ax ; 31 c0 ; 0xf3026 floppy.c:267
+ jmp short 0302dh ; eb 03 ; 0xf3028
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf302a floppy.c:269
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf302d floppy.c:270
+ pop si ; 5e ; 0xf3030
+ pop dx ; 5a ; 0xf3031
+ pop bx ; 5b ; 0xf3032
+ pop bp ; 5d ; 0xf3033
+ retn ; c3 ; 0xf3034
+ ; disGetNextSymbol 0xf3035 LB 0x6f13 -> off=0x0 cb=0000000000000041 uValue=00000000000f1a35 'floppy_drive_recal'
+floppy_drive_recal: ; 0xf3035 LB 0x41
+ push bp ; 55 ; 0xf3035 floppy.c:272
+ mov bp, sp ; 89 e5 ; 0xf3036
+ push bx ; 53 ; 0xf3038
+ push dx ; 52 ; 0xf3039
+ push si ; 56 ; 0xf303a
+ mov bx, ax ; 89 c3 ; 0xf303b
+ call 02f22h ; e8 e2 fe ; 0xf303d floppy.c:277
+ mov AL, strict byte 007h ; b0 07 ; 0xf3040 floppy.c:280
+ mov dx, 003f5h ; ba f5 03 ; 0xf3042
+ out DX, AL ; ee ; 0xf3045
+ mov al, bl ; 88 d8 ; 0xf3046 floppy.c:281
+ out DX, AL ; ee ; 0xf3048
+ call 02e88h ; e8 3c fe ; 0xf3049 floppy.c:300
+ test bx, bx ; 85 db ; 0xf304c floppy.c:304
+ je short 03057h ; 74 07 ; 0xf304e
+ or AL, strict byte 002h ; 0c 02 ; 0xf3050 floppy.c:305
+ mov bx, 00095h ; bb 95 00 ; 0xf3052 floppy.c:306
+ jmp short 0305ch ; eb 05 ; 0xf3055 floppy.c:307
+ or AL, strict byte 001h ; 0c 01 ; 0xf3057 floppy.c:308
+ mov bx, 00094h ; bb 94 00 ; 0xf3059 floppy.c:309
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf305c floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf305f
+ mov es, dx ; 8e c2 ; 0xf3062
+ mov byte [es:si], al ; 26 88 04 ; 0xf3064
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3067 floppy.c:43
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf306b floppy.c:315
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf306e
+ pop si ; 5e ; 0xf3071
+ pop dx ; 5a ; 0xf3072
+ pop bx ; 5b ; 0xf3073
+ pop bp ; 5d ; 0xf3074
+ retn ; c3 ; 0xf3075
+ ; disGetNextSymbol 0xf3076 LB 0x6ed2 -> off=0x0 cb=00000000000000e7 uValue=00000000000f1a76 'floppy_media_sense'
+floppy_media_sense: ; 0xf3076 LB 0xe7
+ push bp ; 55 ; 0xf3076 floppy.c:318
+ mov bp, sp ; 89 e5 ; 0xf3077
+ push bx ; 53 ; 0xf3079
+ push cx ; 51 ; 0xf307a
+ push dx ; 52 ; 0xf307b
+ push si ; 56 ; 0xf307c
+ push di ; 57 ; 0xf307d
+ mov si, ax ; 89 c6 ; 0xf307e
+ call 03035h ; e8 b2 ff ; 0xf3080 floppy.c:324
+ test ax, ax ; 85 c0 ; 0xf3083
+ jne short 0308ch ; 75 05 ; 0xf3085
+ xor dx, dx ; 31 d2 ; 0xf3087 floppy.c:325
+ jmp near 03151h ; e9 c5 00 ; 0xf3089
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf308c floppy.c:360
+ call 01652h ; e8 c0 e5 ; 0xf308f
+ test si, si ; 85 f6 ; 0xf3092 floppy.c:361
+ jne short 0309eh ; 75 08 ; 0xf3094
+ mov CL, strict byte 004h ; b1 04 ; 0xf3096 floppy.c:362
+ mov dl, al ; 88 c2 ; 0xf3098
+ shr dl, CL ; d2 ea ; 0xf309a
+ jmp short 030a3h ; eb 05 ; 0xf309c floppy.c:363
+ mov dl, al ; 88 c2 ; 0xf309e floppy.c:364
+ and dl, 00fh ; 80 e2 0f ; 0xf30a0
+ cmp dl, 001h ; 80 fa 01 ; 0xf30a3 floppy.c:365
+ jne short 030b1h ; 75 09 ; 0xf30a6
+ xor dl, dl ; 30 d2 ; 0xf30a8 floppy.c:367
+ mov DH, strict byte 015h ; b6 15 ; 0xf30aa floppy.c:368
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf30ac floppy.c:369
+ jmp short 030efh ; eb 3e ; 0xf30af floppy.c:371
+ cmp dl, 002h ; 80 fa 02 ; 0xf30b1
+ jne short 030bch ; 75 06 ; 0xf30b4
+ xor dl, dl ; 30 d2 ; 0xf30b6 floppy.c:373
+ mov DH, strict byte 035h ; b6 35 ; 0xf30b8 floppy.c:374
+ jmp short 030ach ; eb f0 ; 0xf30ba
+ cmp dl, 003h ; 80 fa 03 ; 0xf30bc floppy.c:377
+ jne short 030c7h ; 75 06 ; 0xf30bf
+ xor dl, dl ; 30 d2 ; 0xf30c1 floppy.c:379
+ mov DH, strict byte 017h ; b6 17 ; 0xf30c3 floppy.c:380
+ jmp short 030ach ; eb e5 ; 0xf30c5
+ cmp dl, 004h ; 80 fa 04 ; 0xf30c7 floppy.c:383
+ jne short 030d2h ; 75 06 ; 0xf30ca
+ xor dl, dl ; 30 d2 ; 0xf30cc floppy.c:385
+ mov DH, strict byte 017h ; b6 17 ; 0xf30ce floppy.c:386
+ jmp short 030ach ; eb da ; 0xf30d0
+ cmp dl, 005h ; 80 fa 05 ; 0xf30d2 floppy.c:389
+ jne short 030ddh ; 75 06 ; 0xf30d5
+ mov DL, strict byte 0cch ; b2 cc ; 0xf30d7 floppy.c:391
+ mov DH, strict byte 0d7h ; b6 d7 ; 0xf30d9 floppy.c:392
+ jmp short 030ach ; eb cf ; 0xf30db
+ cmp dl, 00eh ; 80 fa 0e ; 0xf30dd floppy.c:396
+ je short 030e7h ; 74 05 ; 0xf30e0
+ cmp dl, 00fh ; 80 fa 0f ; 0xf30e2
+ jne short 030e9h ; 75 02 ; 0xf30e5
+ jmp short 030d7h ; eb ee ; 0xf30e7
+ xor dl, dl ; 30 d2 ; 0xf30e9 floppy.c:404
+ xor dh, dh ; 30 f6 ; 0xf30eb floppy.c:405
+ xor bx, bx ; 31 db ; 0xf30ed floppy.c:406
+ mov di, 0008bh ; bf 8b 00 ; 0xf30ef floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf30f2
+ mov es, ax ; 8e c0 ; 0xf30f5
+ mov byte [es:di], dl ; 26 88 15 ; 0xf30f7
+ mov ax, si ; 89 f0 ; 0xf30fa floppy.c:410
+ call 02fe3h ; e8 e4 fe ; 0xf30fc
+ test ax, ax ; 85 c0 ; 0xf30ff
+ jne short 03135h ; 75 32 ; 0xf3101
+ mov al, dl ; 88 d0 ; 0xf3103 floppy.c:411
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3105
+ cmp AL, strict byte 080h ; 3c 80 ; 0xf3107
+ je short 03135h ; 74 2a ; 0xf3109
+ mov al, dl ; 88 d0 ; 0xf310b floppy.c:415
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf310d
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf310f
+ je short 03122h ; 74 0f ; 0xf3111
+ mov ah, dl ; 88 d4 ; 0xf3113
+ and ah, 03fh ; 80 e4 3f ; 0xf3115
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf3118
+ je short 0312eh ; 74 12 ; 0xf311a
+ test al, al ; 84 c0 ; 0xf311c
+ je short 03127h ; 74 07 ; 0xf311e
+ jmp short 030efh ; eb cd ; 0xf3120
+ and dl, 03fh ; 80 e2 3f ; 0xf3122 floppy.c:417
+ jmp short 030efh ; eb c8 ; 0xf3125 floppy.c:418
+ mov dl, ah ; 88 e2 ; 0xf3127 floppy.c:420
+ or dl, 040h ; 80 ca 40 ; 0xf3129
+ jmp short 030efh ; eb c1 ; 0xf312c floppy.c:421
+ mov dl, ah ; 88 e2 ; 0xf312e floppy.c:423
+ or dl, 080h ; 80 ca 80 ; 0xf3130
+ jmp short 030efh ; eb ba ; 0xf3133 floppy.c:427
+ test si, si ; 85 f6 ; 0xf3135 floppy.c:429
+ jne short 0313eh ; 75 05 ; 0xf3137
+ mov si, 00090h ; be 90 00 ; 0xf3139 floppy.c:430
+ jmp short 03141h ; eb 03 ; 0xf313c floppy.c:431
+ mov si, 00091h ; be 91 00 ; 0xf313e floppy.c:432
+ mov di, 0008bh ; bf 8b 00 ; 0xf3141 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3144
+ mov es, ax ; 8e c0 ; 0xf3147
+ mov byte [es:di], dl ; 26 88 15 ; 0xf3149
+ mov byte [es:si], dh ; 26 88 34 ; 0xf314c floppy.c:43
+ mov dx, bx ; 89 da ; 0xf314f floppy.c:436
+ mov ax, dx ; 89 d0 ; 0xf3151 floppy.c:437
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf3153
+ pop di ; 5f ; 0xf3156
+ pop si ; 5e ; 0xf3157
+ pop dx ; 5a ; 0xf3158
+ pop cx ; 59 ; 0xf3159
+ pop bx ; 5b ; 0xf315a
+ pop bp ; 5d ; 0xf315b
+ retn ; c3 ; 0xf315c
+ ; disGetNextSymbol 0xf315d LB 0x6deb -> off=0x0 cb=000000000000002b uValue=00000000000f1b5d 'floppy_drive_exists'
+floppy_drive_exists: ; 0xf315d LB 0x2b
+ push bp ; 55 ; 0xf315d floppy.c:440
+ mov bp, sp ; 89 e5 ; 0xf315e
+ push cx ; 51 ; 0xf3160
+ push dx ; 52 ; 0xf3161
+ mov dx, ax ; 89 c2 ; 0xf3162
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3164 floppy.c:446
+ call 01652h ; e8 e8 e4 ; 0xf3167
+ test dx, dx ; 85 d2 ; 0xf316a floppy.c:447
+ jne short 03174h ; 75 06 ; 0xf316c
+ mov CL, strict byte 004h ; b1 04 ; 0xf316e floppy.c:448
+ shr al, CL ; d2 e8 ; 0xf3170
+ jmp short 03176h ; eb 02 ; 0xf3172 floppy.c:449
+ and AL, strict byte 00fh ; 24 0f ; 0xf3174 floppy.c:450
+ test al, al ; 84 c0 ; 0xf3176 floppy.c:451
+ je short 0317fh ; 74 05 ; 0xf3178
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf317a
+ jmp short 03181h ; eb 02 ; 0xf317d
+ xor ah, ah ; 30 e4 ; 0xf317f
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3181 floppy.c:452
+ pop dx ; 5a ; 0xf3184
+ pop cx ; 59 ; 0xf3185
+ pop bp ; 5d ; 0xf3186
+ retn ; c3 ; 0xf3187
+ ; disGetNextSymbol 0xf3188 LB 0x6dc0 -> off=0x23 cb=00000000000009fd uValue=00000000000f1bab 'int13_diskette_function'
+ db 018h, 017h, 016h, 015h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 082h, 03bh, 0e9h, 031h, 06bh
+ db 032h, 085h, 032h, 085h, 032h, 085h, 032h, 036h, 036h, 01ah, 038h, 015h, 039h, 058h, 039h, 08ch
+ db 039h, 000h, 03ah
+int13_diskette_function: ; 0xf31ab LB 0x9fd
+ push bp ; 55 ; 0xf31ab floppy.c:467
+ mov bp, sp ; 89 e5 ; 0xf31ac
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf31ae
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf31b1 floppy.c:478
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf31b5 floppy.c:480
+ xor ah, ah ; 30 e4 ; 0xf31b8
+ mov dx, ax ; 89 c2 ; 0xf31ba
+ cmp ax, strict word 00018h ; 3d 18 00 ; 0xf31bc
+ jnbe short 0321dh ; 77 5c ; 0xf31bf
+ push CS ; 0e ; 0xf31c1
+ pop ES ; 07 ; 0xf31c2
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf31c3
+ mov di, 03188h ; bf 88 31 ; 0xf31c6
+ repne scasb ; f2 ae ; 0xf31c9
+ sal cx, 1 ; d1 e1 ; 0xf31cb
+ mov di, cx ; 89 cf ; 0xf31cd
+ mov di, word [cs:di+03193h] ; 2e 8b bd 93 31 ; 0xf31cf
+ mov cx, word [bp+016h] ; 8b 4e 16 ; 0xf31d4
+ xor ch, ch ; 30 ed ; 0xf31d7
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf31d9
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf31dc
+ or AL, strict byte 001h ; 0c 01 ; 0xf31df
+ mov si, cx ; 89 ce ; 0xf31e1
+ or si, 00100h ; 81 ce 00 01 ; 0xf31e3
+ jmp di ; ff e7 ; 0xf31e7
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf31e9 floppy.c:483
+ cmp bl, 001h ; 80 fb 01 ; 0xf31ec floppy.c:484
+ jbe short 0320bh ; 76 1a ; 0xf31ef
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf31f1 floppy.c:485
+ xor ah, ah ; 30 e4 ; 0xf31f4
+ or ah, 001h ; 80 cc 01 ; 0xf31f6
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf31f9
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf31fc floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf31ff
+ mov es, ax ; 8e c0 ; 0xf3202
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3204
+ jmp near 03a6dh ; e9 62 08 ; 0xf3208
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf320b floppy.c:491
+ call 01652h ; e8 41 e4 ; 0xf320e
+ test bl, bl ; 84 db ; 0xf3211 floppy.c:492
+ jne short 03220h ; 75 0b ; 0xf3213
+ mov CL, strict byte 004h ; b1 04 ; 0xf3215 floppy.c:493
+ mov dl, al ; 88 c2 ; 0xf3217
+ shr dl, CL ; d2 ea ; 0xf3219
+ jmp short 03225h ; eb 08 ; 0xf321b floppy.c:494
+ jmp near 03b82h ; e9 62 09 ; 0xf321d
+ mov dl, al ; 88 c2 ; 0xf3220 floppy.c:495
+ and dl, 00fh ; 80 e2 0f ; 0xf3222
+ test dl, dl ; 84 d2 ; 0xf3225 floppy.c:496
+ jne short 03243h ; 75 1a ; 0xf3227
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3229 floppy.c:497
+ xor ah, ah ; 30 e4 ; 0xf322c
+ or ah, 080h ; 80 cc 80 ; 0xf322e
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3231
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3234 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3237
+ mov es, ax ; 8e c0 ; 0xf323a
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf323c
+ jmp near 03a6dh ; e9 2a 08 ; 0xf3240
+ mov si, strict word 0003eh ; be 3e 00 ; 0xf3243 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3246
+ mov es, ax ; 8e c0 ; 0xf3249
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf324b
+ xor al, al ; 30 c0 ; 0xf324f floppy.c:506
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf3251
+ mov si, strict word 00041h ; be 41 00 ; 0xf3254 floppy.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3257
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf325a floppy.c:508
+ mov al, bl ; 88 d8 ; 0xf325e floppy.c:509
+ xor ah, ah ; 30 e4 ; 0xf3260
+ xor dx, dx ; 31 d2 ; 0xf3262
+ call 02e5ch ; e8 f5 fb ; 0xf3264
+ mov sp, bp ; 89 ec ; 0xf3267 floppy.c:510
+ pop bp ; 5d ; 0xf3269
+ retn ; c3 ; 0xf326a
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf326b floppy.c:513
+ mov bx, 00441h ; bb 41 04 ; 0xf326f floppy.c:38
+ xor ax, ax ; 31 c0 ; 0xf3272
+ mov es, ax ; 8e c0 ; 0xf3274
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf3276
+ mov ch, dl ; 88 d5 ; 0xf3279 floppy.c:515
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf327b
+ test dl, dl ; 84 d2 ; 0xf327e floppy.c:516
+ je short 03267h ; 74 e5 ; 0xf3280
+ jmp near 03a6dh ; e9 e8 07 ; 0xf3282
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3285 floppy.c:524
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf3288 floppy.c:525
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf328b
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf328e floppy.c:526
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf3291
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf3294 floppy.c:527
+ xor ah, ah ; 30 e4 ; 0xf3297
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3299
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf329c floppy.c:528
+ cmp bl, 001h ; 80 fb 01 ; 0xf329f floppy.c:530
+ jnbe short 032b1h ; 77 0d ; 0xf32a2
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf32a4
+ jnbe short 032b1h ; 77 09 ; 0xf32a6
+ test bh, bh ; 84 ff ; 0xf32a8
+ je short 032b1h ; 74 05 ; 0xf32aa
+ cmp bh, 048h ; 80 ff 48 ; 0xf32ac
+ jbe short 032e8h ; 76 37 ; 0xf32af
+ mov bx, 00da0h ; bb a0 0d ; 0xf32b1 floppy.c:532
+ mov cx, ds ; 8c d9 ; 0xf32b4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf32b6
+ call 018cch ; e8 10 e6 ; 0xf32b9
+ mov ax, 00275h ; b8 75 02 ; 0xf32bc
+ push ax ; 50 ; 0xf32bf
+ mov ax, 0028dh ; b8 8d 02 ; 0xf32c0
+ push ax ; 50 ; 0xf32c3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf32c4
+ push ax ; 50 ; 0xf32c7
+ call 0190fh ; e8 44 e6 ; 0xf32c8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf32cb
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32ce floppy.c:533
+ xor ah, ah ; 30 e4 ; 0xf32d1
+ or ah, 001h ; 80 cc 01 ; 0xf32d3
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32d6
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32d9 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf32dc
+ mov es, ax ; 8e c0 ; 0xf32df
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf32e1
+ jmp near 03392h ; e9 aa 00 ; 0xf32e5
+ mov al, bl ; 88 d8 ; 0xf32e8 floppy.c:535
+ xor ah, ah ; 30 e4 ; 0xf32ea
+ call 0315dh ; e8 6e fe ; 0xf32ec
+ test ax, ax ; 85 c0 ; 0xf32ef
+ jne short 0330dh ; 75 1a ; 0xf32f1
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf32f3 floppy.c:543
+ xor ah, ah ; 30 e4 ; 0xf32f6
+ or ah, 080h ; 80 cc 80 ; 0xf32f8
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf32fb
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf32fe floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3301
+ mov es, ax ; 8e c0 ; 0xf3304
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf3306
+ jmp near 03392h ; e9 85 00 ; 0xf330a
+ mov cl, bl ; 88 d9 ; 0xf330d floppy.c:551
+ xor ch, ch ; 30 ed ; 0xf330f
+ mov ax, cx ; 89 c8 ; 0xf3311
+ call 02f97h ; e8 81 fc ; 0xf3313
+ test ax, ax ; 85 c0 ; 0xf3316
+ jne short 03340h ; 75 26 ; 0xf3318
+ mov ax, cx ; 89 c8 ; 0xf331a floppy.c:552
+ call 03076h ; e8 57 fd ; 0xf331c
+ test ax, ax ; 85 c0 ; 0xf331f
+ jne short 03340h ; 75 1d ; 0xf3321
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3323 floppy.c:554
+ xor ah, ah ; 30 e4 ; 0xf3326
+ or ah, 00ch ; 80 cc 0c ; 0xf3328
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf332b
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf332e floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3331
+ mov es, ax ; 8e c0 ; 0xf3334
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3336
+ mov byte [bp+016h], ch ; 88 6e 16 ; 0xf333a
+ jmp near 03a6dh ; e9 2d 07 ; 0xf333d
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3340 floppy.c:556
+ xor ah, ah ; 30 e4 ; 0xf3343
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf3345
+ jne short 03399h ; 75 4f ; 0xf3348
+ mov CL, strict byte 00ch ; b1 0c ; 0xf334a floppy.c:573
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf334c
+ shr ax, CL ; d3 e8 ; 0xf334f
+ mov ch, al ; 88 c5 ; 0xf3351
+ mov CL, strict byte 004h ; b1 04 ; 0xf3353 floppy.c:574
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf3355
+ sal dx, CL ; d3 e2 ; 0xf3358
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf335a floppy.c:575
+ add si, dx ; 01 d6 ; 0xf335d
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf335f
+ cmp dx, si ; 39 f2 ; 0xf3362 floppy.c:577
+ jbe short 03368h ; 76 02 ; 0xf3364
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf3366 floppy.c:579
+ mov al, bh ; 88 f8 ; 0xf3368 floppy.c:581
+ xor ah, ah ; 30 e4 ; 0xf336a
+ mov CL, strict byte 009h ; b1 09 ; 0xf336c
+ sal ax, CL ; d3 e0 ; 0xf336e
+ dec ax ; 48 ; 0xf3370
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf3371
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf3374 floppy.c:584
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf3377
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf337a floppy.c:585
+ jnc short 0339ch ; 73 1d ; 0xf337d
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf337f floppy.c:586
+ mov ah, cl ; 88 cc ; 0xf3382
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3384
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3387 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf338a
+ mov es, ax ; 8e c0 ; 0xf338d
+ mov byte [es:bx], cl ; 26 88 0f ; 0xf338f
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf3392
+ jmp near 03a6dh ; e9 d4 06 ; 0xf3396
+ jmp near 034e6h ; e9 4a 01 ; 0xf3399
+ mov AL, strict byte 006h ; b0 06 ; 0xf339c floppy.c:594
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf339e
+ out DX, AL ; ee ; 0xf33a1
+ xor al, al ; 30 c0 ; 0xf33a2 floppy.c:597
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf33a4
+ out DX, AL ; ee ; 0xf33a7
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf33a8 floppy.c:598
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf33ab
+ out DX, AL ; ee ; 0xf33ae
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf33af floppy.c:599
+ out DX, AL ; ee ; 0xf33b2
+ xor al, al ; 30 c0 ; 0xf33b3 floppy.c:601
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf33b5
+ out DX, AL ; ee ; 0xf33b8
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf33b9 floppy.c:602
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf33bc
+ out DX, AL ; ee ; 0xf33bf
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf33c0 floppy.c:603
+ out DX, AL ; ee ; 0xf33c3
+ mov AL, strict byte 046h ; b0 46 ; 0xf33c4 floppy.c:611
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf33c6
+ out DX, AL ; ee ; 0xf33c9
+ mov al, ch ; 88 e8 ; 0xf33ca floppy.c:615
+ mov dx, 00081h ; ba 81 00 ; 0xf33cc
+ out DX, AL ; ee ; 0xf33cf
+ mov AL, strict byte 002h ; b0 02 ; 0xf33d0 floppy.c:618
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf33d2
+ out DX, AL ; ee ; 0xf33d5
+ mov cl, bl ; 88 d9 ; 0xf33d6 floppy.c:623
+ xor ch, ch ; 30 ed ; 0xf33d8
+ mov ax, cx ; 89 c8 ; 0xf33da
+ call 02f22h ; e8 43 fb ; 0xf33dc
+ mov AL, strict byte 0e6h ; b0 e6 ; 0xf33df floppy.c:626
+ mov dx, 003f5h ; ba f5 03 ; 0xf33e1
+ out DX, AL ; ee ; 0xf33e4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33e5 floppy.c:627
+ xor ah, ah ; 30 e4 ; 0xf33e8
+ mov dx, ax ; 89 c2 ; 0xf33ea
+ sal dx, 1 ; d1 e2 ; 0xf33ec
+ sal dx, 1 ; d1 e2 ; 0xf33ee
+ mov al, bl ; 88 d8 ; 0xf33f0
+ or ax, dx ; 09 d0 ; 0xf33f2
+ mov dx, 003f5h ; ba f5 03 ; 0xf33f4
+ out DX, AL ; ee ; 0xf33f7
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf33f8 floppy.c:628
+ out DX, AL ; ee ; 0xf33fb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf33fc floppy.c:629
+ out DX, AL ; ee ; 0xf33ff
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3400 floppy.c:630
+ out DX, AL ; ee ; 0xf3403
+ mov AL, strict byte 002h ; b0 02 ; 0xf3404 floppy.c:631
+ out DX, AL ; ee ; 0xf3406
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf3407 floppy.c:632
+ xor ah, ah ; 30 e4 ; 0xf340a
+ mov dl, bh ; 88 fa ; 0xf340c
+ xor dh, dh ; 30 f6 ; 0xf340e
+ add ax, dx ; 01 d0 ; 0xf3410
+ dec ax ; 48 ; 0xf3412
+ mov dx, 003f5h ; ba f5 03 ; 0xf3413
+ out DX, AL ; ee ; 0xf3416
+ xor al, al ; 30 c0 ; 0xf3417 floppy.c:633
+ out DX, AL ; ee ; 0xf3419
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf341a floppy.c:634
+ out DX, AL ; ee ; 0xf341c
+ call 02eabh ; e8 8b fa ; 0xf341d floppy.c:666
+ test al, al ; 84 c0 ; 0xf3420 floppy.c:667
+ jne short 03443h ; 75 1f ; 0xf3422
+ mov ax, cx ; 89 c8 ; 0xf3424 floppy.c:669
+ call 02ee3h ; e8 ba fa ; 0xf3426
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3429 floppy.c:670
+ xor ah, ah ; 30 e4 ; 0xf342c
+ or ah, 080h ; 80 cc 80 ; 0xf342e
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3431
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3434 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3437
+ mov es, ax ; 8e c0 ; 0xf343a
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf343c
+ jmp near 0333ah ; e9 f7 fe ; 0xf3440
+ mov dx, 003f4h ; ba f4 03 ; 0xf3443 floppy.c:679
+ in AL, DX ; ec ; 0xf3446
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3447
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3449 floppy.c:680
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf344b
+ je short 03461h ; 74 12 ; 0xf344d
+ mov ax, 00275h ; b8 75 02 ; 0xf344f floppy.c:681
+ push ax ; 50 ; 0xf3452
+ mov ax, 002a8h ; b8 a8 02 ; 0xf3453
+ push ax ; 50 ; 0xf3456
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3457
+ push ax ; 50 ; 0xf345a
+ call 0190fh ; e8 b1 e4 ; 0xf345b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf345e
+ xor cx, cx ; 31 c9 ; 0xf3461 floppy.c:684
+ jmp short 0346ah ; eb 05 ; 0xf3463
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf3465
+ jnl short 03480h ; 7d 16 ; 0xf3468
+ mov dx, 003f5h ; ba f5 03 ; 0xf346a floppy.c:685
+ in AL, DX ; ec ; 0xf346d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf346e
+ mov si, cx ; 89 ce ; 0xf3470
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf3472
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3475 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf3478
+ mov byte [es:si], al ; 26 88 04 ; 0xf347a
+ inc cx ; 41 ; 0xf347d floppy.c:685
+ jmp short 03465h ; eb e5 ; 0xf347e
+ mov si, strict word 00042h ; be 42 00 ; 0xf3480 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3483
+ mov es, ax ; 8e c0 ; 0xf3486
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf3488
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf348b floppy.c:39
+ je short 034b0h ; 74 21 ; 0xf348d
+ mov al, bl ; 88 d8 ; 0xf348f floppy.c:689
+ xor ah, ah ; 30 e4 ; 0xf3491
+ call 02ee3h ; e8 4d fa ; 0xf3493
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3496 floppy.c:690
+ xor ah, ah ; 30 e4 ; 0xf3499
+ or ah, 020h ; 80 cc 20 ; 0xf349b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf349e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf34a1 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf34a4
+ mov es, ax ; 8e c0 ; 0xf34a7
+ mov byte [es:bx], 020h ; 26 c6 07 20 ; 0xf34a9
+ jmp near 03392h ; e9 e2 fe ; 0xf34ad
+ mov al, bh ; 88 f8 ; 0xf34b0 floppy.c:698
+ xor ah, ah ; 30 e4 ; 0xf34b2
+ mov CL, strict byte 009h ; b1 09 ; 0xf34b4
+ sal ax, CL ; d3 e0 ; 0xf34b6
+ cwd ; 99 ; 0xf34b8
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf34b9
+ sar ax, 1 ; d1 f8 ; 0xf34bb
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf34bd
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34c0
+ mov di, si ; 89 f7 ; 0xf34c3
+ mov cx, ax ; 89 c1 ; 0xf34c5
+ mov es, dx ; 8e c2 ; 0xf34c7
+ push DS ; 1e ; 0xf34c9
+ mov ds, dx ; 8e da ; 0xf34ca
+ rep movsw ; f3 a5 ; 0xf34cc
+ pop DS ; 1f ; 0xf34ce
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf34cf floppy.c:702
+ xor dh, dh ; 30 f6 ; 0xf34d2
+ mov al, bl ; 88 d8 ; 0xf34d4
+ xor ah, ah ; 30 e4 ; 0xf34d6
+ call 02e5ch ; e8 81 f9 ; 0xf34d8
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf34db floppy.c:704
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf34df floppy.c:705
+ jmp near 03267h ; e9 81 fd ; 0xf34e3 floppy.c:706
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf34e6 floppy.c:707
+ xor ah, ah ; 30 e4 ; 0xf34e9
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf34eb
+ je short 034f3h ; 74 03 ; 0xf34ee
+ jmp near 0361fh ; e9 2c 01 ; 0xf34f0
+ mov CL, strict byte 00ch ; b1 0c ; 0xf34f3 floppy.c:718
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf34f5
+ shr dx, CL ; d3 ea ; 0xf34f8
+ mov ch, dl ; 88 d5 ; 0xf34fa
+ mov CL, strict byte 004h ; b1 04 ; 0xf34fc floppy.c:719
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf34fe
+ sal ax, CL ; d3 e0 ; 0xf3501
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf3503 floppy.c:720
+ add si, ax ; 01 c6 ; 0xf3506
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf3508
+ cmp ax, si ; 39 f0 ; 0xf350b floppy.c:722
+ jbe short 03511h ; 76 02 ; 0xf350d
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf350f floppy.c:724
+ mov al, bh ; 88 f8 ; 0xf3511 floppy.c:726
+ xor ah, ah ; 30 e4 ; 0xf3513
+ mov CL, strict byte 009h ; b1 09 ; 0xf3515
+ sal ax, CL ; d3 e0 ; 0xf3517
+ dec ax ; 48 ; 0xf3519
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf351a
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf351d floppy.c:729
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf3520
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf3523 floppy.c:730
+ jnc short 0352bh ; 73 03 ; 0xf3526
+ jmp near 0337fh ; e9 54 fe ; 0xf3528
+ mov AL, strict byte 006h ; b0 06 ; 0xf352b floppy.c:739
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf352d
+ out DX, AL ; ee ; 0xf3530
+ xor al, al ; 30 c0 ; 0xf3531 floppy.c:741
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3533
+ out DX, AL ; ee ; 0xf3536
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3537 floppy.c:742
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf353a
+ out DX, AL ; ee ; 0xf353d
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf353e floppy.c:743
+ out DX, AL ; ee ; 0xf3541
+ xor al, al ; 30 c0 ; 0xf3542 floppy.c:744
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3544
+ out DX, AL ; ee ; 0xf3547
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3548 floppy.c:745
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf354b
+ out DX, AL ; ee ; 0xf354e
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf354f floppy.c:746
+ out DX, AL ; ee ; 0xf3552
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3553 floppy.c:753
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3555
+ out DX, AL ; ee ; 0xf3558
+ mov al, ch ; 88 e8 ; 0xf3559 floppy.c:756
+ mov dx, 00081h ; ba 81 00 ; 0xf355b
+ out DX, AL ; ee ; 0xf355e
+ mov AL, strict byte 002h ; b0 02 ; 0xf355f floppy.c:759
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3561
+ out DX, AL ; ee ; 0xf3564
+ mov cl, bl ; 88 d9 ; 0xf3565 floppy.c:764
+ xor ch, ch ; 30 ed ; 0xf3567
+ mov ax, cx ; 89 c8 ; 0xf3569
+ call 02f22h ; e8 b4 f9 ; 0xf356b
+ mov AL, strict byte 0c5h ; b0 c5 ; 0xf356e floppy.c:767
+ mov dx, 003f5h ; ba f5 03 ; 0xf3570
+ out DX, AL ; ee ; 0xf3573
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3574 floppy.c:768
+ xor ah, ah ; 30 e4 ; 0xf3577
+ mov dx, ax ; 89 c2 ; 0xf3579
+ sal dx, 1 ; d1 e2 ; 0xf357b
+ sal dx, 1 ; d1 e2 ; 0xf357d
+ mov al, bl ; 88 d8 ; 0xf357f
+ or ax, dx ; 09 d0 ; 0xf3581
+ mov dx, 003f5h ; ba f5 03 ; 0xf3583
+ out DX, AL ; ee ; 0xf3586
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf3587 floppy.c:769
+ out DX, AL ; ee ; 0xf358a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf358b floppy.c:770
+ out DX, AL ; ee ; 0xf358e
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf358f floppy.c:771
+ out DX, AL ; ee ; 0xf3592
+ mov AL, strict byte 002h ; b0 02 ; 0xf3593 floppy.c:772
+ out DX, AL ; ee ; 0xf3595
+ mov dl, byte [bp-002h] ; 8a 56 fe ; 0xf3596 floppy.c:773
+ xor dh, dh ; 30 f6 ; 0xf3599
+ mov al, bh ; 88 f8 ; 0xf359b
+ xor ah, ah ; 30 e4 ; 0xf359d
+ add ax, dx ; 01 d0 ; 0xf359f
+ dec ax ; 48 ; 0xf35a1
+ mov dx, 003f5h ; ba f5 03 ; 0xf35a2
+ out DX, AL ; ee ; 0xf35a5
+ xor al, al ; 30 c0 ; 0xf35a6 floppy.c:774
+ out DX, AL ; ee ; 0xf35a8
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf35a9 floppy.c:775
+ out DX, AL ; ee ; 0xf35ab
+ call 02eabh ; e8 fc f8 ; 0xf35ac floppy.c:804
+ test al, al ; 84 c0 ; 0xf35af floppy.c:805
+ jne short 035b6h ; 75 03 ; 0xf35b1
+ jmp near 03424h ; e9 6e fe ; 0xf35b3
+ mov dx, 003f4h ; ba f4 03 ; 0xf35b6 floppy.c:816
+ in AL, DX ; ec ; 0xf35b9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf35ba
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf35bc floppy.c:817
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf35be
+ je short 035d4h ; 74 12 ; 0xf35c0
+ mov ax, 00275h ; b8 75 02 ; 0xf35c2 floppy.c:818
+ push ax ; 50 ; 0xf35c5
+ mov ax, 002a8h ; b8 a8 02 ; 0xf35c6
+ push ax ; 50 ; 0xf35c9
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf35ca
+ push ax ; 50 ; 0xf35cd
+ call 0190fh ; e8 3e e3 ; 0xf35ce
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf35d1
+ xor cx, cx ; 31 c9 ; 0xf35d4 floppy.c:821
+ jmp short 035ddh ; eb 05 ; 0xf35d6
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf35d8
+ jnl short 035f3h ; 7d 16 ; 0xf35db
+ mov dx, 003f5h ; ba f5 03 ; 0xf35dd floppy.c:822
+ in AL, DX ; ec ; 0xf35e0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf35e1
+ mov si, cx ; 89 ce ; 0xf35e3
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf35e5
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf35e8 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf35eb
+ mov byte [es:si], al ; 26 88 04 ; 0xf35ed
+ inc cx ; 41 ; 0xf35f0 floppy.c:822
+ jmp short 035d8h ; eb e5 ; 0xf35f1
+ mov si, strict word 00042h ; be 42 00 ; 0xf35f3 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf35f6
+ mov es, ax ; 8e c0 ; 0xf35f9
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf35fb
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf35fe floppy.c:39
+ jne short 03605h ; 75 03 ; 0xf3600
+ jmp near 034cfh ; e9 ca fe ; 0xf3602
+ mov bx, strict word 00043h ; bb 43 00 ; 0xf3605 floppy.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3608
+ test AL, strict byte 002h ; a8 02 ; 0xf360b floppy.c:39
+ je short 03617h ; 74 08 ; 0xf360d
+ mov word [bp+016h], 00300h ; c7 46 16 00 03 ; 0xf360f floppy.c:829
+ jmp near 03a6dh ; e9 56 04 ; 0xf3614
+ mov word [bp+016h], 00100h ; c7 46 16 00 01 ; 0xf3617 floppy.c:832
+ jmp near 03a6dh ; e9 4e 04 ; 0xf361c floppy.c:833
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf361f floppy.c:848
+ xor dh, dh ; 30 f6 ; 0xf3622
+ mov al, bl ; 88 d8 ; 0xf3624
+ xor ah, ah ; 30 e4 ; 0xf3626
+ call 02e5ch ; e8 31 f8 ; 0xf3628
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf362b floppy.c:850
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf362f floppy.c:851
+ jmp near 03267h ; e9 31 fc ; 0xf3633 floppy.c:852
+ mov bh, byte [bp+016h] ; 8a 7e 16 ; 0xf3636 floppy.c:859
+ mov dl, byte [bp+015h] ; 8a 56 15 ; 0xf3639 floppy.c:860
+ xor dh, dh ; 30 f6 ; 0xf363c
+ mov byte [bp-004h], dl ; 88 56 fc ; 0xf363e
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf3641 floppy.c:861
+ xor ah, ah ; 30 e4 ; 0xf3644
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf3646
+ mov bl, byte [bp+00eh] ; 8a 5e 0e ; 0xf3649 floppy.c:862
+ cmp bl, 001h ; 80 fb 01 ; 0xf364c floppy.c:864
+ jnbe short 03663h ; 77 12 ; 0xf364f
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf3651
+ jnbe short 03663h ; 77 0e ; 0xf3653
+ cmp dl, 04fh ; 80 fa 4f ; 0xf3655
+ jnbe short 03663h ; 77 09 ; 0xf3658
+ test bh, bh ; 84 ff ; 0xf365a
+ je short 03663h ; 74 05 ; 0xf365c
+ cmp bh, 012h ; 80 ff 12 ; 0xf365e
+ jbe short 0367eh ; 76 1b ; 0xf3661
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3663 floppy.c:866
+ xor ah, ah ; 30 e4 ; 0xf3666
+ or ah, 001h ; 80 cc 01 ; 0xf3668
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf366b
+ mov si, strict word 00041h ; be 41 00 ; 0xf366e floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3671
+ mov es, ax ; 8e c0 ; 0xf3674
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf3676
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf367a floppy.c:868
+ mov al, bl ; 88 d8 ; 0xf367e floppy.c:872
+ xor ah, ah ; 30 e4 ; 0xf3680
+ call 0315dh ; e8 d8 fa ; 0xf3682
+ test ax, ax ; 85 c0 ; 0xf3685
+ jne short 036a3h ; 75 1a ; 0xf3687
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3689 floppy.c:873
+ xor ah, ah ; 30 e4 ; 0xf368c
+ or ah, 080h ; 80 cc 80 ; 0xf368e
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3691
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3694 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3697
+ mov es, ax ; 8e c0 ; 0xf369a
+ mov byte [es:bx], 080h ; 26 c6 07 80 ; 0xf369c
+ jmp near 03a6dh ; e9 ca 03 ; 0xf36a0
+ mov cl, bl ; 88 d9 ; 0xf36a3 floppy.c:880
+ xor ch, ch ; 30 ed ; 0xf36a5
+ mov ax, cx ; 89 c8 ; 0xf36a7
+ call 02f97h ; e8 eb f8 ; 0xf36a9
+ test ax, ax ; 85 c0 ; 0xf36ac
+ jne short 036bch ; 75 0c ; 0xf36ae
+ mov ax, cx ; 89 c8 ; 0xf36b0 floppy.c:881
+ call 03076h ; e8 c1 f9 ; 0xf36b2
+ test ax, ax ; 85 c0 ; 0xf36b5
+ jne short 036bch ; 75 03 ; 0xf36b7
+ jmp near 03323h ; e9 67 fc ; 0xf36b9
+ mov CL, strict byte 00ch ; b1 0c ; 0xf36bc floppy.c:892
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf36be
+ shr ax, CL ; d3 e8 ; 0xf36c1
+ mov ch, al ; 88 c5 ; 0xf36c3
+ mov CL, strict byte 004h ; b1 04 ; 0xf36c5 floppy.c:893
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf36c7
+ sal dx, CL ; d3 e2 ; 0xf36ca
+ mov si, word [bp+010h] ; 8b 76 10 ; 0xf36cc floppy.c:894
+ add si, dx ; 01 d6 ; 0xf36cf
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf36d1
+ cmp dx, si ; 39 f2 ; 0xf36d4 floppy.c:896
+ jbe short 036dah ; 76 02 ; 0xf36d6
+ db 0feh, 0c5h
+ ; inc ch ; fe c5 ; 0xf36d8 floppy.c:898
+ mov al, bh ; 88 f8 ; 0xf36da floppy.c:900
+ xor ah, ah ; 30 e4 ; 0xf36dc
+ sal ax, 1 ; d1 e0 ; 0xf36de
+ sal ax, 1 ; d1 e0 ; 0xf36e0
+ dec ax ; 48 ; 0xf36e2
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf36e3
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf36e6 floppy.c:903
+ add ax, word [bp-00eh] ; 03 46 f2 ; 0xf36e9
+ cmp ax, word [bp-00ch] ; 3b 46 f4 ; 0xf36ec floppy.c:904
+ jnc short 0370bh ; 73 1a ; 0xf36ef
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf36f1 floppy.c:905
+ xor ah, ah ; 30 e4 ; 0xf36f4
+ or ah, 009h ; 80 cc 09 ; 0xf36f6
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf36f9
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf36fc floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf36ff
+ mov es, ax ; 8e c0 ; 0xf3702
+ mov byte [es:bx], 009h ; 26 c6 07 09 ; 0xf3704
+ jmp near 03392h ; e9 87 fc ; 0xf3708
+ mov AL, strict byte 006h ; b0 06 ; 0xf370b floppy.c:912
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf370d
+ out DX, AL ; ee ; 0xf3710
+ xor al, al ; 30 c0 ; 0xf3711 floppy.c:913
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3713
+ out DX, AL ; ee ; 0xf3716
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3717 floppy.c:914
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf371a
+ out DX, AL ; ee ; 0xf371d
+ mov al, byte [bp-00bh] ; 8a 46 f5 ; 0xf371e floppy.c:915
+ out DX, AL ; ee ; 0xf3721
+ xor al, al ; 30 c0 ; 0xf3722 floppy.c:916
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3724
+ out DX, AL ; ee ; 0xf3727
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf3728 floppy.c:917
+ mov dx, strict word 00005h ; ba 05 00 ; 0xf372b
+ out DX, AL ; ee ; 0xf372e
+ mov al, byte [bp-00dh] ; 8a 46 f3 ; 0xf372f floppy.c:918
+ out DX, AL ; ee ; 0xf3732
+ mov AL, strict byte 04ah ; b0 4a ; 0xf3733 floppy.c:921
+ mov dx, strict word 0000bh ; ba 0b 00 ; 0xf3735
+ out DX, AL ; ee ; 0xf3738
+ mov al, ch ; 88 e8 ; 0xf3739 floppy.c:923
+ mov dx, 00081h ; ba 81 00 ; 0xf373b
+ out DX, AL ; ee ; 0xf373e
+ mov AL, strict byte 002h ; b0 02 ; 0xf373f floppy.c:924
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf3741
+ out DX, AL ; ee ; 0xf3744
+ mov cl, bl ; 88 d9 ; 0xf3745 floppy.c:927
+ xor ch, ch ; 30 ed ; 0xf3747
+ mov ax, cx ; 89 c8 ; 0xf3749
+ call 02f22h ; e8 d4 f7 ; 0xf374b
+ mov AL, strict byte 00fh ; b0 0f ; 0xf374e floppy.c:930
+ mov dx, 003f5h ; ba f5 03 ; 0xf3750
+ out DX, AL ; ee ; 0xf3753
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf3754 floppy.c:931
+ xor ah, ah ; 30 e4 ; 0xf3757
+ mov dx, ax ; 89 c2 ; 0xf3759
+ sal dx, 1 ; d1 e2 ; 0xf375b
+ sal dx, 1 ; d1 e2 ; 0xf375d
+ mov al, bl ; 88 d8 ; 0xf375f
+ or dx, ax ; 09 c2 ; 0xf3761
+ mov word [bp-008h], dx ; 89 56 f8 ; 0xf3763
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3766
+ mov dx, 003f5h ; ba f5 03 ; 0xf3769
+ out DX, AL ; ee ; 0xf376c
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf376d floppy.c:932
+ out DX, AL ; ee ; 0xf3770
+ mov AL, strict byte 04dh ; b0 4d ; 0xf3771 floppy.c:935
+ out DX, AL ; ee ; 0xf3773
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf3774 floppy.c:936
+ out DX, AL ; ee ; 0xf3777
+ mov AL, strict byte 002h ; b0 02 ; 0xf3778 floppy.c:937
+ out DX, AL ; ee ; 0xf377a
+ mov al, bh ; 88 f8 ; 0xf377b floppy.c:938
+ out DX, AL ; ee ; 0xf377d
+ xor al, bh ; 30 f8 ; 0xf377e floppy.c:939
+ out DX, AL ; ee ; 0xf3780
+ mov AL, strict byte 0f6h ; b0 f6 ; 0xf3781 floppy.c:940
+ out DX, AL ; ee ; 0xf3783
+ call 02eabh ; e8 24 f7 ; 0xf3784 floppy.c:968
+ test al, al ; 84 c0 ; 0xf3787 floppy.c:969
+ jne short 03793h ; 75 08 ; 0xf3789
+ mov ax, cx ; 89 c8 ; 0xf378b floppy.c:970
+ call 02ee3h ; e8 53 f7 ; 0xf378d
+ jmp near 03689h ; e9 f6 fe ; 0xf3790 floppy.c:68
+ mov dx, 003f4h ; ba f4 03 ; 0xf3793 floppy.c:979
+ in AL, DX ; ec ; 0xf3796
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf3797
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf3799 floppy.c:980
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xf379b
+ je short 037b1h ; 74 12 ; 0xf379d
+ mov ax, 00275h ; b8 75 02 ; 0xf379f floppy.c:981
+ push ax ; 50 ; 0xf37a2
+ mov ax, 002a8h ; b8 a8 02 ; 0xf37a3
+ push ax ; 50 ; 0xf37a6
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf37a7
+ push ax ; 50 ; 0xf37aa
+ call 0190fh ; e8 61 e1 ; 0xf37ab
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf37ae
+ xor cx, cx ; 31 c9 ; 0xf37b1 floppy.c:984
+ jmp short 037bah ; eb 05 ; 0xf37b3
+ cmp cx, strict byte 00007h ; 83 f9 07 ; 0xf37b5
+ jnl short 037d0h ; 7d 16 ; 0xf37b8
+ mov dx, 003f5h ; ba f5 03 ; 0xf37ba floppy.c:985
+ in AL, DX ; ec ; 0xf37bd
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf37be
+ mov si, cx ; 89 ce ; 0xf37c0
+ add si, strict byte 00042h ; 83 c6 42 ; 0xf37c2
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf37c5 floppy.c:43
+ mov es, dx ; 8e c2 ; 0xf37c8
+ mov byte [es:si], al ; 26 88 04 ; 0xf37ca
+ inc cx ; 41 ; 0xf37cd floppy.c:985
+ jmp short 037b5h ; eb e5 ; 0xf37ce
+ mov si, strict word 00042h ; be 42 00 ; 0xf37d0 floppy.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf37d3
+ mov es, ax ; 8e c0 ; 0xf37d6
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf37d8
+ test AL, strict byte 0c0h ; a8 c0 ; 0xf37db floppy.c:39
+ je short 037feh ; 74 1f ; 0xf37dd
+ mov si, strict word 00043h ; be 43 00 ; 0xf37df floppy.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf37e2
+ test AL, strict byte 002h ; a8 02 ; 0xf37e5 floppy.c:39
+ je short 037ech ; 74 03 ; 0xf37e7
+ jmp near 0360fh ; e9 23 fe ; 0xf37e9
+ mov ax, 00275h ; b8 75 02 ; 0xf37ec floppy.c:996
+ push ax ; 50 ; 0xf37ef
+ mov ax, 002bch ; b8 bc 02 ; 0xf37f0
+ push ax ; 50 ; 0xf37f3
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf37f4
+ push ax ; 50 ; 0xf37f7
+ call 0190fh ; e8 14 e1 ; 0xf37f8
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf37fb
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf37fe floppy.c:1000
+ mov si, strict word 00041h ; be 41 00 ; 0xf3802 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3805
+ mov es, ax ; 8e c0 ; 0xf3808
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf380a
+ mov al, bl ; 88 d8 ; 0xf380e floppy.c:1002
+ xor ah, ah ; 30 e4 ; 0xf3810
+ xor dx, dx ; 31 d2 ; 0xf3812
+ call 02e5ch ; e8 45 f6 ; 0xf3814
+ jmp near 034dfh ; e9 c5 fc ; 0xf3817
+ mov bl, dl ; 88 d3 ; 0xf381a floppy.c:1009
+ cmp dl, 001h ; 80 fa 01 ; 0xf381c floppy.c:1011
+ jbe short 03847h ; 76 26 ; 0xf381f
+ mov word [bp+016h], strict word 00000h ; c7 46 16 00 00 ; 0xf3821 floppy.c:1012
+ mov word [bp+010h], strict word 00000h ; c7 46 10 00 00 ; 0xf3826 floppy.c:1013
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf382b floppy.c:1014
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf3830 floppy.c:1015
+ mov word [bp+006h], strict word 00000h ; c7 46 06 00 00 ; 0xf3835 floppy.c:1016
+ mov word [bp+008h], strict word 00000h ; c7 46 08 00 00 ; 0xf383a floppy.c:1017
+ mov dl, bh ; 88 fa ; 0xf383f floppy.c:1018
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf3841
+ jmp near 0396ch ; e9 25 01 ; 0xf3844
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3847 floppy.c:1019
+ call 01652h ; e8 05 de ; 0xf384a
+ mov dl, al ; 88 c2 ; 0xf384d
+ xor bh, bh ; 30 ff ; 0xf384f floppy.c:1025
+ test AL, strict byte 0f0h ; a8 f0 ; 0xf3851 floppy.c:1026
+ je short 03857h ; 74 02 ; 0xf3853
+ mov BH, strict byte 001h ; b7 01 ; 0xf3855 floppy.c:1027
+ test dl, 00fh ; f6 c2 0f ; 0xf3857 floppy.c:1028
+ je short 0385eh ; 74 02 ; 0xf385a
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf385c floppy.c:1029
+ test bl, bl ; 84 db ; 0xf385e floppy.c:1031
+ jne short 03868h ; 75 06 ; 0xf3860
+ mov CL, strict byte 004h ; b1 04 ; 0xf3862 floppy.c:1032
+ shr dl, CL ; d2 ea ; 0xf3864
+ jmp short 0386bh ; eb 03 ; 0xf3866 floppy.c:1033
+ and dl, 00fh ; 80 e2 0f ; 0xf3868 floppy.c:1034
+ mov byte [bp+011h], 000h ; c6 46 11 00 ; 0xf386b floppy.c:1037
+ mov al, dl ; 88 d0 ; 0xf386f
+ xor ah, ah ; 30 e4 ; 0xf3871
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf3873
+ xor al, dl ; 30 d0 ; 0xf3876 floppy.c:1038
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3878
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf387b floppy.c:1040
+ mov cl, bh ; 88 f9 ; 0xf387e
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf3880
+ mov ax, cx ; 89 c8 ; 0xf3883 floppy.c:1041
+ xor ah, ch ; 30 ec ; 0xf3885
+ or ah, 001h ; 80 cc 01 ; 0xf3887
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf388a
+ cmp dl, 003h ; 80 fa 03 ; 0xf388d floppy.c:1043
+ jc short 038a7h ; 72 15 ; 0xf3890
+ jbe short 038ceh ; 76 3a ; 0xf3892
+ cmp dl, 005h ; 80 fa 05 ; 0xf3894
+ jc short 038d5h ; 72 3c ; 0xf3897
+ jbe short 038dch ; 76 41 ; 0xf3899
+ cmp dl, 00fh ; 80 fa 0f ; 0xf389b
+ je short 038eah ; 74 4a ; 0xf389e
+ cmp dl, 00eh ; 80 fa 0e ; 0xf38a0
+ je short 038e3h ; 74 3e ; 0xf38a3
+ jmp short 038f1h ; eb 4a ; 0xf38a5
+ cmp dl, 002h ; 80 fa 02 ; 0xf38a7
+ je short 038c7h ; 74 1b ; 0xf38aa
+ cmp dl, 001h ; 80 fa 01 ; 0xf38ac
+ je short 038c0h ; 74 0f ; 0xf38af
+ test dl, dl ; 84 d2 ; 0xf38b1
+ jne short 038f1h ; 75 3c ; 0xf38b3
+ mov word [bp+014h], strict word 00000h ; c7 46 14 00 00 ; 0xf38b5 floppy.c:1045
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf38ba floppy.c:1046
+ jmp short 03903h ; eb 43 ; 0xf38be floppy.c:1047
+ mov word [bp+014h], 02709h ; c7 46 14 09 27 ; 0xf38c0 floppy.c:1050
+ jmp short 03903h ; eb 3c ; 0xf38c5 floppy.c:1051
+ mov word [bp+014h], 04f0fh ; c7 46 14 0f 4f ; 0xf38c7 floppy.c:1054
+ jmp short 03903h ; eb 35 ; 0xf38cc floppy.c:1055
+ mov word [bp+014h], 04f09h ; c7 46 14 09 4f ; 0xf38ce floppy.c:1058
+ jmp short 03903h ; eb 2e ; 0xf38d3 floppy.c:1059
+ mov word [bp+014h], 04f12h ; c7 46 14 12 4f ; 0xf38d5 floppy.c:1062
+ jmp short 03903h ; eb 27 ; 0xf38da floppy.c:1063
+ mov word [bp+014h], 04f24h ; c7 46 14 24 4f ; 0xf38dc floppy.c:1066
+ jmp short 03903h ; eb 20 ; 0xf38e1 floppy.c:1067
+ mov word [bp+014h], 0fe3fh ; c7 46 14 3f fe ; 0xf38e3 floppy.c:1070
+ jmp short 03903h ; eb 19 ; 0xf38e8 floppy.c:1071
+ mov word [bp+014h], 0feffh ; c7 46 14 ff fe ; 0xf38ea floppy.c:1074
+ jmp short 03903h ; eb 12 ; 0xf38ef floppy.c:1075
+ mov ax, 00275h ; b8 75 02 ; 0xf38f1 floppy.c:1079
+ push ax ; 50 ; 0xf38f4
+ mov ax, 002cdh ; b8 cd 02 ; 0xf38f5
+ push ax ; 50 ; 0xf38f8
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf38f9
+ push ax ; 50 ; 0xf38fc
+ call 0190fh ; e8 0f e0 ; 0xf38fd
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf3900
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3903 floppy.c:1083
+ mov al, dl ; 88 d0 ; 0xf3908 floppy.c:1084
+ xor ah, ah ; 30 e4 ; 0xf390a
+ call 03ba8h ; e8 99 02 ; 0xf390c
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf390f
+ jmp near 034dfh ; e9 ca fb ; 0xf3912
+ mov bl, dl ; 88 d3 ; 0xf3915 floppy.c:1091
+ cmp dl, 001h ; 80 fa 01 ; 0xf3917 floppy.c:1092
+ jbe short 03921h ; 76 05 ; 0xf391a
+ mov word [bp+016h], cx ; 89 4e 16 ; 0xf391c floppy.c:1093
+ jmp short 0396ch ; eb 4b ; 0xf391f
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3921 floppy.c:1099
+ call 01652h ; e8 2b dd ; 0xf3924
+ test bl, bl ; 84 db ; 0xf3927 floppy.c:1100
+ jne short 03933h ; 75 08 ; 0xf3929
+ mov CL, strict byte 004h ; b1 04 ; 0xf392b floppy.c:1101
+ mov dl, al ; 88 c2 ; 0xf392d
+ shr dl, CL ; d2 ea ; 0xf392f
+ jmp short 03938h ; eb 05 ; 0xf3931 floppy.c:1102
+ mov dl, al ; 88 c2 ; 0xf3933 floppy.c:1103
+ and dl, 00fh ; 80 e2 0f ; 0xf3935
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3938 floppy.c:1104
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf393c
+ xor ah, ah ; 30 e4 ; 0xf393f
+ test dl, dl ; 84 d2 ; 0xf3941 floppy.c:1105
+ je short 03952h ; 74 0d ; 0xf3943
+ cmp dl, 001h ; 80 fa 01 ; 0xf3945 floppy.c:1106
+ jbe short 0394fh ; 76 05 ; 0xf3948
+ or ah, 002h ; 80 cc 02 ; 0xf394a floppy.c:1108
+ jmp short 03952h ; eb 03 ; 0xf394d floppy.c:1109
+ or ah, 001h ; 80 cc 01 ; 0xf394f floppy.c:1110
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3952
+ jmp near 03267h ; e9 0f f9 ; 0xf3955 floppy.c:1113
+ cmp dl, 001h ; 80 fa 01 ; 0xf3958 floppy.c:1118
+ jbe short 03972h ; 76 15 ; 0xf395b
+ mov word [bp+016h], si ; 89 76 16 ; 0xf395d floppy.c:1119
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3960 floppy.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3963
+ mov es, dx ; 8e c2 ; 0xf3966
+ mov byte [es:bx], 001h ; 26 c6 07 01 ; 0xf3968
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf396c
+ jmp near 03267h ; e9 f5 f8 ; 0xf396f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3972 floppy.c:1125
+ xor ah, ah ; 30 e4 ; 0xf3975
+ or ah, 006h ; 80 cc 06 ; 0xf3977
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf397a
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf397d floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3980
+ mov es, ax ; 8e c0 ; 0xf3983
+ mov byte [es:bx], 006h ; 26 c6 07 06 ; 0xf3985
+ jmp near 03a6dh ; e9 e1 00 ; 0xf3989
+ mov bl, dl ; 88 d3 ; 0xf398c floppy.c:1134
+ mov cl, byte [bp+016h] ; 8a 4e 16 ; 0xf398e floppy.c:1142
+ cmp dl, 001h ; 80 fa 01 ; 0xf3991 floppy.c:1146
+ jnbe short 0395dh ; 77 c7 ; 0xf3994
+ mov al, bl ; 88 d8 ; 0xf3996 floppy.c:1154
+ xor ah, ah ; 30 e4 ; 0xf3998
+ call 0315dh ; e8 c0 f7 ; 0xf399a
+ test ax, ax ; 85 c0 ; 0xf399d
+ jne short 039a4h ; 75 03 ; 0xf399f
+ jmp near 03689h ; e9 e5 fc ; 0xf39a1
+ test bl, bl ; 84 db ; 0xf39a4 floppy.c:1162
+ je short 039adh ; 74 05 ; 0xf39a6
+ mov bx, 00091h ; bb 91 00 ; 0xf39a8
+ jmp short 039b0h ; eb 03 ; 0xf39ab
+ mov bx, 00090h ; bb 90 00 ; 0xf39ad
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf39b0
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39b3 floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf39b6
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf39b8
+ and bl, 00fh ; 80 e3 0f ; 0xf39bb floppy.c:1166
+ cmp cl, 002h ; 80 f9 02 ; 0xf39be floppy.c:1168
+ jc short 039d2h ; 72 0f ; 0xf39c1
+ jbe short 039dfh ; 76 1a ; 0xf39c3
+ cmp cl, 004h ; 80 f9 04 ; 0xf39c5
+ je short 039dah ; 74 10 ; 0xf39c8
+ cmp cl, 003h ; 80 f9 03 ; 0xf39ca
+ je short 039e4h ; 74 15 ; 0xf39cd
+ jmp near 031f1h ; e9 1f f8 ; 0xf39cf
+ cmp cl, 001h ; 80 f9 01 ; 0xf39d2
+ je short 039dah ; 74 03 ; 0xf39d5
+ jmp near 031f1h ; e9 17 f8 ; 0xf39d7
+ or bl, 090h ; 80 cb 90 ; 0xf39da floppy.c:1171
+ jmp short 039e7h ; eb 08 ; 0xf39dd floppy.c:1172
+ or bl, 070h ; 80 cb 70 ; 0xf39df floppy.c:1175
+ jmp short 039e7h ; eb 03 ; 0xf39e2 floppy.c:1176
+ or bl, 010h ; 80 cb 10 ; 0xf39e4 floppy.c:1179
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf39e7 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf39ea
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf39ec
+ mov byte [es:si], bl ; 26 88 1c ; 0xf39ef
+ xor al, al ; 30 c0 ; 0xf39f2 floppy.c:1198
+ mov byte [bp+017h], al ; 88 46 17 ; 0xf39f4
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf39f7 floppy.c:43
+ mov byte [es:bx], al ; 26 88 07 ; 0xf39fa
+ jmp near 034dfh ; e9 df fa ; 0xf39fd
+ mov bl, dl ; 88 d3 ; 0xf3a00 floppy.c:1208
+ mov cl, byte [bp+014h] ; 8a 4e 14 ; 0xf3a02 floppy.c:1210
+ mov bh, cl ; 88 cf ; 0xf3a05 floppy.c:1211
+ and bh, 03fh ; 80 e7 3f ; 0xf3a07
+ mov byte [bp-00ah], cl ; 88 4e f6 ; 0xf3a0a floppy.c:1212
+ mov byte [bp-009h], dh ; 88 76 f7 ; 0xf3a0d
+ mov CL, strict byte 006h ; b1 06 ; 0xf3a10
+ mov di, word [bp-00ah] ; 8b 7e f6 ; 0xf3a12
+ sar di, CL ; d3 ff ; 0xf3a15
+ mov cx, di ; 89 f9 ; 0xf3a17
+ mov byte [bp-009h], cl ; 88 4e f7 ; 0xf3a19
+ mov byte [bp-00ah], dh ; 88 76 f6 ; 0xf3a1c
+ mov cl, byte [bp+015h] ; 8a 4e 15 ; 0xf3a1f
+ xor ch, ch ; 30 ed ; 0xf3a22
+ add cx, word [bp-00ah] ; 03 4e f6 ; 0xf3a24
+ mov byte [bp-004h], cl ; 88 4e fc ; 0xf3a27
+ cmp dl, 001h ; 80 fa 01 ; 0xf3a2a floppy.c:1217
+ jbe short 03a32h ; 76 03 ; 0xf3a2d
+ jmp near 0395dh ; e9 2b ff ; 0xf3a2f
+ mov al, bl ; 88 d8 ; 0xf3a32 floppy.c:1225
+ xor ah, ah ; 30 e4 ; 0xf3a34
+ call 0315dh ; e8 24 f7 ; 0xf3a36
+ test ax, ax ; 85 c0 ; 0xf3a39
+ jne short 03a40h ; 75 03 ; 0xf3a3b
+ jmp near 03689h ; e9 49 fc ; 0xf3a3d
+ mov cl, bl ; 88 d9 ; 0xf3a40 floppy.c:1233
+ xor ch, ch ; 30 ed ; 0xf3a42
+ mov ax, cx ; 89 c8 ; 0xf3a44
+ call 02f97h ; e8 4e f5 ; 0xf3a46
+ test ax, ax ; 85 c0 ; 0xf3a49
+ jne short 03a74h ; 75 27 ; 0xf3a4b
+ mov ax, cx ; 89 c8 ; 0xf3a4d floppy.c:1234
+ call 03076h ; e8 24 f6 ; 0xf3a4f
+ test ax, ax ; 85 c0 ; 0xf3a52
+ jne short 03a74h ; 75 1e ; 0xf3a54
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3a56 floppy.c:1235
+ xor ah, ah ; 30 e4 ; 0xf3a59
+ or ah, 00ch ; 80 cc 0c ; 0xf3a5b
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3a5e
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3a61 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a64
+ mov es, ax ; 8e c0 ; 0xf3a67
+ mov byte [es:bx], 00ch ; 26 c6 07 0c ; 0xf3a69
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3a6d
+ jmp near 03267h ; e9 f3 f7 ; 0xf3a71
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf3a74 floppy.c:1243
+ call 01652h ; e8 d8 db ; 0xf3a77
+ test bl, bl ; 84 db ; 0xf3a7a floppy.c:1244
+ jne short 03a86h ; 75 08 ; 0xf3a7c
+ mov CL, strict byte 004h ; b1 04 ; 0xf3a7e floppy.c:1245
+ mov dl, al ; 88 c2 ; 0xf3a80
+ shr dl, CL ; d2 ea ; 0xf3a82
+ jmp short 03a8bh ; eb 05 ; 0xf3a84 floppy.c:1246
+ mov dl, al ; 88 c2 ; 0xf3a86 floppy.c:1247
+ and dl, 00fh ; 80 e2 0f ; 0xf3a88
+ test bl, bl ; 84 db ; 0xf3a8b floppy.c:1250
+ je short 03a94h ; 74 05 ; 0xf3a8d
+ mov si, 00091h ; be 91 00 ; 0xf3a8f
+ jmp short 03a97h ; eb 03 ; 0xf3a92
+ mov si, 00090h ; be 90 00 ; 0xf3a94
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf3a97
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3a9a floppy.c:38
+ mov es, ax ; 8e c0 ; 0xf3a9d
+ mov bl, byte [es:si] ; 26 8a 1c ; 0xf3a9f
+ and bl, 00fh ; 80 e3 0f ; 0xf3aa2 floppy.c:39
+ cmp dl, 003h ; 80 fa 03 ; 0xf3aa5 floppy.c:1256
+ jc short 03ac5h ; 72 1b ; 0xf3aa8
+ mov al, bl ; 88 d8 ; 0xf3aaa
+ or AL, strict byte 090h ; 0c 90 ; 0xf3aac
+ cmp dl, 003h ; 80 fa 03 ; 0xf3aae
+ jbe short 03b01h ; 76 4e ; 0xf3ab1
+ mov ah, bl ; 88 dc ; 0xf3ab3
+ or ah, 010h ; 80 cc 10 ; 0xf3ab5
+ cmp dl, 005h ; 80 fa 05 ; 0xf3ab8
+ je short 03affh ; 74 42 ; 0xf3abb
+ cmp dl, 004h ; 80 fa 04 ; 0xf3abd
+ je short 03b0eh ; 74 4c ; 0xf3ac0
+ jmp near 03b46h ; e9 81 00 ; 0xf3ac2
+ cmp dl, 002h ; 80 fa 02 ; 0xf3ac5
+ je short 03adfh ; 74 15 ; 0xf3ac8
+ cmp dl, 001h ; 80 fa 01 ; 0xf3aca
+ jne short 03b12h ; 75 43 ; 0xf3acd
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3acf floppy.c:1258
+ jne short 03b12h ; 75 3d ; 0xf3ad3
+ cmp bh, 009h ; 80 ff 09 ; 0xf3ad5
+ jne short 03b28h ; 75 4e ; 0xf3ad8
+ or bl, 090h ; 80 cb 90 ; 0xf3ada floppy.c:1259
+ jmp short 03b28h ; eb 49 ; 0xf3add floppy.c:1261
+ cmp byte [bp-004h], 027h ; 80 7e fc 27 ; 0xf3adf floppy.c:1263
+ jne short 03aefh ; 75 0a ; 0xf3ae3
+ cmp bh, 009h ; 80 ff 09 ; 0xf3ae5
+ jne short 03aefh ; 75 05 ; 0xf3ae8
+ or bl, 070h ; 80 cb 70 ; 0xf3aea floppy.c:1264
+ jmp short 03b28h ; eb 39 ; 0xf3aed floppy.c:1265
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3aef
+ jne short 03b46h ; 75 51 ; 0xf3af3
+ cmp bh, 00fh ; 80 ff 0f ; 0xf3af5
+ jne short 03b46h ; 75 4c ; 0xf3af8
+ or bl, 010h ; 80 cb 10 ; 0xf3afa floppy.c:1266
+ jmp short 03b46h ; eb 47 ; 0xf3afd floppy.c:1268
+ jmp short 03b2ah ; eb 29 ; 0xf3aff
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b01 floppy.c:1270
+ jne short 03b46h ; 75 3f ; 0xf3b05
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b07
+ je short 03b10h ; 74 04 ; 0xf3b0a
+ jmp short 03b46h ; eb 38 ; 0xf3b0c
+ jmp short 03b14h ; eb 04 ; 0xf3b0e
+ mov bl, al ; 88 c3 ; 0xf3b10 floppy.c:1271
+ jmp short 03b46h ; eb 32 ; 0xf3b12 floppy.c:1273
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b14 floppy.c:1275
+ jne short 03b46h ; 75 2c ; 0xf3b18
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b1a floppy.c:1276
+ jne short 03b21h ; 75 02 ; 0xf3b1d
+ jmp short 03b10h ; eb ef ; 0xf3b1f
+ cmp bh, 012h ; 80 ff 12 ; 0xf3b21 floppy.c:1277
+ jne short 03b46h ; 75 20 ; 0xf3b24
+ mov bl, ah ; 88 e3 ; 0xf3b26 floppy.c:1279
+ jmp short 03b46h ; eb 1c ; 0xf3b28 floppy.c:1282
+ cmp byte [bp-004h], 04fh ; 80 7e fc 4f ; 0xf3b2a floppy.c:1284
+ jne short 03b46h ; 75 16 ; 0xf3b2e
+ cmp bh, 009h ; 80 ff 09 ; 0xf3b30 floppy.c:1285
+ jne short 03b37h ; 75 02 ; 0xf3b33
+ jmp short 03b10h ; eb d9 ; 0xf3b35
+ cmp bh, 012h ; 80 ff 12 ; 0xf3b37 floppy.c:1286
+ jne short 03b3eh ; 75 02 ; 0xf3b3a
+ jmp short 03b26h ; eb e8 ; 0xf3b3c
+ cmp bh, 024h ; 80 ff 24 ; 0xf3b3e floppy.c:1288
+ jne short 03b46h ; 75 03 ; 0xf3b41
+ or bl, 0d0h ; 80 cb d0 ; 0xf3b43 floppy.c:1290
+ mov al, bl ; 88 d8 ; 0xf3b46 floppy.c:1299
+ xor ah, ah ; 30 e4 ; 0xf3b48
+ mov CL, strict byte 004h ; b1 04 ; 0xf3b4a
+ sar ax, CL ; d3 f8 ; 0xf3b4c
+ test AL, strict byte 001h ; a8 01 ; 0xf3b4e
+ jne short 03b55h ; 75 03 ; 0xf3b50
+ jmp near 03a56h ; e9 01 ff ; 0xf3b52
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b55 floppy.c:43
+ mov es, ax ; 8e c0 ; 0xf3b58
+ mov si, word [bp-00ch] ; 8b 76 f4 ; 0xf3b5a
+ mov byte [es:si], bl ; 26 88 1c ; 0xf3b5d
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf3b60 floppy.c:1312
+ mov al, dl ; 88 d0 ; 0xf3b65 floppy.c:1313
+ xor ah, ah ; 30 e4 ; 0xf3b67
+ call 03ba8h ; e8 3c 00 ; 0xf3b69
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf3b6c
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3b6f floppy.c:1316
+ mov bx, strict word 00041h ; bb 41 00 ; 0xf3b73 floppy.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3b76
+ mov es, ax ; 8e c0 ; 0xf3b79
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3b7b
+ jmp near 034dfh ; e9 5d f9 ; 0xf3b7f
+ mov bx, 00da0h ; bb a0 0d ; 0xf3b82 floppy.c:1322
+ mov cx, ds ; 8c d9 ; 0xf3b85
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3b87
+ call 018cch ; e8 3f dd ; 0xf3b8a
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3b8d
+ xor ah, ah ; 30 e4 ; 0xf3b90
+ push ax ; 50 ; 0xf3b92
+ mov ax, 00275h ; b8 75 02 ; 0xf3b93
+ push ax ; 50 ; 0xf3b96
+ mov ax, 002e2h ; b8 e2 02 ; 0xf3b97
+ push ax ; 50 ; 0xf3b9a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3b9b
+ push ax ; 50 ; 0xf3b9e
+ call 0190fh ; e8 6d dd ; 0xf3b9f
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3ba2
+ jmp near 031f1h ; e9 49 f6 ; 0xf3ba5 floppy.c:68
+ ; disGetNextSymbol 0xf3ba8 LB 0x63a0 -> off=0x0 cb=0000000000000032 uValue=00000000000f25a8 'get_floppy_dpt'
+get_floppy_dpt: ; 0xf3ba8 LB 0x32
+ push bx ; 53 ; 0xf3ba8 floppyt.c:94
+ push dx ; 52 ; 0xf3ba9
+ push bp ; 55 ; 0xf3baa
+ mov bp, sp ; 89 e5 ; 0xf3bab
+ mov dl, al ; 88 c2 ; 0xf3bad
+ xor ax, ax ; 31 c0 ; 0xf3baf floppyt.c:98
+ jmp short 03bb9h ; eb 06 ; 0xf3bb1
+ inc ax ; 40 ; 0xf3bb3 floppyt.c:100
+ cmp ax, strict word 00007h ; 3d 07 00 ; 0xf3bb4
+ jnc short 03bd3h ; 73 1a ; 0xf3bb7
+ mov bx, ax ; 89 c3 ; 0xf3bb9
+ sal bx, 1 ; d1 e3 ; 0xf3bbb
+ cmp dl, byte [word bx+0005bh] ; 3a 97 5b 00 ; 0xf3bbd
+ jne short 03bb3h ; 75 f0 ; 0xf3bc1
+ mov al, byte [word bx+0005ch] ; 8a 87 5c 00 ; 0xf3bc3
+ xor ah, ah ; 30 e4 ; 0xf3bc7
+ mov bx, strict word 0000dh ; bb 0d 00 ; 0xf3bc9
+ imul bx ; f7 eb ; 0xf3bcc
+ add ax, strict word 00000h ; 05 00 00 ; 0xf3bce
+ jmp short 03bd6h ; eb 03 ; 0xf3bd1
+ mov ax, strict word 00041h ; b8 41 00 ; 0xf3bd3 floppyt.c:103
+ pop bp ; 5d ; 0xf3bd6 floppyt.c:104
+ pop dx ; 5a ; 0xf3bd7
+ pop bx ; 5b ; 0xf3bd8
+ retn ; c3 ; 0xf3bd9
+ ; disGetNextSymbol 0xf3bda LB 0x636e -> off=0x0 cb=0000000000000007 uValue=00000000000f25da 'dummy_soft_reset'
+dummy_soft_reset: ; 0xf3bda LB 0x7
+ push bp ; 55 ; 0xf3bda eltorito.c:126
+ mov bp, sp ; 89 e5 ; 0xf3bdb
+ xor ax, ax ; 31 c0 ; 0xf3bdd eltorito.c:129
+ pop bp ; 5d ; 0xf3bdf
+ retn ; c3 ; 0xf3be0
+ ; disGetNextSymbol 0xf3be1 LB 0x6367 -> off=0x0 cb=0000000000000017 uValue=00000000000f25e1 'cdemu_init'
+cdemu_init: ; 0xf3be1 LB 0x17
+ push bp ; 55 ; 0xf3be1 eltorito.c:155
+ mov bp, sp ; 89 e5 ; 0xf3be2
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3be4 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3be7
+ mov es, ax ; 8e c0 ; 0xf3bea
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3bec
+ mov bx, 00366h ; bb 66 03 ; 0xf3bef eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3bf2
+ pop bp ; 5d ; 0xf3bf6 eltorito.c:162
+ retn ; c3 ; 0xf3bf7
+ ; disGetNextSymbol 0xf3bf8 LB 0x6350 -> off=0x0 cb=0000000000000016 uValue=00000000000f25f8 'cdemu_isactive'
+cdemu_isactive: ; 0xf3bf8 LB 0x16
+ push bp ; 55 ; 0xf3bf8 eltorito.c:164
+ mov bp, sp ; 89 e5 ; 0xf3bf9
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3bfb eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3bfe
+ mov es, ax ; 8e c0 ; 0xf3c01
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c03
+ mov bx, 00366h ; bb 66 03 ; 0xf3c06 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c09
+ pop bp ; 5d ; 0xf3c0c eltorito.c:170
+ retn ; c3 ; 0xf3c0d
+ ; disGetNextSymbol 0xf3c0e LB 0x633a -> off=0x0 cb=0000000000000016 uValue=00000000000f260e 'cdemu_emulated_drive'
+cdemu_emulated_drive: ; 0xf3c0e LB 0x16
+ push bp ; 55 ; 0xf3c0e eltorito.c:172
+ mov bp, sp ; 89 e5 ; 0xf3c0f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c11 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c14
+ mov es, ax ; 8e c0 ; 0xf3c17
+ mov es, [es:bx] ; 26 8e 07 ; 0xf3c19
+ mov bx, 00368h ; bb 68 03 ; 0xf3c1c eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf3c1f
+ pop bp ; 5d ; 0xf3c22 eltorito.c:178
+ retn ; c3 ; 0xf3c23
+ ; disGetNextSymbol 0xf3c24 LB 0x6324 -> off=0x0 cb=0000000000000180 uValue=00000000000f2624 'int13_eltorito'
+int13_eltorito: ; 0xf3c24 LB 0x180
+ push bp ; 55 ; 0xf3c24 eltorito.c:184
+ mov bp, sp ; 89 e5 ; 0xf3c25
+ push si ; 56 ; 0xf3c27
+ push di ; 57 ; 0xf3c28
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3c29 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3c2c
+ mov es, ax ; 8e c0 ; 0xf3c2f
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf3c31
+ mov bx, 00366h ; bb 66 03 ; 0xf3c34 eltorito.c:190
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3c37 eltorito.c:196
+ xor ah, ah ; 30 e4 ; 0xf3c3a
+ cmp ax, strict word 0004bh ; 3d 4b 00 ; 0xf3c3c
+ jc short 03c4bh ; 72 0a ; 0xf3c3f
+ jbe short 03c76h ; 76 33 ; 0xf3c41
+ cmp ax, strict word 0004dh ; 3d 4d 00 ; 0xf3c43
+ jbe short 03c50h ; 76 08 ; 0xf3c46
+ jmp near 03d68h ; e9 1d 01 ; 0xf3c48
+ cmp ax, strict word 0004ah ; 3d 4a 00 ; 0xf3c4b
+ jne short 03c73h ; 75 23 ; 0xf3c4e
+ mov bx, 00da0h ; bb a0 0d ; 0xf3c50 eltorito.c:202
+ mov cx, ds ; 8c d9 ; 0xf3c53
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c55
+ call 018cch ; e8 71 dc ; 0xf3c58
+ push word [bp+016h] ; ff 76 16 ; 0xf3c5b
+ mov ax, 002fch ; b8 fc 02 ; 0xf3c5e
+ push ax ; 50 ; 0xf3c61
+ mov ax, 0030bh ; b8 0b 03 ; 0xf3c62
+ push ax ; 50 ; 0xf3c65
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3c66
+ push ax ; 50 ; 0xf3c69
+ call 0190fh ; e8 a2 dc ; 0xf3c6a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf3c6d
+ jmp near 03d83h ; e9 10 01 ; 0xf3c70 eltorito.c:203
+ jmp near 03d68h ; e9 f2 00 ; 0xf3c73
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf3c76 eltorito.c:41
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c79
+ mov byte [es:si], 013h ; 26 c6 04 13 ; 0xf3c7c
+ inc si ; 46 ; 0xf3c80 eltorito.c:210
+ mov ax, es ; 8c c0 ; 0xf3c81 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3c83
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf3c85
+ mov es, ax ; 8e c0 ; 0xf3c89 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c8b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c8e eltorito.c:211
+ inc si ; 46 ; 0xf3c91
+ inc si ; 46 ; 0xf3c92
+ mov es, di ; 8e c7 ; 0xf3c93 eltorito.c:41
+ mov dl, byte [es:bx+002h] ; 26 8a 57 02 ; 0xf3c95
+ mov es, ax ; 8e c0 ; 0xf3c99 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3c9b
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3c9e eltorito.c:212
+ add si, strict byte 00003h ; 83 c6 03 ; 0xf3ca1
+ mov es, di ; 8e c7 ; 0xf3ca4 eltorito.c:41
+ mov dl, byte [es:bx+003h] ; 26 8a 57 03 ; 0xf3ca6
+ mov es, ax ; 8e c0 ; 0xf3caa eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3cac
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3caf eltorito.c:213
+ add si, strict byte 00004h ; 83 c6 04 ; 0xf3cb2
+ mov es, di ; 8e c7 ; 0xf3cb5 eltorito.c:61
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf3cb7
+ mov cx, word [es:bx+00ah] ; 26 8b 4f 0a ; 0xf3cbb
+ mov es, ax ; 8e c0 ; 0xf3cbf eltorito.c:63
+ mov word [es:si], dx ; 26 89 14 ; 0xf3cc1
+ mov word [es:si+002h], cx ; 26 89 4c 02 ; 0xf3cc4
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cc8 eltorito.c:214
+ add si, strict byte 00008h ; 83 c6 08 ; 0xf3ccb
+ mov es, di ; 8e c7 ; 0xf3cce eltorito.c:51
+ mov dx, word [es:bx+004h] ; 26 8b 57 04 ; 0xf3cd0
+ mov es, ax ; 8e c0 ; 0xf3cd4 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3cd6
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cd9 eltorito.c:215
+ add si, strict byte 0000ah ; 83 c6 0a ; 0xf3cdc
+ mov es, di ; 8e c7 ; 0xf3cdf eltorito.c:51
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf3ce1
+ mov es, ax ; 8e c0 ; 0xf3ce5 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3ce7
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cea eltorito.c:216
+ add si, strict byte 0000ch ; 83 c6 0c ; 0xf3ced
+ mov es, di ; 8e c7 ; 0xf3cf0 eltorito.c:51
+ mov dx, word [es:bx+00ch] ; 26 8b 57 0c ; 0xf3cf2
+ mov es, ax ; 8e c0 ; 0xf3cf6 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3cf8
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3cfb eltorito.c:217
+ add si, strict byte 0000eh ; 83 c6 0e ; 0xf3cfe
+ mov es, di ; 8e c7 ; 0xf3d01 eltorito.c:51
+ mov dx, word [es:bx+00eh] ; 26 8b 57 0e ; 0xf3d03
+ mov es, ax ; 8e c0 ; 0xf3d07 eltorito.c:53
+ mov word [es:si], dx ; 26 89 14 ; 0xf3d09
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d0c eltorito.c:218
+ add si, strict byte 00010h ; 83 c6 10 ; 0xf3d0f
+ mov es, di ; 8e c7 ; 0xf3d12 eltorito.c:41
+ mov dl, byte [es:bx+012h] ; 26 8a 57 12 ; 0xf3d14
+ mov es, ax ; 8e c0 ; 0xf3d18 eltorito.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf3d1a
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d1d eltorito.c:219
+ add si, strict byte 00011h ; 83 c6 11 ; 0xf3d20
+ mov dx, ax ; 89 c2 ; 0xf3d23 eltorito.c:41
+ mov es, di ; 8e c7 ; 0xf3d25
+ mov al, byte [es:bx+014h] ; 26 8a 47 14 ; 0xf3d27
+ mov es, dx ; 8e c2 ; 0xf3d2b eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3d2d
+ mov si, word [bp+00ah] ; 8b 76 0a ; 0xf3d30 eltorito.c:220
+ add si, strict byte 00012h ; 83 c6 12 ; 0xf3d33
+ mov es, di ; 8e c7 ; 0xf3d36 eltorito.c:41
+ mov al, byte [es:bx+010h] ; 26 8a 47 10 ; 0xf3d38
+ mov es, dx ; 8e c2 ; 0xf3d3c eltorito.c:43
+ mov byte [es:si], al ; 26 88 04 ; 0xf3d3e
+ test byte [bp+016h], 0ffh ; f6 46 16 ff ; 0xf3d41 eltorito.c:223
+ jne short 03d4dh ; 75 06 ; 0xf3d45
+ mov es, di ; 8e c7 ; 0xf3d47 eltorito.c:225
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d49
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf3d4d eltorito.c:228
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3d51
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3d54
+ mov es, ax ; 8e c0 ; 0xf3d57
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf3d59
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf3d5d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf3d61
+ pop di ; 5f ; 0xf3d64
+ pop si ; 5e ; 0xf3d65
+ pop bp ; 5d ; 0xf3d66
+ retn ; c3 ; 0xf3d67
+ mov bx, 00da0h ; bb a0 0d ; 0xf3d68 eltorito.c:232
+ mov cx, ds ; 8c d9 ; 0xf3d6b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3d6d
+ call 018cch ; e8 59 db ; 0xf3d70
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3d73
+ xor ah, ah ; 30 e4 ; 0xf3d76
+ push ax ; 50 ; 0xf3d78
+ mov ax, 002fch ; b8 fc 02 ; 0xf3d79
+ push ax ; 50 ; 0xf3d7c
+ mov ax, 00333h ; b8 33 03 ; 0xf3d7d
+ jmp near 03c65h ; e9 e2 fe ; 0xf3d80
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf3d83 eltorito.c:238
+ xor ah, ah ; 30 e4 ; 0xf3d86
+ or ah, 001h ; 80 cc 01 ; 0xf3d88
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf3d8b
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf3d8e eltorito.c:239
+ xor ah, ah ; 30 e4 ; 0xf3d91
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf3d93 eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3d96
+ mov es, dx ; 8e c2 ; 0xf3d99
+ mov byte [es:bx], al ; 26 88 07 ; 0xf3d9b
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf3d9e eltorito.c:240
+ jmp short 03d61h ; eb bd ; 0xf3da2 eltorito.c:241
+ ; disGetNextSymbol 0xf3da4 LB 0x61a4 -> off=0x0 cb=0000000000000035 uValue=00000000000f27a4 'device_is_cdrom'
+device_is_cdrom: ; 0xf3da4 LB 0x35
+ push bx ; 53 ; 0xf3da4 eltorito.c:256
+ push dx ; 52 ; 0xf3da5
+ push bp ; 55 ; 0xf3da6
+ mov bp, sp ; 89 e5 ; 0xf3da7
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3da9 eltorito.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf3dac
+ mov es, dx ; 8e c2 ; 0xf3daf
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf3db1
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf3db4 eltorito.c:262
+ jc short 03dbch ; 72 04 ; 0xf3db6
+ xor ax, ax ; 31 c0 ; 0xf3db8 eltorito.c:263
+ jmp short 03dd5h ; eb 19 ; 0xf3dba
+ xor ah, ah ; 30 e4 ; 0xf3dbc eltorito.c:268
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3dbe
+ imul dx ; f7 ea ; 0xf3dc1
+ mov es, bx ; 8e c3 ; 0xf3dc3
+ mov bx, ax ; 89 c3 ; 0xf3dc5
+ add bx, 00122h ; 81 c3 22 01 ; 0xf3dc7
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf3dcb
+ jne short 03db8h ; 75 e6 ; 0xf3dd0
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3dd2 eltorito.c:269
+ pop bp ; 5d ; 0xf3dd5 eltorito.c:272
+ pop dx ; 5a ; 0xf3dd6
+ pop bx ; 5b ; 0xf3dd7
+ retn ; c3 ; 0xf3dd8
+ ; disGetNextSymbol 0xf3dd9 LB 0x616f -> off=0x0 cb=00000000000003ca uValue=00000000000f27d9 'cdrom_boot'
+cdrom_boot: ; 0xf3dd9 LB 0x3ca
+ push bp ; 55 ; 0xf3dd9 eltorito.c:282
+ mov bp, sp ; 89 e5 ; 0xf3dda
+ push bx ; 53 ; 0xf3ddc
+ push cx ; 51 ; 0xf3ddd
+ push dx ; 52 ; 0xf3dde
+ push si ; 56 ; 0xf3ddf
+ push di ; 57 ; 0xf3de0
+ sub sp, 0081ch ; 81 ec 1c 08 ; 0xf3de1
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf3de5 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf3de8
+ mov es, ax ; 8e c0 ; 0xf3deb
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf3ded
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf3df0 eltorito.c:49
+ mov si, 00366h ; be 66 03 ; 0xf3df3 eltorito.c:295
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf3df6
+ mov word [bp-018h], 00122h ; c7 46 e8 22 01 ; 0xf3df9 eltorito.c:296
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf3dfe
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf3e01 eltorito.c:299
+ jmp short 03e10h ; eb 09 ; 0xf3e05
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf3e07 eltorito.c:302
+ cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3e0a
+ jnc short 03e1ch ; 73 0c ; 0xf3e0e
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e10
+ xor ah, ah ; 30 e4 ; 0xf3e13
+ call 03da4h ; e8 8c ff ; 0xf3e15
+ test ax, ax ; 85 c0 ; 0xf3e18
+ je short 03e07h ; 74 eb ; 0xf3e1a
+ cmp byte [bp-00ch], 010h ; 80 7e f4 10 ; 0xf3e1c eltorito.c:305
+ jc short 03e28h ; 72 06 ; 0xf3e20
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf3e22 eltorito.c:306
+ jmp near 04199h ; e9 71 03 ; 0xf3e25
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf3e28 eltorito.c:309
+ xor bx, bx ; 31 db ; 0xf3e2b
+ mov dx, ss ; 8c d2 ; 0xf3e2d
+ lea ax, [bp-026h] ; 8d 46 da ; 0xf3e2f
+ call 09c30h ; e8 fb 5d ; 0xf3e32
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3e35 eltorito.c:310
+ mov ax, strict word 00011h ; b8 11 00 ; 0xf3e3a eltorito.c:311
+ xor dx, dx ; 31 d2 ; 0xf3e3d
+ xchg ah, al ; 86 c4 ; 0xf3e3f
+ xchg dh, dl ; 86 d6 ; 0xf3e41
+ xchg dx, ax ; 92 ; 0xf3e43
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3e44
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3e47
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e4a eltorito.c:312
+ xchg ah, al ; 86 c4 ; 0xf3e4d
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3e4f
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf3e52 eltorito.c:314
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf3e55
+ mov word [es:bx+010h], 00800h ; 26 c7 47 10 00 08 ; 0xf3e5b eltorito.c:315
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf3e61 eltorito.c:317
+ jmp short 03e70h ; eb 09 ; 0xf3e65
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf3e67 eltorito.c:322
+ cmp byte [bp-00eh], 004h ; 80 7e f2 04 ; 0xf3e6a
+ jnbe short 03eb2h ; 77 42 ; 0xf3e6e
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e70
+ xor ah, ah ; 30 e4 ; 0xf3e73
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3e75
+ imul dx ; f7 ea ; 0xf3e78
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf3e7a
+ add bx, ax ; 01 c3 ; 0xf3e7d
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3e7f
+ xor ah, ah ; 30 e4 ; 0xf3e83
+ mov di, ax ; 89 c7 ; 0xf3e85
+ sal di, 1 ; d1 e7 ; 0xf3e87
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3e89
+ push SS ; 16 ; 0xf3e8d
+ push dx ; 52 ; 0xf3e8e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3e8f
+ push ax ; 50 ; 0xf3e92
+ xor ax, ax ; 31 c0 ; 0xf3e93
+ push ax ; 50 ; 0xf3e95
+ mov ax, 00800h ; b8 00 08 ; 0xf3e96
+ push ax ; 50 ; 0xf3e99
+ xor ax, ax ; 31 c0 ; 0xf3e9a
+ push ax ; 50 ; 0xf3e9c
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3e9d
+ xor ah, ah ; 30 e4 ; 0xf3ea0
+ mov cx, ss ; 8c d1 ; 0xf3ea2
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3ea4
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3ea7
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3eaa
+ test ax, ax ; 85 c0 ; 0xf3eae
+ jne short 03e67h ; 75 b5 ; 0xf3eb0
+ test ax, ax ; 85 c0 ; 0xf3eb2 eltorito.c:323
+ je short 03ebch ; 74 06 ; 0xf3eb4
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf3eb6 eltorito.c:324
+ jmp near 04199h ; e9 dd 02 ; 0xf3eb9
+ cmp byte [bp-00826h], 000h ; 80 be da f7 00 ; 0xf3ebc eltorito.c:327
+ je short 03ec9h ; 74 06 ; 0xf3ec1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf3ec3 eltorito.c:328
+ jmp near 04199h ; e9 d0 02 ; 0xf3ec6
+ xor di, di ; 31 ff ; 0xf3ec9 eltorito.c:330
+ jmp short 03ed3h ; eb 06 ; 0xf3ecb
+ inc di ; 47 ; 0xf3ecd eltorito.c:332
+ cmp di, strict byte 00005h ; 83 ff 05 ; 0xf3ece
+ jnc short 03ee3h ; 73 10 ; 0xf3ed1
+ mov al, byte [bp+di-00825h] ; 8a 83 db f7 ; 0xf3ed3
+ cmp al, byte [di+00da8h] ; 3a 85 a8 0d ; 0xf3ed7
+ je short 03ecdh ; 74 f0 ; 0xf3edb
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf3edd
+ jmp near 04199h ; e9 b6 02 ; 0xf3ee0
+ xor di, di ; 31 ff ; 0xf3ee3 eltorito.c:334
+ jmp short 03eedh ; eb 06 ; 0xf3ee5
+ inc di ; 47 ; 0xf3ee7 eltorito.c:336
+ cmp di, strict byte 00017h ; 83 ff 17 ; 0xf3ee8
+ jnc short 03efdh ; 73 10 ; 0xf3eeb
+ mov al, byte [bp+di-0081fh] ; 8a 83 e1 f7 ; 0xf3eed
+ cmp al, byte [di+00daeh] ; 3a 85 ae 0d ; 0xf3ef1
+ je short 03ee7h ; 74 f0 ; 0xf3ef5
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf3ef7
+ jmp near 04199h ; e9 9c 02 ; 0xf3efa
+ mov ax, word [bp-007dfh] ; 8b 86 21 f8 ; 0xf3efd eltorito.c:339
+ mov dx, word [bp-007ddh] ; 8b 96 23 f8 ; 0xf3f01
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf3f05 eltorito.c:343
+ xchg ah, al ; 86 c4 ; 0xf3f0a eltorito.c:344
+ xchg dh, dl ; 86 d6 ; 0xf3f0c
+ xchg dx, ax ; 92 ; 0xf3f0e
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf3f0f
+ mov word [bp-022h], dx ; 89 56 de ; 0xf3f12
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3f15 eltorito.c:345
+ xchg ah, al ; 86 c4 ; 0xf3f18
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf3f1a
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f1d eltorito.c:352
+ xor ah, ah ; 30 e4 ; 0xf3f20
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf3f22
+ imul dx ; f7 ea ; 0xf3f25
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf3f27
+ add bx, ax ; 01 c3 ; 0xf3f2a
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf3f2c
+ xor ah, ah ; 30 e4 ; 0xf3f30
+ mov di, ax ; 89 c7 ; 0xf3f32
+ sal di, 1 ; d1 e7 ; 0xf3f34
+ lea dx, [bp-00826h] ; 8d 96 da f7 ; 0xf3f36
+ push SS ; 16 ; 0xf3f3a
+ push dx ; 52 ; 0xf3f3b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf3f3c
+ push ax ; 50 ; 0xf3f3f
+ xor ax, ax ; 31 c0 ; 0xf3f40
+ push ax ; 50 ; 0xf3f42
+ mov ax, 00800h ; b8 00 08 ; 0xf3f43
+ push ax ; 50 ; 0xf3f46
+ xor ax, ax ; 31 c0 ; 0xf3f47
+ push ax ; 50 ; 0xf3f49
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf3f4a
+ xor ah, ah ; 30 e4 ; 0xf3f4d
+ mov cx, ss ; 8c d1 ; 0xf3f4f
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf3f51
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf3f54
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf3f57
+ test ax, ax ; 85 c0 ; 0xf3f5b eltorito.c:353
+ je short 03f65h ; 74 06 ; 0xf3f5d
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf3f5f eltorito.c:354
+ jmp near 04199h ; e9 34 02 ; 0xf3f62
+ cmp byte [bp-00826h], 001h ; 80 be da f7 01 ; 0xf3f65 eltorito.c:359
+ je short 03f72h ; 74 06 ; 0xf3f6a
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf3f6c eltorito.c:360
+ jmp near 04199h ; e9 27 02 ; 0xf3f6f
+ cmp byte [bp-00825h], 000h ; 80 be db f7 00 ; 0xf3f72 eltorito.c:361
+ je short 03f7fh ; 74 06 ; 0xf3f77
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf3f79 eltorito.c:362
+ jmp near 04199h ; e9 1a 02 ; 0xf3f7c
+ cmp byte [bp-00808h], 055h ; 80 be f8 f7 55 ; 0xf3f7f eltorito.c:363
+ je short 03f8ch ; 74 06 ; 0xf3f84
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf3f86 eltorito.c:364
+ jmp near 04199h ; e9 0d 02 ; 0xf3f89
+ cmp byte [bp-00807h], 0aah ; 80 be f9 f7 aa ; 0xf3f8c eltorito.c:365
+ jne short 03f86h ; 75 f3 ; 0xf3f91
+ cmp byte [bp-00806h], 088h ; 80 be fa f7 88 ; 0xf3f93 eltorito.c:366
+ je short 03fa0h ; 74 06 ; 0xf3f98
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf3f9a eltorito.c:370
+ jmp near 04199h ; e9 f9 01 ; 0xf3f9d
+ mov al, byte [bp-00805h] ; 8a 86 fb f7 ; 0xf3fa0 eltorito.c:372
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf3fa4
+ mov byte [es:si+001h], al ; 26 88 44 01 ; 0xf3fa7
+ cmp byte [bp-00805h], 000h ; 80 be fb f7 00 ; 0xf3fab eltorito.c:373
+ jne short 03fb9h ; 75 07 ; 0xf3fb0
+ mov byte [es:si+002h], 0e0h ; 26 c6 44 02 e0 ; 0xf3fb2 eltorito.c:376
+ jmp short 03fcch ; eb 13 ; 0xf3fb7 eltorito.c:378
+ cmp byte [bp-00805h], 004h ; 80 be fb f7 04 ; 0xf3fb9
+ jnc short 03fc7h ; 73 07 ; 0xf3fbe
+ mov byte [es:si+002h], 000h ; 26 c6 44 02 00 ; 0xf3fc0 eltorito.c:379
+ jmp short 03fcch ; eb 05 ; 0xf3fc5 eltorito.c:380
+ mov byte [es:si+002h], 080h ; 26 c6 44 02 80 ; 0xf3fc7 eltorito.c:381
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf3fcc eltorito.c:383
+ xor bh, bh ; 30 ff ; 0xf3fcf
+ mov ax, bx ; 89 d8 ; 0xf3fd1
+ cwd ; 99 ; 0xf3fd3
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf3fd4
+ sar ax, 1 ; d1 f8 ; 0xf3fd6
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf3fd8
+ mov byte [es:si+003h], al ; 26 88 44 03 ; 0xf3fdb
+ mov ax, bx ; 89 d8 ; 0xf3fdf eltorito.c:384
+ cwd ; 99 ; 0xf3fe1
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf3fe2
+ idiv bx ; f7 fb ; 0xf3fe5
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf3fe7
+ mov ax, word [bp-00804h] ; 8b 86 fc f7 ; 0xf3feb eltorito.c:386
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf3fef
+ test ax, ax ; 85 c0 ; 0xf3ff2 eltorito.c:387
+ jne short 03ffbh ; 75 05 ; 0xf3ff4
+ mov word [bp-010h], 007c0h ; c7 46 f0 c0 07 ; 0xf3ff6 eltorito.c:388
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf3ffb eltorito.c:390
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf3ffe
+ mov word [es:si+00ch], ax ; 26 89 44 0c ; 0xf4001
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf4005 eltorito.c:391
+ mov bx, word [bp-00800h] ; 8b 9e 00 f8 ; 0xf400b eltorito.c:393
+ mov word [es:si+00eh], bx ; 26 89 5c 0e ; 0xf400f eltorito.c:394
+ test bx, bx ; 85 db ; 0xf4013 eltorito.c:399
+ je short 0401dh ; 74 06 ; 0xf4015
+ cmp bx, 00400h ; 81 fb 00 04 ; 0xf4017
+ jbe short 04023h ; 76 06 ; 0xf401b
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf401d eltorito.c:400
+ jmp near 04199h ; e9 76 01 ; 0xf4020
+ mov ax, word [bp-007feh] ; 8b 86 02 f8 ; 0xf4023 eltorito.c:402
+ mov dx, word [bp-007fch] ; 8b 96 04 f8 ; 0xf4027
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf402b eltorito.c:403
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf402f
+ mov word [bp-026h], strict word 00028h ; c7 46 da 28 00 ; 0xf4033 eltorito.c:409
+ xchg ah, al ; 86 c4 ; 0xf4038 eltorito.c:410
+ xchg dh, dl ; 86 d6 ; 0xf403a
+ xchg dx, ax ; 92 ; 0xf403c
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf403d
+ mov word [bp-022h], dx ; 89 56 de ; 0xf4040
+ lea dx, [bx-001h] ; 8d 57 ff ; 0xf4043 eltorito.c:411
+ shr dx, 1 ; d1 ea ; 0xf4046
+ shr dx, 1 ; d1 ea ; 0xf4048
+ inc dx ; 42 ; 0xf404a
+ mov ax, dx ; 89 d0 ; 0xf404b
+ xchg ah, al ; 86 c4 ; 0xf404d
+ mov word [bp-01fh], ax ; 89 46 e1 ; 0xf404f
+ les di, [bp-018h] ; c4 7e e8 ; 0xf4052 eltorito.c:413
+ mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf4055
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf4059 eltorito.c:414
+ mov CL, strict byte 009h ; b1 09 ; 0xf405f eltorito.c:416
+ mov ax, bx ; 89 d8 ; 0xf4061
+ sal ax, CL ; d3 e0 ; 0xf4063
+ mov dx, 00800h ; ba 00 08 ; 0xf4065
+ sub dx, ax ; 29 c2 ; 0xf4068
+ mov ax, dx ; 89 d0 ; 0xf406a
+ and ah, 007h ; 80 e4 07 ; 0xf406c
+ mov word [es:di+020h], ax ; 26 89 45 20 ; 0xf406f
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4073 eltorito.c:418
+ xor ah, ah ; 30 e4 ; 0xf4076
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4078
+ imul dx ; f7 ea ; 0xf407b
+ add di, ax ; 01 c7 ; 0xf407d
+ mov al, byte [es:di+022h] ; 26 8a 45 22 ; 0xf407f
+ xor ah, ah ; 30 e4 ; 0xf4083
+ sal ax, 1 ; d1 e0 ; 0xf4085
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4087
+ push word [bp-010h] ; ff 76 f0 ; 0xf408a
+ xor ax, ax ; 31 c0 ; 0xf408d
+ push ax ; 50 ; 0xf408f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4090
+ push ax ; 50 ; 0xf4093
+ mov ax, bx ; 89 d8 ; 0xf4094
+ xor di, di ; 31 ff ; 0xf4096
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4098
+ sal ax, 1 ; d1 e0 ; 0xf409b
+ rcl di, 1 ; d1 d7 ; 0xf409d
+ loop 0409bh ; e2 fa ; 0xf409f
+ push di ; 57 ; 0xf40a1
+ push ax ; 50 ; 0xf40a2
+ xor ax, ax ; 31 c0 ; 0xf40a3
+ push ax ; 50 ; 0xf40a5
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf40a6
+ xor ah, ah ; 30 e4 ; 0xf40a9
+ mov cx, ss ; 8c d1 ; 0xf40ab
+ lea bx, [bp-026h] ; 8d 5e da ; 0xf40ad
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf40b0
+ mov di, word [bp-01ah] ; 8b 7e e6 ; 0xf40b3
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf40b6
+ les bx, [bp-018h] ; c4 5e e8 ; 0xf40ba eltorito.c:420
+ mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00 ; 0xf40bd
+ test ax, ax ; 85 c0 ; 0xf40c3 eltorito.c:422
+ je short 040cdh ; 74 06 ; 0xf40c5
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf40c7 eltorito.c:423
+ jmp near 04199h ; e9 cc 00 ; 0xf40ca
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf40cd eltorito.c:428
+ mov al, byte [es:si+001h] ; 26 8a 44 01 ; 0xf40d0
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf40d4
+ jc short 040e4h ; 72 0c ; 0xf40d6
+ jbe short 040ffh ; 76 25 ; 0xf40d8
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf40da
+ je short 0410fh ; 74 31 ; 0xf40dc
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf40de
+ je short 04107h ; 74 25 ; 0xf40e0
+ jmp short 04154h ; eb 70 ; 0xf40e2
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf40e4
+ jne short 04154h ; 75 6c ; 0xf40e6
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf40e8 eltorito.c:430
+ mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00 ; 0xf40eb
+ mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00 ; 0xf40f1 eltorito.c:431
+ mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00 ; 0xf40f7 eltorito.c:432
+ jmp short 04154h ; eb 55 ; 0xf40fd eltorito.c:433
+ mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00 ; 0xf40ff eltorito.c:435
+ jmp short 040f1h ; eb ea ; 0xf4105
+ mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00 ; 0xf4107 eltorito.c:440
+ jmp short 040f1h ; eb e2 ; 0xf410d
+ mov bx, 001c4h ; bb c4 01 ; 0xf410f eltorito.c:38
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4112
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4115
+ and AL, strict byte 03fh ; 24 3f ; 0xf4118 eltorito.c:39
+ xor ah, ah ; 30 e4 ; 0xf411a
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf411c
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf411f
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4123 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4126
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf4129 eltorito.c:39
+ mov dx, ax ; 89 c2 ; 0xf412b
+ sal dx, 1 ; d1 e2 ; 0xf412d
+ sal dx, 1 ; d1 e2 ; 0xf412f
+ mov bx, 001c5h ; bb c5 01 ; 0xf4131 eltorito.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4134
+ add ax, dx ; 01 d0 ; 0xf4137 eltorito.c:39
+ inc ax ; 40 ; 0xf4139
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf413a
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf413d
+ mov bx, 001c3h ; bb c3 01 ; 0xf4141 eltorito.c:38
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf4144
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4147
+ xor ah, ah ; 30 e4 ; 0xf414a eltorito.c:39
+ inc ax ; 40 ; 0xf414c
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf414d
+ mov word [es:si+010h], ax ; 26 89 44 10 ; 0xf4150
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4154 eltorito.c:453
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4157
+ je short 04182h ; 74 24 ; 0xf415c
+ cmp byte [es:si+002h], 000h ; 26 80 7c 02 00 ; 0xf415e eltorito.c:455
+ jne short 04174h ; 75 0f ; 0xf4163
+ mov bx, strict word 00010h ; bb 10 00 ; 0xf4165 eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4168
+ mov es, ax ; 8e c0 ; 0xf416b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf416d
+ or AL, strict byte 041h ; 0c 41 ; 0xf4170 eltorito.c:39
+ jmp short 0417fh ; eb 0b ; 0xf4172 eltorito.c:457
+ mov bx, 00304h ; bb 04 03 ; 0xf4174 eltorito.c:38
+ mov es, [bp-012h] ; 8e 46 ee ; 0xf4177
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf417a
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf417d eltorito.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf417f eltorito.c:43
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4182 eltorito.c:462
+ cmp byte [es:si+001h], 000h ; 26 80 7c 01 00 ; 0xf4185
+ je short 04190h ; 74 04 ; 0xf418a
+ mov byte [es:si], 001h ; 26 c6 04 01 ; 0xf418c eltorito.c:463
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4190 eltorito.c:466
+ mov ah, byte [es:si+002h] ; 26 8a 64 02 ; 0xf4193
+ xor al, al ; 30 c0 ; 0xf4197
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf4199 eltorito.c:467
+ pop di ; 5f ; 0xf419c
+ pop si ; 5e ; 0xf419d
+ pop dx ; 5a ; 0xf419e
+ pop cx ; 59 ; 0xf419f
+ pop bx ; 5b ; 0xf41a0
+ pop bp ; 5d ; 0xf41a1
+ retn ; c3 ; 0xf41a2
+ ; disGetNextSymbol 0xf41a3 LB 0x5da5 -> off=0x59 cb=00000000000005ff uValue=00000000000f2bfc 'int13_cdemu'
+ db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
+ db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 0dch, 047h, 0a8h
+ db 042h, 0ddh, 042h, 0fbh, 042h, 0d2h, 042h, 0fbh, 042h, 0d2h, 042h, 014h, 045h, 0f9h, 044h, 0dch
+ db 047h, 0dch, 047h, 0f9h, 044h, 0f9h, 044h, 0f9h, 044h, 0f9h, 044h, 0f9h, 044h, 0c2h, 045h, 0f9h
+ db 044h, 0dch, 047h, 0cbh, 045h, 0deh, 045h, 0dch, 047h, 0deh, 045h, 0dch, 047h, 0dch, 047h, 0deh
+ db 045h, 0a4h, 047h, 0dch, 047h, 0dch, 047h, 0dch, 047h
+int13_cdemu: ; 0xf41fc LB 0x5ff
+ push bp ; 55 ; 0xf41fc eltorito.c:477
+ mov bp, sp ; 89 e5 ; 0xf41fd
+ push si ; 56 ; 0xf41ff
+ push di ; 57 ; 0xf4200
+ sub sp, strict byte 0003ah ; 83 ec 3a ; 0xf4201
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf4204 eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4207
+ mov es, ax ; 8e c0 ; 0xf420a
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf420c
+ mov dx, 00366h ; ba 66 03 ; 0xf420f eltorito.c:493
+ mov cx, ax ; 89 c1 ; 0xf4212
+ mov bx, dx ; 89 d3 ; 0xf4214
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4216
+ mov si, 00122h ; be 22 01 ; 0xf4219 eltorito.c:494
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf421c
+ mov es, ax ; 8e c0 ; 0xf421f eltorito.c:501
+ mov di, dx ; 89 d7 ; 0xf4221
+ mov al, byte [es:di+003h] ; 26 8a 45 03 ; 0xf4223
+ sal al, 1 ; d0 e0 ; 0xf4227
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4229
+ mov al, byte [es:di+004h] ; 26 8a 45 04 ; 0xf422c eltorito.c:502
+ add byte [bp-006h], al ; 00 46 fa ; 0xf4230
+ mov di, strict word 00074h ; bf 74 00 ; 0xf4233 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4236
+ mov es, ax ; 8e c0 ; 0xf4239
+ mov byte [es:di], 000h ; 26 c6 05 00 ; 0xf423b
+ mov es, cx ; 8e c1 ; 0xf423f eltorito.c:507
+ mov di, dx ; 89 d7 ; 0xf4241
+ cmp byte [es:di], 000h ; 26 80 3d 00 ; 0xf4243
+ je short 04258h ; 74 0f ; 0xf4247
+ mov al, byte [es:di+002h] ; 26 8a 45 02 ; 0xf4249
+ xor ah, ah ; 30 e4 ; 0xf424d
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf424f
+ xor dh, dh ; 30 f6 ; 0xf4252
+ cmp ax, dx ; 39 d0 ; 0xf4254
+ je short 04282h ; 74 2a ; 0xf4256
+ mov bx, 00da0h ; bb a0 0d ; 0xf4258 eltorito.c:508
+ mov cx, ds ; 8c d9 ; 0xf425b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf425d
+ call 018cch ; e8 69 d6 ; 0xf4260
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf4263
+ xor ah, ah ; 30 e4 ; 0xf4266
+ push ax ; 50 ; 0xf4268
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4269
+ push ax ; 50 ; 0xf426c
+ mov ax, 0034ch ; b8 4c 03 ; 0xf426d
+ push ax ; 50 ; 0xf4270
+ mov ax, 00358h ; b8 58 03 ; 0xf4271
+ push ax ; 50 ; 0xf4274
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4275
+ push ax ; 50 ; 0xf4278
+ call 0190fh ; e8 93 d6 ; 0xf4279
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf427c
+ jmp near 047bah ; e9 38 05 ; 0xf427f eltorito.c:509
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf4282 eltorito.c:512
+ xor ah, ah ; 30 e4 ; 0xf4285
+ mov dx, ax ; 89 c2 ; 0xf4287
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf4289
+ jnbe short 042f8h ; 77 6a ; 0xf428c
+ push CS ; 0e ; 0xf428e
+ pop ES ; 07 ; 0xf428f
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf4290
+ mov di, 041a3h ; bf a3 41 ; 0xf4293
+ repne scasb ; f2 ae ; 0xf4296
+ sal cx, 1 ; d1 e1 ; 0xf4298
+ mov di, cx ; 89 cf ; 0xf429a
+ mov dx, word [cs:di+041c0h] ; 2e 8b 95 c0 41 ; 0xf429c
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42a1
+ xor ah, ah ; 30 e4 ; 0xf42a4
+ jmp dx ; ff e2 ; 0xf42a6
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42a8 eltorito.c:515
+ xor ah, ah ; 30 e4 ; 0xf42ab
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf42ad
+ imul dx ; f7 ea ; 0xf42b0
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf42b2
+ add si, ax ; 01 c6 ; 0xf42b5
+ mov bl, byte [es:si+022h] ; 26 8a 5c 22 ; 0xf42b7
+ xor bh, bh ; 30 ff ; 0xf42bb
+ sal bx, 1 ; d1 e3 ; 0xf42bd
+ cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00 ; 0xf42bf
+ je short 042cfh ; 74 09 ; 0xf42c4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf42c6 eltorito.c:517
+ xor ah, ah ; 30 e4 ; 0xf42c9
+ call word [word bx+00076h] ; ff 97 76 00 ; 0xf42cb
+ jmp near 044f9h ; e9 27 02 ; 0xf42cf eltorito.c:519
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf42d2 eltorito.c:535
+ xor ah, ah ; 30 e4 ; 0xf42d5
+ or ah, 003h ; 80 cc 03 ; 0xf42d7
+ jmp near 047c2h ; e9 e5 04 ; 0xf42da eltorito.c:536
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf42dd eltorito.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf42e0
+ mov es, dx ; 8e c2 ; 0xf42e3
+ mov cl, byte [es:bx] ; 26 8a 0f ; 0xf42e5
+ mov ah, cl ; 88 cc ; 0xf42e8 eltorito.c:541
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf42ea
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf42ed eltorito.c:43
+ test cl, cl ; 84 c9 ; 0xf42f1 eltorito.c:545
+ je short 0435ch ; 74 67 ; 0xf42f3
+ jmp near 047d5h ; e9 dd 04 ; 0xf42f5 eltorito.c:546
+ jmp near 047dch ; e9 e1 04 ; 0xf42f8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf42fb eltorito.c:553
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf42fe
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf4302
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf4305 eltorito.c:554
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4309 eltorito.c:555
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf430d
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf4310 eltorito.c:556
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf4314
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf4317
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf431b
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf431e eltorito.c:558
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf4321
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf4324
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf4327 eltorito.c:559
+ and bx, 000c0h ; 81 e3 c0 00 ; 0xf432a
+ sal bx, 1 ; d1 e3 ; 0xf432e
+ sal bx, 1 ; d1 e3 ; 0xf4330
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf4332
+ or ax, bx ; 09 d8 ; 0xf4335
+ mov bl, byte [bp+013h] ; 8a 5e 13 ; 0xf4337 eltorito.c:560
+ xor bh, bh ; 30 ff ; 0xf433a
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf433c
+ mov di, word [bp+016h] ; 8b 7e 16 ; 0xf433f eltorito.c:561
+ and di, 000ffh ; 81 e7 ff 00 ; 0xf4342
+ je short 04369h ; 74 21 ; 0xf4346 eltorito.c:569
+ mov cx, word [bp-01ch] ; 8b 4e e4 ; 0xf4348 eltorito.c:573
+ cmp cx, word [bp-028h] ; 3b 4e d8 ; 0xf434b
+ jnbe short 04359h ; 77 09 ; 0xf434e
+ cmp ax, dx ; 39 d0 ; 0xf4350
+ jnc short 04359h ; 73 05 ; 0xf4352
+ cmp bx, word [bp-00ch] ; 3b 5e f4 ; 0xf4354
+ jc short 0435fh ; 72 06 ; 0xf4357
+ jmp near 047bah ; e9 5e 04 ; 0xf4359 eltorito.c:576
+ jmp near 044fdh ; e9 9e 01 ; 0xf435c
+ mov dl, byte [bp+017h] ; 8a 56 17 ; 0xf435f eltorito.c:580
+ xor dh, dh ; 30 f6 ; 0xf4362
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4364
+ jne short 0436ch ; 75 03 ; 0xf4367
+ jmp near 044f9h ; e9 8d 01 ; 0xf4369 eltorito.c:581
+ mov CL, strict byte 004h ; b1 04 ; 0xf436c eltorito.c:583
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf436e
+ shr dx, CL ; d3 ea ; 0xf4371
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf4373
+ add bx, dx ; 01 d3 ; 0xf4376
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf4378
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf437b eltorito.c:584
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf437e
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf4381
+ xor dl, dl ; 30 d2 ; 0xf4384 eltorito.c:587
+ mov bx, word [bp-00ch] ; 8b 5e f4 ; 0xf4386
+ xor cx, cx ; 31 c9 ; 0xf4389
+ call 09bc0h ; e8 32 58 ; 0xf438b
+ xor bx, bx ; 31 db ; 0xf438e
+ add ax, word [bp-014h] ; 03 46 ec ; 0xf4390
+ adc dx, bx ; 11 da ; 0xf4393
+ mov bx, word [bp-028h] ; 8b 5e d8 ; 0xf4395
+ xor cx, cx ; 31 c9 ; 0xf4398
+ call 09bc0h ; e8 23 58 ; 0xf439a
+ mov bx, dx ; 89 d3 ; 0xf439d
+ mov dx, word [bp-01ch] ; 8b 56 e4 ; 0xf439f
+ dec dx ; 4a ; 0xf43a2
+ mov word [bp-026h], strict word 00000h ; c7 46 da 00 00 ; 0xf43a3
+ add dx, ax ; 01 c2 ; 0xf43a8
+ adc bx, word [bp-026h] ; 13 5e da ; 0xf43aa
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf43ad eltorito.c:590
+ xor al, al ; 30 c0 ; 0xf43b0
+ or ax, di ; 09 f8 ; 0xf43b2
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf43b4
+ mov word [bp-02eh], dx ; 89 56 d2 ; 0xf43b7 eltorito.c:593
+ mov word [bp-02ch], bx ; 89 5e d4 ; 0xf43ba
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf43bd
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf43c0
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf43c3
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf43c6
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf43c9
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf43cc
+ mov ax, dx ; 89 d0 ; 0xf43cf eltorito.c:594
+ xor ah, dh ; 30 f4 ; 0xf43d1
+ and AL, strict byte 003h ; 24 03 ; 0xf43d3
+ mov word [bp-022h], ax ; 89 46 de ; 0xf43d5
+ xor cx, cx ; 31 c9 ; 0xf43d8 eltorito.c:597
+ mov ax, dx ; 89 d0 ; 0xf43da
+ add ax, di ; 01 f8 ; 0xf43dc
+ mov dx, bx ; 89 da ; 0xf43de
+ adc dx, cx ; 11 ca ; 0xf43e0
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf43e2
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf43e5
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf43e8
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf43eb
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf43ee
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf43f1
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf43f4
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf43f7
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf43fa eltorito.c:599
+ xor bx, bx ; 31 db ; 0xf43fd
+ mov dx, ss ; 8c d2 ; 0xf43ff
+ lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf4401
+ call 09c30h ; e8 29 58 ; 0xf4404
+ mov word [bp-03eh], strict word 00028h ; c7 46 c2 28 00 ; 0xf4407 eltorito.c:600
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf440c eltorito.c:601
+ add ax, word [bp-02eh] ; 03 46 d2 ; 0xf440f
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf4412
+ adc dx, word [bp-02ah] ; 13 56 d6 ; 0xf4415
+ xchg ah, al ; 86 c4 ; 0xf4418
+ xchg dh, dl ; 86 d6 ; 0xf441a
+ xchg dx, ax ; 92 ; 0xf441c
+ mov word [bp-03ch], ax ; 89 46 c4 ; 0xf441d
+ mov word [bp-03ah], dx ; 89 56 c6 ; 0xf4420
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf4423 eltorito.c:602
+ sub ax, word [bp-02eh] ; 2b 46 d2 ; 0xf4426
+ inc ax ; 40 ; 0xf4429
+ xchg ah, al ; 86 c4 ; 0xf442a
+ mov word [bp-037h], ax ; 89 46 c9 ; 0xf442c
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf442f eltorito.c:604
+ mov word [es:si+00eh], di ; 26 89 7c 0e ; 0xf4432
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf4436 eltorito.c:605
+ mov CL, strict byte 009h ; b1 09 ; 0xf443c eltorito.c:607
+ mov ax, word [bp-022h] ; 8b 46 de ; 0xf443e
+ sal ax, CL ; d3 e0 ; 0xf4441
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf4443
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf4446
+ mov ax, di ; 89 f8 ; 0xf444a eltorito.c:608
+ xor ah, ah ; 30 e4 ; 0xf444c
+ and AL, strict byte 003h ; 24 03 ; 0xf444e
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf4450
+ sub dx, ax ; 29 c2 ; 0xf4453
+ mov ax, dx ; 89 d0 ; 0xf4455
+ sub ax, word [bp-022h] ; 2b 46 de ; 0xf4457
+ sal ax, CL ; d3 e0 ; 0xf445a
+ and ah, 007h ; 80 e4 07 ; 0xf445c
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf445f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4463 eltorito.c:610
+ xor ah, ah ; 30 e4 ; 0xf4466
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4468
+ imul dx ; f7 ea ; 0xf446b
+ mov bx, si ; 89 f3 ; 0xf446d
+ add bx, ax ; 01 c3 ; 0xf446f
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4471
+ xor ah, ah ; 30 e4 ; 0xf4475
+ sal ax, 1 ; d1 e0 ; 0xf4477
+ mov word [bp-026h], ax ; 89 46 da ; 0xf4479
+ push word [bp-012h] ; ff 76 ee ; 0xf447c
+ push word [bp-010h] ; ff 76 f0 ; 0xf447f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4482
+ push ax ; 50 ; 0xf4485
+ mov bx, di ; 89 fb ; 0xf4486
+ xor di, di ; 31 ff ; 0xf4488
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf448a
+ sal bx, 1 ; d1 e3 ; 0xf448d
+ rcl di, 1 ; d1 d7 ; 0xf448f
+ loop 0448dh ; e2 fa ; 0xf4491
+ push di ; 57 ; 0xf4493
+ push bx ; 53 ; 0xf4494
+ push word [bp-024h] ; ff 76 dc ; 0xf4495
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4498
+ xor ah, ah ; 30 e4 ; 0xf449b
+ mov cx, ss ; 8c d1 ; 0xf449d
+ lea bx, [bp-03eh] ; 8d 5e c2 ; 0xf449f
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf44a2
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf44a5
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf44a8
+ mov dx, ax ; 89 c2 ; 0xf44ac
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf44ae eltorito.c:612
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf44b1
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf44b7 eltorito.c:613
+ test al, al ; 84 c0 ; 0xf44bd eltorito.c:615
+ je short 044f9h ; 74 38 ; 0xf44bf
+ mov bx, 00da0h ; bb a0 0d ; 0xf44c1 eltorito.c:616
+ mov cx, ds ; 8c d9 ; 0xf44c4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf44c6
+ call 018cch ; e8 00 d4 ; 0xf44c9
+ mov al, dl ; 88 d0 ; 0xf44cc
+ xor ah, ah ; 30 e4 ; 0xf44ce
+ push ax ; 50 ; 0xf44d0
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf44d1
+ push ax ; 50 ; 0xf44d4
+ mov ax, 0034ch ; b8 4c 03 ; 0xf44d5
+ push ax ; 50 ; 0xf44d8
+ mov ax, 0038eh ; b8 8e 03 ; 0xf44d9
+ push ax ; 50 ; 0xf44dc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf44dd
+ push ax ; 50 ; 0xf44e0
+ call 0190fh ; e8 2b d4 ; 0xf44e1
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf44e4
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf44e7 eltorito.c:617
+ xor ah, ah ; 30 e4 ; 0xf44ea
+ or ah, 002h ; 80 cc 02 ; 0xf44ec
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf44ef
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf44f2 eltorito.c:618
+ jmp near 047c5h ; e9 cc 02 ; 0xf44f6 eltorito.c:619
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf44f9
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf44fd
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4500
+ mov es, ax ; 8e c0 ; 0xf4503
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4505
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf4509
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf450d
+ pop di ; 5f ; 0xf4510
+ pop si ; 5e ; 0xf4511
+ pop bp ; 5d ; 0xf4512
+ retn ; c3 ; 0xf4513
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf4514 eltorito.c:626
+ mov ax, word [es:bx+014h] ; 26 8b 47 14 ; 0xf4517
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf451b
+ mov dx, word [es:bx+012h] ; 26 8b 57 12 ; 0xf451e eltorito.c:627
+ dec dx ; 4a ; 0xf4522
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf4523 eltorito.c:628
+ dec ax ; 48 ; 0xf4527
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4528
+ mov byte [bp+016h], 000h ; c6 46 16 00 ; 0xf452b eltorito.c:630
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf452f eltorito.c:631
+ xor al, al ; 30 c0 ; 0xf4532
+ mov si, word [bp+014h] ; 8b 76 14 ; 0xf4534 eltorito.c:632
+ and si, 000ffh ; 81 e6 ff 00 ; 0xf4537
+ mov cx, dx ; 89 d1 ; 0xf453b
+ xor ch, dh ; 30 f5 ; 0xf453d
+ mov word [bp-026h], cx ; 89 4e da ; 0xf453f
+ mov cl, byte [bp-026h] ; 8a 4e da ; 0xf4542
+ mov byte [bp-025h], cl ; 88 4e db ; 0xf4545
+ mov byte [bp-026h], al ; 88 46 da ; 0xf4548
+ mov cx, word [bp-026h] ; 8b 4e da ; 0xf454b
+ or cx, si ; 09 f1 ; 0xf454e
+ mov word [bp+014h], cx ; 89 4e 14 ; 0xf4550
+ mov cx, dx ; 89 d1 ; 0xf4553 eltorito.c:633
+ shr cx, 1 ; d1 e9 ; 0xf4555
+ shr cx, 1 ; d1 e9 ; 0xf4557
+ and cl, 0c0h ; 80 e1 c0 ; 0xf4559
+ mov dx, word [bp-028h] ; 8b 56 d8 ; 0xf455c
+ and dl, 03fh ; 80 e2 3f ; 0xf455f
+ or dl, cl ; 08 ca ; 0xf4562
+ mov cx, word [bp+014h] ; 8b 4e 14 ; 0xf4564
+ mov cl, dl ; 88 d1 ; 0xf4567
+ mov word [bp+014h], cx ; 89 4e 14 ; 0xf4569
+ mov cx, word [bp+012h] ; 8b 4e 12 ; 0xf456c eltorito.c:634
+ mov ch, byte [bp-00ch] ; 8a 6e f4 ; 0xf456f
+ mov word [bp+012h], cx ; 89 4e 12 ; 0xf4572
+ mov dx, cx ; 89 ca ; 0xf4575 eltorito.c:635
+ xor dl, cl ; 30 ca ; 0xf4577
+ or dl, 002h ; 80 ca 02 ; 0xf4579
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf457c
+ mov dl, byte [es:bx+001h] ; 26 8a 57 01 ; 0xf457f eltorito.c:638
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf4583
+ cmp dl, 003h ; 80 fa 03 ; 0xf4586
+ je short 045a5h ; 74 1a ; 0xf4589
+ cmp dl, 002h ; 80 fa 02 ; 0xf458b
+ je short 045a1h ; 74 11 ; 0xf458e
+ cmp dl, 001h ; 80 fa 01 ; 0xf4590
+ jne short 045a9h ; 75 14 ; 0xf4593
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4595 eltorito.c:639
+ xor al, al ; 30 c0 ; 0xf4598
+ or AL, strict byte 002h ; 0c 02 ; 0xf459a
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf459c
+ jmp short 045a9h ; eb 08 ; 0xf459f
+ or AL, strict byte 004h ; 0c 04 ; 0xf45a1 eltorito.c:640
+ jmp short 0459ch ; eb f7 ; 0xf45a3
+ or AL, strict byte 005h ; 0c 05 ; 0xf45a5 eltorito.c:641
+ jmp short 0459ch ; eb f3 ; 0xf45a7
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf45a9 eltorito.c:645
+ cmp byte [es:bx+001h], 004h ; 26 80 7f 01 04 ; 0xf45ac
+ jc short 045b6h ; 72 03 ; 0xf45b1
+ jmp near 044f9h ; e9 43 ff ; 0xf45b3
+ mov word [bp+008h], 0efc7h ; c7 46 08 c7 ef ; 0xf45b6 eltorito.c:646
+ mov word [bp+006h], 0f000h ; c7 46 06 00 f0 ; 0xf45bb eltorito.c:647
+ jmp short 045b3h ; eb f1 ; 0xf45c0 eltorito.c:649
+ or ah, 003h ; 80 cc 03 ; 0xf45c2 eltorito.c:654
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf45c5
+ jmp near 044fdh ; e9 32 ff ; 0xf45c8 eltorito.c:655
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf45cb eltorito.c:659
+ or ah, 030h ; 80 cc 30 ; 0xf45d0 eltorito.c:660
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf45d3
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf45d6 eltorito.c:661
+ jmp near 044fdh ; e9 1f ff ; 0xf45db eltorito.c:662
+ mov di, word [bp+00ah] ; 8b 7e 0a ; 0xf45de eltorito.c:670
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf45e1
+ mov word [bp-020h], di ; 89 7e e0 ; 0xf45e4
+ mov [bp-016h], es ; 8c 46 ea ; 0xf45e7
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf45ea eltorito.c:672
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf45ee
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf45f1 eltorito.c:673
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf45f5
+ mov ax, word [es:di+004h] ; 26 8b 45 04 ; 0xf45f8 eltorito.c:674
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf45fc
+ mov ax, word [es:di+00ch] ; 26 8b 45 0c ; 0xf45ff eltorito.c:677
+ mov dx, word [es:di+00eh] ; 26 8b 55 0e ; 0xf4603
+ or ax, dx ; 09 d0 ; 0xf4607 eltorito.c:678
+ je short 04626h ; 74 1b ; 0xf4609
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf460b eltorito.c:679
+ xor ah, ah ; 30 e4 ; 0xf460e
+ push ax ; 50 ; 0xf4610
+ mov ax, 0034ch ; b8 4c 03 ; 0xf4611
+ push ax ; 50 ; 0xf4614
+ mov ax, 003afh ; b8 af 03 ; 0xf4615
+ push ax ; 50 ; 0xf4618
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf4619
+ push ax ; 50 ; 0xf461c
+ call 0190fh ; e8 ef d2 ; 0xf461d
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4620
+ jmp near 047bah ; e9 94 01 ; 0xf4623 eltorito.c:680
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4626 eltorito.c:684
+ mov di, word [bp-020h] ; 8b 7e e0 ; 0xf4629
+ mov ax, word [es:di+008h] ; 26 8b 45 08 ; 0xf462c
+ mov dx, word [es:di+00ah] ; 26 8b 55 0a ; 0xf4630
+ mov cl, byte [bp+017h] ; 8a 4e 17 ; 0xf4634 eltorito.c:687
+ mov byte [bp-00eh], cl ; 88 4e f2 ; 0xf4637
+ mov byte [bp-00dh], 000h ; c6 46 f3 00 ; 0xf463a
+ cmp word [bp-00eh], strict byte 00044h ; 83 7e f2 44 ; 0xf463e
+ jne short 04647h ; 75 03 ; 0xf4642
+ jmp near 044f9h ; e9 b2 fe ; 0xf4644
+ cmp word [bp-00eh], strict byte 00047h ; 83 7e f2 47 ; 0xf4647
+ jne short 0464fh ; 75 02 ; 0xf464b
+ jmp short 04644h ; eb f5 ; 0xf464d eltorito.c:688
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf464f eltorito.c:695
+ mov cx, word [es:bx+008h] ; 26 8b 4f 08 ; 0xf4652
+ mov word [bp-01ah], cx ; 89 4e e6 ; 0xf4656
+ mov bx, word [es:bx+00ah] ; 26 8b 5f 0a ; 0xf4659
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf465d
+ mov word [bp-032h], ax ; 89 46 ce ; 0xf4660 eltorito.c:698
+ mov word [bp-030h], dx ; 89 56 d0 ; 0xf4663
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf4666
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf4669
+ shr word [bp-030h], 1 ; d1 6e d0 ; 0xf466c
+ rcr word [bp-032h], 1 ; d1 5e ce ; 0xf466f
+ mov bx, word [bp-030h] ; 8b 5e d0 ; 0xf4672
+ mov word [bp-02ah], bx ; 89 5e d6 ; 0xf4675
+ mov di, ax ; 89 c7 ; 0xf4678 eltorito.c:699
+ and di, strict byte 00003h ; 83 e7 03 ; 0xf467a
+ xor bx, bx ; 31 db ; 0xf467d eltorito.c:702
+ add ax, word [bp-01eh] ; 03 46 e2 ; 0xf467f
+ adc dx, bx ; 11 da ; 0xf4682
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf4684
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf4687
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf468a
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf468d
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf4690
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf4693
+ shr word [bp-02ch], 1 ; d1 6e d4 ; 0xf4696
+ rcr word [bp-02eh], 1 ; d1 5e d2 ; 0xf4699
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf469c eltorito.c:704
+ mov dx, ss ; 8c d2 ; 0xf469f
+ lea ax, [bp-03eh] ; 8d 46 c2 ; 0xf46a1
+ call 09c30h ; e8 89 55 ; 0xf46a4
+ mov word [bp-03eh], strict word 00028h ; c7 46 c2 28 00 ; 0xf46a7 eltorito.c:705
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf46ac eltorito.c:706
+ add ax, word [bp-032h] ; 03 46 ce ; 0xf46af
+ mov dx, word [bp-018h] ; 8b 56 e8 ; 0xf46b2
+ adc dx, word [bp-02ah] ; 13 56 d6 ; 0xf46b5
+ xchg ah, al ; 86 c4 ; 0xf46b8
+ xchg dh, dl ; 86 d6 ; 0xf46ba
+ xchg dx, ax ; 92 ; 0xf46bc
+ mov word [bp-03ch], ax ; 89 46 c4 ; 0xf46bd
+ mov word [bp-03ah], dx ; 89 56 c6 ; 0xf46c0
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf46c3 eltorito.c:707
+ sub ax, word [bp-032h] ; 2b 46 ce ; 0xf46c6
+ inc ax ; 40 ; 0xf46c9
+ xchg ah, al ; 86 c4 ; 0xf46ca
+ mov word [bp-037h], ax ; 89 46 c9 ; 0xf46cc
+ mov CL, strict byte 009h ; b1 09 ; 0xf46cf eltorito.c:709
+ mov ax, di ; 89 f8 ; 0xf46d1
+ sal ax, CL ; d3 e0 ; 0xf46d3
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf46d5
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf46d8
+ mov word [es:si+01eh], ax ; 26 89 44 1e ; 0xf46db
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf46df eltorito.c:710
+ xor ah, ah ; 30 e4 ; 0xf46e2
+ and AL, strict byte 003h ; 24 03 ; 0xf46e4
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf46e6
+ sub dx, ax ; 29 c2 ; 0xf46e9
+ mov ax, dx ; 89 d0 ; 0xf46eb
+ sub ax, di ; 29 f8 ; 0xf46ed
+ sal ax, CL ; d3 e0 ; 0xf46ef
+ and ah, 007h ; 80 e4 07 ; 0xf46f1
+ mov word [es:si+020h], ax ; 26 89 44 20 ; 0xf46f4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf46f8 eltorito.c:712
+ xor ah, ah ; 30 e4 ; 0xf46fb
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf46fd
+ imul dx ; f7 ea ; 0xf4700
+ mov bx, si ; 89 f3 ; 0xf4702
+ add bx, ax ; 01 c3 ; 0xf4704
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4706
+ xor ah, ah ; 30 e4 ; 0xf470a
+ sal ax, 1 ; d1 e0 ; 0xf470c
+ mov word [bp-026h], ax ; 89 46 da ; 0xf470e
+ push word [bp-012h] ; ff 76 ee ; 0xf4711
+ push word [bp-010h] ; ff 76 f0 ; 0xf4714
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4717
+ push ax ; 50 ; 0xf471a
+ mov bx, word [bp-01eh] ; 8b 5e e2 ; 0xf471b
+ xor di, di ; 31 ff ; 0xf471e
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf4720
+ sal bx, 1 ; d1 e3 ; 0xf4723
+ rcl di, 1 ; d1 d7 ; 0xf4725
+ loop 04723h ; e2 fa ; 0xf4727
+ push di ; 57 ; 0xf4729
+ push bx ; 53 ; 0xf472a
+ push word [bp-024h] ; ff 76 dc ; 0xf472b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf472e
+ xor ah, ah ; 30 e4 ; 0xf4731
+ mov cx, ss ; 8c d1 ; 0xf4733
+ lea bx, [bp-03eh] ; 8d 5e c2 ; 0xf4735
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4738
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf473b
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf473e
+ mov dx, ax ; 89 c2 ; 0xf4742
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf4744 eltorito.c:714
+ mov word [es:si+01eh], strict word 00000h ; 26 c7 44 1e 00 00 ; 0xf4747
+ mov word [es:si+020h], strict word 00000h ; 26 c7 44 20 00 00 ; 0xf474d eltorito.c:715
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf4753 eltorito.c:717
+ mov di, word [es:si+01ch] ; 26 8b 7c 1c ; 0xf4757
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf475b
+ shr di, 1 ; d1 ef ; 0xf475e
+ rcr bx, 1 ; d1 db ; 0xf4760
+ loop 0475eh ; e2 fa ; 0xf4762
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf4764 eltorito.c:718
+ mov si, word [bp-020h] ; 8b 76 e0 ; 0xf4767
+ mov word [es:si+002h], bx ; 26 89 5c 02 ; 0xf476a
+ test al, al ; 84 c0 ; 0xf476e eltorito.c:720
+ jne short 04775h ; 75 03 ; 0xf4770
+ jmp near 044f9h ; e9 84 fd ; 0xf4772
+ mov bx, 00da0h ; bb a0 0d ; 0xf4775 eltorito.c:721
+ mov cx, ds ; 8c d9 ; 0xf4778
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf477a
+ call 018cch ; e8 4c d1 ; 0xf477d
+ mov al, dl ; 88 d0 ; 0xf4780
+ xor ah, ah ; 30 e4 ; 0xf4782
+ push ax ; 50 ; 0xf4784
+ push word [bp-00eh] ; ff 76 f2 ; 0xf4785
+ mov ax, 0034ch ; b8 4c 03 ; 0xf4788
+ push ax ; 50 ; 0xf478b
+ mov ax, 003d8h ; b8 d8 03 ; 0xf478c
+ push ax ; 50 ; 0xf478f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4790
+ push ax ; 50 ; 0xf4793
+ call 0190fh ; e8 78 d1 ; 0xf4794
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4797
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf479a eltorito.c:722
+ xor ah, ah ; 30 e4 ; 0xf479d
+ or ah, 00ch ; 80 cc 0c ; 0xf479f
+ jmp short 047c2h ; eb 1e ; 0xf47a2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf47a4 eltorito.c:730
+ push ax ; 50 ; 0xf47a7
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf47a8
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf47ab
+ mov bx, si ; 89 f3 ; 0xf47ae
+ mov cx, word [bp-008h] ; 8b 4e f8 ; 0xf47b0
+ call 05a95h ; e8 df 12 ; 0xf47b3
+ test ax, ax ; 85 c0 ; 0xf47b6
+ je short 04772h ; 74 b8 ; 0xf47b8
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf47ba eltorito.c:731
+ xor ah, ah ; 30 e4 ; 0xf47bd
+ or ah, 001h ; 80 cc 01 ; 0xf47bf
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf47c2
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf47c5
+ xor ah, ah ; 30 e4 ; 0xf47c8
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf47ca
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf47cd
+ mov es, dx ; 8e c2 ; 0xf47d0
+ mov byte [es:bx], al ; 26 88 07 ; 0xf47d2
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf47d5
+ jmp near 0450dh ; e9 31 fd ; 0xf47d9
+ mov bx, 00da0h ; bb a0 0d ; 0xf47dc eltorito.c:747
+ mov cx, ds ; 8c d9 ; 0xf47df
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf47e1
+ call 018cch ; e8 e5 d0 ; 0xf47e4
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf47e7
+ xor ah, ah ; 30 e4 ; 0xf47ea
+ push ax ; 50 ; 0xf47ec
+ mov ax, 0034ch ; b8 4c 03 ; 0xf47ed
+ push ax ; 50 ; 0xf47f0
+ mov ax, 003fah ; b8 fa 03 ; 0xf47f1
+ push ax ; 50 ; 0xf47f4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf47f5
+ jmp near 0461ch ; e9 21 fe ; 0xf47f8
+ ; disGetNextSymbol 0xf47fb LB 0x574d -> off=0x59 cb=000000000000038c uValue=00000000000f3254 'int13_cdrom'
+ db 050h, 04eh, 049h, 048h, 047h, 046h, 045h, 044h, 043h, 042h, 041h, 018h, 016h, 015h, 014h, 011h
+ db 010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 032h, 049h, 0c5h
+ db 04bh, 0fah, 048h, 032h, 049h, 0efh, 048h, 032h, 049h, 0efh, 048h, 032h, 049h, 0c5h, 04bh, 032h
+ db 049h, 032h, 049h, 0c5h, 04bh, 0c5h, 04bh, 0c5h, 04bh, 0c5h, 04bh, 0c5h, 04bh, 016h, 049h, 0c5h
+ db 04bh, 032h, 049h, 01fh, 049h, 050h, 049h, 0efh, 048h, 050h, 049h, 0a0h, 04ah, 043h, 04bh, 050h
+ db 049h, 06ch, 04bh, 086h, 04bh, 08eh, 04bh, 032h, 049h
+int13_cdrom: ; 0xf4854 LB 0x38c
+ push bp ; 55 ; 0xf4854 eltorito.c:772
+ mov bp, sp ; 89 e5 ; 0xf4855
+ push si ; 56 ; 0xf4857
+ push di ; 57 ; 0xf4858
+ sub sp, strict byte 00020h ; 83 ec 20 ; 0xf4859
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf485c eltorito.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf485f
+ mov es, ax ; 8e c0 ; 0xf4862
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4864
+ mov si, 00122h ; be 22 01 ; 0xf4867 eltorito.c:782
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf486a
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf486d eltorito.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4870
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4874 eltorito.c:789
+ xor ah, ah ; 30 e4 ; 0xf4877
+ cmp ax, 000e0h ; 3d e0 00 ; 0xf4879
+ jc short 04883h ; 72 05 ; 0xf487c
+ cmp ax, 000f0h ; 3d f0 00 ; 0xf487e
+ jc short 048a2h ; 72 1f ; 0xf4881
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf4883 eltorito.c:790
+ xor ah, ah ; 30 e4 ; 0xf4886
+ push ax ; 50 ; 0xf4888
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4889
+ push ax ; 50 ; 0xf488c
+ mov ax, 0042ah ; b8 2a 04 ; 0xf488d
+ push ax ; 50 ; 0xf4890
+ mov ax, 00436h ; b8 36 04 ; 0xf4891
+ push ax ; 50 ; 0xf4894
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4895
+ push ax ; 50 ; 0xf4898
+ call 0190fh ; e8 73 d0 ; 0xf4899
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf489c
+ jmp near 04ba4h ; e9 02 03 ; 0xf489f eltorito.c:791
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf48a2 eltorito.c:795
+ xor ah, ah ; 30 e4 ; 0xf48a5
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf48a7
+ mov bx, si ; 89 f3 ; 0xf48aa
+ add bx, ax ; 01 c3 ; 0xf48ac
+ mov dl, byte [es:bx+00114h] ; 26 8a 97 14 01 ; 0xf48ae
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf48b3
+ cmp dl, 010h ; 80 fa 10 ; 0xf48b6 eltorito.c:798
+ jc short 048c9h ; 72 0e ; 0xf48b9
+ push ax ; 50 ; 0xf48bb eltorito.c:799
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf48bc
+ push ax ; 50 ; 0xf48bf
+ mov ax, 0042ah ; b8 2a 04 ; 0xf48c0
+ push ax ; 50 ; 0xf48c3
+ mov ax, 00461h ; b8 61 04 ; 0xf48c4
+ jmp short 04894h ; eb cb ; 0xf48c7
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf48c9 eltorito.c:803
+ xor ah, ah ; 30 e4 ; 0xf48cc
+ mov dx, ax ; 89 c2 ; 0xf48ce
+ cmp ax, strict word 00050h ; 3d 50 00 ; 0xf48d0
+ jnbe short 04932h ; 77 5d ; 0xf48d3
+ push CS ; 0e ; 0xf48d5
+ pop ES ; 07 ; 0xf48d6
+ mov cx, strict word 0001eh ; b9 1e 00 ; 0xf48d7
+ mov di, 047fbh ; bf fb 47 ; 0xf48da
+ repne scasb ; f2 ae ; 0xf48dd
+ sal cx, 1 ; d1 e1 ; 0xf48df
+ mov di, cx ; 89 cf ; 0xf48e1
+ mov ax, word [cs:di+04818h] ; 2e 8b 85 18 48 ; 0xf48e3
+ mov bx, word [bp+018h] ; 8b 5e 18 ; 0xf48e8
+ xor bh, bh ; 30 ff ; 0xf48eb
+ jmp ax ; ff e0 ; 0xf48ed
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf48ef eltorito.c:821
+ xor ah, ah ; 30 e4 ; 0xf48f2
+ or ah, 003h ; 80 cc 03 ; 0xf48f4
+ jmp near 04bach ; e9 b2 02 ; 0xf48f7 eltorito.c:822
+ mov si, strict word 00074h ; be 74 00 ; 0xf48fa eltorito.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf48fd
+ mov es, ax ; 8e c0 ; 0xf4900
+ mov dl, byte [es:si] ; 26 8a 14 ; 0xf4902
+ mov bh, dl ; 88 d7 ; 0xf4905 eltorito.c:827
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4907
+ mov bx, si ; 89 f3 ; 0xf490a eltorito.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf490c
+ test dl, dl ; 84 d2 ; 0xf490f eltorito.c:831
+ je short 0492fh ; 74 1c ; 0xf4911
+ jmp near 04bbfh ; e9 a9 02 ; 0xf4913 eltorito.c:832
+ or bh, 002h ; 80 cf 02 ; 0xf4916 eltorito.c:838
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4919
+ jmp near 04bafh ; e9 90 02 ; 0xf491c eltorito.c:839
+ mov word [bp+012h], 0aa55h ; c7 46 12 55 aa ; 0xf491f eltorito.c:843
+ or bh, 030h ; 80 cf 30 ; 0xf4924 eltorito.c:844
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4927
+ mov word [bp+016h], strict word 00007h ; c7 46 16 07 00 ; 0xf492a eltorito.c:845
+ jmp near 04bc9h ; e9 97 02 ; 0xf492f eltorito.c:846
+ mov bx, 00da0h ; bb a0 0d ; 0xf4932
+ mov cx, ds ; 8c d9 ; 0xf4935
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4937
+ call 018cch ; e8 8f cf ; 0xf493a
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf493d
+ xor ah, ah ; 30 e4 ; 0xf4940
+ push ax ; 50 ; 0xf4942
+ mov ax, 0042ah ; b8 2a 04 ; 0xf4943
+ push ax ; 50 ; 0xf4946
+ mov ax, 00333h ; b8 33 03 ; 0xf4947
+ push ax ; 50 ; 0xf494a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf494b
+ jmp short 04991h ; eb 41 ; 0xf494e
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf4950 eltorito.c:854
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf4953
+ mov word [bp-010h], bx ; 89 5e f0 ; 0xf4956
+ mov [bp-018h], es ; 8c 46 e8 ; 0xf4959
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf495c eltorito.c:856
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf4960
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf4963 eltorito.c:857
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf4967
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf496a eltorito.c:858
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf496e
+ mov ax, word [es:bx+00ch] ; 26 8b 47 0c ; 0xf4971 eltorito.c:861
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf4975
+ mov di, word [es:bx+00eh] ; 26 8b 7f 0e ; 0xf4978
+ or di, ax ; 09 c7 ; 0xf497c eltorito.c:862
+ je short 0499bh ; 74 1b ; 0xf497e
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4980 eltorito.c:863
+ xor ah, ah ; 30 e4 ; 0xf4983
+ push ax ; 50 ; 0xf4985
+ mov ax, 0042ah ; b8 2a 04 ; 0xf4986
+ push ax ; 50 ; 0xf4989
+ mov ax, 003afh ; b8 af 03 ; 0xf498a
+ push ax ; 50 ; 0xf498d
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf498e
+ push ax ; 50 ; 0xf4991
+ call 0190fh ; e8 7a cf ; 0xf4992
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4995
+ jmp near 04ba4h ; e9 09 02 ; 0xf4998 eltorito.c:864
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf499b eltorito.c:868
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf499e
+ mov ax, word [es:bx+008h] ; 26 8b 47 08 ; 0xf49a1
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf49a5
+ mov di, bx ; 89 df ; 0xf49a8
+ mov di, word [es:di+00ah] ; 26 8b 7d 0a ; 0xf49aa
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf49ae eltorito.c:871
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf49b1
+ mov byte [bp-015h], 000h ; c6 46 eb 00 ; 0xf49b4
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf49b8
+ cmp ax, strict word 00044h ; 3d 44 00 ; 0xf49bb
+ je short 049c5h ; 74 05 ; 0xf49be
+ cmp ax, strict word 00047h ; 3d 47 00 ; 0xf49c0
+ jne short 049c8h ; 75 03 ; 0xf49c3
+ jmp near 04bc5h ; e9 fd 01 ; 0xf49c5 eltorito.c:872
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf49c8 eltorito.c:877
+ xor bx, bx ; 31 db ; 0xf49cb
+ mov dx, ss ; 8c d2 ; 0xf49cd
+ lea ax, [bp-024h] ; 8d 46 dc ; 0xf49cf
+ call 09c30h ; e8 5b 52 ; 0xf49d2
+ mov word [bp-024h], strict word 00028h ; c7 46 dc 28 00 ; 0xf49d5 eltorito.c:878
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf49da eltorito.c:879
+ mov dx, di ; 89 fa ; 0xf49dd
+ xchg ah, al ; 86 c4 ; 0xf49df
+ xchg dh, dl ; 86 d6 ; 0xf49e1
+ xchg dx, ax ; 92 ; 0xf49e3
+ mov word [bp-022h], ax ; 89 46 de ; 0xf49e4
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf49e7
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf49ea eltorito.c:880
+ xchg ah, al ; 86 c4 ; 0xf49ed
+ mov word [bp-01dh], ax ; 89 46 e3 ; 0xf49ef
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf49f2 eltorito.c:882
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf49f5
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf49f8
+ mov word [es:si+010h], 00800h ; 26 c7 44 10 00 08 ; 0xf49fc eltorito.c:883
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a02 eltorito.c:885
+ xor ah, ah ; 30 e4 ; 0xf4a05
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4a07
+ imul dx ; f7 ea ; 0xf4a0a
+ mov bx, si ; 89 f3 ; 0xf4a0c
+ add bx, ax ; 01 c3 ; 0xf4a0e
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf4a10
+ xor ah, ah ; 30 e4 ; 0xf4a14
+ mov di, ax ; 89 c7 ; 0xf4a16
+ sal di, 1 ; d1 e7 ; 0xf4a18
+ push word [bp-00eh] ; ff 76 f2 ; 0xf4a1a
+ push word [bp-012h] ; ff 76 ee ; 0xf4a1d
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4a20
+ push ax ; 50 ; 0xf4a23
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf4a24
+ xor dx, dx ; 31 d2 ; 0xf4a27
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a29
+ sal ax, 1 ; d1 e0 ; 0xf4a2c
+ rcl dx, 1 ; d1 d2 ; 0xf4a2e
+ loop 04a2ch ; e2 fa ; 0xf4a30
+ push dx ; 52 ; 0xf4a32
+ push ax ; 50 ; 0xf4a33
+ xor ax, ax ; 31 c0 ; 0xf4a34
+ push ax ; 50 ; 0xf4a36
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4a37
+ xor ah, ah ; 30 e4 ; 0xf4a3a
+ mov cx, ss ; 8c d1 ; 0xf4a3c
+ lea bx, [bp-024h] ; 8d 5e dc ; 0xf4a3e
+ mov dx, strict word 0000ch ; ba 0c 00 ; 0xf4a41
+ call word [word di+0006ah] ; ff 95 6a 00 ; 0xf4a44
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf4a48
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4a4b eltorito.c:887
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4a4e
+ mov dx, word [es:si+01ch] ; 26 8b 54 1c ; 0xf4a52
+ mov cx, strict word 0000bh ; b9 0b 00 ; 0xf4a56
+ shr dx, 1 ; d1 ea ; 0xf4a59
+ rcr ax, 1 ; d1 d8 ; 0xf4a5b
+ loop 04a59h ; e2 fa ; 0xf4a5d
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf4a5f eltorito.c:888
+ mov bx, word [bp-010h] ; 8b 5e f0 ; 0xf4a62
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf4a65
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf4a69 eltorito.c:890
+ je short 04aa8h ; 74 39 ; 0xf4a6d
+ mov bx, 00da0h ; bb a0 0d ; 0xf4a6f eltorito.c:891
+ mov cx, ds ; 8c d9 ; 0xf4a72
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a74
+ call 018cch ; e8 52 ce ; 0xf4a77
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4a7a
+ xor ah, ah ; 30 e4 ; 0xf4a7d
+ push ax ; 50 ; 0xf4a7f
+ push word [bp-016h] ; ff 76 ea ; 0xf4a80
+ mov ax, 0042ah ; b8 2a 04 ; 0xf4a83
+ push ax ; 50 ; 0xf4a86
+ mov ax, 003d8h ; b8 d8 03 ; 0xf4a87
+ push ax ; 50 ; 0xf4a8a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4a8b
+ push ax ; 50 ; 0xf4a8e
+ call 0190fh ; e8 7d ce ; 0xf4a8f
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf4a92
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4a95 eltorito.c:892
+ xor ah, ah ; 30 e4 ; 0xf4a98
+ or ah, 00ch ; 80 cc 0c ; 0xf4a9a
+ jmp near 04bach ; e9 0c 01 ; 0xf4a9d
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4aa0 eltorito.c:900
+ jbe short 04aabh ; 76 06 ; 0xf4aa3
+ jmp near 04ba4h ; e9 fc 00 ; 0xf4aa5 eltorito.c:901
+ jmp near 04bc5h ; e9 1a 01 ; 0xf4aa8
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4aab eltorito.c:903
+ xor ah, ah ; 30 e4 ; 0xf4aae
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4ab0
+ imul dx ; f7 ea ; 0xf4ab3
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4ab5
+ mov di, si ; 89 f7 ; 0xf4ab8
+ add di, ax ; 01 c7 ; 0xf4aba
+ mov cl, byte [es:di+025h] ; 26 8a 4d 25 ; 0xf4abc
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf4ac0 eltorito.c:905
+ je short 04b2bh ; 74 66 ; 0xf4ac3
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4ac5
+ je short 04b06h ; 74 3c ; 0xf4ac8
+ test bx, bx ; 85 db ; 0xf4aca
+ jne short 04b3bh ; 75 6d ; 0xf4acc
+ cmp cl, 0ffh ; 80 f9 ff ; 0xf4ace eltorito.c:907
+ jne short 04ae5h ; 75 12 ; 0xf4ad1
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ad3 eltorito.c:908
+ xor ah, ah ; 30 e4 ; 0xf4ad6
+ or ah, 0b4h ; 80 cc b4 ; 0xf4ad8
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4adb
+ xor al, al ; 30 c0 ; 0xf4ade eltorito.c:909
+ or AL, strict byte 001h ; 0c 01 ; 0xf4ae0
+ jmp near 04bach ; e9 c7 00 ; 0xf4ae2
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4ae5 eltorito.c:911
+ xor ah, ah ; 30 e4 ; 0xf4ae8
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4aea
+ imul dx ; f7 ea ; 0xf4aed
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf4aef eltorito.c:912
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4af1
+ add si, ax ; 01 c6 ; 0xf4af4
+ mov byte [es:si+025h], cl ; 26 88 4c 25 ; 0xf4af6
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4afa eltorito.c:913
+ xor al, al ; 30 c0 ; 0xf4afd
+ or AL, strict byte 001h ; 0c 01 ; 0xf4aff
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4b01
+ jmp short 04b3bh ; eb 35 ; 0xf4b04 eltorito.c:914
+ test cl, cl ; 84 c9 ; 0xf4b06 eltorito.c:916
+ jne short 04b16h ; 75 0c ; 0xf4b08
+ or bh, 0b0h ; 80 cf b0 ; 0xf4b0a eltorito.c:917
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4b0d
+ mov byte [bp+018h], cl ; 88 4e 18 ; 0xf4b10 eltorito.c:918
+ jmp near 04bafh ; e9 99 00 ; 0xf4b13 eltorito.c:919
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b16 eltorito.c:920
+ xor ah, ah ; 30 e4 ; 0xf4b19
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4b1b
+ imul dx ; f7 ea ; 0xf4b1e
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf4b20 eltorito.c:921
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4b22
+ add si, ax ; 01 c6 ; 0xf4b25
+ mov byte [es:si+025h], cl ; 26 88 4c 25 ; 0xf4b27
+ test cl, cl ; 84 c9 ; 0xf4b2b eltorito.c:922
+ jne short 04b3eh ; 75 0f ; 0xf4b2d
+ xor ax, ax ; 31 c0 ; 0xf4b2f
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf4b31
+ xor dl, dl ; 30 d2 ; 0xf4b34
+ or dx, ax ; 09 c2 ; 0xf4b36
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf4b38
+ jmp near 04bc5h ; e9 87 00 ; 0xf4b3b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4b3e
+ jmp short 04b31h ; eb ee ; 0xf4b41
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b43 eltorito.c:932
+ xor ah, ah ; 30 e4 ; 0xf4b46
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf4b48
+ imul dx ; f7 ea ; 0xf4b4b
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf4b4d
+ add si, ax ; 01 c6 ; 0xf4b50
+ mov cl, byte [es:si+025h] ; 26 8a 4c 25 ; 0xf4b52
+ test cl, cl ; 84 c9 ; 0xf4b56 eltorito.c:934
+ je short 04b60h ; 74 06 ; 0xf4b58
+ or bh, 0b1h ; 80 cf b1 ; 0xf4b5a eltorito.c:935
+ jmp near 04919h ; e9 b9 fd ; 0xf4b5d
+ je short 04bc5h ; 74 63 ; 0xf4b60 eltorito.c:957
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4b62 eltorito.c:958
+ xor ah, ah ; 30 e4 ; 0xf4b65
+ or ah, 0b1h ; 80 cc b1 ; 0xf4b67
+ jmp short 04bach ; eb 40 ; 0xf4b6a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4b6c eltorito.c:966
+ xor ah, ah ; 30 e4 ; 0xf4b6f
+ push ax ; 50 ; 0xf4b71
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf4b72
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf4b75
+ mov bx, si ; 89 f3 ; 0xf4b78
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf4b7a
+ call 05a95h ; e8 15 0f ; 0xf4b7d
+ test ax, ax ; 85 c0 ; 0xf4b80
+ je short 04bc5h ; 74 41 ; 0xf4b82
+ jmp short 04ba4h ; eb 1e ; 0xf4b84 eltorito.c:967
+ or bh, 006h ; 80 cf 06 ; 0xf4b86 eltorito.c:974
+ mov word [bp+018h], bx ; 89 5e 18 ; 0xf4b89
+ jmp short 04bbfh ; eb 31 ; 0xf4b8c eltorito.c:975
+ cmp bx, strict byte 00006h ; 83 fb 06 ; 0xf4b8e eltorito.c:980
+ je short 04bc5h ; 74 32 ; 0xf4b91
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf4b93
+ jc short 04ba4h ; 72 0c ; 0xf4b96
+ jbe short 04bc5h ; 76 2b ; 0xf4b98
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf4b9a
+ jc short 04ba4h ; 72 05 ; 0xf4b9d
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf4b9f
+ jbe short 04bc5h ; 76 21 ; 0xf4ba2
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf4ba4 eltorito.c:1007
+ xor ah, ah ; 30 e4 ; 0xf4ba7
+ or ah, 001h ; 80 cc 01 ; 0xf4ba9
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf4bac
+ mov al, byte [bp+019h] ; 8a 46 19 ; 0xf4baf eltorito.c:1009
+ xor ah, ah ; 30 e4 ; 0xf4bb2
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4bb4 eltorito.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf4bb7
+ mov es, dx ; 8e c2 ; 0xf4bba
+ mov byte [es:bx], al ; 26 88 07 ; 0xf4bbc
+ or byte [bp+01eh], 001h ; 80 4e 1e 01 ; 0xf4bbf eltorito.c:1011
+ jmp short 04bd9h ; eb 14 ; 0xf4bc3 eltorito.c:1012
+ mov byte [bp+019h], 000h ; c6 46 19 00 ; 0xf4bc5 eltorito.c:1015
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf4bc9 eltorito.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4bcc
+ mov es, ax ; 8e c0 ; 0xf4bcf
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf4bd1
+ and byte [bp+01eh], 0feh ; 80 66 1e fe ; 0xf4bd5 eltorito.c:1018
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4bd9 eltorito.c:1020
+ pop di ; 5f ; 0xf4bdc
+ pop si ; 5e ; 0xf4bdd
+ pop bp ; 5d ; 0xf4bde
+ retn ; c3 ; 0xf4bdf
+ ; disGetNextSymbol 0xf4be0 LB 0x5368 -> off=0x0 cb=0000000000000051 uValue=00000000000f35e0 'print_boot_device'
+print_boot_device: ; 0xf4be0 LB 0x51
+ push bp ; 55 ; 0xf4be0 boot.c:109
+ mov bp, sp ; 89 e5 ; 0xf4be1
+ push cx ; 51 ; 0xf4be3
+ test al, al ; 84 c0 ; 0xf4be4 boot.c:117
+ je short 04bedh ; 74 05 ; 0xf4be6
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf4be8
+ jmp short 04c07h ; eb 1a ; 0xf4beb boot.c:118
+ test dl, dl ; 84 d2 ; 0xf4bed
+ je short 04bf6h ; 74 05 ; 0xf4bef
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf4bf1
+ jmp short 04c07h ; eb 11 ; 0xf4bf4 boot.c:119
+ test bl, 080h ; f6 c3 80 ; 0xf4bf6
+ jne short 04bffh ; 75 04 ; 0xf4bf9
+ xor dh, dh ; 30 f6 ; 0xf4bfb
+ jmp short 04c07h ; eb 08 ; 0xf4bfd boot.c:120
+ test bl, 080h ; f6 c3 80 ; 0xf4bff
+ je short 04c2bh ; 74 27 ; 0xf4c02
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf4c04
+ mov bx, 00da0h ; bb a0 0d ; 0xf4c07 boot.c:123
+ mov cx, ds ; 8c d9 ; 0xf4c0a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c0c
+ call 018cch ; e8 ba cc ; 0xf4c0f
+ mov ax, dx ; 89 d0 ; 0xf4c12
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf4c14
+ imul dx ; f7 ea ; 0xf4c17
+ add ax, 00dc6h ; 05 c6 0d ; 0xf4c19
+ push ax ; 50 ; 0xf4c1c
+ mov ax, 00494h ; b8 94 04 ; 0xf4c1d
+ push ax ; 50 ; 0xf4c20
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c21
+ push ax ; 50 ; 0xf4c24
+ call 0190fh ; e8 e7 cc ; 0xf4c25
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c28
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4c2b boot.c:124
+ pop cx ; 59 ; 0xf4c2e
+ pop bp ; 5d ; 0xf4c2f
+ retn ; c3 ; 0xf4c30
+ ; disGetNextSymbol 0xf4c31 LB 0x5317 -> off=0x0 cb=000000000000009f uValue=00000000000f3631 'print_boot_failure'
+print_boot_failure: ; 0xf4c31 LB 0x9f
+ push bp ; 55 ; 0xf4c31 boot.c:131
+ mov bp, sp ; 89 e5 ; 0xf4c32
+ push si ; 56 ; 0xf4c34
+ mov dh, cl ; 88 ce ; 0xf4c35
+ mov cl, bl ; 88 d9 ; 0xf4c37 boot.c:134
+ and cl, 07fh ; 80 e1 7f ; 0xf4c39
+ xor ch, ch ; 30 ed ; 0xf4c3c
+ mov si, cx ; 89 ce ; 0xf4c3e
+ test al, al ; 84 c0 ; 0xf4c40 boot.c:142
+ je short 04c63h ; 74 1f ; 0xf4c42
+ mov bx, 00da0h ; bb a0 0d ; 0xf4c44 boot.c:143
+ mov cx, ds ; 8c d9 ; 0xf4c47
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c49
+ call 018cch ; e8 7d cc ; 0xf4c4c
+ mov cx, 00ddah ; b9 da 0d ; 0xf4c4f
+ push cx ; 51 ; 0xf4c52
+ mov cx, 004a8h ; b9 a8 04 ; 0xf4c53
+ push cx ; 51 ; 0xf4c56
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf4c57
+ push cx ; 51 ; 0xf4c5a
+ call 0190fh ; e8 b1 cc ; 0xf4c5b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4c5e
+ jmp short 04cabh ; eb 48 ; 0xf4c61 boot.c:144
+ test dl, dl ; 84 d2 ; 0xf4c63
+ je short 04c77h ; 74 10 ; 0xf4c65
+ mov bx, 00da0h ; bb a0 0d ; 0xf4c67 boot.c:145
+ mov cx, ds ; 8c d9 ; 0xf4c6a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c6c
+ call 018cch ; e8 5a cc ; 0xf4c6f
+ mov cx, 00de4h ; b9 e4 0d ; 0xf4c72
+ jmp short 04c52h ; eb db ; 0xf4c75
+ test bl, 080h ; f6 c3 80 ; 0xf4c77 boot.c:146
+ je short 04c8dh ; 74 11 ; 0xf4c7a
+ mov bx, 00da0h ; bb a0 0d ; 0xf4c7c boot.c:147
+ mov cx, ds ; 8c d9 ; 0xf4c7f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c81
+ call 018cch ; e8 45 cc ; 0xf4c84
+ push si ; 56 ; 0xf4c87
+ mov cx, 00dd0h ; b9 d0 0d ; 0xf4c88
+ jmp short 04c9ch ; eb 0f ; 0xf4c8b boot.c:148
+ mov bx, 00da0h ; bb a0 0d ; 0xf4c8d boot.c:149
+ mov cx, ds ; 8c d9 ; 0xf4c90
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4c92
+ call 018cch ; e8 34 cc ; 0xf4c95
+ push si ; 56 ; 0xf4c98
+ mov cx, 00dc6h ; b9 c6 0d ; 0xf4c99
+ push cx ; 51 ; 0xf4c9c
+ mov cx, 004bdh ; b9 bd 04 ; 0xf4c9d
+ push cx ; 51 ; 0xf4ca0
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf4ca1
+ push cx ; 51 ; 0xf4ca4
+ call 0190fh ; e8 67 cc ; 0xf4ca5
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4ca8
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4cab boot.c:151
+ jne short 04cc8h ; 75 17 ; 0xf4caf
+ test dh, dh ; 84 f6 ; 0xf4cb1 boot.c:152
+ jne short 04cbah ; 75 05 ; 0xf4cb3
+ mov dx, 004d5h ; ba d5 04 ; 0xf4cb5 boot.c:153
+ jmp short 04cbdh ; eb 03 ; 0xf4cb8 boot.c:154
+ mov dx, 004ffh ; ba ff 04 ; 0xf4cba boot.c:155
+ push dx ; 52 ; 0xf4cbd
+ mov dx, strict word 00007h ; ba 07 00 ; 0xf4cbe
+ push dx ; 52 ; 0xf4cc1
+ call 0190fh ; e8 4a cc ; 0xf4cc2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf4cc5
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf4cc8 boot.c:157
+ pop si ; 5e ; 0xf4ccb
+ pop bp ; 5d ; 0xf4ccc
+ retn 00002h ; c2 02 00 ; 0xf4ccd
+ ; disGetNextSymbol 0xf4cd0 LB 0x5278 -> off=0x0 cb=000000000000002a uValue=00000000000f36d0 'print_cdromboot_failure'
+print_cdromboot_failure: ; 0xf4cd0 LB 0x2a
+ push bp ; 55 ; 0xf4cd0 boot.c:163
+ mov bp, sp ; 89 e5 ; 0xf4cd1
+ push bx ; 53 ; 0xf4cd3
+ push cx ; 51 ; 0xf4cd4
+ push dx ; 52 ; 0xf4cd5
+ mov dx, ax ; 89 c2 ; 0xf4cd6
+ mov bx, 00da0h ; bb a0 0d ; 0xf4cd8 boot.c:165
+ mov cx, ds ; 8c d9 ; 0xf4cdb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4cdd
+ call 018cch ; e8 e9 cb ; 0xf4ce0
+ push dx ; 52 ; 0xf4ce3
+ mov dx, 00534h ; ba 34 05 ; 0xf4ce4
+ push dx ; 52 ; 0xf4ce7
+ mov dx, strict word 00004h ; ba 04 00 ; 0xf4ce8
+ push dx ; 52 ; 0xf4ceb
+ call 0190fh ; e8 20 cc ; 0xf4cec
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4cef
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf4cf2 boot.c:167
+ pop dx ; 5a ; 0xf4cf5
+ pop cx ; 59 ; 0xf4cf6
+ pop bx ; 5b ; 0xf4cf7
+ pop bp ; 5d ; 0xf4cf8
+ retn ; c3 ; 0xf4cf9
+ ; disGetNextSymbol 0xf4cfa LB 0x524e -> off=0x0 cb=0000000000000266 uValue=00000000000f36fa 'int19_function'
+int19_function: ; 0xf4cfa LB 0x266
+ push bp ; 55 ; 0xf4cfa boot.c:170
+ mov bp, sp ; 89 e5 ; 0xf4cfb
+ push si ; 56 ; 0xf4cfd
+ push di ; 57 ; 0xf4cfe
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf4cff
+ mov di, strict word 0000eh ; bf 0e 00 ; 0xf4d02 boot.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf4d05
+ mov es, ax ; 8e c0 ; 0xf4d08
+ mov di, word [es:di] ; 26 8b 3d ; 0xf4d0a
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf4d0d boot.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf4d10 boot.c:181
+ mov ax, strict word 0003dh ; b8 3d 00 ; 0xf4d14 boot.c:204
+ call 01652h ; e8 38 c9 ; 0xf4d17
+ mov bl, al ; 88 c3 ; 0xf4d1a
+ xor bh, bh ; 30 ff ; 0xf4d1c
+ mov ax, strict word 00038h ; b8 38 00 ; 0xf4d1e boot.c:205
+ call 01652h ; e8 2e c9 ; 0xf4d21
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4d24
+ xor ah, ah ; 30 e4 ; 0xf4d26
+ mov CL, strict byte 004h ; b1 04 ; 0xf4d28
+ sal ax, CL ; d3 e0 ; 0xf4d2a
+ mov dx, bx ; 89 da ; 0xf4d2c
+ or dx, ax ; 09 c2 ; 0xf4d2e
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d30 boot.c:206
+ call 01652h ; e8 1c c9 ; 0xf4d33
+ and AL, strict byte 00fh ; 24 0f ; 0xf4d36
+ xor ah, ah ; 30 e4 ; 0xf4d38
+ mov CL, strict byte 00ch ; b1 0c ; 0xf4d3a
+ sal ax, CL ; d3 e0 ; 0xf4d3c
+ or dx, ax ; 09 c2 ; 0xf4d3e
+ mov bx, 0037dh ; bb 7d 03 ; 0xf4d40 boot.c:38
+ mov es, di ; 8e c7 ; 0xf4d43
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4d45
+ test al, al ; 84 c0 ; 0xf4d48 boot.c:39
+ je short 04d50h ; 74 04 ; 0xf4d4a
+ mov dl, al ; 88 c2 ; 0xf4d4c boot.c:38
+ xor dh, dh ; 30 f6 ; 0xf4d4e boot.c:39
+ cmp byte [bp+004h], 001h ; 80 7e 04 01 ; 0xf4d50 boot.c:210
+ jne short 04d67h ; 75 11 ; 0xf4d54
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf4d56 boot.c:211
+ call 01652h ; e8 f6 c8 ; 0xf4d59
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf4d5c
+ xor ah, ah ; 30 e4 ; 0xf4d5e
+ mov CL, strict byte 004h ; b1 04 ; 0xf4d60
+ sar ax, CL ; d3 f8 ; 0xf4d62
+ call 078b3h ; e8 4c 2b ; 0xf4d64
+ cmp byte [bp+004h], 002h ; 80 7e 04 02 ; 0xf4d67 boot.c:213
+ jne short 04d71h ; 75 04 ; 0xf4d6b
+ mov CL, strict byte 004h ; b1 04 ; 0xf4d6d
+ shr dx, CL ; d3 ea ; 0xf4d6f
+ cmp byte [bp+004h], 003h ; 80 7e 04 03 ; 0xf4d71 boot.c:214
+ jne short 04d7bh ; 75 04 ; 0xf4d75
+ mov dl, dh ; 88 f2 ; 0xf4d77
+ xor dh, dh ; 30 f6 ; 0xf4d79
+ cmp byte [bp+004h], 004h ; 80 7e 04 04 ; 0xf4d7b boot.c:215
+ jne short 04d85h ; 75 04 ; 0xf4d7f
+ mov CL, strict byte 00ch ; b1 0c ; 0xf4d81
+ shr dx, CL ; d3 ea ; 0xf4d83
+ cmp dx, strict byte 00010h ; 83 fa 10 ; 0xf4d85 boot.c:216
+ jnc short 04d8eh ; 73 04 ; 0xf4d88
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf4d8a
+ xor al, al ; 30 c0 ; 0xf4d8e boot.c:217
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4d90
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4d93
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf4d96 boot.c:218
+ mov bx, 00da0h ; bb a0 0d ; 0xf4d99 boot.c:219
+ mov cx, ds ; 8c d9 ; 0xf4d9c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4d9e
+ call 018cch ; e8 28 cb ; 0xf4da1
+ push dx ; 52 ; 0xf4da4
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf4da5
+ xor ah, ah ; 30 e4 ; 0xf4da8
+ push ax ; 50 ; 0xf4daa
+ mov ax, 00554h ; b8 54 05 ; 0xf4dab
+ push ax ; 50 ; 0xf4dae
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf4daf
+ push ax ; 50 ; 0xf4db2
+ call 0190fh ; e8 59 cb ; 0xf4db3
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf4db6
+ and dx, strict byte 0000fh ; 83 e2 0f ; 0xf4db9 boot.c:221
+ cmp dx, strict byte 00002h ; 83 fa 02 ; 0xf4dbc
+ jc short 04dcfh ; 72 0e ; 0xf4dbf
+ jbe short 04ddeh ; 76 1b ; 0xf4dc1
+ cmp dx, strict byte 00004h ; 83 fa 04 ; 0xf4dc3
+ je short 04dfbh ; 74 33 ; 0xf4dc6
+ cmp dx, strict byte 00003h ; 83 fa 03 ; 0xf4dc8
+ je short 04df1h ; 74 24 ; 0xf4dcb
+ jmp short 04e2ah ; eb 5b ; 0xf4dcd
+ cmp dx, strict byte 00001h ; 83 fa 01 ; 0xf4dcf
+ jne short 04e2ah ; 75 56 ; 0xf4dd2
+ xor al, al ; 30 c0 ; 0xf4dd4 boot.c:223
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4dd6
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf4dd9 boot.c:224
+ jmp short 04e3dh ; eb 5f ; 0xf4ddc boot.c:225
+ mov bx, 0037ch ; bb 7c 03 ; 0xf4dde boot.c:38
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4de1
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf4de4
+ add AL, strict byte 080h ; 04 80 ; 0xf4de7 boot.c:231
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf4de9
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf4dec boot.c:232
+ jmp short 04e3dh ; eb 4c ; 0xf4def boot.c:233
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf4df1 boot.c:236
+ mov byte [bp-008h], 001h ; c6 46 f8 01 ; 0xf4df5 boot.c:237
+ jmp short 04e05h ; eb 0a ; 0xf4df9 boot.c:238
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf4dfb boot.c:239
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4dff boot.c:255
+ je short 04e3dh ; 74 38 ; 0xf4e03
+ call 03dd9h ; e8 d1 ef ; 0xf4e05 boot.c:256
+ mov dx, ax ; 89 c2 ; 0xf4e08
+ test AL, strict byte 0ffh ; a8 ff ; 0xf4e0a boot.c:259
+ je short 04e31h ; 74 23 ; 0xf4e0c
+ call 04cd0h ; e8 bf fe ; 0xf4e0e boot.c:260
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4e11 boot.c:261
+ xor ah, ah ; 30 e4 ; 0xf4e14
+ push ax ; 50 ; 0xf4e16
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e17
+ xor bh, bh ; 30 ff ; 0xf4e1a
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e1c
+ xor dh, dh ; 30 f6 ; 0xf4e1f
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e21
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4e24
+ call 04c31h ; e8 07 fe ; 0xf4e27
+ xor ax, ax ; 31 c0 ; 0xf4e2a
+ xor dx, dx ; 31 d2 ; 0xf4e2c
+ jmp near 04f59h ; e9 28 01 ; 0xf4e2e
+ mov bx, 00372h ; bb 72 03 ; 0xf4e31 boot.c:48
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf4e34
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf4e37
+ mov byte [bp-006h], dh ; 88 76 fa ; 0xf4e3a boot.c:266
+ cmp byte [bp-00ah], 001h ; 80 7e f6 01 ; 0xf4e3d boot.c:272
+ jne short 04e98h ; 75 55 ; 0xf4e41
+ xor si, si ; 31 f6 ; 0xf4e43 boot.c:275
+ mov ax, 0e200h ; b8 00 e2 ; 0xf4e45
+ mov es, ax ; 8e c0 ; 0xf4e48
+ cmp word [es:si], 0aa55h ; 26 81 3c 55 aa ; 0xf4e4a boot.c:276
+ jne short 04e11h ; 75 c0 ; 0xf4e4f
+ mov di, ax ; 89 c7 ; 0xf4e51 boot.c:282
+ mov si, word [es:si+01ah] ; 26 8b 74 1a ; 0xf4e53
+ cmp word [es:si+002h], 0506eh ; 26 81 7c 02 6e 50 ; 0xf4e57 boot.c:283
+ jne short 04e11h ; 75 b2 ; 0xf4e5d
+ cmp word [es:si], 05024h ; 26 81 3c 24 50 ; 0xf4e5f
+ jne short 04e11h ; 75 ab ; 0xf4e64
+ mov bx, word [es:si+00eh] ; 26 8b 5c 0e ; 0xf4e66 boot.c:285
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4e6a
+ mov dx, word [es:bx+002h] ; 26 8b 57 02 ; 0xf4e6d
+ cmp dx, 06568h ; 81 fa 68 65 ; 0xf4e71 boot.c:286
+ jne short 04e9ah ; 75 23 ; 0xf4e75
+ cmp ax, 07445h ; 3d 45 74 ; 0xf4e77
+ jne short 04e9ah ; 75 1e ; 0xf4e7a
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e7c boot.c:288
+ xor bh, bh ; 30 ff ; 0xf4e7f
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e81
+ xor dh, dh ; 30 f6 ; 0xf4e84
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4e86
+ xor ah, ah ; 30 e4 ; 0xf4e89
+ call 04be0h ; e8 52 fd ; 0xf4e8b
+ mov word [bp-012h], strict word 00006h ; c7 46 ee 06 00 ; 0xf4e8e boot.c:289
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4e93
+ jmp short 04eb9h ; eb 21 ; 0xf4e96 boot.c:292
+ jmp short 04ebfh ; eb 25 ; 0xf4e98
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4e9a boot.c:295
+ xor bh, bh ; 30 ff ; 0xf4e9d
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4e9f
+ xor dh, dh ; 30 f6 ; 0xf4ea2
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4ea4
+ xor ah, ah ; 30 e4 ; 0xf4ea7
+ call 04be0h ; e8 34 fd ; 0xf4ea9
+ sti ; fb ; 0xf4eac boot.c:296
+ mov word [bp-010h], di ; 89 7e f0 ; 0xf4ead boot.c:297
+ mov es, di ; 8e c7 ; 0xf4eb0
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf4eb2
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf4eb6
+ call far [bp-012h] ; ff 5e ee ; 0xf4eb9 boot.c:298
+ jmp near 04e11h ; e9 52 ff ; 0xf4ebc boot.c:301
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4ebf boot.c:309
+ jne short 04eech ; 75 27 ; 0xf4ec3
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf4ec5
+ jne short 04eech ; 75 21 ; 0xf4ec9
+ mov si, 007c0h ; be c0 07 ; 0xf4ecb boot.c:310
+ mov es, si ; 8e c6 ; 0xf4ece boot.c:312
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf4ed0
+ mov ax, 00201h ; b8 01 02 ; 0xf4ed3
+ mov DH, strict byte 000h ; b6 00 ; 0xf4ed6
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf4ed8
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf4edb
+ int 013h ; cd 13 ; 0xf4edd
+ mov ax, strict word 00000h ; b8 00 00 ; 0xf4edf
+ sbb ax, strict byte 00000h ; 83 d8 00 ; 0xf4ee2
+ test ax, ax ; 85 c0 ; 0xf4ee5 boot.c:313
+ je short 04eech ; 74 03 ; 0xf4ee7
+ jmp near 04e11h ; e9 25 ff ; 0xf4ee9
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf4eec boot.c:328
+ je short 04ef6h ; 74 04 ; 0xf4ef0
+ xor al, al ; 30 c0 ; 0xf4ef2
+ jmp short 04ef8h ; eb 02 ; 0xf4ef4 boot.c:329
+ mov AL, strict byte 001h ; b0 01 ; 0xf4ef6
+ cmp byte [bp-008h], 000h ; 80 7e f8 00 ; 0xf4ef8 boot.c:333
+ je short 04f00h ; 74 02 ; 0xf4efc
+ mov AL, strict byte 001h ; b0 01 ; 0xf4efe boot.c:334
+ xor bx, bx ; 31 db ; 0xf4f00 boot.c:48
+ mov es, si ; 8e c6 ; 0xf4f02
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf4f04
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf4f07 boot.c:48
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf4f0a
+ cmp di, dx ; 39 d7 ; 0xf4f0d boot.c:49
+ je short 04f20h ; 74 0f ; 0xf4f0f
+ test al, al ; 84 c0 ; 0xf4f11
+ jne short 04f38h ; 75 23 ; 0xf4f13
+ mov bx, 001feh ; bb fe 01 ; 0xf4f15 boot.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf4f18
+ cmp ax, 0aa55h ; 3d 55 aa ; 0xf4f1b boot.c:49
+ je short 04f38h ; 74 18 ; 0xf4f1e
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf4f20 boot.c:340
+ xor ah, ah ; 30 e4 ; 0xf4f23
+ push ax ; 50 ; 0xf4f25
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4f26
+ xor bh, bh ; 30 ff ; 0xf4f29
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4f2b
+ xor dh, dh ; 30 f6 ; 0xf4f2e
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4f30
+ xor cx, cx ; 31 c9 ; 0xf4f33
+ jmp near 04e27h ; e9 ef fe ; 0xf4f35
+ mov bl, byte [bp-006h] ; 8a 5e fa ; 0xf4f38 boot.c:346
+ xor bh, bh ; 30 ff ; 0xf4f3b
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf4f3d
+ xor dh, dh ; 30 f6 ; 0xf4f40
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf4f42
+ xor ah, ah ; 30 e4 ; 0xf4f45
+ call 04be0h ; e8 96 fc ; 0xf4f47
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf4f4a boot.c:352
+ xor ah, ah ; 30 e4 ; 0xf4f4d
+ mov bx, ax ; 89 c3 ; 0xf4f4f
+ xor dx, dx ; 31 d2 ; 0xf4f51
+ xor al, al ; 30 c0 ; 0xf4f53
+ add ax, si ; 01 f0 ; 0xf4f55
+ adc dx, bx ; 11 da ; 0xf4f57
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf4f59 boot.c:353
+ pop di ; 5f ; 0xf4f5c
+ pop si ; 5e ; 0xf4f5d
+ pop bp ; 5d ; 0xf4f5e
+ retn ; c3 ; 0xf4f5f
+ ; disGetNextSymbol 0xf4f60 LB 0x4fe8 -> off=0x0 cb=0000000000000016 uValue=00000000000f3960 'keyboard_panic'
+keyboard_panic: ; 0xf4f60 LB 0x16
+ push bp ; 55 ; 0xf4f60 keyboard.c:194
+ mov bp, sp ; 89 e5 ; 0xf4f61
+ push ax ; 50 ; 0xf4f63 keyboard.c:199
+ mov ax, 00574h ; b8 74 05 ; 0xf4f64
+ push ax ; 50 ; 0xf4f67
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf4f68
+ push ax ; 50 ; 0xf4f6b
+ call 0190fh ; e8 a0 c9 ; 0xf4f6c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf4f6f
+ mov sp, bp ; 89 ec ; 0xf4f72 keyboard.c:200
+ pop bp ; 5d ; 0xf4f74
+ retn ; c3 ; 0xf4f75
+ ; disGetNextSymbol 0xf4f76 LB 0x4fd2 -> off=0x0 cb=000000000000026a uValue=00000000000f3976 'keyboard_init'
+keyboard_init: ; 0xf4f76 LB 0x26a
+ push bp ; 55 ; 0xf4f76 keyboard.c:208
+ mov bp, sp ; 89 e5 ; 0xf4f77
+ mov AL, strict byte 0aah ; b0 aa ; 0xf4f79 keyboard.c:214
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f7b
+ out DX, AL ; ee ; 0xf4f7e
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4f7f keyboard.c:217
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4f82 keyboard.c:218
+ in AL, DX ; ec ; 0xf4f85
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4f86
+ test AL, strict byte 002h ; a8 02 ; 0xf4f88
+ je short 04f99h ; 74 0d ; 0xf4f8a
+ dec bx ; 4b ; 0xf4f8c
+ test bx, bx ; 85 db ; 0xf4f8d
+ jbe short 04f99h ; 76 08 ; 0xf4f8f
+ xor al, al ; 30 c0 ; 0xf4f91
+ mov dx, 00080h ; ba 80 00 ; 0xf4f93
+ out DX, AL ; ee ; 0xf4f96
+ jmp short 04f82h ; eb e9 ; 0xf4f97
+ test bx, bx ; 85 db ; 0xf4f99 keyboard.c:219
+ jne short 04fa2h ; 75 05 ; 0xf4f9b
+ xor ax, ax ; 31 c0 ; 0xf4f9d
+ call 04f60h ; e8 be ff ; 0xf4f9f
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fa2 keyboard.c:222
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fa5 keyboard.c:223
+ in AL, DX ; ec ; 0xf4fa8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fa9
+ test AL, strict byte 001h ; a8 01 ; 0xf4fab
+ jne short 04fbch ; 75 0d ; 0xf4fad
+ dec bx ; 4b ; 0xf4faf
+ test bx, bx ; 85 db ; 0xf4fb0
+ jbe short 04fbch ; 76 08 ; 0xf4fb2
+ mov AL, strict byte 001h ; b0 01 ; 0xf4fb4
+ mov dx, 00080h ; ba 80 00 ; 0xf4fb6
+ out DX, AL ; ee ; 0xf4fb9
+ jmp short 04fa5h ; eb e9 ; 0xf4fba
+ test bx, bx ; 85 db ; 0xf4fbc keyboard.c:224
+ jne short 04fc6h ; 75 06 ; 0xf4fbe
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf4fc0
+ call 04f60h ; e8 9a ff ; 0xf4fc3
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf4fc6 keyboard.c:227
+ in AL, DX ; ec ; 0xf4fc9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fca
+ cmp ax, strict word 00055h ; 3d 55 00 ; 0xf4fcc
+ je short 04fd7h ; 74 06 ; 0xf4fcf
+ mov ax, 003dfh ; b8 df 03 ; 0xf4fd1 keyboard.c:228
+ call 04f60h ; e8 89 ff ; 0xf4fd4
+ mov AL, strict byte 0abh ; b0 ab ; 0xf4fd7 keyboard.c:232
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fd9
+ out DX, AL ; ee ; 0xf4fdc
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf4fdd keyboard.c:235
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf4fe0 keyboard.c:236
+ in AL, DX ; ec ; 0xf4fe3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf4fe4
+ test AL, strict byte 002h ; a8 02 ; 0xf4fe6
+ je short 04ff7h ; 74 0d ; 0xf4fe8
+ dec bx ; 4b ; 0xf4fea
+ test bx, bx ; 85 db ; 0xf4feb
+ jbe short 04ff7h ; 76 08 ; 0xf4fed
+ mov AL, strict byte 010h ; b0 10 ; 0xf4fef
+ mov dx, 00080h ; ba 80 00 ; 0xf4ff1
+ out DX, AL ; ee ; 0xf4ff4
+ jmp short 04fe0h ; eb e9 ; 0xf4ff5
+ test bx, bx ; 85 db ; 0xf4ff7 keyboard.c:237
+ jne short 05001h ; 75 06 ; 0xf4ff9
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf4ffb
+ call 04f60h ; e8 5f ff ; 0xf4ffe
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5001 keyboard.c:240
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5004 keyboard.c:241
+ in AL, DX ; ec ; 0xf5007
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5008
+ test AL, strict byte 001h ; a8 01 ; 0xf500a
+ jne short 0501bh ; 75 0d ; 0xf500c
+ dec bx ; 4b ; 0xf500e
+ test bx, bx ; 85 db ; 0xf500f
+ jbe short 0501bh ; 76 08 ; 0xf5011
+ mov AL, strict byte 011h ; b0 11 ; 0xf5013
+ mov dx, 00080h ; ba 80 00 ; 0xf5015
+ out DX, AL ; ee ; 0xf5018
+ jmp short 05004h ; eb e9 ; 0xf5019
+ test bx, bx ; 85 db ; 0xf501b keyboard.c:242
+ jne short 05025h ; 75 06 ; 0xf501d
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf501f
+ call 04f60h ; e8 3b ff ; 0xf5022
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5025 keyboard.c:246
+ in AL, DX ; ec ; 0xf5028
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5029
+ test ax, ax ; 85 c0 ; 0xf502b
+ je short 05035h ; 74 06 ; 0xf502d
+ mov ax, 003e0h ; b8 e0 03 ; 0xf502f keyboard.c:247
+ call 04f60h ; e8 2b ff ; 0xf5032
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf5035 keyboard.c:253
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5037
+ out DX, AL ; ee ; 0xf503a
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf503b keyboard.c:256
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf503e keyboard.c:257
+ in AL, DX ; ec ; 0xf5041
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5042
+ test AL, strict byte 002h ; a8 02 ; 0xf5044
+ je short 05055h ; 74 0d ; 0xf5046
+ dec bx ; 4b ; 0xf5048
+ test bx, bx ; 85 db ; 0xf5049
+ jbe short 05055h ; 76 08 ; 0xf504b
+ mov AL, strict byte 020h ; b0 20 ; 0xf504d
+ mov dx, 00080h ; ba 80 00 ; 0xf504f
+ out DX, AL ; ee ; 0xf5052
+ jmp short 0503eh ; eb e9 ; 0xf5053
+ test bx, bx ; 85 db ; 0xf5055 keyboard.c:258
+ jne short 0505fh ; 75 06 ; 0xf5057
+ mov ax, strict word 00014h ; b8 14 00 ; 0xf5059
+ call 04f60h ; e8 01 ff ; 0xf505c
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf505f keyboard.c:261
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5062 keyboard.c:262
+ in AL, DX ; ec ; 0xf5065
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5066
+ test AL, strict byte 001h ; a8 01 ; 0xf5068
+ jne short 05079h ; 75 0d ; 0xf506a
+ dec bx ; 4b ; 0xf506c
+ test bx, bx ; 85 db ; 0xf506d
+ jbe short 05079h ; 76 08 ; 0xf506f
+ mov AL, strict byte 021h ; b0 21 ; 0xf5071
+ mov dx, 00080h ; ba 80 00 ; 0xf5073
+ out DX, AL ; ee ; 0xf5076
+ jmp short 05062h ; eb e9 ; 0xf5077
+ test bx, bx ; 85 db ; 0xf5079 keyboard.c:263
+ jne short 05083h ; 75 06 ; 0xf507b
+ mov ax, strict word 00015h ; b8 15 00 ; 0xf507d
+ call 04f60h ; e8 dd fe ; 0xf5080
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5083 keyboard.c:266
+ in AL, DX ; ec ; 0xf5086
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5087
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5089
+ je short 05094h ; 74 06 ; 0xf508c
+ mov ax, 003e1h ; b8 e1 03 ; 0xf508e keyboard.c:267
+ call 04f60h ; e8 cc fe ; 0xf5091
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5094 keyboard.c:271
+ in AL, DX ; ec ; 0xf5097
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5098
+ test AL, strict byte 001h ; a8 01 ; 0xf509a
+ jne short 050a6h ; 75 08 ; 0xf509c
+ mov AL, strict byte 031h ; b0 31 ; 0xf509e
+ mov dx, 00080h ; ba 80 00 ; 0xf50a0
+ out DX, AL ; ee ; 0xf50a3
+ jmp short 05094h ; eb ee ; 0xf50a4
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50a6 keyboard.c:273
+ in AL, DX ; ec ; 0xf50a9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50aa
+ cmp ax, 000aah ; 3d aa 00 ; 0xf50ac
+ je short 050bfh ; 74 0e ; 0xf50af
+ in AL, DX ; ec ; 0xf50b1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50b2
+ cmp ax, 000aah ; 3d aa 00 ; 0xf50b4
+ je short 050bfh ; 74 06 ; 0xf50b7
+ mov ax, 003e2h ; b8 e2 03 ; 0xf50b9 keyboard.c:274
+ call 04f60h ; e8 a1 fe ; 0xf50bc
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf50bf keyboard.c:278
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf50c1
+ out DX, AL ; ee ; 0xf50c4
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50c5 keyboard.c:281
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50c8 keyboard.c:282
+ in AL, DX ; ec ; 0xf50cb
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50cc
+ test AL, strict byte 002h ; a8 02 ; 0xf50ce
+ je short 050dfh ; 74 0d ; 0xf50d0
+ dec bx ; 4b ; 0xf50d2
+ test bx, bx ; 85 db ; 0xf50d3
+ jbe short 050dfh ; 76 08 ; 0xf50d5
+ mov AL, strict byte 040h ; b0 40 ; 0xf50d7
+ mov dx, 00080h ; ba 80 00 ; 0xf50d9
+ out DX, AL ; ee ; 0xf50dc
+ jmp short 050c8h ; eb e9 ; 0xf50dd
+ test bx, bx ; 85 db ; 0xf50df keyboard.c:283
+ jne short 050e9h ; 75 06 ; 0xf50e1
+ mov ax, strict word 00028h ; b8 28 00 ; 0xf50e3
+ call 04f60h ; e8 77 fe ; 0xf50e6
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf50e9 keyboard.c:286
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf50ec keyboard.c:287
+ in AL, DX ; ec ; 0xf50ef
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf50f0
+ test AL, strict byte 001h ; a8 01 ; 0xf50f2
+ jne short 05103h ; 75 0d ; 0xf50f4
+ dec bx ; 4b ; 0xf50f6
+ test bx, bx ; 85 db ; 0xf50f7
+ jbe short 05103h ; 76 08 ; 0xf50f9
+ mov AL, strict byte 041h ; b0 41 ; 0xf50fb
+ mov dx, 00080h ; ba 80 00 ; 0xf50fd
+ out DX, AL ; ee ; 0xf5100
+ jmp short 050ech ; eb e9 ; 0xf5101
+ test bx, bx ; 85 db ; 0xf5103 keyboard.c:288
+ jne short 0510dh ; 75 06 ; 0xf5105
+ mov ax, strict word 00029h ; b8 29 00 ; 0xf5107
+ call 04f60h ; e8 53 fe ; 0xf510a
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf510d keyboard.c:291
+ in AL, DX ; ec ; 0xf5110
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5111
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5113
+ je short 0511eh ; 74 06 ; 0xf5116
+ mov ax, 003e3h ; b8 e3 03 ; 0xf5118 keyboard.c:292
+ call 04f60h ; e8 42 fe ; 0xf511b
+ mov AL, strict byte 060h ; b0 60 ; 0xf511e keyboard.c:296
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5120
+ out DX, AL ; ee ; 0xf5123
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5124 keyboard.c:299
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5127 keyboard.c:300
+ in AL, DX ; ec ; 0xf512a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf512b
+ test AL, strict byte 002h ; a8 02 ; 0xf512d
+ je short 0513eh ; 74 0d ; 0xf512f
+ dec bx ; 4b ; 0xf5131
+ test bx, bx ; 85 db ; 0xf5132
+ jbe short 0513eh ; 76 08 ; 0xf5134
+ mov AL, strict byte 050h ; b0 50 ; 0xf5136
+ mov dx, 00080h ; ba 80 00 ; 0xf5138
+ out DX, AL ; ee ; 0xf513b
+ jmp short 05127h ; eb e9 ; 0xf513c
+ test bx, bx ; 85 db ; 0xf513e keyboard.c:301
+ jne short 05148h ; 75 06 ; 0xf5140
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf5142
+ call 04f60h ; e8 18 fe ; 0xf5145
+ mov AL, strict byte 065h ; b0 65 ; 0xf5148 keyboard.c:304
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf514a
+ out DX, AL ; ee ; 0xf514d
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf514e keyboard.c:307
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5151 keyboard.c:308
+ in AL, DX ; ec ; 0xf5154
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5155
+ test AL, strict byte 002h ; a8 02 ; 0xf5157
+ je short 05168h ; 74 0d ; 0xf5159
+ dec bx ; 4b ; 0xf515b
+ test bx, bx ; 85 db ; 0xf515c
+ jbe short 05168h ; 76 08 ; 0xf515e
+ mov AL, strict byte 060h ; b0 60 ; 0xf5160
+ mov dx, 00080h ; ba 80 00 ; 0xf5162
+ out DX, AL ; ee ; 0xf5165
+ jmp short 05151h ; eb e9 ; 0xf5166
+ test bx, bx ; 85 db ; 0xf5168 keyboard.c:309
+ jne short 05172h ; 75 06 ; 0xf516a
+ mov ax, strict word 0003ch ; b8 3c 00 ; 0xf516c
+ call 04f60h ; e8 ee fd ; 0xf516f
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf5172 keyboard.c:312
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5174
+ out DX, AL ; ee ; 0xf5177
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5178 keyboard.c:315
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf517b keyboard.c:316
+ in AL, DX ; ec ; 0xf517e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf517f
+ test AL, strict byte 002h ; a8 02 ; 0xf5181
+ je short 05192h ; 74 0d ; 0xf5183
+ dec bx ; 4b ; 0xf5185
+ test bx, bx ; 85 db ; 0xf5186
+ jbe short 05192h ; 76 08 ; 0xf5188
+ mov AL, strict byte 070h ; b0 70 ; 0xf518a
+ mov dx, 00080h ; ba 80 00 ; 0xf518c
+ out DX, AL ; ee ; 0xf518f
+ jmp short 0517bh ; eb e9 ; 0xf5190
+ test bx, bx ; 85 db ; 0xf5192 keyboard.c:317
+ jne short 0519ch ; 75 06 ; 0xf5194
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf5196
+ call 04f60h ; e8 c4 fd ; 0xf5199
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf519c keyboard.c:320
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf519f keyboard.c:321
+ in AL, DX ; ec ; 0xf51a2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51a3
+ test AL, strict byte 001h ; a8 01 ; 0xf51a5
+ jne short 051b6h ; 75 0d ; 0xf51a7
+ dec bx ; 4b ; 0xf51a9
+ test bx, bx ; 85 db ; 0xf51aa
+ jbe short 051b6h ; 76 08 ; 0xf51ac
+ mov AL, strict byte 071h ; b0 71 ; 0xf51ae
+ mov dx, 00080h ; ba 80 00 ; 0xf51b0
+ out DX, AL ; ee ; 0xf51b3
+ jmp short 0519fh ; eb e9 ; 0xf51b4
+ test bx, bx ; 85 db ; 0xf51b6 keyboard.c:322
+ jne short 051c0h ; 75 06 ; 0xf51b8
+ mov ax, strict word 00046h ; b8 46 00 ; 0xf51ba
+ call 04f60h ; e8 a0 fd ; 0xf51bd
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf51c0 keyboard.c:325
+ in AL, DX ; ec ; 0xf51c3
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf51c4
+ cmp ax, 000fah ; 3d fa 00 ; 0xf51c6
+ je short 051d1h ; 74 06 ; 0xf51c9
+ mov ax, 003e4h ; b8 e4 03 ; 0xf51cb keyboard.c:326
+ call 04f60h ; e8 8f fd ; 0xf51ce
+ mov AL, strict byte 0a8h ; b0 a8 ; 0xf51d1 keyboard.c:330
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf51d3
+ out DX, AL ; ee ; 0xf51d6
+ xor ax, ax ; 31 c0 ; 0xf51d7 keyboard.c:335
+ call 0666fh ; e8 93 14 ; 0xf51d9
+ mov sp, bp ; 89 ec ; 0xf51dc keyboard.c:336
+ pop bp ; 5d ; 0xf51de
+ retn ; c3 ; 0xf51df
+ ; disGetNextSymbol 0xf51e0 LB 0x4d68 -> off=0x0 cb=0000000000000045 uValue=00000000000f3be0 'enqueue_key'
+enqueue_key: ; 0xf51e0 LB 0x45
+ push bx ; 53 ; 0xf51e0 keyboard.c:339
+ push cx ; 51 ; 0xf51e1
+ push bp ; 55 ; 0xf51e2
+ mov bp, sp ; 89 e5 ; 0xf51e3
+ mov dh, al ; 88 c6 ; 0xf51e5
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf51e7 keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf51ea
+ mov es, ax ; 8e c0 ; 0xf51ed
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf51ef
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf51f2 keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf51f5
+ mov bx, ax ; 89 c3 ; 0xf51f8 keyboard.c:354
+ inc ax ; 40 ; 0xf51fa keyboard.c:355
+ inc ax ; 40 ; 0xf51fb
+ cmp ax, strict word 0003eh ; 3d 3e 00 ; 0xf51fc keyboard.c:356
+ jc short 05204h ; 72 03 ; 0xf51ff
+ mov ax, strict word 0001eh ; b8 1e 00 ; 0xf5201 keyboard.c:357
+ cmp ax, cx ; 39 c8 ; 0xf5204 keyboard.c:359
+ jne short 0520ch ; 75 04 ; 0xf5206
+ xor ax, cx ; 31 c8 ; 0xf5208 keyboard.c:360
+ jmp short 05221h ; eb 15 ; 0xf520a
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf520c keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf520f
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5211
+ inc bx ; 43 ; 0xf5214 keyboard.c:363
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5215 keyboard.c:43
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf5218 keyboard.c:53
+ mov word [es:bx], ax ; 26 89 07 ; 0xf521b
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf521e keyboard.c:365
+ pop bp ; 5d ; 0xf5221 keyboard.c:366
+ pop cx ; 59 ; 0xf5222
+ pop bx ; 5b ; 0xf5223
+ retn ; c3 ; 0xf5224
+ ; disGetNextSymbol 0xf5225 LB 0x4d23 -> off=0x35 cb=000000000000040a uValue=00000000000f3c5a 'int09_function'
+ db 0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
+ db 01dh, 0e9h, 054h, 015h, 053h, 0e3h, 052h, 0e3h, 052h, 07ah, 053h, 0beh, 052h, 0f4h, 053h, 04fh
+ db 054h, 0ceh, 054h, 0b3h, 054h, 049h, 053h, 0e3h, 052h, 0e3h, 052h, 0cdh, 053h, 0d5h, 052h, 037h
+ db 054h, 09eh, 054h, 0c9h, 054h
+int09_function: ; 0xf525a LB 0x40a
+ push bp ; 55 ; 0xf525a keyboard.c:371
+ mov bp, sp ; 89 e5 ; 0xf525b
+ push si ; 56 ; 0xf525d
+ push di ; 57 ; 0xf525e
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf525f
+ mov al, byte [bp+014h] ; 8a 46 14 ; 0xf5262 keyboard.c:382
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf5265
+ test al, al ; 84 c0 ; 0xf5268 keyboard.c:384
+ jne short 05288h ; 75 1c ; 0xf526a
+ mov bx, 00da0h ; bb a0 0d ; 0xf526c keyboard.c:385
+ mov cx, ds ; 8c d9 ; 0xf526f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5271
+ call 018cch ; e8 55 c6 ; 0xf5274
+ mov ax, 00587h ; b8 87 05 ; 0xf5277
+ push ax ; 50 ; 0xf527a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf527b
+ push ax ; 50 ; 0xf527e
+ call 0190fh ; e8 8d c6 ; 0xf527f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5282
+ jmp near 053c6h ; e9 3e 01 ; 0xf5285 keyboard.c:386
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5288 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf528b
+ mov es, ax ; 8e c0 ; 0xf528e
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5290
+ mov dl, ah ; 88 e2 ; 0xf5293 keyboard.c:39
+ mov bx, 00096h ; bb 96 00 ; 0xf5295 keyboard.c:38
+ mov dh, byte [es:bx] ; 26 8a 37 ; 0xf5298
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf529b keyboard.c:39
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf529e keyboard.c:38
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf52a1
+ mov bl, bh ; 88 fb ; 0xf52a4 keyboard.c:39
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52a6 keyboard.c:394
+ push CS ; 0e ; 0xf52a9
+ pop ES ; 07 ; 0xf52aa
+ mov cx, strict word 00012h ; b9 12 00 ; 0xf52ab
+ mov di, 05225h ; bf 25 52 ; 0xf52ae
+ repne scasb ; f2 ae ; 0xf52b1
+ sal cx, 1 ; d1 e1 ; 0xf52b3
+ mov di, cx ; 89 cf ; 0xf52b5
+ mov cx, word [cs:di+05236h] ; 2e 8b 8d 36 52 ; 0xf52b7
+ jmp cx ; ff e1 ; 0xf52bc
+ xor bl, 040h ; 80 f3 40 ; 0xf52be keyboard.c:396
+ mov si, strict word 00017h ; be 17 00 ; 0xf52c1 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52c4
+ mov es, ax ; 8e c0 ; 0xf52c7
+ mov byte [es:si], bl ; 26 88 1c ; 0xf52c9
+ or dl, 040h ; 80 ca 40 ; 0xf52cc keyboard.c:398
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52cf keyboard.c:43
+ jmp near 054c3h ; e9 ee 01 ; 0xf52d2
+ and dl, 0bfh ; 80 e2 bf ; 0xf52d5 keyboard.c:402
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf52d8 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf52db
+ mov es, ax ; 8e c0 ; 0xf52de
+ jmp near 054c3h ; e9 e0 01 ; 0xf52e0
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf52e3 keyboard.c:411
+ jne short 05347h ; 75 5e ; 0xf52e7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf52e9 keyboard.c:412
+ and AL, strict byte 07fh ; 24 7f ; 0xf52ec
+ cmp AL, strict byte 02ah ; 3c 2a ; 0xf52ee
+ jne short 052f7h ; 75 05 ; 0xf52f0
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf52f2
+ jmp short 052fah ; eb 03 ; 0xf52f5
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf52f7
+ test byte [bp-006h], 080h ; f6 46 fa 80 ; 0xf52fa keyboard.c:413
+ je short 05306h ; 74 06 ; 0xf52fe
+ not al ; f6 d0 ; 0xf5300 keyboard.c:414
+ and bl, al ; 20 c3 ; 0xf5302
+ jmp short 05308h ; eb 02 ; 0xf5304 keyboard.c:415
+ or bl, al ; 08 c3 ; 0xf5306 keyboard.c:416
+ mov si, strict word 00017h ; be 17 00 ; 0xf5308 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf530b
+ mov es, ax ; 8e c0 ; 0xf530e
+ mov byte [es:si], bl ; 26 88 1c ; 0xf5310
+ jmp short 05347h ; eb 32 ; 0xf5313 keyboard.c:419
+ test dh, 001h ; f6 c6 01 ; 0xf5315 keyboard.c:422
+ jne short 05378h ; 75 5e ; 0xf5318
+ or bl, 004h ; 80 cb 04 ; 0xf531a keyboard.c:423
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf531d keyboard.c:41
+ mov ax, strict word 00017h ; b8 17 00 ; 0xf5320
+ mov dh, bl ; 88 de ; 0xf5323
+ mov bx, ax ; 89 c3 ; 0xf5325 keyboard.c:43
+ mov es, cx ; 8e c1 ; 0xf5327
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5329
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf532c keyboard.c:425
+ je short 0533eh ; 74 0c ; 0xf5330
+ or byte [bp-008h], 004h ; 80 4e f8 04 ; 0xf5332 keyboard.c:426
+ mov bx, 00096h ; bb 96 00 ; 0xf5336 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5339
+ jmp short 05344h ; eb 06 ; 0xf533c keyboard.c:428
+ or dl, 001h ; 80 ca 01 ; 0xf533e keyboard.c:429
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5341 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5344 keyboard.c:43
+ jmp short 05378h ; eb 2f ; 0xf5347 keyboard.c:433
+ test dh, 001h ; f6 c6 01 ; 0xf5349 keyboard.c:435
+ jne short 053a7h ; 75 59 ; 0xf534c
+ and bl, 0fbh ; 80 e3 fb ; 0xf534e keyboard.c:436
+ mov si, strict word 00017h ; be 17 00 ; 0xf5351 keyboard.c:43
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf5354
+ mov es, cx ; 8e c1 ; 0xf5357
+ mov byte [es:si], bl ; 26 88 1c ; 0xf5359
+ test dh, 002h ; f6 c6 02 ; 0xf535c keyboard.c:438
+ je short 0536fh ; 74 0e ; 0xf535f
+ and dh, 0fbh ; 80 e6 fb ; 0xf5361 keyboard.c:439
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf5364
+ mov bx, 00096h ; bb 96 00 ; 0xf5367 keyboard.c:43
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf536a
+ jmp short 053a7h ; eb 38 ; 0xf536d keyboard.c:441
+ and dl, 0feh ; 80 e2 fe ; 0xf536f keyboard.c:442
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5372 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5375
+ jmp short 053a7h ; eb 2d ; 0xf5378 keyboard.c:446
+ or bl, 008h ; 80 cb 08 ; 0xf537a keyboard.c:449
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf537d keyboard.c:41
+ mov cx, strict word 00017h ; b9 17 00 ; 0xf5380
+ mov dh, bl ; 88 de ; 0xf5383
+ mov bx, cx ; 89 cb ; 0xf5385 keyboard.c:43
+ mov es, ax ; 8e c0 ; 0xf5387
+ mov byte [es:bx], dh ; 26 88 37 ; 0xf5389
+ test byte [bp-008h], 002h ; f6 46 f8 02 ; 0xf538c keyboard.c:451
+ je short 0539eh ; 74 0c ; 0xf5390
+ or byte [bp-008h], 008h ; 80 4e f8 08 ; 0xf5392 keyboard.c:452
+ mov bx, 00096h ; bb 96 00 ; 0xf5396 keyboard.c:41
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5399
+ jmp short 053a4h ; eb 06 ; 0xf539c keyboard.c:454
+ or dl, 002h ; 80 ca 02 ; 0xf539e keyboard.c:455
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53a1 keyboard.c:41
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53a4 keyboard.c:43
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf53a7 keyboard.c:458
+ and AL, strict byte 07fh ; 24 7f ; 0xf53aa
+ cmp AL, strict byte 01dh ; 3c 1d ; 0xf53ac
+ je short 053b4h ; 74 04 ; 0xf53ae
+ and byte [bp-008h], 0feh ; 80 66 f8 fe ; 0xf53b0
+ and byte [bp-008h], 0fdh ; 80 66 f8 fd ; 0xf53b4
+ mov bx, 00096h ; bb 96 00 ; 0xf53b8
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53bb
+ mov es, ax ; 8e c0 ; 0xf53be
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf53c0
+ mov byte [es:bx], al ; 26 88 07 ; 0xf53c3
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf53c6
+ pop di ; 5f ; 0xf53c9
+ pop si ; 5e ; 0xf53ca
+ pop bp ; 5d ; 0xf53cb
+ retn ; c3 ; 0xf53cc
+ and bl, 0f7h ; 80 e3 f7 ; 0xf53cd keyboard.c:460
+ mov si, strict word 00017h ; be 17 00 ; 0xf53d0 keyboard.c:43
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf53d3
+ mov es, cx ; 8e c1 ; 0xf53d6
+ mov byte [es:si], bl ; 26 88 1c ; 0xf53d8
+ test dh, 002h ; f6 c6 02 ; 0xf53db keyboard.c:462
+ je short 053e9h ; 74 09 ; 0xf53de
+ and dh, 0f7h ; 80 e6 f7 ; 0xf53e0 keyboard.c:463
+ mov byte [bp-008h], dh ; 88 76 f8 ; 0xf53e3
+ jmp near 05367h ; e9 7e ff ; 0xf53e6 keyboard.c:464
+ and dl, 0fdh ; 80 e2 fd ; 0xf53e9 keyboard.c:466
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf53ec keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf53ef
+ jmp short 053a7h ; eb b3 ; 0xf53f2 keyboard.c:469
+ test dh, 003h ; f6 c6 03 ; 0xf53f4 keyboard.c:472
+ jne short 0540dh ; 75 14 ; 0xf53f7
+ or dl, 020h ; 80 ca 20 ; 0xf53f9 keyboard.c:474
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf53fc keyboard.c:41
+ mov si, strict word 00018h ; be 18 00 ; 0xf53ff
+ mov es, ax ; 8e c0 ; 0xf5402 keyboard.c:43
+ mov byte [es:si], dl ; 26 88 14 ; 0xf5404
+ xor bl, 020h ; 80 f3 20 ; 0xf5407 keyboard.c:476
+ jmp near 05492h ; e9 85 00 ; 0xf540a keyboard.c:477
+ or dl, 008h ; 80 ca 08 ; 0xf540d keyboard.c:480
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5410 keyboard.c:41
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5413
+ mov es, ax ; 8e c0 ; 0xf5416 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5418
+ mov ax, 000aeh ; b8 ae 00 ; 0xf541b keyboard.c:484
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf541e
+ out DX, AL ; ee ; 0xf5421
+ call 0e034h ; e8 0f 8c ; 0xf5422 keyboard.c:485
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5425 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5428
+ mov es, ax ; 8e c0 ; 0xf542b
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf542d
+ test AL, strict byte 008h ; a8 08 ; 0xf5430 keyboard.c:39
+ jne short 05425h ; 75 f1 ; 0xf5432
+ jmp near 053a7h ; e9 70 ff ; 0xf5434 keyboard.c:492
+ test dh, 003h ; f6 c6 03 ; 0xf5437 keyboard.c:494
+ je short 0543fh ; 74 03 ; 0xf543a
+ jmp near 053a7h ; e9 68 ff ; 0xf543c
+ and dl, 0dfh ; 80 e2 df ; 0xf543f keyboard.c:495
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf5442 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5445
+ mov es, ax ; 8e c0 ; 0xf5448
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf544a
+ jmp short 0543ch ; eb ed ; 0xf544d keyboard.c:498
+ test dh, 002h ; f6 c6 02 ; 0xf544f keyboard.c:501
+ je short 05481h ; 74 2d ; 0xf5452
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5454 keyboard.c:46
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf5457
+ mov es, ax ; 8e c0 ; 0xf545a keyboard.c:48
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf545c
+ mov bx, strict word 0001ch ; bb 1c 00 ; 0xf545f keyboard.c:51
+ mov word [es:bx], ax ; 26 89 07 ; 0xf5462 keyboard.c:53
+ mov bx, strict word 00071h ; bb 71 00 ; 0xf5465 keyboard.c:41
+ mov AL, strict byte 080h ; b0 80 ; 0xf5468
+ mov byte [es:bx], al ; 26 88 07 ; 0xf546a keyboard.c:43
+ mov ax, 000aeh ; b8 ae 00 ; 0xf546d keyboard.c:506
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5470
+ out DX, AL ; ee ; 0xf5473
+ push bp ; 55 ; 0xf5474 keyboard.c:507
+ int 01bh ; cd 1b ; 0xf5475
+ pop bp ; 5d ; 0xf5477
+ xor dx, dx ; 31 d2 ; 0xf5478 keyboard.c:508
+ xor ax, ax ; 31 c0 ; 0xf547a
+ call 051e0h ; e8 61 fd ; 0xf547c
+ jmp short 0543ch ; eb bb ; 0xf547f keyboard.c:509
+ or dl, 010h ; 80 ca 10 ; 0xf5481 keyboard.c:510
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5484 keyboard.c:41
+ mov es, ax ; 8e c0 ; 0xf5487
+ mov si, strict word 00018h ; be 18 00 ; 0xf5489
+ mov byte [es:si], dl ; 26 88 14 ; 0xf548c keyboard.c:43
+ xor bl, 010h ; 80 f3 10 ; 0xf548f keyboard.c:512
+ mov ax, strict word 00017h ; b8 17 00 ; 0xf5492 keyboard.c:41
+ mov dl, bl ; 88 da ; 0xf5495
+ mov bx, ax ; 89 c3 ; 0xf5497 keyboard.c:43
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf5499
+ jmp short 0543ch ; eb 9e ; 0xf549c keyboard.c:515
+ test dh, 002h ; f6 c6 02 ; 0xf549e keyboard.c:518
+ jne short 0543ch ; 75 99 ; 0xf54a1
+ and dl, 0efh ; 80 e2 ef ; 0xf54a3 keyboard.c:519
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54a6 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54a9
+ mov es, ax ; 8e c0 ; 0xf54ac
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54ae
+ jmp short 0543ch ; eb 89 ; 0xf54b1 keyboard.c:522
+ test ah, 004h ; f6 c4 04 ; 0xf54b3 keyboard.c:525
+ jne short 0543ch ; 75 84 ; 0xf54b6
+ or dl, 004h ; 80 ca 04 ; 0xf54b8 keyboard.c:526
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54bb keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54be
+ mov es, ax ; 8e c0 ; 0xf54c1
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54c3
+ jmp near 053a7h ; e9 de fe ; 0xf54c6 keyboard.c:530
+ and dl, 0fbh ; 80 e2 fb ; 0xf54c9 keyboard.c:533
+ jmp short 054bbh ; eb ed ; 0xf54cc keyboard.c:534
+ mov al, bh ; 88 f8 ; 0xf54ce keyboard.c:539
+ and AL, strict byte 00ch ; 24 0c ; 0xf54d0
+ cmp AL, strict byte 00ch ; 3c 0c ; 0xf54d2
+ jne short 054e9h ; 75 13 ; 0xf54d4
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54d6 keyboard.c:51
+ mov si, strict word 00072h ; be 72 00 ; 0xf54d9
+ mov cx, 01234h ; b9 34 12 ; 0xf54dc
+ mov es, ax ; 8e c0 ; 0xf54df keyboard.c:53
+ mov word [es:si], cx ; 26 89 0c ; 0xf54e1
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xf54e4 keyboard.c:542
+ test dl, 008h ; f6 c2 08 ; 0xf54e9 keyboard.c:548
+ je short 054ffh ; 74 11 ; 0xf54ec
+ and dl, 0f7h ; 80 e2 f7 ; 0xf54ee keyboard.c:550
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf54f1 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf54f4
+ mov es, ax ; 8e c0 ; 0xf54f7
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf54f9
+ jmp near 053c6h ; e9 c7 fe ; 0xf54fc keyboard.c:552
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf54ff keyboard.c:555
+ test AL, strict byte 080h ; a8 80 ; 0xf5502
+ je short 05534h ; 74 2e ; 0xf5504
+ cmp AL, strict byte 0fah ; 3c fa ; 0xf5506 keyboard.c:557
+ jne short 0551ah ; 75 10 ; 0xf5508
+ mov bx, 00097h ; bb 97 00 ; 0xf550a keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf550d
+ mov es, ax ; 8e c0 ; 0xf5510
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5512
+ or ah, 010h ; 80 cc 10 ; 0xf5515 keyboard.c:39
+ jmp short 0552fh ; eb 15 ; 0xf5518 keyboard.c:560
+ cmp AL, strict byte 0feh ; 3c fe ; 0xf551a
+ je short 05521h ; 74 03 ; 0xf551c
+ jmp near 053a7h ; e9 86 fe ; 0xf551e
+ mov bx, 00097h ; bb 97 00 ; 0xf5521 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5524
+ mov es, ax ; 8e c0 ; 0xf5527
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf5529
+ or ah, 020h ; 80 cc 20 ; 0xf552c keyboard.c:39
+ mov byte [es:bx], ah ; 26 88 27 ; 0xf552f keyboard.c:43
+ jmp short 0551eh ; eb ea ; 0xf5532 keyboard.c:564
+ cmp byte [bp-006h], 058h ; 80 7e fa 58 ; 0xf5534 keyboard.c:566
+ jbe short 0555ch ; 76 22 ; 0xf5538
+ mov bx, 00da0h ; bb a0 0d ; 0xf553a keyboard.c:567
+ mov cx, ds ; 8c d9 ; 0xf553d
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf553f
+ call 018cch ; e8 87 c3 ; 0xf5542
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5545
+ xor ah, ah ; 30 e4 ; 0xf5548
+ push ax ; 50 ; 0xf554a
+ mov ax, 005a1h ; b8 a1 05 ; 0xf554b
+ push ax ; 50 ; 0xf554e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf554f
+ push ax ; 50 ; 0xf5552
+ call 0190fh ; e8 b9 c3 ; 0xf5553
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5556
+ jmp near 053c6h ; e9 6a fe ; 0xf5559 keyboard.c:568
+ test bl, 008h ; f6 c3 08 ; 0xf555c keyboard.c:570
+ je short 0557bh ; 74 1a ; 0xf555f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5561 keyboard.c:571
+ xor ah, ah ; 30 e4 ; 0xf5564
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5566
+ imul dx ; f7 ea ; 0xf5569
+ mov si, ax ; 89 c6 ; 0xf556b
+ mov al, byte [si+00df4h] ; 8a 84 f4 0d ; 0xf556d
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5571
+ mov al, byte [si+00df5h] ; 8a 84 f5 0d ; 0xf5574 keyboard.c:572
+ jmp near 0562fh ; e9 b4 00 ; 0xf5578 keyboard.c:573
+ test bl, 004h ; f6 c3 04 ; 0xf557b
+ je short 0559ah ; 74 1a ; 0xf557e
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf5580 keyboard.c:574
+ xor ah, ah ; 30 e4 ; 0xf5583
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5585
+ imul dx ; f7 ea ; 0xf5588
+ mov si, ax ; 89 c6 ; 0xf558a
+ mov al, byte [si+00df2h] ; 8a 84 f2 0d ; 0xf558c
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5590
+ mov al, byte [si+00df3h] ; 8a 84 f3 0d ; 0xf5593 keyboard.c:575
+ jmp near 0562fh ; e9 95 00 ; 0xf5597 keyboard.c:576
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf559a
+ and AL, strict byte 002h ; 24 02 ; 0xf559d
+ test al, al ; 84 c0 ; 0xf559f
+ jbe short 055c1h ; 76 1e ; 0xf55a1
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55a3
+ cmp AL, strict byte 047h ; 3c 47 ; 0xf55a6
+ jc short 055c1h ; 72 17 ; 0xf55a8
+ cmp AL, strict byte 053h ; 3c 53 ; 0xf55aa
+ jnbe short 055c1h ; 77 13 ; 0xf55ac
+ mov byte [bp-00ah], 0e0h ; c6 46 f6 e0 ; 0xf55ae keyboard.c:578
+ xor ah, ah ; 30 e4 ; 0xf55b2 keyboard.c:579
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf55b4
+ imul dx ; f7 ea ; 0xf55b7
+ mov bx, ax ; 89 c3 ; 0xf55b9
+ mov al, byte [bx+00defh] ; 8a 87 ef 0d ; 0xf55bb
+ jmp short 0562fh ; eb 6e ; 0xf55bf keyboard.c:580
+ test bl, 003h ; f6 c3 03 ; 0xf55c1
+ je short 055fdh ; 74 37 ; 0xf55c4
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55c6 keyboard.c:584
+ xor ah, ah ; 30 e4 ; 0xf55c9
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf55cb
+ imul dx ; f7 ea ; 0xf55ce
+ mov si, ax ; 89 c6 ; 0xf55d0
+ mov al, byte [si+00df6h] ; 8a 84 f6 0d ; 0xf55d2
+ xor ah, ah ; 30 e4 ; 0xf55d6
+ mov dl, bl ; 88 da ; 0xf55d8
+ xor dh, dh ; 30 f6 ; 0xf55da
+ test dx, ax ; 85 c2 ; 0xf55dc
+ je short 055edh ; 74 0d ; 0xf55de
+ mov al, byte [si+00deeh] ; 8a 84 ee 0d ; 0xf55e0 keyboard.c:585
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf55e4
+ mov al, byte [si+00defh] ; 8a 84 ef 0d ; 0xf55e7 keyboard.c:586
+ jmp short 055f8h ; eb 0b ; 0xf55eb keyboard.c:587
+ mov al, byte [si+00df0h] ; 8a 84 f0 0d ; 0xf55ed keyboard.c:588
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf55f1
+ mov al, byte [si+00df1h] ; 8a 84 f1 0d ; 0xf55f4 keyboard.c:589
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf55f8
+ jmp short 05632h ; eb 35 ; 0xf55fb keyboard.c:591
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf55fd keyboard.c:593
+ xor ah, ah ; 30 e4 ; 0xf5600
+ mov dx, strict word 0000ah ; ba 0a 00 ; 0xf5602
+ imul dx ; f7 ea ; 0xf5605
+ mov si, ax ; 89 c6 ; 0xf5607
+ mov dl, byte [si+00df6h] ; 8a 94 f6 0d ; 0xf5609
+ xor dh, dh ; 30 f6 ; 0xf560d
+ mov al, bl ; 88 d8 ; 0xf560f
+ xor ah, ah ; 30 e4 ; 0xf5611
+ test ax, dx ; 85 d0 ; 0xf5613
+ je short 05624h ; 74 0d ; 0xf5615
+ mov al, byte [si+00df0h] ; 8a 84 f0 0d ; 0xf5617 keyboard.c:594
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf561b
+ mov al, byte [si+00df1h] ; 8a 84 f1 0d ; 0xf561e keyboard.c:595
+ jmp short 0562fh ; eb 0b ; 0xf5622 keyboard.c:596
+ mov al, byte [si+00deeh] ; 8a 84 ee 0d ; 0xf5624 keyboard.c:597
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf5628
+ mov al, byte [si+00defh] ; 8a 84 ef 0d ; 0xf562b keyboard.c:598
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf562f
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5632 keyboard.c:601
+ jne short 05657h ; 75 1f ; 0xf5636
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5638
+ jne short 05657h ; 75 19 ; 0xf563c
+ mov bx, 00da0h ; bb a0 0d ; 0xf563e keyboard.c:602
+ mov cx, ds ; 8c d9 ; 0xf5641
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5643
+ call 018cch ; e8 83 c2 ; 0xf5646
+ mov ax, 005d8h ; b8 d8 05 ; 0xf5649
+ push ax ; 50 ; 0xf564c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf564d
+ push ax ; 50 ; 0xf5650
+ call 0190fh ; e8 bb c2 ; 0xf5651
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5654
+ mov dl, byte [bp-00ah] ; 8a 56 f6 ; 0xf5657 keyboard.c:604
+ xor dh, dh ; 30 f6 ; 0xf565a
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf565c
+ xor ah, ah ; 30 e4 ; 0xf565f
+ jmp near 0547ch ; e9 18 fe ; 0xf5661
+ ; disGetNextSymbol 0xf5664 LB 0x48e4 -> off=0x0 cb=0000000000000061 uValue=00000000000f4064 'dequeue_key'
+dequeue_key: ; 0xf5664 LB 0x61
+ push si ; 56 ; 0xf5664 keyboard.c:614
+ push di ; 57 ; 0xf5665
+ push bp ; 55 ; 0xf5666
+ mov bp, sp ; 89 e5 ; 0xf5667
+ push ax ; 50 ; 0xf5669
+ mov si, ax ; 89 c6 ; 0xf566a
+ mov word [bp-002h], bx ; 89 5e fe ; 0xf566c
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf566f keyboard.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5672
+ mov es, ax ; 8e c0 ; 0xf5675
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf5677
+ mov di, strict word 0001ch ; bf 1c 00 ; 0xf567a keyboard.c:48
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf567d
+ cmp bx, ax ; 39 c3 ; 0xf5680 keyboard.c:630
+ je short 056bbh ; 74 37 ; 0xf5682
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5684 keyboard.c:38
+ lea di, [bx+001h] ; 8d 7f 01 ; 0xf5687 keyboard.c:632
+ mov ah, byte [es:di] ; 26 8a 25 ; 0xf568a keyboard.c:38
+ mov es, cx ; 8e c1 ; 0xf568d keyboard.c:633
+ mov di, word [bp-002h] ; 8b 7e fe ; 0xf568f
+ mov byte [es:di], al ; 26 88 05 ; 0xf5692
+ mov es, dx ; 8e c2 ; 0xf5695 keyboard.c:634
+ mov byte [es:si], ah ; 26 88 24 ; 0xf5697
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf569a keyboard.c:637
+ je short 056b6h ; 74 16 ; 0xf569e
+ lea si, [bx+002h] ; 8d 77 02 ; 0xf56a0 keyboard.c:638
+ cmp si, strict byte 0003eh ; 83 fe 3e ; 0xf56a3 keyboard.c:639
+ jc short 056abh ; 72 03 ; 0xf56a6
+ mov si, strict word 0001eh ; be 1e 00 ; 0xf56a8 keyboard.c:640
+ mov bx, strict word 0001ah ; bb 1a 00 ; 0xf56ab keyboard.c:53
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf56ae
+ mov es, ax ; 8e c0 ; 0xf56b1
+ mov word [es:bx], si ; 26 89 37 ; 0xf56b3
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf56b6 keyboard.c:643
+ jmp short 056bdh ; eb 02 ; 0xf56b9
+ xor ax, ax ; 31 c0 ; 0xf56bb keyboard.c:646
+ mov sp, bp ; 89 ec ; 0xf56bd keyboard.c:648
+ pop bp ; 5d ; 0xf56bf
+ pop di ; 5f ; 0xf56c0
+ pop si ; 5e ; 0xf56c1
+ retn 00002h ; c2 02 00 ; 0xf56c2
+ ; disGetNextSymbol 0xf56c5 LB 0x4883 -> off=0x23 cb=00000000000002f4 uValue=00000000000f40e8 'int16_function'
+ db 0a2h, 092h, 012h, 011h, 010h, 00ah, 009h, 005h, 002h, 001h, 000h, 0eah, 057h, 0a5h, 057h, 03bh
+ db 058h, 080h, 058h, 095h, 058h, 0bch, 058h, 0c6h, 058h, 035h, 059h, 071h, 059h, 0a2h, 059h, 0d1h
+ db 059h, 034h, 058h
+int16_function: ; 0xf56e8 LB 0x2f4
+ push bp ; 55 ; 0xf56e8 keyboard.c:665
+ mov bp, sp ; 89 e5 ; 0xf56e9
+ push si ; 56 ; 0xf56eb
+ push di ; 57 ; 0xf56ec
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf56ed
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf56f0 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf56f3
+ mov es, ax ; 8e c0 ; 0xf56f6
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf56f8
+ mov bh, dl ; 88 d7 ; 0xf56fb keyboard.c:39
+ mov si, 00097h ; be 97 00 ; 0xf56fd keyboard.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5700
+ mov bl, al ; 88 c3 ; 0xf5703 keyboard.c:39
+ xor dh, dh ; 30 f6 ; 0xf5705 keyboard.c:674
+ mov CL, strict byte 004h ; b1 04 ; 0xf5707
+ sar dx, CL ; d3 fa ; 0xf5709
+ and dl, 007h ; 80 e2 07 ; 0xf570b
+ and AL, strict byte 007h ; 24 07 ; 0xf570e
+ xor ah, ah ; 30 e4 ; 0xf5710
+ xor al, dl ; 30 d0 ; 0xf5712
+ test ax, ax ; 85 c0 ; 0xf5714
+ je short 05784h ; 74 6c ; 0xf5716
+ cli ; fa ; 0xf5718 keyboard.c:675
+ mov AL, strict byte 0edh ; b0 ed ; 0xf5719 keyboard.c:676
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf571b
+ out DX, AL ; ee ; 0xf571e
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf571f keyboard.c:677
+ in AL, DX ; ec ; 0xf5722
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5723
+ test AL, strict byte 001h ; a8 01 ; 0xf5725
+ jne short 05731h ; 75 08 ; 0xf5727
+ mov AL, strict byte 021h ; b0 21 ; 0xf5729
+ mov dx, 00080h ; ba 80 00 ; 0xf572b
+ out DX, AL ; ee ; 0xf572e
+ jmp short 0571fh ; eb ee ; 0xf572f
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5731 keyboard.c:678
+ in AL, DX ; ec ; 0xf5734
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5735
+ cmp ax, 000fah ; 3d fa 00 ; 0xf5737
+ jne short 05783h ; 75 47 ; 0xf573a
+ and bl, 0c8h ; 80 e3 c8 ; 0xf573c keyboard.c:679
+ mov al, bh ; 88 f8 ; 0xf573f keyboard.c:680
+ xor ah, ah ; 30 e4 ; 0xf5741
+ mov CL, strict byte 004h ; b1 04 ; 0xf5743
+ sar ax, CL ; d3 f8 ; 0xf5745
+ mov cx, ax ; 89 c1 ; 0xf5747
+ xor ch, ah ; 30 e5 ; 0xf5749
+ and cl, 007h ; 80 e1 07 ; 0xf574b
+ mov al, bl ; 88 d8 ; 0xf574e
+ xor ah, ah ; 30 e4 ; 0xf5750
+ mov dx, ax ; 89 c2 ; 0xf5752
+ or dx, cx ; 09 ca ; 0xf5754
+ mov bl, dl ; 88 d3 ; 0xf5756
+ mov al, dl ; 88 d0 ; 0xf5758 keyboard.c:681
+ and AL, strict byte 007h ; 24 07 ; 0xf575a
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf575c
+ out DX, AL ; ee ; 0xf575f
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf5760 keyboard.c:682
+ in AL, DX ; ec ; 0xf5763
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5764
+ test AL, strict byte 001h ; a8 01 ; 0xf5766
+ jne short 05772h ; 75 08 ; 0xf5768
+ mov AL, strict byte 021h ; b0 21 ; 0xf576a keyboard.c:683
+ mov dx, 00080h ; ba 80 00 ; 0xf576c
+ out DX, AL ; ee ; 0xf576f
+ jmp short 05760h ; eb ee ; 0xf5770
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf5772 keyboard.c:684
+ in AL, DX ; ec ; 0xf5775
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5776
+ mov si, 00097h ; be 97 00 ; 0xf5778 keyboard.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf577b
+ mov es, ax ; 8e c0 ; 0xf577e
+ mov byte [es:si], bl ; 26 88 1c ; 0xf5780
+ sti ; fb ; 0xf5783 keyboard.c:687
+ mov CL, strict byte 008h ; b1 08 ; 0xf5784 keyboard.c:690
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5786
+ shr ax, CL ; d3 e8 ; 0xf5789
+ cmp ax, 000a2h ; 3d a2 00 ; 0xf578b
+ jnbe short 057eah ; 77 5a ; 0xf578e
+ push CS ; 0e ; 0xf5790
+ pop ES ; 07 ; 0xf5791
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf5792
+ mov di, 056c5h ; bf c5 56 ; 0xf5795
+ repne scasb ; f2 ae ; 0xf5798
+ sal cx, 1 ; d1 e1 ; 0xf579a
+ mov di, cx ; 89 cf ; 0xf579c
+ mov ax, word [cs:di+056d0h] ; 2e 8b 85 d0 56 ; 0xf579e
+ jmp ax ; ff e0 ; 0xf57a3
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf57a5 keyboard.c:692
+ push ax ; 50 ; 0xf57a8
+ mov cx, ss ; 8c d1 ; 0xf57a9
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf57ab
+ mov dx, ss ; 8c d2 ; 0xf57ae
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf57b0
+ call 05664h ; e8 ae fe ; 0xf57b3
+ test ax, ax ; 85 c0 ; 0xf57b6
+ jne short 057c8h ; 75 0e ; 0xf57b8
+ mov ax, 0060fh ; b8 0f 06 ; 0xf57ba keyboard.c:693
+ push ax ; 50 ; 0xf57bd
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf57be
+ push ax ; 50 ; 0xf57c1
+ call 0190fh ; e8 4a c1 ; 0xf57c2
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf57c5
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf57c8 keyboard.c:695
+ je short 057d4h ; 74 06 ; 0xf57cc
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf57ce
+ je short 057dah ; 74 06 ; 0xf57d2
+ cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf57d4 keyboard.c:697
+ jne short 057deh ; 75 04 ; 0xf57d8
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf57da keyboard.c:698
+ mov ah, byte [bp-00ah] ; 8a 66 f6 ; 0xf57de keyboard.c:699
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf57e1
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf57e4
+ jmp near 05834h ; e9 4a 00 ; 0xf57e7 keyboard.c:700
+ mov bx, 00da0h ; bb a0 0d ; 0xf57ea
+ mov cx, ds ; 8c d9 ; 0xf57ed
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf57ef
+ call 018cch ; e8 d7 c0 ; 0xf57f2
+ mov CL, strict byte 008h ; b1 08 ; 0xf57f5
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf57f7
+ shr ax, CL ; d3 e8 ; 0xf57fa
+ push ax ; 50 ; 0xf57fc
+ mov ax, 00633h ; b8 33 06 ; 0xf57fd
+ push ax ; 50 ; 0xf5800
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5801
+ push ax ; 50 ; 0xf5804
+ call 0190fh ; e8 07 c1 ; 0xf5805
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf5808
+ mov bx, 00da0h ; bb a0 0d ; 0xf580b
+ mov cx, ds ; 8c d9 ; 0xf580e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5810
+ call 018cch ; e8 b6 c0 ; 0xf5813
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5816
+ push ax ; 50 ; 0xf5819
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf581a
+ push ax ; 50 ; 0xf581d
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf581e
+ push ax ; 50 ; 0xf5821
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5822
+ push ax ; 50 ; 0xf5825
+ mov ax, 0065bh ; b8 5b 06 ; 0xf5826
+ push ax ; 50 ; 0xf5829
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf582a
+ push ax ; 50 ; 0xf582d
+ call 0190fh ; e8 de c0 ; 0xf582e
+ add sp, strict byte 0000ch ; 83 c4 0c ; 0xf5831
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf5834
+ pop di ; 5f ; 0xf5837
+ pop si ; 5e ; 0xf5838
+ pop bp ; 5d ; 0xf5839
+ retn ; c3 ; 0xf583a
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf583b keyboard.c:704
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf583e
+ xor ax, ax ; 31 c0 ; 0xf5841 keyboard.c:705
+ push ax ; 50 ; 0xf5843
+ mov cx, ss ; 8c d1 ; 0xf5844
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf5846
+ mov dx, ss ; 8c d2 ; 0xf5849
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf584b
+ call 05664h ; e8 13 fe ; 0xf584e
+ test ax, ax ; 85 c0 ; 0xf5851
+ jne short 0585bh ; 75 06 ; 0xf5853
+ or word [bp+01eh], strict byte 00040h ; 83 4e 1e 40 ; 0xf5855 keyboard.c:706
+ jmp short 05834h ; eb d9 ; 0xf5859 keyboard.c:707
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf585b keyboard.c:709
+ je short 05867h ; 74 06 ; 0xf585f
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5861
+ je short 0586dh ; 74 06 ; 0xf5865
+ cmp byte [bp-008h], 0e0h ; 80 7e f8 e0 ; 0xf5867 keyboard.c:711
+ jne short 05871h ; 75 04 ; 0xf586b
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf586d keyboard.c:712
+ mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf5871 keyboard.c:713
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf5874
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5877
+ and word [bp+01eh], strict byte 0ffbfh ; 83 66 1e bf ; 0xf587a keyboard.c:714
+ jmp short 05834h ; eb b4 ; 0xf587e keyboard.c:715
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf5880 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5883
+ mov es, ax ; 8e c0 ; 0xf5886
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf5888
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf588b keyboard.c:719
+ mov dl, al ; 88 c2 ; 0xf588e
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf5890
+ jmp short 05834h ; eb 9f ; 0xf5893 keyboard.c:720
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf5895 keyboard.c:723
+ xor dh, dh ; 30 f6 ; 0xf5898
+ mov CL, strict byte 008h ; b1 08 ; 0xf589a
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf589c
+ shr ax, CL ; d3 e8 ; 0xf589f
+ xor ah, ah ; 30 e4 ; 0xf58a1
+ call 051e0h ; e8 3a f9 ; 0xf58a3
+ test ax, ax ; 85 c0 ; 0xf58a6
+ jne short 058b4h ; 75 0a ; 0xf58a8
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58aa keyboard.c:724
+ xor al, al ; 30 c0 ; 0xf58ad
+ or AL, strict byte 001h ; 0c 01 ; 0xf58af
+ jmp near 057e4h ; e9 30 ff ; 0xf58b1
+ and word [bp+012h], 0ff00h ; 81 66 12 00 ff ; 0xf58b4 keyboard.c:727
+ jmp near 05834h ; e9 78 ff ; 0xf58b9 keyboard.c:729
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf58bc keyboard.c:742
+ xor al, al ; 30 c0 ; 0xf58bf
+ or AL, strict byte 030h ; 0c 30 ; 0xf58c1
+ jmp near 057e4h ; e9 1e ff ; 0xf58c3
+ mov byte [bp-006h], 002h ; c6 46 fa 02 ; 0xf58c6 keyboard.c:746
+ xor cx, cx ; 31 c9 ; 0xf58ca keyboard.c:747
+ cli ; fa ; 0xf58cc keyboard.c:749
+ mov AL, strict byte 0f2h ; b0 f2 ; 0xf58cd keyboard.c:750
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf58cf
+ out DX, AL ; ee ; 0xf58d2
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf58d3 keyboard.c:752
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf58d6 keyboard.c:753
+ in AL, DX ; ec ; 0xf58d9
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58da
+ test AL, strict byte 001h ; a8 01 ; 0xf58dc
+ jne short 058edh ; 75 0d ; 0xf58de
+ dec bx ; 4b ; 0xf58e0
+ test bx, bx ; 85 db ; 0xf58e1
+ jbe short 058edh ; 76 08 ; 0xf58e3
+ mov dx, 00080h ; ba 80 00 ; 0xf58e5 keyboard.c:754
+ in AL, DX ; ec ; 0xf58e8
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58e9
+ jmp short 058d6h ; eb e9 ; 0xf58eb
+ test bx, bx ; 85 db ; 0xf58ed keyboard.c:755
+ jbe short 0592fh ; 76 3e ; 0xf58ef
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf58f1 keyboard.c:756
+ in AL, DX ; ec ; 0xf58f4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf58f5
+ cmp ax, 000fah ; 3d fa 00 ; 0xf58f7
+ jne short 0592fh ; 75 33 ; 0xf58fa
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf58fc keyboard.c:758
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf58ff keyboard.c:759
+ in AL, DX ; ec ; 0xf5902
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5903
+ test AL, strict byte 001h ; a8 01 ; 0xf5905
+ jne short 05916h ; 75 0d ; 0xf5907
+ dec bx ; 4b ; 0xf5909
+ test bx, bx ; 85 db ; 0xf590a
+ jbe short 05916h ; 76 08 ; 0xf590c
+ mov dx, 00080h ; ba 80 00 ; 0xf590e keyboard.c:760
+ in AL, DX ; ec ; 0xf5911
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5912
+ jmp short 058ffh ; eb e9 ; 0xf5914
+ test bx, bx ; 85 db ; 0xf5916 keyboard.c:761
+ jbe short 05926h ; 76 0c ; 0xf5918
+ mov bl, ch ; 88 eb ; 0xf591a keyboard.c:762
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf591c keyboard.c:763
+ in AL, DX ; ec ; 0xf591f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf5920
+ mov ch, al ; 88 c5 ; 0xf5922
+ mov cl, bl ; 88 d9 ; 0xf5924
+ dec byte [bp-006h] ; fe 4e fa ; 0xf5926 keyboard.c:765
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf5929
+ jnbe short 058fch ; 77 cd ; 0xf592d
+ mov word [bp+00ch], cx ; 89 4e 0c ; 0xf592f keyboard.c:768
+ jmp near 05834h ; e9 ff fe ; 0xf5932 keyboard.c:769
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5935 keyboard.c:772
+ push ax ; 50 ; 0xf5938
+ mov cx, ss ; 8c d1 ; 0xf5939
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf593b
+ mov dx, ss ; 8c d2 ; 0xf593e
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5940
+ call 05664h ; e8 1e fd ; 0xf5943
+ test ax, ax ; 85 c0 ; 0xf5946
+ jne short 05958h ; 75 0e ; 0xf5948
+ mov ax, 0060fh ; b8 0f 06 ; 0xf594a keyboard.c:773
+ push ax ; 50 ; 0xf594d
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf594e
+ push ax ; 50 ; 0xf5951
+ call 0190fh ; e8 ba bf ; 0xf5952
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf5955
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf5958 keyboard.c:775
+ je short 05968h ; 74 0a ; 0xf595c
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf595e
+ jne short 05968h ; 75 04 ; 0xf5962
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf5964 keyboard.c:776
+ mov dh, byte [bp-00ah] ; 8a 76 f6 ; 0xf5968 keyboard.c:777
+ mov dl, byte [bp-008h] ; 8a 56 f8 ; 0xf596b
+ jmp near 05890h ; e9 1f ff ; 0xf596e
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf5971 keyboard.c:782
+ mov word [bp+01eh], ax ; 89 46 1e ; 0xf5974
+ xor ax, ax ; 31 c0 ; 0xf5977 keyboard.c:783
+ push ax ; 50 ; 0xf5979
+ mov cx, ss ; 8c d1 ; 0xf597a
+ lea bx, [bp-008h] ; 8d 5e f8 ; 0xf597c
+ mov dx, ss ; 8c d2 ; 0xf597f
+ lea ax, [bp-00ah] ; 8d 46 f6 ; 0xf5981
+ call 05664h ; e8 dd fc ; 0xf5984
+ test ax, ax ; 85 c0 ; 0xf5987
+ jne short 0598eh ; 75 03 ; 0xf5989
+ jmp near 05855h ; e9 c7 fe ; 0xf598b
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf598e keyboard.c:787
+ jne short 05997h ; 75 03 ; 0xf5992
+ jmp near 05871h ; e9 da fe ; 0xf5994
+ cmp byte [bp-008h], 0f0h ; 80 7e f8 f0 ; 0xf5997
+ jne short 059a0h ; 75 03 ; 0xf599b
+ jmp near 0586dh ; e9 cd fe ; 0xf599d
+ jmp short 05994h ; eb f2 ; 0xf59a0
+ mov bx, strict word 00017h ; bb 17 00 ; 0xf59a2 keyboard.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf59a5
+ mov es, ax ; 8e c0 ; 0xf59a8
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf59aa
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf59ad keyboard.c:795
+ mov dl, al ; 88 c2 ; 0xf59b0
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf59b2
+ mov bx, strict word 00018h ; bb 18 00 ; 0xf59b5 keyboard.c:38
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf59b8
+ and bh, 073h ; 80 e7 73 ; 0xf59bb keyboard.c:39
+ mov si, 00096h ; be 96 00 ; 0xf59be keyboard.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf59c1
+ and ah, 00ch ; 80 e4 0c ; 0xf59c4 keyboard.c:39
+ or ah, bh ; 08 fc ; 0xf59c7
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf59c9 keyboard.c:798
+ mov dh, ah ; 88 e6 ; 0xf59cc
+ jmp near 05890h ; e9 bf fe ; 0xf59ce
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59d1 keyboard.c:803
+ xor ah, ah ; 30 e4 ; 0xf59d4
+ or ah, 080h ; 80 cc 80 ; 0xf59d6
+ jmp near 057e4h ; e9 08 fe ; 0xf59d9
+ ; disGetNextSymbol 0xf59dc LB 0x456c -> off=0x0 cb=00000000000000b9 uValue=00000000000f43dc 'set_geom_lba'
+set_geom_lba: ; 0xf59dc LB 0xb9
+ push bx ; 53 ; 0xf59dc disk.c:115
+ push cx ; 51 ; 0xf59dd
+ push si ; 56 ; 0xf59de
+ push di ; 57 ; 0xf59df
+ push bp ; 55 ; 0xf59e0
+ mov bp, sp ; 89 e5 ; 0xf59e1
+ sub sp, strict byte 00008h ; 83 ec 08 ; 0xf59e3
+ mov di, ax ; 89 c7 ; 0xf59e6
+ mov es, dx ; 8e c2 ; 0xf59e8
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf59ea disk.c:117
+ mov word [bp-006h], strict word 0007eh ; c7 46 fa 7e 00 ; 0xf59ef
+ mov word [bp-002h], 000ffh ; c7 46 fe ff 00 ; 0xf59f4 disk.c:119
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf59f9 disk.c:122
+ mov bx, word [bp+010h] ; 8b 5e 10 ; 0xf59fc
+ mov cx, word [bp+00eh] ; 8b 4e 0e ; 0xf59ff
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf5a02
+ mov si, strict word 00020h ; be 20 00 ; 0xf5a05
+ call 09c10h ; e8 05 42 ; 0xf5a08
+ test ax, ax ; 85 c0 ; 0xf5a0b
+ jne short 05a1bh ; 75 0c ; 0xf5a0d
+ test bx, bx ; 85 db ; 0xf5a0f
+ jne short 05a1bh ; 75 08 ; 0xf5a11
+ test cx, cx ; 85 c9 ; 0xf5a13
+ jne short 05a1bh ; 75 04 ; 0xf5a15
+ test dx, dx ; 85 d2 ; 0xf5a17
+ je short 05a22h ; 74 07 ; 0xf5a19
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf5a1b
+ mov si, bx ; 89 de ; 0xf5a1e
+ jmp short 05a28h ; eb 06 ; 0xf5a20
+ mov bx, word [bp+00ch] ; 8b 5e 0c ; 0xf5a22
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf5a25
+ mov word [bp-004h], bx ; 89 5e fc ; 0xf5a28
+ xor bx, bx ; 31 db ; 0xf5a2b disk.c:124
+ jmp short 05a34h ; eb 05 ; 0xf5a2d
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf5a2f
+ jnl short 05a57h ; 7d 23 ; 0xf5a32
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5a34 disk.c:125
+ cmp si, ax ; 39 c6 ; 0xf5a37
+ jc short 05a45h ; 72 0a ; 0xf5a39
+ jne short 05a4eh ; 75 11 ; 0xf5a3b
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a3d
+ cmp ax, word [bp-008h] ; 3b 46 f8 ; 0xf5a40
+ jnbe short 05a4eh ; 77 09 ; 0xf5a43
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a45 disk.c:126
+ inc ax ; 40 ; 0xf5a48
+ shr ax, 1 ; d1 e8 ; 0xf5a49
+ mov word [bp-002h], ax ; 89 46 fe ; 0xf5a4b
+ shr word [bp-006h], 1 ; d1 6e fa ; 0xf5a4e disk.c:127
+ rcr word [bp-008h], 1 ; d1 5e f8 ; 0xf5a51
+ inc bx ; 43 ; 0xf5a54 disk.c:128
+ jmp short 05a2fh ; eb d8 ; 0xf5a55
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a57 disk.c:130
+ xor dx, dx ; 31 d2 ; 0xf5a5a
+ mov bx, strict word 0003fh ; bb 3f 00 ; 0xf5a5c
+ xor cx, cx ; 31 c9 ; 0xf5a5f
+ call 09bc0h ; e8 5c 41 ; 0xf5a61
+ mov bx, ax ; 89 c3 ; 0xf5a64
+ mov cx, dx ; 89 d1 ; 0xf5a66
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5a68
+ mov dx, si ; 89 f2 ; 0xf5a6b
+ call 09be0h ; e8 70 41 ; 0xf5a6d
+ mov word [es:di+002h], ax ; 26 89 45 02 ; 0xf5a70
+ cmp ax, 00400h ; 3d 00 04 ; 0xf5a74 disk.c:131
+ jbe short 05a7fh ; 76 06 ; 0xf5a77
+ mov word [es:di+002h], 00400h ; 26 c7 45 02 00 04 ; 0xf5a79 disk.c:132
+ mov ax, word [bp-002h] ; 8b 46 fe ; 0xf5a7f disk.c:133
+ mov word [es:di], ax ; 26 89 05 ; 0xf5a82
+ mov word [es:di+004h], strict word 0003fh ; 26 c7 45 04 3f 00 ; 0xf5a85 disk.c:134
+ mov sp, bp ; 89 ec ; 0xf5a8b disk.c:135
+ pop bp ; 5d ; 0xf5a8d
+ pop di ; 5f ; 0xf5a8e
+ pop si ; 5e ; 0xf5a8f
+ pop cx ; 59 ; 0xf5a90
+ pop bx ; 5b ; 0xf5a91
+ retn 00008h ; c2 08 00 ; 0xf5a92
+ ; disGetNextSymbol 0xf5a95 LB 0x44b3 -> off=0x0 cb=000000000000031e uValue=00000000000f4495 'edd_fill_dpt'
+edd_fill_dpt: ; 0xf5a95 LB 0x31e
+ push si ; 56 ; 0xf5a95 disk.c:137
+ push di ; 57 ; 0xf5a96
+ push bp ; 55 ; 0xf5a97
+ mov bp, sp ; 89 e5 ; 0xf5a98
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5a9a
+ mov di, ax ; 89 c7 ; 0xf5a9d
+ mov word [bp-004h], dx ; 89 56 fc ; 0xf5a9f
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf5aa2
+ mov word [bp-006h], cx ; 89 4e fa ; 0xf5aa5
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5aa8 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5aab
+ mov es, ax ; 8e c0 ; 0xf5aae
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5ab0
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf5ab3 disk.c:49
+ mov es, dx ; 8e c2 ; 0xf5ab6 disk.c:142
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf5ab8
+ cmp ax, strict word 0001ah ; 3d 1a 00 ; 0xf5abb
+ jnc short 05ac6h ; 73 06 ; 0xf5abe
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf5ac0 disk.c:143
+ jmp near 05dabh ; e9 e5 02 ; 0xf5ac3
+ jc short 05b39h ; 72 71 ; 0xf5ac6 disk.c:146
+ mov word [es:di], strict word 0001ah ; 26 c7 05 1a 00 ; 0xf5ac8 disk.c:149
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5acd disk.c:150
+ xor ah, ah ; 30 e4 ; 0xf5ad0
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5ad2
+ imul dx ; f7 ea ; 0xf5ad5
+ mov dx, cx ; 89 ca ; 0xf5ad7
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5ad9
+ add bx, ax ; 01 c3 ; 0xf5adc
+ mov es, cx ; 8e c1 ; 0xf5ade
+ mov ax, word [es:bx+028h] ; 26 8b 47 28 ; 0xf5ae0
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5ae4
+ mov word [es:di+018h], ax ; 26 89 45 18 ; 0xf5ae7
+ mov es, cx ; 8e c1 ; 0xf5aeb disk.c:152
+ cmp byte [es:bx+023h], 005h ; 26 80 7f 23 05 ; 0xf5aed
+ jne short 05b3bh ; 75 47 ; 0xf5af2
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5af4 disk.c:153
+ mov word [es:di+002h], strict word 00074h ; 26 c7 45 02 74 00 ; 0xf5af7
+ mov word [es:di+004h], strict word 0ffffh ; 26 c7 45 04 ff ff ; 0xf5afd disk.c:154
+ mov word [es:di+006h], strict word 0ffffh ; 26 c7 45 06 ff ff ; 0xf5b03
+ mov word [es:di+008h], strict word 0ffffh ; 26 c7 45 08 ff ff ; 0xf5b09 disk.c:155
+ mov word [es:di+00ah], strict word 0ffffh ; 26 c7 45 0a ff ff ; 0xf5b0f
+ mov word [es:di+00ch], strict word 0ffffh ; 26 c7 45 0c ff ff ; 0xf5b15 disk.c:156
+ mov word [es:di+00eh], strict word 0ffffh ; 26 c7 45 0e ff ff ; 0xf5b1b
+ mov word [es:di+010h], strict word 0ffffh ; 26 c7 45 10 ff ff ; 0xf5b21 disk.c:157
+ mov word [es:di+012h], strict word 0ffffh ; 26 c7 45 12 ff ff ; 0xf5b27
+ mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff ; 0xf5b2d disk.c:158
+ mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff ; 0xf5b33
+ jmp short 05baah ; eb 6f ; 0xf5b39 disk.c:159
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b3b disk.c:160
+ mov word [es:di+002h], strict word 00002h ; 26 c7 45 02 02 00 ; 0xf5b3e
+ mov es, cx ; 8e c1 ; 0xf5b44 disk.c:161
+ mov ax, word [es:bx+032h] ; 26 8b 47 32 ; 0xf5b46
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b4a
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf5b4d
+ mov word [es:di+006h], strict word 00000h ; 26 c7 45 06 00 00 ; 0xf5b51
+ mov es, cx ; 8e c1 ; 0xf5b57 disk.c:162
+ mov ax, word [es:bx+030h] ; 26 8b 47 30 ; 0xf5b59
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b5d
+ mov word [es:di+008h], ax ; 26 89 45 08 ; 0xf5b60
+ mov word [es:di+00ah], strict word 00000h ; 26 c7 45 0a 00 00 ; 0xf5b64
+ mov es, cx ; 8e c1 ; 0xf5b6a disk.c:163
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5b6c
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b70
+ mov word [es:di+00ch], ax ; 26 89 45 0c ; 0xf5b73
+ mov word [es:di+00eh], strict word 00000h ; 26 c7 45 0e 00 00 ; 0xf5b77
+ mov es, cx ; 8e c1 ; 0xf5b7d disk.c:164
+ mov ax, word [es:bx+03ch] ; 26 8b 47 3c ; 0xf5b7f
+ mov si, word [es:bx+03ah] ; 26 8b 77 3a ; 0xf5b83
+ mov cx, word [es:bx+038h] ; 26 8b 4f 38 ; 0xf5b87
+ mov dx, word [es:bx+036h] ; 26 8b 57 36 ; 0xf5b8b
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5b8f disk.c:165
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf5b92
+ mov word [es:di+012h], cx ; 26 89 4d 12 ; 0xf5b96
+ mov bx, si ; 89 f3 ; 0xf5b9a disk.c:166
+ mov si, strict word 00020h ; be 20 00 ; 0xf5b9c
+ call 09c10h ; e8 6e 40 ; 0xf5b9f
+ mov word [es:di+014h], dx ; 26 89 55 14 ; 0xf5ba2
+ mov word [es:di+016h], cx ; 26 89 4d 16 ; 0xf5ba6
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5baa disk.c:171
+ cmp word [es:di], strict byte 0001eh ; 26 83 3d 1e ; 0xf5bad
+ jc short 05c0dh ; 72 5a ; 0xf5bb1
+ mov word [es:di], strict word 0001eh ; 26 c7 05 1e 00 ; 0xf5bb3 disk.c:175
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5bb8 disk.c:176
+ mov word [es:di+01ch], ax ; 26 89 45 1c ; 0xf5bbb
+ mov word [es:di+01ah], 00356h ; 26 c7 45 1a 56 03 ; 0xf5bbf disk.c:177
+ mov cl, byte [bp+008h] ; 8a 4e 08 ; 0xf5bc5 disk.c:180
+ xor ch, ch ; 30 ed ; 0xf5bc8
+ mov ax, cx ; 89 c8 ; 0xf5bca
+ cwd ; 99 ; 0xf5bcc
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5bcd
+ sar ax, 1 ; d1 f8 ; 0xf5bcf
+ xor ah, ah ; 30 e4 ; 0xf5bd1 disk.c:181
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf5bd3
+ imul dx ; f7 ea ; 0xf5bd6
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5bd8
+ add bx, ax ; 01 c3 ; 0xf5bdb
+ mov ax, word [es:bx+00206h] ; 26 8b 87 06 02 ; 0xf5bdd
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf5be2
+ mov ax, word [es:bx+00208h] ; 26 8b 87 08 02 ; 0xf5be5 disk.c:182
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5bea
+ mov al, byte [es:bx+00205h] ; 26 8a 87 05 02 ; 0xf5bed disk.c:183
+ mov byte [bp-002h], al ; 88 46 fe ; 0xf5bf2
+ mov ax, cx ; 89 c8 ; 0xf5bf5 disk.c:185
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5bf7
+ imul dx ; f7 ea ; 0xf5bfa
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5bfc
+ add bx, ax ; 01 c3 ; 0xf5bff
+ mov bl, byte [es:bx+027h] ; 26 8a 5f 27 ; 0xf5c01
+ test bl, bl ; 84 db ; 0xf5c05 disk.c:187
+ jne short 05c10h ; 75 07 ; 0xf5c07
+ xor ax, ax ; 31 c0 ; 0xf5c09
+ jmp short 05c13h ; eb 06 ; 0xf5c0b
+ jmp near 05cd8h ; e9 c8 00 ; 0xf5c0d
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf5c10
+ or AL, strict byte 010h ; 0c 10 ; 0xf5c13 disk.c:188
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf5c15
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c18 disk.c:189
+ xor ah, ah ; 30 e4 ; 0xf5c1b
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5c1d
+ imul dx ; f7 ea ; 0xf5c20
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5c22
+ add si, ax ; 01 c6 ; 0xf5c25
+ cmp byte [es:si+023h], 005h ; 26 80 7c 23 05 ; 0xf5c27
+ jne short 05c32h ; 75 04 ; 0xf5c2c
+ or byte [bp-00ah], 060h ; 80 4e f6 60 ; 0xf5c2e disk.c:190
+ cmp bl, 001h ; 80 fb 01 ; 0xf5c32 disk.c:196
+ jne short 05c3ch ; 75 05 ; 0xf5c35
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf5c37
+ jmp short 05c3eh ; eb 02 ; 0xf5c3a
+ xor ax, ax ; 31 c0 ; 0xf5c3c
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf5c3e
+ cmp bl, 003h ; 80 fb 03 ; 0xf5c41 disk.c:197
+ jne short 05c4bh ; 75 05 ; 0xf5c44
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf5c46
+ jmp short 05c4dh ; eb 02 ; 0xf5c49
+ xor ax, ax ; 31 c0 ; 0xf5c4b
+ or word [bp-00ah], ax ; 09 46 f6 ; 0xf5c4d
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5c50 disk.c:199
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5c53
+ mov word [es:bx+00234h], ax ; 26 89 87 34 02 ; 0xf5c56
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf5c5b disk.c:200
+ mov word [es:bx+00236h], ax ; 26 89 87 36 02 ; 0xf5c5e
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5c63 disk.c:201
+ xor ah, ah ; 30 e4 ; 0xf5c66
+ cwd ; 99 ; 0xf5c68
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf5c69
+ idiv bx ; f7 fb ; 0xf5c6c
+ or dl, 00eh ; 80 ca 0e ; 0xf5c6e
+ mov CL, strict byte 004h ; b1 04 ; 0xf5c71
+ sal dx, CL ; d3 e2 ; 0xf5c73
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf5c75
+ mov byte [es:bx+00238h], dl ; 26 88 97 38 02 ; 0xf5c78
+ mov byte [es:bx+00239h], 0cbh ; 26 c6 87 39 02 cb ; 0xf5c7d disk.c:202
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5c83 disk.c:203
+ mov byte [es:bx+0023ah], al ; 26 88 87 3a 02 ; 0xf5c86
+ mov word [es:bx+0023bh], strict word 00001h ; 26 c7 87 3b 02 01 00 ; 0xf5c8b disk.c:204
+ mov byte [es:bx+0023dh], 000h ; 26 c6 87 3d 02 00 ; 0xf5c92 disk.c:206
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf5c98 disk.c:207
+ mov word [es:bx+0023eh], ax ; 26 89 87 3e 02 ; 0xf5c9b
+ mov word [es:bx+00240h], strict word 00000h ; 26 c7 87 40 02 00 00 ; 0xf5ca0 disk.c:208
+ mov byte [es:bx+00242h], 011h ; 26 c6 87 42 02 11 ; 0xf5ca7 disk.c:209
+ xor bl, bl ; 30 db ; 0xf5cad disk.c:211
+ xor bh, bh ; 30 ff ; 0xf5caf disk.c:212
+ jmp short 05cb8h ; eb 05 ; 0xf5cb1
+ cmp bh, 00fh ; 80 ff 0f ; 0xf5cb3
+ jnc short 05cceh ; 73 16 ; 0xf5cb6
+ mov al, bh ; 88 f8 ; 0xf5cb8 disk.c:213
+ xor ah, ah ; 30 e4 ; 0xf5cba
+ mov si, ax ; 89 c6 ; 0xf5cbc
+ add si, 00356h ; 81 c6 56 03 ; 0xf5cbe
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf5cc2 disk.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf5cc5
+ add bl, al ; 00 c3 ; 0xf5cc8 disk.c:39
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5cca disk.c:213
+ jmp short 05cb3h ; eb e5 ; 0xf5ccc
+ neg bl ; f6 db ; 0xf5cce disk.c:214
+ les si, [bp-008h] ; c4 76 f8 ; 0xf5cd0 disk.c:215
+ mov byte [es:si+00243h], bl ; 26 88 9c 43 02 ; 0xf5cd3
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5cd8 disk.c:219
+ cmp word [es:di], strict byte 00042h ; 26 83 3d 42 ; 0xf5cdb
+ jnc short 05ce4h ; 73 03 ; 0xf5cdf
+ jmp near 05da9h ; e9 c5 00 ; 0xf5ce1
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5ce4 disk.c:223
+ xor ah, ah ; 30 e4 ; 0xf5ce7
+ cwd ; 99 ; 0xf5ce9
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf5cea
+ sar ax, 1 ; d1 f8 ; 0xf5cec
+ xor ah, ah ; 30 e4 ; 0xf5cee disk.c:224
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf5cf0
+ imul dx ; f7 ea ; 0xf5cf3
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf5cf5
+ add bx, ax ; 01 c3 ; 0xf5cf8
+ mov al, byte [es:bx+00204h] ; 26 8a 87 04 02 ; 0xf5cfa
+ mov dx, word [es:bx+00206h] ; 26 8b 97 06 02 ; 0xf5cff disk.c:225
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d04 disk.c:227
+ mov word [es:di], strict word 00042h ; 26 c7 05 42 00 ; 0xf5d07
+ mov word [es:di+01eh], 0beddh ; 26 c7 45 1e dd be ; 0xf5d0c disk.c:228
+ mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00 ; 0xf5d12 disk.c:229
+ mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00 ; 0xf5d18 disk.c:231
+ test al, al ; 84 c0 ; 0xf5d1e disk.c:233
+ jne short 05d2eh ; 75 0c ; 0xf5d20
+ mov word [es:di+024h], 05349h ; 26 c7 45 24 49 53 ; 0xf5d22 disk.c:234
+ mov word [es:di+026h], 02041h ; 26 c7 45 26 41 20 ; 0xf5d28 disk.c:236
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d2e disk.c:242
+ mov word [es:di+028h], 05441h ; 26 c7 45 28 41 54 ; 0xf5d31
+ mov word [es:di+02ah], 02041h ; 26 c7 45 2a 41 20 ; 0xf5d37 disk.c:244
+ mov word [es:di+02ch], 02020h ; 26 c7 45 2c 20 20 ; 0xf5d3d disk.c:246
+ mov word [es:di+02eh], 02020h ; 26 c7 45 2e 20 20 ; 0xf5d43 disk.c:248
+ test al, al ; 84 c0 ; 0xf5d49 disk.c:251
+ jne short 05d63h ; 75 16 ; 0xf5d4b
+ mov word [es:di+030h], dx ; 26 89 55 30 ; 0xf5d4d disk.c:252
+ mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00 ; 0xf5d51 disk.c:253
+ mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00 ; 0xf5d57 disk.c:254
+ mov word [es:di+036h], strict word 00000h ; 26 c7 45 36 00 00 ; 0xf5d5d
+ mov al, byte [bp+008h] ; 8a 46 08 ; 0xf5d63 disk.c:259
+ and AL, strict byte 001h ; 24 01 ; 0xf5d66
+ xor ah, ah ; 30 e4 ; 0xf5d68
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d6a
+ mov word [es:di+038h], ax ; 26 89 45 38 ; 0xf5d6d
+ mov word [es:di+03ah], strict word 00000h ; 26 c7 45 3a 00 00 ; 0xf5d71 disk.c:260
+ mov word [es:di+03ch], strict word 00000h ; 26 c7 45 3c 00 00 ; 0xf5d77 disk.c:261
+ mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00 ; 0xf5d7d
+ xor bl, bl ; 30 db ; 0xf5d83 disk.c:263
+ mov BH, strict byte 01eh ; b7 1e ; 0xf5d85 disk.c:264
+ jmp short 05d8eh ; eb 05 ; 0xf5d87
+ cmp bh, 040h ; 80 ff 40 ; 0xf5d89
+ jnc short 05da0h ; 73 12 ; 0xf5d8c
+ mov al, bh ; 88 f8 ; 0xf5d8e disk.c:265
+ xor ah, ah ; 30 e4 ; 0xf5d90
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5d92
+ mov si, di ; 89 fe ; 0xf5d95
+ add si, ax ; 01 c6 ; 0xf5d97
+ add bl, byte [es:si] ; 26 02 1c ; 0xf5d99
+ db 0feh, 0c7h
+ ; inc bh ; fe c7 ; 0xf5d9c
+ jmp short 05d89h ; eb e9 ; 0xf5d9e
+ neg bl ; f6 db ; 0xf5da0 disk.c:266
+ mov es, [bp-004h] ; 8e 46 fc ; 0xf5da2 disk.c:267
+ mov byte [es:di+041h], bl ; 26 88 5d 41 ; 0xf5da5
+ xor ax, ax ; 31 c0 ; 0xf5da9 disk.c:269
+ mov sp, bp ; 89 ec ; 0xf5dab disk.c:270
+ pop bp ; 5d ; 0xf5dad
+ pop di ; 5f ; 0xf5dae
+ pop si ; 5e ; 0xf5daf
+ retn 00002h ; c2 02 00 ; 0xf5db0
+ ; disGetNextSymbol 0xf5db3 LB 0x4195 -> off=0x32 cb=000000000000042c uValue=00000000000f47e5 'int13_harddisk'
+ db 06dh, 05eh, 07eh, 05eh, 0a2h, 05eh, 0a2h, 05eh, 0a2h, 05eh, 090h, 060h, 0d4h, 061h, 0d4h, 061h
+ db 0c1h, 060h, 0aeh, 061h, 0d4h, 061h, 0d4h, 061h, 0aeh, 061h, 0aeh, 061h, 0d4h, 061h, 0d4h, 061h
+ db 02ch, 061h, 0aeh, 061h, 0d4h, 061h, 0d4h, 061h, 0aeh, 061h, 05fh, 061h, 0d4h, 061h, 0d4h, 061h
+ db 0d4h, 061h
+int13_harddisk: ; 0xf5de5 LB 0x42c
+ push bp ; 55 ; 0xf5de5 disk.c:272
+ mov bp, sp ; 89 e5 ; 0xf5de6
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf5de8
+ or byte [bp+01dh], 002h ; 80 4e 1d 02 ; 0xf5deb disk.c:283
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf5def disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5df2
+ mov es, ax ; 8e c0 ; 0xf5df5
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf5df7
+ mov si, 00122h ; be 22 01 ; 0xf5dfa disk.c:49
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf5dfd
+ mov bx, 0008eh ; bb 8e 00 ; 0xf5e00 disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e03
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e07 disk.c:289
+ xor ah, ah ; 30 e4 ; 0xf5e0a
+ cmp ax, 00080h ; 3d 80 00 ; 0xf5e0c
+ jc short 05e16h ; 72 05 ; 0xf5e0f
+ cmp ax, 00090h ; 3d 90 00 ; 0xf5e11
+ jc short 05e35h ; 72 1f ; 0xf5e14
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e16 disk.c:290
+ xor ah, ah ; 30 e4 ; 0xf5e19
+ push ax ; 50 ; 0xf5e1b
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e1c
+ push ax ; 50 ; 0xf5e1f
+ mov ax, 0067eh ; b8 7e 06 ; 0xf5e20
+ push ax ; 50 ; 0xf5e23
+ mov ax, 0068dh ; b8 8d 06 ; 0xf5e24
+ push ax ; 50 ; 0xf5e27
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5e28
+ push ax ; 50 ; 0xf5e2b
+ call 0190fh ; e8 e0 ba ; 0xf5e2c
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf5e2f
+ jmp near 061efh ; e9 ba 03 ; 0xf5e32 disk.c:291
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf5e35 disk.c:295
+ xor ah, ah ; 30 e4 ; 0xf5e38
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5e3a
+ mov bx, si ; 89 f3 ; 0xf5e3d
+ add bx, ax ; 01 c3 ; 0xf5e3f
+ mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf5e41
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf5e46
+ cmp dl, 010h ; 80 fa 10 ; 0xf5e49 disk.c:298
+ jc short 05e5ch ; 72 0e ; 0xf5e4c
+ push ax ; 50 ; 0xf5e4e disk.c:299
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5e4f
+ push ax ; 50 ; 0xf5e52
+ mov ax, 0067eh ; b8 7e 06 ; 0xf5e53
+ push ax ; 50 ; 0xf5e56
+ mov ax, 006b8h ; b8 b8 06 ; 0xf5e57
+ jmp short 05e27h ; eb cb ; 0xf5e5a
+ mov bl, byte [bp+017h] ; 8a 5e 17 ; 0xf5e5c disk.c:303
+ xor bh, bh ; 30 ff ; 0xf5e5f
+ cmp bx, strict byte 00018h ; 83 fb 18 ; 0xf5e61
+ jnbe short 05e9fh ; 77 39 ; 0xf5e64
+ sal bx, 1 ; d1 e3 ; 0xf5e66
+ jmp word [cs:bx+05db3h] ; 2e ff a7 b3 5d ; 0xf5e68
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5e6d disk.c:308
+ jnc short 05e7bh ; 73 08 ; 0xf5e71
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5e73 disk.c:310
+ xor ah, ah ; 30 e4 ; 0xf5e76
+ call 01d4eh ; e8 d3 be ; 0xf5e78
+ jmp near 060a9h ; e9 2b 02 ; 0xf5e7b disk.c:311
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e7e disk.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf5e81
+ mov es, ax ; 8e c0 ; 0xf5e84
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf5e86
+ mov bx, word [bp+016h] ; 8b 5e 16 ; 0xf5e89 disk.c:316
+ mov bh, dl ; 88 d7 ; 0xf5e8c
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf5e8e
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf5e91 disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf5e94
+ test dl, dl ; 84 d2 ; 0xf5e98 disk.c:319
+ je short 05efeh ; 74 62 ; 0xf5e9a
+ jmp near 0620ah ; e9 6b 03 ; 0xf5e9c
+ jmp near 061d4h ; e9 32 03 ; 0xf5e9f
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf5ea2 disk.c:327
+ xor ah, ah ; 30 e4 ; 0xf5ea5
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf5ea7
+ mov al, byte [bp+015h] ; 8a 46 15 ; 0xf5eaa disk.c:328
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf5ead disk.c:329
+ xor dh, dh ; 30 f6 ; 0xf5eb0
+ sal dx, 1 ; d1 e2 ; 0xf5eb2
+ sal dx, 1 ; d1 e2 ; 0xf5eb4
+ and dh, 003h ; 80 e6 03 ; 0xf5eb6
+ mov ah, dh ; 88 f4 ; 0xf5eb9
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf5ebb
+ mov di, word [bp+014h] ; 8b 7e 14 ; 0xf5ebe disk.c:330
+ and di, strict byte 0003fh ; 83 e7 3f ; 0xf5ec1
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf5ec4 disk.c:331
+ xor ah, dh ; 30 f4 ; 0xf5ec7
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf5ec9
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5ecc disk.c:334
+ cmp ax, 00080h ; 3d 80 00 ; 0xf5ecf
+ jnbe short 05ed8h ; 77 04 ; 0xf5ed2
+ test ax, ax ; 85 c0 ; 0xf5ed4
+ jne short 05f01h ; 75 29 ; 0xf5ed6
+ mov bx, 00da0h ; bb a0 0d ; 0xf5ed8 disk.c:335
+ mov cx, ds ; 8c d9 ; 0xf5edb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5edd
+ call 018cch ; e8 e9 b9 ; 0xf5ee0
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5ee3
+ xor ah, ah ; 30 e4 ; 0xf5ee6
+ push ax ; 50 ; 0xf5ee8
+ mov ax, 0067eh ; b8 7e 06 ; 0xf5ee9
+ push ax ; 50 ; 0xf5eec
+ mov ax, 006eah ; b8 ea 06 ; 0xf5eed
+ push ax ; 50 ; 0xf5ef0
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5ef1
+ push ax ; 50 ; 0xf5ef4
+ call 0190fh ; e8 17 ba ; 0xf5ef5
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf5ef8
+ jmp near 061efh ; e9 f1 02 ; 0xf5efb disk.c:336
+ jmp near 060adh ; e9 ac 01 ; 0xf5efe
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f01 disk.c:340
+ xor ah, ah ; 30 e4 ; 0xf5f04
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5f06
+ imul dx ; f7 ea ; 0xf5f09
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5f0b
+ mov bx, si ; 89 f3 ; 0xf5f0e
+ add bx, ax ; 01 c3 ; 0xf5f10
+ mov ax, word [es:bx+02ch] ; 26 8b 47 2c ; 0xf5f12
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf5f16 disk.c:341
+ mov dx, word [es:bx+02eh] ; 26 8b 57 2e ; 0xf5f1a disk.c:342
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf5f1e
+ cmp ax, word [bp-006h] ; 3b 46 fa ; 0xf5f21 disk.c:345
+ jbe short 05f2fh ; 76 09 ; 0xf5f24
+ cmp cx, word [bp-008h] ; 3b 4e f8 ; 0xf5f26
+ jbe short 05f2fh ; 76 04 ; 0xf5f29
+ cmp di, dx ; 39 d7 ; 0xf5f2b
+ jbe short 05f60h ; 76 31 ; 0xf5f2d
+ mov bx, 00da0h ; bb a0 0d ; 0xf5f2f disk.c:346
+ mov cx, ds ; 8c d9 ; 0xf5f32
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f34
+ call 018cch ; e8 92 b9 ; 0xf5f37
+ push di ; 57 ; 0xf5f3a
+ push word [bp-008h] ; ff 76 f8 ; 0xf5f3b
+ push word [bp-006h] ; ff 76 fa ; 0xf5f3e
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf5f41
+ xor ah, ah ; 30 e4 ; 0xf5f44
+ push ax ; 50 ; 0xf5f46
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f47
+ push ax ; 50 ; 0xf5f4a
+ mov ax, 0067eh ; b8 7e 06 ; 0xf5f4b
+ push ax ; 50 ; 0xf5f4e
+ mov ax, 00712h ; b8 12 07 ; 0xf5f4f
+ push ax ; 50 ; 0xf5f52
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf5f53
+ push ax ; 50 ; 0xf5f56
+ call 0190fh ; e8 b5 b9 ; 0xf5f57
+ add sp, strict byte 00010h ; 83 c4 10 ; 0xf5f5a
+ jmp near 061efh ; e9 8f 02 ; 0xf5f5d disk.c:347
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf5f60 disk.c:351
+ xor ah, ah ; 30 e4 ; 0xf5f63
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf5f65
+ je short 05f8ah ; 74 20 ; 0xf5f68
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf5f6a disk.c:356
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf5f6d
+ imul dx ; f7 ea ; 0xf5f70
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5f72
+ mov bx, si ; 89 f3 ; 0xf5f75
+ add bx, ax ; 01 c3 ; 0xf5f77
+ cmp cx, word [es:bx+030h] ; 26 3b 4f 30 ; 0xf5f79
+ jne short 05f93h ; 75 14 ; 0xf5f7d
+ mov ax, word [es:bx+034h] ; 26 8b 47 34 ; 0xf5f7f
+ cmp ax, word [bp-00ah] ; 3b 46 f6 ; 0xf5f83
+ je short 05f8dh ; 74 05 ; 0xf5f86
+ jmp short 05f93h ; eb 09 ; 0xf5f88
+ jmp near 060a9h ; e9 1c 01 ; 0xf5f8a
+ cmp byte [bp-002h], 008h ; 80 7e fe 08 ; 0xf5f8d
+ jc short 05fc2h ; 72 2f ; 0xf5f91
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf5f93 disk.c:357
+ xor dx, dx ; 31 d2 ; 0xf5f96
+ mov bx, cx ; 89 cb ; 0xf5f98
+ xor cx, cx ; 31 c9 ; 0xf5f9a
+ call 09bc0h ; e8 21 3c ; 0xf5f9c
+ xor bx, bx ; 31 db ; 0xf5f9f
+ add ax, word [bp-008h] ; 03 46 f8 ; 0xf5fa1
+ adc dx, bx ; 11 da ; 0xf5fa4
+ mov bx, word [bp-00ah] ; 8b 5e f6 ; 0xf5fa6
+ xor cx, cx ; 31 c9 ; 0xf5fa9
+ call 09bc0h ; e8 12 3c ; 0xf5fab
+ xor bx, bx ; 31 db ; 0xf5fae
+ add ax, di ; 01 f8 ; 0xf5fb0
+ adc dx, bx ; 11 da ; 0xf5fb2
+ add ax, strict word 0ffffh ; 05 ff ff ; 0xf5fb4
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf5fb7
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf5fba
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf5fbd
+ xor di, di ; 31 ff ; 0xf5fc0 disk.c:358
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf5fc2 disk.c:365
+ mov word [es:si+018h], strict word 00000h ; 26 c7 44 18 00 00 ; 0xf5fc5
+ mov word [es:si+01ah], strict word 00000h ; 26 c7 44 1a 00 00 ; 0xf5fcb disk.c:366
+ mov word [es:si+01ch], strict word 00000h ; 26 c7 44 1c 00 00 ; 0xf5fd1
+ mov ax, word [bp-004h] ; 8b 46 fc ; 0xf5fd7 disk.c:369
+ mov word [es:si], ax ; 26 89 04 ; 0xf5fda
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf5fdd
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf5fe0
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf5fe4
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf5fea
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf5ff0 disk.c:370
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf5ff3
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf5ff6
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf5ffa
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf5ffe disk.c:371
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf6001
+ mov word [es:si+010h], 00200h ; 26 c7 44 10 00 02 ; 0xf6005 disk.c:372
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf600b disk.c:373
+ mov word [es:si+012h], ax ; 26 89 44 12 ; 0xf600e
+ mov ax, word [bp-008h] ; 8b 46 f8 ; 0xf6012 disk.c:374
+ mov word [es:si+014h], ax ; 26 89 44 14 ; 0xf6015
+ mov word [es:si+016h], di ; 26 89 7c 16 ; 0xf6019 disk.c:375
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf601d disk.c:376
+ mov byte [es:si+00ch], al ; 26 88 44 0c ; 0xf6020
+ xor ah, ah ; 30 e4 ; 0xf6024 disk.c:378
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6026
+ imul dx ; f7 ea ; 0xf6029
+ mov bx, si ; 89 f3 ; 0xf602b
+ add bx, ax ; 01 c3 ; 0xf602d
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf602f
+ xor ah, ah ; 30 e4 ; 0xf6033
+ mov bx, ax ; 89 c3 ; 0xf6035
+ sal bx, 1 ; d1 e3 ; 0xf6037
+ sal bx, 1 ; d1 e3 ; 0xf6039
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf603b
+ sal ax, 1 ; d1 e0 ; 0xf603e
+ add bx, ax ; 01 c3 ; 0xf6040
+ push ES ; 06 ; 0xf6042
+ push si ; 56 ; 0xf6043
+ call word [word bx+0007eh] ; ff 97 7e 00 ; 0xf6044
+ mov dx, ax ; 89 c2 ; 0xf6048
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf604a disk.c:381
+ xor al, al ; 30 c0 ; 0xf604d
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf604f
+ mov bx, word [es:si+018h] ; 26 8b 5c 18 ; 0xf6052
+ or bx, ax ; 09 c3 ; 0xf6056
+ mov word [bp+016h], bx ; 89 5e 16 ; 0xf6058
+ test dl, dl ; 84 d2 ; 0xf605b disk.c:383
+ je short 060a9h ; 74 4a ; 0xf605d
+ mov bx, 00da0h ; bb a0 0d ; 0xf605f disk.c:384
+ mov cx, ds ; 8c d9 ; 0xf6062
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6064
+ call 018cch ; e8 62 b8 ; 0xf6067
+ mov al, dl ; 88 d0 ; 0xf606a
+ xor ah, ah ; 30 e4 ; 0xf606c
+ push ax ; 50 ; 0xf606e
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf606f
+ push ax ; 50 ; 0xf6072
+ mov ax, 0067eh ; b8 7e 06 ; 0xf6073
+ push ax ; 50 ; 0xf6076
+ mov ax, 00759h ; b8 59 07 ; 0xf6077
+ push ax ; 50 ; 0xf607a
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf607b
+ push ax ; 50 ; 0xf607e
+ call 0190fh ; e8 8d b8 ; 0xf607f
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6082
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6085 disk.c:385
+ xor ah, ah ; 30 e4 ; 0xf6088
+ or ah, 00ch ; 80 cc 0c ; 0xf608a
+ jmp near 061f7h ; e9 67 01 ; 0xf608d disk.c:386
+ mov bx, 00da0h ; bb a0 0d ; 0xf6090 disk.c:393
+ mov cx, ds ; 8c d9 ; 0xf6093
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6095
+ call 018cch ; e8 31 b8 ; 0xf6098
+ mov ax, 0077ah ; b8 7a 07 ; 0xf609b
+ push ax ; 50 ; 0xf609e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf609f
+ push ax ; 50 ; 0xf60a2
+ call 0190fh ; e8 69 b8 ; 0xf60a3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf60a6
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf60a9 disk.c:394
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf60ad
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf60b0
+ mov es, ax ; 8e c0 ; 0xf60b3
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf60b5
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf60b9
+ mov sp, bp ; 89 ec ; 0xf60bd
+ pop bp ; 5d ; 0xf60bf
+ retn ; c3 ; 0xf60c0
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf60c1 disk.c:400
+ xor ah, ah ; 30 e4 ; 0xf60c4
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf60c6
+ imul dx ; f7 ea ; 0xf60c9
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf60cb
+ mov bx, si ; 89 f3 ; 0xf60ce
+ add bx, ax ; 01 c3 ; 0xf60d0
+ mov di, word [es:bx+02ch] ; 26 8b 7f 2c ; 0xf60d2
+ mov cx, word [es:bx+02ah] ; 26 8b 4f 2a ; 0xf60d6 disk.c:401
+ mov ax, word [es:bx+02eh] ; 26 8b 47 2e ; 0xf60da disk.c:402
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf60de
+ mov dl, byte [es:si+001e2h] ; 26 8a 94 e2 01 ; 0xf60e1 disk.c:404
+ xor dh, dh ; 30 f6 ; 0xf60e6
+ mov byte [bp+016h], dh ; 88 76 16 ; 0xf60e8 disk.c:407
+ mov bx, word [bp+014h] ; 8b 5e 14 ; 0xf60eb disk.c:408
+ dec di ; 4f ; 0xf60ee disk.c:406
+ mov ax, di ; 89 f8 ; 0xf60ef
+ mov bh, al ; 88 c7 ; 0xf60f1
+ mov word [bp+014h], bx ; 89 5e 14 ; 0xf60f3
+ shr di, 1 ; d1 ef ; 0xf60f6 disk.c:409
+ shr di, 1 ; d1 ef ; 0xf60f8
+ and di, 000c0h ; 81 e7 c0 00 ; 0xf60fa
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf60fe
+ and ax, strict word 0003fh ; 25 3f 00 ; 0xf6101
+ or di, ax ; 09 c7 ; 0xf6104
+ mov ax, bx ; 89 d8 ; 0xf6106
+ xor al, bl ; 30 d8 ; 0xf6108
+ or ax, di ; 09 f8 ; 0xf610a
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf610c
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf610f disk.c:410
+ xor bh, bh ; 30 ff ; 0xf6112
+ mov ah, cl ; 88 cc ; 0xf6114
+ xor al, al ; 30 c0 ; 0xf6116
+ sub ax, 00100h ; 2d 00 01 ; 0xf6118
+ or bx, ax ; 09 c3 ; 0xf611b
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf611d
+ mov ax, bx ; 89 d8 ; 0xf6120 disk.c:411
+ xor al, bl ; 30 d8 ; 0xf6122
+ or ax, dx ; 09 d0 ; 0xf6124
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6126
+ jmp near 060a9h ; e9 7d ff ; 0xf6129 disk.c:416
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf612c disk.c:423
+ xor ah, ah ; 30 e4 ; 0xf612f
+ cwd ; 99 ; 0xf6131
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf6132
+ sar ax, 1 ; d1 f8 ; 0xf6134
+ mov dx, strict word 00006h ; ba 06 00 ; 0xf6136
+ imul dx ; f7 ea ; 0xf6139
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf613b
+ add si, ax ; 01 c6 ; 0xf613e
+ mov dx, word [es:si+00206h] ; 26 8b 94 06 02 ; 0xf6140
+ add dx, strict byte 00007h ; 83 c2 07 ; 0xf6145
+ in AL, DX ; ec ; 0xf6148
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6149
+ and AL, strict byte 0c0h ; 24 c0 ; 0xf614b disk.c:424
+ cmp AL, strict byte 040h ; 3c 40 ; 0xf614d
+ jne short 06154h ; 75 03 ; 0xf614f
+ jmp near 060a9h ; e9 55 ff ; 0xf6151 disk.c:425
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6154 disk.c:427
+ xor ah, ah ; 30 e4 ; 0xf6157
+ or ah, 0aah ; 80 cc aa ; 0xf6159
+ jmp near 061f7h ; e9 98 00 ; 0xf615c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf615f disk.c:435
+ xor ah, ah ; 30 e4 ; 0xf6162
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6164
+ imul dx ; f7 ea ; 0xf6167
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf6169
+ add si, ax ; 01 c6 ; 0xf616c
+ mov ax, word [es:si+032h] ; 26 8b 44 32 ; 0xf616e
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6172
+ mov ax, word [es:si+030h] ; 26 8b 44 30 ; 0xf6175 disk.c:436
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6179
+ mov di, word [es:si+034h] ; 26 8b 7c 34 ; 0xf617c disk.c:437
+ mov ax, word [bp-006h] ; 8b 46 fa ; 0xf6180 disk.c:440
+ xor dx, dx ; 31 d2 ; 0xf6183
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6185
+ xor cx, cx ; 31 c9 ; 0xf6188
+ call 09bc0h ; e8 33 3a ; 0xf618a
+ mov bx, di ; 89 fb ; 0xf618d
+ xor cx, cx ; 31 c9 ; 0xf618f
+ call 09bc0h ; e8 2c 3a ; 0xf6191
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf6194
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf6197
+ mov word [bp+014h], dx ; 89 56 14 ; 0xf619a disk.c:441
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf619d disk.c:442
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61a0 disk.c:444
+ xor ah, ah ; 30 e4 ; 0xf61a3
+ or ah, 003h ; 80 cc 03 ; 0xf61a5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf61a8
+ jmp near 060adh ; e9 ff fe ; 0xf61ab disk.c:445
+ mov bx, 00da0h ; bb a0 0d ; 0xf61ae disk.c:453
+ mov cx, ds ; 8c d9 ; 0xf61b1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf61b3
+ call 018cch ; e8 13 b7 ; 0xf61b6
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61b9
+ xor ah, ah ; 30 e4 ; 0xf61bc
+ push ax ; 50 ; 0xf61be
+ mov ax, 0067eh ; b8 7e 06 ; 0xf61bf
+ push ax ; 50 ; 0xf61c2
+ mov ax, 00794h ; b8 94 07 ; 0xf61c3
+ push ax ; 50 ; 0xf61c6
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf61c7
+ push ax ; 50 ; 0xf61ca
+ call 0190fh ; e8 41 b7 ; 0xf61cb
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf61ce
+ jmp near 060a9h ; e9 d5 fe ; 0xf61d1 disk.c:454
+ mov bx, 00da0h ; bb a0 0d ; 0xf61d4 disk.c:461
+ mov cx, ds ; 8c d9 ; 0xf61d7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf61d9
+ call 018cch ; e8 ed b6 ; 0xf61dc
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61df
+ xor ah, ah ; 30 e4 ; 0xf61e2
+ push ax ; 50 ; 0xf61e4
+ mov ax, 0067eh ; b8 7e 06 ; 0xf61e5
+ push ax ; 50 ; 0xf61e8
+ mov ax, 007c7h ; b8 c7 07 ; 0xf61e9
+ jmp near 05ef0h ; e9 01 fd ; 0xf61ec
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf61ef disk.c:467
+ xor ah, ah ; 30 e4 ; 0xf61f2
+ or ah, 001h ; 80 cc 01 ; 0xf61f4
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf61f7
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf61fa disk.c:469
+ xor ah, ah ; 30 e4 ; 0xf61fd
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf61ff disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6202
+ mov es, dx ; 8e c2 ; 0xf6205
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6207
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf620a disk.c:471
+ jmp near 060bdh ; e9 ac fe ; 0xf620e disk.c:472
+ ; disGetNextSymbol 0xf6211 LB 0x3d37 -> off=0x20 cb=00000000000002a8 uValue=00000000000f4c31 'int13_harddisk_ext'
+ db 0bfh, 062h, 0f2h, 062h, 0f2h, 062h, 0f2h, 062h, 0c1h, 064h, 06dh, 064h, 0f2h, 062h, 072h, 064h
+ db 0c1h, 064h, 0d7h, 062h, 0d7h, 062h, 0d7h, 062h, 0d7h, 062h, 08ah, 064h, 0d7h, 062h, 0d7h, 062h
+int13_harddisk_ext: ; 0xf6231 LB 0x2a8
+ push bp ; 55 ; 0xf6231 disk.c:482
+ mov bp, sp ; 89 e5 ; 0xf6232
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf6234
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6237 disk.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf623a
+ mov es, ax ; 8e c0 ; 0xf623d
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf623f
+ mov di, 00122h ; bf 22 01 ; 0xf6242 disk.c:49
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf6245
+ mov bx, 0008eh ; bb 8e 00 ; 0xf6248 disk.c:43
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf624b
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf624f disk.c:506
+ xor ah, ah ; 30 e4 ; 0xf6252
+ cmp ax, 00080h ; 3d 80 00 ; 0xf6254
+ jc short 0625eh ; 72 05 ; 0xf6257
+ cmp ax, 00090h ; 3d 90 00 ; 0xf6259
+ jc short 0627dh ; 72 1f ; 0xf625c
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf625e disk.c:507
+ xor ah, ah ; 30 e4 ; 0xf6261
+ push ax ; 50 ; 0xf6263
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6264
+ push ax ; 50 ; 0xf6267
+ mov ax, 007f5h ; b8 f5 07 ; 0xf6268
+ push ax ; 50 ; 0xf626b
+ mov ax, 0068dh ; b8 8d 06 ; 0xf626c
+ push ax ; 50 ; 0xf626f
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6270
+ push ax ; 50 ; 0xf6273
+ call 0190fh ; e8 98 b6 ; 0xf6274
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6277
+ jmp near 064a0h ; e9 23 02 ; 0xf627a disk.c:508
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf627d disk.c:512
+ xor ah, ah ; 30 e4 ; 0xf6280
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf6282
+ mov bx, di ; 89 fb ; 0xf6285
+ add bx, ax ; 01 c3 ; 0xf6287
+ mov dl, byte [es:bx+00163h] ; 26 8a 97 63 01 ; 0xf6289
+ mov byte [bp-002h], dl ; 88 56 fe ; 0xf628e
+ cmp dl, 010h ; 80 fa 10 ; 0xf6291 disk.c:515
+ jc short 062a4h ; 72 0e ; 0xf6294
+ push ax ; 50 ; 0xf6296 disk.c:516
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf6297
+ push ax ; 50 ; 0xf629a
+ mov ax, 007f5h ; b8 f5 07 ; 0xf629b
+ push ax ; 50 ; 0xf629e
+ mov ax, 006b8h ; b8 b8 06 ; 0xf629f
+ jmp short 0626fh ; eb cb ; 0xf62a2
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf62a4 disk.c:520
+ xor ah, ah ; 30 e4 ; 0xf62a7
+ sub ax, strict word 00041h ; 2d 41 00 ; 0xf62a9
+ cmp ax, strict word 0000fh ; 3d 0f 00 ; 0xf62ac
+ jnbe short 062d7h ; 77 26 ; 0xf62af
+ mov bx, ax ; 89 c3 ; 0xf62b1
+ sal bx, 1 ; d1 e3 ; 0xf62b3
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62b5
+ xor ah, ah ; 30 e4 ; 0xf62b8
+ jmp word [cs:bx+06211h] ; 2e ff a7 11 62 ; 0xf62ba
+ mov word [bp+010h], 0aa55h ; c7 46 10 55 aa ; 0xf62bf disk.c:522
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf62c4 disk.c:523
+ xor ah, ah ; 30 e4 ; 0xf62c7
+ or ah, 030h ; 80 cc 30 ; 0xf62c9
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf62cc
+ mov word [bp+014h], strict word 00007h ; c7 46 14 07 00 ; 0xf62cf disk.c:524
+ jmp near 064c5h ; e9 ee 01 ; 0xf62d4 disk.c:525
+ mov bx, 00da0h ; bb a0 0d ; 0xf62d7
+ mov cx, ds ; 8c d9 ; 0xf62da
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf62dc
+ call 018cch ; e8 ea b5 ; 0xf62df
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf62e2
+ xor ah, ah ; 30 e4 ; 0xf62e5
+ push ax ; 50 ; 0xf62e7
+ mov ax, 007f5h ; b8 f5 07 ; 0xf62e8
+ push ax ; 50 ; 0xf62eb
+ mov ax, 007c7h ; b8 c7 07 ; 0xf62ec
+ jmp near 0639bh ; e9 a9 00 ; 0xf62ef
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf62f2 disk.c:534
+ mov word [bp-016h], bx ; 89 5e ea ; 0xf62f5
+ mov es, [bp+004h] ; 8e 46 04 ; 0xf62f8
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf62fb
+ mov [bp-010h], es ; 8c 46 f0 ; 0xf62fe
+ mov ax, word [es:bx+002h] ; 26 8b 47 02 ; 0xf6301 disk.c:536
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6305
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf6308 disk.c:537
+ mov word [bp-00eh], ax ; 89 46 f2 ; 0xf630c
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf630f disk.c:538
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf6313
+ mov si, bx ; 89 de ; 0xf6316 disk.c:541
+ mov si, word [es:si+00ch] ; 26 8b 74 0c ; 0xf6318
+ mov cx, word [es:bx+00eh] ; 26 8b 4f 0e ; 0xf631c
+ xor ax, ax ; 31 c0 ; 0xf6320 disk.c:542
+ xor bx, bx ; 31 db ; 0xf6322
+ mov dx, si ; 89 f2 ; 0xf6324
+ mov si, strict word 00020h ; be 20 00 ; 0xf6326
+ call 09c20h ; e8 f4 38 ; 0xf6329
+ mov word [bp-004h], ax ; 89 46 fc ; 0xf632c
+ mov word [bp-006h], bx ; 89 5e fa ; 0xf632f
+ mov si, dx ; 89 d6 ; 0xf6332
+ mov bx, word [bp-016h] ; 8b 5e ea ; 0xf6334 disk.c:543
+ mov dx, word [es:bx+008h] ; 26 8b 57 08 ; 0xf6337
+ mov ax, word [es:bx+00ah] ; 26 8b 47 0a ; 0xf633b
+ or si, dx ; 09 d6 ; 0xf633f
+ or cx, ax ; 09 c1 ; 0xf6341
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6343 disk.c:548
+ xor ah, ah ; 30 e4 ; 0xf6346
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf6348
+ imul dx ; f7 ea ; 0xf634b
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf634d
+ mov bx, di ; 89 fb ; 0xf6350
+ add bx, ax ; 01 c3 ; 0xf6352
+ mov al, byte [es:bx+022h] ; 26 8a 47 22 ; 0xf6354
+ mov dx, word [bp-004h] ; 8b 56 fc ; 0xf6358 disk.c:549
+ cmp dx, word [es:bx+03ch] ; 26 3b 57 3c ; 0xf635b
+ jnbe short 06383h ; 77 22 ; 0xf635f
+ jne short 063a9h ; 75 46 ; 0xf6361
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf6363
+ cmp dx, word [es:bx+03ah] ; 26 3b 57 3a ; 0xf6366
+ jnbe short 06383h ; 77 17 ; 0xf636a
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf636c
+ cmp dx, word [es:bx+03ah] ; 26 3b 57 3a ; 0xf636f
+ jne short 063a9h ; 75 34 ; 0xf6373
+ cmp cx, word [es:bx+038h] ; 26 3b 4f 38 ; 0xf6375
+ jnbe short 06383h ; 77 08 ; 0xf6379
+ jne short 063a9h ; 75 2c ; 0xf637b
+ cmp si, word [es:bx+036h] ; 26 3b 77 36 ; 0xf637d
+ jc short 063a9h ; 72 26 ; 0xf6381
+ mov bx, 00da0h ; bb a0 0d ; 0xf6383 disk.c:550
+ mov cx, ds ; 8c d9 ; 0xf6386
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6388
+ call 018cch ; e8 3e b5 ; 0xf638b
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf638e
+ xor ah, ah ; 30 e4 ; 0xf6391
+ push ax ; 50 ; 0xf6393
+ mov ax, 007f5h ; b8 f5 07 ; 0xf6394
+ push ax ; 50 ; 0xf6397
+ mov ax, 00808h ; b8 08 08 ; 0xf6398
+ push ax ; 50 ; 0xf639b
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf639c
+ push ax ; 50 ; 0xf639f
+ call 0190fh ; e8 6c b5 ; 0xf63a0
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf63a3
+ jmp near 064a0h ; e9 f7 00 ; 0xf63a6 disk.c:551
+ mov ah, byte [bp+017h] ; 8a 66 17 ; 0xf63a9 disk.c:555
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf63ac
+ mov byte [bp-007h], 000h ; c6 46 f9 00 ; 0xf63af
+ cmp word [bp-008h], strict byte 00044h ; 83 7e f8 44 ; 0xf63b3
+ je short 063bfh ; 74 06 ; 0xf63b7
+ cmp word [bp-008h], strict byte 00047h ; 83 7e f8 47 ; 0xf63b9
+ jne short 063c2h ; 75 03 ; 0xf63bd
+ jmp near 064c1h ; e9 ff 00 ; 0xf63bf disk.c:556
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf63c2 disk.c:559
+ mov word [es:di+018h], strict word 00000h ; 26 c7 45 18 00 00 ; 0xf63c5
+ mov word [es:di+01ah], strict word 00000h ; 26 c7 45 1a 00 00 ; 0xf63cb disk.c:560
+ mov word [es:di+01ch], strict word 00000h ; 26 c7 45 1c 00 00 ; 0xf63d1
+ mov dx, word [bp-004h] ; 8b 56 fc ; 0xf63d7 disk.c:563
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf63da
+ mov dx, word [bp-006h] ; 8b 56 fa ; 0xf63de
+ mov word [es:di+004h], dx ; 26 89 55 04 ; 0xf63e1
+ mov word [es:di+002h], cx ; 26 89 4d 02 ; 0xf63e5
+ mov word [es:di], si ; 26 89 35 ; 0xf63e9
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf63ec disk.c:564
+ mov word [es:di+008h], dx ; 26 89 55 08 ; 0xf63ef
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf63f3
+ mov word [es:di+00ah], dx ; 26 89 55 0a ; 0xf63f6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf63fa disk.c:565
+ mov word [es:di+00eh], dx ; 26 89 55 0e ; 0xf63fd
+ mov word [es:di+010h], 00200h ; 26 c7 45 10 00 02 ; 0xf6401 disk.c:566
+ mov word [es:di+016h], strict word 00000h ; 26 c7 45 16 00 00 ; 0xf6407 disk.c:567
+ mov ah, byte [bp-002h] ; 8a 66 fe ; 0xf640d disk.c:568
+ mov byte [es:di+00ch], ah ; 26 88 65 0c ; 0xf6410
+ mov bx, word [bp-008h] ; 8b 5e f8 ; 0xf6414 disk.c:571
+ sal bx, 1 ; d1 e3 ; 0xf6417
+ xor ah, ah ; 30 e4 ; 0xf6419
+ sal ax, 1 ; d1 e0 ; 0xf641b
+ sal ax, 1 ; d1 e0 ; 0xf641d
+ add bx, ax ; 01 c3 ; 0xf641f
+ push ES ; 06 ; 0xf6421
+ push di ; 57 ; 0xf6422
+ call word [word bx-00002h] ; ff 97 fe ff ; 0xf6423
+ mov dx, ax ; 89 c2 ; 0xf6427
+ mov es, [bp-014h] ; 8e 46 ec ; 0xf6429 disk.c:572
+ mov ax, word [es:di+018h] ; 26 8b 45 18 ; 0xf642c
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf6430
+ les bx, [bp-012h] ; c4 5e ee ; 0xf6433 disk.c:573
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6436
+ test dl, dl ; 84 d2 ; 0xf643a disk.c:575
+ je short 063bfh ; 74 81 ; 0xf643c
+ mov bx, 00da0h ; bb a0 0d ; 0xf643e disk.c:576
+ mov cx, ds ; 8c d9 ; 0xf6441
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6443
+ call 018cch ; e8 83 b4 ; 0xf6446
+ mov al, dl ; 88 d0 ; 0xf6449
+ xor ah, ah ; 30 e4 ; 0xf644b
+ push ax ; 50 ; 0xf644d
+ push word [bp-008h] ; ff 76 f8 ; 0xf644e
+ mov ax, 007f5h ; b8 f5 07 ; 0xf6451
+ push ax ; 50 ; 0xf6454
+ mov ax, 00759h ; b8 59 07 ; 0xf6455
+ push ax ; 50 ; 0xf6458
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6459
+ push ax ; 50 ; 0xf645c
+ call 0190fh ; e8 af b4 ; 0xf645d
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf6460
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf6463 disk.c:577
+ xor ah, ah ; 30 e4 ; 0xf6466
+ or ah, 00ch ; 80 cc 0c ; 0xf6468
+ jmp short 064a8h ; eb 3b ; 0xf646b disk.c:578
+ or ah, 0b2h ; 80 cc b2 ; 0xf646d disk.c:590
+ jmp short 064a8h ; eb 36 ; 0xf6470
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf6472 disk.c:595
+ push ax ; 50 ; 0xf6475
+ mov ax, word [bp+00ah] ; 8b 46 0a ; 0xf6476
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf6479
+ mov bx, di ; 89 fb ; 0xf647c
+ mov cx, word [bp-014h] ; 8b 4e ec ; 0xf647e
+ call 05a95h ; e8 11 f6 ; 0xf6481
+ test ax, ax ; 85 c0 ; 0xf6484
+ je short 064c1h ; 74 39 ; 0xf6486
+ jmp short 064a0h ; eb 16 ; 0xf6488 disk.c:596
+ cmp ax, strict word 00006h ; 3d 06 00 ; 0xf648a disk.c:603
+ je short 064c1h ; 74 32 ; 0xf648d
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf648f
+ jc short 064a0h ; 72 0c ; 0xf6492
+ jbe short 064c1h ; 76 2b ; 0xf6494
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6496
+ jc short 064a0h ; 72 05 ; 0xf6499
+ cmp ax, strict word 00004h ; 3d 04 00 ; 0xf649b
+ jbe short 064c1h ; 76 21 ; 0xf649e
+ mov ax, word [bp+016h] ; 8b 46 16 ; 0xf64a0 disk.c:623
+ xor ah, ah ; 30 e4 ; 0xf64a3
+ or ah, 001h ; 80 cc 01 ; 0xf64a5
+ mov word [bp+016h], ax ; 89 46 16 ; 0xf64a8
+ mov al, byte [bp+017h] ; 8a 46 17 ; 0xf64ab disk.c:625
+ xor ah, ah ; 30 e4 ; 0xf64ae
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf64b0 disk.c:43
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf64b3
+ mov es, dx ; 8e c2 ; 0xf64b6
+ mov byte [es:bx], al ; 26 88 07 ; 0xf64b8
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf64bb disk.c:626
+ jmp short 064d5h ; eb 14 ; 0xf64bf disk.c:627
+ mov byte [bp+017h], 000h ; c6 46 17 00 ; 0xf64c1 disk.c:630
+ mov bx, strict word 00074h ; bb 74 00 ; 0xf64c5 disk.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf64c8
+ mov es, ax ; 8e c0 ; 0xf64cb
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf64cd
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf64d1 disk.c:633
+ mov sp, bp ; 89 ec ; 0xf64d5 disk.c:635
+ pop bp ; 5d ; 0xf64d7
+ retn ; c3 ; 0xf64d8
+ ; disGetNextSymbol 0xf64d9 LB 0x3a6f -> off=0x0 cb=0000000000000153 uValue=00000000000f4ed9 'int14_function'
+int14_function: ; 0xf64d9 LB 0x153
+ push bp ; 55 ; 0xf64d9 serial.c:60
+ mov bp, sp ; 89 e5 ; 0xf64da
+ push si ; 56 ; 0xf64dc
+ push di ; 57 ; 0xf64dd
+ sti ; fb ; 0xf64de serial.c:65
+ mov si, word [bp+00eh] ; 8b 76 0e ; 0xf64df serial.c:67
+ sal si, 1 ; d1 e6 ; 0xf64e2
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf64e4 serial.c:48
+ mov es, ax ; 8e c0 ; 0xf64e7
+ mov si, word [es:si] ; 26 8b 34 ; 0xf64e9
+ mov bx, si ; 89 f3 ; 0xf64ec serial.c:49
+ mov di, word [bp+00eh] ; 8b 7e 0e ; 0xf64ee serial.c:68
+ add di, strict byte 0007ch ; 83 c7 7c ; 0xf64f1
+ mov cl, byte [es:di] ; 26 8a 0d ; 0xf64f4 serial.c:38
+ cmp word [bp+00eh], strict byte 00004h ; 83 7e 0e 04 ; 0xf64f7 serial.c:69
+ jnc short 06501h ; 73 04 ; 0xf64fb
+ test si, si ; 85 f6 ; 0xf64fd
+ jnbe short 06504h ; 77 03 ; 0xf64ff
+ jmp near 06621h ; e9 1d 01 ; 0xf6501
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6504 serial.c:70
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf6507
+ jc short 06518h ; 72 0d ; 0xf6509
+ jbe short 06578h ; 76 6b ; 0xf650b
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf650d
+ je short 06570h ; 74 5f ; 0xf650f
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf6511
+ je short 06573h ; 74 5e ; 0xf6513
+ jmp near 0661bh ; e9 03 01 ; 0xf6515
+ test al, al ; 84 c0 ; 0xf6518
+ jne short 06575h ; 75 59 ; 0xf651a
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf651c serial.c:72
+ in AL, DX ; ec ; 0xf651f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6520
+ or AL, strict byte 080h ; 0c 80 ; 0xf6522
+ out DX, AL ; ee ; 0xf6524
+ lea si, [bx+001h] ; 8d 77 01 ; 0xf6525
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6528 serial.c:73
+ test AL, strict byte 0e0h ; a8 e0 ; 0xf652b
+ jne short 0653bh ; 75 0c ; 0xf652d
+ mov AL, strict byte 017h ; b0 17 ; 0xf652f serial.c:74
+ mov dx, bx ; 89 da ; 0xf6531
+ out DX, AL ; ee ; 0xf6533
+ mov AL, strict byte 004h ; b0 04 ; 0xf6534 serial.c:75
+ mov dx, si ; 89 f2 ; 0xf6536
+ out DX, AL ; ee ; 0xf6538
+ jmp short 06552h ; eb 17 ; 0xf6539 serial.c:76
+ and AL, strict byte 0e0h ; 24 e0 ; 0xf653b serial.c:77
+ xor ah, ah ; 30 e4 ; 0xf653d
+ mov CL, strict byte 005h ; b1 05 ; 0xf653f
+ sar ax, CL ; d3 f8 ; 0xf6541
+ mov cl, al ; 88 c1 ; 0xf6543
+ mov ax, 00600h ; b8 00 06 ; 0xf6545
+ sar ax, CL ; d3 f8 ; 0xf6548
+ mov dx, bx ; 89 da ; 0xf654a serial.c:78
+ out DX, AL ; ee ; 0xf654c
+ mov al, ah ; 88 e0 ; 0xf654d serial.c:79
+ mov dx, si ; 89 f2 ; 0xf654f
+ out DX, AL ; ee ; 0xf6551
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf6552 serial.c:81
+ and AL, strict byte 01fh ; 24 1f ; 0xf6555
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf6557
+ out DX, AL ; ee ; 0xf655a
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf655b serial.c:82
+ in AL, DX ; ec ; 0xf655e
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf655f
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6561
+ lea dx, [bx+006h] ; 8d 57 06 ; 0xf6564 serial.c:83
+ in AL, DX ; ec ; 0xf6567
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6568
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf656a
+ jmp near 065fch ; e9 8c 00 ; 0xf656d
+ jmp near 0660ah ; e9 97 00 ; 0xf6570
+ jmp short 065c3h ; eb 4e ; 0xf6573
+ jmp near 0661bh ; e9 a3 00 ; 0xf6575
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf6578 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf657b
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf657e serial.c:88
+ in AL, DX ; ec ; 0xf6581
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6582
+ and ax, strict word 00060h ; 25 60 00 ; 0xf6584
+ cmp ax, strict word 00060h ; 3d 60 00 ; 0xf6587
+ je short 065a5h ; 74 19 ; 0xf658a
+ test cl, cl ; 84 c9 ; 0xf658c
+ je short 065a5h ; 74 15 ; 0xf658e
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf6590 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6593
+ mov es, ax ; 8e c0 ; 0xf6596
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf6598
+ cmp ax, si ; 39 f0 ; 0xf659b serial.c:90
+ je short 0657eh ; 74 df ; 0xf659d
+ mov si, ax ; 89 c6 ; 0xf659f serial.c:91
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf65a1 serial.c:92
+ jmp short 0657eh ; eb d9 ; 0xf65a3 serial.c:94
+ test cl, cl ; 84 c9 ; 0xf65a5 serial.c:95
+ je short 065afh ; 74 06 ; 0xf65a7
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf65a9
+ mov dx, bx ; 89 da ; 0xf65ac
+ out DX, AL ; ee ; 0xf65ae
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf65af serial.c:96
+ in AL, DX ; ec ; 0xf65b2
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65b3
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf65b5
+ test cl, cl ; 84 c9 ; 0xf65b8 serial.c:97
+ jne short 065fch ; 75 40 ; 0xf65ba
+ or AL, strict byte 080h ; 0c 80 ; 0xf65bc
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf65be
+ jmp short 065fch ; eb 39 ; 0xf65c1
+ mov si, strict word 0006ch ; be 6c 00 ; 0xf65c3 serial.c:48
+ mov si, word [es:si] ; 26 8b 34 ; 0xf65c6
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf65c9 serial.c:102
+ in AL, DX ; ec ; 0xf65cc
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65cd
+ test AL, strict byte 001h ; a8 01 ; 0xf65cf
+ jne short 065ech ; 75 19 ; 0xf65d1
+ test cl, cl ; 84 c9 ; 0xf65d3
+ je short 065ech ; 74 15 ; 0xf65d5
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf65d7 serial.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf65da
+ mov es, ax ; 8e c0 ; 0xf65dd
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf65df
+ cmp ax, si ; 39 f0 ; 0xf65e2 serial.c:104
+ je short 065c9h ; 74 e3 ; 0xf65e4
+ mov si, ax ; 89 c6 ; 0xf65e6 serial.c:105
+ db 0feh, 0c9h
+ ; dec cl ; fe c9 ; 0xf65e8 serial.c:106
+ jmp short 065c9h ; eb dd ; 0xf65ea serial.c:108
+ test cl, cl ; 84 c9 ; 0xf65ec serial.c:109
+ je short 06602h ; 74 12 ; 0xf65ee
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf65f0 serial.c:110
+ mov dx, bx ; 89 da ; 0xf65f4 serial.c:111
+ in AL, DX ; ec ; 0xf65f6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf65f7
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf65f9
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf65fc serial.c:112
+ jmp short 06625h ; eb 23 ; 0xf6600
+ lea dx, [bx+005h] ; 8d 57 05 ; 0xf6602 serial.c:113
+ in AL, DX ; ec ; 0xf6605
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6606
+ jmp short 065beh ; eb b4 ; 0xf6608
+ lea dx, [si+005h] ; 8d 54 05 ; 0xf660a serial.c:118
+ in AL, DX ; ec ; 0xf660d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf660e
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf6610
+ lea dx, [si+006h] ; 8d 54 06 ; 0xf6613 serial.c:119
+ in AL, DX ; ec ; 0xf6616
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6617
+ jmp short 065f9h ; eb de ; 0xf6619
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf661b serial.c:123
+ jmp short 06625h ; eb 04 ; 0xf661f serial.c:125
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf6621 serial.c:126
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6625 serial.c:128
+ pop di ; 5f ; 0xf6628
+ pop si ; 5e ; 0xf6629
+ pop bp ; 5d ; 0xf662a
+ retn ; c3 ; 0xf662b
+ ; disGetNextSymbol 0xf662c LB 0x391c -> off=0x0 cb=0000000000000043 uValue=00000000000f502c 'timer_wait'
+timer_wait: ; 0xf662c LB 0x43
+ push bp ; 55 ; 0xf662c system.c:289
+ mov bp, sp ; 89 e5 ; 0xf662d
+ push bx ; 53 ; 0xf662f
+ push cx ; 51 ; 0xf6630
+ push ax ; 50 ; 0xf6631
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf6632 system.c:296
+ xor cx, cx ; 31 c9 ; 0xf6635
+ call 09be0h ; e8 a6 35 ; 0xf6637
+ mov cx, ax ; 89 c1 ; 0xf663a
+ mov bx, dx ; 89 d3 ; 0xf663c
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf663e system.c:298
+ in AL, DX ; ec ; 0xf6641
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6642
+ and AL, strict byte 010h ; 24 10 ; 0xf6644
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6646
+ add cx, strict byte 0ffffh ; 83 c1 ff ; 0xf6649 system.c:299
+ adc bx, strict byte 0ffffh ; 83 d3 ff ; 0xf664c
+ cmp bx, strict byte 0ffffh ; 83 fb ff ; 0xf664f
+ jne short 06659h ; 75 05 ; 0xf6652
+ cmp cx, strict byte 0ffffh ; 83 f9 ff ; 0xf6654
+ je short 06668h ; 74 0f ; 0xf6657
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6659 system.c:302
+ in AL, DX ; ec ; 0xf665c
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf665d
+ and AL, strict byte 010h ; 24 10 ; 0xf665f
+ cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf6661 system.c:303
+ jne short 06659h ; 75 f3 ; 0xf6664
+ jmp short 06649h ; eb e1 ; 0xf6666 system.c:305
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6668 system.c:306
+ pop cx ; 59 ; 0xf666b
+ pop bx ; 5b ; 0xf666c
+ pop bp ; 5d ; 0xf666d
+ retn ; c3 ; 0xf666e
+ ; disGetNextSymbol 0xf666f LB 0x38d9 -> off=0x0 cb=0000000000000030 uValue=00000000000f506f 'set_enable_a20'
+set_enable_a20: ; 0xf666f LB 0x30
+ push bp ; 55 ; 0xf666f system.c:308
+ mov bp, sp ; 89 e5 ; 0xf6670
+ push bx ; 53 ; 0xf6672
+ push cx ; 51 ; 0xf6673
+ push dx ; 52 ; 0xf6674
+ mov bx, ax ; 89 c3 ; 0xf6675
+ mov dx, 00092h ; ba 92 00 ; 0xf6677 system.c:315
+ in AL, DX ; ec ; 0xf667a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf667b
+ mov cl, al ; 88 c1 ; 0xf667d
+ test bx, bx ; 85 db ; 0xf667f system.c:318
+ je short 06688h ; 74 05 ; 0xf6681
+ or AL, strict byte 002h ; 0c 02 ; 0xf6683 system.c:319
+ out DX, AL ; ee ; 0xf6685
+ jmp short 0668bh ; eb 03 ; 0xf6686 system.c:320
+ and AL, strict byte 0fdh ; 24 fd ; 0xf6688 system.c:321
+ out DX, AL ; ee ; 0xf668a
+ test cl, 002h ; f6 c1 02 ; 0xf668b system.c:323
+ je short 06695h ; 74 05 ; 0xf668e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6690
+ jmp short 06697h ; eb 02 ; 0xf6693
+ xor ax, ax ; 31 c0 ; 0xf6695
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf6697 system.c:324
+ pop dx ; 5a ; 0xf669a
+ pop cx ; 59 ; 0xf669b
+ pop bx ; 5b ; 0xf669c
+ pop bp ; 5d ; 0xf669d
+ retn ; c3 ; 0xf669e
+ ; disGetNextSymbol 0xf669f LB 0x38a9 -> off=0x3b cb=000000000000030d uValue=00000000000f50da 'int15_function'
+ db 0ech, 0e9h, 0d8h, 0c7h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 086h, 083h, 052h, 04fh, 041h
+ db 024h, 022h, 000h, 0c5h, 069h, 016h, 067h, 064h, 069h, 02ah, 067h, 064h, 069h, 0b2h, 067h, 0c0h
+ db 067h, 0d0h, 067h, 070h, 068h, 07dh, 068h, 086h, 068h, 0c9h, 067h, 0c9h, 067h, 04bh, 069h, 076h
+ db 069h, 089h, 069h, 064h, 069h, 09dh, 069h, 034h, 068h, 0a6h, 069h
+int15_function: ; 0xf66da LB 0x30d
+ push bp ; 55 ; 0xf66da system.c:345
+ mov bp, sp ; 89 e5 ; 0xf66db
+ push si ; 56 ; 0xf66dd
+ push di ; 57 ; 0xf66de
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf66df system.c:352
+ xor ah, ah ; 30 e4 ; 0xf66e2
+ mov dx, ax ; 89 c2 ; 0xf66e4
+ cmp ax, 000ech ; 3d ec 00 ; 0xf66e6
+ jnbe short 06720h ; 77 35 ; 0xf66e9
+ push CS ; 0e ; 0xf66eb
+ pop ES ; 07 ; 0xf66ec
+ mov cx, strict word 00014h ; b9 14 00 ; 0xf66ed
+ mov di, 0669fh ; bf 9f 66 ; 0xf66f0
+ repne scasb ; f2 ae ; 0xf66f3
+ sal cx, 1 ; d1 e1 ; 0xf66f5
+ mov di, cx ; 89 cf ; 0xf66f7
+ mov cx, word [cs:di+066b2h] ; 2e 8b 8d b2 66 ; 0xf66f9
+ mov bx, word [bp+012h] ; 8b 5e 12 ; 0xf66fe
+ xor bh, bh ; 30 ff ; 0xf6701
+ mov si, word [bp+018h] ; 8b 76 18 ; 0xf6703
+ and si, strict byte 0fffeh ; 83 e6 fe ; 0xf6706
+ mov dx, word [bp+018h] ; 8b 56 18 ; 0xf6709
+ or dl, 001h ; 80 ca 01 ; 0xf670c
+ mov ax, bx ; 89 d8 ; 0xf670f
+ or ah, 086h ; 80 cc 86 ; 0xf6711
+ jmp cx ; ff e1 ; 0xf6714
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6716 system.c:354
+ xor ah, ah ; 30 e4 ; 0xf6719
+ cmp ax, 000c0h ; 3d c0 00 ; 0xf671b
+ je short 06723h ; 74 03 ; 0xf671e
+ jmp near 069c5h ; e9 a2 02 ; 0xf6720 system.c:355
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6723 system.c:361
+ jmp near 0696dh ; e9 43 02 ; 0xf6727
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf672a system.c:365
+ xor ah, ah ; 30 e4 ; 0xf672d
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf672f
+ jc short 06742h ; 72 0e ; 0xf6732
+ jbe short 06756h ; 76 20 ; 0xf6734
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf6736
+ je short 06783h ; 74 48 ; 0xf6739
+ cmp ax, strict word 00002h ; 3d 02 00 ; 0xf673b
+ je short 06766h ; 74 26 ; 0xf673e
+ jmp short 06790h ; eb 4e ; 0xf6740
+ test ax, ax ; 85 c0 ; 0xf6742
+ jne short 06790h ; 75 4a ; 0xf6744
+ xor ax, ax ; 31 c0 ; 0xf6746 system.c:367
+ call 0666fh ; e8 24 ff ; 0xf6748
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf674b system.c:368
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf674f system.c:369
+ jmp near 067c9h ; e9 73 00 ; 0xf6753 system.c:370
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6756 system.c:372
+ call 0666fh ; e8 13 ff ; 0xf6759
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf675c system.c:373
+ mov byte [bp+013h], bh ; 88 7e 13 ; 0xf6760 system.c:374
+ jmp near 067c9h ; e9 63 00 ; 0xf6763 system.c:375
+ mov dx, 00092h ; ba 92 00 ; 0xf6766 system.c:377
+ in AL, DX ; ec ; 0xf6769
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf676a
+ shr ax, 1 ; d1 e8 ; 0xf676c
+ and ax, strict word 00001h ; 25 01 00 ; 0xf676e
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf6771
+ mov dl, al ; 88 c2 ; 0xf6774
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf6776
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6779 system.c:378
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf677d system.c:379
+ jmp near 067c9h ; e9 46 00 ; 0xf6780 system.c:380
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6783 system.c:382
+ mov byte [bp+013h], ah ; 88 66 13 ; 0xf6787 system.c:383
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf678a system.c:384
+ jmp near 067c9h ; e9 39 00 ; 0xf678d system.c:385
+ mov bx, 00da0h ; bb a0 0d ; 0xf6790 system.c:387
+ mov cx, ds ; 8c d9 ; 0xf6793
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6795
+ call 018cch ; e8 31 b1 ; 0xf6798
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf679b
+ xor ah, ah ; 30 e4 ; 0xf679e
+ push ax ; 50 ; 0xf67a0
+ mov ax, 0082eh ; b8 2e 08 ; 0xf67a1
+ push ax ; 50 ; 0xf67a4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf67a5
+ push ax ; 50 ; 0xf67a8
+ call 0190fh ; e8 63 b1 ; 0xf67a9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf67ac
+ jmp near 06964h ; e9 b2 01 ; 0xf67af
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf67b2 system.c:408
+ xor ah, ah ; 30 e4 ; 0xf67b5
+ or ah, 086h ; 80 cc 86 ; 0xf67b7
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf67ba
+ jmp near 069beh ; e9 fe 01 ; 0xf67bd
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf67c0 system.c:414
+ xor al, bl ; 30 d8 ; 0xf67c4 system.c:415
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf67c6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf67c9 system.c:416
+ pop di ; 5f ; 0xf67cc
+ pop si ; 5e ; 0xf67cd
+ pop bp ; 5d ; 0xf67ce
+ retn ; c3 ; 0xf67cf
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf67d0 system.c:419
+ jne short 0683ch ; 75 66 ; 0xf67d4
+ mov bx, 000a0h ; bb a0 00 ; 0xf67d6 system.c:38
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf67d9
+ mov es, cx ; 8e c1 ; 0xf67dc
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf67de
+ test bl, 001h ; f6 c3 01 ; 0xf67e1 system.c:39
+ jne short 06834h ; 75 4e ; 0xf67e4
+ mov bx, 000a0h ; bb a0 00 ; 0xf67e6 system.c:41
+ mov DL, strict byte 001h ; b2 01 ; 0xf67e9
+ mov byte [es:bx], dl ; 26 88 17 ; 0xf67eb system.c:43
+ mov bx, 00098h ; bb 98 00 ; 0xf67ee system.c:51
+ mov dx, word [bp+014h] ; 8b 56 14 ; 0xf67f1
+ mov word [es:bx], dx ; 26 89 17 ; 0xf67f4 system.c:53
+ mov bx, 0009ah ; bb 9a 00 ; 0xf67f7 system.c:51
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf67fa
+ mov word [es:bx], ax ; 26 89 07 ; 0xf67fd system.c:53
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6800 system.c:51
+ mov dx, word [bp+00eh] ; 8b 56 0e ; 0xf6803
+ mov word [es:bx], dx ; 26 89 17 ; 0xf6806 system.c:53
+ mov bx, 0009eh ; bb 9e 00 ; 0xf6809 system.c:51
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf680c
+ mov word [es:bx], dx ; 26 89 17 ; 0xf680f system.c:53
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf6812 system.c:428
+ mov dx, 000a1h ; ba a1 00 ; 0xf6816 system.c:429
+ in AL, DX ; ec ; 0xf6819
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf681a
+ and AL, strict byte 0feh ; 24 fe ; 0xf681c system.c:430
+ out DX, AL ; ee ; 0xf681e
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf681f system.c:431
+ call 01652h ; e8 2d ae ; 0xf6822
+ mov dl, al ; 88 c2 ; 0xf6825 system.c:432
+ or dl, 040h ; 80 ca 40 ; 0xf6827
+ xor dh, dh ; 30 f6 ; 0xf682a
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf682c
+ call 0166dh ; e8 3b ae ; 0xf682f
+ jmp short 067c9h ; eb 95 ; 0xf6832 system.c:433
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf6834 system.c:436
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6837 system.c:437
+ jmp short 067c9h ; eb 8d ; 0xf683a system.c:439
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf683c
+ jne short 0685eh ; 75 1d ; 0xf683f
+ mov bx, 000a0h ; bb a0 00 ; 0xf6841 system.c:43
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6844
+ mov es, ax ; 8e c0 ; 0xf6847
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6849
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf684d system.c:442
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6851 system.c:443
+ call 01652h ; e8 fb ad ; 0xf6854
+ mov dl, al ; 88 c2 ; 0xf6857 system.c:444
+ and dl, 0bfh ; 80 e2 bf ; 0xf6859
+ jmp short 0682ah ; eb cc ; 0xf685c
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf685e system.c:447
+ mov dx, ax ; 89 c2 ; 0xf6861 system.c:449
+ xor dh, ah ; 30 e6 ; 0xf6863
+ xor al, bl ; 30 d8 ; 0xf6865
+ dec dx ; 4a ; 0xf6867
+ or ax, dx ; 09 d0 ; 0xf6868
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf686a
+ jmp near 067c9h ; e9 59 ff ; 0xf686d system.c:452
+ sti ; fb ; 0xf6870 system.c:458
+ mov dx, word [bp+010h] ; 8b 56 10 ; 0xf6871 system.c:459
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6874
+ call 0662ch ; e8 b2 fd ; 0xf6877
+ jmp near 067c9h ; e9 4c ff ; 0xf687a system.c:460
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf687d system.c:482
+ mov word [bp+018h], dx ; 89 56 18 ; 0xf6880 system.c:483
+ jmp near 067c9h ; e9 43 ff ; 0xf6883 system.c:485
+ cli ; fa ; 0xf6886 system.c:494
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6887 system.c:496
+ call 0666fh ; e8 e2 fd ; 0xf688a
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf688d system.c:499
+ add bx, strict byte 00038h ; 83 c3 38 ; 0xf6890
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf6893 system.c:51
+ mov word [es:bx], strict word 0ffffh ; 26 c7 07 ff ff ; 0xf6896 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf689b system.c:500
+ add bx, strict byte 0003ah ; 83 c3 3a ; 0xf689e
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68a1 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf68a4 system.c:53
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68a9 system.c:501
+ add bx, strict byte 0003ch ; 83 c3 3c ; 0xf68ac
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68af system.c:41
+ mov byte [es:bx], 00fh ; 26 c6 07 0f ; 0xf68b2 system.c:43
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68b6 system.c:502
+ add bx, strict byte 0003dh ; 83 c3 3d ; 0xf68b9
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68bc system.c:41
+ mov byte [es:bx], 09bh ; 26 c6 07 9b ; 0xf68bf
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf68c3 system.c:503
+ add bx, strict byte 0003eh ; 83 c3 3e ; 0xf68c6
+ mov es, [bp+014h] ; 8e 46 14 ; 0xf68c9 system.c:51
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf68cc
+ mov AL, strict byte 011h ; b0 11 ; 0xf68d1 system.c:506
+ mov dx, strict word 00020h ; ba 20 00 ; 0xf68d3
+ out DX, AL ; ee ; 0xf68d6
+ mov dx, 000a0h ; ba a0 00 ; 0xf68d7 system.c:507
+ out DX, AL ; ee ; 0xf68da
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf68db system.c:508
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf68de
+ out DX, AL ; ee ; 0xf68e1
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf68e2 system.c:509
+ mov dx, 000a1h ; ba a1 00 ; 0xf68e5
+ out DX, AL ; ee ; 0xf68e8
+ mov AL, strict byte 004h ; b0 04 ; 0xf68e9 system.c:510
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf68eb
+ out DX, AL ; ee ; 0xf68ee
+ mov AL, strict byte 002h ; b0 02 ; 0xf68ef system.c:511
+ mov dx, 000a1h ; ba a1 00 ; 0xf68f1
+ out DX, AL ; ee ; 0xf68f4
+ mov AL, strict byte 001h ; b0 01 ; 0xf68f5 system.c:512
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf68f7
+ out DX, AL ; ee ; 0xf68fa
+ mov dx, 000a1h ; ba a1 00 ; 0xf68fb system.c:513
+ out DX, AL ; ee ; 0xf68fe
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf68ff system.c:515
+ mov dx, strict word 00021h ; ba 21 00 ; 0xf6901
+ out DX, AL ; ee ; 0xf6904
+ mov dx, 000a1h ; ba a1 00 ; 0xf6905 system.c:516
+ out DX, AL ; ee ; 0xf6908
+ mov si, word [bp+006h] ; 8b 76 06 ; 0xf6909 system.c:518
+ lgdt [es:si+008h] ; 26 0f 01 54 08 ; 0xf690c
+ lidt [es:si+010h] ; 26 0f 01 5c 10 ; 0xf6911
+ push strict byte 00038h ; 6a 38 ; 0xf6916
+ call 0691bh ; e8 00 00 ; 0xf6918
+ pop ax ; 58 ; 0xf691b
+ add ax, strict byte 0000eh ; 83 c0 0e ; 0xf691c
+ push ax ; 50 ; 0xf691f
+ smsw ax ; 0f 01 e0 ; 0xf6920
+ or AL, strict byte 001h ; 0c 01 ; 0xf6923
+ lmsw ax ; 0f 01 f0 ; 0xf6925
+ retf ; cb ; 0xf6928
+ mov ax, strict word 00018h ; b8 18 00 ; 0xf6929
+ mov ds, ax ; 8e d8 ; 0xf692c
+ add AL, strict byte 008h ; 04 08 ; 0xf692e
+ mov es, ax ; 8e c0 ; 0xf6930
+ add AL, strict byte 008h ; 04 08 ; 0xf6932
+ mov ss, ax ; 8e d0 ; 0xf6934
+ lea ax, [bp+004h] ; 8d 46 04 ; 0xf6936 system.c:519
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xf6939
+ popaw ; 61 ; 0xf693b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf693c
+ pop cx ; 59 ; 0xf693f
+ pop ax ; 58 ; 0xf6940
+ pop ax ; 58 ; 0xf6941
+ mov ax, strict word 00030h ; b8 30 00 ; 0xf6942
+ push ax ; 50 ; 0xf6945
+ push cx ; 51 ; 0xf6946
+ retf ; cb ; 0xf6947
+ jmp near 067c9h ; e9 7e fe ; 0xf6948 system.c:525
+ mov bx, 00da0h ; bb a0 0d ; 0xf694b system.c:532
+ mov cx, ds ; 8c d9 ; 0xf694e
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6950
+ call 018cch ; e8 76 af ; 0xf6953
+ mov ax, 0086eh ; b8 6e 08 ; 0xf6956
+ push ax ; 50 ; 0xf6959
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf695a
+ push ax ; 50 ; 0xf695d
+ call 0190fh ; e8 ae af ; 0xf695e
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf6961
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf6964
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf6968
+ xor ah, ah ; 30 e4 ; 0xf696b
+ or ah, 086h ; 80 cc 86 ; 0xf696d
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf6970
+ jmp near 067c9h ; e9 53 fe ; 0xf6973
+ mov word [bp+018h], si ; 89 76 18 ; 0xf6976 system.c:538
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf6979 system.c:539
+ mov word [bp+00ch], 0e6f5h ; c7 46 0c f5 e6 ; 0xf697c system.c:540
+ mov word [bp+014h], 0f000h ; c7 46 14 00 f0 ; 0xf6981 system.c:541
+ jmp near 067c9h ; e9 40 fe ; 0xf6986 system.c:542
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6989 system.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf698c
+ mov es, ax ; 8e c0 ; 0xf698f
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6991
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf6994 system.c:49
+ mov word [bp+018h], si ; 89 76 18 ; 0xf6997 system.c:546
+ jmp near 067c9h ; e9 2c fe ; 0xf699a system.c:547
+ mov ax, 0089dh ; b8 9d 08 ; 0xf699d system.c:550
+ push ax ; 50 ; 0xf69a0
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf69a1
+ jmp short 0695dh ; eb b7 ; 0xf69a4
+ test byte [bp+012h], 0ffh ; f6 46 12 ff ; 0xf69a6 system.c:562
+ jne short 069c5h ; 75 19 ; 0xf69aa
+ mov word [bp+012h], bx ; 89 5e 12 ; 0xf69ac system.c:564
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf69af system.c:565
+ xor ah, ah ; 30 e4 ; 0xf69b2
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf69b4
+ jc short 069beh ; 72 05 ; 0xf69b7
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf69b9
+ jbe short 06997h ; 76 d9 ; 0xf69bc
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf69be system.c:568
+ jmp near 067c9h ; e9 04 fe ; 0xf69c2 system.c:569
+ mov bx, 00da0h ; bb a0 0d ; 0xf69c5 system.c:573
+ mov cx, ds ; 8c d9 ; 0xf69c8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf69ca
+ call 018cch ; e8 fc ae ; 0xf69cd
+ push word [bp+00ch] ; ff 76 0c ; 0xf69d0
+ push word [bp+012h] ; ff 76 12 ; 0xf69d3
+ mov ax, 008b4h ; b8 b4 08 ; 0xf69d6
+ push ax ; 50 ; 0xf69d9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf69da
+ push ax ; 50 ; 0xf69dd
+ call 0190fh ; e8 2e af ; 0xf69de
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf69e1
+ jmp near 06964h ; e9 7d ff ; 0xf69e4
+ ; disGetNextSymbol 0xf69e7 LB 0x3561 -> off=0x0 cb=000000000000018f uValue=00000000000f53e7 'inv_op_handler'
+inv_op_handler: ; 0xf69e7 LB 0x18f
+ push bp ; 55 ; 0xf69e7 invop.c:237
+ mov bp, sp ; 89 e5 ; 0xf69e8
+ push si ; 56 ; 0xf69ea
+ push di ; 57 ; 0xf69eb
+ push ax ; 50 ; 0xf69ec
+ push ax ; 50 ; 0xf69ed
+ les bx, [bp+018h] ; c4 5e 18 ; 0xf69ee invop.c:239
+ cmp byte [es:bx], 0f0h ; 26 80 3f f0 ; 0xf69f1 invop.c:241
+ jne short 069fdh ; 75 06 ; 0xf69f5
+ inc word [bp+018h] ; ff 46 18 ; 0xf69f7 invop.c:243
+ jmp near 06b6fh ; e9 72 01 ; 0xf69fa invop.c:244
+ cmp word [es:bx], 0050fh ; 26 81 3f 0f 05 ; 0xf69fd
+ je short 06a07h ; 74 03 ; 0xf6a02
+ jmp near 06b6bh ; e9 64 01 ; 0xf6a04
+ mov si, 00800h ; be 00 08 ; 0xf6a07 invop.c:246
+ xor ax, ax ; 31 c0 ; 0xf6a0a
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf6a0c
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf6a0f invop.c:249
+ mov es, ax ; 8e c0 ; 0xf6a12 invop.c:257
+ mov bx, word [es:si+02ch] ; 26 8b 5c 2c ; 0xf6a14
+ sub bx, strict byte 00006h ; 83 eb 06 ; 0xf6a18
+ mov dx, word [es:si+020h] ; 26 8b 54 20 ; 0xf6a1b
+ mov ax, word [es:si+01ah] ; 26 8b 44 1a ; 0xf6a1f invop.c:258
+ mov es, dx ; 8e c2 ; 0xf6a23
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6a25
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a28 invop.c:259
+ mov ax, word [es:si+022h] ; 26 8b 44 22 ; 0xf6a2b
+ mov es, dx ; 8e c2 ; 0xf6a2f
+ mov word [es:bx+002h], ax ; 26 89 47 02 ; 0xf6a31
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a35 invop.c:260
+ mov ax, word [es:si+018h] ; 26 8b 44 18 ; 0xf6a38
+ mov es, dx ; 8e c2 ; 0xf6a3c
+ mov word [es:bx+004h], ax ; 26 89 47 04 ; 0xf6a3e
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a42 invop.c:263
+ mov bl, byte [es:si+038h] ; 26 8a 5c 38 ; 0xf6a45
+ xor bh, bh ; 30 ff ; 0xf6a49
+ mov di, word [es:si+036h] ; 26 8b 7c 36 ; 0xf6a4b
+ mov ax, word [es:si+024h] ; 26 8b 44 24 ; 0xf6a4f invop.c:264
+ xor dx, dx ; 31 d2 ; 0xf6a53
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6a55
+ sal ax, 1 ; d1 e0 ; 0xf6a58
+ rcl dx, 1 ; d1 d2 ; 0xf6a5a
+ loop 06a58h ; e2 fa ; 0xf6a5c
+ cmp bx, dx ; 39 d3 ; 0xf6a5e
+ jne short 06a66h ; 75 04 ; 0xf6a60
+ cmp di, ax ; 39 c7 ; 0xf6a62
+ je short 06a6bh ; 74 05 ; 0xf6a64
+ mov word [bp-006h], strict word 00001h ; c7 46 fa 01 00 ; 0xf6a66 invop.c:265
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6a6b invop.c:266
+ mov bl, byte [es:si+04ah] ; 26 8a 5c 4a ; 0xf6a6e
+ xor bh, bh ; 30 ff ; 0xf6a72
+ mov di, word [es:si+048h] ; 26 8b 7c 48 ; 0xf6a74
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf6a78 invop.c:267
+ xor dx, dx ; 31 d2 ; 0xf6a7c
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf6a7e
+ sal ax, 1 ; d1 e0 ; 0xf6a81
+ rcl dx, 1 ; d1 d2 ; 0xf6a83
+ loop 06a81h ; e2 fa ; 0xf6a85
+ cmp bx, dx ; 39 d3 ; 0xf6a87
+ jne short 06a8fh ; 75 04 ; 0xf6a89
+ cmp di, ax ; 39 c7 ; 0xf6a8b
+ je short 06a93h ; 74 04 ; 0xf6a8d
+ or byte [bp-006h], 002h ; 80 4e fa 02 ; 0xf6a8f invop.c:268
+ xor ax, ax ; 31 c0 ; 0xf6a93 invop.c:271
+ push ax ; 50 ; 0xf6a95
+ mov ax, 00800h ; b8 00 08 ; 0xf6a96
+ push ax ; 50 ; 0xf6a99
+ mov ax, strict word 0001fh ; b8 1f 00 ; 0xf6a9a
+ push ax ; 50 ; 0xf6a9d
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6a9e
+ lgdt [ss:bx] ; 36 0f 01 17 ; 0xf6aa0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6aa4
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf6aa7 invop.c:274
+ mov ax, word [es:si+03ah] ; 26 8b 44 3a ; 0xf6aaa
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf6aae
+ mov ax, word [es:si+036h] ; 26 8b 44 36 ; 0xf6ab2 invop.c:275
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf6ab6
+ mov dh, byte [es:si+039h] ; 26 8a 74 39 ; 0xf6aba invop.c:276
+ mov dl, byte [es:si+038h] ; 26 8a 54 38 ; 0xf6abe
+ mov word [es:si+00ch], dx ; 26 89 54 0c ; 0xf6ac2
+ mov word [es:si+00eh], strict word 00000h ; 26 c7 44 0e 00 00 ; 0xf6ac6 invop.c:277
+ mov ax, word [es:si+04ch] ; 26 8b 44 4c ; 0xf6acc invop.c:280
+ mov word [es:si], ax ; 26 89 04 ; 0xf6ad0
+ mov ax, word [es:si+048h] ; 26 8b 44 48 ; 0xf6ad3 invop.c:281
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf6ad7
+ mov dh, byte [es:si+04bh] ; 26 8a 74 4b ; 0xf6adb invop.c:282
+ mov dl, byte [es:si+04ah] ; 26 8a 54 4a ; 0xf6adf
+ xor ah, ah ; 30 e4 ; 0xf6ae3
+ mov word [es:si+004h], dx ; 26 89 54 04 ; 0xf6ae5
+ mov al, byte [es:si+05ch] ; 26 8a 44 5c ; 0xf6ae9 invop.c:285
+ mov dx, word [es:si+05ah] ; 26 8b 54 5a ; 0xf6aed
+ push ax ; 50 ; 0xf6af1 invop.c:286
+ push dx ; 52 ; 0xf6af2
+ push word [es:si+05eh] ; 26 ff 74 5e ; 0xf6af3
+ db 08bh, 0dch
+ ; mov bx, sp ; 8b dc ; 0xf6af7
+ lidt [ss:bx] ; 36 0f 01 1f ; 0xf6af9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6afd
+ mov cx, word [bp-006h] ; 8b 4e fa ; 0xf6b00 invop.c:289
+ mov ax, 00080h ; b8 80 00 ; 0xf6b03
+ mov ss, ax ; 8e d0 ; 0xf6b06
+ mov ax, word [ss:0001eh] ; 36 a1 1e 00 ; 0xf6b08
+ mov ds, ax ; 8e d8 ; 0xf6b0c
+ mov ax, word [ss:00024h] ; 36 a1 24 00 ; 0xf6b0e
+ mov es, ax ; 8e c0 ; 0xf6b12
+ smsw ax ; 0f 01 e0 ; 0xf6b14 invop.c:290
+ inc ax ; 40 ; 0xf6b17
+ lmsw ax ; 0f 01 f0 ; 0xf6b18
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6b1b
+ test cx, strict word 00001h ; f7 c1 01 00 ; 0xf6b1e
+ je near 06b28h ; 0f 84 02 00 ; 0xf6b22
+ mov es, ax ; 8e c0 ; 0xf6b26
+ test cx, strict word 00002h ; f7 c1 02 00 ; 0xf6b28
+ je near 06b50h ; 0f 84 20 00 ; 0xf6b2c
+ mov bx, word [word ss:00000h] ; 36 8b 1e 00 00 ; 0xf6b30
+ mov word [word ss:00008h], bx ; 36 89 1e 08 00 ; 0xf6b35
+ mov bx, word [word ss:00002h] ; 36 8b 1e 02 00 ; 0xf6b3a
+ mov word [word ss:0000ah], bx ; 36 89 1e 0a 00 ; 0xf6b3f
+ mov bx, word [word ss:00004h] ; 36 8b 1e 04 00 ; 0xf6b44
+ mov word [word ss:0000ch], bx ; 36 89 1e 0c 00 ; 0xf6b49
+ mov ds, ax ; 8e d8 ; 0xf6b4e
+ mov eax, cr0 ; 0f 20 c0 ; 0xf6b50
+ dec ax ; 48 ; 0xf6b53
+ mov cr0, eax ; 0f 22 c0 ; 0xf6b54
+ mov sp, strict word 00026h ; bc 26 00 ; 0xf6b57 invop.c:291
+ popaw ; 61 ; 0xf6b5a
+ mov sp, word [word ss:0002ch] ; 36 8b 26 2c 00 ; 0xf6b5b
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6b60
+ mov ss, [word ss:00020h] ; 36 8e 16 20 00 ; 0xf6b63
+ iret ; cf ; 0xf6b68
+ jmp short 06b6fh ; eb 04 ; 0xf6b69 invop.c:343
+ sti ; fb ; 0xf6b6b invop.c:347
+ hlt ; f4 ; 0xf6b6c invop.c:348
+ jmp short 06b6ch ; eb fd ; 0xf6b6d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6b6f invop.c:350
+ pop di ; 5f ; 0xf6b72
+ pop si ; 5e ; 0xf6b73
+ pop bp ; 5d ; 0xf6b74
+ retn ; c3 ; 0xf6b75
+ ; disGetNextSymbol 0xf6b76 LB 0x33d2 -> off=0x0 cb=0000000000000028 uValue=00000000000f5576 'init_rtc'
+init_rtc: ; 0xf6b76 LB 0x28
+ push bp ; 55 ; 0xf6b76 timepci.c:74
+ mov bp, sp ; 89 e5 ; 0xf6b77
+ push dx ; 52 ; 0xf6b79
+ mov dx, strict word 00026h ; ba 26 00 ; 0xf6b7a timepci.c:76
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6b7d
+ call 0166dh ; e8 ea aa ; 0xf6b80
+ mov dx, strict word 00002h ; ba 02 00 ; 0xf6b83 timepci.c:77
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6b86
+ call 0166dh ; e8 e1 aa ; 0xf6b89
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6b8c timepci.c:78
+ call 01652h ; e8 c0 aa ; 0xf6b8f
+ mov ax, strict word 0000dh ; b8 0d 00 ; 0xf6b92 timepci.c:79
+ call 01652h ; e8 ba aa ; 0xf6b95
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6b98 timepci.c:80
+ pop dx ; 5a ; 0xf6b9b
+ pop bp ; 5d ; 0xf6b9c
+ retn ; c3 ; 0xf6b9d
+ ; disGetNextSymbol 0xf6b9e LB 0x33aa -> off=0x0 cb=0000000000000021 uValue=00000000000f559e 'rtc_updating'
+rtc_updating: ; 0xf6b9e LB 0x21
+ push bp ; 55 ; 0xf6b9e timepci.c:82
+ mov bp, sp ; 89 e5 ; 0xf6b9f
+ push dx ; 52 ; 0xf6ba1
+ mov dx, 061a8h ; ba a8 61 ; 0xf6ba2 timepci.c:95
+ dec dx ; 4a ; 0xf6ba5 timepci.c:96
+ je short 06bb6h ; 74 0e ; 0xf6ba6
+ mov ax, strict word 0000ah ; b8 0a 00 ; 0xf6ba8 timepci.c:97
+ call 01652h ; e8 a4 aa ; 0xf6bab
+ test AL, strict byte 080h ; a8 80 ; 0xf6bae
+ jne short 06ba5h ; 75 f3 ; 0xf6bb0
+ xor ax, ax ; 31 c0 ; 0xf6bb2 timepci.c:98
+ jmp short 06bb9h ; eb 03 ; 0xf6bb4
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6bb6 timepci.c:100
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6bb9 timepci.c:101
+ pop dx ; 5a ; 0xf6bbc
+ pop bp ; 5d ; 0xf6bbd
+ retn ; c3 ; 0xf6bbe
+ ; disGetNextSymbol 0xf6bbf LB 0x3389 -> off=0x0 cb=0000000000000098 uValue=00000000000f55bf 'int70_function'
+int70_function: ; 0xf6bbf LB 0x98
+ push bp ; 55 ; 0xf6bbf timepci.c:110
+ mov bp, sp ; 89 e5 ; 0xf6bc0
+ push si ; 56 ; 0xf6bc2
+ push ax ; 50 ; 0xf6bc3
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6bc4 timepci.c:116
+ call 01652h ; e8 88 aa ; 0xf6bc7
+ mov bl, al ; 88 c3 ; 0xf6bca
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6bcc
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf6bcf timepci.c:117
+ call 01652h ; e8 7d aa ; 0xf6bd2
+ mov dl, al ; 88 c2 ; 0xf6bd5
+ test bl, 060h ; f6 c3 60 ; 0xf6bd7 timepci.c:119
+ je short 06c37h ; 74 5b ; 0xf6bda
+ test AL, strict byte 020h ; a8 20 ; 0xf6bdc timepci.c:120
+ je short 06be4h ; 74 04 ; 0xf6bde
+ sti ; fb ; 0xf6be0 timepci.c:122
+ int 04ah ; cd 4a ; 0xf6be1 timepci.c:123
+ cli ; fa ; 0xf6be3 timepci.c:124
+ test dl, 040h ; f6 c2 40 ; 0xf6be4 timepci.c:126
+ je short 06c4eh ; 74 65 ; 0xf6be7
+ mov bx, 000a0h ; bb a0 00 ; 0xf6be9 timepci.c:38
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf6bec
+ mov es, dx ; 8e c2 ; 0xf6bef
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6bf1
+ test al, al ; 84 c0 ; 0xf6bf4 timepci.c:39
+ je short 06c4eh ; 74 56 ; 0xf6bf6
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6bf8 timepci.c:58
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6bfb
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf6bfe
+ test bx, bx ; 85 db ; 0xf6c02 timepci.c:134
+ jne short 06c39h ; 75 33 ; 0xf6c04
+ cmp dx, 003d1h ; 81 fa d1 03 ; 0xf6c06
+ jnc short 06c39h ; 73 2d ; 0xf6c0a
+ mov bx, 00098h ; bb 98 00 ; 0xf6c0c timepci.c:48
+ mov cx, word [es:bx] ; 26 8b 0f ; 0xf6c0f
+ mov bx, 0009ah ; bb 9a 00 ; 0xf6c12 timepci.c:48
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6c15
+ mov si, 000a0h ; be a0 00 ; 0xf6c18 timepci.c:43
+ mov byte [es:si], 000h ; 26 c6 04 00 ; 0xf6c1b
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6c1f timepci.c:141
+ and dl, 037h ; 80 e2 37 ; 0xf6c22
+ xor dh, dh ; 30 f6 ; 0xf6c25
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6c27
+ call 0166dh ; e8 40 aa ; 0xf6c2a
+ mov es, cx ; 8e c1 ; 0xf6c2d timepci.c:38
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c2f
+ or AL, strict byte 080h ; 0c 80 ; 0xf6c32 timepci.c:39
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6c34 timepci.c:43
+ jmp short 06c4eh ; eb 15 ; 0xf6c37 timepci.c:143
+ mov cx, dx ; 89 d1 ; 0xf6c39 timepci.c:145
+ add cx, 0fc2fh ; 81 c1 2f fc ; 0xf6c3b
+ mov dx, bx ; 89 da ; 0xf6c3f
+ adc dx, strict byte 0ffffh ; 83 d2 ff ; 0xf6c41
+ mov bx, 0009ch ; bb 9c 00 ; 0xf6c44 timepci.c:63
+ mov word [es:bx], cx ; 26 89 0f ; 0xf6c47
+ mov word [es:bx+002h], dx ; 26 89 57 02 ; 0xf6c4a
+ call 0e030h ; e8 df 73 ; 0xf6c4e timepci.c:151
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6c51 timepci.c:152
+ pop si ; 5e ; 0xf6c54
+ pop bp ; 5d ; 0xf6c55
+ retn ; c3 ; 0xf6c56
+ ; disGetNextSymbol 0xf6c57 LB 0x32f1 -> off=0x10 cb=00000000000001d9 uValue=00000000000f5667 'int1a_function'
+ db 07dh, 06ch, 0a4h, 06ch, 0c9h, 06ch, 005h, 06dh, 057h, 06dh, 08eh, 06dh, 0d5h, 06dh, 030h, 06eh
+int1a_function: ; 0xf6c67 LB 0x1d9
+ push bp ; 55 ; 0xf6c67 timepci.c:157
+ mov bp, sp ; 89 e5 ; 0xf6c68
+ sti ; fb ; 0xf6c6a timepci.c:163
+ mov al, byte [bp+013h] ; 8a 46 13 ; 0xf6c6b timepci.c:165
+ cmp AL, strict byte 007h ; 3c 07 ; 0xf6c6e
+ jnbe short 06cd0h ; 77 5e ; 0xf6c70
+ mov bl, al ; 88 c3 ; 0xf6c72
+ xor bh, bh ; 30 ff ; 0xf6c74
+ sal bx, 1 ; d1 e3 ; 0xf6c76
+ jmp word [cs:bx+06c57h] ; 2e ff a7 57 6c ; 0xf6c78
+ cli ; fa ; 0xf6c7d timepci.c:167
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6c7e timepci.c:168
+ xor ax, ax ; 31 c0 ; 0xf6c81
+ mov es, ax ; 8e c0 ; 0xf6c83
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6c85
+ mov word [bp+010h], ax ; 89 46 10 ; 0xf6c88
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6c8b timepci.c:169
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf6c8e
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf6c91
+ mov bx, 00470h ; bb 70 04 ; 0xf6c94 timepci.c:170
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf6c97
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6c9a
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6c9d timepci.c:171
+ sti ; fb ; 0xf6ca1 timepci.c:172
+ jmp short 06cd0h ; eb 2c ; 0xf6ca2 timepci.c:175
+ cli ; fa ; 0xf6ca4 timepci.c:178
+ mov bx, 0046eh ; bb 6e 04 ; 0xf6ca5 timepci.c:179
+ xor ax, ax ; 31 c0 ; 0xf6ca8
+ mov es, ax ; 8e c0 ; 0xf6caa
+ mov ax, word [bp+010h] ; 8b 46 10 ; 0xf6cac
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6caf
+ mov bx, 0046ch ; bb 6c 04 ; 0xf6cb2 timepci.c:180
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf6cb5
+ mov word [es:bx], ax ; 26 89 07 ; 0xf6cb8
+ mov bx, 00470h ; bb 70 04 ; 0xf6cbb timepci.c:181
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf6cbe
+ sti ; fb ; 0xf6cc2 timepci.c:182
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6cc3 timepci.c:183
+ jmp short 06cd0h ; eb 07 ; 0xf6cc7 timepci.c:185
+ call 06b9eh ; e8 d2 fe ; 0xf6cc9 timepci.c:188
+ test ax, ax ; 85 c0 ; 0xf6ccc
+ je short 06cd3h ; 74 03 ; 0xf6cce
+ jmp near 06d01h ; e9 2e 00 ; 0xf6cd0 timepci.c:190
+ xor ax, ax ; 31 c0 ; 0xf6cd3 timepci.c:193
+ call 01652h ; e8 7a a9 ; 0xf6cd5
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6cd8
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6cdb timepci.c:194
+ call 01652h ; e8 71 a9 ; 0xf6cde
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6ce1
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6ce4 timepci.c:195
+ call 01652h ; e8 68 a9 ; 0xf6ce7
+ mov dl, al ; 88 c2 ; 0xf6cea
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6cec
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6cef timepci.c:196
+ call 01652h ; e8 5d a9 ; 0xf6cf2
+ and AL, strict byte 001h ; 24 01 ; 0xf6cf5
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6cf7
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6cfa timepci.c:197
+ mov byte [bp+012h], dl ; 88 56 12 ; 0xf6cfe timepci.c:198
+ mov sp, bp ; 89 ec ; 0xf6d01 timepci.c:200
+ pop bp ; 5d ; 0xf6d03
+ retn ; c3 ; 0xf6d04
+ call 06b9eh ; e8 96 fe ; 0xf6d05 timepci.c:213
+ test ax, ax ; 85 c0 ; 0xf6d08
+ je short 06d0fh ; 74 03 ; 0xf6d0a
+ call 06b76h ; e8 67 fe ; 0xf6d0c timepci.c:214
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6d0f timepci.c:217
+ xor dh, dh ; 30 f6 ; 0xf6d12
+ xor ax, ax ; 31 c0 ; 0xf6d14
+ call 0166dh ; e8 54 a9 ; 0xf6d16
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d19 timepci.c:218
+ xor dh, dh ; 30 f6 ; 0xf6d1c
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf6d1e
+ call 0166dh ; e8 49 a9 ; 0xf6d21
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6d24 timepci.c:219
+ xor dh, dh ; 30 f6 ; 0xf6d27
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf6d29
+ call 0166dh ; e8 3e a9 ; 0xf6d2c
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d2f timepci.c:221
+ call 01652h ; e8 1d a9 ; 0xf6d32
+ mov bl, al ; 88 c3 ; 0xf6d35
+ and bl, 060h ; 80 e3 60 ; 0xf6d37
+ or bl, 002h ; 80 cb 02 ; 0xf6d3a
+ mov al, byte [bp+00eh] ; 8a 46 0e ; 0xf6d3d
+ and AL, strict byte 001h ; 24 01 ; 0xf6d40
+ or bl, al ; 08 c3 ; 0xf6d42
+ mov dl, bl ; 88 da ; 0xf6d44 timepci.c:223
+ xor dh, dh ; 30 f6 ; 0xf6d46
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6d48
+ call 0166dh ; e8 1f a9 ; 0xf6d4b
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d4e timepci.c:224
+ mov byte [bp+012h], bl ; 88 5e 12 ; 0xf6d52 timepci.c:225
+ jmp short 06d01h ; eb aa ; 0xf6d55 timepci.c:227
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6d57 timepci.c:230
+ call 06b9eh ; e8 40 fe ; 0xf6d5b timepci.c:231
+ test ax, ax ; 85 c0 ; 0xf6d5e
+ je short 06d64h ; 74 02 ; 0xf6d60
+ jmp short 06d01h ; eb 9d ; 0xf6d62 timepci.c:233
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6d64 timepci.c:235
+ call 01652h ; e8 e8 a8 ; 0xf6d67
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf6d6a
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6d6d timepci.c:236
+ call 01652h ; e8 df a8 ; 0xf6d70
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xf6d73
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6d76 timepci.c:237
+ call 01652h ; e8 d6 a8 ; 0xf6d79
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf6d7c
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6d7f timepci.c:238
+ call 01652h ; e8 cd a8 ; 0xf6d82
+ mov byte [bp+011h], al ; 88 46 11 ; 0xf6d85
+ mov byte [bp+012h], al ; 88 46 12 ; 0xf6d88 timepci.c:239
+ jmp near 06d01h ; e9 73 ff ; 0xf6d8b timepci.c:241
+ call 06b9eh ; e8 0d fe ; 0xf6d8e timepci.c:254
+ test ax, ax ; 85 c0 ; 0xf6d91
+ je short 06d9bh ; 74 06 ; 0xf6d93
+ call 06b76h ; e8 de fd ; 0xf6d95 timepci.c:255
+ jmp near 06d01h ; e9 66 ff ; 0xf6d98 timepci.c:257
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6d9b timepci.c:259
+ xor dh, dh ; 30 f6 ; 0xf6d9e
+ mov ax, strict word 00009h ; b8 09 00 ; 0xf6da0
+ call 0166dh ; e8 c7 a8 ; 0xf6da3
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6da6 timepci.c:260
+ xor dh, dh ; 30 f6 ; 0xf6da9
+ mov ax, strict word 00008h ; b8 08 00 ; 0xf6dab
+ call 0166dh ; e8 bc a8 ; 0xf6dae
+ mov dl, byte [bp+00eh] ; 8a 56 0e ; 0xf6db1 timepci.c:261
+ xor dh, dh ; 30 f6 ; 0xf6db4
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6db6
+ call 0166dh ; e8 b1 a8 ; 0xf6db9
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6dbc timepci.c:262
+ xor dh, dh ; 30 f6 ; 0xf6dbf
+ mov ax, strict word 00032h ; b8 32 00 ; 0xf6dc1
+ call 0166dh ; e8 a6 a8 ; 0xf6dc4
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6dc7 timepci.c:263
+ call 01652h ; e8 85 a8 ; 0xf6dca
+ mov bl, al ; 88 c3 ; 0xf6dcd
+ and bl, 07fh ; 80 e3 7f ; 0xf6dcf
+ jmp near 06d44h ; e9 6f ff ; 0xf6dd2
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6dd5 timepci.c:281
+ call 01652h ; e8 77 a8 ; 0xf6dd8
+ mov bl, al ; 88 c3 ; 0xf6ddb
+ mov word [bp+012h], strict word 00000h ; c7 46 12 00 00 ; 0xf6ddd timepci.c:282
+ test AL, strict byte 020h ; a8 20 ; 0xf6de2 timepci.c:283
+ je short 06de9h ; 74 03 ; 0xf6de4
+ jmp near 06d01h ; e9 18 ff ; 0xf6de6 timepci.c:286
+ call 06b9eh ; e8 b2 fd ; 0xf6de9 timepci.c:288
+ test ax, ax ; 85 c0 ; 0xf6dec
+ je short 06df3h ; 74 03 ; 0xf6dee
+ call 06b76h ; e8 83 fd ; 0xf6df0 timepci.c:289
+ mov dl, byte [bp+00fh] ; 8a 56 0f ; 0xf6df3 timepci.c:292
+ xor dh, dh ; 30 f6 ; 0xf6df6
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf6df8
+ call 0166dh ; e8 6f a8 ; 0xf6dfb
+ mov dl, byte [bp+010h] ; 8a 56 10 ; 0xf6dfe timepci.c:293
+ xor dh, dh ; 30 f6 ; 0xf6e01
+ mov ax, strict word 00003h ; b8 03 00 ; 0xf6e03
+ call 0166dh ; e8 64 a8 ; 0xf6e06
+ mov dl, byte [bp+011h] ; 8a 56 11 ; 0xf6e09 timepci.c:294
+ xor dh, dh ; 30 f6 ; 0xf6e0c
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf6e0e
+ call 0166dh ; e8 59 a8 ; 0xf6e11
+ mov dx, 000a1h ; ba a1 00 ; 0xf6e14 timepci.c:295
+ in AL, DX ; ec ; 0xf6e17
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e18
+ and AL, strict byte 0feh ; 24 fe ; 0xf6e1a
+ out DX, AL ; ee ; 0xf6e1c
+ mov dl, bl ; 88 da ; 0xf6e1d timepci.c:297
+ and dl, 05fh ; 80 e2 5f ; 0xf6e1f
+ or dl, 020h ; 80 ca 20 ; 0xf6e22
+ xor dh, dh ; 30 f6 ; 0xf6e25
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e27
+ call 0166dh ; e8 40 a8 ; 0xf6e2a
+ jmp near 06d01h ; e9 d1 fe ; 0xf6e2d timepci.c:299
+ mov ax, strict word 0000bh ; b8 0b 00 ; 0xf6e30 timepci.c:312
+ call 01652h ; e8 1c a8 ; 0xf6e33
+ mov bl, al ; 88 c3 ; 0xf6e36
+ mov dl, al ; 88 c2 ; 0xf6e38 timepci.c:314
+ and dl, 057h ; 80 e2 57 ; 0xf6e3a
+ jmp near 06d46h ; e9 06 ff ; 0xf6e3d
+ ; disGetNextSymbol 0xf6e40 LB 0x3108 -> off=0x0 cb=0000000000000038 uValue=00000000000f5840 'send_to_mouse_ctrl'
+send_to_mouse_ctrl: ; 0xf6e40 LB 0x38
+ push bp ; 55 ; 0xf6e40 ps2mouse.c:77
+ mov bp, sp ; 89 e5 ; 0xf6e41
+ push bx ; 53 ; 0xf6e43
+ push dx ; 52 ; 0xf6e44
+ mov bl, al ; 88 c3 ; 0xf6e45
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6e47 ps2mouse.c:81
+ in AL, DX ; ec ; 0xf6e4a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e4b
+ test AL, strict byte 002h ; a8 02 ; 0xf6e4d
+ je short 06e63h ; 74 12 ; 0xf6e4f
+ mov ax, 008eeh ; b8 ee 08 ; 0xf6e51 ps2mouse.c:82
+ push ax ; 50 ; 0xf6e54
+ mov ax, 01168h ; b8 68 11 ; 0xf6e55
+ push ax ; 50 ; 0xf6e58
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6e59
+ push ax ; 50 ; 0xf6e5c
+ call 0190fh ; e8 af aa ; 0xf6e5d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6e60
+ mov AL, strict byte 0d4h ; b0 d4 ; 0xf6e63 ps2mouse.c:83
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6e65
+ out DX, AL ; ee ; 0xf6e68
+ mov al, bl ; 88 d8 ; 0xf6e69 ps2mouse.c:84
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6e6b
+ out DX, AL ; ee ; 0xf6e6e
+ xor al, bl ; 30 d8 ; 0xf6e6f ps2mouse.c:86
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6e71
+ pop dx ; 5a ; 0xf6e74
+ pop bx ; 5b ; 0xf6e75
+ pop bp ; 5d ; 0xf6e76
+ retn ; c3 ; 0xf6e77
+ ; disGetNextSymbol 0xf6e78 LB 0x30d0 -> off=0x0 cb=000000000000005d uValue=00000000000f5878 'get_mouse_data'
+get_mouse_data: ; 0xf6e78 LB 0x5d
+ push bp ; 55 ; 0xf6e78 ps2mouse.c:89
+ mov bp, sp ; 89 e5 ; 0xf6e79
+ push bx ; 53 ; 0xf6e7b
+ push cx ; 51 ; 0xf6e7c
+ push ax ; 50 ; 0xf6e7d
+ mov bx, ax ; 89 c3 ; 0xf6e7e
+ mov es, dx ; 8e c2 ; 0xf6e80
+ mov cx, 02710h ; b9 10 27 ; 0xf6e82 ps2mouse.c:91
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6e85 ps2mouse.c:94
+ in AL, DX ; ec ; 0xf6e88
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e89
+ and ax, strict word 00021h ; 25 21 00 ; 0xf6e8b
+ cmp ax, strict word 00021h ; 3d 21 00 ; 0xf6e8e
+ je short 06ebbh ; 74 28 ; 0xf6e91
+ test cx, cx ; 85 c9 ; 0xf6e93
+ je short 06ebbh ; 74 24 ; 0xf6e95
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6e97 ps2mouse.c:97
+ in AL, DX ; ec ; 0xf6e9a
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6e9b
+ and AL, strict byte 010h ; 24 10 ; 0xf6e9d
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf6e9f
+ mov dx, strict word 00061h ; ba 61 00 ; 0xf6ea2 ps2mouse.c:98
+ in AL, DX ; ec ; 0xf6ea5
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ea6
+ mov dx, ax ; 89 c2 ; 0xf6ea8
+ xor dh, ah ; 30 e6 ; 0xf6eaa
+ and dl, 010h ; 80 e2 10 ; 0xf6eac
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf6eaf
+ xor ah, ah ; 30 e4 ; 0xf6eb2
+ cmp dx, ax ; 39 c2 ; 0xf6eb4
+ je short 06ea2h ; 74 ea ; 0xf6eb6
+ dec cx ; 49 ; 0xf6eb8 ps2mouse.c:100
+ jmp short 06e85h ; eb ca ; 0xf6eb9 ps2mouse.c:101
+ test cx, cx ; 85 c9 ; 0xf6ebb ps2mouse.c:103
+ jne short 06ec3h ; 75 04 ; 0xf6ebd
+ mov AL, strict byte 001h ; b0 01 ; 0xf6ebf ps2mouse.c:104
+ jmp short 06eceh ; eb 0b ; 0xf6ec1
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6ec3 ps2mouse.c:106
+ in AL, DX ; ec ; 0xf6ec6
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ec7
+ mov byte [es:bx], al ; 26 88 07 ; 0xf6ec9 ps2mouse.c:107
+ xor al, al ; 30 c0 ; 0xf6ecc ps2mouse.c:108
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6ece ps2mouse.c:109
+ pop cx ; 59 ; 0xf6ed1
+ pop bx ; 5b ; 0xf6ed2
+ pop bp ; 5d ; 0xf6ed3
+ retn ; c3 ; 0xf6ed4
+ ; disGetNextSymbol 0xf6ed5 LB 0x3073 -> off=0x0 cb=0000000000000036 uValue=00000000000f58d5 'set_kbd_command_byte'
+set_kbd_command_byte: ; 0xf6ed5 LB 0x36
+ push bp ; 55 ; 0xf6ed5 ps2mouse.c:111
+ mov bp, sp ; 89 e5 ; 0xf6ed6
+ push bx ; 53 ; 0xf6ed8
+ push dx ; 52 ; 0xf6ed9
+ mov bl, al ; 88 c3 ; 0xf6eda
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6edc ps2mouse.c:113
+ in AL, DX ; ec ; 0xf6edf
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6ee0
+ test AL, strict byte 002h ; a8 02 ; 0xf6ee2
+ je short 06ef8h ; 74 12 ; 0xf6ee4
+ mov ax, 008f8h ; b8 f8 08 ; 0xf6ee6 ps2mouse.c:114
+ push ax ; 50 ; 0xf6ee9
+ mov ax, 01168h ; b8 68 11 ; 0xf6eea
+ push ax ; 50 ; 0xf6eed
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf6eee
+ push ax ; 50 ; 0xf6ef1
+ call 0190fh ; e8 1a aa ; 0xf6ef2
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf6ef5
+ mov AL, strict byte 060h ; b0 60 ; 0xf6ef8 ps2mouse.c:116
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6efa
+ out DX, AL ; ee ; 0xf6efd
+ mov al, bl ; 88 d8 ; 0xf6efe ps2mouse.c:117
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f00
+ out DX, AL ; ee ; 0xf6f03
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf6f04 ps2mouse.c:118
+ pop dx ; 5a ; 0xf6f07
+ pop bx ; 5b ; 0xf6f08
+ pop bp ; 5d ; 0xf6f09
+ retn ; c3 ; 0xf6f0a
+ ; disGetNextSymbol 0xf6f0b LB 0x303d -> off=0x0 cb=000000000000009e uValue=00000000000f590b 'int74_function'
+int74_function: ; 0xf6f0b LB 0x9e
+ push bp ; 55 ; 0xf6f0b ps2mouse.c:121
+ mov bp, sp ; 89 e5 ; 0xf6f0c
+ push si ; 56 ; 0xf6f0e
+ push ax ; 50 ; 0xf6f0f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6f10 ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6f13
+ mov es, ax ; 8e c0 ; 0xf6f16
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf6f18
+ mov word [bp+004h], strict word 00000h ; c7 46 04 00 00 ; 0xf6f1b ps2mouse.c:129
+ mov dx, strict word 00064h ; ba 64 00 ; 0xf6f20 ps2mouse.c:131
+ in AL, DX ; ec ; 0xf6f23
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f24
+ and AL, strict byte 021h ; 24 21 ; 0xf6f26 ps2mouse.c:132
+ cmp AL, strict byte 021h ; 3c 21 ; 0xf6f28
+ jne short 06f4ah ; 75 1e ; 0xf6f2a
+ mov dx, strict word 00060h ; ba 60 00 ; 0xf6f2c ps2mouse.c:135
+ in AL, DX ; ec ; 0xf6f2f
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf6f30
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf6f32
+ mov si, strict word 00026h ; be 26 00 ; 0xf6f35 ps2mouse.c:38
+ mov es, bx ; 8e c3 ; 0xf6f38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f3a
+ mov si, strict word 00027h ; be 27 00 ; 0xf6f3d ps2mouse.c:38
+ mov ah, byte [es:si] ; 26 8a 24 ; 0xf6f40
+ mov cl, ah ; 88 e1 ; 0xf6f43 ps2mouse.c:39
+ test ah, 080h ; f6 c4 80 ; 0xf6f45 ps2mouse.c:141
+ jne short 06f4ch ; 75 02 ; 0xf6f48
+ jmp short 06fa3h ; eb 57 ; 0xf6f4a ps2mouse.c:142
+ mov ch, cl ; 88 cd ; 0xf6f4c ps2mouse.c:145
+ and ch, 007h ; 80 e5 07 ; 0xf6f4e
+ mov ah, al ; 88 c4 ; 0xf6f51 ps2mouse.c:146
+ and ah, 007h ; 80 e4 07 ; 0xf6f53
+ mov dl, ah ; 88 e2 ; 0xf6f56 ps2mouse.c:147
+ xor dh, dh ; 30 f6 ; 0xf6f58
+ mov si, dx ; 89 d6 ; 0xf6f5a
+ add si, strict byte 00028h ; 83 c6 28 ; 0xf6f5c
+ mov es, bx ; 8e c3 ; 0xf6f5f ps2mouse.c:43
+ mov dl, byte [bp-004h] ; 8a 56 fc ; 0xf6f61
+ mov byte [es:si], dl ; 26 88 14 ; 0xf6f64
+ cmp ah, ch ; 38 ec ; 0xf6f67 ps2mouse.c:149
+ jc short 06f99h ; 72 2e ; 0xf6f69
+ mov si, strict word 00028h ; be 28 00 ; 0xf6f6b ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f6e
+ xor ah, ah ; 30 e4 ; 0xf6f71 ps2mouse.c:39
+ mov word [bp+00ch], ax ; 89 46 0c ; 0xf6f73
+ mov si, strict word 00029h ; be 29 00 ; 0xf6f76 ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f79
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf6f7c ps2mouse.c:39
+ mov si, strict word 0002ah ; be 2a 00 ; 0xf6f7f ps2mouse.c:38
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf6f82
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf6f85 ps2mouse.c:39
+ xor al, al ; 30 c0 ; 0xf6f88 ps2mouse.c:154
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf6f8a
+ test cl, 080h ; f6 c1 80 ; 0xf6f8d ps2mouse.c:157
+ je short 06f9bh ; 74 09 ; 0xf6f90
+ mov word [bp+004h], strict word 00001h ; c7 46 04 01 00 ; 0xf6f92 ps2mouse.c:158
+ jmp short 06f9bh ; eb 02 ; 0xf6f97 ps2mouse.c:160
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf6f99 ps2mouse.c:161
+ mov si, strict word 00026h ; be 26 00 ; 0xf6f9b ps2mouse.c:43
+ mov es, bx ; 8e c3 ; 0xf6f9e
+ mov byte [es:si], al ; 26 88 04 ; 0xf6fa0
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf6fa3 ps2mouse.c:164
+ pop si ; 5e ; 0xf6fa6
+ pop bp ; 5d ; 0xf6fa7
+ retn ; c3 ; 0xf6fa8
+ ; disGetNextSymbol 0xf6fa9 LB 0x2f9f -> off=0x10 cb=0000000000000380 uValue=00000000000f59b9 'int15_function_mouse'
+ db 0fah, 06fh, 06bh, 070h, 0e1h, 070h, 073h, 071h, 0e5h, 071h, 040h, 070h, 00dh, 072h, 0deh, 072h
+int15_function_mouse: ; 0xf6fb9 LB 0x380
+ push bp ; 55 ; 0xf6fb9 ps2mouse.c:166
+ mov bp, sp ; 89 e5 ; 0xf6fba
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf6fbc
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf6fbf ps2mouse.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf6fc2
+ mov es, ax ; 8e c0 ; 0xf6fc5
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf6fc7
+ cmp byte [bp+012h], 007h ; 80 7e 12 07 ; 0xf6fca ps2mouse.c:188
+ jbe short 06fdbh ; 76 0b ; 0xf6fce
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf6fd0 ps2mouse.c:191
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf6fd4 ps2mouse.c:192
+ jmp near 07335h ; e9 5a 03 ; 0xf6fd8 ps2mouse.c:193
+ mov ax, strict word 00065h ; b8 65 00 ; 0xf6fdb ps2mouse.c:197
+ call 06ed5h ; e8 f4 fe ; 0xf6fde
+ and word [bp+018h], strict byte 0fffeh ; 83 66 18 fe ; 0xf6fe1 ps2mouse.c:198
+ mov byte [bp+013h], 000h ; c6 46 13 00 ; 0xf6fe5 ps2mouse.c:199
+ mov bl, byte [bp+012h] ; 8a 5e 12 ; 0xf6fe9 ps2mouse.c:201
+ cmp bl, 007h ; 80 fb 07 ; 0xf6fec
+ jnbe short 0704eh ; 77 5d ; 0xf6fef
+ xor bh, bh ; 30 ff ; 0xf6ff1
+ sal bx, 1 ; d1 e3 ; 0xf6ff3
+ jmp word [cs:bx+06fa9h] ; 2e ff a7 a9 6f ; 0xf6ff5
+ cmp byte [bp+00dh], 001h ; 80 7e 0d 01 ; 0xf6ffa ps2mouse.c:204
+ jnbe short 07051h ; 77 51 ; 0xf6ffe
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7000 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf7003
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7005
+ test AL, strict byte 080h ; a8 80 ; 0xf7008 ps2mouse.c:212
+ jne short 07017h ; 75 0b ; 0xf700a
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf700c ps2mouse.c:214
+ mov byte [bp+013h], 005h ; c6 46 13 05 ; 0xf7010 ps2mouse.c:215
+ jmp near 0732fh ; e9 18 03 ; 0xf7014 ps2mouse.c:216
+ cmp byte [bp+00dh], 000h ; 80 7e 0d 00 ; 0xf7017 ps2mouse.c:218
+ jne short 07021h ; 75 04 ; 0xf701b
+ mov AL, strict byte 0f5h ; b0 f5 ; 0xf701d ps2mouse.c:220
+ jmp short 07023h ; eb 02 ; 0xf701f ps2mouse.c:221
+ mov AL, strict byte 0f4h ; b0 f4 ; 0xf7021 ps2mouse.c:223
+ xor ah, ah ; 30 e4 ; 0xf7023 ps2mouse.c:226
+ call 06e40h ; e8 18 fe ; 0xf7025
+ test al, al ; 84 c0 ; 0xf7028 ps2mouse.c:227
+ jne short 07054h ; 75 28 ; 0xf702a
+ mov dx, ss ; 8c d2 ; 0xf702c ps2mouse.c:228
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf702e
+ call 06e78h ; e8 44 fe ; 0xf7031
+ test al, al ; 84 c0 ; 0xf7034 ps2mouse.c:229
+ je short 0709ah ; 74 62 ; 0xf7036
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7038
+ jne short 07054h ; 75 16 ; 0xf703c
+ jmp short 0709ah ; eb 5a ; 0xf703e ps2mouse.c:231
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf7040 ps2mouse.c:242
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7043
+ jc short 0704bh ; 72 04 ; 0xf7045
+ cmp AL, strict byte 008h ; 3c 08 ; 0xf7047
+ jbe short 07057h ; 76 0c ; 0xf7049
+ jmp near 071dbh ; e9 8d 01 ; 0xf704b
+ jmp near 07319h ; e9 c8 02 ; 0xf704e
+ jmp near 07327h ; e9 d3 02 ; 0xf7051
+ jmp near 072b6h ; e9 5f 02 ; 0xf7054
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf7057 ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf705a
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf705c
+ mov ah, byte [bp+00dh] ; 8a 66 0d ; 0xf705f ps2mouse.c:248
+ db 0feh, 0cch
+ ; dec ah ; fe cc ; 0xf7062
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf7064
+ or al, ah ; 08 e0 ; 0xf7066
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7068 ps2mouse.c:43
+ mov bx, strict word 00026h ; bb 26 00 ; 0xf706b ps2mouse.c:38
+ mov es, dx ; 8e c2 ; 0xf706e
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf7070
+ and AL, strict byte 0f8h ; 24 f8 ; 0xf7073 ps2mouse.c:256
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7075 ps2mouse.c:43
+ mov ax, 000ffh ; b8 ff 00 ; 0xf7078 ps2mouse.c:258
+ call 06e40h ; e8 c2 fd ; 0xf707b
+ test al, al ; 84 c0 ; 0xf707e ps2mouse.c:259
+ jne short 07054h ; 75 d2 ; 0xf7080
+ mov dx, ss ; 8c d2 ; 0xf7082 ps2mouse.c:260
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7084
+ call 06e78h ; e8 ee fd ; 0xf7087
+ mov dl, al ; 88 c2 ; 0xf708a
+ cmp byte [bp-002h], 0feh ; 80 7e fe fe ; 0xf708c ps2mouse.c:262
+ jne short 0709dh ; 75 0b ; 0xf7090
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7092 ps2mouse.c:263
+ mov byte [bp+013h], 004h ; c6 46 13 04 ; 0xf7096 ps2mouse.c:264
+ jmp near 0732fh ; e9 92 02 ; 0xf709a ps2mouse.c:265
+ cmp byte [bp-002h], 0fah ; 80 7e fe fa ; 0xf709d ps2mouse.c:267
+ je short 070b7h ; 74 14 ; 0xf70a1
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf70a3 ps2mouse.c:268
+ xor ah, ah ; 30 e4 ; 0xf70a6
+ push ax ; 50 ; 0xf70a8
+ mov ax, 00903h ; b8 03 09 ; 0xf70a9
+ push ax ; 50 ; 0xf70ac
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf70ad
+ push ax ; 50 ; 0xf70b0
+ call 0190fh ; e8 5b a8 ; 0xf70b1
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf70b4
+ test dl, dl ; 84 d2 ; 0xf70b7 ps2mouse.c:269
+ jne short 07054h ; 75 99 ; 0xf70b9
+ mov dx, ss ; 8c d2 ; 0xf70bb ps2mouse.c:270
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf70bd
+ call 06e78h ; e8 b5 fd ; 0xf70c0
+ test al, al ; 84 c0 ; 0xf70c3 ps2mouse.c:271
+ jne short 07054h ; 75 8d ; 0xf70c5
+ mov dx, ss ; 8c d2 ; 0xf70c7 ps2mouse.c:272
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf70c9
+ call 06e78h ; e8 a9 fd ; 0xf70cc
+ test al, al ; 84 c0 ; 0xf70cf ps2mouse.c:273
+ jne short 07054h ; 75 81 ; 0xf70d1
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf70d3 ps2mouse.c:275
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf70d6
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf70d9 ps2mouse.c:276
+ mov byte [bp+00dh], al ; 88 46 0d ; 0xf70dc
+ jmp short 0709ah ; eb b9 ; 0xf70df ps2mouse.c:277
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf70e1 ps2mouse.c:290
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf70e4
+ jc short 070f8h ; 72 10 ; 0xf70e6
+ jbe short 07116h ; 76 2c ; 0xf70e8
+ cmp AL, strict byte 006h ; 3c 06 ; 0xf70ea
+ je short 07128h ; 74 3a ; 0xf70ec
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf70ee
+ je short 07122h ; 74 30 ; 0xf70f0
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf70f2
+ je short 0711ch ; 74 26 ; 0xf70f4
+ jmp short 0712eh ; eb 36 ; 0xf70f6
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf70f8
+ je short 07110h ; 74 14 ; 0xf70fa
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf70fc
+ je short 0710ah ; 74 0a ; 0xf70fe
+ test al, al ; 84 c0 ; 0xf7100
+ jne short 0712eh ; 75 2a ; 0xf7102
+ mov byte [bp-006h], 00ah ; c6 46 fa 0a ; 0xf7104 ps2mouse.c:291
+ jmp short 07132h ; eb 28 ; 0xf7108
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf710a ps2mouse.c:292
+ jmp short 07132h ; eb 22 ; 0xf710e
+ mov byte [bp-006h], 028h ; c6 46 fa 28 ; 0xf7110 ps2mouse.c:293
+ jmp short 07132h ; eb 1c ; 0xf7114
+ mov byte [bp-006h], 03ch ; c6 46 fa 3c ; 0xf7116 ps2mouse.c:294
+ jmp short 07132h ; eb 16 ; 0xf711a
+ mov byte [bp-006h], 050h ; c6 46 fa 50 ; 0xf711c ps2mouse.c:295
+ jmp short 07132h ; eb 10 ; 0xf7120
+ mov byte [bp-006h], 064h ; c6 46 fa 64 ; 0xf7122 ps2mouse.c:296
+ jmp short 07132h ; eb 0a ; 0xf7126
+ mov byte [bp-006h], 0c8h ; c6 46 fa c8 ; 0xf7128 ps2mouse.c:297
+ jmp short 07132h ; eb 04 ; 0xf712c
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf712e ps2mouse.c:298
+ cmp byte [bp-006h], 000h ; 80 7e fa 00 ; 0xf7132 ps2mouse.c:300
+ jbe short 07168h ; 76 30 ; 0xf7136
+ mov ax, 000f3h ; b8 f3 00 ; 0xf7138 ps2mouse.c:301
+ call 06e40h ; e8 02 fd ; 0xf713b
+ test al, al ; 84 c0 ; 0xf713e ps2mouse.c:302
+ jne short 0715dh ; 75 1b ; 0xf7140
+ mov dx, ss ; 8c d2 ; 0xf7142 ps2mouse.c:303
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7144
+ call 06e78h ; e8 2e fd ; 0xf7147
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf714a ps2mouse.c:304
+ xor ah, ah ; 30 e4 ; 0xf714d
+ call 06e40h ; e8 ee fc ; 0xf714f
+ mov dx, ss ; 8c d2 ; 0xf7152 ps2mouse.c:305
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf7154
+ call 06e78h ; e8 1e fd ; 0xf7157
+ jmp near 0732fh ; e9 d2 01 ; 0xf715a ps2mouse.c:307
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf715d ps2mouse.c:309
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7161 ps2mouse.c:310
+ jmp near 0732fh ; e9 c7 01 ; 0xf7165 ps2mouse.c:312
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7168 ps2mouse.c:314
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf716c ps2mouse.c:315
+ jmp near 0732fh ; e9 bc 01 ; 0xf7170 ps2mouse.c:317
+ cmp byte [bp+00dh], 004h ; 80 7e 0d 04 ; 0xf7173 ps2mouse.c:326
+ jnc short 071dbh ; 73 62 ; 0xf7177
+ mov ax, 000e8h ; b8 e8 00 ; 0xf7179 ps2mouse.c:327
+ call 06e40h ; e8 c1 fc ; 0xf717c
+ test al, al ; 84 c0 ; 0xf717f ps2mouse.c:328
+ jne short 071d1h ; 75 4e ; 0xf7181
+ mov dx, ss ; 8c d2 ; 0xf7183 ps2mouse.c:329
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7185
+ call 06e78h ; e8 ed fc ; 0xf7188
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf718b ps2mouse.c:330
+ je short 071a5h ; 74 14 ; 0xf718f
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7191 ps2mouse.c:331
+ xor ah, ah ; 30 e4 ; 0xf7194
+ push ax ; 50 ; 0xf7196
+ mov ax, 0092eh ; b8 2e 09 ; 0xf7197
+ push ax ; 50 ; 0xf719a
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf719b
+ push ax ; 50 ; 0xf719e
+ call 0190fh ; e8 6d a7 ; 0xf719f
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71a2
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf71a5 ps2mouse.c:332
+ xor ah, ah ; 30 e4 ; 0xf71a8
+ call 06e40h ; e8 93 fc ; 0xf71aa
+ mov dx, ss ; 8c d2 ; 0xf71ad ps2mouse.c:333
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf71af
+ call 06e78h ; e8 c3 fc ; 0xf71b2
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf71b5 ps2mouse.c:334
+ je short 0720ah ; 74 4f ; 0xf71b9
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf71bb ps2mouse.c:335
+ xor ah, ah ; 30 e4 ; 0xf71be
+ push ax ; 50 ; 0xf71c0
+ mov ax, 0092eh ; b8 2e 09 ; 0xf71c1
+ push ax ; 50 ; 0xf71c4
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf71c5
+ push ax ; 50 ; 0xf71c8
+ call 0190fh ; e8 43 a7 ; 0xf71c9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf71cc
+ jmp short 0720ah ; eb 39 ; 0xf71cf ps2mouse.c:337
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71d1 ps2mouse.c:339
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf71d5 ps2mouse.c:340
+ jmp short 0720ah ; eb 2f ; 0xf71d9 ps2mouse.c:342
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf71db ps2mouse.c:344
+ mov byte [bp+013h], 002h ; c6 46 13 02 ; 0xf71df ps2mouse.c:345
+ jmp short 0720ah ; eb 25 ; 0xf71e3 ps2mouse.c:347
+ mov ax, 000f2h ; b8 f2 00 ; 0xf71e5 ps2mouse.c:351
+ call 06e40h ; e8 55 fc ; 0xf71e8
+ test al, al ; 84 c0 ; 0xf71eb ps2mouse.c:352
+ jne short 07202h ; 75 13 ; 0xf71ed
+ mov dx, ss ; 8c d2 ; 0xf71ef ps2mouse.c:353
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf71f1
+ call 06e78h ; e8 81 fc ; 0xf71f4
+ mov dx, ss ; 8c d2 ; 0xf71f7 ps2mouse.c:354
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf71f9
+ call 06e78h ; e8 79 fc ; 0xf71fc
+ jmp near 070d9h ; e9 d7 fe ; 0xf71ff
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7202 ps2mouse.c:355
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf7206 ps2mouse.c:360
+ jmp near 0732fh ; e9 22 01 ; 0xf720a ps2mouse.c:362
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf720d ps2mouse.c:366
+ test al, al ; 84 c0 ; 0xf7210
+ jbe short 0721dh ; 76 09 ; 0xf7212
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7214
+ jbe short 0721bh ; 76 03 ; 0xf7216
+ jmp near 072c0h ; e9 a5 00 ; 0xf7218
+ jmp short 07287h ; eb 6a ; 0xf721b
+ mov ax, 000e9h ; b8 e9 00 ; 0xf721d ps2mouse.c:368
+ call 06e40h ; e8 1d fc ; 0xf7220
+ test al, al ; 84 c0 ; 0xf7223 ps2mouse.c:369
+ jne short 07290h ; 75 69 ; 0xf7225
+ mov dx, ss ; 8c d2 ; 0xf7227 ps2mouse.c:370
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7229
+ call 06e78h ; e8 49 fc ; 0xf722c
+ mov dl, al ; 88 c2 ; 0xf722f
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf7231 ps2mouse.c:371
+ je short 0724bh ; 74 14 ; 0xf7235
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7237 ps2mouse.c:372
+ xor ah, ah ; 30 e4 ; 0xf723a
+ push ax ; 50 ; 0xf723c
+ mov ax, 0092eh ; b8 2e 09 ; 0xf723d
+ push ax ; 50 ; 0xf7240
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7241
+ push ax ; 50 ; 0xf7244
+ call 0190fh ; e8 c7 a6 ; 0xf7245
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7248
+ test dl, dl ; 84 d2 ; 0xf724b ps2mouse.c:373
+ jne short 07290h ; 75 41 ; 0xf724d
+ mov dx, ss ; 8c d2 ; 0xf724f ps2mouse.c:374
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf7251
+ call 06e78h ; e8 21 fc ; 0xf7254
+ test al, al ; 84 c0 ; 0xf7257 ps2mouse.c:375
+ jne short 072b6h ; 75 5b ; 0xf7259
+ mov dx, ss ; 8c d2 ; 0xf725b ps2mouse.c:376
+ lea ax, [bp-004h] ; 8d 46 fc ; 0xf725d
+ call 06e78h ; e8 15 fc ; 0xf7260
+ test al, al ; 84 c0 ; 0xf7263 ps2mouse.c:377
+ jne short 072b6h ; 75 4f ; 0xf7265
+ mov dx, ss ; 8c d2 ; 0xf7267 ps2mouse.c:378
+ lea ax, [bp-002h] ; 8d 46 fe ; 0xf7269
+ call 06e78h ; e8 09 fc ; 0xf726c
+ test al, al ; 84 c0 ; 0xf726f ps2mouse.c:379
+ jne short 072b6h ; 75 43 ; 0xf7271
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7273 ps2mouse.c:380
+ mov byte [bp+00ch], al ; 88 46 0c ; 0xf7276
+ mov al, byte [bp-004h] ; 8a 46 fc ; 0xf7279 ps2mouse.c:381
+ mov byte [bp+010h], al ; 88 46 10 ; 0xf727c
+ mov al, byte [bp-002h] ; 8a 46 fe ; 0xf727f ps2mouse.c:382
+ mov byte [bp+00eh], al ; 88 46 0e ; 0xf7282
+ jmp short 0720ah ; eb 83 ; 0xf7285 ps2mouse.c:384
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7287 ps2mouse.c:398
+ jne short 07292h ; 75 07 ; 0xf7289
+ mov ax, 000e6h ; b8 e6 00 ; 0xf728b ps2mouse.c:399
+ jmp short 07295h ; eb 05 ; 0xf728e ps2mouse.c:400
+ jmp short 072b6h ; eb 24 ; 0xf7290
+ mov ax, 000e7h ; b8 e7 00 ; 0xf7292 ps2mouse.c:401
+ call 06e40h ; e8 a8 fb ; 0xf7295
+ mov dl, al ; 88 c2 ; 0xf7298
+ test dl, dl ; 84 d2 ; 0xf729a ps2mouse.c:403
+ jne short 072b2h ; 75 14 ; 0xf729c
+ mov dx, ss ; 8c d2 ; 0xf729e ps2mouse.c:404
+ lea ax, [bp-006h] ; 8d 46 fa ; 0xf72a0
+ call 06e78h ; e8 d2 fb ; 0xf72a3
+ cmp byte [bp-006h], 0fah ; 80 7e fa fa ; 0xf72a6 ps2mouse.c:405
+ je short 072b0h ; 74 04 ; 0xf72aa
+ mov DL, strict byte 001h ; b2 01 ; 0xf72ac
+ jmp short 072b2h ; eb 02 ; 0xf72ae
+ xor dl, dl ; 30 d2 ; 0xf72b0
+ test dl, dl ; 84 d2 ; 0xf72b2 ps2mouse.c:407
+ je short 07317h ; 74 61 ; 0xf72b4
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72b6 ps2mouse.c:409
+ mov byte [bp+013h], 003h ; c6 46 13 03 ; 0xf72ba ps2mouse.c:410
+ jmp short 07317h ; eb 57 ; 0xf72be ps2mouse.c:412
+ mov al, byte [bp+00dh] ; 8a 46 0d ; 0xf72c0 ps2mouse.c:415
+ xor ah, ah ; 30 e4 ; 0xf72c3
+ push ax ; 50 ; 0xf72c5
+ mov ax, 0095ah ; b8 5a 09 ; 0xf72c6
+ push ax ; 50 ; 0xf72c9
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf72ca
+ push ax ; 50 ; 0xf72cd
+ call 0190fh ; e8 3e a6 ; 0xf72ce
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf72d1
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf72d4 ps2mouse.c:417
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf72d8 ps2mouse.c:418
+ jmp short 0732fh ; eb 51 ; 0xf72dc ps2mouse.c:420
+ mov cx, word [bp+00ch] ; 8b 4e 0c ; 0xf72de ps2mouse.c:425
+ mov bx, strict word 00022h ; bb 22 00 ; 0xf72e1 ps2mouse.c:53
+ mov es, dx ; 8e c2 ; 0xf72e4
+ mov word [es:bx], cx ; 26 89 0f ; 0xf72e6
+ mov bx, strict word 00024h ; bb 24 00 ; 0xf72e9 ps2mouse.c:53
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf72ec
+ mov word [es:bx], ax ; 26 89 07 ; 0xf72ef
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf72f2 ps2mouse.c:38
+ mov ah, byte [es:bx] ; 26 8a 27 ; 0xf72f5
+ mov al, ah ; 88 e0 ; 0xf72f8 ps2mouse.c:39
+ test cx, cx ; 85 c9 ; 0xf72fa ps2mouse.c:429
+ jne short 0730dh ; 75 0f ; 0xf72fc
+ cmp word [bp+014h], strict byte 00000h ; 83 7e 14 00 ; 0xf72fe
+ jne short 0730dh ; 75 09 ; 0xf7302
+ test ah, 080h ; f6 c4 80 ; 0xf7304 ps2mouse.c:431
+ je short 0730fh ; 74 06 ; 0xf7307
+ and AL, strict byte 07fh ; 24 7f ; 0xf7309 ps2mouse.c:432
+ jmp short 0730fh ; eb 02 ; 0xf730b ps2mouse.c:435
+ or AL, strict byte 080h ; 0c 80 ; 0xf730d ps2mouse.c:437
+ mov bx, strict word 00027h ; bb 27 00 ; 0xf730f ps2mouse.c:43
+ mov es, dx ; 8e c2 ; 0xf7312
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7314
+ jmp short 0732fh ; eb 16 ; 0xf7317 ps2mouse.c:440
+ mov ax, 00974h ; b8 74 09 ; 0xf7319 ps2mouse.c:443
+ push ax ; 50 ; 0xf731c
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf731d
+ push ax ; 50 ; 0xf7320
+ call 0190fh ; e8 eb a5 ; 0xf7321
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7324
+ or word [bp+018h], strict byte 00001h ; 83 4e 18 01 ; 0xf7327 ps2mouse.c:445
+ mov byte [bp+013h], 001h ; c6 46 13 01 ; 0xf732b ps2mouse.c:446
+ mov ax, strict word 00047h ; b8 47 00 ; 0xf732f ps2mouse.c:450
+ call 06ed5h ; e8 a0 fb ; 0xf7332
+ mov sp, bp ; 89 ec ; 0xf7335 ps2mouse.c:451
+ pop bp ; 5d ; 0xf7337
+ retn ; c3 ; 0xf7338
+ ; disGetNextSymbol 0xf7339 LB 0x2c0f -> off=0x0 cb=00000000000000a9 uValue=00000000000f5d39 'int17_function'
+int17_function: ; 0xf7339 LB 0xa9
+ push bp ; 55 ; 0xf7339 parallel.c:60
+ mov bp, sp ; 89 e5 ; 0xf733a
+ push si ; 56 ; 0xf733c
+ push di ; 57 ; 0xf733d
+ push ax ; 50 ; 0xf733e
+ sti ; fb ; 0xf733f parallel.c:65
+ mov bx, word [bp+00eh] ; 8b 5e 0e ; 0xf7340 parallel.c:67
+ sal bx, 1 ; d1 e3 ; 0xf7343
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf7345
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7348 parallel.c:48
+ mov es, ax ; 8e c0 ; 0xf734b
+ mov bx, word [es:bx] ; 26 8b 1f ; 0xf734d
+ mov di, bx ; 89 df ; 0xf7350 parallel.c:49
+ cmp byte [bp+013h], 003h ; 80 7e 13 03 ; 0xf7352 parallel.c:68
+ jnc short 07364h ; 73 0c ; 0xf7356
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf7358
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf735b
+ jnc short 07364h ; 73 04 ; 0xf735e
+ test bx, bx ; 85 db ; 0xf7360
+ jnbe short 07367h ; 77 03 ; 0xf7362
+ jmp near 073d7h ; e9 70 00 ; 0xf7364
+ mov si, ax ; 89 c6 ; 0xf7367 parallel.c:69
+ add si, strict byte 00078h ; 83 c6 78 ; 0xf7369
+ mov ch, byte [es:si] ; 26 8a 2c ; 0xf736c parallel.c:38
+ xor cl, cl ; 30 c9 ; 0xf736f parallel.c:39
+ cmp byte [bp+013h], 000h ; 80 7e 13 00 ; 0xf7371 parallel.c:70
+ jne short 073a3h ; 75 2c ; 0xf7375
+ mov al, byte [bp+012h] ; 8a 46 12 ; 0xf7377 parallel.c:71
+ mov dx, bx ; 89 da ; 0xf737a
+ out DX, AL ; ee ; 0xf737c
+ lea dx, [bx+002h] ; 8d 57 02 ; 0xf737d parallel.c:72
+ in AL, DX ; ec ; 0xf7380
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7381
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf7383
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7386 parallel.c:73
+ or AL, strict byte 001h ; 0c 01 ; 0xf7389
+ out DX, AL ; ee ; 0xf738b
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf738c parallel.c:74
+ and AL, strict byte 0feh ; 24 fe ; 0xf738f
+ out DX, AL ; ee ; 0xf7391
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7392 parallel.c:75
+ in AL, DX ; ec ; 0xf7395
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7396
+ test AL, strict byte 040h ; a8 40 ; 0xf7398
+ je short 073a3h ; 74 07 ; 0xf739a
+ test cx, cx ; 85 c9 ; 0xf739c
+ je short 073a3h ; 74 03 ; 0xf739e
+ dec cx ; 49 ; 0xf73a0 parallel.c:76
+ jmp short 07392h ; eb ef ; 0xf73a1 parallel.c:77
+ cmp byte [bp+013h], 001h ; 80 7e 13 01 ; 0xf73a3 parallel.c:79
+ jne short 073beh ; 75 15 ; 0xf73a7
+ lea dx, [di+002h] ; 8d 55 02 ; 0xf73a9 parallel.c:80
+ in AL, DX ; ec ; 0xf73ac
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73ad
+ mov word [bp-006h], ax ; 89 46 fa ; 0xf73af
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73b2 parallel.c:81
+ and AL, strict byte 0fbh ; 24 fb ; 0xf73b5
+ out DX, AL ; ee ; 0xf73b7
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf73b8 parallel.c:82
+ or AL, strict byte 004h ; 0c 04 ; 0xf73bb
+ out DX, AL ; ee ; 0xf73bd
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf73be parallel.c:84
+ in AL, DX ; ec ; 0xf73c1
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf73c2
+ xor AL, strict byte 048h ; 34 48 ; 0xf73c4 parallel.c:85
+ mov byte [bp+013h], al ; 88 46 13 ; 0xf73c6
+ test cx, cx ; 85 c9 ; 0xf73c9 parallel.c:86
+ jne short 073d1h ; 75 04 ; 0xf73cb
+ or byte [bp+013h], 001h ; 80 4e 13 01 ; 0xf73cd
+ and byte [bp+01ch], 0feh ; 80 66 1c fe ; 0xf73d1 parallel.c:87
+ jmp short 073dbh ; eb 04 ; 0xf73d5 parallel.c:88
+ or byte [bp+01ch], 001h ; 80 4e 1c 01 ; 0xf73d7 parallel.c:89
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf73db parallel.c:91
+ pop di ; 5f ; 0xf73de
+ pop si ; 5e ; 0xf73df
+ pop bp ; 5d ; 0xf73e0
+ retn ; c3 ; 0xf73e1
+ ; disGetNextSymbol 0xf73e2 LB 0x2b66 -> off=0x0 cb=00000000000000c8 uValue=00000000000f5de2 '_wait_'
+_wait_: ; 0xf73e2 LB 0xc8
+ push bp ; 55 ; 0xf73e2 logo.c:171
+ mov bp, sp ; 89 e5 ; 0xf73e3
+ push bx ; 53 ; 0xf73e5
+ push cx ; 51 ; 0xf73e6
+ push si ; 56 ; 0xf73e7
+ push di ; 57 ; 0xf73e8
+ sub sp, strict byte 00010h ; 83 ec 10 ; 0xf73e9
+ mov cx, ax ; 89 c1 ; 0xf73ec
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf73ee
+ mov byte [bp-00ah], 000h ; c6 46 f6 00 ; 0xf73f1 logo.c:176
+ pushfw ; 9c ; 0xf73f5 logo.c:182
+ pop ax ; 58 ; 0xf73f6
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf73f7
+ sti ; fb ; 0xf73fa logo.c:183
+ xor dx, dx ; 31 d2 ; 0xf73fb logo.c:189
+ mov bx, 0046ch ; bb 6c 04 ; 0xf73fd logo.c:58
+ mov es, dx ; 8e c2 ; 0xf7400
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7402
+ mov bx, word [es:bx+002h] ; 26 8b 5f 02 ; 0xf7405
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7409 logo.c:59
+ hlt ; f4 ; 0xf740c logo.c:193
+ mov si, 0046ch ; be 6c 04 ; 0xf740d logo.c:58
+ xor ax, ax ; 31 c0 ; 0xf7410
+ mov es, ax ; 8e c0 ; 0xf7412
+ mov di, word [es:si] ; 26 8b 3c ; 0xf7414
+ mov ax, word [es:si+002h] ; 26 8b 44 02 ; 0xf7417
+ mov word [bp-016h], di ; 89 7e ea ; 0xf741b logo.c:59
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf741e
+ cmp ax, bx ; 39 d8 ; 0xf7421 logo.c:195
+ jnbe short 0742ch ; 77 07 ; 0xf7423
+ jne short 07433h ; 75 0c ; 0xf7425
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf7427
+ jbe short 07433h ; 76 07 ; 0xf742a
+ sub di, word [bp-010h] ; 2b 7e f0 ; 0xf742c logo.c:197
+ sbb ax, bx ; 19 d8 ; 0xf742f
+ jmp short 0743eh ; eb 0b ; 0xf7431 logo.c:200
+ cmp ax, bx ; 39 d8 ; 0xf7433
+ jc short 0743eh ; 72 07 ; 0xf7435
+ jne short 07442h ; 75 09 ; 0xf7437
+ cmp di, word [bp-010h] ; 3b 7e f0 ; 0xf7439
+ jnc short 07442h ; 73 04 ; 0xf743c
+ sub cx, di ; 29 f9 ; 0xf743e logo.c:201
+ sbb dx, ax ; 19 c2 ; 0xf7440
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7442 logo.c:202
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7445
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf7448
+ mov ax, 00100h ; b8 00 01 ; 0xf744b logo.c:204
+ int 016h ; cd 16 ; 0xf744e
+ je short 07457h ; 74 05 ; 0xf7450
+ mov AL, strict byte 001h ; b0 01 ; 0xf7452
+ jmp near 07459h ; e9 02 00 ; 0xf7454
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf7457
+ test al, al ; 84 c0 ; 0xf7459
+ je short 0748ch ; 74 2f ; 0xf745b
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf745d logo.c:206
+ int 016h ; cd 16 ; 0xf745f
+ xchg ah, al ; 86 c4 ; 0xf7461
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf7463
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf7466
+ mov byte [bp-018h], al ; 88 46 e8 ; 0xf7469 logo.c:207
+ mov byte [bp-017h], 000h ; c6 46 e9 00 ; 0xf746c
+ push word [bp-018h] ; ff 76 e8 ; 0xf7470
+ mov ax, 00996h ; b8 96 09 ; 0xf7473
+ push ax ; 50 ; 0xf7476
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7477
+ push ax ; 50 ; 0xf747a
+ call 0190fh ; e8 91 a4 ; 0xf747b
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf747e
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7481 logo.c:208
+ je short 0748ch ; 74 05 ; 0xf7485
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7487 logo.c:209
+ jmp short 074a1h ; eb 15 ; 0xf748a
+ test dx, dx ; 85 d2 ; 0xf748c logo.c:211
+ jle short 07493h ; 7e 03 ; 0xf748e
+ jmp near 0740ch ; e9 79 ff ; 0xf7490
+ jne short 07499h ; 75 04 ; 0xf7493
+ test cx, cx ; 85 c9 ; 0xf7495
+ jnbe short 07490h ; 77 f7 ; 0xf7497
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf7499 logo.c:212
+ push ax ; 50 ; 0xf749c
+ popfw ; 9d ; 0xf749d
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf749e logo.c:213
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf74a1 logo.c:214
+ pop di ; 5f ; 0xf74a4
+ pop si ; 5e ; 0xf74a5
+ pop cx ; 59 ; 0xf74a6
+ pop bx ; 5b ; 0xf74a7
+ pop bp ; 5d ; 0xf74a8
+ retn ; c3 ; 0xf74a9
+ ; disGetNextSymbol 0xf74aa LB 0x2a9e -> off=0x0 cb=0000000000000016 uValue=00000000000f5eaa 'read_logo_byte'
+read_logo_byte: ; 0xf74aa LB 0x16
+ push bp ; 55 ; 0xf74aa logo.c:216
+ mov bp, sp ; 89 e5 ; 0xf74ab
+ push dx ; 52 ; 0xf74ad
+ xor ah, ah ; 30 e4 ; 0xf74ae logo.c:218
+ or ah, 001h ; 80 cc 01 ; 0xf74b0
+ mov dx, 003b8h ; ba b8 03 ; 0xf74b3
+ out DX, ax ; ef ; 0xf74b6
+ in AL, DX ; ec ; 0xf74b7 logo.c:219
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf74b8
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf74ba logo.c:220
+ pop dx ; 5a ; 0xf74bd
+ pop bp ; 5d ; 0xf74be
+ retn ; c3 ; 0xf74bf
+ ; disGetNextSymbol 0xf74c0 LB 0x2a88 -> off=0x0 cb=0000000000000014 uValue=00000000000f5ec0 'read_logo_word'
+read_logo_word: ; 0xf74c0 LB 0x14
+ push bp ; 55 ; 0xf74c0 logo.c:222
+ mov bp, sp ; 89 e5 ; 0xf74c1
+ push dx ; 52 ; 0xf74c3
+ xor ah, ah ; 30 e4 ; 0xf74c4 logo.c:224
+ or ah, 001h ; 80 cc 01 ; 0xf74c6
+ mov dx, 003b8h ; ba b8 03 ; 0xf74c9
+ out DX, ax ; ef ; 0xf74cc
+ in ax, DX ; ed ; 0xf74cd logo.c:225
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf74ce logo.c:226
+ pop dx ; 5a ; 0xf74d1
+ pop bp ; 5d ; 0xf74d2
+ retn ; c3 ; 0xf74d3
+ ; disGetNextSymbol 0xf74d4 LB 0x2a74 -> off=0x0 cb=000000000000015f uValue=00000000000f5ed4 'print_detected_harddisks'
+print_detected_harddisks: ; 0xf74d4 LB 0x15f
+ push bp ; 55 ; 0xf74d4 logo.c:245
+ mov bp, sp ; 89 e5 ; 0xf74d5
+ push bx ; 53 ; 0xf74d7
+ push cx ; 51 ; 0xf74d8
+ push dx ; 52 ; 0xf74d9
+ push si ; 56 ; 0xf74da
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf74db
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf74de logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf74e1
+ mov es, ax ; 8e c0 ; 0xf74e4
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf74e6
+ mov si, ax ; 89 c6 ; 0xf74e9 logo.c:49
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf74eb logo.c:250
+ xor ch, ch ; 30 ed ; 0xf74ef logo.c:251
+ mov byte [bp-00ah], ch ; 88 6e f6 ; 0xf74f1 logo.c:252
+ mov bx, 00304h ; bb 04 03 ; 0xf74f4 logo.c:38
+ mov es, ax ; 8e c0 ; 0xf74f7
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf74f9
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf74fc logo.c:39
+ xor cl, cl ; 30 c9 ; 0xf74ff logo.c:257
+ cmp cl, byte [bp-00eh] ; 3a 4e f2 ; 0xf7501
+ jnc short 07564h ; 73 5e ; 0xf7504
+ mov bl, cl ; 88 cb ; 0xf7506 logo.c:259
+ xor bh, bh ; 30 ff ; 0xf7508
+ add bx, 00305h ; 81 c3 05 03 ; 0xf750a
+ mov es, si ; 8e c6 ; 0xf750e logo.c:38
+ mov bh, byte [es:bx] ; 26 8a 3f ; 0xf7510
+ mov bl, bh ; 88 fb ; 0xf7513 logo.c:39
+ cmp bh, 00ch ; 80 ff 0c ; 0xf7515 logo.c:262
+ jc short 07545h ; 72 2b ; 0xf7518
+ test ch, ch ; 84 ed ; 0xf751a logo.c:264
+ jne short 0752eh ; 75 10 ; 0xf751c
+ mov ax, 009a7h ; b8 a7 09 ; 0xf751e logo.c:266
+ push ax ; 50 ; 0xf7521
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7522
+ push ax ; 50 ; 0xf7525
+ call 0190fh ; e8 e6 a3 ; 0xf7526
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7529
+ mov CH, strict byte 001h ; b5 01 ; 0xf752c logo.c:267
+ mov al, cl ; 88 c8 ; 0xf752e logo.c:270
+ xor ah, ah ; 30 e4 ; 0xf7530
+ inc ax ; 40 ; 0xf7532
+ push ax ; 50 ; 0xf7533
+ mov ax, 009bch ; b8 bc 09 ; 0xf7534
+ push ax ; 50 ; 0xf7537
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7538
+ push ax ; 50 ; 0xf753b
+ call 0190fh ; e8 d0 a3 ; 0xf753c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf753f
+ jmp near 075f9h ; e9 b4 00 ; 0xf7542 logo.c:273
+ cmp bh, 008h ; 80 ff 08 ; 0xf7545 logo.c:276
+ jc short 07567h ; 72 1d ; 0xf7548
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf754a logo.c:278
+ jne short 07562h ; 75 12 ; 0xf754e
+ mov ax, 009cfh ; b8 cf 09 ; 0xf7550 logo.c:280
+ push ax ; 50 ; 0xf7553
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7554
+ push ax ; 50 ; 0xf7557
+ call 0190fh ; e8 b4 a3 ; 0xf7558
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf755b
+ mov byte [bp-00ah], 001h ; c6 46 f6 01 ; 0xf755e logo.c:281
+ jmp short 0752eh ; eb ca ; 0xf7562 logo.c:282
+ jmp near 075feh ; e9 97 00 ; 0xf7564
+ cmp bh, 004h ; 80 ff 04 ; 0xf7567 logo.c:291
+ jnc short 07586h ; 73 1a ; 0xf756a
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf756c
+ jne short 07586h ; 75 14 ; 0xf7570
+ mov ax, 009e4h ; b8 e4 09 ; 0xf7572 logo.c:293
+ push ax ; 50 ; 0xf7575
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7576
+ push ax ; 50 ; 0xf7579
+ call 0190fh ; e8 92 a3 ; 0xf757a
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf757d
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7580 logo.c:294
+ jmp short 0759fh ; eb 19 ; 0xf7584 logo.c:296
+ cmp bl, 004h ; 80 fb 04 ; 0xf7586
+ jc short 0759fh ; 72 14 ; 0xf7589
+ test ch, ch ; 84 ed ; 0xf758b
+ jne short 0759fh ; 75 10 ; 0xf758d
+ mov ax, 009f6h ; b8 f6 09 ; 0xf758f logo.c:298
+ push ax ; 50 ; 0xf7592
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7593
+ push ax ; 50 ; 0xf7596
+ call 0190fh ; e8 75 a3 ; 0xf7597
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf759a
+ mov CH, strict byte 001h ; b5 01 ; 0xf759d logo.c:299
+ mov al, cl ; 88 c8 ; 0xf759f logo.c:302
+ xor ah, ah ; 30 e4 ; 0xf75a1
+ inc ax ; 40 ; 0xf75a3
+ push ax ; 50 ; 0xf75a4
+ mov ax, 00a0ah ; b8 0a 0a ; 0xf75a5
+ push ax ; 50 ; 0xf75a8
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf75a9
+ push ax ; 50 ; 0xf75ac
+ call 0190fh ; e8 5f a3 ; 0xf75ad
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf75b0
+ cmp bl, 004h ; 80 fb 04 ; 0xf75b3 logo.c:309
+ jc short 075bbh ; 72 03 ; 0xf75b6
+ sub bl, 004h ; 80 eb 04 ; 0xf75b8 logo.c:310
+ mov al, bl ; 88 d8 ; 0xf75bb logo.c:312
+ xor ah, ah ; 30 e4 ; 0xf75bd
+ cwd ; 99 ; 0xf75bf
+ db 02bh, 0c2h
+ ; sub ax, dx ; 2b c2 ; 0xf75c0
+ sar ax, 1 ; d1 f8 ; 0xf75c2
+ test ax, ax ; 85 c0 ; 0xf75c4
+ je short 075cdh ; 74 05 ; 0xf75c6
+ mov ax, 00a14h ; b8 14 0a ; 0xf75c8 logo.c:313
+ jmp short 075d0h ; eb 03 ; 0xf75cb logo.c:314
+ mov ax, 00a1fh ; b8 1f 0a ; 0xf75cd logo.c:315
+ push ax ; 50 ; 0xf75d0
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf75d1
+ push ax ; 50 ; 0xf75d4
+ call 0190fh ; e8 37 a3 ; 0xf75d5
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75d8
+ mov al, bl ; 88 d8 ; 0xf75db logo.c:317
+ xor ah, ah ; 30 e4 ; 0xf75dd
+ cwd ; 99 ; 0xf75df
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf75e0
+ idiv bx ; f7 fb ; 0xf75e3
+ test dx, dx ; 85 d2 ; 0xf75e5
+ je short 075eeh ; 74 05 ; 0xf75e7
+ mov ax, 00a28h ; b8 28 0a ; 0xf75e9 logo.c:318
+ jmp short 075f1h ; eb 03 ; 0xf75ec logo.c:319
+ mov ax, 00a2eh ; b8 2e 0a ; 0xf75ee logo.c:320
+ push ax ; 50 ; 0xf75f1
+ push bx ; 53 ; 0xf75f2
+ call 0190fh ; e8 19 a3 ; 0xf75f3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf75f6
+ db 0feh, 0c1h
+ ; inc cl ; fe c1 ; 0xf75f9 logo.c:322
+ jmp near 07501h ; e9 03 ff ; 0xf75fb
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf75fe logo.c:324
+ jne short 0761ch ; 75 18 ; 0xf7602
+ test ch, ch ; 84 ed ; 0xf7604
+ jne short 0761ch ; 75 14 ; 0xf7606
+ cmp byte [bp-00ah], 000h ; 80 7e f6 00 ; 0xf7608
+ jne short 0761ch ; 75 0e ; 0xf760c
+ mov ax, 00a35h ; b8 35 0a ; 0xf760e logo.c:327
+ push ax ; 50 ; 0xf7611
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7612
+ push ax ; 50 ; 0xf7615
+ call 0190fh ; e8 f6 a2 ; 0xf7616
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7619
+ mov ax, 00a49h ; b8 49 0a ; 0xf761c logo.c:329
+ push ax ; 50 ; 0xf761f
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf7620
+ push ax ; 50 ; 0xf7623
+ call 0190fh ; e8 e8 a2 ; 0xf7624
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7627
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf762a logo.c:330
+ pop si ; 5e ; 0xf762d
+ pop dx ; 5a ; 0xf762e
+ pop cx ; 59 ; 0xf762f
+ pop bx ; 5b ; 0xf7630
+ pop bp ; 5d ; 0xf7631
+ retn ; c3 ; 0xf7632
+ ; disGetNextSymbol 0xf7633 LB 0x2915 -> off=0x0 cb=0000000000000024 uValue=00000000000f6033 'get_boot_drive'
+get_boot_drive: ; 0xf7633 LB 0x24
+ push bx ; 53 ; 0xf7633 logo.c:332
+ push dx ; 52 ; 0xf7634
+ push bp ; 55 ; 0xf7635
+ mov bp, sp ; 89 e5 ; 0xf7636
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7638 logo.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf763b
+ mov es, dx ; 8e c2 ; 0xf763e
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7640
+ mov bx, 00304h ; bb 04 03 ; 0xf7643 logo.c:38
+ mov es, dx ; 8e c2 ; 0xf7646
+ mov dl, byte [es:bx] ; 26 8a 17 ; 0xf7648
+ sub AL, strict byte 002h ; 2c 02 ; 0xf764b logo.c:340
+ cmp al, dl ; 38 d0 ; 0xf764d logo.c:342
+ jc short 07653h ; 72 02 ; 0xf764f
+ mov AL, strict byte 0ffh ; b0 ff ; 0xf7651 logo.c:343
+ pop bp ; 5d ; 0xf7653 logo.c:347
+ pop dx ; 5a ; 0xf7654
+ pop bx ; 5b ; 0xf7655
+ retn ; c3 ; 0xf7656
+ ; disGetNextSymbol 0xf7657 LB 0x28f1 -> off=0x0 cb=000000000000025c uValue=00000000000f6057 'show_logo'
+show_logo: ; 0xf7657 LB 0x25c
+ push bp ; 55 ; 0xf7657 logo.c:349
+ mov bp, sp ; 89 e5 ; 0xf7658
+ push bx ; 53 ; 0xf765a
+ push cx ; 51 ; 0xf765b
+ push dx ; 52 ; 0xf765c
+ push si ; 56 ; 0xf765d
+ push di ; 57 ; 0xf765e
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf765f
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7662 logo.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7665
+ mov es, ax ; 8e c0 ; 0xf7668
+ mov si, word [es:bx] ; 26 8b 37 ; 0xf766a
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf766d logo.c:352
+ xor cx, cx ; 31 c9 ; 0xf7671 logo.c:356
+ mov AL, strict byte 034h ; b0 34 ; 0xf7673 logo.c:363
+ out strict byte 043h, AL ; e6 43 ; 0xf7675
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf7677
+ out strict byte 040h, AL ; e6 40 ; 0xf7679
+ mov AL, strict byte 048h ; b0 48 ; 0xf767b
+ out strict byte 040h, AL ; e6 40 ; 0xf767d
+ mov al, cl ; 88 c8 ; 0xf767f logo.c:366
+ xor ah, ah ; 30 e4 ; 0xf7681
+ call 074c0h ; e8 3a fe ; 0xf7683
+ cmp ax, 066bbh ; 3d bb 66 ; 0xf7686 logo.c:367
+ jne short 0769dh ; 75 12 ; 0xf7689
+ push SS ; 16 ; 0xf768b logo.c:371
+ pop ES ; 07 ; 0xf768c
+ lea di, [bp-018h] ; 8d 7e e8 ; 0xf768d
+ mov ax, 04f03h ; b8 03 4f ; 0xf7690
+ int 010h ; cd 10 ; 0xf7693
+ mov word [es:di], bx ; 26 89 1d ; 0xf7695
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf7698
+ je short 076a0h ; 74 03 ; 0xf769b
+ jmp near 07789h ; e9 e9 00 ; 0xf769d logo.c:372
+ mov al, cl ; 88 c8 ; 0xf76a0 logo.c:375
+ add AL, strict byte 004h ; 04 04 ; 0xf76a2
+ xor ah, ah ; 30 e4 ; 0xf76a4
+ call 074aah ; e8 01 fe ; 0xf76a6
+ mov dl, al ; 88 c2 ; 0xf76a9
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf76ab
+ mov al, cl ; 88 c8 ; 0xf76ae logo.c:376
+ add AL, strict byte 005h ; 04 05 ; 0xf76b0
+ xor ah, ah ; 30 e4 ; 0xf76b2
+ call 074aah ; e8 f3 fd ; 0xf76b4
+ mov ch, al ; 88 c5 ; 0xf76b7
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf76b9
+ mov al, cl ; 88 c8 ; 0xf76bc logo.c:377
+ add AL, strict byte 002h ; 04 02 ; 0xf76be
+ xor ah, ah ; 30 e4 ; 0xf76c0
+ call 074c0h ; e8 fb fd ; 0xf76c2
+ mov bx, ax ; 89 c3 ; 0xf76c5
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf76c7
+ mov al, cl ; 88 c8 ; 0xf76ca logo.c:378
+ add AL, strict byte 006h ; 04 06 ; 0xf76cc
+ xor ah, ah ; 30 e4 ; 0xf76ce
+ call 074aah ; e8 d7 fd ; 0xf76d0
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf76d3
+ test dl, dl ; 84 d2 ; 0xf76d6 logo.c:381
+ jne short 076e2h ; 75 08 ; 0xf76d8
+ test ch, ch ; 84 ed ; 0xf76da
+ jne short 076e2h ; 75 04 ; 0xf76dc
+ test bx, bx ; 85 db ; 0xf76de
+ je short 0769dh ; 74 bb ; 0xf76e0
+ mov BH, strict byte 020h ; b7 20 ; 0xf76e2 logo.c:385
+ mov dx, 001e0h ; ba e0 01 ; 0xf76e4
+ mov cx, 00280h ; b9 80 02 ; 0xf76e7
+ mov ax, 05642h ; b8 42 56 ; 0xf76ea
+ mov BL, strict byte 000h ; b3 00 ; 0xf76ed
+ int 010h ; cd 10 ; 0xf76ef
+ cmp ax, strict word 0004fh ; 3d 4f 00 ; 0xf76f1 logo.c:387
+ je short 076feh ; 74 08 ; 0xf76f4
+ mov bx, 00142h ; bb 42 01 ; 0xf76f6 logo.c:388
+ mov ax, 04f02h ; b8 02 4f ; 0xf76f9
+ int 010h ; cd 10 ; 0xf76fc
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf76fe logo.c:390
+ je short 07729h ; 74 25 ; 0xf7702
+ xor cx, cx ; 31 c9 ; 0xf7704 logo.c:392
+ jmp short 0770eh ; eb 06 ; 0xf7706
+ inc cx ; 41 ; 0xf7708 logo.c:394
+ cmp cx, strict byte 00010h ; 83 f9 10 ; 0xf7709
+ jnbe short 07730h ; 77 22 ; 0xf770c
+ mov ax, cx ; 89 c8 ; 0xf770e
+ or ah, 002h ; 80 cc 02 ; 0xf7710
+ mov dx, 003b8h ; ba b8 03 ; 0xf7713
+ out DX, ax ; ef ; 0xf7716
+ xor dx, dx ; 31 d2 ; 0xf7717
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf7719
+ call 073e2h ; e8 c3 fc ; 0xf771c
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf771f
+ jne short 07708h ; 75 e5 ; 0xf7721
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7723
+ jmp short 07730h ; eb 07 ; 0xf7727
+ mov ax, 00210h ; b8 10 02 ; 0xf7729 logo.c:404
+ mov dx, 003b8h ; ba b8 03 ; 0xf772c
+ out DX, ax ; ef ; 0xf772f
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7730 logo.c:407
+ jne short 0774bh ; 75 15 ; 0xf7734
+ mov CL, strict byte 004h ; b1 04 ; 0xf7736 logo.c:409
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf7738
+ shr ax, CL ; d3 e8 ; 0xf773b
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf773d
+ call 073e2h ; e8 9f fc ; 0xf7740
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7743 logo.c:410
+ jne short 0774bh ; 75 04 ; 0xf7745
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7747 logo.c:411
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf774b logo.c:415
+ je short 0777ch ; 74 2b ; 0xf774f
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf7751
+ jne short 0777ch ; 75 25 ; 0xf7755
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7757 logo.c:417
+ jmp short 07761h ; eb 05 ; 0xf775a
+ dec cx ; 49 ; 0xf775c logo.c:419
+ test cx, cx ; 85 c9 ; 0xf775d
+ jbe short 07789h ; 76 28 ; 0xf775f
+ mov ax, cx ; 89 c8 ; 0xf7761
+ or ah, 002h ; 80 cc 02 ; 0xf7763
+ mov dx, 003b8h ; ba b8 03 ; 0xf7766
+ out DX, ax ; ef ; 0xf7769
+ xor dx, dx ; 31 d2 ; 0xf776a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf776c
+ call 073e2h ; e8 70 fc ; 0xf776f
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf7772
+ jne short 0775ch ; 75 e6 ; 0xf7774
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf7776
+ jmp short 07789h ; eb 0d ; 0xf777a
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf777c logo.c:428
+ jne short 07789h ; 75 07 ; 0xf7780
+ mov ax, 00200h ; b8 00 02 ; 0xf7782 logo.c:429
+ mov dx, 003b8h ; ba b8 03 ; 0xf7785
+ out DX, ax ; ef ; 0xf7788
+ mov bx, 0037dh ; bb 7d 03 ; 0xf7789 logo.c:43
+ mov es, si ; 8e c6 ; 0xf778c
+ mov byte [es:bx], 000h ; 26 c6 07 00 ; 0xf778e
+ mov AL, strict byte 003h ; b0 03 ; 0xf7792 logo.c:437
+ mov AH, strict byte 000h ; b4 00 ; 0xf7794
+ int 010h ; cd 10 ; 0xf7796
+ cmp byte [bp-012h], 000h ; 80 7e ee 00 ; 0xf7798 logo.c:440
+ je short 077b2h ; 74 14 ; 0xf779c
+ cmp byte [bp-014h], 000h ; 80 7e ec 00 ; 0xf779e logo.c:443
+ jne short 077e0h ; 75 3c ; 0xf77a2
+ cmp byte [bp-010h], 000h ; 80 7e f0 00 ; 0xf77a4
+ jne short 077e0h ; 75 36 ; 0xf77a8
+ cmp word [bp-016h], strict byte 00000h ; 83 7e ea 00 ; 0xf77aa
+ je short 077b5h ; 74 05 ; 0xf77ae
+ jmp short 077e0h ; eb 2e ; 0xf77b0
+ jmp near 07896h ; e9 e1 00 ; 0xf77b2
+ cmp byte [bp-012h], 002h ; 80 7e ee 02 ; 0xf77b5 logo.c:445
+ jne short 077c9h ; 75 0e ; 0xf77b9
+ mov ax, 00a4bh ; b8 4b 0a ; 0xf77bb logo.c:446
+ push ax ; 50 ; 0xf77be
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf77bf
+ push ax ; 50 ; 0xf77c2
+ call 0190fh ; e8 49 a1 ; 0xf77c3
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf77c6
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf77c9 logo.c:449
+ jne short 077e0h ; 75 11 ; 0xf77cd
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf77cf logo.c:452
+ mov ax, 000c0h ; b8 c0 00 ; 0xf77d2
+ call 073e2h ; e8 0a fc ; 0xf77d5
+ cmp AL, strict byte 086h ; 3c 86 ; 0xf77d8 logo.c:453
+ jne short 077e0h ; 75 04 ; 0xf77da
+ mov byte [bp-00ch], 001h ; c6 46 f4 01 ; 0xf77dc logo.c:454
+ cmp byte [bp-00ch], 000h ; 80 7e f4 00 ; 0xf77e0 logo.c:459
+ je short 077b2h ; 74 cc ; 0xf77e4
+ mov byte [bp-00eh], 000h ; c6 46 f2 00 ; 0xf77e6 logo.c:461
+ mov ax, 00100h ; b8 00 01 ; 0xf77ea logo.c:464
+ mov cx, 01000h ; b9 00 10 ; 0xf77ed
+ int 010h ; cd 10 ; 0xf77f0
+ mov ax, 00700h ; b8 00 07 ; 0xf77f2
+ mov BH, strict byte 007h ; b7 07 ; 0xf77f5
+ db 033h, 0c9h
+ ; xor cx, cx ; 33 c9 ; 0xf77f7
+ mov dx, 0184fh ; ba 4f 18 ; 0xf77f9
+ int 010h ; cd 10 ; 0xf77fc
+ mov ax, 00200h ; b8 00 02 ; 0xf77fe
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xf7801
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf7803
+ int 010h ; cd 10 ; 0xf7805
+ mov ax, 00a6dh ; b8 6d 0a ; 0xf7807 logo.c:467
+ push ax ; 50 ; 0xf780a
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf780b
+ push ax ; 50 ; 0xf780e
+ call 0190fh ; e8 fd a0 ; 0xf780f
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7812
+ call 074d4h ; e8 bc fc ; 0xf7815 logo.c:468
+ mov ax, 00ab1h ; b8 b1 0a ; 0xf7818 logo.c:469
+ push ax ; 50 ; 0xf781b
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf781c
+ push ax ; 50 ; 0xf781f
+ call 0190fh ; e8 ec a0 ; 0xf7820
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7823
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7826 logo.c:478
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7829
+ call 073e2h ; e8 b3 fb ; 0xf782c
+ mov cl, al ; 88 c1 ; 0xf782f
+ test al, al ; 84 c0 ; 0xf7831 logo.c:479
+ je short 07826h ; 74 f1 ; 0xf7833
+ cmp AL, strict byte 030h ; 3c 30 ; 0xf7835 logo.c:481
+ je short 07885h ; 74 4c ; 0xf7837
+ cmp cl, 002h ; 80 f9 02 ; 0xf7839 logo.c:488
+ jc short 0785eh ; 72 20 ; 0xf783c
+ cmp cl, 009h ; 80 f9 09 ; 0xf783e
+ jnbe short 0785eh ; 77 1b ; 0xf7841
+ mov al, cl ; 88 c8 ; 0xf7843 logo.c:490
+ xor ah, ah ; 30 e4 ; 0xf7845
+ call 07633h ; e8 e9 fd ; 0xf7847
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf784a logo.c:497
+ jne short 07850h ; 75 02 ; 0xf784c
+ jmp short 07826h ; eb d6 ; 0xf784e logo.c:498
+ mov bx, 0037ch ; bb 7c 03 ; 0xf7850 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7853
+ mov byte [es:bx], al ; 26 88 07 ; 0xf7855
+ mov byte [bp-00eh], 002h ; c6 46 f2 02 ; 0xf7858 logo.c:501
+ jmp short 07885h ; eb 27 ; 0xf785c logo.c:502
+ cmp cl, 02eh ; 80 f9 2e ; 0xf785e logo.c:505
+ je short 07873h ; 74 10 ; 0xf7861
+ cmp cl, 026h ; 80 f9 26 ; 0xf7863
+ je short 07879h ; 74 11 ; 0xf7866
+ cmp cl, 021h ; 80 f9 21 ; 0xf7868
+ jne short 0787fh ; 75 12 ; 0xf786b
+ mov byte [bp-00eh], 001h ; c6 46 f2 01 ; 0xf786d logo.c:509
+ jmp short 07885h ; eb 12 ; 0xf7871 logo.c:510
+ mov byte [bp-00eh], 003h ; c6 46 f2 03 ; 0xf7873 logo.c:513
+ jmp short 07885h ; eb 0c ; 0xf7877 logo.c:514
+ mov byte [bp-00eh], 004h ; c6 46 f2 04 ; 0xf7879 logo.c:517
+ jmp short 07885h ; eb 06 ; 0xf787d logo.c:518
+ cmp byte [bp-00eh], 000h ; 80 7e f2 00 ; 0xf787f logo.c:521
+ je short 07826h ; 74 a1 ; 0xf7883
+ mov bx, 0037dh ; bb 7d 03 ; 0xf7885 logo.c:43
+ mov es, si ; 8e c6 ; 0xf7888
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf788a
+ mov byte [es:bx], al ; 26 88 07 ; 0xf788d
+ mov AL, strict byte 003h ; b0 03 ; 0xf7890 logo.c:528
+ mov AH, strict byte 000h ; b4 00 ; 0xf7892
+ int 010h ; cd 10 ; 0xf7894
+ mov AL, strict byte 034h ; b0 34 ; 0xf7896 logo.c:533
+ out strict byte 043h, AL ; e6 43 ; 0xf7898
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf789a
+ out strict byte 040h, AL ; e6 40 ; 0xf789c
+ out strict byte 040h, AL ; e6 40 ; 0xf789e
+ push bp ; 55 ; 0xf78a0
+ push DS ; 1e ; 0xf78a1
+ mov ds, ax ; 8e d8 ; 0xf78a2
+ call 0ede3h ; e8 3c 75 ; 0xf78a4
+ pop DS ; 1f ; 0xf78a7
+ pop bp ; 5d ; 0xf78a8
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf78a9 logo.c:536
+ pop di ; 5f ; 0xf78ac
+ pop si ; 5e ; 0xf78ad
+ pop dx ; 5a ; 0xf78ae
+ pop cx ; 59 ; 0xf78af
+ pop bx ; 5b ; 0xf78b0
+ pop bp ; 5d ; 0xf78b1
+ retn ; c3 ; 0xf78b2
+ ; disGetNextSymbol 0xf78b3 LB 0x2695 -> off=0x0 cb=0000000000000072 uValue=00000000000f62b3 'delay_boot'
+delay_boot: ; 0xf78b3 LB 0x72
+ push bp ; 55 ; 0xf78b3 logo.c:539
+ mov bp, sp ; 89 e5 ; 0xf78b4
+ push bx ; 53 ; 0xf78b6
+ push cx ; 51 ; 0xf78b7
+ push dx ; 52 ; 0xf78b8
+ push si ; 56 ; 0xf78b9
+ push di ; 57 ; 0xf78ba
+ mov bx, ax ; 89 c3 ; 0xf78bb
+ test ax, ax ; 85 c0 ; 0xf78bd logo.c:543
+ je short 0791bh ; 74 5a ; 0xf78bf
+ mov AL, strict byte 034h ; b0 34 ; 0xf78c1 logo.c:547
+ out strict byte 043h, AL ; e6 43 ; 0xf78c3
+ mov AL, strict byte 0d3h ; b0 d3 ; 0xf78c5
+ out strict byte 040h, AL ; e6 40 ; 0xf78c7
+ mov AL, strict byte 048h ; b0 48 ; 0xf78c9
+ out strict byte 040h, AL ; e6 40 ; 0xf78cb
+ push bx ; 53 ; 0xf78cd logo.c:549
+ mov ax, 00afbh ; b8 fb 0a ; 0xf78ce
+ push ax ; 50 ; 0xf78d1
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf78d2
+ push ax ; 50 ; 0xf78d5
+ call 0190fh ; e8 36 a0 ; 0xf78d6
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf78d9
+ test bx, bx ; 85 db ; 0xf78dc logo.c:550
+ jbe short 078fah ; 76 1a ; 0xf78de
+ push bx ; 53 ; 0xf78e0 logo.c:552
+ mov ax, 00b19h ; b8 19 0b ; 0xf78e1
+ push ax ; 50 ; 0xf78e4
+ mov ax, strict word 00002h ; b8 02 00 ; 0xf78e5
+ push ax ; 50 ; 0xf78e8
+ call 0190fh ; e8 23 a0 ; 0xf78e9
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf78ec
+ xor dx, dx ; 31 d2 ; 0xf78ef logo.c:553
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf78f1
+ call 073e2h ; e8 eb fa ; 0xf78f4
+ dec bx ; 4b ; 0xf78f7 logo.c:554
+ jmp short 078dch ; eb e2 ; 0xf78f8
+ mov bx, 00a49h ; bb 49 0a ; 0xf78fa logo.c:555
+ push bx ; 53 ; 0xf78fd
+ mov bx, strict word 00002h ; bb 02 00 ; 0xf78fe
+ push bx ; 53 ; 0xf7901
+ call 0190fh ; e8 0a a0 ; 0xf7902
+ add sp, strict byte 00004h ; 83 c4 04 ; 0xf7905
+ mov AL, strict byte 034h ; b0 34 ; 0xf7908 logo.c:557
+ out strict byte 043h, AL ; e6 43 ; 0xf790a
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf790c
+ out strict byte 040h, AL ; e6 40 ; 0xf790e
+ out strict byte 040h, AL ; e6 40 ; 0xf7910
+ push bp ; 55 ; 0xf7912
+ push DS ; 1e ; 0xf7913
+ mov ds, ax ; 8e d8 ; 0xf7914
+ call 0ede3h ; e8 ca 74 ; 0xf7916
+ pop DS ; 1f ; 0xf7919
+ pop bp ; 5d ; 0xf791a
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf791b logo.c:558
+ pop di ; 5f ; 0xf791e
+ pop si ; 5e ; 0xf791f
+ pop dx ; 5a ; 0xf7920
+ pop cx ; 59 ; 0xf7921
+ pop bx ; 5b ; 0xf7922
+ pop bp ; 5d ; 0xf7923
+ retn ; c3 ; 0xf7924
+ ; disGetNextSymbol 0xf7925 LB 0x2623 -> off=0x0 cb=00000000000000d5 uValue=00000000000f6325 'scsi_cmd_data_in'
+scsi_cmd_data_in: ; 0xf7925 LB 0xd5
+ push bp ; 55 ; 0xf7925 scsi.c:99
+ mov bp, sp ; 89 e5 ; 0xf7926
+ push si ; 56 ; 0xf7928
+ push di ; 57 ; 0xf7929
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf792a
+ mov si, ax ; 89 c6 ; 0xf792d
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf792f
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7932
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7935
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7938
+ mov dx, si ; 89 f2 ; 0xf793b scsi.c:107
+ in AL, DX ; ec ; 0xf793d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf793e
+ test AL, strict byte 001h ; a8 01 ; 0xf7940 scsi.c:108
+ jne short 0793bh ; 75 f7 ; 0xf7942
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7944 scsi.c:110
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf7947
+ jne short 0794fh ; 75 04 ; 0xf7949
+ xor ax, ax ; 31 c0 ; 0xf794b
+ jmp short 07951h ; eb 02 ; 0xf794d
+ xor ah, ah ; 30 e4 ; 0xf794f
+ mov di, ax ; 89 c7 ; 0xf7951
+ mov ax, bx ; 89 d8 ; 0xf7953
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7955
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7958
+ shr dx, 1 ; d1 ea ; 0xf795b
+ rcr ax, 1 ; d1 d8 ; 0xf795d
+ loop 0795bh ; e2 fa ; 0xf795f
+ mov cx, ax ; 89 c1 ; 0xf7961
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7963
+ or cx, di ; 09 f9 ; 0xf7967
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7969 scsi.c:111
+ mov dx, si ; 89 f2 ; 0xf796c
+ out DX, AL ; ee ; 0xf796e
+ xor al, al ; 30 c0 ; 0xf796f scsi.c:112
+ out DX, AL ; ee ; 0xf7971
+ mov al, cl ; 88 c8 ; 0xf7972 scsi.c:113
+ out DX, AL ; ee ; 0xf7974
+ mov al, bl ; 88 d8 ; 0xf7975 scsi.c:114
+ out DX, AL ; ee ; 0xf7977
+ mov ax, bx ; 89 d8 ; 0xf7978 scsi.c:115
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf797a
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf797d
+ shr dx, 1 ; d1 ea ; 0xf7980
+ rcr ax, 1 ; d1 d8 ; 0xf7982
+ loop 07980h ; e2 fa ; 0xf7984
+ mov dx, si ; 89 f2 ; 0xf7986
+ out DX, AL ; ee ; 0xf7988
+ xor cx, cx ; 31 c9 ; 0xf7989 scsi.c:116
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf798b
+ xor ah, ah ; 30 e4 ; 0xf798e
+ cmp cx, ax ; 39 c1 ; 0xf7990
+ jnc short 079a2h ; 73 0e ; 0xf7992
+ les di, [bp-00ah] ; c4 7e f6 ; 0xf7994 scsi.c:117
+ add di, cx ; 01 cf ; 0xf7997
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7999
+ mov dx, si ; 89 f2 ; 0xf799c
+ out DX, AL ; ee ; 0xf799e
+ inc cx ; 41 ; 0xf799f
+ jmp short 0798bh ; eb e9 ; 0xf79a0
+ mov dx, si ; 89 f2 ; 0xf79a2 scsi.c:121
+ in AL, DX ; ec ; 0xf79a4
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf79a5
+ test AL, strict byte 001h ; a8 01 ; 0xf79a7 scsi.c:122
+ jne short 079a2h ; 75 f7 ; 0xf79a9
+ test AL, strict byte 002h ; a8 02 ; 0xf79ab scsi.c:125
+ je short 079bdh ; 74 0e ; 0xf79ad
+ lea dx, [si+003h] ; 8d 54 03 ; 0xf79af scsi.c:126
+ xor al, al ; 30 c0 ; 0xf79b2
+ out DX, AL ; ee ; 0xf79b4
+ in AL, DX ; ec ; 0xf79b5 scsi.c:128
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf79b6
+ mov di, strict word 00004h ; bf 04 00 ; 0xf79b8 scsi.c:130
+ jmp short 079efh ; eb 32 ; 0xf79bb
+ lea dx, [si+001h] ; 8d 54 01 ; 0xf79bd scsi.c:136
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf79c0
+ jne short 079cch ; 75 06 ; 0xf79c4
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf79c6
+ jbe short 079e6h ; 76 1a ; 0xf79ca
+ mov cx, 08000h ; b9 00 80 ; 0xf79cc scsi.c:138
+ les di, [bp+006h] ; c4 7e 06 ; 0xf79cf
+ rep insb ; f3 6c ; 0xf79d2
+ add bx, 08000h ; 81 c3 00 80 ; 0xf79d4 scsi.c:139
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf79d8
+ mov ax, es ; 8c c0 ; 0xf79dc
+ add ax, 00800h ; 05 00 08 ; 0xf79de
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf79e1
+ jmp short 079bdh ; eb d7 ; 0xf79e4 scsi.c:141
+ mov cx, bx ; 89 d9 ; 0xf79e6 scsi.c:144
+ les di, [bp+006h] ; c4 7e 06 ; 0xf79e8
+ rep insb ; f3 6c ; 0xf79eb
+ xor di, di ; 31 ff ; 0xf79ed scsi.c:146
+ mov ax, di ; 89 f8 ; 0xf79ef scsi.c:147
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf79f1
+ pop di ; 5f ; 0xf79f4
+ pop si ; 5e ; 0xf79f5
+ pop bp ; 5d ; 0xf79f6
+ retn 0000ah ; c2 0a 00 ; 0xf79f7
+ ; disGetNextSymbol 0xf79fa LB 0x254e -> off=0x0 cb=00000000000000d5 uValue=00000000000f63fa 'scsi_cmd_data_out'
+scsi_cmd_data_out: ; 0xf79fa LB 0xd5
+ push bp ; 55 ; 0xf79fa scsi.c:149
+ mov bp, sp ; 89 e5 ; 0xf79fb
+ push si ; 56 ; 0xf79fd
+ push di ; 57 ; 0xf79fe
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf79ff
+ mov di, ax ; 89 c7 ; 0xf7a02
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf7a04
+ mov word [bp-00ah], bx ; 89 5e f6 ; 0xf7a07
+ mov word [bp-008h], cx ; 89 4e f8 ; 0xf7a0a
+ mov bx, word [bp+00ah] ; 8b 5e 0a ; 0xf7a0d
+ mov dx, di ; 89 fa ; 0xf7a10 scsi.c:157
+ in AL, DX ; ec ; 0xf7a12
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7a13
+ test AL, strict byte 001h ; a8 01 ; 0xf7a15 scsi.c:158
+ jne short 07a10h ; 75 f7 ; 0xf7a17
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a19 scsi.c:161
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf7a1c
+ jne short 07a24h ; 75 04 ; 0xf7a1e
+ xor ax, ax ; 31 c0 ; 0xf7a20
+ jmp short 07a26h ; eb 02 ; 0xf7a22
+ xor ah, ah ; 30 e4 ; 0xf7a24
+ mov si, ax ; 89 c6 ; 0xf7a26
+ mov ax, bx ; 89 d8 ; 0xf7a28
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a2a
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7a2d
+ shr dx, 1 ; d1 ea ; 0xf7a30
+ rcr ax, 1 ; d1 d8 ; 0xf7a32
+ loop 07a30h ; e2 fa ; 0xf7a34
+ mov cx, ax ; 89 c1 ; 0xf7a36
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7a38
+ or cx, si ; 09 f1 ; 0xf7a3c
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7a3e scsi.c:162
+ mov dx, di ; 89 fa ; 0xf7a41
+ out DX, AL ; ee ; 0xf7a43
+ mov AL, strict byte 001h ; b0 01 ; 0xf7a44 scsi.c:163
+ out DX, AL ; ee ; 0xf7a46
+ mov al, cl ; 88 c8 ; 0xf7a47 scsi.c:164
+ out DX, AL ; ee ; 0xf7a49
+ mov al, bl ; 88 d8 ; 0xf7a4a scsi.c:165
+ out DX, AL ; ee ; 0xf7a4c
+ mov ax, bx ; 89 d8 ; 0xf7a4d scsi.c:166
+ mov dx, word [bp+00ch] ; 8b 56 0c ; 0xf7a4f
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7a52
+ shr dx, 1 ; d1 ea ; 0xf7a55
+ rcr ax, 1 ; d1 d8 ; 0xf7a57
+ loop 07a55h ; e2 fa ; 0xf7a59
+ mov dx, di ; 89 fa ; 0xf7a5b
+ out DX, AL ; ee ; 0xf7a5d
+ xor cx, cx ; 31 c9 ; 0xf7a5e scsi.c:167
+ mov al, byte [bp+004h] ; 8a 46 04 ; 0xf7a60
+ xor ah, ah ; 30 e4 ; 0xf7a63
+ cmp cx, ax ; 39 c1 ; 0xf7a65
+ jnc short 07a77h ; 73 0e ; 0xf7a67
+ les si, [bp-00ah] ; c4 76 f6 ; 0xf7a69 scsi.c:168
+ add si, cx ; 01 ce ; 0xf7a6c
+ mov al, byte [es:si] ; 26 8a 04 ; 0xf7a6e
+ mov dx, di ; 89 fa ; 0xf7a71
+ out DX, AL ; ee ; 0xf7a73
+ inc cx ; 41 ; 0xf7a74
+ jmp short 07a60h ; eb e9 ; 0xf7a75
+ lea dx, [di+001h] ; 8d 55 01 ; 0xf7a77 scsi.c:173
+ cmp word [bp+00ch], strict byte 00000h ; 83 7e 0c 00 ; 0xf7a7a
+ jne short 07a86h ; 75 06 ; 0xf7a7e
+ cmp bx, 08000h ; 81 fb 00 80 ; 0xf7a80
+ jbe short 07aa1h ; 76 1b ; 0xf7a84
+ mov cx, 08000h ; b9 00 80 ; 0xf7a86 scsi.c:175
+ les si, [bp+006h] ; c4 76 06 ; 0xf7a89
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7a8c
+ add bx, 08000h ; 81 c3 00 80 ; 0xf7a8f scsi.c:176
+ adc word [bp+00ch], strict byte 0ffffh ; 83 56 0c ff ; 0xf7a93
+ mov ax, es ; 8c c0 ; 0xf7a97
+ add ax, 00800h ; 05 00 08 ; 0xf7a99
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf7a9c
+ jmp short 07a77h ; eb d6 ; 0xf7a9f scsi.c:178
+ mov cx, bx ; 89 d9 ; 0xf7aa1 scsi.c:181
+ les si, [bp+006h] ; c4 76 06 ; 0xf7aa3
+ db 0f3h, 026h, 06eh
+ ; rep es outsb ; f3 26 6e ; 0xf7aa6
+ mov dx, di ; 89 fa ; 0xf7aa9 scsi.c:185
+ in AL, DX ; ec ; 0xf7aab
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7aac
+ test AL, strict byte 001h ; a8 01 ; 0xf7aae scsi.c:186
+ jne short 07aa9h ; 75 f7 ; 0xf7ab0
+ test AL, strict byte 002h ; a8 02 ; 0xf7ab2 scsi.c:189
+ je short 07ac4h ; 74 0e ; 0xf7ab4
+ lea dx, [di+003h] ; 8d 55 03 ; 0xf7ab6 scsi.c:190
+ xor al, al ; 30 c0 ; 0xf7ab9
+ out DX, AL ; ee ; 0xf7abb
+ in AL, DX ; ec ; 0xf7abc scsi.c:192
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7abd
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7abf scsi.c:194
+ jmp short 07ac6h ; eb 02 ; 0xf7ac2
+ xor ax, ax ; 31 c0 ; 0xf7ac4 scsi.c:197
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7ac6 scsi.c:198
+ pop di ; 5f ; 0xf7ac9
+ pop si ; 5e ; 0xf7aca
+ pop bp ; 5d ; 0xf7acb
+ retn 0000ah ; c2 0a 00 ; 0xf7acc
+ ; disGetNextSymbol 0xf7acf LB 0x2479 -> off=0x0 cb=00000000000000e9 uValue=00000000000f64cf 'scsi_read_sectors'
+scsi_read_sectors: ; 0xf7acf LB 0xe9
+ push bp ; 55 ; 0xf7acf scsi.c:207
+ mov bp, sp ; 89 e5 ; 0xf7ad0
+ push si ; 56 ; 0xf7ad2
+ push di ; 57 ; 0xf7ad3
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7ad4
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7ad7
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7ada scsi.c:216
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7add
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7ae1
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7ae3
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7ae6 scsi.c:217
+ jbe short 07affh ; 76 15 ; 0xf7ae8
+ xor ah, ah ; 30 e4 ; 0xf7aea scsi.c:218
+ push ax ; 50 ; 0xf7aec
+ mov ax, 00b1eh ; b8 1e 0b ; 0xf7aed
+ push ax ; 50 ; 0xf7af0
+ mov ax, 00b30h ; b8 30 0b ; 0xf7af1
+ push ax ; 50 ; 0xf7af4
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7af5
+ push ax ; 50 ; 0xf7af8
+ call 0190fh ; e8 13 9e ; 0xf7af9
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7afc
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7aff scsi.c:220
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7b02
+ mov word [bp-01ah], 00088h ; c7 46 e6 88 00 ; 0xf7b06 scsi.c:223
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7b0b scsi.c:224
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7b0f
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7b13
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7b17
+ xchg ah, al ; 86 c4 ; 0xf7b1a
+ xchg bh, bl ; 86 df ; 0xf7b1c
+ xchg ch, cl ; 86 cd ; 0xf7b1e
+ xchg dh, dl ; 86 d6 ; 0xf7b20
+ xchg dx, ax ; 92 ; 0xf7b22
+ xchg bx, cx ; 87 cb ; 0xf7b23
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7b25
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7b28
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7b2b
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7b2e
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7b31 scsi.c:225
+ mov ax, di ; 89 f8 ; 0xf7b35 scsi.c:226
+ xor dx, dx ; 31 d2 ; 0xf7b37
+ xchg ah, al ; 86 c4 ; 0xf7b39
+ xchg dh, dl ; 86 d6 ; 0xf7b3b
+ xchg dx, ax ; 92 ; 0xf7b3d
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7b3e
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7b41
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7b44 scsi.c:227
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7b48 scsi.c:230
+ xor ah, ah ; 30 e4 ; 0xf7b4b
+ sal ax, 1 ; d1 e0 ; 0xf7b4d
+ sal ax, 1 ; d1 e0 ; 0xf7b4f
+ mov bx, si ; 89 f3 ; 0xf7b51
+ add bx, ax ; 01 c3 ; 0xf7b53
+ mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7b55
+ mov bl, byte [es:bx+0021eh] ; 26 8a 9f 1e 02 ; 0xf7b5a scsi.c:231
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7b5f scsi.c:236
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7b62
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7b67
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7b6a
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7b6d
+ loop 07b6ah ; e2 f8 ; 0xf7b70
+ push word [bp-008h] ; ff 76 f8 ; 0xf7b72
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7b75
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7b78
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7b7c
+ mov dx, strict word 00010h ; ba 10 00 ; 0xf7b80
+ push dx ; 52 ; 0xf7b83
+ mov dl, bl ; 88 da ; 0xf7b84
+ xor dh, dh ; 30 f6 ; 0xf7b86
+ mov cx, ss ; 8c d1 ; 0xf7b88
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7b8a
+ call 07925h ; e8 95 fd ; 0xf7b8d
+ mov ah, al ; 88 c4 ; 0xf7b90
+ test al, al ; 84 c0 ; 0xf7b92 scsi.c:239
+ jne short 07babh ; 75 15 ; 0xf7b94
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7b96 scsi.c:241
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7b99
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7b9d scsi.c:242
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7ba0
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7ba4
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7ba7
+ mov al, ah ; 88 e0 ; 0xf7bab scsi.c:246
+ xor ah, ah ; 30 e4 ; 0xf7bad
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7baf scsi.c:247
+ pop di ; 5f ; 0xf7bb2
+ pop si ; 5e ; 0xf7bb3
+ pop bp ; 5d ; 0xf7bb4
+ retn 00004h ; c2 04 00 ; 0xf7bb5
+ ; disGetNextSymbol 0xf7bb8 LB 0x2390 -> off=0x0 cb=00000000000000e9 uValue=00000000000f65b8 'scsi_write_sectors'
+scsi_write_sectors: ; 0xf7bb8 LB 0xe9
+ push bp ; 55 ; 0xf7bb8 scsi.c:256
+ mov bp, sp ; 89 e5 ; 0xf7bb9
+ push si ; 56 ; 0xf7bbb
+ push di ; 57 ; 0xf7bbc
+ sub sp, strict byte 00016h ; 83 ec 16 ; 0xf7bbd
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf7bc0
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7bc3 scsi.c:265
+ mov al, byte [es:si+00ch] ; 26 8a 44 0c ; 0xf7bc6
+ sub AL, strict byte 008h ; 2c 08 ; 0xf7bca
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7bcc
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7bcf scsi.c:266
+ jbe short 07be8h ; 76 15 ; 0xf7bd1
+ xor ah, ah ; 30 e4 ; 0xf7bd3 scsi.c:267
+ push ax ; 50 ; 0xf7bd5
+ mov ax, 00b4fh ; b8 4f 0b ; 0xf7bd6
+ push ax ; 50 ; 0xf7bd9
+ mov ax, 00b30h ; b8 30 0b ; 0xf7bda
+ push ax ; 50 ; 0xf7bdd
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7bde
+ push ax ; 50 ; 0xf7be1
+ call 0190fh ; e8 2a 9d ; 0xf7be2
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf7be5
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7be8 scsi.c:269
+ mov di, word [es:si+00eh] ; 26 8b 7c 0e ; 0xf7beb
+ mov word [bp-01ah], 0008ah ; c7 46 e6 8a 00 ; 0xf7bef scsi.c:272
+ mov ax, word [es:si+006h] ; 26 8b 44 06 ; 0xf7bf4 scsi.c:273
+ mov bx, word [es:si+004h] ; 26 8b 5c 04 ; 0xf7bf8
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf7bfc
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf7c00
+ xchg ah, al ; 86 c4 ; 0xf7c03
+ xchg bh, bl ; 86 df ; 0xf7c05
+ xchg ch, cl ; 86 cd ; 0xf7c07
+ xchg dh, dl ; 86 d6 ; 0xf7c09
+ xchg dx, ax ; 92 ; 0xf7c0b
+ xchg bx, cx ; 87 cb ; 0xf7c0c
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf7c0e
+ mov word [bp-014h], bx ; 89 5e ec ; 0xf7c11
+ mov word [bp-016h], cx ; 89 4e ea ; 0xf7c14
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf7c17
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf7c1a scsi.c:274
+ mov ax, di ; 89 f8 ; 0xf7c1e scsi.c:275
+ xor dx, dx ; 31 d2 ; 0xf7c20
+ xchg ah, al ; 86 c4 ; 0xf7c22
+ xchg dh, dl ; 86 d6 ; 0xf7c24
+ xchg dx, ax ; 92 ; 0xf7c26
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7c27
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7c2a
+ mov byte [bp-00bh], 000h ; c6 46 f5 00 ; 0xf7c2d scsi.c:276
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7c31 scsi.c:278
+ xor ah, ah ; 30 e4 ; 0xf7c34
+ sal ax, 1 ; d1 e0 ; 0xf7c36
+ sal ax, 1 ; d1 e0 ; 0xf7c38
+ mov bx, si ; 89 f3 ; 0xf7c3a
+ add bx, ax ; 01 c3 ; 0xf7c3c
+ mov ax, word [es:bx+0021ch] ; 26 8b 87 1c 02 ; 0xf7c3e
+ mov bl, byte [es:bx+0021eh] ; 26 8a 9f 1e 02 ; 0xf7c43 scsi.c:279
+ mov word [bp-00ah], di ; 89 7e f6 ; 0xf7c48 scsi.c:284
+ mov word [bp-008h], strict word 00000h ; c7 46 f8 00 00 ; 0xf7c4b
+ mov cx, strict word 00009h ; b9 09 00 ; 0xf7c50
+ sal word [bp-00ah], 1 ; d1 66 f6 ; 0xf7c53
+ rcl word [bp-008h], 1 ; d1 56 f8 ; 0xf7c56
+ loop 07c53h ; e2 f8 ; 0xf7c59
+ push word [bp-008h] ; ff 76 f8 ; 0xf7c5b
+ push word [bp-00ah] ; ff 76 f6 ; 0xf7c5e
+ push word [es:si+00ah] ; 26 ff 74 0a ; 0xf7c61
+ push word [es:si+008h] ; 26 ff 74 08 ; 0xf7c65
+ mov dx, strict word 00010h ; ba 10 00 ; 0xf7c69
+ push dx ; 52 ; 0xf7c6c
+ mov dl, bl ; 88 da ; 0xf7c6d
+ xor dh, dh ; 30 f6 ; 0xf7c6f
+ mov cx, ss ; 8c d1 ; 0xf7c71
+ lea bx, [bp-01ah] ; 8d 5e e6 ; 0xf7c73
+ call 079fah ; e8 81 fd ; 0xf7c76
+ mov ah, al ; 88 c4 ; 0xf7c79
+ test al, al ; 84 c0 ; 0xf7c7b scsi.c:287
+ jne short 07c94h ; 75 15 ; 0xf7c7d
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf7c7f scsi.c:289
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf7c82
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf7c86 scsi.c:290
+ mov word [es:si+01ah], dx ; 26 89 54 1a ; 0xf7c89
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf7c8d
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf7c90
+ mov al, ah ; 88 e0 ; 0xf7c94 scsi.c:294
+ xor ah, ah ; 30 e4 ; 0xf7c96
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7c98 scsi.c:295
+ pop di ; 5f ; 0xf7c9b
+ pop si ; 5e ; 0xf7c9c
+ pop bp ; 5d ; 0xf7c9d
+ retn 00004h ; c2 04 00 ; 0xf7c9e
+ ; disGetNextSymbol 0xf7ca1 LB 0x22a7 -> off=0x0 cb=0000000000000174 uValue=00000000000f66a1 'scsi_cmd_packet'
+scsi_cmd_packet: ; 0xf7ca1 LB 0x174
+ push bp ; 55 ; 0xf7ca1 scsi.c:315
+ mov bp, sp ; 89 e5 ; 0xf7ca2
+ push si ; 56 ; 0xf7ca4
+ push di ; 57 ; 0xf7ca5
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf7ca6
+ mov byte [bp-008h], dl ; 88 56 f8 ; 0xf7ca9
+ mov word [bp-00ch], bx ; 89 5e f4 ; 0xf7cac
+ mov word [bp-00ah], cx ; 89 4e f6 ; 0xf7caf
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7cb2 scsi.c:48
+ mov dx, strict word 00040h ; ba 40 00 ; 0xf7cb5
+ mov es, dx ; 8e c2 ; 0xf7cb8
+ mov dx, word [es:bx] ; 26 8b 17 ; 0xf7cba
+ mov si, 00122h ; be 22 01 ; 0xf7cbd scsi.c:49
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf7cc0
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf7cc3 scsi.c:326
+ jne short 07cech ; 75 23 ; 0xf7cc7
+ mov bx, 00da0h ; bb a0 0d ; 0xf7cc9 scsi.c:327
+ mov cx, ds ; 8c d9 ; 0xf7ccc
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7cce
+ call 018cch ; e8 f8 9b ; 0xf7cd1
+ mov ax, 00b62h ; b8 62 0b ; 0xf7cd4
+ push ax ; 50 ; 0xf7cd7
+ mov ax, 00b72h ; b8 72 0b ; 0xf7cd8
+ push ax ; 50 ; 0xf7cdb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7cdc
+ push ax ; 50 ; 0xf7cdf
+ call 0190fh ; e8 2c 9c ; 0xf7ce0
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7ce3
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf7ce6 scsi.c:328
+ jmp near 07e0ah ; e9 1e 01 ; 0xf7ce9
+ sub ax, strict word 00008h ; 2d 08 00 ; 0xf7cec scsi.c:332
+ sal ax, 1 ; d1 e0 ; 0xf7cef scsi.c:342
+ sal ax, 1 ; d1 e0 ; 0xf7cf1
+ sub byte [bp-008h], 002h ; 80 6e f8 02 ; 0xf7cf3 scsi.c:340
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7cf7
+ mov di, si ; 89 f7 ; 0xf7cfa
+ add di, ax ; 01 c7 ; 0xf7cfc
+ mov bx, word [es:di+0021ch] ; 26 8b 9d 1c 02 ; 0xf7cfe
+ mov al, byte [es:di+0021eh] ; 26 8a 85 1e 02 ; 0xf7d03 scsi.c:343
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf7d08
+ mov dx, bx ; 89 da ; 0xf7d0b scsi.c:347
+ in AL, DX ; ec ; 0xf7d0d
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d0e
+ test AL, strict byte 001h ; a8 01 ; 0xf7d10 scsi.c:348
+ jne short 07d0bh ; 75 f7 ; 0xf7d12
+ xor ax, ax ; 31 c0 ; 0xf7d14 scsi.c:354
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf7d16
+ add dx, word [bp+004h] ; 03 56 04 ; 0xf7d19
+ mov cx, word [bp+008h] ; 8b 4e 08 ; 0xf7d1c
+ adc cx, ax ; 11 c1 ; 0xf7d1f
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7d21
+ mov ax, word [es:si+020h] ; 26 8b 44 20 ; 0xf7d24
+ xor di, di ; 31 ff ; 0xf7d28
+ add dx, ax ; 01 c2 ; 0xf7d2a
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf7d2c
+ adc di, cx ; 11 cf ; 0xf7d2f
+ mov ax, dx ; 89 d0 ; 0xf7d31 scsi.c:356
+ mov dx, di ; 89 fa ; 0xf7d33
+ mov cx, strict word 0000ch ; b9 0c 00 ; 0xf7d35
+ shr dx, 1 ; d1 ea ; 0xf7d38
+ rcr ax, 1 ; d1 d8 ; 0xf7d3a
+ loop 07d38h ; e2 fa ; 0xf7d3c
+ mov cx, ax ; 89 c1 ; 0xf7d3e
+ and cx, 000f0h ; 81 e1 f0 00 ; 0xf7d40
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7d44
+ xor ah, ah ; 30 e4 ; 0xf7d47
+ or cx, ax ; 09 c1 ; 0xf7d49
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf7d4b scsi.c:357
+ mov dx, bx ; 89 da ; 0xf7d4e
+ out DX, AL ; ee ; 0xf7d50
+ xor al, al ; 30 c0 ; 0xf7d51 scsi.c:358
+ out DX, AL ; ee ; 0xf7d53
+ mov al, cl ; 88 c8 ; 0xf7d54 scsi.c:359
+ out DX, AL ; ee ; 0xf7d56
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf7d57 scsi.c:360
+ out DX, AL ; ee ; 0xf7d5a
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf7d5b scsi.c:361
+ mov dx, di ; 89 fa ; 0xf7d5e
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7d60
+ shr dx, 1 ; d1 ea ; 0xf7d63
+ rcr ax, 1 ; d1 d8 ; 0xf7d65
+ loop 07d63h ; e2 fa ; 0xf7d67
+ mov dx, bx ; 89 da ; 0xf7d69
+ out DX, AL ; ee ; 0xf7d6b
+ xor cx, cx ; 31 c9 ; 0xf7d6c scsi.c:362
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf7d6e
+ xor ah, ah ; 30 e4 ; 0xf7d71
+ cmp cx, ax ; 39 c1 ; 0xf7d73
+ jnc short 07d85h ; 73 0e ; 0xf7d75
+ les di, [bp-00ch] ; c4 7e f4 ; 0xf7d77 scsi.c:363
+ add di, cx ; 01 cf ; 0xf7d7a
+ mov al, byte [es:di] ; 26 8a 05 ; 0xf7d7c
+ mov dx, bx ; 89 da ; 0xf7d7f
+ out DX, AL ; ee ; 0xf7d81
+ inc cx ; 41 ; 0xf7d82
+ jmp short 07d6eh ; eb e9 ; 0xf7d83
+ mov dx, bx ; 89 da ; 0xf7d85 scsi.c:367
+ in AL, DX ; ec ; 0xf7d87
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d88
+ test AL, strict byte 001h ; a8 01 ; 0xf7d8a scsi.c:368
+ jne short 07d85h ; 75 f7 ; 0xf7d8c
+ test AL, strict byte 002h ; a8 02 ; 0xf7d8e scsi.c:371
+ je short 07da0h ; 74 0e ; 0xf7d90
+ lea dx, [bx+003h] ; 8d 57 03 ; 0xf7d92 scsi.c:372
+ xor al, al ; 30 c0 ; 0xf7d95
+ out DX, AL ; ee ; 0xf7d97
+ in AL, DX ; ec ; 0xf7d98 scsi.c:374
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf7d99
+ mov dx, strict word 00003h ; ba 03 00 ; 0xf7d9b scsi.c:376
+ jmp short 07e0ah ; eb 6a ; 0xf7d9e
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf7da0 scsi.c:381
+ test ax, ax ; 85 c0 ; 0xf7da3
+ je short 07dafh ; 74 08 ; 0xf7da5
+ lea dx, [bx+001h] ; 8d 57 01 ; 0xf7da7 scsi.c:382
+ mov cx, ax ; 89 c1 ; 0xf7daa
+ in AL, DX ; ec ; 0xf7dac
+ loop 07dach ; e2 fd ; 0xf7dad
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf7daf scsi.c:384
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7db2
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf7db5
+ mov ax, word [bp+008h] ; 8b 46 08 ; 0xf7db9
+ mov word [es:si+01ch], ax ; 26 89 44 1c ; 0xf7dbc
+ lea ax, [bx+001h] ; 8d 47 01 ; 0xf7dc0 scsi.c:389
+ cmp word [bp+008h], strict byte 00000h ; 83 7e 08 00 ; 0xf7dc3
+ jne short 07dd0h ; 75 07 ; 0xf7dc7
+ cmp word [bp+006h], 08000h ; 81 7e 06 00 80 ; 0xf7dc9
+ jbe short 07dedh ; 76 1d ; 0xf7dce
+ mov dx, ax ; 89 c2 ; 0xf7dd0 scsi.c:391
+ mov cx, 08000h ; b9 00 80 ; 0xf7dd2
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7dd5
+ rep insb ; f3 6c ; 0xf7dd8
+ add word [bp+006h], 08000h ; 81 46 06 00 80 ; 0xf7dda scsi.c:392
+ adc word [bp+008h], strict byte 0ffffh ; 83 56 08 ff ; 0xf7ddf
+ mov ax, es ; 8c c0 ; 0xf7de3
+ add ax, 00800h ; 05 00 08 ; 0xf7de5
+ mov word [bp+00eh], ax ; 89 46 0e ; 0xf7de8
+ jmp short 07dc0h ; eb d3 ; 0xf7deb scsi.c:394
+ mov dx, ax ; 89 c2 ; 0xf7ded scsi.c:397
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf7def
+ les di, [bp+00ch] ; c4 7e 0c ; 0xf7df2
+ rep insb ; f3 6c ; 0xf7df5
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf7df7 scsi.c:399
+ cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00 ; 0xf7dfa
+ je short 07e08h ; 74 07 ; 0xf7dff
+ mov cx, word [es:si+020h] ; 26 8b 4c 20 ; 0xf7e01 scsi.c:400
+ in AL, DX ; ec ; 0xf7e05
+ loop 07e05h ; e2 fd ; 0xf7e06
+ xor dx, dx ; 31 d2 ; 0xf7e08 scsi.c:402
+ mov ax, dx ; 89 d0 ; 0xf7e0a scsi.c:403
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf7e0c
+ pop di ; 5f ; 0xf7e0f
+ pop si ; 5e ; 0xf7e10
+ pop bp ; 5d ; 0xf7e11
+ retn 0000ch ; c2 0c 00 ; 0xf7e12
+ ; disGetNextSymbol 0xf7e15 LB 0x2133 -> off=0x0 cb=00000000000004cc uValue=00000000000f6815 'scsi_enumerate_attached_devices'
+scsi_enumerate_attached_devices: ; 0xf7e15 LB 0x4cc
+ push bp ; 55 ; 0xf7e15 scsi.c:411
+ mov bp, sp ; 89 e5 ; 0xf7e16
+ push bx ; 53 ; 0xf7e18
+ push cx ; 51 ; 0xf7e19
+ push dx ; 52 ; 0xf7e1a
+ push si ; 56 ; 0xf7e1b
+ push di ; 57 ; 0xf7e1c
+ sub sp, 0023eh ; 81 ec 3e 02 ; 0xf7e1d
+ push ax ; 50 ; 0xf7e21
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf7e22 scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf7e25
+ mov es, ax ; 8e c0 ; 0xf7e28
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf7e2a
+ mov di, 00122h ; bf 22 01 ; 0xf7e2d scsi.c:49
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf7e30
+ mov word [bp-016h], strict word 00000h ; c7 46 ea 00 00 ; 0xf7e33 scsi.c:420
+ jmp near 08254h ; e9 19 04 ; 0xf7e38
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf7e3b scsi.c:440
+ jc short 07e42h ; 72 03 ; 0xf7e3d
+ jmp near 082d7h ; e9 95 04 ; 0xf7e3f
+ mov cx, strict word 00010h ; b9 10 00 ; 0xf7e42 scsi.c:455
+ xor bx, bx ; 31 db ; 0xf7e45
+ mov dx, ss ; 8c d2 ; 0xf7e47
+ lea ax, [bp-048h] ; 8d 46 b8 ; 0xf7e49
+ call 09c30h ; e8 e1 1d ; 0xf7e4c
+ mov byte [bp-048h], 09eh ; c6 46 b8 9e ; 0xf7e4f scsi.c:456
+ mov byte [bp-047h], 010h ; c6 46 b9 10 ; 0xf7e53 scsi.c:457
+ mov byte [bp-03bh], 020h ; c6 46 c5 20 ; 0xf7e57 scsi.c:458
+ xor ax, ax ; 31 c0 ; 0xf7e5b scsi.c:460
+ push ax ; 50 ; 0xf7e5d
+ mov ax, strict word 00020h ; b8 20 00 ; 0xf7e5e
+ push ax ; 50 ; 0xf7e61
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf7e62
+ push SS ; 16 ; 0xf7e66
+ push dx ; 52 ; 0xf7e67
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf7e68
+ push ax ; 50 ; 0xf7e6b
+ mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf7e6c
+ xor dh, dh ; 30 f6 ; 0xf7e6f
+ mov cx, ss ; 8c d1 ; 0xf7e71
+ lea bx, [bp-048h] ; 8d 5e b8 ; 0xf7e73
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf7e76
+ call 07925h ; e8 a8 fa ; 0xf7e7a
+ test al, al ; 84 c0 ; 0xf7e7d scsi.c:461
+ je short 07e93h ; 74 12 ; 0xf7e7f
+ mov ax, 00b92h ; b8 92 0b ; 0xf7e81 scsi.c:462
+ push ax ; 50 ; 0xf7e84
+ mov ax, 00bcbh ; b8 cb 0b ; 0xf7e85
+ push ax ; 50 ; 0xf7e88
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf7e89
+ push ax ; 50 ; 0xf7e8c
+ call 0190fh ; e8 7f 9a ; 0xf7e8d
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf7e90
+ mov ax, word [bp-00242h] ; 8b 86 be fd ; 0xf7e93 scsi.c:467
+ mov bx, word [bp-00244h] ; 8b 9e bc fd ; 0xf7e97
+ mov cx, word [bp-00246h] ; 8b 8e ba fd ; 0xf7e9b
+ mov dx, word [bp-00248h] ; 8b 96 b8 fd ; 0xf7e9f
+ xchg ah, al ; 86 c4 ; 0xf7ea3
+ xchg bh, bl ; 86 df ; 0xf7ea5
+ xchg ch, cl ; 86 cd ; 0xf7ea7
+ xchg dh, dl ; 86 d6 ; 0xf7ea9
+ xchg dx, ax ; 92 ; 0xf7eab
+ xchg bx, cx ; 87 cb ; 0xf7eac
+ add dx, strict byte 00001h ; 83 c2 01 ; 0xf7eae
+ mov word [bp-01ah], dx ; 89 56 e6 ; 0xf7eb1
+ adc cx, strict byte 00000h ; 83 d1 00 ; 0xf7eb4
+ mov word [bp-02eh], cx ; 89 4e d2 ; 0xf7eb7
+ adc bx, strict byte 00000h ; 83 d3 00 ; 0xf7eba
+ mov word [bp-018h], bx ; 89 5e e8 ; 0xf7ebd
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf7ec0
+ mov word [bp-02ah], ax ; 89 46 d6 ; 0xf7ec3
+ mov ah, byte [bp-00240h] ; 8a a6 c0 fd ; 0xf7ec6 scsi.c:469
+ xor al, al ; 30 c0 ; 0xf7eca
+ mov dl, byte [bp-0023fh] ; 8a 96 c1 fd ; 0xf7ecc
+ xor dh, dh ; 30 f6 ; 0xf7ed0
+ xor bx, bx ; 31 db ; 0xf7ed2
+ mov si, ax ; 89 c6 ; 0xf7ed4
+ or si, dx ; 09 d6 ; 0xf7ed6
+ mov al, byte [bp-0023eh] ; 8a 86 c2 fd ; 0xf7ed8
+ xor ah, ah ; 30 e4 ; 0xf7edc
+ xor dl, dl ; 30 d2 ; 0xf7ede
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf7ee0
+ sal ax, 1 ; d1 e0 ; 0xf7ee3
+ rcl dx, 1 ; d1 d2 ; 0xf7ee5
+ loop 07ee3h ; e2 fa ; 0xf7ee7
+ or bx, ax ; 09 c3 ; 0xf7ee9
+ or dx, si ; 09 f2 ; 0xf7eeb
+ mov al, byte [bp-0023dh] ; 8a 86 c3 fd ; 0xf7eed
+ xor ah, ah ; 30 e4 ; 0xf7ef1
+ or bx, ax ; 09 c3 ; 0xf7ef3
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf7ef5
+ test dx, dx ; 85 d2 ; 0xf7ef8 scsi.c:475
+ jne short 07f02h ; 75 06 ; 0xf7efa
+ cmp bx, 00200h ; 81 fb 00 02 ; 0xf7efc
+ je short 07f25h ; 74 23 ; 0xf7f00
+ mov bx, 00da0h ; bb a0 0d ; 0xf7f02 scsi.c:478
+ mov cx, ds ; 8c d9 ; 0xf7f05
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7f07
+ call 018cch ; e8 bf 99 ; 0xf7f0a
+ push dx ; 52 ; 0xf7f0d
+ push word [bp-012h] ; ff 76 ee ; 0xf7f0e
+ push word [bp-016h] ; ff 76 ea ; 0xf7f11
+ mov ax, 00beah ; b8 ea 0b ; 0xf7f14
+ push ax ; 50 ; 0xf7f17
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf7f18
+ push ax ; 50 ; 0xf7f1b
+ call 0190fh ; e8 f0 99 ; 0xf7f1c
+ add sp, strict byte 0000ah ; 83 c4 0a ; 0xf7f1f
+ jmp near 08248h ; e9 23 03 ; 0xf7f22 scsi.c:479
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf7f25 scsi.c:483
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf7f28
+ jc short 07f38h ; 72 0c ; 0xf7f2a
+ jbe short 07f40h ; 76 12 ; 0xf7f2c
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf7f2e
+ je short 07f48h ; 74 16 ; 0xf7f30
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf7f32
+ je short 07f44h ; 74 0e ; 0xf7f34
+ jmp short 07f8fh ; eb 57 ; 0xf7f36
+ test al, al ; 84 c0 ; 0xf7f38
+ jne short 07f8fh ; 75 53 ; 0xf7f3a
+ mov BL, strict byte 090h ; b3 90 ; 0xf7f3c scsi.c:486
+ jmp short 07f4ah ; eb 0a ; 0xf7f3e scsi.c:487
+ mov BL, strict byte 098h ; b3 98 ; 0xf7f40 scsi.c:489
+ jmp short 07f4ah ; eb 06 ; 0xf7f42 scsi.c:490
+ mov BL, strict byte 0a0h ; b3 a0 ; 0xf7f44 scsi.c:492
+ jmp short 07f4ah ; eb 02 ; 0xf7f46 scsi.c:493
+ mov BL, strict byte 0a8h ; b3 a8 ; 0xf7f48 scsi.c:495
+ mov cl, bl ; 88 d9 ; 0xf7f4a scsi.c:499
+ add cl, 007h ; 80 c1 07 ; 0xf7f4c
+ xor ch, ch ; 30 ed ; 0xf7f4f
+ mov ax, cx ; 89 c8 ; 0xf7f51
+ call 01652h ; e8 fc 96 ; 0xf7f53
+ test al, al ; 84 c0 ; 0xf7f56
+ je short 07f8fh ; 74 35 ; 0xf7f58
+ mov al, bl ; 88 d8 ; 0xf7f5a scsi.c:504
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf7f5c
+ xor ah, ah ; 30 e4 ; 0xf7f5e
+ call 01652h ; e8 ef 96 ; 0xf7f60
+ mov dh, al ; 88 c6 ; 0xf7f63
+ mov al, bl ; 88 d8 ; 0xf7f65
+ xor ah, ah ; 30 e4 ; 0xf7f67
+ call 01652h ; e8 e6 96 ; 0xf7f69
+ mov ah, dh ; 88 f4 ; 0xf7f6c
+ cwd ; 99 ; 0xf7f6e
+ mov si, ax ; 89 c6 ; 0xf7f6f
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf7f71
+ mov al, bl ; 88 d8 ; 0xf7f74 scsi.c:505
+ add AL, strict byte 002h ; 04 02 ; 0xf7f76
+ xor ah, ah ; 30 e4 ; 0xf7f78
+ call 01652h ; e8 d5 96 ; 0xf7f7a
+ xor ah, ah ; 30 e4 ; 0xf7f7d
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf7f7f
+ mov ax, cx ; 89 c8 ; 0xf7f82 scsi.c:506
+ call 01652h ; e8 cb 96 ; 0xf7f84
+ xor ah, ah ; 30 e4 ; 0xf7f87
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf7f89
+ jmp near 0807ch ; e9 ed 00 ; 0xf7f8c scsi.c:508
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7f8f scsi.c:509
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf7f92
+ mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf7f95
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf7f98
+ mov si, strict word 0000ch ; be 0c 00 ; 0xf7f9b
+ call 09c10h ; e8 6f 1c ; 0xf7f9e
+ mov word [bp-022h], ax ; 89 46 de ; 0xf7fa1
+ mov word [bp-024h], bx ; 89 5e dc ; 0xf7fa4
+ mov word [bp-026h], cx ; 89 4e da ; 0xf7fa7
+ mov word [bp-028h], dx ; 89 56 d8 ; 0xf7faa
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf7fad scsi.c:513
+ test ax, ax ; 85 c0 ; 0xf7fb0
+ jnbe short 07fc9h ; 77 15 ; 0xf7fb2
+ je short 07fb9h ; 74 03 ; 0xf7fb4
+ jmp near 0803ch ; e9 83 00 ; 0xf7fb6
+ cmp word [bp-018h], strict byte 00000h ; 83 7e e8 00 ; 0xf7fb9
+ jnbe short 07fc9h ; 77 0a ; 0xf7fbd
+ jne short 07fb6h ; 75 f5 ; 0xf7fbf
+ cmp word [bp-02eh], strict byte 00040h ; 83 7e d2 40 ; 0xf7fc1
+ jnbe short 07fc9h ; 77 02 ; 0xf7fc5
+ jne short 0803ch ; 75 73 ; 0xf7fc7
+ mov word [bp-01ch], 000ffh ; c7 46 e4 ff 00 ; 0xf7fc9 scsi.c:515
+ mov word [bp-01eh], strict word 0003fh ; c7 46 e2 3f 00 ; 0xf7fce scsi.c:516
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf7fd3 scsi.c:518
+ mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf7fd6
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf7fd9
+ mov si, strict word 00006h ; be 06 00 ; 0xf7fdc
+ call 09c10h ; e8 2e 1c ; 0xf7fdf
+ mov si, word [bp-028h] ; 8b 76 d8 ; 0xf7fe2
+ add si, dx ; 01 d6 ; 0xf7fe5
+ mov word [bp-038h], si ; 89 76 c8 ; 0xf7fe7
+ mov dx, word [bp-026h] ; 8b 56 da ; 0xf7fea
+ adc dx, cx ; 11 ca ; 0xf7fed
+ mov word [bp-036h], dx ; 89 56 ca ; 0xf7fef
+ mov dx, word [bp-024h] ; 8b 56 dc ; 0xf7ff2
+ adc dx, bx ; 11 da ; 0xf7ff5
+ mov word [bp-014h], dx ; 89 56 ec ; 0xf7ff7
+ mov dx, word [bp-022h] ; 8b 56 de ; 0xf7ffa
+ adc dx, ax ; 11 c2 ; 0xf7ffd
+ mov word [bp-02ch], dx ; 89 56 d4 ; 0xf7fff
+ mov ax, dx ; 89 d0 ; 0xf8002 scsi.c:519
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8004
+ mov cx, word [bp-036h] ; 8b 4e ca ; 0xf8007
+ mov dx, si ; 89 f2 ; 0xf800a
+ mov si, strict word 00008h ; be 08 00 ; 0xf800c
+ call 09c10h ; e8 fe 1b ; 0xf800f
+ mov word [bp-030h], bx ; 89 5e d0 ; 0xf8012
+ mov word [bp-032h], cx ; 89 4e ce ; 0xf8015
+ mov word [bp-034h], dx ; 89 56 cc ; 0xf8018
+ mov ax, word [bp-02ch] ; 8b 46 d4 ; 0xf801b
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf801e
+ mov cx, word [bp-036h] ; 8b 4e ca ; 0xf8021
+ mov dx, word [bp-038h] ; 8b 56 c8 ; 0xf8024
+ mov si, strict word 00010h ; be 10 00 ; 0xf8027
+ call 09c10h ; e8 e3 1b ; 0xf802a
+ mov si, word [bp-034h] ; 8b 76 cc ; 0xf802d
+ add si, dx ; 01 d6 ; 0xf8030
+ adc cx, word [bp-032h] ; 13 4e ce ; 0xf8032
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf8035
+ adc ax, bx ; 11 d8 ; 0xf8038
+ jmp short 08079h ; eb 3d ; 0xf803a scsi.c:521
+ test ax, ax ; 85 c0 ; 0xf803c
+ jnbe short 08052h ; 77 12 ; 0xf803e
+ jne short 0805eh ; 75 1c ; 0xf8040
+ cmp word [bp-018h], strict byte 00000h ; 83 7e e8 00 ; 0xf8042
+ jnbe short 08052h ; 77 0a ; 0xf8046
+ jne short 0805eh ; 75 14 ; 0xf8048
+ cmp word [bp-02eh], strict byte 00020h ; 83 7e d2 20 ; 0xf804a
+ jnbe short 08052h ; 77 02 ; 0xf804e
+ jne short 0805eh ; 75 0c ; 0xf8050
+ mov word [bp-01ch], 00080h ; c7 46 e4 80 00 ; 0xf8052 scsi.c:523
+ mov word [bp-01eh], strict word 00020h ; c7 46 e2 20 00 ; 0xf8057 scsi.c:524
+ jmp short 08077h ; eb 19 ; 0xf805c scsi.c:527
+ mov word [bp-01ch], strict word 00040h ; c7 46 e4 40 00 ; 0xf805e scsi.c:529
+ mov word [bp-01eh], strict word 00020h ; c7 46 e2 20 00 ; 0xf8063 scsi.c:530
+ mov bx, word [bp-018h] ; 8b 5e e8 ; 0xf8068 scsi.c:531
+ mov cx, word [bp-02eh] ; 8b 4e d2 ; 0xf806b
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf806e
+ mov si, strict word 0000bh ; be 0b 00 ; 0xf8071
+ call 09c10h ; e8 99 1b ; 0xf8074
+ mov si, dx ; 89 d6 ; 0xf8077
+ mov word [bp-020h], cx ; 89 4e e0 ; 0xf8079
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf807c scsi.c:536
+ add AL, strict byte 008h ; 04 08 ; 0xf807f
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8081
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf8084 scsi.c:538
+ xor ah, ah ; 30 e4 ; 0xf8087
+ sal ax, 1 ; d1 e0 ; 0xf8089
+ sal ax, 1 ; d1 e0 ; 0xf808b
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf808d
+ mov bx, di ; 89 fb ; 0xf8090
+ add bx, ax ; 01 c3 ; 0xf8092
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf8094
+ mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf8098
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf809d scsi.c:539
+ mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf80a0
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf80a5 scsi.c:540
+ xor ah, ah ; 30 e4 ; 0xf80a8
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf80aa
+ imul dx ; f7 ea ; 0xf80ad
+ mov bx, di ; 89 fb ; 0xf80af
+ add bx, ax ; 01 c3 ; 0xf80b1
+ mov word [es:bx+022h], 0ff04h ; 26 c7 47 22 04 ff ; 0xf80b3
+ mov word [es:bx+024h], strict word 00000h ; 26 c7 47 24 00 00 ; 0xf80b9 scsi.c:542
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf80bf scsi.c:544
+ mov word [es:bx+028h], ax ; 26 89 47 28 ; 0xf80c2
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf80c6 scsi.c:545
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf80cb scsi.c:548
+ mov word [es:bx+02ah], ax ; 26 89 47 2a ; 0xf80ce
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf80d2 scsi.c:549
+ mov word [es:bx+02eh], ax ; 26 89 47 2e ; 0xf80d5
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf80d9 scsi.c:550
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf80dc
+ mov ax, word [bp-01eh] ; 8b 46 e2 ; 0xf80e0 scsi.c:551
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf80e3
+ cmp word [bp-020h], strict byte 00000h ; 83 7e e0 00 ; 0xf80e7 scsi.c:553
+ jne short 080f3h ; 75 06 ; 0xf80eb
+ cmp si, 00400h ; 81 fe 00 04 ; 0xf80ed
+ jbe short 08101h ; 76 0e ; 0xf80f1
+ mov word [es:bx+02ch], 00400h ; 26 c7 47 2c 00 04 ; 0xf80f3 scsi.c:554
+ mov word [es:bx+032h], 00400h ; 26 c7 47 32 00 04 ; 0xf80f9 scsi.c:555
+ jmp short 08109h ; eb 08 ; 0xf80ff scsi.c:556
+ mov word [es:bx+02ch], si ; 26 89 77 2c ; 0xf8101 scsi.c:557
+ mov word [es:bx+032h], si ; 26 89 77 32 ; 0xf8105 scsi.c:558
+ mov bx, 00da0h ; bb a0 0d ; 0xf8109 scsi.c:562
+ mov cx, ds ; 8c d9 ; 0xf810c
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf810e
+ call 018cch ; e8 b8 97 ; 0xf8111
+ push word [bp-02ah] ; ff 76 d6 ; 0xf8114
+ push word [bp-018h] ; ff 76 e8 ; 0xf8117
+ push word [bp-02eh] ; ff 76 d2 ; 0xf811a
+ push word [bp-01ah] ; ff 76 e6 ; 0xf811d
+ push word [bp-01eh] ; ff 76 e2 ; 0xf8120
+ push word [bp-01ch] ; ff 76 e4 ; 0xf8123
+ push word [bp-020h] ; ff 76 e0 ; 0xf8126
+ push si ; 56 ; 0xf8129
+ push word [bp-016h] ; ff 76 ea ; 0xf812a
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf812d
+ xor ah, ah ; 30 e4 ; 0xf8130
+ push ax ; 50 ; 0xf8132
+ mov ax, 00c18h ; b8 18 0c ; 0xf8133
+ push ax ; 50 ; 0xf8136
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8137
+ push ax ; 50 ; 0xf813a
+ call 0190fh ; e8 d1 97 ; 0xf813b
+ add sp, strict byte 00018h ; 83 c4 18 ; 0xf813e
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf8141 scsi.c:564
+ xor ah, ah ; 30 e4 ; 0xf8144
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf8146
+ imul dx ; f7 ea ; 0xf8149
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf814b
+ mov bx, di ; 89 fb ; 0xf814e
+ add bx, ax ; 01 c3 ; 0xf8150
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8152
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf8155
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf8159
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf815c
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf8160
+ mov word [es:bx+038h], ax ; 26 89 47 38 ; 0xf8163
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf8167
+ mov word [es:bx+036h], ax ; 26 89 47 36 ; 0xf816a
+ mov al, byte [es:di+001e2h] ; 26 8a 85 e2 01 ; 0xf816e scsi.c:567
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8173 scsi.c:568
+ add ah, 008h ; 80 c4 08 ; 0xf8176
+ mov bl, al ; 88 c3 ; 0xf8179
+ xor bh, bh ; 30 ff ; 0xf817b
+ add bx, di ; 01 fb ; 0xf817d
+ mov byte [es:bx+001e3h], ah ; 26 88 a7 e3 01 ; 0xf817f
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8184 scsi.c:569
+ mov byte [es:di+001e2h], al ; 26 88 85 e2 01 ; 0xf8186 scsi.c:570
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf818b scsi.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf818e
+ mov es, ax ; 8e c0 ; 0xf8191
+ mov al, byte [es:bx] ; 26 8a 07 ; 0xf8193
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8196 scsi.c:574
+ mov byte [es:bx], al ; 26 88 07 ; 0xf8198 scsi.c:43
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf819b scsi.c:577
+ jmp near 0823dh ; e9 9c 00 ; 0xf819e scsi.c:579
+ mov bx, 00da0h ; bb a0 0d ; 0xf81a1 scsi.c:591
+ mov cx, ds ; 8c d9 ; 0xf81a4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf81a6
+ call 018cch ; e8 20 97 ; 0xf81a9
+ push word [bp-016h] ; ff 76 ea ; 0xf81ac
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81af
+ xor ah, ah ; 30 e4 ; 0xf81b2
+ push ax ; 50 ; 0xf81b4
+ mov ax, 00c46h ; b8 46 0c ; 0xf81b5
+ push ax ; 50 ; 0xf81b8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf81b9
+ push ax ; 50 ; 0xf81bc
+ call 0190fh ; e8 4f 97 ; 0xf81bd
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf81c0
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81c3 scsi.c:594
+ add AL, strict byte 008h ; 04 08 ; 0xf81c6
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf81c8
+ test byte [bp-00247h], 080h ; f6 86 b9 fd 80 ; 0xf81cb scsi.c:596
+ je short 081d7h ; 74 05 ; 0xf81d0
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf81d2
+ jmp short 081d9h ; eb 02 ; 0xf81d5
+ xor cx, cx ; 31 c9 ; 0xf81d7
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf81d9 scsi.c:598
+ xor ah, ah ; 30 e4 ; 0xf81dc
+ sal ax, 1 ; d1 e0 ; 0xf81de
+ sal ax, 1 ; d1 e0 ; 0xf81e0
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf81e2
+ mov bx, di ; 89 fb ; 0xf81e5
+ add bx, ax ; 01 c3 ; 0xf81e7
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf81e9
+ mov word [es:bx+0021ch], ax ; 26 89 87 1c 02 ; 0xf81ed
+ mov al, byte [bp-016h] ; 8a 46 ea ; 0xf81f2 scsi.c:599
+ mov byte [es:bx+0021eh], al ; 26 88 87 1e 02 ; 0xf81f5
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf81fa scsi.c:600
+ xor ah, ah ; 30 e4 ; 0xf81fd
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf81ff
+ imul dx ; f7 ea ; 0xf8202
+ mov bx, di ; 89 fb ; 0xf8204
+ add bx, ax ; 01 c3 ; 0xf8206
+ mov word [es:bx+022h], 00504h ; 26 c7 47 22 04 05 ; 0xf8208
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf820e scsi.c:602
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf8212 scsi.c:603
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf8218 scsi.c:604
+ mov al, byte [es:di+001f3h] ; 26 8a 85 f3 01 ; 0xf821d scsi.c:607
+ mov ah, byte [bp-00ch] ; 8a 66 f4 ; 0xf8222 scsi.c:608
+ add ah, 008h ; 80 c4 08 ; 0xf8225
+ mov bl, al ; 88 c3 ; 0xf8228
+ xor bh, bh ; 30 ff ; 0xf822a
+ add bx, di ; 01 fb ; 0xf822c
+ mov byte [es:bx+001f4h], ah ; 26 88 a7 f4 01 ; 0xf822e
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf8233 scsi.c:609
+ mov byte [es:di+001f3h], al ; 26 88 85 f3 01 ; 0xf8235 scsi.c:610
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf823a scsi.c:612
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf823d scsi.c:617
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8240
+ mov byte [es:di+0022ch], al ; 26 88 85 2c 02 ; 0xf8243
+ inc word [bp-016h] ; ff 46 ea ; 0xf8248 scsi.c:618
+ cmp word [bp-016h], strict byte 00010h ; 83 7e ea 10 ; 0xf824b
+ jl short 08254h ; 7c 03 ; 0xf824f
+ jmp near 082d7h ; e9 83 00 ; 0xf8251
+ mov byte [bp-048h], 012h ; c6 46 b8 12 ; 0xf8254
+ xor al, al ; 30 c0 ; 0xf8258
+ mov byte [bp-047h], al ; 88 46 b9 ; 0xf825a
+ mov byte [bp-046h], al ; 88 46 ba ; 0xf825d
+ mov byte [bp-045h], al ; 88 46 bb ; 0xf8260
+ mov byte [bp-044h], 005h ; c6 46 bc 05 ; 0xf8263
+ mov byte [bp-043h], al ; 88 46 bd ; 0xf8267
+ xor ah, ah ; 30 e4 ; 0xf826a
+ push ax ; 50 ; 0xf826c
+ mov ax, strict word 00005h ; b8 05 00 ; 0xf826d
+ push ax ; 50 ; 0xf8270
+ lea dx, [bp-00248h] ; 8d 96 b8 fd ; 0xf8271
+ push SS ; 16 ; 0xf8275
+ push dx ; 52 ; 0xf8276
+ mov ax, strict word 00006h ; b8 06 00 ; 0xf8277
+ push ax ; 50 ; 0xf827a
+ mov dl, byte [bp-016h] ; 8a 56 ea ; 0xf827b
+ xor dh, dh ; 30 f6 ; 0xf827e
+ mov cx, ss ; 8c d1 ; 0xf8280
+ lea bx, [bp-048h] ; 8d 5e b8 ; 0xf8282
+ mov ax, word [bp-0024ah] ; 8b 86 b6 fd ; 0xf8285
+ call 07925h ; e8 99 f6 ; 0xf8289
+ test al, al ; 84 c0 ; 0xf828c
+ je short 082a2h ; 74 12 ; 0xf828e
+ mov ax, 00b92h ; b8 92 0b ; 0xf8290
+ push ax ; 50 ; 0xf8293
+ mov ax, 00bb2h ; b8 b2 0b ; 0xf8294
+ push ax ; 50 ; 0xf8297
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf8298
+ push ax ; 50 ; 0xf829b
+ call 0190fh ; e8 70 96 ; 0xf829c
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf829f
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf82a2
+ mov al, byte [es:di+0022ch] ; 26 8a 85 2c 02 ; 0xf82a5
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf82aa
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf82ad
+ jne short 082beh ; 75 0a ; 0xf82b2
+ test byte [bp-00248h], 01fh ; f6 86 b8 fd 1f ; 0xf82b4
+ jne short 082beh ; 75 03 ; 0xf82b9
+ jmp near 07e3bh ; e9 7d fb ; 0xf82bb
+ test byte [bp-00248h], 0e0h ; f6 86 b8 fd e0 ; 0xf82be
+ je short 082c8h ; 74 03 ; 0xf82c3
+ jmp near 0823dh ; e9 75 ff ; 0xf82c5
+ mov al, byte [bp-00248h] ; 8a 86 b8 fd ; 0xf82c8
+ and AL, strict byte 01fh ; 24 1f ; 0xf82cc
+ cmp AL, strict byte 005h ; 3c 05 ; 0xf82ce
+ jne short 082d5h ; 75 03 ; 0xf82d0
+ jmp near 081a1h ; e9 cc fe ; 0xf82d2
+ jmp short 082c5h ; eb ee ; 0xf82d5
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf82d7 scsi.c:619
+ pop di ; 5f ; 0xf82da
+ pop si ; 5e ; 0xf82db
+ pop dx ; 5a ; 0xf82dc
+ pop cx ; 59 ; 0xf82dd
+ pop bx ; 5b ; 0xf82de
+ pop bp ; 5d ; 0xf82df
+ retn ; c3 ; 0xf82e0
+ ; disGetNextSymbol 0xf82e1 LB 0x1c67 -> off=0x0 cb=000000000000002b uValue=00000000000f6ce1 'scsi_pci_init'
+scsi_pci_init: ; 0xf82e1 LB 0x2b
+ push bp ; 55 ; 0xf82e1 scsi.c:621
+ mov bp, sp ; 89 e5 ; 0xf82e2
+ push bx ; 53 ; 0xf82e4
+ push cx ; 51 ; 0xf82e5
+ push si ; 56 ; 0xf82e6
+ call 09a10h ; e8 26 17 ; 0xf82e7 scsi.c:625
+ mov dx, ax ; 89 c2 ; 0xf82ea
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf82ec scsi.c:626
+ je short 08304h ; 74 13 ; 0xf82ef
+ mov al, dl ; 88 d0 ; 0xf82f1 scsi.c:633
+ xor ah, ah ; 30 e4 ; 0xf82f3
+ mov si, ax ; 89 c6 ; 0xf82f5
+ mov al, dh ; 88 f0 ; 0xf82f7
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf82f9
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf82fc
+ mov dx, si ; 89 f2 ; 0xf82ff
+ call 09abeh ; e8 ba 17 ; 0xf8301
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8304 scsi.c:634
+ pop si ; 5e ; 0xf8307
+ pop cx ; 59 ; 0xf8308
+ pop bx ; 5b ; 0xf8309
+ pop bp ; 5d ; 0xf830a
+ retn ; c3 ; 0xf830b
+ ; disGetNextSymbol 0xf830c LB 0x1c3c -> off=0x0 cb=0000000000000081 uValue=00000000000f6d0c 'scsi_init'
+scsi_init: ; 0xf830c LB 0x81
+ push bp ; 55 ; 0xf830c scsi.c:639
+ mov bp, sp ; 89 e5 ; 0xf830d
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf830f scsi.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8312
+ mov es, ax ; 8e c0 ; 0xf8315
+ mov es, [es:bx] ; 26 8e 07 ; 0xf8317
+ mov bx, 00122h ; bb 22 01 ; 0xf831a scsi.c:49
+ mov byte [es:bx+0022ch], 000h ; 26 c6 87 2c 02 00 ; 0xf831d scsi.c:646
+ mov AL, strict byte 055h ; b0 55 ; 0xf8323 scsi.c:651
+ mov dx, 00432h ; ba 32 04 ; 0xf8325
+ out DX, AL ; ee ; 0xf8328
+ in AL, DX ; ec ; 0xf8329 scsi.c:652
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf832a
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf832c scsi.c:654
+ jne short 08345h ; 75 15 ; 0xf832e
+ xor al, al ; 30 c0 ; 0xf8330 scsi.c:658
+ mov dx, 00433h ; ba 33 04 ; 0xf8332
+ out DX, AL ; ee ; 0xf8335
+ mov ax, 00430h ; b8 30 04 ; 0xf8336 scsi.c:659
+ call 07e15h ; e8 d9 fa ; 0xf8339
+ mov dx, 01040h ; ba 40 10 ; 0xf833c scsi.c:660
+ mov ax, 0104bh ; b8 4b 10 ; 0xf833f
+ call 082e1h ; e8 9c ff ; 0xf8342
+ mov AL, strict byte 055h ; b0 55 ; 0xf8345 scsi.c:668
+ mov dx, 00436h ; ba 36 04 ; 0xf8347
+ out DX, AL ; ee ; 0xf834a
+ in AL, DX ; ec ; 0xf834b scsi.c:669
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf834c
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf834e scsi.c:671
+ jne short 08367h ; 75 15 ; 0xf8350
+ xor al, al ; 30 c0 ; 0xf8352 scsi.c:675
+ mov dx, 00437h ; ba 37 04 ; 0xf8354
+ out DX, AL ; ee ; 0xf8357
+ mov ax, 00434h ; b8 34 04 ; 0xf8358 scsi.c:676
+ call 07e15h ; e8 b7 fa ; 0xf835b
+ mov dx, strict word 00030h ; ba 30 00 ; 0xf835e scsi.c:677
+ mov ax, 01000h ; b8 00 10 ; 0xf8361
+ call 082e1h ; e8 7a ff ; 0xf8364
+ mov AL, strict byte 055h ; b0 55 ; 0xf8367 scsi.c:685
+ mov dx, 0043ah ; ba 3a 04 ; 0xf8369
+ out DX, AL ; ee ; 0xf836c
+ in AL, DX ; ec ; 0xf836d scsi.c:686
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf836e
+ cmp AL, strict byte 055h ; 3c 55 ; 0xf8370 scsi.c:688
+ jne short 08389h ; 75 15 ; 0xf8372
+ xor al, al ; 30 c0 ; 0xf8374 scsi.c:692
+ mov dx, 0043bh ; ba 3b 04 ; 0xf8376
+ out DX, AL ; ee ; 0xf8379
+ mov ax, 00438h ; b8 38 04 ; 0xf837a scsi.c:693
+ call 07e15h ; e8 95 fa ; 0xf837d
+ mov dx, strict word 00054h ; ba 54 00 ; 0xf8380 scsi.c:694
+ mov ax, 01000h ; b8 00 10 ; 0xf8383
+ call 082e1h ; e8 58 ff ; 0xf8386
+ mov sp, bp ; 89 ec ; 0xf8389 scsi.c:700
+ pop bp ; 5d ; 0xf838b
+ retn ; c3 ; 0xf838c
+ ; disGetNextSymbol 0xf838d LB 0x1bbb -> off=0x0 cb=000000000000001c uValue=00000000000f6d8d 'ahci_ctrl_extract_bits'
+ahci_ctrl_extract_bits: ; 0xf838d LB 0x1c
+ push si ; 56 ; 0xf838d ahci.c:279
+ push bp ; 55 ; 0xf838e
+ mov bp, sp ; 89 e5 ; 0xf838f
+ mov si, ax ; 89 c6 ; 0xf8391
+ and ax, bx ; 21 d8 ; 0xf8393 ahci.c:281
+ and dx, cx ; 21 ca ; 0xf8395
+ mov cl, byte [bp+006h] ; 8a 4e 06 ; 0xf8397
+ xor ch, ch ; 30 ed ; 0xf839a
+ jcxz 083a4h ; e3 06 ; 0xf839c
+ shr dx, 1 ; d1 ea ; 0xf839e
+ rcr ax, 1 ; d1 d8 ; 0xf83a0
+ loop 0839eh ; e2 fa ; 0xf83a2
+ pop bp ; 5d ; 0xf83a4 ahci.c:282
+ pop si ; 5e ; 0xf83a5
+ retn 00002h ; c2 02 00 ; 0xf83a6
+ ; disGetNextSymbol 0xf83a9 LB 0x1b9f -> off=0x0 cb=000000000000001e uValue=00000000000f6da9 'ahci_addr_to_phys'
+ahci_addr_to_phys: ; 0xf83a9 LB 0x1e
+ push bx ; 53 ; 0xf83a9 ahci.c:287
+ push cx ; 51 ; 0xf83aa
+ push bp ; 55 ; 0xf83ab
+ mov bp, sp ; 89 e5 ; 0xf83ac
+ mov bx, ax ; 89 c3 ; 0xf83ae
+ mov ax, dx ; 89 d0 ; 0xf83b0
+ xor dx, dx ; 31 d2 ; 0xf83b2 ahci.c:289
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf83b4
+ sal ax, 1 ; d1 e0 ; 0xf83b7
+ rcl dx, 1 ; d1 d2 ; 0xf83b9
+ loop 083b7h ; e2 fa ; 0xf83bb
+ xor cx, cx ; 31 c9 ; 0xf83bd
+ add ax, bx ; 01 d8 ; 0xf83bf
+ adc dx, cx ; 11 ca ; 0xf83c1
+ pop bp ; 5d ; 0xf83c3 ahci.c:290
+ pop cx ; 59 ; 0xf83c4
+ pop bx ; 5b ; 0xf83c5
+ retn ; c3 ; 0xf83c6
+ ; disGetNextSymbol 0xf83c7 LB 0x1b81 -> off=0x0 cb=0000000000000159 uValue=00000000000f6dc7 'ahci_port_cmd_sync'
+ahci_port_cmd_sync: ; 0xf83c7 LB 0x159
+ push bp ; 55 ; 0xf83c7 ahci.c:295
+ mov bp, sp ; 89 e5 ; 0xf83c8
+ push cx ; 51 ; 0xf83ca
+ push si ; 56 ; 0xf83cb
+ push di ; 57 ; 0xf83cc
+ push ax ; 50 ; 0xf83cd
+ mov si, ax ; 89 c6 ; 0xf83ce
+ mov cx, dx ; 89 d1 ; 0xf83d0
+ mov dl, bl ; 88 da ; 0xf83d2
+ mov es, cx ; 8e c1 ; 0xf83d4 ahci.c:300
+ mov al, byte [es:si+00262h] ; 26 8a 84 62 02 ; 0xf83d6
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf83db
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf83de ahci.c:301
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf83e3 ahci.c:303
+ jne short 083eah ; 75 03 ; 0xf83e5
+ jmp near 08518h ; e9 2e 01 ; 0xf83e7
+ mov al, byte [es:si+00263h] ; 26 8a 84 63 02 ; 0xf83ea ahci.c:306
+ xor ah, ah ; 30 e4 ; 0xf83ef
+ xor di, di ; 31 ff ; 0xf83f1
+ or di, 00080h ; 81 cf 80 00 ; 0xf83f3
+ xor dh, dh ; 30 f6 ; 0xf83f7
+ or di, dx ; 09 d7 ; 0xf83f9
+ mov word [es:si], di ; 26 89 3c ; 0xf83fb
+ mov word [es:si+002h], ax ; 26 89 44 02 ; 0xf83fe
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8402 ahci.c:307
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8408
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf840e ahci.c:308
+ mov dx, cx ; 89 ca ; 0xf8412
+ call 083a9h ; e8 92 ff ; 0xf8414
+ mov es, cx ; 8e c1 ; 0xf8417
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8419
+ mov word [es:si+00ah], dx ; 26 89 54 0a ; 0xf841d
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8421 ahci.c:311
+ xor ah, ah ; 30 e4 ; 0xf8424
+ mov CL, strict byte 007h ; b1 07 ; 0xf8426
+ mov di, ax ; 89 c7 ; 0xf8428
+ sal di, CL ; d3 e7 ; 0xf842a
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf842c
+ xor cx, cx ; 31 c9 ; 0xf8430 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf8432
+ xchg cx, ax ; 91 ; 0xf8434
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8435
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8439
+ out DX, eax ; 66 ef ; 0xf843b
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf843d ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf8440
+ in eax, DX ; 66 ed ; 0xf8442
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8444
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8446
+ xchg dx, ax ; 92 ; 0xf844a
+ or AL, strict byte 011h ; 0c 11 ; 0xf844b
+ mov cx, dx ; 89 d1 ; 0xf844d
+ mov dx, si ; 89 f2 ; 0xf844f
+ xchg cx, ax ; 91 ; 0xf8451
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8452
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8456
+ out DX, eax ; 66 ef ; 0xf8458
+ lea ax, [di+00138h] ; 8d 85 38 01 ; 0xf845a ahci.c:315
+ cwd ; 99 ; 0xf845e
+ mov cx, dx ; 89 d1 ; 0xf845f
+ mov dx, bx ; 89 da ; 0xf8461
+ xchg cx, ax ; 91 ; 0xf8463
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8464
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8468
+ out DX, eax ; 66 ef ; 0xf846a
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf846c
+ xor cx, cx ; 31 c9 ; 0xf846f
+ mov dx, si ; 89 f2 ; 0xf8471
+ xchg cx, ax ; 91 ; 0xf8473
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8474
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8478
+ out DX, eax ; 66 ef ; 0xf847a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf847c ahci.c:319
+ xor ah, ah ; 30 e4 ; 0xf847f
+ mov CL, strict byte 007h ; b1 07 ; 0xf8481
+ sal ax, CL ; d3 e0 ; 0xf8483
+ add ax, 00110h ; 05 10 01 ; 0xf8485
+ xor cx, cx ; 31 c9 ; 0xf8488 ahci.c:271
+ mov dx, bx ; 89 da ; 0xf848a
+ xchg cx, ax ; 91 ; 0xf848c
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf848d
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8491
+ out DX, eax ; 66 ef ; 0xf8493
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8495 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf8498
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf849a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf849c
+ xchg dx, ax ; 92 ; 0xf84a0
+ test dh, 040h ; f6 c6 40 ; 0xf84a1
+ jne short 084aah ; 75 04 ; 0xf84a4
+ test AL, strict byte 001h ; a8 01 ; 0xf84a6
+ je short 084aeh ; 74 04 ; 0xf84a8
+ mov AL, strict byte 001h ; b0 01 ; 0xf84aa
+ jmp short 084b0h ; eb 02 ; 0xf84ac
+ xor al, al ; 30 c0 ; 0xf84ae
+ test al, al ; 84 c0 ; 0xf84b0 ahci.c:273
+ je short 0847ch ; 74 c8 ; 0xf84b2
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf84b4 ahci.c:325
+ xor ah, ah ; 30 e4 ; 0xf84b7
+ mov CL, strict byte 007h ; b1 07 ; 0xf84b9
+ mov di, ax ; 89 c7 ; 0xf84bb
+ sal di, CL ; d3 e7 ; 0xf84bd
+ lea ax, [di+00110h] ; 8d 85 10 01 ; 0xf84bf
+ xor cx, cx ; 31 c9 ; 0xf84c3 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf84c5
+ xchg cx, ax ; 91 ; 0xf84c7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84c8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84cc
+ out DX, eax ; 66 ef ; 0xf84ce
+ lea si, [bx+004h] ; 8d 77 04 ; 0xf84d0 ahci.c:253
+ mov dx, si ; 89 f2 ; 0xf84d3
+ in eax, DX ; 66 ed ; 0xf84d5
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf84d7
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf84d9
+ xchg dx, ax ; 92 ; 0xf84dd
+ or AL, strict byte 001h ; 0c 01 ; 0xf84de
+ mov cx, dx ; 89 d1 ; 0xf84e0
+ mov dx, si ; 89 f2 ; 0xf84e2
+ xchg cx, ax ; 91 ; 0xf84e4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84e5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84e9
+ out DX, eax ; 66 ef ; 0xf84eb
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf84ed ahci.c:329
+ xor cx, cx ; 31 c9 ; 0xf84f1 ahci.c:261
+ mov dx, bx ; 89 da ; 0xf84f3
+ xchg cx, ax ; 91 ; 0xf84f5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf84f6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf84fa
+ out DX, eax ; 66 ef ; 0xf84fc
+ mov dx, si ; 89 f2 ; 0xf84fe ahci.c:262
+ in eax, DX ; 66 ed ; 0xf8500
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8502
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8504
+ xchg dx, ax ; 92 ; 0xf8508
+ and AL, strict byte 0feh ; 24 fe ; 0xf8509
+ mov cx, dx ; 89 d1 ; 0xf850b
+ mov dx, si ; 89 f2 ; 0xf850d
+ xchg cx, ax ; 91 ; 0xf850f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8510
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8514
+ out DX, eax ; 66 ef ; 0xf8516
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8518 ahci.c:335
+ pop di ; 5f ; 0xf851b
+ pop si ; 5e ; 0xf851c
+ pop cx ; 59 ; 0xf851d
+ pop bp ; 5d ; 0xf851e
+ retn ; c3 ; 0xf851f
+ ; disGetNextSymbol 0xf8520 LB 0x1a28 -> off=0x0 cb=0000000000000262 uValue=00000000000f6f20 'ahci_cmd_data'
+ahci_cmd_data: ; 0xf8520 LB 0x262
+ push bp ; 55 ; 0xf8520 ahci.c:340
+ mov bp, sp ; 89 e5 ; 0xf8521
+ push cx ; 51 ; 0xf8523
+ push si ; 56 ; 0xf8524
+ push di ; 57 ; 0xf8525
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf8526
+ push ax ; 50 ; 0xf8529
+ push dx ; 52 ; 0xf852a
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf852b
+ xor di, di ; 31 ff ; 0xf852e ahci.c:342
+ mov es, dx ; 8e c2 ; 0xf8530
+ mov bx, ax ; 89 c3 ; 0xf8532
+ mov ax, word [es:bx+00232h] ; 26 8b 87 32 02 ; 0xf8534
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8539
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf853c
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf853f
+ mov ax, word [es:bx+00eh] ; 26 8b 47 0e ; 0xf8542 ahci.c:343
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8546
+ mov ax, word [es:bx+010h] ; 26 8b 47 10 ; 0xf8549 ahci.c:344
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf854d
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf8550 ahci.c:347
+ xor bx, bx ; 31 db ; 0xf8553
+ mov ax, 00080h ; b8 80 00 ; 0xf8555
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8558
+ call 09c30h ; e8 d2 16 ; 0xf855b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf855e ahci.c:350
+ mov word [es:di+00080h], 08027h ; 26 c7 85 80 00 27 80 ; 0xf8561
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8568 ahci.c:352
+ mov byte [es:di+00082h], al ; 26 88 85 82 00 ; 0xf856b
+ mov byte [es:di+00083h], 000h ; 26 c6 85 83 00 00 ; 0xf8570 ahci.c:353
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8576 ahci.c:355
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8579
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf857c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf857f
+ mov byte [es:di+00084h], al ; 26 88 85 84 00 ; 0xf8582
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8587 ahci.c:356
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf858a
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf858e
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8592
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8595
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8599
+ mov si, strict word 00008h ; be 08 00 ; 0xf859c
+ call 09c10h ; e8 6e 16 ; 0xf859f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85a2
+ mov byte [es:di+00085h], dl ; 26 88 95 85 00 ; 0xf85a5
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85aa ahci.c:357
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85ad
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85b0
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85b4
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf85b8
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85bb
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf85bf
+ mov si, strict word 00010h ; be 10 00 ; 0xf85c2
+ call 09c10h ; e8 48 16 ; 0xf85c5
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85c8
+ mov byte [es:di+00086h], dl ; 26 88 95 86 00 ; 0xf85cb
+ mov byte [es:di+00087h], 040h ; 26 c6 85 87 00 40 ; 0xf85d0 ahci.c:358
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85d6 ahci.c:360
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85d9
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf85dc
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf85e0
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf85e4
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf85e7
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf85eb
+ mov si, strict word 00018h ; be 18 00 ; 0xf85ee
+ call 09c10h ; e8 1c 16 ; 0xf85f1
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf85f4
+ mov byte [es:di+00088h], dl ; 26 88 95 88 00 ; 0xf85f7
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf85fc ahci.c:361
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf85ff
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8602
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf8606
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf860a
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf860d
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8611
+ mov si, strict word 00020h ; be 20 00 ; 0xf8614
+ call 09c10h ; e8 f6 15 ; 0xf8617
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf861a
+ mov byte [es:di+00089h], dl ; 26 88 95 89 00 ; 0xf861d
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8622 ahci.c:362
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8625
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8628
+ mov bx, word [es:bx+004h] ; 26 8b 5f 04 ; 0xf862c
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf8630
+ mov cx, word [es:si+002h] ; 26 8b 4c 02 ; 0xf8633
+ mov dx, word [es:si] ; 26 8b 14 ; 0xf8637
+ mov si, strict word 00028h ; be 28 00 ; 0xf863a
+ call 09c10h ; e8 d0 15 ; 0xf863d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8640
+ mov byte [es:di+0008ah], dl ; 26 88 95 8a 00 ; 0xf8643
+ mov byte [es:di+0008bh], 000h ; 26 c6 85 8b 00 00 ; 0xf8648 ahci.c:363
+ mov al, byte [bp-010h] ; 8a 46 f0 ; 0xf864e ahci.c:365
+ mov byte [es:di+0008ch], al ; 26 88 85 8c 00 ; 0xf8651
+ mov al, byte [bp-00fh] ; 8a 46 f1 ; 0xf8656 ahci.c:366
+ mov byte [es:di+0008dh], al ; 26 88 85 8d 00 ; 0xf8659
+ mov word [es:di+00276h], strict word 00010h ; 26 c7 85 76 02 10 00 ; 0xf865e ahci.c:369
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf8665 ahci.c:372
+ xor dx, dx ; 31 d2 ; 0xf8668
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf866a
+ xor cx, cx ; 31 c9 ; 0xf866d
+ call 09bc0h ; e8 4e 15 ; 0xf866f
+ push dx ; 52 ; 0xf8672
+ push ax ; 50 ; 0xf8673
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8674
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8677
+ mov bx, word [es:bx+008h] ; 26 8b 5f 08 ; 0xf867a
+ mov si, word [bp-014h] ; 8b 76 ec ; 0xf867e
+ mov cx, word [es:si+00ah] ; 26 8b 4c 0a ; 0xf8681
+ mov ax, 0026ah ; b8 6a 02 ; 0xf8685
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8688
+ call 09b17h ; e8 89 14 ; 0xf868b
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf868e ahci.c:375
+ mov dx, word [es:di+0027eh] ; 26 8b 95 7e 02 ; 0xf8691
+ add dx, strict byte 0ffffh ; 83 c2 ff ; 0xf8696
+ mov ax, word [es:di+00280h] ; 26 8b 85 80 02 ; 0xf8699
+ adc ax, strict word 0ffffh ; 15 ff ff ; 0xf869e
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86a1
+ xor bh, bh ; 30 ff ; 0xf86a6
+ mov CL, strict byte 004h ; b1 04 ; 0xf86a8
+ sal bx, CL ; d3 e3 ; 0xf86aa
+ mov word [es:bx+0010ch], dx ; 26 89 97 0c 01 ; 0xf86ac
+ mov word [es:bx+0010eh], ax ; 26 89 87 0e 01 ; 0xf86b1
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86b6 ahci.c:376
+ xor bh, bh ; 30 ff ; 0xf86bb
+ sal bx, CL ; d3 e3 ; 0xf86bd
+ mov ax, word [es:di+0027ah] ; 26 8b 85 7a 02 ; 0xf86bf
+ mov dx, word [es:di+0027ch] ; 26 8b 95 7c 02 ; 0xf86c4
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf86c9
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf86ce
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf86d3 ahci.c:377
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf86d8 ahci.c:379
+ mov bx, si ; 89 f3 ; 0xf86db
+ mov ax, word [es:bx+020h] ; 26 8b 47 20 ; 0xf86dd
+ test ax, ax ; 85 c0 ; 0xf86e1
+ je short 0871eh ; 74 39 ; 0xf86e3
+ dec ax ; 48 ; 0xf86e5 ahci.c:380
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf86e6
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86e9
+ xor bh, bh ; 30 ff ; 0xf86ee
+ sal bx, CL ; d3 e3 ; 0xf86f0
+ mov word [es:bx+0010ch], ax ; 26 89 87 0c 01 ; 0xf86f2
+ mov word [es:bx+0010eh], di ; 26 89 bf 0e 01 ; 0xf86f7
+ mov bl, byte [es:di+00263h] ; 26 8a 9d 63 02 ; 0xf86fc ahci.c:381
+ xor bh, bh ; 30 ff ; 0xf8701
+ sal bx, CL ; d3 e3 ; 0xf8703
+ mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf8705
+ mov dx, word [es:di+00266h] ; 26 8b 95 66 02 ; 0xf870a
+ mov word [es:bx+00100h], ax ; 26 89 87 00 01 ; 0xf870f
+ mov word [es:bx+00102h], dx ; 26 89 97 02 01 ; 0xf8714
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8719 ahci.c:382
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf871e ahci.c:397
+ cmp AL, strict byte 035h ; 3c 35 ; 0xf8721
+ jne short 0872bh ; 75 06 ; 0xf8723
+ mov byte [bp-008h], 040h ; c6 46 f8 40 ; 0xf8725 ahci.c:398
+ jmp short 08742h ; eb 17 ; 0xf8729 ahci.c:399
+ cmp AL, strict byte 0a0h ; 3c a0 ; 0xf872b
+ jne short 0873eh ; 75 0f ; 0xf872d
+ or byte [bp-008h], 020h ; 80 4e f8 20 ; 0xf872f ahci.c:400
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8733 ahci.c:401
+ or byte [es:bx+00083h], 001h ; 26 80 8f 83 00 01 ; 0xf8736
+ jmp short 08742h ; eb 04 ; 0xf873c ahci.c:402
+ mov byte [bp-008h], 000h ; c6 46 f8 00 ; 0xf873e ahci.c:403
+ or byte [bp-008h], 005h ; 80 4e f8 05 ; 0xf8742 ahci.c:405
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf8746 ahci.c:407
+ xor bh, bh ; 30 ff ; 0xf8749
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf874b
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf874e
+ call 083c7h ; e8 73 fc ; 0xf8751
+ mov cx, word [bp-00ch] ; 8b 4e f4 ; 0xf8754 ahci.c:410
+ mov bx, word [bp-00eh] ; 8b 5e f2 ; 0xf8757
+ add bx, 00240h ; 81 c3 40 02 ; 0xf875a
+ mov ax, word [bp-00eh] ; 8b 46 f2 ; 0xf875e ahci.c:414
+ add ax, 0026ah ; 05 6a 02 ; 0xf8761
+ mov dx, cx ; 89 ca ; 0xf8764
+ call 09b8eh ; e8 25 14 ; 0xf8766
+ mov es, cx ; 8e c1 ; 0xf8769 ahci.c:415
+ mov al, byte [es:bx+003h] ; 26 8a 47 03 ; 0xf876b
+ test al, al ; 84 c0 ; 0xf876f
+ je short 08778h ; 74 05 ; 0xf8771
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8773
+ jmp short 0877ah ; eb 02 ; 0xf8776
+ xor ah, ah ; 30 e4 ; 0xf8778
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf877a ahci.c:416
+ pop di ; 5f ; 0xf877d
+ pop si ; 5e ; 0xf877e
+ pop cx ; 59 ; 0xf877f
+ pop bp ; 5d ; 0xf8780
+ retn ; c3 ; 0xf8781
+ ; disGetNextSymbol 0xf8782 LB 0x17c6 -> off=0x0 cb=0000000000000183 uValue=00000000000f7182 'ahci_port_deinit_current'
+ahci_port_deinit_current: ; 0xf8782 LB 0x183
+ push bp ; 55 ; 0xf8782 ahci.c:421
+ mov bp, sp ; 89 e5 ; 0xf8783
+ push bx ; 53 ; 0xf8785
+ push cx ; 51 ; 0xf8786
+ push si ; 56 ; 0xf8787
+ push di ; 57 ; 0xf8788
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf8789
+ mov di, ax ; 89 c7 ; 0xf878c
+ mov word [bp-00eh], dx ; 89 56 f2 ; 0xf878e
+ mov es, dx ; 8e c2 ; 0xf8791 ahci.c:426
+ mov si, word [es:di+00260h] ; 26 8b b5 60 02 ; 0xf8793
+ mov al, byte [es:di+00262h] ; 26 8a 85 62 02 ; 0xf8798 ahci.c:427
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf879d
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf87a0 ahci.c:429
+ je short 08805h ; 74 61 ; 0xf87a2
+ xor ah, ah ; 30 e4 ; 0xf87a4 ahci.c:432
+ mov CL, strict byte 007h ; b1 07 ; 0xf87a6
+ sal ax, CL ; d3 e0 ; 0xf87a8
+ add ax, 00118h ; 05 18 01 ; 0xf87aa
+ xor cx, cx ; 31 c9 ; 0xf87ad ahci.c:261
+ mov dx, si ; 89 f2 ; 0xf87af
+ xchg cx, ax ; 91 ; 0xf87b1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87b2
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87b6
+ out DX, eax ; 66 ef ; 0xf87b8
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf87ba ahci.c:262
+ mov dx, bx ; 89 da ; 0xf87bd
+ in eax, DX ; 66 ed ; 0xf87bf
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf87c1
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf87c3
+ xchg dx, ax ; 92 ; 0xf87c7
+ and AL, strict byte 0eeh ; 24 ee ; 0xf87c8
+ mov cx, dx ; 89 d1 ; 0xf87ca
+ mov dx, bx ; 89 da ; 0xf87cc
+ xchg cx, ax ; 91 ; 0xf87ce
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87cf
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87d3
+ out DX, eax ; 66 ef ; 0xf87d5
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf87d7 ahci.c:435
+ xor ah, ah ; 30 e4 ; 0xf87da
+ mov CL, strict byte 007h ; b1 07 ; 0xf87dc
+ sal ax, CL ; d3 e0 ; 0xf87de
+ add ax, 00118h ; 05 18 01 ; 0xf87e0
+ xor cx, cx ; 31 c9 ; 0xf87e3 ahci.c:271
+ mov dx, si ; 89 f2 ; 0xf87e5
+ xchg cx, ax ; 91 ; 0xf87e7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf87e8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf87ec
+ out DX, eax ; 66 ef ; 0xf87ee
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf87f0 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf87f3
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf87f5
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf87f7
+ xchg dx, ax ; 92 ; 0xf87fb
+ test ax, 0c011h ; a9 11 c0 ; 0xf87fc
+ je short 08808h ; 74 07 ; 0xf87ff
+ mov AL, strict byte 001h ; b0 01 ; 0xf8801
+ jmp short 0880ah ; eb 05 ; 0xf8803
+ jmp near 088fch ; e9 f4 00 ; 0xf8805
+ xor al, al ; 30 c0 ; 0xf8808
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf880a ahci.c:273
+ je short 087d7h ; 74 c9 ; 0xf880c
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf880e ahci.c:446
+ xor bx, bx ; 31 db ; 0xf8811
+ mov ax, di ; 89 f8 ; 0xf8813
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8815
+ call 09c30h ; e8 15 14 ; 0xf8818
+ lea ax, [di+00080h] ; 8d 85 80 00 ; 0xf881b ahci.c:447
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf881f
+ xor bx, bx ; 31 db ; 0xf8822
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8824
+ call 09c30h ; e8 06 14 ; 0xf8827
+ lea ax, [di+00200h] ; 8d 85 00 02 ; 0xf882a ahci.c:448
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf882e
+ xor bx, bx ; 31 db ; 0xf8831
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf8833
+ call 09c30h ; e8 f7 13 ; 0xf8836
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf8839 ahci.c:450
+ xor ah, ah ; 30 e4 ; 0xf883c
+ mov CL, strict byte 007h ; b1 07 ; 0xf883e
+ sal ax, CL ; d3 e0 ; 0xf8840
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8842
+ add ax, 00108h ; 05 08 01 ; 0xf8845
+ cwd ; 99 ; 0xf8848
+ mov cx, dx ; 89 d1 ; 0xf8849
+ mov dx, si ; 89 f2 ; 0xf884b
+ xchg cx, ax ; 91 ; 0xf884d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf884e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8852
+ out DX, eax ; 66 ef ; 0xf8854
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf8856
+ xor ax, ax ; 31 c0 ; 0xf8859
+ xor cx, cx ; 31 c9 ; 0xf885b
+ mov dx, bx ; 89 da ; 0xf885d
+ xchg cx, ax ; 91 ; 0xf885f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8860
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8864
+ out DX, eax ; 66 ef ; 0xf8866
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf8868 ahci.c:451
+ add ax, 0010ch ; 05 0c 01 ; 0xf886b
+ cwd ; 99 ; 0xf886e
+ mov cx, dx ; 89 d1 ; 0xf886f
+ mov dx, si ; 89 f2 ; 0xf8871
+ xchg cx, ax ; 91 ; 0xf8873
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8874
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8878
+ out DX, eax ; 66 ef ; 0xf887a
+ xor ax, ax ; 31 c0 ; 0xf887c
+ xor cx, cx ; 31 c9 ; 0xf887e
+ mov dx, bx ; 89 da ; 0xf8880
+ xchg cx, ax ; 91 ; 0xf8882
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8883
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8887
+ out DX, eax ; 66 ef ; 0xf8889
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf888b ahci.c:453
+ db 0feh, 0c4h
+ ; inc ah ; fe c4 ; 0xf888e
+ cwd ; 99 ; 0xf8890
+ mov cx, dx ; 89 d1 ; 0xf8891
+ mov dx, si ; 89 f2 ; 0xf8893
+ xchg cx, ax ; 91 ; 0xf8895
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8896
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf889a
+ out DX, eax ; 66 ef ; 0xf889c
+ xor ax, ax ; 31 c0 ; 0xf889e
+ xor cx, cx ; 31 c9 ; 0xf88a0
+ mov dx, bx ; 89 da ; 0xf88a2
+ xchg cx, ax ; 91 ; 0xf88a4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88a5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88a9
+ out DX, eax ; 66 ef ; 0xf88ab
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf88ad ahci.c:454
+ add ax, 00104h ; 05 04 01 ; 0xf88b0
+ cwd ; 99 ; 0xf88b3
+ mov cx, dx ; 89 d1 ; 0xf88b4
+ mov dx, si ; 89 f2 ; 0xf88b6
+ xchg cx, ax ; 91 ; 0xf88b8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88b9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88bd
+ out DX, eax ; 66 ef ; 0xf88bf
+ xor ax, ax ; 31 c0 ; 0xf88c1
+ xor cx, cx ; 31 c9 ; 0xf88c3
+ mov dx, bx ; 89 da ; 0xf88c5
+ xchg cx, ax ; 91 ; 0xf88c7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88c8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88cc
+ out DX, eax ; 66 ef ; 0xf88ce
+ mov ax, word [bp-00ch] ; 8b 46 f4 ; 0xf88d0 ahci.c:457
+ add ax, 00114h ; 05 14 01 ; 0xf88d3
+ cwd ; 99 ; 0xf88d6
+ mov cx, dx ; 89 d1 ; 0xf88d7
+ mov dx, si ; 89 f2 ; 0xf88d9
+ xchg cx, ax ; 91 ; 0xf88db
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88dc
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88e0
+ out DX, eax ; 66 ef ; 0xf88e2
+ xor ax, ax ; 31 c0 ; 0xf88e4
+ xor cx, cx ; 31 c9 ; 0xf88e6
+ mov dx, bx ; 89 da ; 0xf88e8
+ xchg cx, ax ; 91 ; 0xf88ea
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf88eb
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf88ef
+ out DX, eax ; 66 ef ; 0xf88f1
+ mov es, [bp-00eh] ; 8e 46 f2 ; 0xf88f3 ahci.c:459
+ mov byte [es:di+00262h], 0ffh ; 26 c6 85 62 02 ff ; 0xf88f6
+ lea sp, [bp-008h] ; 8d 66 f8 ; 0xf88fc ahci.c:461
+ pop di ; 5f ; 0xf88ff
+ pop si ; 5e ; 0xf8900
+ pop cx ; 59 ; 0xf8901
+ pop bx ; 5b ; 0xf8902
+ pop bp ; 5d ; 0xf8903
+ retn ; c3 ; 0xf8904
+ ; disGetNextSymbol 0xf8905 LB 0x1643 -> off=0x0 cb=0000000000000250 uValue=00000000000f7305 'ahci_port_init'
+ahci_port_init: ; 0xf8905 LB 0x250
+ push bp ; 55 ; 0xf8905 ahci.c:467
+ mov bp, sp ; 89 e5 ; 0xf8906
+ push cx ; 51 ; 0xf8908
+ push si ; 56 ; 0xf8909
+ push di ; 57 ; 0xf890a
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf890b
+ mov si, ax ; 89 c6 ; 0xf890e
+ mov word [bp-00ah], dx ; 89 56 f6 ; 0xf8910
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8913
+ call 08782h ; e8 69 fe ; 0xf8916 ahci.c:470
+ mov al, bl ; 88 d8 ; 0xf8919 ahci.c:473
+ xor ah, ah ; 30 e4 ; 0xf891b
+ mov CL, strict byte 007h ; b1 07 ; 0xf891d
+ sal ax, CL ; d3 e0 ; 0xf891f
+ add ax, 00118h ; 05 18 01 ; 0xf8921
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8924 ahci.c:259
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8927
+ xor cx, cx ; 31 c9 ; 0xf892c ahci.c:261
+ mov dx, bx ; 89 da ; 0xf892e
+ xchg cx, ax ; 91 ; 0xf8930
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8931
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8935
+ out DX, eax ; 66 ef ; 0xf8937
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8939 ahci.c:262
+ mov dx, bx ; 89 da ; 0xf893c
+ in eax, DX ; 66 ed ; 0xf893e
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8940
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8942
+ xchg dx, ax ; 92 ; 0xf8946
+ and AL, strict byte 0eeh ; 24 ee ; 0xf8947
+ mov cx, dx ; 89 d1 ; 0xf8949
+ mov dx, bx ; 89 da ; 0xf894b
+ xchg cx, ax ; 91 ; 0xf894d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf894e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8952
+ out DX, eax ; 66 ef ; 0xf8954
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8956 ahci.c:476
+ xor ah, ah ; 30 e4 ; 0xf8959
+ mov CL, strict byte 007h ; b1 07 ; 0xf895b
+ sal ax, CL ; d3 e0 ; 0xf895d
+ add ax, 00118h ; 05 18 01 ; 0xf895f
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8962 ahci.c:269
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8965
+ xor cx, cx ; 31 c9 ; 0xf896a ahci.c:271
+ mov dx, bx ; 89 da ; 0xf896c
+ xchg cx, ax ; 91 ; 0xf896e
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf896f
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8973
+ out DX, eax ; 66 ef ; 0xf8975
+ lea dx, [bx+004h] ; 8d 57 04 ; 0xf8977 ahci.c:272
+ in eax, DX ; 66 ed ; 0xf897a
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf897c
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf897e
+ xchg dx, ax ; 92 ; 0xf8982
+ test ax, 0c011h ; a9 11 c0 ; 0xf8983
+ je short 0898ch ; 74 04 ; 0xf8986
+ mov AL, strict byte 001h ; b0 01 ; 0xf8988
+ jmp short 0898eh ; eb 02 ; 0xf898a
+ xor al, al ; 30 c0 ; 0xf898c
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf898e ahci.c:273
+ je short 08956h ; 74 c4 ; 0xf8990
+ mov cx, strict word 00020h ; b9 20 00 ; 0xf8992 ahci.c:487
+ xor bx, bx ; 31 db ; 0xf8995
+ mov ax, si ; 89 f0 ; 0xf8997
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8999
+ call 09c30h ; e8 91 12 ; 0xf899c
+ lea ax, [si+00080h] ; 8d 84 80 00 ; 0xf899f ahci.c:488
+ mov cx, strict word 00040h ; b9 40 00 ; 0xf89a3
+ xor bx, bx ; 31 db ; 0xf89a6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89a8
+ call 09c30h ; e8 82 12 ; 0xf89ab
+ lea di, [si+00200h] ; 8d bc 00 02 ; 0xf89ae ahci.c:489
+ mov cx, strict word 00060h ; b9 60 00 ; 0xf89b2
+ xor bx, bx ; 31 db ; 0xf89b5
+ mov ax, di ; 89 f8 ; 0xf89b7
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89b9
+ call 09c30h ; e8 71 12 ; 0xf89bc
+ mov bl, byte [bp-008h] ; 8a 5e f8 ; 0xf89bf ahci.c:493
+ xor bh, bh ; 30 ff ; 0xf89c2
+ mov CL, strict byte 007h ; b1 07 ; 0xf89c4
+ sal bx, CL ; d3 e3 ; 0xf89c6
+ lea ax, [bx+00108h] ; 8d 87 08 01 ; 0xf89c8
+ cwd ; 99 ; 0xf89cc
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89cd
+ mov cx, word [es:si+00260h] ; 26 8b 8c 60 02 ; 0xf89d0
+ mov word [bp-00ch], cx ; 89 4e f4 ; 0xf89d5
+ mov cx, dx ; 89 d1 ; 0xf89d8
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf89da
+ xchg cx, ax ; 91 ; 0xf89dd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89de
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf89e2
+ out DX, eax ; 66 ef ; 0xf89e4
+ mov ax, di ; 89 f8 ; 0xf89e6
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf89e8
+ call 083a9h ; e8 bb f9 ; 0xf89eb
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf89ee
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf89f1
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf89f6
+ mov cx, dx ; 89 d1 ; 0xf89f9
+ mov dx, di ; 89 fa ; 0xf89fb
+ xchg cx, ax ; 91 ; 0xf89fd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf89fe
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a02
+ out DX, eax ; 66 ef ; 0xf8a04
+ lea ax, [bx+0010ch] ; 8d 87 0c 01 ; 0xf8a06 ahci.c:494
+ cwd ; 99 ; 0xf8a0a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a0b
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a0e
+ mov cx, dx ; 89 d1 ; 0xf8a13
+ mov dx, di ; 89 fa ; 0xf8a15
+ xchg cx, ax ; 91 ; 0xf8a17
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a18
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a1c
+ out DX, eax ; 66 ef ; 0xf8a1e
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a20
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a23
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a28
+ xor ax, ax ; 31 c0 ; 0xf8a2b
+ xor cx, cx ; 31 c9 ; 0xf8a2d
+ xchg cx, ax ; 91 ; 0xf8a2f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a30
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a34
+ out DX, eax ; 66 ef ; 0xf8a36
+ lea ax, [bx+00100h] ; 8d 87 00 01 ; 0xf8a38 ahci.c:497
+ cwd ; 99 ; 0xf8a3c
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a3d
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a40
+ mov cx, dx ; 89 d1 ; 0xf8a45
+ mov dx, di ; 89 fa ; 0xf8a47
+ xchg cx, ax ; 91 ; 0xf8a49
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a4a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a4e
+ out DX, eax ; 66 ef ; 0xf8a50
+ mov ax, si ; 89 f0 ; 0xf8a52
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8a54
+ call 083a9h ; e8 4f f9 ; 0xf8a57
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a5a
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a5d
+ add di, strict byte 00004h ; 83 c7 04 ; 0xf8a62
+ mov cx, dx ; 89 d1 ; 0xf8a65
+ mov dx, di ; 89 fa ; 0xf8a67
+ xchg cx, ax ; 91 ; 0xf8a69
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a6a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a6e
+ out DX, eax ; 66 ef ; 0xf8a70
+ lea ax, [bx+00104h] ; 8d 87 04 01 ; 0xf8a72 ahci.c:498
+ cwd ; 99 ; 0xf8a76
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a77
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8a7a
+ mov cx, dx ; 89 d1 ; 0xf8a7f
+ mov dx, di ; 89 fa ; 0xf8a81
+ xchg cx, ax ; 91 ; 0xf8a83
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a84
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8a88
+ out DX, eax ; 66 ef ; 0xf8a8a
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8a8c
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8a8f
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8a94
+ xor ax, ax ; 31 c0 ; 0xf8a97
+ xor cx, cx ; 31 c9 ; 0xf8a99
+ xchg cx, ax ; 91 ; 0xf8a9b
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8a9c
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8aa0
+ out DX, eax ; 66 ef ; 0xf8aa2
+ lea ax, [bx+00114h] ; 8d 87 14 01 ; 0xf8aa4 ahci.c:501
+ cwd ; 99 ; 0xf8aa8
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8aa9
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8aac
+ mov cx, dx ; 89 d1 ; 0xf8ab1
+ mov dx, di ; 89 fa ; 0xf8ab3
+ xchg cx, ax ; 91 ; 0xf8ab5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ab6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8aba
+ out DX, eax ; 66 ef ; 0xf8abc
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8abe
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8ac1
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8ac6
+ xor ax, ax ; 31 c0 ; 0xf8ac9
+ xor cx, cx ; 31 c9 ; 0xf8acb
+ xchg cx, ax ; 91 ; 0xf8acd
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ace
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ad2
+ out DX, eax ; 66 ef ; 0xf8ad4
+ lea ax, [bx+00110h] ; 8d 87 10 01 ; 0xf8ad6 ahci.c:502
+ cwd ; 99 ; 0xf8ada
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8adb
+ mov di, word [es:si+00260h] ; 26 8b bc 60 02 ; 0xf8ade
+ mov cx, dx ; 89 d1 ; 0xf8ae3
+ mov dx, di ; 89 fa ; 0xf8ae5
+ xchg cx, ax ; 91 ; 0xf8ae7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ae8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8aec
+ out DX, eax ; 66 ef ; 0xf8aee
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8af0
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8af3
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8af8
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8afb
+ mov cx, ax ; 89 c1 ; 0xf8afe
+ xchg cx, ax ; 91 ; 0xf8b00
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b01
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b05
+ out DX, eax ; 66 ef ; 0xf8b07
+ lea ax, [bx+00130h] ; 8d 87 30 01 ; 0xf8b09 ahci.c:504
+ cwd ; 99 ; 0xf8b0d
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b0e
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8b11
+ mov cx, dx ; 89 d1 ; 0xf8b16
+ mov dx, bx ; 89 da ; 0xf8b18
+ xchg cx, ax ; 91 ; 0xf8b1a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b1b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b1f
+ out DX, eax ; 66 ef ; 0xf8b21
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b23
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8b26
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8b2b
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8b2e
+ mov cx, ax ; 89 c1 ; 0xf8b31
+ xchg cx, ax ; 91 ; 0xf8b33
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8b34
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8b38
+ out DX, eax ; 66 ef ; 0xf8b3a
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8b3c ahci.c:506
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8b3f
+ mov byte [es:si+00262h], al ; 26 88 84 62 02 ; 0xf8b42
+ mov byte [es:si+00263h], 000h ; 26 c6 84 63 02 00 ; 0xf8b47 ahci.c:507
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf8b4d ahci.c:508
+ pop di ; 5f ; 0xf8b50
+ pop si ; 5e ; 0xf8b51
+ pop cx ; 59 ; 0xf8b52
+ pop bp ; 5d ; 0xf8b53
+ retn ; c3 ; 0xf8b54
+ ; disGetNextSymbol 0xf8b55 LB 0x13f3 -> off=0x0 cb=00000000000000aa uValue=00000000000f7555 'ahci_read_sectors'
+ahci_read_sectors: ; 0xf8b55 LB 0xaa
+ push bp ; 55 ; 0xf8b55 ahci.c:517
+ mov bp, sp ; 89 e5 ; 0xf8b56
+ push si ; 56 ; 0xf8b58
+ push di ; 57 ; 0xf8b59
+ les bx, [bp+004h] ; c4 5e 04 ; 0xf8b5a ahci.c:522
+ mov al, byte [es:bx+00ch] ; 26 8a 47 0c ; 0xf8b5d
+ xor ah, ah ; 30 e4 ; 0xf8b61
+ mov di, ax ; 89 c7 ; 0xf8b63
+ sub di, strict byte 0000ch ; 83 ef 0c ; 0xf8b65
+ cmp di, strict byte 00004h ; 83 ff 04 ; 0xf8b68 ahci.c:523
+ jbe short 08b80h ; 76 13 ; 0xf8b6b
+ push di ; 57 ; 0xf8b6d ahci.c:524
+ mov ax, 00c62h ; b8 62 0c ; 0xf8b6e
+ push ax ; 50 ; 0xf8b71
+ mov ax, 00c74h ; b8 74 0c ; 0xf8b72
+ push ax ; 50 ; 0xf8b75
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf8b76
+ push ax ; 50 ; 0xf8b79
+ call 0190fh ; e8 92 8d ; 0xf8b7a
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8b7d
+ xor bx, bx ; 31 db ; 0xf8b80 ahci.c:530
+ les si, [bp+004h] ; c4 76 04 ; 0xf8b82
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8b85
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8b8a ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8b8e
+ mov word [es:bx+00268h], ax ; 26 89 87 68 02 ; 0xf8b90
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8b95 ahci.c:531
+ add di, si ; 01 f7 ; 0xf8b98
+ mov bl, byte [es:di+0022dh] ; 26 8a 9d 2d 02 ; 0xf8b9a
+ xor bh, bh ; 30 ff ; 0xf8b9f
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8ba1
+ xor ax, ax ; 31 c0 ; 0xf8ba6
+ call 08905h ; e8 5a fd ; 0xf8ba8
+ mov bx, strict word 00025h ; bb 25 00 ; 0xf8bab ahci.c:532
+ mov ax, si ; 89 f0 ; 0xf8bae
+ mov dx, word [bp+006h] ; 8b 56 06 ; 0xf8bb0
+ call 08520h ; e8 6a f9 ; 0xf8bb3
+ mov bx, ax ; 89 c3 ; 0xf8bb6
+ mov es, [bp+006h] ; 8e 46 06 ; 0xf8bb8 ahci.c:534
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8bbb
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8bbf
+ mov CL, strict byte 009h ; b1 09 ; 0xf8bc3 ahci.c:536
+ sal ax, CL ; d3 e0 ; 0xf8bc5
+ mov cx, ax ; 89 c1 ; 0xf8bc7
+ shr cx, 1 ; d1 e9 ; 0xf8bc9
+ mov di, si ; 89 f7 ; 0xf8bcb
+ mov di, word [es:di+008h] ; 26 8b 7d 08 ; 0xf8bcd
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8bd1
+ mov si, di ; 89 fe ; 0xf8bd5
+ mov dx, ax ; 89 c2 ; 0xf8bd7
+ mov es, ax ; 8e c0 ; 0xf8bd9
+ push DS ; 1e ; 0xf8bdb
+ mov ds, dx ; 8e da ; 0xf8bdc
+ rep movsw ; f3 a5 ; 0xf8bde
+ pop DS ; 1f ; 0xf8be0
+ xor di, di ; 31 ff ; 0xf8be1 ahci.c:538
+ les si, [bp+004h] ; c4 76 04 ; 0xf8be3
+ mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf8be6
+ mov ax, word [es:di+00268h] ; 26 8b 85 68 02 ; 0xf8beb ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8bf0
+ mov ax, bx ; 89 d8 ; 0xf8bf4 ahci.c:540
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8bf6
+ pop di ; 5f ; 0xf8bf9
+ pop si ; 5e ; 0xf8bfa
+ pop bp ; 5d ; 0xf8bfb
+ retn 00004h ; c2 04 00 ; 0xf8bfc
+ ; disGetNextSymbol 0xf8bff LB 0x1349 -> off=0x0 cb=0000000000000088 uValue=00000000000f75ff 'ahci_write_sectors'
+ahci_write_sectors: ; 0xf8bff LB 0x88
+ push bp ; 55 ; 0xf8bff ahci.c:549
+ mov bp, sp ; 89 e5 ; 0xf8c00
+ push si ; 56 ; 0xf8c02
+ push di ; 57 ; 0xf8c03
+ mov si, word [bp+004h] ; 8b 76 04 ; 0xf8c04
+ mov cx, word [bp+006h] ; 8b 4e 06 ; 0xf8c07
+ mov es, cx ; 8e c1 ; 0xf8c0a ahci.c:554
+ mov bl, byte [es:si+00ch] ; 26 8a 5c 0c ; 0xf8c0c
+ xor bh, bh ; 30 ff ; 0xf8c10
+ sub bx, strict byte 0000ch ; 83 eb 0c ; 0xf8c12
+ cmp bx, strict byte 00004h ; 83 fb 04 ; 0xf8c15 ahci.c:555
+ jbe short 08c2dh ; 76 13 ; 0xf8c18
+ push bx ; 53 ; 0xf8c1a ahci.c:556
+ mov ax, 00c93h ; b8 93 0c ; 0xf8c1b
+ push ax ; 50 ; 0xf8c1e
+ mov ax, 00c74h ; b8 74 0c ; 0xf8c1f
+ push ax ; 50 ; 0xf8c22
+ mov ax, strict word 00007h ; b8 07 00 ; 0xf8c23
+ push ax ; 50 ; 0xf8c26
+ call 0190fh ; e8 e5 8c ; 0xf8c27
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf8c2a
+ xor di, di ; 31 ff ; 0xf8c2d ahci.c:562
+ mov es, cx ; 8e c1 ; 0xf8c2f
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8c31
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8c36 ahci.c:239
+ mov es, dx ; 8e c2 ; 0xf8c3a
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8c3c
+ mov es, cx ; 8e c1 ; 0xf8c41 ahci.c:563
+ add bx, si ; 01 f3 ; 0xf8c43
+ mov bl, byte [es:bx+0022dh] ; 26 8a 9f 2d 02 ; 0xf8c45
+ xor bh, bh ; 30 ff ; 0xf8c4a
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8c4c
+ xor ax, ax ; 31 c0 ; 0xf8c51
+ call 08905h ; e8 af fc ; 0xf8c53
+ mov bx, strict word 00035h ; bb 35 00 ; 0xf8c56 ahci.c:564
+ mov ax, si ; 89 f0 ; 0xf8c59
+ mov dx, cx ; 89 ca ; 0xf8c5b
+ call 08520h ; e8 c0 f8 ; 0xf8c5d
+ mov dx, ax ; 89 c2 ; 0xf8c60
+ mov es, cx ; 8e c1 ; 0xf8c62 ahci.c:566
+ mov ax, word [es:si+00eh] ; 26 8b 44 0e ; 0xf8c64
+ mov word [es:si+018h], ax ; 26 89 44 18 ; 0xf8c68
+ xor bx, bx ; 31 db ; 0xf8c6c ahci.c:567
+ mov es, [es:si+00232h] ; 26 8e 84 32 02 ; 0xf8c6e
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8c73 ahci.c:244
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8c78
+ mov ax, dx ; 89 d0 ; 0xf8c7c ahci.c:569
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8c7e
+ pop di ; 5f ; 0xf8c81
+ pop si ; 5e ; 0xf8c82
+ pop bp ; 5d ; 0xf8c83
+ retn 00004h ; c2 04 00 ; 0xf8c84
+ ; disGetNextSymbol 0xf8c87 LB 0x12c1 -> off=0x0 cb=0000000000000190 uValue=00000000000f7687 'ahci_cmd_packet'
+ahci_cmd_packet: ; 0xf8c87 LB 0x190
+ push bp ; 55 ; 0xf8c87 ahci.c:576
+ mov bp, sp ; 89 e5 ; 0xf8c88
+ push si ; 56 ; 0xf8c8a
+ push di ; 57 ; 0xf8c8b
+ sub sp, strict byte 0000eh ; 83 ec 0e ; 0xf8c8c
+ push ax ; 50 ; 0xf8c8f
+ mov byte [bp-006h], dl ; 88 56 fa ; 0xf8c90
+ mov word [bp-012h], bx ; 89 5e ee ; 0xf8c93
+ mov word [bp-010h], cx ; 89 4e f0 ; 0xf8c96
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8c99 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8c9c
+ mov es, ax ; 8e c0 ; 0xf8c9f
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8ca1
+ mov si, 00122h ; be 22 01 ; 0xf8ca4 ahci.c:49
+ mov word [bp-008h], ax ; 89 46 f8 ; 0xf8ca7
+ cmp byte [bp+00ah], 002h ; 80 7e 0a 02 ; 0xf8caa ahci.c:583
+ jne short 08cd3h ; 75 23 ; 0xf8cae
+ mov bx, 00da0h ; bb a0 0d ; 0xf8cb0 ahci.c:584
+ mov cx, ds ; 8c d9 ; 0xf8cb3
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8cb5
+ call 018cch ; e8 11 8c ; 0xf8cb8
+ mov ax, 00ca6h ; b8 a6 0c ; 0xf8cbb
+ push ax ; 50 ; 0xf8cbe
+ mov ax, 00cb6h ; b8 b6 0c ; 0xf8cbf
+ push ax ; 50 ; 0xf8cc2
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8cc3
+ push ax ; 50 ; 0xf8cc6
+ call 0190fh ; e8 45 8c ; 0xf8cc7
+ add sp, strict byte 00006h ; 83 c4 06 ; 0xf8cca
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8ccd ahci.c:585
+ jmp near 08e0eh ; e9 3b 01 ; 0xf8cd0
+ test byte [bp+004h], 001h ; f6 46 04 01 ; 0xf8cd3 ahci.c:589
+ jne short 08ccdh ; 75 f4 ; 0xf8cd7
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8cd9 ahci.c:603
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8cdc
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf8cdf
+ sal ax, 1 ; d1 e0 ; 0xf8ce2
+ rcl dx, 1 ; d1 d2 ; 0xf8ce4
+ loop 08ce2h ; e2 fa ; 0xf8ce6
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8ce8
+ mov word [es:si], ax ; 26 89 04 ; 0xf8ceb
+ mov word [es:si+002h], dx ; 26 89 54 02 ; 0xf8cee
+ mov word [es:si+004h], strict word 00000h ; 26 c7 44 04 00 00 ; 0xf8cf2
+ mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00 ; 0xf8cf8
+ mov ax, word [bp+00ch] ; 8b 46 0c ; 0xf8cfe ahci.c:604
+ mov word [es:si+008h], ax ; 26 89 44 08 ; 0xf8d01
+ mov ax, word [bp+00eh] ; 8b 46 0e ; 0xf8d05
+ mov word [es:si+00ah], ax ; 26 89 44 0a ; 0xf8d08
+ mov bx, word [es:si+010h] ; 26 8b 5c 10 ; 0xf8d0c ahci.c:605
+ mov ax, word [bp+006h] ; 8b 46 06 ; 0xf8d10
+ mov dx, word [bp+008h] ; 8b 56 08 ; 0xf8d13
+ xor cx, cx ; 31 c9 ; 0xf8d16
+ call 09be0h ; e8 c5 0e ; 0xf8d18
+ mov word [es:si+00eh], ax ; 26 89 44 0e ; 0xf8d1b
+ xor di, di ; 31 ff ; 0xf8d1f ahci.c:608
+ mov ax, word [es:si+00232h] ; 26 8b 84 32 02 ; 0xf8d21
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf8d26
+ mov word [bp-00eh], di ; 89 7e f2 ; 0xf8d29
+ mov word [bp-00ch], ax ; 89 46 f4 ; 0xf8d2c
+ sub word [bp-014h], strict byte 0000ch ; 83 6e ec 0c ; 0xf8d2f ahci.c:595
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8d33 ahci.c:239
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d37
+ mov word [es:di+00268h], ax ; 26 89 85 68 02 ; 0xf8d3a
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d3f ahci.c:611
+ mov bx, word [bp-014h] ; 8b 5e ec ; 0xf8d42
+ add bx, si ; 01 f3 ; 0xf8d45
+ mov al, byte [es:bx+0022dh] ; 26 8a 87 2d 02 ; 0xf8d47
+ xor ah, ah ; 30 e4 ; 0xf8d4c
+ mov dx, word [es:si+00232h] ; 26 8b 94 32 02 ; 0xf8d4e
+ mov bx, ax ; 89 c3 ; 0xf8d53
+ xor al, al ; 30 c0 ; 0xf8d55
+ call 08905h ; e8 ab fb ; 0xf8d57
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf8d5a ahci.c:614
+ xor ah, ah ; 30 e4 ; 0xf8d5d
+ push ax ; 50 ; 0xf8d5f
+ mov bx, word [bp-012h] ; 8b 5e ee ; 0xf8d60
+ mov cx, word [bp-010h] ; 8b 4e f0 ; 0xf8d63
+ mov ax, 000c0h ; b8 c0 00 ; 0xf8d66
+ mov dx, word [bp-00ah] ; 8b 56 f6 ; 0xf8d69
+ call 09c40h ; e8 d1 0e ; 0xf8d6c
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8d6f ahci.c:618
+ mov word [es:si+018h], di ; 26 89 7c 18 ; 0xf8d72
+ mov word [es:si+01ah], di ; 26 89 7c 1a ; 0xf8d76 ahci.c:619
+ mov word [es:si+01ch], di ; 26 89 7c 1c ; 0xf8d7a
+ mov ax, word [es:si+01eh] ; 26 8b 44 1e ; 0xf8d7e ahci.c:622
+ test ax, ax ; 85 c0 ; 0xf8d82
+ je short 08dadh ; 74 27 ; 0xf8d84
+ dec ax ; 48 ; 0xf8d86 ahci.c:623
+ mov es, [bp-00ah] ; 8e 46 f6 ; 0xf8d87
+ mov word [es:di+0010ch], ax ; 26 89 85 0c 01 ; 0xf8d8a
+ mov word [es:di+0010eh], di ; 26 89 bd 0e 01 ; 0xf8d8f
+ mov ax, word [es:di+00264h] ; 26 8b 85 64 02 ; 0xf8d94 ahci.c:624
+ mov dx, word [es:di+00266h] ; 26 8b 95 66 02 ; 0xf8d99
+ mov word [es:di+00100h], ax ; 26 89 85 00 01 ; 0xf8d9e
+ mov word [es:di+00102h], dx ; 26 89 95 02 01 ; 0xf8da3
+ inc byte [es:di+00263h] ; 26 fe 85 63 02 ; 0xf8da8 ahci.c:625
+ mov bx, 000a0h ; bb a0 00 ; 0xf8dad ahci.c:628
+ mov ax, si ; 89 f0 ; 0xf8db0
+ mov dx, word [bp-008h] ; 8b 56 f8 ; 0xf8db2
+ call 08520h ; e8 68 f7 ; 0xf8db5
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8db8 ahci.c:630
+ mov ax, word [es:bx+004h] ; 26 8b 47 04 ; 0xf8dbb
+ mov dx, word [es:bx+006h] ; 26 8b 57 06 ; 0xf8dbf
+ mov es, [bp-008h] ; 8e 46 f8 ; 0xf8dc3
+ mov word [es:si+01ah], ax ; 26 89 44 1a ; 0xf8dc6
+ mov word [es:si+01ch], dx ; 26 89 54 1c ; 0xf8dca
+ mov bx, word [es:si+01ah] ; 26 8b 5c 1a ; 0xf8dce ahci.c:632
+ mov cx, dx ; 89 d1 ; 0xf8dd2
+ shr cx, 1 ; d1 e9 ; 0xf8dd4
+ rcr bx, 1 ; d1 db ; 0xf8dd6
+ mov di, word [es:si+008h] ; 26 8b 7c 08 ; 0xf8dd8
+ mov ax, word [es:si+00ah] ; 26 8b 44 0a ; 0xf8ddc
+ mov cx, bx ; 89 d9 ; 0xf8de0
+ mov si, di ; 89 fe ; 0xf8de2
+ mov dx, ax ; 89 c2 ; 0xf8de4
+ mov es, ax ; 8e c0 ; 0xf8de6
+ push DS ; 1e ; 0xf8de8
+ mov ds, dx ; 8e da ; 0xf8de9
+ rep movsw ; f3 a5 ; 0xf8deb
+ pop DS ; 1f ; 0xf8ded
+ les bx, [bp-00eh] ; c4 5e f2 ; 0xf8dee ahci.c:244
+ mov ax, word [es:bx+00268h] ; 26 8b 87 68 02 ; 0xf8df1
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8df6
+ mov es, [bp-00ch] ; 8e 46 f4 ; 0xf8dfa ahci.c:636
+ mov ax, word [es:bx+006h] ; 26 8b 47 06 ; 0xf8dfd
+ or ax, word [es:bx+004h] ; 26 0b 47 04 ; 0xf8e01
+ jne short 08e0ch ; 75 05 ; 0xf8e05
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf8e07
+ jmp short 08e0eh ; eb 02 ; 0xf8e0a
+ xor ax, ax ; 31 c0 ; 0xf8e0c
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf8e0e ahci.c:637
+ pop di ; 5f ; 0xf8e11
+ pop si ; 5e ; 0xf8e12
+ pop bp ; 5d ; 0xf8e13
+ retn 0000ch ; c2 0c 00 ; 0xf8e14
+ ; disGetNextSymbol 0xf8e17 LB 0x1131 -> off=0x0 cb=0000000000000005 uValue=00000000000f7817 'wait_ticks_device_init'
+wait_ticks_device_init: ; 0xf8e17 LB 0x5
+ push bp ; 55 ; 0xf8e17 ahci.c:640
+ mov bp, sp ; 89 e5 ; 0xf8e18
+ pop bp ; 5d ; 0xf8e1a ahci.c:642
+ retn ; c3 ; 0xf8e1b
+ ; disGetNextSymbol 0xf8e1c LB 0x112c -> off=0x0 cb=0000000000000509 uValue=00000000000f781c 'ahci_port_detect_device'
+ahci_port_detect_device: ; 0xf8e1c LB 0x509
+ push bp ; 55 ; 0xf8e1c ahci.c:644
+ mov bp, sp ; 89 e5 ; 0xf8e1d
+ push cx ; 51 ; 0xf8e1f
+ push si ; 56 ; 0xf8e20
+ push di ; 57 ; 0xf8e21
+ sub sp, 0022eh ; 81 ec 2e 02 ; 0xf8e22
+ mov si, ax ; 89 c6 ; 0xf8e26
+ mov word [bp-018h], dx ; 89 56 e8 ; 0xf8e28
+ mov byte [bp-008h], bl ; 88 5e f8 ; 0xf8e2b
+ mov word [bp-022h], strict word 00000h ; c7 46 de 00 00 ; 0xf8e2e ahci.c:650
+ mov al, bl ; 88 d8 ; 0xf8e33 ahci.c:652
+ mov byte [bp-02ah], bl ; 88 5e d6 ; 0xf8e35
+ xor al, bl ; 30 d8 ; 0xf8e38
+ mov byte [bp-029h], al ; 88 46 d7 ; 0xf8e3a
+ mov bx, word [bp-02ah] ; 8b 5e d6 ; 0xf8e3d
+ mov ax, si ; 89 f0 ; 0xf8e40
+ call 08905h ; e8 c0 fa ; 0xf8e42
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf8e45 ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8e48
+ mov es, ax ; 8e c0 ; 0xf8e4b
+ mov ax, word [es:bx] ; 26 8b 07 ; 0xf8e4d
+ mov word [bp-026h], 00122h ; c7 46 da 22 01 ; 0xf8e50 ahci.c:49
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf8e55
+ mov CL, strict byte 007h ; b1 07 ; 0xf8e58 ahci.c:657
+ mov ax, word [bp-02ah] ; 8b 46 d6 ; 0xf8e5a
+ sal ax, CL ; d3 e0 ; 0xf8e5d
+ add ax, 0012ch ; 05 2c 01 ; 0xf8e5f
+ cwd ; 99 ; 0xf8e62
+ mov di, ax ; 89 c7 ; 0xf8e63
+ mov bx, dx ; 89 d3 ; 0xf8e65
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8e67
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e6a
+ mov cx, bx ; 89 d9 ; 0xf8e6f
+ xchg cx, ax ; 91 ; 0xf8e71
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e72
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e76
+ out DX, eax ; 66 ef ; 0xf8e78
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8e7a
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e7d
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8e82
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf8e85
+ xor cx, cx ; 31 c9 ; 0xf8e88
+ xchg cx, ax ; 91 ; 0xf8e8a
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8e8b
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8e8f
+ out DX, eax ; 66 ef ; 0xf8e91
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8e93 ahci.c:662
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8e96
+ mov ax, di ; 89 f8 ; 0xf8e9b
+ mov cx, bx ; 89 d9 ; 0xf8e9d
+ xchg cx, ax ; 91 ; 0xf8e9f
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8ea0
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ea4
+ out DX, eax ; 66 ef ; 0xf8ea6
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ea8
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8eab
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8eb0
+ xor ax, ax ; 31 c0 ; 0xf8eb3
+ xor cx, cx ; 31 c9 ; 0xf8eb5
+ xchg cx, ax ; 91 ; 0xf8eb7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8eb8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8ebc
+ out DX, eax ; 66 ef ; 0xf8ebe
+ mov di, strict word 0006ch ; bf 6c 00 ; 0xf8ec0 ahci.c:671
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf8ec3
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf8ec6
+ mov es, ax ; 8e c0 ; 0xf8ec9 ahci.c:672
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8ecb
+ add ax, strict word 00003h ; 05 03 00 ; 0xf8ece
+ mov word [bp-01eh], ax ; 89 46 e2 ; 0xf8ed1
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8ed4
+ adc ax, strict word 00000h ; 15 00 00 ; 0xf8ed8
+ mov word [bp-01ch], ax ; 89 46 e4 ; 0xf8edb
+ mov es, [bp-010h] ; 8e 46 f0 ; 0xf8ede ahci.c:674
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8ee1
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf8ee5
+ jc short 08efbh ; 72 11 ; 0xf8ee8
+ mov ax, word [es:di+002h] ; 26 8b 45 02 ; 0xf8eea
+ cmp ax, word [bp-01ch] ; 3b 46 e4 ; 0xf8eee
+ jne short 08f49h ; 75 56 ; 0xf8ef1
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf8ef3
+ cmp ax, word [bp-01eh] ; 3b 46 e2 ; 0xf8ef6
+ jnc short 08f49h ; 73 4e ; 0xf8ef9
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8efb ahci.c:677
+ xor ah, ah ; 30 e4 ; 0xf8efe
+ mov CL, strict byte 007h ; b1 07 ; 0xf8f00
+ sal ax, CL ; d3 e0 ; 0xf8f02
+ add ax, 00128h ; 05 28 01 ; 0xf8f04
+ cwd ; 99 ; 0xf8f07
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f08
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f0b
+ mov cx, dx ; 89 d1 ; 0xf8f10
+ mov dx, bx ; 89 da ; 0xf8f12
+ xchg cx, ax ; 91 ; 0xf8f14
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f15
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f19
+ out DX, eax ; 66 ef ; 0xf8f1b
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f1d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f20
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f25
+ in eax, DX ; 66 ed ; 0xf8f28
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8f2a
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8f2c
+ xchg dx, ax ; 92 ; 0xf8f30
+ mov word [bp-024h], ax ; 89 46 dc ; 0xf8f31
+ mov word [bp-020h], dx ; 89 56 e0 ; 0xf8f34
+ xor bx, bx ; 31 db ; 0xf8f37 ahci.c:678
+ push bx ; 53 ; 0xf8f39
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8f3a
+ xor cx, cx ; 31 c9 ; 0xf8f3d
+ call 0838dh ; e8 4b f4 ; 0xf8f3f
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8f42
+ jne short 08edeh ; 75 97 ; 0xf8f45
+ jmp short 08f52h ; eb 09 ; 0xf8f47 ahci.c:680
+ cmp word [bp-022h], strict byte 00000h ; 83 7e de 00 ; 0xf8f49 ahci.c:685
+ jne short 08f52h ; 75 03 ; 0xf8f4d
+ jmp near 0931dh ; e9 cb 03 ; 0xf8f4f
+ xor ax, ax ; 31 c0 ; 0xf8f52 ahci.c:690
+ push ax ; 50 ; 0xf8f54
+ mov bx, strict word 0000fh ; bb 0f 00 ; 0xf8f55
+ xor cx, cx ; 31 c9 ; 0xf8f58
+ mov ax, word [bp-024h] ; 8b 46 dc ; 0xf8f5a
+ mov dx, word [bp-020h] ; 8b 56 e0 ; 0xf8f5d
+ call 0838dh ; e8 2a f4 ; 0xf8f60
+ cmp ax, strict word 00003h ; 3d 03 00 ; 0xf8f63
+ jne short 08f4fh ; 75 e7 ; 0xf8f66
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf8f68 ahci.c:698
+ xor ah, ah ; 30 e4 ; 0xf8f6b
+ mov CL, strict byte 007h ; b1 07 ; 0xf8f6d
+ mov di, ax ; 89 c7 ; 0xf8f6f
+ sal di, CL ; d3 e7 ; 0xf8f71
+ lea ax, [di+00130h] ; 8d 85 30 01 ; 0xf8f73
+ cwd ; 99 ; 0xf8f77
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f78
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8f7b
+ mov cx, dx ; 89 d1 ; 0xf8f80
+ mov dx, bx ; 89 da ; 0xf8f82
+ xchg cx, ax ; 91 ; 0xf8f84
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f85
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8f89
+ out DX, eax ; 66 ef ; 0xf8f8b
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8f8d
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf8f90
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf8f95
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf8f98
+ mov cx, ax ; 89 c1 ; 0xf8f9b
+ xchg cx, ax ; 91 ; 0xf8f9d
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8f9e
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8fa2
+ out DX, eax ; 66 ef ; 0xf8fa4
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf8fa6 ahci.c:700
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf8fa9
+ mov al, byte [es:bx+00231h] ; 26 8a 87 31 02 ; 0xf8fac
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf8fb1
+ cmp AL, strict byte 004h ; 3c 04 ; 0xf8fb4 ahci.c:705
+ jnc short 08f4fh ; 73 97 ; 0xf8fb6
+ lea ax, [di+00118h] ; 8d 85 18 01 ; 0xf8fb8 ahci.c:708
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8fbc ahci.c:250
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8fbf
+ xor cx, cx ; 31 c9 ; 0xf8fc4 ahci.c:252
+ mov dx, bx ; 89 da ; 0xf8fc6
+ xchg cx, ax ; 91 ; 0xf8fc8
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8fc9
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8fcd
+ out DX, eax ; 66 ef ; 0xf8fcf
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xf8fd1 ahci.c:253
+ mov dx, bx ; 89 da ; 0xf8fd4
+ in eax, DX ; 66 ed ; 0xf8fd6
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf8fd8
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf8fda
+ xchg dx, ax ; 92 ; 0xf8fde
+ or AL, strict byte 010h ; 0c 10 ; 0xf8fdf
+ mov cx, dx ; 89 d1 ; 0xf8fe1
+ mov dx, bx ; 89 da ; 0xf8fe3
+ xchg cx, ax ; 91 ; 0xf8fe5
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf8fe6
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf8fea
+ out DX, eax ; 66 ef ; 0xf8fec
+ lea ax, [di+00124h] ; 8d 85 24 01 ; 0xf8fee ahci.c:712
+ cwd ; 99 ; 0xf8ff2
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf8ff3
+ mov bx, word [es:si+00260h] ; 26 8b 9c 60 02 ; 0xf8ff6
+ mov cx, dx ; 89 d1 ; 0xf8ffb
+ mov dx, bx ; 89 da ; 0xf8ffd
+ xchg cx, ax ; 91 ; 0xf8fff
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9000
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9004
+ out DX, eax ; 66 ef ; 0xf9006
+ mov es, [bp-018h] ; 8e 46 e8 ; 0xf9008
+ mov dx, word [es:si+00260h] ; 26 8b 94 60 02 ; 0xf900b
+ add dx, strict byte 00004h ; 83 c2 04 ; 0xf9010
+ in eax, DX ; 66 ed ; 0xf9013
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9015
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9017
+ xchg dx, ax ; 92 ; 0xf901b
+ mov si, ax ; 89 c6 ; 0xf901c
+ mov ax, dx ; 89 d0 ; 0xf901e
+ mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf9020
+ add dl, 00ch ; 80 c2 0c ; 0xf9023
+ mov byte [bp-00ch], dl ; 88 56 f4 ; 0xf9026
+ test ax, ax ; 85 c0 ; 0xf9029 ahci.c:713
+ jne short 09085h ; 75 58 ; 0xf902b
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf902d
+ jne short 09085h ; 75 52 ; 0xf9031
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf9033 ahci.c:723
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9036
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9039
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf903f
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf9045
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf904b
+ lea dx, [bp-00234h] ; 8d 96 cc fd ; 0xf9050 ahci.c:724
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf9054
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf9058
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf905c ahci.c:725
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf9062 ahci.c:726
+ mov bx, 000ech ; bb ec 00 ; 0xf9068 ahci.c:727
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf906b
+ mov dx, es ; 8c c2 ; 0xf906e
+ call 08520h ; e8 ad f4 ; 0xf9070
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf9073 ahci.c:730
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf9076
+ test byte [bp-00234h], 080h ; f6 86 cc fd 80 ; 0xf9079 ahci.c:732
+ je short 09088h ; 74 08 ; 0xf907e
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9080
+ jmp short 0908ah ; eb 05 ; 0xf9083
+ jmp near 09251h ; e9 c9 01 ; 0xf9085
+ xor ax, ax ; 31 c0 ; 0xf9088
+ mov cl, al ; 88 c1 ; 0xf908a
+ mov ax, word [bp-00232h] ; 8b 86 ce fd ; 0xf908c ahci.c:733
+ mov word [bp-01ah], ax ; 89 46 e6 ; 0xf9090
+ mov ax, word [bp-0022eh] ; 8b 86 d2 fd ; 0xf9093 ahci.c:734
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf9097
+ mov ax, word [bp-00228h] ; 8b 86 d8 fd ; 0xf909a ahci.c:735
+ mov word [bp-02eh], ax ; 89 46 d2 ; 0xf909e
+ mov si, word [bp-001bch] ; 8b b6 44 fe ; 0xf90a1 ahci.c:736
+ mov di, word [bp-001bah] ; 8b be 46 fe ; 0xf90a5
+ xor ax, ax ; 31 c0 ; 0xf90a9
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf90ab
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf90ae
+ cmp di, 00fffh ; 81 ff ff 0f ; 0xf90b1 ahci.c:738
+ jne short 090d2h ; 75 1b ; 0xf90b5
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf90b7
+ jne short 090d2h ; 75 16 ; 0xf90ba
+ mov ax, word [bp-00166h] ; 8b 86 9a fe ; 0xf90bc ahci.c:739
+ mov word [bp-012h], ax ; 89 46 ee ; 0xf90c0
+ mov ax, word [bp-00168h] ; 8b 86 98 fe ; 0xf90c3
+ mov word [bp-028h], ax ; 89 46 d8 ; 0xf90c7
+ mov di, word [bp-0016ah] ; 8b be 96 fe ; 0xf90ca
+ mov si, word [bp-0016ch] ; 8b b6 94 fe ; 0xf90ce
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf90d2 ahci.c:743
+ xor bh, bh ; 30 ff ; 0xf90d5
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf90d7
+ add bx, word [bp-026h] ; 03 5e da ; 0xf90da
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf90dd
+ mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf90e0
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf90e5 ahci.c:744
+ xor ah, ah ; 30 e4 ; 0xf90e8
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf90ea
+ imul dx ; f7 ea ; 0xf90ed
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf90ef
+ add bx, ax ; 01 c3 ; 0xf90f2
+ mov word [es:bx+022h], 0ff05h ; 26 c7 47 22 05 ff ; 0xf90f4
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf90fa ahci.c:746
+ mov byte [es:bx+025h], 000h ; 26 c6 47 25 00 ; 0xf90fe ahci.c:747
+ mov word [es:bx+028h], 00200h ; 26 c7 47 28 00 02 ; 0xf9103 ahci.c:748
+ mov byte [es:bx+027h], 001h ; 26 c6 47 27 01 ; 0xf9109 ahci.c:749
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf910e ahci.c:750
+ mov word [es:bx+03ch], ax ; 26 89 47 3c ; 0xf9111
+ mov ax, word [bp-028h] ; 8b 46 d8 ; 0xf9115
+ mov word [es:bx+03ah], ax ; 26 89 47 3a ; 0xf9118
+ mov word [es:bx+038h], di ; 26 89 7f 38 ; 0xf911c
+ mov word [es:bx+036h], si ; 26 89 77 36 ; 0xf9120
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9124 ahci.c:752
+ mov word [es:bx+030h], ax ; 26 89 47 30 ; 0xf9127
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf912b ahci.c:753
+ mov word [es:bx+032h], ax ; 26 89 47 32 ; 0xf912e
+ mov ax, word [bp-02eh] ; 8b 46 d2 ; 0xf9132 ahci.c:754
+ mov word [es:bx+034h], ax ; 26 89 47 34 ; 0xf9135
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf9139 ahci.c:757
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf913c
+ jc short 0914ch ; 72 0c ; 0xf913e
+ jbe short 09154h ; 76 12 ; 0xf9140
+ cmp AL, strict byte 003h ; 3c 03 ; 0xf9142
+ je short 0915ch ; 74 16 ; 0xf9144
+ cmp AL, strict byte 002h ; 3c 02 ; 0xf9146
+ je short 09158h ; 74 0e ; 0xf9148
+ jmp short 091a6h ; eb 5a ; 0xf914a
+ test al, al ; 84 c0 ; 0xf914c
+ jne short 091a6h ; 75 56 ; 0xf914e
+ mov BL, strict byte 040h ; b3 40 ; 0xf9150 ahci.c:760
+ jmp short 0915eh ; eb 0a ; 0xf9152 ahci.c:761
+ mov BL, strict byte 048h ; b3 48 ; 0xf9154 ahci.c:763
+ jmp short 0915eh ; eb 06 ; 0xf9156 ahci.c:764
+ mov BL, strict byte 050h ; b3 50 ; 0xf9158 ahci.c:766
+ jmp short 0915eh ; eb 02 ; 0xf915a ahci.c:767
+ mov BL, strict byte 058h ; b3 58 ; 0xf915c ahci.c:769
+ mov dl, bl ; 88 da ; 0xf915e ahci.c:773
+ add dl, 007h ; 80 c2 07 ; 0xf9160
+ xor dh, dh ; 30 f6 ; 0xf9163
+ mov ax, dx ; 89 d0 ; 0xf9165
+ call 01652h ; e8 e8 84 ; 0xf9167
+ test al, al ; 84 c0 ; 0xf916a
+ je short 091a6h ; 74 38 ; 0xf916c
+ mov al, bl ; 88 d8 ; 0xf916e ahci.c:776
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9170
+ xor ah, ah ; 30 e4 ; 0xf9172
+ call 01652h ; e8 db 84 ; 0xf9174
+ mov byte [bp-02bh], al ; 88 46 d5 ; 0xf9177
+ mov byte [bp-02ch], dh ; 88 76 d4 ; 0xf917a
+ mov al, bl ; 88 d8 ; 0xf917d
+ xor ah, ah ; 30 e4 ; 0xf917f
+ call 01652h ; e8 ce 84 ; 0xf9181
+ xor ah, ah ; 30 e4 ; 0xf9184
+ mov cx, word [bp-02ch] ; 8b 4e d4 ; 0xf9186
+ add cx, ax ; 01 c1 ; 0xf9189
+ mov word [bp-032h], cx ; 89 4e ce ; 0xf918b
+ mov al, bl ; 88 d8 ; 0xf918e ahci.c:777
+ add AL, strict byte 002h ; 04 02 ; 0xf9190
+ call 01652h ; e8 bd 84 ; 0xf9192
+ xor ah, ah ; 30 e4 ; 0xf9195
+ mov word [bp-034h], ax ; 89 46 cc ; 0xf9197
+ mov ax, dx ; 89 d0 ; 0xf919a ahci.c:778
+ call 01652h ; e8 b3 84 ; 0xf919c
+ xor ah, ah ; 30 e4 ; 0xf919f
+ mov word [bp-030h], ax ; 89 46 d0 ; 0xf91a1
+ jmp short 091b6h ; eb 10 ; 0xf91a4 ahci.c:780
+ push word [bp-012h] ; ff 76 ee ; 0xf91a6 ahci.c:781
+ push word [bp-028h] ; ff 76 d8 ; 0xf91a9
+ push di ; 57 ; 0xf91ac
+ push si ; 56 ; 0xf91ad
+ mov dx, ss ; 8c d2 ; 0xf91ae
+ lea ax, [bp-034h] ; 8d 46 cc ; 0xf91b0
+ call 059dch ; e8 26 c8 ; 0xf91b3
+ mov bx, 00da0h ; bb a0 0d ; 0xf91b6 ahci.c:785
+ mov cx, ds ; 8c d9 ; 0xf91b9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf91bb
+ call 018cch ; e8 0b 87 ; 0xf91be
+ push word [bp-012h] ; ff 76 ee ; 0xf91c1
+ push word [bp-028h] ; ff 76 d8 ; 0xf91c4
+ push di ; 57 ; 0xf91c7
+ push si ; 56 ; 0xf91c8
+ mov ax, word [bp-030h] ; 8b 46 d0 ; 0xf91c9
+ push ax ; 50 ; 0xf91cc
+ mov ax, word [bp-034h] ; 8b 46 cc ; 0xf91cd
+ push ax ; 50 ; 0xf91d0
+ mov ax, word [bp-032h] ; 8b 46 ce ; 0xf91d1
+ push ax ; 50 ; 0xf91d4
+ push word [bp-02eh] ; ff 76 d2 ; 0xf91d5
+ push word [bp-014h] ; ff 76 ec ; 0xf91d8
+ push word [bp-01ah] ; ff 76 e6 ; 0xf91db
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf91de
+ xor ah, ah ; 30 e4 ; 0xf91e1
+ push ax ; 50 ; 0xf91e3
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf91e4
+ push ax ; 50 ; 0xf91e7
+ mov ax, 00cd6h ; b8 d6 0c ; 0xf91e8
+ push ax ; 50 ; 0xf91eb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf91ec
+ push ax ; 50 ; 0xf91ef
+ call 0190fh ; e8 1c 87 ; 0xf91f0
+ add sp, strict byte 0001ch ; 83 c4 1c ; 0xf91f3
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf91f6 ahci.c:787
+ xor ah, ah ; 30 e4 ; 0xf91f9
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf91fb
+ imul dx ; f7 ea ; 0xf91fe
+ mov di, word [bp-026h] ; 8b 7e da ; 0xf9200
+ add di, ax ; 01 c7 ; 0xf9203
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf9205
+ lea di, [di+02ah] ; 8d 7d 2a ; 0xf9208
+ push DS ; 1e ; 0xf920b
+ push SS ; 16 ; 0xf920c
+ pop DS ; 1f ; 0xf920d
+ lea si, [bp-034h] ; 8d 76 cc ; 0xf920e
+ movsw ; a5 ; 0xf9211
+ movsw ; a5 ; 0xf9212
+ movsw ; a5 ; 0xf9213
+ pop DS ; 1f ; 0xf9214
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9215 ahci.c:790
+ mov bl, byte [es:bx+001e2h] ; 26 8a 9f e2 01 ; 0xf9218
+ mov dl, byte [bp-00eh] ; 8a 56 f2 ; 0xf921d ahci.c:791
+ add dl, 00ch ; 80 c2 0c ; 0xf9220
+ mov al, bl ; 88 d8 ; 0xf9223
+ xor ah, ah ; 30 e4 ; 0xf9225
+ mov si, word [bp-026h] ; 8b 76 da ; 0xf9227
+ add si, ax ; 01 c6 ; 0xf922a
+ mov byte [es:si+001e3h], dl ; 26 88 94 e3 01 ; 0xf922c
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9231 ahci.c:792
+ mov si, word [bp-026h] ; 8b 76 da ; 0xf9233 ahci.c:793
+ mov byte [es:si+001e2h], bl ; 26 88 9c e2 01 ; 0xf9236
+ mov bx, strict word 00075h ; bb 75 00 ; 0xf923b ahci.c:38
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf923e
+ mov es, ax ; 8e c0 ; 0xf9241
+ mov bl, byte [es:bx] ; 26 8a 1f ; 0xf9243
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9246 ahci.c:797
+ mov si, strict word 00075h ; be 75 00 ; 0xf9248 ahci.c:43
+ mov byte [es:si], bl ; 26 88 1c ; 0xf924b
+ jmp near 0930ch ; e9 bb 00 ; 0xf924e ahci.c:800
+ cmp ax, 0eb14h ; 3d 14 eb ; 0xf9251
+ jne short 092aeh ; 75 58 ; 0xf9254
+ cmp si, 00101h ; 81 fe 01 01 ; 0xf9256
+ jne short 092aeh ; 75 52 ; 0xf925a
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf925c ahci.c:805
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf925f
+ mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00 ; 0xf9262
+ mov word [es:bx+004h], strict word 00000h ; 26 c7 47 04 00 00 ; 0xf9268
+ mov word [es:bx+002h], strict word 00000h ; 26 c7 47 02 00 00 ; 0xf926e
+ mov word [es:bx], strict word 00000h ; 26 c7 07 00 00 ; 0xf9274
+ lea dx, [bp-00234h] ; 8d 96 cc fd ; 0xf9279 ahci.c:806
+ mov word [es:bx+008h], dx ; 26 89 57 08 ; 0xf927d
+ mov [es:bx+00ah], ss ; 26 8c 57 0a ; 0xf9281
+ mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00 ; 0xf9285 ahci.c:807
+ mov word [es:bx+010h], 00200h ; 26 c7 47 10 00 02 ; 0xf928b ahci.c:808
+ mov bx, 000a1h ; bb a1 00 ; 0xf9291 ahci.c:809
+ mov ax, word [bp-026h] ; 8b 46 da ; 0xf9294
+ mov dx, es ; 8c c2 ; 0xf9297
+ call 08520h ; e8 84 f2 ; 0xf9299
+ mov al, byte [bp-00ch] ; 8a 46 f4 ; 0xf929c ahci.c:812
+ mov byte [bp-00ah], al ; 88 46 f6 ; 0xf929f
+ test byte [bp-00234h], 080h ; f6 86 cc fd 80 ; 0xf92a2 ahci.c:814
+ je short 092b0h ; 74 07 ; 0xf92a7
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf92a9
+ jmp short 092b2h ; eb 04 ; 0xf92ac
+ jmp short 0930ch ; eb 5c ; 0xf92ae
+ xor cx, cx ; 31 c9 ; 0xf92b0
+ mov bl, byte [bp-00eh] ; 8a 5e f2 ; 0xf92b2 ahci.c:816
+ xor bh, bh ; 30 ff ; 0xf92b5
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf92b7
+ add bx, word [bp-026h] ; 03 5e da ; 0xf92ba
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf92bd
+ mov byte [es:bx+0022dh], al ; 26 88 87 2d 02 ; 0xf92c0
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf92c5 ahci.c:817
+ xor ah, ah ; 30 e4 ; 0xf92c8
+ mov dx, strict word 0001ch ; ba 1c 00 ; 0xf92ca
+ imul dx ; f7 ea ; 0xf92cd
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf92cf
+ add bx, ax ; 01 c3 ; 0xf92d2
+ mov word [es:bx+022h], 00505h ; 26 c7 47 22 05 05 ; 0xf92d4
+ mov byte [es:bx+024h], cl ; 26 88 4f 24 ; 0xf92da ahci.c:819
+ mov word [es:bx+028h], 00800h ; 26 c7 47 28 00 08 ; 0xf92de ahci.c:820
+ mov byte [es:bx+027h], 000h ; 26 c6 47 27 00 ; 0xf92e4 ahci.c:821
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf92e9 ahci.c:824
+ mov dl, byte [es:bx+001f3h] ; 26 8a 97 f3 01 ; 0xf92ec
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf92f1 ahci.c:825
+ add AL, strict byte 00ch ; 04 0c ; 0xf92f4
+ mov bl, dl ; 88 d3 ; 0xf92f6
+ xor bh, bh ; 30 ff ; 0xf92f8
+ add bx, word [bp-026h] ; 03 5e da ; 0xf92fa
+ mov byte [es:bx+001f4h], al ; 26 88 87 f4 01 ; 0xf92fd
+ db 0feh, 0c2h
+ ; inc dl ; fe c2 ; 0xf9302 ahci.c:826
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9304 ahci.c:827
+ mov byte [es:bx+001f3h], dl ; 26 88 97 f3 01 ; 0xf9307
+ inc byte [bp-00eh] ; fe 46 f2 ; 0xf930c ahci.c:832
+ mov al, byte [bp-00eh] ; 8a 46 f2 ; 0xf930f ahci.c:833
+ mov es, [bp-016h] ; 8e 46 ea ; 0xf9312
+ mov bx, word [bp-026h] ; 8b 5e da ; 0xf9315
+ mov byte [es:bx+00231h], al ; 26 88 87 31 02 ; 0xf9318
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf931d ahci.c:838
+ pop di ; 5f ; 0xf9320
+ pop si ; 5e ; 0xf9321
+ pop cx ; 59 ; 0xf9322
+ pop bp ; 5d ; 0xf9323
+ retn ; c3 ; 0xf9324
+ ; disGetNextSymbol 0xf9325 LB 0xc23 -> off=0x0 cb=000000000000003a uValue=00000000000f7d25 'ahci_mem_alloc'
+ahci_mem_alloc: ; 0xf9325 LB 0x3a
+ push bx ; 53 ; 0xf9325 ahci.c:843
+ push cx ; 51 ; 0xf9326
+ push dx ; 52 ; 0xf9327
+ push di ; 57 ; 0xf9328
+ push bp ; 55 ; 0xf9329
+ mov bp, sp ; 89 e5 ; 0xf932a
+ mov di, 00413h ; bf 13 04 ; 0xf932c ahci.c:48
+ xor ax, ax ; 31 c0 ; 0xf932f
+ mov es, ax ; 8e c0 ; 0xf9331
+ mov ax, word [es:di] ; 26 8b 05 ; 0xf9333
+ test ax, ax ; 85 c0 ; 0xf9336 ahci.c:852
+ je short 09359h ; 74 1f ; 0xf9338
+ dec ax ; 48 ; 0xf933a ahci.c:853
+ mov bx, ax ; 89 c3 ; 0xf933b
+ xor dx, dx ; 31 d2 ; 0xf933d ahci.c:856
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf933f
+ sal ax, 1 ; d1 e0 ; 0xf9342
+ rcl dx, 1 ; d1 d2 ; 0xf9344
+ loop 09342h ; e2 fa ; 0xf9346
+ mov di, dx ; 89 d7 ; 0xf9348
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf934a
+ shr di, 1 ; d1 ef ; 0xf934d
+ rcr ax, 1 ; d1 d8 ; 0xf934f
+ loop 0934dh ; e2 fa ; 0xf9351
+ mov di, 00413h ; bf 13 04 ; 0xf9353 ahci.c:53
+ mov word [es:di], bx ; 26 89 1d ; 0xf9356
+ pop bp ; 5d ; 0xf9359 ahci.c:861
+ pop di ; 5f ; 0xf935a
+ pop dx ; 5a ; 0xf935b
+ pop cx ; 59 ; 0xf935c
+ pop bx ; 5b ; 0xf935d
+ retn ; c3 ; 0xf935e
+ ; disGetNextSymbol 0xf935f LB 0xbe9 -> off=0x0 cb=0000000000000157 uValue=00000000000f7d5f 'ahci_hba_init'
+ahci_hba_init: ; 0xf935f LB 0x157
+ push bp ; 55 ; 0xf935f ahci.c:866
+ mov bp, sp ; 89 e5 ; 0xf9360
+ push bx ; 53 ; 0xf9362
+ push cx ; 51 ; 0xf9363
+ push dx ; 52 ; 0xf9364
+ push si ; 56 ; 0xf9365
+ push di ; 57 ; 0xf9366
+ sub sp, strict byte 00006h ; 83 ec 06 ; 0xf9367
+ mov si, ax ; 89 c6 ; 0xf936a
+ mov bx, strict word 0000eh ; bb 0e 00 ; 0xf936c ahci.c:48
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf936f
+ mov es, ax ; 8e c0 ; 0xf9372
+ mov di, word [es:bx] ; 26 8b 3f ; 0xf9374
+ mov bx, 00122h ; bb 22 01 ; 0xf9377 ahci.c:877
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf937a ahci.c:879
+ xor cx, cx ; 31 c9 ; 0xf937d
+ mov dx, si ; 89 f2 ; 0xf937f
+ xchg cx, ax ; 91 ; 0xf9381
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9382
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9386
+ out DX, eax ; 66 ef ; 0xf9388
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf938a
+ in eax, DX ; 66 ed ; 0xf938d
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf938f
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9391
+ xchg dx, ax ; 92 ; 0xf9395
+ call 09325h ; e8 8c ff ; 0xf9396 ahci.c:885
+ mov word [bp-010h], ax ; 89 46 f0 ; 0xf9399
+ test ax, ax ; 85 c0 ; 0xf939c ahci.c:886
+ jne short 093a3h ; 75 03 ; 0xf939e
+ jmp near 094ach ; e9 09 01 ; 0xf93a0
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf93a3 ahci.c:889
+ mov es, di ; 8e c7 ; 0xf93a6
+ mov word [es:bx+00232h], ax ; 26 89 87 32 02 ; 0xf93a8
+ mov byte [es:bx+00231h], 000h ; 26 c6 87 31 02 00 ; 0xf93ad ahci.c:895
+ xor bx, bx ; 31 db ; 0xf93b3 ahci.c:897
+ mov es, ax ; 8e c0 ; 0xf93b5
+ mov byte [es:bx+00262h], 0ffh ; 26 c6 87 62 02 ff ; 0xf93b7 ahci.c:898
+ mov word [es:bx+00260h], si ; 26 89 b7 60 02 ; 0xf93bd ahci.c:899
+ mov word [es:bx+00264h], 0c000h ; 26 c7 87 64 02 00 c0 ; 0xf93c2 ahci.c:904
+ mov word [es:bx+00266h], strict word 0000ch ; 26 c7 87 66 02 0c 00 ; 0xf93c9
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf93d0 ahci.c:252
+ xor cx, cx ; 31 c9 ; 0xf93d3
+ mov dx, si ; 89 f2 ; 0xf93d5
+ xchg cx, ax ; 91 ; 0xf93d7
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93d8
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93dc
+ out DX, eax ; 66 ef ; 0xf93de
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf93e0 ahci.c:253
+ mov dx, bx ; 89 da ; 0xf93e3
+ in eax, DX ; 66 ed ; 0xf93e5
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf93e7
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf93e9
+ xchg dx, ax ; 92 ; 0xf93ed
+ or AL, strict byte 001h ; 0c 01 ; 0xf93ee
+ mov cx, dx ; 89 d1 ; 0xf93f0
+ mov dx, bx ; 89 da ; 0xf93f2
+ xchg cx, ax ; 91 ; 0xf93f4
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf93f5
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf93f9
+ out DX, eax ; 66 ef ; 0xf93fb
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf93fd ahci.c:910
+ xor cx, cx ; 31 c9 ; 0xf9400
+ mov dx, si ; 89 f2 ; 0xf9402
+ xchg cx, ax ; 91 ; 0xf9404
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9405
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9409
+ out DX, eax ; 66 ef ; 0xf940b
+ lea bx, [si+004h] ; 8d 5c 04 ; 0xf940d
+ mov dx, bx ; 89 da ; 0xf9410
+ in eax, DX ; 66 ed ; 0xf9412
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9414
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9416
+ xchg dx, ax ; 92 ; 0xf941a
+ test AL, strict byte 001h ; a8 01 ; 0xf941b ahci.c:911
+ jne short 093fdh ; 75 de ; 0xf941d
+ xor ax, ax ; 31 c0 ; 0xf941f ahci.c:913
+ xor cx, cx ; 31 c9 ; 0xf9421
+ mov dx, si ; 89 f2 ; 0xf9423
+ xchg cx, ax ; 91 ; 0xf9425
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9426
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf942a
+ out DX, eax ; 66 ef ; 0xf942c
+ mov dx, bx ; 89 da ; 0xf942e
+ in eax, DX ; 66 ed ; 0xf9430
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9432
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9434
+ xchg dx, ax ; 92 ; 0xf9438
+ xor bx, bx ; 31 db ; 0xf9439 ahci.c:914
+ push bx ; 53 ; 0xf943b
+ mov bx, strict word 0001fh ; bb 1f 00 ; 0xf943c
+ xor cx, cx ; 31 c9 ; 0xf943f
+ call 0838dh ; e8 49 ef ; 0xf9441
+ db 0feh, 0c0h
+ ; inc al ; fe c0 ; 0xf9444
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf9446
+ mov byte [bp-00ch], 000h ; c6 46 f4 00 ; 0xf9449 ahci.c:919
+ jmp short 09470h ; eb 21 ; 0xf944d ahci.c:920
+ xor al, al ; 30 c0 ; 0xf944f ahci.c:272
+ test al, al ; 84 c0 ; 0xf9451 ahci.c:273
+ je short 09467h ; 74 12 ; 0xf9453
+ mov bl, byte [bp-00ch] ; 8a 5e f4 ; 0xf9455 ahci.c:925
+ xor bh, bh ; 30 ff ; 0xf9458
+ xor ax, ax ; 31 c0 ; 0xf945a
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf945c
+ call 08e1ch ; e8 ba f9 ; 0xf945f
+ dec byte [bp-00eh] ; fe 4e f2 ; 0xf9462 ahci.c:926
+ je short 094aah ; 74 43 ; 0xf9465 ahci.c:927
+ inc byte [bp-00ch] ; fe 46 f4 ; 0xf9467 ahci.c:930
+ cmp byte [bp-00ch], 020h ; 80 7e f4 20 ; 0xf946a ahci.c:931
+ jnc short 094aah ; 73 3a ; 0xf946e
+ mov cl, byte [bp-00ch] ; 8a 4e f4 ; 0xf9470
+ xor ch, ch ; 30 ed ; 0xf9473
+ mov bx, strict word 00001h ; bb 01 00 ; 0xf9475
+ xor di, di ; 31 ff ; 0xf9478
+ jcxz 09482h ; e3 06 ; 0xf947a
+ sal bx, 1 ; d1 e3 ; 0xf947c
+ rcl di, 1 ; d1 d7 ; 0xf947e
+ loop 0947ch ; e2 fa ; 0xf9480
+ mov ax, strict word 0000ch ; b8 0c 00 ; 0xf9482
+ xor cx, cx ; 31 c9 ; 0xf9485
+ mov dx, si ; 89 f2 ; 0xf9487
+ xchg cx, ax ; 91 ; 0xf9489
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf948a
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf948e
+ out DX, eax ; 66 ef ; 0xf9490
+ lea dx, [si+004h] ; 8d 54 04 ; 0xf9492
+ in eax, DX ; 66 ed ; 0xf9495
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9497
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9499
+ xchg dx, ax ; 92 ; 0xf949d
+ test dx, di ; 85 fa ; 0xf949e
+ jne short 094a6h ; 75 04 ; 0xf94a0
+ test ax, bx ; 85 d8 ; 0xf94a2
+ je short 0944fh ; 74 a9 ; 0xf94a4
+ mov AL, strict byte 001h ; b0 01 ; 0xf94a6
+ jmp short 09451h ; eb a7 ; 0xf94a8
+ xor ax, ax ; 31 c0 ; 0xf94aa ahci.c:933
+ lea sp, [bp-00ah] ; 8d 66 f6 ; 0xf94ac ahci.c:934
+ pop di ; 5f ; 0xf94af
+ pop si ; 5e ; 0xf94b0
+ pop dx ; 5a ; 0xf94b1
+ pop cx ; 59 ; 0xf94b2
+ pop bx ; 5b ; 0xf94b3
+ pop bp ; 5d ; 0xf94b4
+ retn ; c3 ; 0xf94b5
+ ; disGetNextSymbol 0xf94b6 LB 0xa92 -> off=0x17 cb=0000000000000139 uValue=00000000000f7ecd 'ahci_init'
+ db 00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0b3h, 095h, 091h, 095h, 097h, 095h, 09dh, 095h, 0a3h
+ db 095h, 0a9h, 095h, 0afh, 095h, 0b3h, 095h
+ahci_init: ; 0xf94cd LB 0x139
+ push bp ; 55 ; 0xf94cd ahci.c:939
+ mov bp, sp ; 89 e5 ; 0xf94ce
+ push si ; 56 ; 0xf94d0
+ push di ; 57 ; 0xf94d1
+ sub sp, strict byte 00012h ; 83 ec 12 ; 0xf94d2
+ mov ax, 00601h ; b8 01 06 ; 0xf94d5 ahci.c:943
+ mov dx, strict word 00001h ; ba 01 00 ; 0xf94d8
+ call 09a08h ; e8 2a 05 ; 0xf94db
+ mov dx, ax ; 89 c2 ; 0xf94de
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf94e0 ahci.c:944
+ je short 0952eh ; 74 49 ; 0xf94e3
+ mov al, ah ; 88 e0 ; 0xf94e5 ahci.c:949
+ mov byte [bp-008h], ah ; 88 66 f8 ; 0xf94e7
+ mov byte [bp-00ah], dl ; 88 56 f6 ; 0xf94ea ahci.c:950
+ xor dh, ah ; 30 e6 ; 0xf94ed ahci.c:955
+ xor ah, ah ; 30 e4 ; 0xf94ef
+ mov bx, strict word 00034h ; bb 34 00 ; 0xf94f1
+ call 09a33h ; e8 3c 05 ; 0xf94f4
+ mov cl, al ; 88 c1 ; 0xf94f7
+ test cl, cl ; 84 c9 ; 0xf94f9 ahci.c:957
+ je short 09531h ; 74 34 ; 0xf94fb
+ mov bl, cl ; 88 cb ; 0xf94fd ahci.c:959
+ xor bh, bh ; 30 ff ; 0xf94ff
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf9501
+ mov byte [bp-00ch], al ; 88 46 f4 ; 0xf9504
+ mov byte [bp-00bh], bh ; 88 7e f5 ; 0xf9507
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf950a
+ mov byte [bp-012h], al ; 88 46 ee ; 0xf950d
+ mov byte [bp-011h], bh ; 88 7e ef ; 0xf9510
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9513
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9516
+ call 09a33h ; e8 17 05 ; 0xf9519
+ cmp AL, strict byte 012h ; 3c 12 ; 0xf951c ahci.c:963
+ je short 09531h ; 74 11 ; 0xf951e
+ mov bl, cl ; 88 cb ; 0xf9520 ahci.c:967
+ db 0feh, 0c3h
+ ; inc bl ; fe c3 ; 0xf9522
+ xor bh, bh ; 30 ff ; 0xf9524
+ mov dx, word [bp-00ch] ; 8b 56 f4 ; 0xf9526
+ mov ax, word [bp-012h] ; 8b 46 ee ; 0xf9529
+ jmp short 094f4h ; eb c6 ; 0xf952c ahci.c:968
+ jmp near 095ffh ; e9 ce 00 ; 0xf952e
+ test cl, cl ; 84 c9 ; 0xf9531 ahci.c:970
+ je short 0952eh ; 74 f9 ; 0xf9533
+ add cl, 002h ; 80 c1 02 ; 0xf9535 ahci.c:977
+ mov bl, cl ; 88 cb ; 0xf9538 ahci.c:979
+ xor bh, bh ; 30 ff ; 0xf953a
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf953c
+ mov byte [bp-00eh], al ; 88 46 f2 ; 0xf953f
+ mov byte [bp-00dh], bh ; 88 7e f3 ; 0xf9542
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9545
+ mov byte [bp-014h], al ; 88 46 ec ; 0xf9548
+ mov byte [bp-013h], bh ; 88 7e ed ; 0xf954b
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf954e
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9551
+ call 09a33h ; e8 dc 04 ; 0xf9554
+ cmp AL, strict byte 010h ; 3c 10 ; 0xf9557 ahci.c:980
+ jne short 0952eh ; 75 d3 ; 0xf9559
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf955b ahci.c:983
+ mov bl, cl ; 88 cb ; 0xf955f ahci.c:985
+ add bl, 002h ; 80 c3 02 ; 0xf9561
+ xor bh, bh ; 30 ff ; 0xf9564
+ mov dx, word [bp-00eh] ; 8b 56 f2 ; 0xf9566
+ mov ax, word [bp-014h] ; 8b 46 ec ; 0xf9569
+ call 09a5ah ; e8 eb 04 ; 0xf956c
+ mov dx, ax ; 89 c2 ; 0xf956f
+ and ax, strict word 0000fh ; 25 0f 00 ; 0xf9571 ahci.c:989
+ sub ax, strict word 00004h ; 2d 04 00 ; 0xf9574
+ cmp ax, strict word 0000bh ; 3d 0b 00 ; 0xf9577
+ jnbe short 095b3h ; 77 37 ; 0xf957a
+ push CS ; 0e ; 0xf957c
+ pop ES ; 07 ; 0xf957d
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf957e
+ mov di, 094b6h ; bf b6 94 ; 0xf9581
+ repne scasb ; f2 ae ; 0xf9584
+ sal cx, 1 ; d1 e1 ; 0xf9586
+ mov di, cx ; 89 cf ; 0xf9588
+ mov ax, word [cs:di-06b43h] ; 2e 8b 85 bd 94 ; 0xf958a
+ jmp ax ; ff e0 ; 0xf958f
+ mov byte [bp-006h], 010h ; c6 46 fa 10 ; 0xf9591 ahci.c:992
+ jmp short 095b3h ; eb 1c ; 0xf9595 ahci.c:993
+ mov byte [bp-006h], 014h ; c6 46 fa 14 ; 0xf9597 ahci.c:995
+ jmp short 095b3h ; eb 16 ; 0xf959b ahci.c:996
+ mov byte [bp-006h], 018h ; c6 46 fa 18 ; 0xf959d ahci.c:998
+ jmp short 095b3h ; eb 10 ; 0xf95a1 ahci.c:999
+ mov byte [bp-006h], 01ch ; c6 46 fa 1c ; 0xf95a3 ahci.c:1001
+ jmp short 095b3h ; eb 0a ; 0xf95a7 ahci.c:1002
+ mov byte [bp-006h], 020h ; c6 46 fa 20 ; 0xf95a9 ahci.c:1004
+ jmp short 095b3h ; eb 04 ; 0xf95ad ahci.c:1005
+ mov byte [bp-006h], 024h ; c6 46 fa 24 ; 0xf95af ahci.c:1007
+ mov CL, strict byte 004h ; b1 04 ; 0xf95b3 ahci.c:1016
+ mov si, dx ; 89 d6 ; 0xf95b5
+ shr si, CL ; d3 ee ; 0xf95b7
+ sal si, 1 ; d1 e6 ; 0xf95b9
+ sal si, 1 ; d1 e6 ; 0xf95bb
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf95bd ahci.c:1018
+ test al, al ; 84 c0 ; 0xf95c0
+ je short 095ffh ; 74 3b ; 0xf95c2
+ mov bl, al ; 88 c3 ; 0xf95c4 ahci.c:1020
+ xor bh, bh ; 30 ff ; 0xf95c6
+ mov al, byte [bp-00ah] ; 8a 46 f6 ; 0xf95c8
+ mov byte [bp-010h], al ; 88 46 f0 ; 0xf95cb
+ mov byte [bp-00fh], bh ; 88 7e f1 ; 0xf95ce
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf95d1
+ mov byte [bp-016h], al ; 88 46 ea ; 0xf95d4
+ mov byte [bp-015h], bh ; 88 7e eb ; 0xf95d7
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf95da
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf95dd
+ call 09a7fh ; e8 9c 04 ; 0xf95e0
+ test AL, strict byte 001h ; a8 01 ; 0xf95e3 ahci.c:1024
+ je short 095ffh ; 74 18 ; 0xf95e5
+ and AL, strict byte 0f0h ; 24 f0 ; 0xf95e7 ahci.c:1027
+ add si, ax ; 01 c6 ; 0xf95e9
+ mov cx, strict word 00007h ; b9 07 00 ; 0xf95eb ahci.c:1030
+ mov bx, strict word 00004h ; bb 04 00 ; 0xf95ee
+ mov dx, word [bp-010h] ; 8b 56 f0 ; 0xf95f1
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf95f4
+ call 09abeh ; e8 c4 04 ; 0xf95f7
+ mov ax, si ; 89 f0 ; 0xf95fa ahci.c:1033
+ call 0935fh ; e8 60 fd ; 0xf95fc
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf95ff ahci.c:1047
+ pop di ; 5f ; 0xf9602
+ pop si ; 5e ; 0xf9603
+ pop bp ; 5d ; 0xf9604
+ retn ; c3 ; 0xf9605
+ ; disGetNextSymbol 0xf9606 LB 0x942 -> off=0x0 cb=000000000000001b uValue=00000000000f8006 'apm_out_str'
+apm_out_str: ; 0xf9606 LB 0x1b
+ push bp ; 55 ; 0xf9606 apm.c:146
+ mov bp, sp ; 89 e5 ; 0xf9607
+ push bx ; 53 ; 0xf9609
+ mov bx, ax ; 89 c3 ; 0xf960a
+ cmp byte [bx], 000h ; 80 3f 00 ; 0xf960c apm.c:148
+ je short 0961bh ; 74 0a ; 0xf960f
+ mov al, byte [bx] ; 8a 07 ; 0xf9611 apm.c:149
+ out DX, AL ; ee ; 0xf9613
+ inc bx ; 43 ; 0xf9614
+ mov al, byte [bx] ; 8a 07 ; 0xf9615
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xf9617
+ jne short 09613h ; 75 f8 ; 0xf9619
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf961b apm.c:150
+ pop bx ; 5b ; 0xf961e
+ pop bp ; 5d ; 0xf961f
+ retn ; c3 ; 0xf9620
+ ; disGetNextSymbol 0xf9621 LB 0x927 -> off=0x1d cb=00000000000000da uValue=00000000000f803e 'apm_function'
+ db 00eh, 00bh, 007h, 006h, 005h, 004h, 002h, 001h, 000h, 0e4h, 096h, 06ch, 096h, 012h, 097h, 07eh
+ db 096h, 012h, 097h, 099h, 096h, 012h, 097h, 09eh, 096h, 0dfh, 096h, 0d8h, 096h
+apm_function: ; 0xf963e LB 0xda
+ push bp ; 55 ; 0xf963e apm.c:152
+ mov bp, sp ; 89 e5 ; 0xf963f
+ push di ; 57 ; 0xf9641
+ and byte [bp+018h], 0feh ; 80 66 18 fe ; 0xf9642 apm.c:156
+ mov dx, word [bp+012h] ; 8b 56 12 ; 0xf9646 apm.c:157
+ xor dh, dh ; 30 f6 ; 0xf9649
+ cmp dx, strict byte 0000eh ; 83 fa 0e ; 0xf964b
+ jnbe short 096bbh ; 77 6b ; 0xf964e
+ mov al, dl ; 88 d0 ; 0xf9650
+ push CS ; 0e ; 0xf9652
+ pop ES ; 07 ; 0xf9653
+ mov cx, strict word 0000ah ; b9 0a 00 ; 0xf9654
+ mov di, 09621h ; bf 21 96 ; 0xf9657
+ repne scasb ; f2 ae ; 0xf965a
+ sal cx, 1 ; d1 e1 ; 0xf965c
+ mov di, cx ; 89 cf ; 0xf965e
+ mov bx, word [cs:di-069d6h] ; 2e 8b 9d 2a 96 ; 0xf9660
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf9665
+ or AL, strict byte 001h ; 0c 01 ; 0xf9668
+ jmp bx ; ff e3 ; 0xf966a
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf966c apm.c:159
+ mov word [bp+00ch], 0504dh ; c7 46 0c 4d 50 ; 0xf9671 apm.c:160
+ mov word [bp+010h], strict word 00003h ; c7 46 10 03 00 ; 0xf9676 apm.c:161
+ jmp near 09712h ; e9 94 00 ; 0xf967b apm.c:162
+ mov word [bp+012h], 0f000h ; c7 46 12 00 f0 ; 0xf967e apm.c:172
+ mov word [bp+00ch], 09cb4h ; c7 46 0c b4 9c ; 0xf9683 apm.c:173
+ mov word [bp+010h], 0f000h ; c7 46 10 00 f0 ; 0xf9688 apm.c:174
+ mov ax, strict word 0fff0h ; b8 f0 ff ; 0xf968d apm.c:175
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf9690
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf9693 apm.c:176
+ jmp near 09712h ; e9 79 00 ; 0xf9696 apm.c:177
+ sti ; fb ; 0xf9699 apm.c:194
+ hlt ; f4 ; 0xf969a apm.c:195
+ jmp near 09712h ; e9 74 00 ; 0xf969b apm.c:196
+ cmp word [bp+010h], strict byte 00003h ; 83 7e 10 03 ; 0xf969e apm.c:200
+ je short 096c5h ; 74 21 ; 0xf96a2
+ cmp word [bp+010h], strict byte 00002h ; 83 7e 10 02 ; 0xf96a4
+ je short 096bdh ; 74 13 ; 0xf96a8
+ cmp word [bp+010h], strict byte 00001h ; 83 7e 10 01 ; 0xf96aa
+ jne short 096cdh ; 75 1d ; 0xf96ae
+ mov dx, 0040fh ; ba 0f 04 ; 0xf96b0 apm.c:202
+ mov ax, 00d10h ; b8 10 0d ; 0xf96b3
+ call 09606h ; e8 4d ff ; 0xf96b6
+ jmp short 09712h ; eb 57 ; 0xf96b9 apm.c:203
+ jmp short 096e4h ; eb 27 ; 0xf96bb
+ mov dx, 0040fh ; ba 0f 04 ; 0xf96bd apm.c:205
+ mov ax, 00d18h ; b8 18 0d ; 0xf96c0
+ jmp short 096b6h ; eb f1 ; 0xf96c3
+ mov dx, 0040fh ; ba 0f 04 ; 0xf96c5 apm.c:208
+ mov ax, 00d20h ; b8 20 0d ; 0xf96c8
+ jmp short 096b6h ; eb e9 ; 0xf96cb
+ or dh, 00ah ; 80 ce 0a ; 0xf96cd apm.c:211
+ mov word [bp+012h], dx ; 89 56 12 ; 0xf96d0
+ mov word [bp+018h], ax ; 89 46 18 ; 0xf96d3 apm.c:212
+ jmp short 09712h ; eb 3a ; 0xf96d6 apm.c:214
+ mov word [bp+012h], 00102h ; c7 46 12 02 01 ; 0xf96d8 apm.c:216
+ jmp short 09712h ; eb 33 ; 0xf96dd apm.c:217
+ or dh, 080h ; 80 ce 80 ; 0xf96df apm.c:224
+ jmp short 096d0h ; eb ec ; 0xf96e2
+ mov bx, 00da0h ; bb a0 0d ; 0xf96e4 apm.c:228
+ mov cx, ds ; 8c d9 ; 0xf96e7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf96e9
+ call 018cch ; e8 dd 81 ; 0xf96ec
+ push word [bp+00ch] ; ff 76 0c ; 0xf96ef
+ push word [bp+012h] ; ff 76 12 ; 0xf96f2
+ mov ax, 00d29h ; b8 29 0d ; 0xf96f5
+ push ax ; 50 ; 0xf96f8
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf96f9
+ push ax ; 50 ; 0xf96fc
+ call 0190fh ; e8 0f 82 ; 0xf96fd
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf9700
+ mov ax, word [bp+012h] ; 8b 46 12 ; 0xf9703 apm.c:229
+ xor ah, ah ; 30 e4 ; 0xf9706
+ or ah, 00ch ; 80 cc 0c ; 0xf9708
+ mov word [bp+012h], ax ; 89 46 12 ; 0xf970b
+ or byte [bp+018h], 001h ; 80 4e 18 01 ; 0xf970e apm.c:230
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9712 apm.c:232
+ pop di ; 5f ; 0xf9715
+ pop bp ; 5d ; 0xf9716
+ retn ; c3 ; 0xf9717
+ ; disGetNextSymbol 0xf9718 LB 0x830 -> off=0x0 cb=0000000000000024 uValue=00000000000f8118 'pci16_select_reg'
+pci16_select_reg: ; 0xf9718 LB 0x24
+ push bp ; 55 ; 0xf9718 pcibios.c:188
+ mov bp, sp ; 89 e5 ; 0xf9719
+ push bx ; 53 ; 0xf971b
+ and dl, 0fch ; 80 e2 fc ; 0xf971c pcibios.c:190
+ mov bx, dx ; 89 d3 ; 0xf971f
+ mov dx, 00cf8h ; ba f8 0c ; 0xf9721
+ movzx eax, ax ; 66 0f b7 c0 ; 0xf9724
+ sal eax, 008h ; 66 c1 e0 08 ; 0xf9728
+ or eax, strict dword 080000000h ; 66 0d 00 00 00 80 ; 0xf972c
+ db 08ah, 0c3h
+ ; mov al, bl ; 8a c3 ; 0xf9732
+ out DX, eax ; 66 ef ; 0xf9734
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9736 pcibios.c:191
+ pop bx ; 5b ; 0xf9739
+ pop bp ; 5d ; 0xf973a
+ retn ; c3 ; 0xf973b
+ ; disGetNextSymbol 0xf973c LB 0x80c -> off=0x0 cb=00000000000000eb uValue=00000000000f813c 'pci16_find_device'
+pci16_find_device: ; 0xf973c LB 0xeb
+ push bp ; 55 ; 0xf973c pcibios.c:221
+ mov bp, sp ; 89 e5 ; 0xf973d
+ push si ; 56 ; 0xf973f
+ push di ; 57 ; 0xf9740
+ sub sp, strict byte 0000ch ; 83 ec 0c ; 0xf9741
+ push ax ; 50 ; 0xf9744
+ push dx ; 52 ; 0xf9745
+ mov si, bx ; 89 de ; 0xf9746
+ mov di, cx ; 89 cf ; 0xf9748
+ test cx, cx ; 85 c9 ; 0xf974a pcibios.c:231
+ xor bx, bx ; 31 db ; 0xf974c pcibios.c:238
+ mov byte [bp-006h], 000h ; c6 46 fa 00 ; 0xf974e pcibios.c:239
+ test bl, 007h ; f6 c3 07 ; 0xf9752 pcibios.c:249
+ jne short 09784h ; 75 2d ; 0xf9755
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xf9757 pcibios.c:250
+ mov ax, bx ; 89 d8 ; 0xf975a
+ call 09718h ; e8 b9 ff ; 0xf975c
+ mov dx, 00cfeh ; ba fe 0c ; 0xf975f pcibios.c:251
+ in AL, DX ; ec ; 0xf9762
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9763
+ mov byte [bp-008h], al ; 88 46 f8 ; 0xf9765
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xf9768 pcibios.c:252
+ jne short 09772h ; 75 06 ; 0xf976a
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xf976c pcibios.c:253
+ jmp near 09804h ; e9 92 00 ; 0xf976f pcibios.c:254
+ test byte [bp-008h], 080h ; f6 46 f8 80 ; 0xf9772 pcibios.c:256
+ je short 0977fh ; 74 07 ; 0xf9776
+ mov word [bp-00eh], strict word 00001h ; c7 46 f2 01 00 ; 0xf9778 pcibios.c:257
+ jmp short 09784h ; eb 05 ; 0xf977d pcibios.c:258
+ mov word [bp-00eh], strict word 00008h ; c7 46 f2 08 00 ; 0xf977f pcibios.c:259
+ mov al, byte [bp-008h] ; 8a 46 f8 ; 0xf9784 pcibios.c:270
+ and AL, strict byte 007h ; 24 07 ; 0xf9787
+ cmp AL, strict byte 001h ; 3c 01 ; 0xf9789
+ jne short 097abh ; 75 1e ; 0xf978b
+ mov al, bh ; 88 f8 ; 0xf978d
+ xor ah, ah ; 30 e4 ; 0xf978f
+ test ax, ax ; 85 c0 ; 0xf9791
+ jne short 097abh ; 75 16 ; 0xf9793
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xf9795 pcibios.c:272
+ mov ax, bx ; 89 d8 ; 0xf9798
+ call 09718h ; e8 7b ff ; 0xf979a
+ mov dx, 00cfeh ; ba fe 0c ; 0xf979d pcibios.c:273
+ in AL, DX ; ec ; 0xf97a0
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf97a1
+ cmp al, byte [bp-006h] ; 3a 46 fa ; 0xf97a3 pcibios.c:274
+ jbe short 097abh ; 76 03 ; 0xf97a6
+ mov byte [bp-006h], al ; 88 46 fa ; 0xf97a8 pcibios.c:275
+ test di, di ; 85 ff ; 0xf97ab pcibios.c:279
+ je short 097b4h ; 74 05 ; 0xf97ad
+ mov dx, strict word 00008h ; ba 08 00 ; 0xf97af
+ jmp short 097b6h ; eb 02 ; 0xf97b2
+ xor dx, dx ; 31 d2 ; 0xf97b4
+ mov ax, bx ; 89 d8 ; 0xf97b6
+ call 09718h ; e8 5d ff ; 0xf97b8
+ mov dx, 00cfch ; ba fc 0c ; 0xf97bb pcibios.c:280
+ in eax, DX ; 66 ed ; 0xf97be
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf97c0
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf97c2
+ xchg dx, ax ; 92 ; 0xf97c6
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf97c7
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf97ca
+ mov word [bp-00ch], strict word 00000h ; c7 46 f4 00 00 ; 0xf97cd pcibios.c:281
+ test di, di ; 85 ff ; 0xf97d2 pcibios.c:284
+ je short 097e5h ; 74 0f ; 0xf97d4
+ mov cx, strict word 00008h ; b9 08 00 ; 0xf97d6 pcibios.c:285
+ shr dx, 1 ; d1 ea ; 0xf97d9
+ rcr ax, 1 ; d1 d8 ; 0xf97db
+ loop 097d9h ; e2 fa ; 0xf97dd
+ mov word [bp-00ah], ax ; 89 46 f6 ; 0xf97df
+ mov word [bp-010h], dx ; 89 56 f0 ; 0xf97e2
+ mov ax, word [bp-010h] ; 8b 46 f0 ; 0xf97e5 pcibios.c:292
+ cmp ax, word [bp-014h] ; 3b 46 ec ; 0xf97e8
+ jne short 097f5h ; 75 08 ; 0xf97eb
+ mov ax, word [bp-00ah] ; 8b 46 f6 ; 0xf97ed
+ cmp ax, word [bp-012h] ; 3b 46 ee ; 0xf97f0
+ je short 097fbh ; 74 06 ; 0xf97f3
+ cmp word [bp-00ch], strict byte 00000h ; 83 7e f4 00 ; 0xf97f5 pcibios.c:293
+ je short 09801h ; 74 06 ; 0xf97f9
+ dec si ; 4e ; 0xf97fb
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf97fc
+ je short 09814h ; 74 13 ; 0xf97ff
+ add bx, word [bp-00eh] ; 03 5e f2 ; 0xf9801 pcibios.c:301
+ mov al, bh ; 88 f8 ; 0xf9804 pcibios.c:302
+ xor ah, ah ; 30 e4 ; 0xf9806
+ mov dl, byte [bp-006h] ; 8a 56 fa ; 0xf9808
+ xor dh, dh ; 30 f6 ; 0xf980b
+ cmp ax, dx ; 39 d0 ; 0xf980d
+ jnbe short 09814h ; 77 03 ; 0xf980f
+ jmp near 09752h ; e9 3e ff ; 0xf9811
+ cmp si, strict byte 0ffffh ; 83 fe ff ; 0xf9814 pcibios.c:304
+ jne short 0981dh ; 75 04 ; 0xf9817 pcibios.c:308
+ mov ax, bx ; 89 d8 ; 0xf9819
+ jmp short 09820h ; eb 03 ; 0xf981b
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf981d
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9820 pcibios.c:309
+ pop di ; 5f ; 0xf9823
+ pop si ; 5e ; 0xf9824
+ pop bp ; 5d ; 0xf9825
+ retn ; c3 ; 0xf9826
+ ; disGetNextSymbol 0xf9827 LB 0x721 -> off=0xc cb=00000000000001d5 uValue=00000000000f8233 'pci16_function'
+ db 014h, 099h, 02dh, 099h, 03fh, 099h, 053h, 099h, 065h, 099h, 078h, 099h
+pci16_function: ; 0xf9833 LB 0x1d5
+ push bp ; 55 ; 0xf9833 pcibios.c:311
+ mov bp, sp ; 89 e5 ; 0xf9834
+ push si ; 56 ; 0xf9836
+ push di ; 57 ; 0xf9837
+ push ax ; 50 ; 0xf9838
+ push ax ; 50 ; 0xf9839
+ and word [bp+020h], 000ffh ; 81 66 20 ff 00 ; 0xf983a pcibios.c:318
+ and word [bp+02ch], strict byte 0fffeh ; 83 66 2c fe ; 0xf983f pcibios.c:319
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9843 pcibios.c:321
+ xor bh, bh ; 30 ff ; 0xf9846
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf9848
+ xor ah, ah ; 30 e4 ; 0xf984b
+ cmp bx, strict byte 00003h ; 83 fb 03 ; 0xf984d
+ jc short 09865h ; 72 13 ; 0xf9850
+ jbe short 098b8h ; 76 64 ; 0xf9852
+ cmp bx, strict byte 0000eh ; 83 fb 0e ; 0xf9854
+ je short 098c0h ; 74 67 ; 0xf9857
+ cmp bx, strict byte 00008h ; 83 fb 08 ; 0xf9859
+ jc short 0986fh ; 72 11 ; 0xf985c
+ cmp bx, strict byte 0000dh ; 83 fb 0d ; 0xf985e
+ jbe short 098c3h ; 76 60 ; 0xf9861
+ jmp short 0986fh ; eb 0a ; 0xf9863
+ cmp bx, strict byte 00002h ; 83 fb 02 ; 0xf9865
+ je short 0988eh ; 74 24 ; 0xf9868
+ cmp bx, strict byte 00001h ; 83 fb 01 ; 0xf986a
+ je short 09872h ; 74 03 ; 0xf986d
+ jmp near 099d1h ; e9 5f 01 ; 0xf986f
+ mov word [bp+020h], strict word 00001h ; c7 46 20 01 00 ; 0xf9872 pcibios.c:323
+ mov word [bp+014h], 00210h ; c7 46 14 10 02 ; 0xf9877 pcibios.c:324
+ mov word [bp+01ch], strict word 00000h ; c7 46 1c 00 00 ; 0xf987c pcibios.c:326
+ mov word [bp+018h], 04350h ; c7 46 18 50 43 ; 0xf9881 pcibios.c:327
+ mov word [bp+01ah], 02049h ; c7 46 1a 49 20 ; 0xf9886
+ jmp near 09a01h ; e9 73 01 ; 0xf988b pcibios.c:328
+ cmp word [bp+018h], strict byte 0ffffh ; 83 7e 18 ff ; 0xf988e pcibios.c:333
+ jne short 0989ah ; 75 06 ; 0xf9892
+ or ah, 083h ; 80 cc 83 ; 0xf9894 pcibios.c:334
+ jmp near 099fah ; e9 60 01 ; 0xf9897 pcibios.c:335
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf989a pcibios.c:337
+ mov dx, word [bp+01ch] ; 8b 56 1c ; 0xf989d
+ mov ax, word [bp+018h] ; 8b 46 18 ; 0xf98a0
+ xor cx, cx ; 31 c9 ; 0xf98a3
+ call 0973ch ; e8 94 fe ; 0xf98a5
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf98a8 pcibios.c:338
+ jne short 098bah ; 75 0d ; 0xf98ab
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf98ad pcibios.c:339
+ xor ah, ah ; 30 e4 ; 0xf98b0
+ or ah, 086h ; 80 cc 86 ; 0xf98b2
+ jmp near 099fah ; e9 42 01 ; 0xf98b5
+ jmp short 098c5h ; eb 0b ; 0xf98b8
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf98ba pcibios.c:340
+ jmp near 09a01h ; e9 41 01 ; 0xf98bd pcibios.c:345
+ jmp near 0998ch ; e9 c9 00 ; 0xf98c0
+ jmp short 098eah ; eb 25 ; 0xf98c3
+ mov bx, word [bp+008h] ; 8b 5e 08 ; 0xf98c5 pcibios.c:347
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf98c8
+ mov dx, word [bp+01eh] ; 8b 56 1e ; 0xf98cb
+ mov cx, strict word 00001h ; b9 01 00 ; 0xf98ce
+ call 0973ch ; e8 68 fe ; 0xf98d1
+ cmp ax, strict word 0ffffh ; 3d ff ff ; 0xf98d4 pcibios.c:348
+ jne short 098e4h ; 75 0b ; 0xf98d7
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf98d9 pcibios.c:349
+ xor ah, ah ; 30 e4 ; 0xf98dc
+ or ah, 086h ; 80 cc 86 ; 0xf98de
+ jmp near 099fah ; e9 16 01 ; 0xf98e1 pcibios.c:350
+ mov word [bp+014h], ax ; 89 46 14 ; 0xf98e4 pcibios.c:352
+ jmp near 09a01h ; e9 17 01 ; 0xf98e7 pcibios.c:354
+ cmp word [bp+004h], 00100h ; 81 7e 04 00 01 ; 0xf98ea pcibios.c:361
+ jc short 098f7h ; 72 06 ; 0xf98ef
+ or ah, 087h ; 80 cc 87 ; 0xf98f1 pcibios.c:362
+ jmp near 099fah ; e9 03 01 ; 0xf98f4 pcibios.c:363
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf98f7 pcibios.c:365
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf98fa
+ call 09718h ; e8 18 fe ; 0xf98fd
+ mov bx, word [bp+020h] ; 8b 5e 20 ; 0xf9900 pcibios.c:366
+ xor bh, bh ; 30 ff ; 0xf9903
+ sub bx, strict byte 00008h ; 83 eb 08 ; 0xf9905
+ cmp bx, strict byte 00005h ; 83 fb 05 ; 0xf9908
+ jnbe short 09975h ; 77 68 ; 0xf990b
+ sal bx, 1 ; d1 e3 ; 0xf990d
+ jmp word [cs:bx-067d9h] ; 2e ff a7 27 98 ; 0xf990f
+ mov bx, word [bp+01ch] ; 8b 5e 1c ; 0xf9914 pcibios.c:368
+ xor bl, bl ; 30 db ; 0xf9917
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9919
+ and dx, strict byte 00003h ; 83 e2 03 ; 0xf991c
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf991f
+ in AL, DX ; ec ; 0xf9923
+ db 02ah, 0e4h
+ ; sub ah, ah ; 2a e4 ; 0xf9924
+ or bx, ax ; 09 c3 ; 0xf9926
+ mov word [bp+01ch], bx ; 89 5e 1c ; 0xf9928
+ jmp short 09975h ; eb 48 ; 0xf992b pcibios.c:369
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf992d pcibios.c:371
+ xor dh, dh ; 30 f6 ; 0xf9930
+ and dl, 002h ; 80 e2 02 ; 0xf9932
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf9935
+ in ax, DX ; ed ; 0xf9939
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf993a
+ jmp short 09975h ; eb 36 ; 0xf993d pcibios.c:372
+ mov dx, 00cfch ; ba fc 0c ; 0xf993f pcibios.c:374
+ in eax, DX ; 66 ed ; 0xf9942
+ db 08bh, 0d0h
+ ; mov dx, ax ; 8b d0 ; 0xf9944
+ shr eax, 010h ; 66 c1 e8 10 ; 0xf9946
+ xchg dx, ax ; 92 ; 0xf994a
+ mov word [bp+01ch], ax ; 89 46 1c ; 0xf994b
+ mov word [bp+01eh], dx ; 89 56 1e ; 0xf994e
+ jmp short 09975h ; eb 22 ; 0xf9951 pcibios.c:375
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9953 pcibios.c:377
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9956
+ xor dh, dh ; 30 f6 ; 0xf9959
+ and dl, 003h ; 80 e2 03 ; 0xf995b
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf995e
+ out DX, AL ; ee ; 0xf9962
+ jmp short 09975h ; eb 10 ; 0xf9963 pcibios.c:378
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9965 pcibios.c:380
+ mov dx, word [bp+004h] ; 8b 56 04 ; 0xf9968
+ xor dh, dh ; 30 f6 ; 0xf996b
+ and dl, 002h ; 80 e2 02 ; 0xf996d
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xf9970
+ out DX, ax ; ef ; 0xf9974
+ jmp near 09a01h ; e9 89 00 ; 0xf9975 pcibios.c:381
+ mov ax, word [bp+01ch] ; 8b 46 1c ; 0xf9978 pcibios.c:383
+ mov cx, word [bp+01eh] ; 8b 4e 1e ; 0xf997b
+ mov dx, 00cfch ; ba fc 0c ; 0xf997e
+ xchg cx, ax ; 91 ; 0xf9981
+ sal eax, 010h ; 66 c1 e0 10 ; 0xf9982
+ db 08bh, 0c1h
+ ; mov ax, cx ; 8b c1 ; 0xf9986
+ out DX, eax ; 66 ef ; 0xf9988
+ jmp short 09a01h ; eb 75 ; 0xf998a pcibios.c:387
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf998c pcibios.c:389
+ mov es, [bp+026h] ; 8e 46 26 ; 0xf998f
+ mov word [bp-008h], bx ; 89 5e f8 ; 0xf9992
+ mov [bp-006h], es ; 8c 46 fa ; 0xf9995
+ mov cx, word [0f380h] ; 8b 0e 80 f3 ; 0xf9998 pcibios.c:393
+ cmp cx, word [es:bx] ; 26 3b 0f ; 0xf999c
+ jbe short 099b2h ; 76 11 ; 0xf999f
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf99a1 pcibios.c:394
+ xor ah, ah ; 30 e4 ; 0xf99a4
+ or ah, 089h ; 80 cc 89 ; 0xf99a6
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf99a9
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf99ac pcibios.c:395
+ jmp short 099c6h ; eb 14 ; 0xf99b0 pcibios.c:396
+ les di, [es:bx+002h] ; 26 c4 7f 02 ; 0xf99b2 pcibios.c:397
+ mov si, 0f1a0h ; be a0 f1 ; 0xf99b6
+ mov dx, ds ; 8c da ; 0xf99b9
+ push DS ; 1e ; 0xf99bb
+ mov ds, dx ; 8e da ; 0xf99bc
+ rep movsb ; f3 a4 ; 0xf99be
+ pop DS ; 1f ; 0xf99c0
+ mov word [bp+014h], 00a00h ; c7 46 14 00 0a ; 0xf99c1 pcibios.c:399
+ mov ax, word [0f380h] ; a1 80 f3 ; 0xf99c6 pcibios.c:401
+ les bx, [bp-008h] ; c4 5e f8 ; 0xf99c9
+ mov word [es:bx], ax ; 26 89 07 ; 0xf99cc
+ jmp short 09a01h ; eb 30 ; 0xf99cf pcibios.c:402
+ mov bx, 00da0h ; bb a0 0d ; 0xf99d1 pcibios.c:404
+ mov cx, ds ; 8c d9 ; 0xf99d4
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf99d6
+ call 018cch ; e8 f0 7e ; 0xf99d9
+ mov ax, word [bp+014h] ; 8b 46 14 ; 0xf99dc
+ push ax ; 50 ; 0xf99df
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf99e0
+ push ax ; 50 ; 0xf99e3
+ mov ax, 00d5ch ; b8 5c 0d ; 0xf99e4
+ push ax ; 50 ; 0xf99e7
+ mov ax, strict word 00004h ; b8 04 00 ; 0xf99e8
+ push ax ; 50 ; 0xf99eb
+ call 0190fh ; e8 20 7f ; 0xf99ec
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xf99ef
+ mov ax, word [bp+020h] ; 8b 46 20 ; 0xf99f2 pcibios.c:405
+ xor ah, ah ; 30 e4 ; 0xf99f5
+ or ah, 081h ; 80 cc 81 ; 0xf99f7
+ mov word [bp+020h], ax ; 89 46 20 ; 0xf99fa
+ or word [bp+02ch], strict byte 00001h ; 83 4e 2c 01 ; 0xf99fd pcibios.c:406
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a01 pcibios.c:408
+ pop di ; 5f ; 0xf9a04
+ pop si ; 5e ; 0xf9a05
+ pop bp ; 5d ; 0xf9a06
+ retn ; c3 ; 0xf9a07
+ ; disGetNextSymbol 0xf9a08 LB 0x540 -> off=0x0 cb=0000000000000008 uValue=00000000000f8408 'pci_find_classcode'
+pci_find_classcode: ; 0xf9a08 LB 0x8
+ push bp ; 55 ; 0xf9a08 pciutil.c:126
+ mov bp, sp ; 89 e5 ; 0xf9a09
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9a0b pciutil.c:133
+ pop bp ; 5d ; 0xf9a0e
+ retn ; c3 ; 0xf9a0f
+ ; disGetNextSymbol 0xf9a10 LB 0x538 -> off=0x0 cb=0000000000000023 uValue=00000000000f8410 'pci_find_device'
+pci_find_device: ; 0xf9a10 LB 0x23
+ push bp ; 55 ; 0xf9a10 pciutil.c:146
+ mov bp, sp ; 89 e5 ; 0xf9a11
+ push bx ; 53 ; 0xf9a13
+ push cx ; 51 ; 0xf9a14
+ push si ; 56 ; 0xf9a15
+ mov cx, dx ; 89 d1 ; 0xf9a16
+ xor si, si ; 31 f6 ; 0xf9a18 pciutil.c:148
+ mov dx, ax ; 89 c2 ; 0xf9a1a
+ mov ax, 0b102h ; b8 02 b1 ; 0xf9a1c
+ int 01ah ; cd 1a ; 0xf9a1f
+ cmp ah, 000h ; 80 fc 00 ; 0xf9a21
+ je short 09a29h ; 74 03 ; 0xf9a24
+ mov bx, strict word 0ffffh ; bb ff ff ; 0xf9a26
+ mov ax, bx ; 89 d8 ; 0xf9a29
+ lea sp, [bp-006h] ; 8d 66 fa ; 0xf9a2b pciutil.c:149
+ pop si ; 5e ; 0xf9a2e
+ pop cx ; 59 ; 0xf9a2f
+ pop bx ; 5b ; 0xf9a30
+ pop bp ; 5d ; 0xf9a31
+ retn ; c3 ; 0xf9a32
+ ; disGetNextSymbol 0xf9a33 LB 0x515 -> off=0x0 cb=0000000000000027 uValue=00000000000f8433 'pci_read_config_byte'
+pci_read_config_byte: ; 0xf9a33 LB 0x27
+ push bp ; 55 ; 0xf9a33 pciutil.c:151
+ mov bp, sp ; 89 e5 ; 0xf9a34
+ push cx ; 51 ; 0xf9a36
+ push di ; 57 ; 0xf9a37
+ mov dh, al ; 88 c6 ; 0xf9a38
+ mov bh, dl ; 88 d7 ; 0xf9a3a
+ mov al, bl ; 88 d8 ; 0xf9a3c
+ xor ah, ah ; 30 e4 ; 0xf9a3e pciutil.c:153
+ xor dl, dl ; 30 d2 ; 0xf9a40
+ mov bl, bh ; 88 fb ; 0xf9a42
+ mov bh, dh ; 88 f7 ; 0xf9a44
+ mov di, ax ; 89 c7 ; 0xf9a46
+ mov ax, 0b108h ; b8 08 b1 ; 0xf9a48
+ int 01ah ; cd 1a ; 0xf9a4b
+ mov al, cl ; 88 c8 ; 0xf9a4d
+ xor ah, ah ; 30 e4 ; 0xf9a4f
+ xor dh, dh ; 30 f6 ; 0xf9a51 pciutil.c:154
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a53
+ pop di ; 5f ; 0xf9a56
+ pop cx ; 59 ; 0xf9a57
+ pop bp ; 5d ; 0xf9a58
+ retn ; c3 ; 0xf9a59
+ ; disGetNextSymbol 0xf9a5a LB 0x4ee -> off=0x0 cb=0000000000000025 uValue=00000000000f845a 'pci_read_config_word'
+pci_read_config_word: ; 0xf9a5a LB 0x25
+ push bp ; 55 ; 0xf9a5a pciutil.c:156
+ mov bp, sp ; 89 e5 ; 0xf9a5b
+ push cx ; 51 ; 0xf9a5d
+ push di ; 57 ; 0xf9a5e
+ mov dh, al ; 88 c6 ; 0xf9a5f
+ mov cl, dl ; 88 d1 ; 0xf9a61
+ mov al, bl ; 88 d8 ; 0xf9a63
+ xor ah, ah ; 30 e4 ; 0xf9a65 pciutil.c:158
+ mov bh, dh ; 88 f7 ; 0xf9a67
+ xor dh, dh ; 30 f6 ; 0xf9a69
+ mov bl, dl ; 88 d3 ; 0xf9a6b
+ mov di, ax ; 89 c7 ; 0xf9a6d
+ mov ax, 0b109h ; b8 09 b1 ; 0xf9a6f
+ int 01ah ; cd 1a ; 0xf9a72
+ mov ax, cx ; 89 c8 ; 0xf9a74
+ xor dl, dl ; 30 d2 ; 0xf9a76 pciutil.c:159
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9a78
+ pop di ; 5f ; 0xf9a7b
+ pop cx ; 59 ; 0xf9a7c
+ pop bp ; 5d ; 0xf9a7d
+ retn ; c3 ; 0xf9a7e
+ ; disGetNextSymbol 0xf9a7f LB 0x4c9 -> off=0x0 cb=000000000000003f uValue=00000000000f847f 'pci_read_config_dword'
+pci_read_config_dword: ; 0xf9a7f LB 0x3f
+ push bp ; 55 ; 0xf9a7f pciutil.c:161
+ mov bp, sp ; 89 e5 ; 0xf9a80
+ push cx ; 51 ; 0xf9a82
+ push di ; 57 ; 0xf9a83
+ push ax ; 50 ; 0xf9a84
+ mov dh, al ; 88 c6 ; 0xf9a85
+ mov byte [bp-006h], bl ; 88 5e fa ; 0xf9a87
+ mov al, bl ; 88 d8 ; 0xf9a8a pciutil.c:166
+ xor ah, ah ; 30 e4 ; 0xf9a8c
+ mov di, ax ; 89 c7 ; 0xf9a8e
+ mov bx, dx ; 89 d3 ; 0xf9a90
+ mov ax, 0b109h ; b8 09 b1 ; 0xf9a92
+ int 01ah ; cd 1a ; 0xf9a95
+ test cx, cx ; 85 c9 ; 0xf9a97
+ jne short 09aafh ; 75 14 ; 0xf9a99
+ mov al, byte [bp-006h] ; 8a 46 fa ; 0xf9a9b
+ xor ah, ah ; 30 e4 ; 0xf9a9e
+ mov di, ax ; 89 c7 ; 0xf9aa0
+ inc di ; 47 ; 0xf9aa2
+ inc di ; 47 ; 0xf9aa3
+ mov bx, dx ; 89 d3 ; 0xf9aa4
+ mov ax, 0b109h ; b8 09 b1 ; 0xf9aa6
+ int 01ah ; cd 1a ; 0xf9aa9
+ test cx, cx ; 85 c9 ; 0xf9aab
+ je short 09ab4h ; 74 05 ; 0xf9aad
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9aaf
+ jmp short 09ab6h ; eb 02 ; 0xf9ab2
+ xor ax, ax ; 31 c0 ; 0xf9ab4
+ cwd ; 99 ; 0xf9ab6
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9ab7 pciutil.c:169
+ pop di ; 5f ; 0xf9aba
+ pop cx ; 59 ; 0xf9abb
+ pop bp ; 5d ; 0xf9abc
+ retn ; c3 ; 0xf9abd
+ ; disGetNextSymbol 0xf9abe LB 0x48a -> off=0x0 cb=000000000000001e uValue=00000000000f84be 'pci_write_config_word'
+pci_write_config_word: ; 0xf9abe LB 0x1e
+ push bp ; 55 ; 0xf9abe pciutil.c:171
+ mov bp, sp ; 89 e5 ; 0xf9abf
+ push di ; 57 ; 0xf9ac1
+ push ax ; 50 ; 0xf9ac2
+ mov byte [bp-004h], al ; 88 46 fc ; 0xf9ac3
+ mov al, bl ; 88 d8 ; 0xf9ac6
+ xor ah, ah ; 30 e4 ; 0xf9ac8 pciutil.c:173
+ mov di, ax ; 89 c7 ; 0xf9aca
+ mov bh, byte [bp-004h] ; 8a 7e fc ; 0xf9acc
+ mov bl, dl ; 88 d3 ; 0xf9acf
+ mov ax, 0b10ch ; b8 0c b1 ; 0xf9ad1
+ int 01ah ; cd 1a ; 0xf9ad4
+ lea sp, [bp-002h] ; 8d 66 fe ; 0xf9ad6 pciutil.c:174
+ pop di ; 5f ; 0xf9ad9
+ pop bp ; 5d ; 0xf9ada
+ retn ; c3 ; 0xf9adb
+ ; disGetNextSymbol 0xf9adc LB 0x46c -> off=0x0 cb=000000000000001d uValue=00000000000f84dc 'vds_is_present'
+vds_is_present: ; 0xf9adc LB 0x1d
+ push bx ; 53 ; 0xf9adc vds.c:32
+ push bp ; 55 ; 0xf9add
+ mov bp, sp ; 89 e5 ; 0xf9ade
+ mov bx, strict word 0007bh ; bb 7b 00 ; 0xf9ae0 vds.c:36
+ mov ax, strict word 00040h ; b8 40 00 ; 0xf9ae3
+ mov es, ax ; 8e c0 ; 0xf9ae6
+ test byte [es:bx], 020h ; 26 f6 07 20 ; 0xf9ae8 vds.c:37
+ je short 09af4h ; 74 06 ; 0xf9aec
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9aee
+ pop bp ; 5d ; 0xf9af1
+ pop bx ; 5b ; 0xf9af2
+ retn ; c3 ; 0xf9af3
+ xor ax, ax ; 31 c0 ; 0xf9af4
+ pop bp ; 5d ; 0xf9af6 vds.c:38
+ pop bx ; 5b ; 0xf9af7
+ retn ; c3 ; 0xf9af8
+ ; disGetNextSymbol 0xf9af9 LB 0x44f -> off=0x0 cb=000000000000001e uValue=00000000000f84f9 'vds_real_to_lin'
+vds_real_to_lin: ; 0xf9af9 LB 0x1e
+ push bx ; 53 ; 0xf9af9 vds.c:67
+ push cx ; 51 ; 0xf9afa
+ push bp ; 55 ; 0xf9afb
+ mov bp, sp ; 89 e5 ; 0xf9afc
+ mov bx, ax ; 89 c3 ; 0xf9afe
+ mov ax, dx ; 89 d0 ; 0xf9b00
+ xor dx, dx ; 31 d2 ; 0xf9b02 vds.c:69
+ mov cx, strict word 00004h ; b9 04 00 ; 0xf9b04
+ sal ax, 1 ; d1 e0 ; 0xf9b07
+ rcl dx, 1 ; d1 d2 ; 0xf9b09
+ loop 09b07h ; e2 fa ; 0xf9b0b
+ xor cx, cx ; 31 c9 ; 0xf9b0d
+ add ax, bx ; 01 d8 ; 0xf9b0f
+ adc dx, cx ; 11 ca ; 0xf9b11
+ pop bp ; 5d ; 0xf9b13 vds.c:70
+ pop cx ; 59 ; 0xf9b14
+ pop bx ; 5b ; 0xf9b15
+ retn ; c3 ; 0xf9b16
+ ; disGetNextSymbol 0xf9b17 LB 0x431 -> off=0x0 cb=0000000000000077 uValue=00000000000f8517 'vds_build_sg_list'
+vds_build_sg_list: ; 0xf9b17 LB 0x77
+ push bp ; 55 ; 0xf9b17 vds.c:77
+ mov bp, sp ; 89 e5 ; 0xf9b18
+ push si ; 56 ; 0xf9b1a
+ push di ; 57 ; 0xf9b1b
+ mov di, ax ; 89 c7 ; 0xf9b1c
+ mov si, dx ; 89 d6 ; 0xf9b1e
+ mov ax, bx ; 89 d8 ; 0xf9b20
+ mov dx, cx ; 89 ca ; 0xf9b22
+ mov bx, word [bp+004h] ; 8b 5e 04 ; 0xf9b24 vds.c:82
+ mov es, si ; 8e c6 ; 0xf9b27
+ mov word [es:di], bx ; 26 89 1d ; 0xf9b29
+ mov bx, word [bp+006h] ; 8b 5e 06 ; 0xf9b2c
+ mov word [es:di+002h], bx ; 26 89 5d 02 ; 0xf9b2f
+ call 09af9h ; e8 c3 ff ; 0xf9b33 vds.c:83
+ mov es, si ; 8e c6 ; 0xf9b36
+ mov word [es:di+004h], ax ; 26 89 45 04 ; 0xf9b38
+ mov word [es:di+006h], dx ; 26 89 55 06 ; 0xf9b3c
+ mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00 ; 0xf9b40 vds.c:84
+ call 09adch ; e8 93 ff ; 0xf9b46 vds.c:85
+ test ax, ax ; 85 c0 ; 0xf9b49
+ je short 09b5eh ; 74 11 ; 0xf9b4b
+ mov es, si ; 8e c6 ; 0xf9b4d vds.c:87
+ mov ax, 08105h ; b8 05 81 ; 0xf9b4f
+ mov dx, strict word 00000h ; ba 00 00 ; 0xf9b52
+ int 04bh ; cd 4b ; 0xf9b55
+ jc short 09b5bh ; 72 02 ; 0xf9b57
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf9b59
+ cbw ; 98 ; 0xf9b5b
+ jmp short 09b85h ; eb 27 ; 0xf9b5c vds.c:88
+ mov es, si ; 8e c6 ; 0xf9b5e vds.c:90
+ mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00 ; 0xf9b60
+ mov dx, word [es:di+004h] ; 26 8b 55 04 ; 0xf9b66 vds.c:91
+ mov ax, word [es:di+006h] ; 26 8b 45 06 ; 0xf9b6a
+ mov word [es:di+010h], dx ; 26 89 55 10 ; 0xf9b6e
+ mov word [es:di+012h], ax ; 26 89 45 12 ; 0xf9b72
+ mov ax, word [bp+004h] ; 8b 46 04 ; 0xf9b76 vds.c:92
+ mov word [es:di+014h], ax ; 26 89 45 14 ; 0xf9b79
+ mov ax, bx ; 89 d8 ; 0xf9b7d
+ mov word [es:di+016h], bx ; 26 89 5d 16 ; 0xf9b7f
+ xor ax, bx ; 31 d8 ; 0xf9b83 vds.c:93
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9b85 vds.c:96
+ pop di ; 5f ; 0xf9b88
+ pop si ; 5e ; 0xf9b89
+ pop bp ; 5d ; 0xf9b8a
+ retn 00004h ; c2 04 00 ; 0xf9b8b
+ ; disGetNextSymbol 0xf9b8e LB 0x3ba -> off=0x0 cb=000000000000002e uValue=00000000000f858e 'vds_free_sg_list'
+vds_free_sg_list: ; 0xf9b8e LB 0x2e
+ push bp ; 55 ; 0xf9b8e vds.c:102
+ mov bp, sp ; 89 e5 ; 0xf9b8f
+ push bx ; 53 ; 0xf9b91
+ push di ; 57 ; 0xf9b92
+ mov bx, ax ; 89 c3 ; 0xf9b93
+ call 09adch ; e8 44 ff ; 0xf9b95 vds.c:106
+ test ax, ax ; 85 c0 ; 0xf9b98
+ je short 09badh ; 74 11 ; 0xf9b9a
+ mov di, bx ; 89 df ; 0xf9b9c vds.c:108
+ mov es, dx ; 8e c2 ; 0xf9b9e
+ mov ax, 08106h ; b8 06 81 ; 0xf9ba0
+ mov dx, strict word 00000h ; ba 00 00 ; 0xf9ba3
+ int 04bh ; cd 4b ; 0xf9ba6
+ jc short 09bach ; 72 02 ; 0xf9ba8
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xf9baa
+ cbw ; 98 ; 0xf9bac
+ mov es, dx ; 8e c2 ; 0xf9bad vds.c:116
+ mov word [es:bx+00eh], strict word 00000h ; 26 c7 47 0e 00 00 ; 0xf9baf
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9bb5 vds.c:118
+ pop di ; 5f ; 0xf9bb8
+ pop bx ; 5b ; 0xf9bb9
+ pop bp ; 5d ; 0xf9bba
+ retn ; c3 ; 0xf9bbb
+ ; disGetNextSymbol 0xf9bbc LB 0x38c -> off=0x4 cb=0000000000000020 uValue=00000000000f85c0 '__U4M'
+ db 000h, 000h, 000h, 000h
+__U4M: ; 0xf9bc0 LB 0x20
+ pushfw ; 9c ; 0xf9bc0 __U4M.asm:37
+ push si ; 56 ; 0xf9bc1 __U4M.asm:65
+ push di ; 57 ; 0xf9bc2 __U4M.asm:66
+ push ax ; 50 ; 0xf9bc3 __U4M.asm:79
+ db 08bh, 0fah
+ ; mov di, dx ; 8b fa ; 0xf9bc4 __U4M.asm:80
+ mul bx ; f7 e3 ; 0xf9bc6 __U4M.asm:83
+ db 08bh, 0f2h
+ ; mov si, dx ; 8b f2 ; 0xf9bc8 __U4M.asm:84
+ xchg di, ax ; 97 ; 0xf9bca __U4M.asm:85
+ mul bx ; f7 e3 ; 0xf9bcb __U4M.asm:88
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xf9bcd __U4M.asm:89
+ pop ax ; 58 ; 0xf9bcf __U4M.asm:92
+ mul cx ; f7 e1 ; 0xf9bd0 __U4M.asm:93
+ db 003h, 0f0h
+ ; add si, ax ; 03 f0 ; 0xf9bd2 __U4M.asm:94
+ db 08bh, 0d6h
+ ; mov dx, si ; 8b d6 ; 0xf9bd4 __U4M.asm:97
+ db 08bh, 0c7h
+ ; mov ax, di ; 8b c7 ; 0xf9bd6 __U4M.asm:98
+ pop di ; 5f ; 0xf9bd8 __U4M.asm:100
+ pop si ; 5e ; 0xf9bd9 __U4M.asm:101
+ popfw ; 9d ; 0xf9bda __U4M.asm:103
+ retn ; c3 ; 0xf9bdb __U4M.asm:104
+ times 0x4 db 0
+ ; disGetNextSymbol 0xf9be0 LB 0x368 -> off=0x0 cb=0000000000000030 uValue=00000000000f85e0 '__U4D'
+__U4D: ; 0xf9be0 LB 0x30
+ pushfw ; 9c ; 0xf9be0 __U4D.asm:44
+ test cx, cx ; 85 c9 ; 0xf9be1 __U4D.asm:77
+ jne short 09bedh ; 75 08 ; 0xf9be3 __U4D.asm:78
+ div bx ; f7 f3 ; 0xf9be5 __U4D.asm:80
+ db 08bh, 0dah
+ ; mov bx, dx ; 8b da ; 0xf9be7 __U4D.asm:82
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xf9be9 __U4D.asm:84
+ popfw ; 9d ; 0xf9beb __U4D.asm:86
+ retn ; c3 ; 0xf9bec __U4D.asm:87
+ push DS ; 1e ; 0xf9bed __U4D.asm:91
+ push ES ; 06 ; 0xf9bee __U4D.asm:92
+ push bp ; 55 ; 0xf9bef __U4D.asm:99
+ sub sp, strict byte 00004h ; 83 ec 04 ; 0xf9bf0 __U4D.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xf9bf3 __U4D.asm:101
+ push SS ; 16 ; 0xf9bf5 __U4D.asm:104
+ push bp ; 55 ; 0xf9bf6 __U4D.asm:105
+ add bp, strict byte 00004h ; 83 c5 04 ; 0xf9bf7 __U4D.asm:106
+ push cx ; 51 ; 0xf9bfa __U4D.asm:109
+ push bx ; 53 ; 0xf9bfb __U4D.asm:110
+ push dx ; 52 ; 0xf9bfc __U4D.asm:113
+ push ax ; 50 ; 0xf9bfd __U4D.asm:114
+ call 09cc5h ; e8 c4 00 ; 0xf9bfe __U4D.asm:116
+ mov cx, word [bp-002h] ; 8b 4e fe ; 0xf9c01 __U4D.asm:119
+ mov bx, word [bp-004h] ; 8b 5e fc ; 0xf9c04 __U4D.asm:120
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xf9c07 __U4D.asm:124
+ pop bp ; 5d ; 0xf9c09 __U4D.asm:125
+ pop ES ; 07 ; 0xf9c0a __U4D.asm:126
+ pop DS ; 1f ; 0xf9c0b __U4D.asm:127
+ popfw ; 9d ; 0xf9c0c __U4D.asm:129
+ retn ; c3 ; 0xf9c0d __U4D.asm:130
+ times 0x2 db 0
+ ; disGetNextSymbol 0xf9c10 LB 0x338 -> off=0x0 cb=0000000000000010 uValue=00000000000f8610 '__U8RS'
+__U8RS: ; 0xf9c10 LB 0x10
+ test si, si ; 85 f6 ; 0xf9c10 __U8RS.asm:40
+ je short 09c1fh ; 74 0b ; 0xf9c12 __U8RS.asm:41
+ shr ax, 1 ; d1 e8 ; 0xf9c14 __U8RS.asm:43
+ rcr bx, 1 ; d1 db ; 0xf9c16 __U8RS.asm:44
+ rcr cx, 1 ; d1 d9 ; 0xf9c18 __U8RS.asm:45
+ rcr dx, 1 ; d1 da ; 0xf9c1a __U8RS.asm:46
+ dec si ; 4e ; 0xf9c1c __U8RS.asm:47
+ jne short 09c14h ; 75 f5 ; 0xf9c1d __U8RS.asm:48
+ retn ; c3 ; 0xf9c1f __U8RS.asm:50
+ ; disGetNextSymbol 0xf9c20 LB 0x328 -> off=0x0 cb=0000000000000010 uValue=00000000000f8620 '__U8LS'
+__U8LS: ; 0xf9c20 LB 0x10
+ test si, si ; 85 f6 ; 0xf9c20 __U8LS.asm:40
+ je short 09c2fh ; 74 0b ; 0xf9c22 __U8LS.asm:41
+ sal dx, 1 ; d1 e2 ; 0xf9c24 __U8LS.asm:43
+ rcl cx, 1 ; d1 d1 ; 0xf9c26 __U8LS.asm:44
+ rcl bx, 1 ; d1 d3 ; 0xf9c28 __U8LS.asm:45
+ rcl ax, 1 ; d1 d0 ; 0xf9c2a __U8LS.asm:46
+ dec si ; 4e ; 0xf9c2c __U8LS.asm:47
+ jne short 09c24h ; 75 f5 ; 0xf9c2d __U8LS.asm:48
+ retn ; c3 ; 0xf9c2f __U8LS.asm:50
+ ; disGetNextSymbol 0xf9c30 LB 0x318 -> off=0x0 cb=0000000000000010 uValue=00000000000f8630 '_fmemset_'
+_fmemset_: ; 0xf9c30 LB 0x10
+ push di ; 57 ; 0xf9c30 fmemset.asm:42
+ mov es, dx ; 8e c2 ; 0xf9c31 fmemset.asm:44
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xf9c33 fmemset.asm:45
+ xchg al, bl ; 86 d8 ; 0xf9c35 fmemset.asm:46
+ rep stosb ; f3 aa ; 0xf9c37 fmemset.asm:47
+ xchg al, bl ; 86 d8 ; 0xf9c39 fmemset.asm:48
+ pop di ; 5f ; 0xf9c3b fmemset.asm:50
+ retn ; c3 ; 0xf9c3c fmemset.asm:51
+ times 0x3 db 0
+ ; disGetNextSymbol 0xf9c40 LB 0x308 -> off=0x0 cb=000000000000003a uValue=00000000000f8640 '_fmemcpy_'
+_fmemcpy_: ; 0xf9c40 LB 0x3a
+ push bp ; 55 ; 0xf9c40 fmemcpy.asm:42
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xf9c41 fmemcpy.asm:43
+ push di ; 57 ; 0xf9c43 fmemcpy.asm:44
+ push DS ; 1e ; 0xf9c44 fmemcpy.asm:45
+ push si ; 56 ; 0xf9c45 fmemcpy.asm:46
+ mov es, dx ; 8e c2 ; 0xf9c46 fmemcpy.asm:48
+ db 08bh, 0f8h
+ ; mov di, ax ; 8b f8 ; 0xf9c48 fmemcpy.asm:49
+ mov ds, cx ; 8e d9 ; 0xf9c4a fmemcpy.asm:50
+ db 08bh, 0f3h
+ ; mov si, bx ; 8b f3 ; 0xf9c4c fmemcpy.asm:51
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9c4e fmemcpy.asm:52
+ rep movsb ; f3 a4 ; 0xf9c51 fmemcpy.asm:53
+ pop si ; 5e ; 0xf9c53 fmemcpy.asm:55
+ pop DS ; 1f ; 0xf9c54 fmemcpy.asm:56
+ pop di ; 5f ; 0xf9c55 fmemcpy.asm:57
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xf9c56 fmemcpy.asm:58
+ pop bp ; 5d ; 0xf9c58 fmemcpy.asm:59
+ retn ; c3 ; 0xf9c59 fmemcpy.asm:60
+ add byte [bx+si], al ; 00 00 ; 0xf9c5a
+ add byte [bx+si], al ; 00 00 ; 0xf9c5c
+ add byte [bx+si], al ; 00 00 ; 0xf9c5e
+ nop ; 90 ; 0xf9c60
+ pushfw ; 9c ; 0xf9c61
+ xchg dx, ax ; 92 ; 0xf9c62
+ pushfw ; 9c ; 0xf9c63
+ xchg si, ax ; 96 ; 0xf9c64
+ pushfw ; 9c ; 0xf9c65
+ xchg si, ax ; 96 ; 0xf9c66
+ pushfw ; 9c ; 0xf9c67
+ xchg si, ax ; 96 ; 0xf9c68
+ pushfw ; 9c ; 0xf9c69
+ cbw ; 98 ; 0xf9c6a
+ pushfw ; 9c ; 0xf9c6b
+ cbw ; 98 ; 0xf9c6c
+ pushfw ; 9c ; 0xf9c6d
+ call far 09e9ch:09e9ch ; 9a 9c 9e 9c 9e ; 0xf9c6e
+ pushfw ; 9c ; 0xf9c73
+ mov AL, byte [0a59ch] ; a0 9c a5 ; 0xf9c74
+ pushfw ; 9c ; 0xf9c77
+ cmpsw ; a7 ; 0xf9c78
+ pushfw ; 9c ; 0xf9c79
+ ; disGetNextSymbol 0xf9c7a LB 0x2ce -> off=0x0 cb=000000000000003a uValue=000000000000867a 'apm_worker'
+apm_worker: ; 0xf9c7a LB 0x3a
+ sti ; fb ; 0xf9c7a apm_pm.asm:56
+ push ax ; 50 ; 0xf9c7b apm_pm.asm:58
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xf9c7c apm_pm.asm:59
+ sub AL, strict byte 004h ; 2c 04 ; 0xf9c7e apm_pm.asm:60
+ db 08bh, 0e8h
+ ; mov bp, ax ; 8b e8 ; 0xf9c80 apm_pm.asm:61
+ sal bp, 1 ; d1 e5 ; 0xf9c82 apm_pm.asm:62
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xf9c84 apm_pm.asm:63
+ pop ax ; 58 ; 0xf9c86 apm_pm.asm:64
+ mov AH, strict byte 053h ; b4 53 ; 0xf9c87 apm_pm.asm:65
+ jnc short 09cb0h ; 73 25 ; 0xf9c89 apm_pm.asm:66
+ jmp word [cs:bp-063a0h] ; 2e ff a6 60 9c ; 0xf9c8b apm_pm.asm:68
+ jmp short 09caeh ; eb 1c ; 0xf9c90 apm_pm.asm:71
+ sti ; fb ; 0xf9c92 apm_pm.asm:74
+ hlt ; f4 ; 0xf9c93 apm_pm.asm:75
+ jmp short 09caeh ; eb 18 ; 0xf9c94 apm_pm.asm:76
+ jmp short 09caeh ; eb 16 ; 0xf9c96 apm_pm.asm:85
+ jmp short 09cb0h ; eb 16 ; 0xf9c98 apm_pm.asm:91
+ mov AH, strict byte 080h ; b4 80 ; 0xf9c9a apm_pm.asm:94
+ jmp short 09cb2h ; eb 14 ; 0xf9c9c apm_pm.asm:95
+ jmp short 09cb0h ; eb 10 ; 0xf9c9e apm_pm.asm:100
+ mov ax, 00102h ; b8 02 01 ; 0xf9ca0 apm_pm.asm:103
+ jmp short 09caeh ; eb 09 ; 0xf9ca3 apm_pm.asm:104
+ jmp short 09caeh ; eb 07 ; 0xf9ca5 apm_pm.asm:108
+ mov BL, strict byte 000h ; b3 00 ; 0xf9ca7 apm_pm.asm:111
+ mov cx, strict word 00000h ; b9 00 00 ; 0xf9ca9 apm_pm.asm:112
+ jmp short 09caeh ; eb 00 ; 0xf9cac apm_pm.asm:113
+ clc ; f8 ; 0xf9cae apm_pm.asm:116
+ retn ; c3 ; 0xf9caf apm_pm.asm:117
+ mov AH, strict byte 009h ; b4 09 ; 0xf9cb0 apm_pm.asm:120
+ stc ; f9 ; 0xf9cb2 apm_pm.asm:123
+ retn ; c3 ; 0xf9cb3 apm_pm.asm:124
+ ; disGetNextSymbol 0xf9cb4 LB 0x294 -> off=0x0 cb=0000000000000011 uValue=00000000000f86b4 'apm_pm16_entry'
+apm_pm16_entry: ; 0xf9cb4 LB 0x11
+ mov AH, strict byte 002h ; b4 02 ; 0xf9cb4 apm_pm.asm:136
+ push DS ; 1e ; 0xf9cb6 apm_pm.asm:142
+ push bp ; 55 ; 0xf9cb7 apm_pm.asm:143
+ push CS ; 0e ; 0xf9cb8 apm_pm.asm:145
+ pop bp ; 5d ; 0xf9cb9 apm_pm.asm:146
+ add bp, strict byte 00008h ; 83 c5 08 ; 0xf9cba apm_pm.asm:147
+ mov ds, bp ; 8e dd ; 0xf9cbd apm_pm.asm:148
+ call 09c7ah ; e8 b8 ff ; 0xf9cbf apm_pm.asm:150
+ pop bp ; 5d ; 0xf9cc2 apm_pm.asm:152
+ pop DS ; 1f ; 0xf9cc3 apm_pm.asm:153
+ retf ; cb ; 0xf9cc4 apm_pm.asm:155
+ ; disGetNextSymbol 0xf9cc5 LB 0x283 -> off=0x0 cb=0000000000000265 uValue=00000000000f86c5 'DoUInt32Div'
+DoUInt32Div: ; 0xf9cc5 LB 0x265
+ push bp ; 55 ; 0xf9cc5 DoUInt32Div.c:28
+ mov bp, sp ; 89 e5 ; 0xf9cc6
+ push si ; 56 ; 0xf9cc8
+ push di ; 57 ; 0xf9cc9
+ sub sp, strict byte 00018h ; 83 ec 18 ; 0xf9cca
+ lds bx, [bp+00ch] ; c5 5e 0c ; 0xf9ccd
+ lea si, [bp+004h] ; 8d 76 04 ; 0xf9cd0 DoUInt32Div.c:972
+ mov word [bp-010h], si ; 89 76 f0 ; 0xf9cd3
+ mov [bp-00eh], ss ; 8c 56 f2 ; 0xf9cd6
+ lea di, [bp+008h] ; 8d 7e 08 ; 0xf9cd9
+ mov [bp-008h], ss ; 8c 56 f8 ; 0xf9cdc
+ lea si, [bp-01ch] ; 8d 76 e4 ; 0xf9cdf
+ mov word [bp-00ch], si ; 89 76 f4 ; 0xf9ce2
+ mov [bp-00ah], ss ; 8c 56 f6 ; 0xf9ce5
+ mov si, bx ; 89 de ; 0xf9ce8
+ mov [bp-006h], ds ; 8c 5e fa ; 0xf9cea
+ cmp word [bx+002h], strict byte 00000h ; 83 7f 02 00 ; 0xf9ced DoUInt32Div.c:980
+ jne short 09d15h ; 75 22 ; 0xf9cf1
+ mov ax, word [bx] ; 8b 07 ; 0xf9cf3 DoUInt32Div.c:982
+ test ax, ax ; 85 c0 ; 0xf9cf5
+ je short 09d12h ; 74 19 ; 0xf9cf7
+ cmp ax, strict word 00001h ; 3d 01 00 ; 0xf9cf9 DoUInt32Div.c:985
+ jne short 09d15h ; 75 17 ; 0xf9cfc
+ xor ax, ax ; 31 c0 ; 0xf9cfe DoUInt32Div.c:67
+ mov word [bp+00ah], ax ; 89 46 0a ; 0xf9d00
+ mov word [bp+008h], ax ; 89 46 08 ; 0xf9d03 DoUInt32Div.c:68
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9d06 DoUInt32Div.c:988
+ mov word [bp+004h], ax ; 89 46 04 ; 0xf9d09
+ mov ax, word [bp-01ah] ; 8b 46 e6 ; 0xf9d0c
+ mov word [bp+006h], ax ; 89 46 06 ; 0xf9d0f
+ jmp near 09f1dh ; e9 08 02 ; 0xf9d12
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d15 DoUInt32Div.c:726
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d18
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d1b
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9d1e
+ je short 09d3bh ; 74 18 ; 0xf9d21
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9d23 DoUInt32Div.c:727
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d26
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d29
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9d2c
+ jbe short 09d36h ; 76 05 ; 0xf9d2f
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9d31
+ jmp short 09d5ch ; eb 26 ; 0xf9d34
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9d36
+ jmp short 09d5ch ; eb 21 ; 0xf9d39
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9d3b DoUInt32Div.c:728
+ mov ax, word [bx] ; 8b 07 ; 0xf9d3e
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d40
+ cmp ax, word [si] ; 3b 04 ; 0xf9d43
+ je short 09d5ah ; 74 13 ; 0xf9d45
+ mov ds, [bp-00ah] ; 8e 5e f6 ; 0xf9d47 DoUInt32Div.c:729
+ mov ax, word [bx] ; 8b 07 ; 0xf9d4a
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9d4c
+ cmp ax, word [si] ; 3b 04 ; 0xf9d4f
+ jbe short 09d55h ; 76 02 ; 0xf9d51
+ jmp short 09d31h ; eb dc ; 0xf9d53
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xf9d55
+ jmp short 09d5ch ; eb 02 ; 0xf9d58
+ xor ax, ax ; 31 c0 ; 0xf9d5a DoUInt32Div.c:730
+ test ax, ax ; 85 c0 ; 0xf9d5c DoUInt32Div.c:996
+ jnl short 09d7eh ; 7d 1e ; 0xf9d5e
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d60 DoUInt32Div.c:998
+ mov ax, word [bx] ; 8b 07 ; 0xf9d63
+ mov dx, word [bx+002h] ; 8b 57 02 ; 0xf9d65
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9d68
+ mov word [di], ax ; 89 05 ; 0xf9d6b
+ mov word [di+002h], dx ; 89 55 02 ; 0xf9d6d
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9d70 DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9d73
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9d78 DoUInt32Div.c:68
+ jmp short 09d12h ; eb 94 ; 0xf9d7c DoUInt32Div.c:1003
+ jne short 09d95h ; 75 15 ; 0xf9d7e
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9d80 DoUInt32Div.c:67
+ mov word [di+002h], ax ; 89 45 02 ; 0xf9d83
+ mov word [di], ax ; 89 05 ; 0xf9d86 DoUInt32Div.c:68
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9d88 DoUInt32Div.c:397
+ mov word [bx], strict word 00001h ; c7 07 01 00 ; 0xf9d8b
+ mov word [bx+002h], ax ; 89 47 02 ; 0xf9d8f DoUInt32Div.c:398
+ jmp near 09f1dh ; e9 88 01 ; 0xf9d92 DoUInt32Div.c:1008
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9d95 DoUInt32Div.c:954
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9d98
+ test ax, ax ; 85 c0 ; 0xf9d9b
+ je short 09db0h ; 74 11 ; 0xf9d9d
+ push ax ; 50 ; 0xf9d9f DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9da0
+ mov ds, ax ; 8e d8 ; 0xf9da3
+ call 09f30h ; e8 88 01 ; 0xf9da5
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9da8
+ add ax, strict word 00010h ; 05 10 00 ; 0xf9dab
+ jmp short 09dbdh ; eb 0d ; 0xf9dae DoUInt32Div.c:956
+ push word [bx] ; ff 37 ; 0xf9db0 DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9db2
+ mov ds, ax ; 8e d8 ; 0xf9db5
+ call 09f30h ; e8 76 01 ; 0xf9db7
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9dba
+ mov word [bp-014h], ax ; 89 46 ec ; 0xf9dbd DoUInt32Div.c:959
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9dc0 DoUInt32Div.c:954
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xf9dc3
+ test ax, ax ; 85 c0 ; 0xf9dc6
+ je short 09ddbh ; 74 11 ; 0xf9dc8
+ push ax ; 50 ; 0xf9dca DoUInt32Div.c:955
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9dcb
+ mov ds, ax ; 8e d8 ; 0xf9dce
+ call 09f30h ; e8 5d 01 ; 0xf9dd0
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9dd3
+ add ax, strict word 00010h ; 05 10 00 ; 0xf9dd6
+ jmp short 09de8h ; eb 0d ; 0xf9dd9 DoUInt32Div.c:956
+ push word [si] ; ff 34 ; 0xf9ddb DoUInt32Div.c:957
+ mov ax, 0f000h ; b8 00 f0 ; 0xf9ddd
+ mov ds, ax ; 8e d8 ; 0xf9de0
+ call 09f30h ; e8 4b 01 ; 0xf9de2
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xf9de5
+ mov dx, word [bp-014h] ; 8b 56 ec ; 0xf9de8 DoUInt32Div.c:959
+ sub dx, ax ; 29 c2 ; 0xf9deb
+ mov word [bp-012h], dx ; 89 56 ee ; 0xf9ded
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9df0 DoUInt32Div.c:1014
+ mov ax, word [si] ; 8b 04 ; 0xf9df3
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9df5
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xf9df8
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9dfb
+ test dx, dx ; 85 d2 ; 0xf9dfe DoUInt32Div.c:1015
+ je short 09e58h ; 74 56 ; 0xf9e00
+ mov cx, dx ; 89 d1 ; 0xf9e02 DoUInt32Div.c:280
+ xor ch, dh ; 30 f5 ; 0xf9e04
+ and cl, 01fh ; 80 e1 1f ; 0xf9e06
+ mov ax, word [si] ; 8b 04 ; 0xf9e09 DoUInt32Div.c:282
+ mov dx, word [si+002h] ; 8b 54 02 ; 0xf9e0b
+ jcxz 09e16h ; e3 06 ; 0xf9e0e
+ sal ax, 1 ; d1 e0 ; 0xf9e10
+ rcl dx, 1 ; d1 d2 ; 0xf9e12
+ loop 09e10h ; e2 fa ; 0xf9e14
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9e16
+ mov word [bp-016h], dx ; 89 56 ea ; 0xf9e19
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9e1c DoUInt32Div.c:763
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9e1f
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9e22
+ jnbe short 09e36h ; 77 0f ; 0xf9e25
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9e27
+ cmp ax, word [bx+002h] ; 3b 47 02 ; 0xf9e2a
+ jne short 09e3ah ; 75 0b ; 0xf9e2d
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9e2f
+ cmp ax, word [bx] ; 3b 07 ; 0xf9e32
+ jbe short 09e3ah ; 76 04 ; 0xf9e34
+ mov AL, strict byte 001h ; b0 01 ; 0xf9e36
+ jmp short 09e3ch ; eb 02 ; 0xf9e38
+ xor al, al ; 30 c0 ; 0xf9e3a
+ test al, al ; 84 c0 ; 0xf9e3c DoUInt32Div.c:769
+ je short 09e63h ; 74 23 ; 0xf9e3e
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xf9e40 DoUInt32Div.c:680
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9e43
+ dec word [bp-012h] ; ff 4e ee ; 0xf9e46
+ jmp short 09e63h ; eb 18 ; 0xf9e49
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9e4b DoUInt32Div.c:632
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9e4e
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9e51
+ loop 09e4eh ; e2 f8 ; 0xf9e54
+ jmp short 09e46h ; eb ee ; 0xf9e56 DoUInt32Div.c:647
+ mov ax, word [si] ; 8b 04 ; 0xf9e58 DoUInt32Div.c:1025
+ mov word [bp-018h], ax ; 89 46 e8 ; 0xf9e5a
+ mov ax, word [si+002h] ; 8b 44 02 ; 0xf9e5d
+ mov word [bp-016h], ax ; 89 46 ea ; 0xf9e60
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9e63 DoUInt32Div.c:67
+ mov word [bx+002h], strict word 00000h ; c7 47 02 00 00 ; 0xf9e66
+ mov word [bx], strict word 00000h ; c7 07 00 00 ; 0xf9e6b DoUInt32Div.c:68
+ lds bx, [bp-00ch] ; c5 5e f4 ; 0xf9e6f DoUInt32Div.c:1028
+ mov dx, word [bx] ; 8b 17 ; 0xf9e72
+ mov ax, word [bx+002h] ; 8b 47 02 ; 0xf9e74
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e77
+ mov word [di], dx ; 89 15 ; 0xf9e7a
+ mov word [di+002h], ax ; 89 45 02 ; 0xf9e7c
+ mov dx, word [di] ; 8b 15 ; 0xf9e7f DoUInt32Div.c:782
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9e81
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9e84
+ jnbe short 09e8fh ; 77 06 ; 0xf9e87
+ jne short 09e93h ; 75 08 ; 0xf9e89
+ cmp dx, word [si] ; 3b 14 ; 0xf9e8b
+ jc short 09e93h ; 72 04 ; 0xf9e8d
+ mov AL, strict byte 001h ; b0 01 ; 0xf9e8f
+ jmp short 09e95h ; eb 02 ; 0xf9e91
+ xor al, al ; 30 c0 ; 0xf9e93
+ test al, al ; 84 c0 ; 0xf9e95 DoUInt32Div.c:788
+ je short 09efah ; 74 61 ; 0xf9e97
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9e99 DoUInt32Div.c:782
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xf9e9c
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9e9f
+ jnbe short 09eb0h ; 77 0c ; 0xf9ea2
+ cmp ax, word [bp-016h] ; 3b 46 ea ; 0xf9ea4
+ jne short 09eb4h ; 75 0b ; 0xf9ea7
+ mov ax, word [di] ; 8b 05 ; 0xf9ea9
+ cmp ax, word [bp-018h] ; 3b 46 e8 ; 0xf9eab
+ jc short 09eb4h ; 72 04 ; 0xf9eae
+ mov AL, strict byte 001h ; b0 01 ; 0xf9eb0
+ jmp short 09eb6h ; eb 02 ; 0xf9eb2
+ xor al, al ; 30 c0 ; 0xf9eb4
+ test al, al ; 84 c0 ; 0xf9eb6 DoUInt32Div.c:788
+ je short 09ee0h ; 74 26 ; 0xf9eb8
+ mov ax, word [bp-018h] ; 8b 46 e8 ; 0xf9eba DoUInt32Div.c:451
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9ebd
+ sub word [di], ax ; 29 05 ; 0xf9ec0
+ mov ax, word [bp-016h] ; 8b 46 ea ; 0xf9ec2
+ sbb word [di+002h], ax ; 19 45 02 ; 0xf9ec5
+ mov ax, strict word 00001h ; b8 01 00 ; 0xf9ec8 DoUInt32Div.c:586
+ xor dx, dx ; 31 d2 ; 0xf9ecb
+ mov cx, word [bp-012h] ; 8b 4e ee ; 0xf9ecd
+ jcxz 09ed8h ; e3 06 ; 0xf9ed0
+ sal ax, 1 ; d1 e0 ; 0xf9ed2
+ rcl dx, 1 ; d1 d2 ; 0xf9ed4
+ loop 09ed2h ; e2 fa ; 0xf9ed6
+ lds bx, [bp-010h] ; c5 5e f0 ; 0xf9ed8
+ or word [bx], ax ; 09 07 ; 0xf9edb
+ or word [bx+002h], dx ; 09 57 02 ; 0xf9edd
+ mov ds, [bp-008h] ; 8e 5e f8 ; 0xf9ee0 DoUInt32Div.c:744
+ mov dx, word [di] ; 8b 15 ; 0xf9ee3
+ mov ax, word [di+002h] ; 8b 45 02 ; 0xf9ee5
+ mov ds, [bp-006h] ; 8e 5e fa ; 0xf9ee8
+ cmp ax, word [si+002h] ; 3b 44 02 ; 0xf9eeb
+ jc short 09ef6h ; 72 06 ; 0xf9eee
+ jne short 09efch ; 75 0a ; 0xf9ef0
+ cmp dx, word [si] ; 3b 14 ; 0xf9ef2
+ jnc short 09efch ; 73 06 ; 0xf9ef4
+ mov AL, strict byte 001h ; b0 01 ; 0xf9ef6
+ jmp short 09efeh ; eb 04 ; 0xf9ef8
+ jmp short 09f1dh ; eb 21 ; 0xf9efa
+ xor al, al ; 30 c0 ; 0xf9efc
+ test al, al ; 84 c0 ; 0xf9efe DoUInt32Div.c:750
+ je short 09f11h ; 74 0f ; 0xf9f00
+ jmp short 09f1dh ; eb 19 ; 0xf9f02 DoUInt32Div.c:1043
+ mov cx, strict word 0001fh ; b9 1f 00 ; 0xf9f04 DoUInt32Div.c:680
+ sal word [bp-018h], 1 ; d1 66 e8 ; 0xf9f07
+ rcl word [bp-016h], 1 ; d1 56 ea ; 0xf9f0a
+ loop 09f07h ; e2 f8 ; 0xf9f0d
+ jmp short 09f17h ; eb 06 ; 0xf9f0f DoUInt32Div.c:647
+ shr word [bp-016h], 1 ; d1 6e ea ; 0xf9f11 DoUInt32Div.c:653
+ rcr word [bp-018h], 1 ; d1 5e e8 ; 0xf9f14
+ dec word [bp-012h] ; ff 4e ee ; 0xf9f17 DoUInt32Div.c:1045
+ jmp near 09e99h ; e9 7c ff ; 0xf9f1a DoUInt32Div.c:1046
+ mov ax, word [bp-01ch] ; 8b 46 e4 ; 0xf9f1d DoUInt32Div.c:32
+ mov dx, word [bp-01ah] ; 8b 56 e6 ; 0xf9f20
+ lea sp, [bp-004h] ; 8d 66 fc ; 0xf9f23 DoUInt32Div.c:33
+ pop di ; 5f ; 0xf9f26
+ pop si ; 5e ; 0xf9f27
+ pop bp ; 5d ; 0xf9f28
+ retn ; c3 ; 0xf9f29
+ ; disGetNextSymbol 0xf9f2a LB 0x1e -> off=0x6 cb=0000000000000018 uValue=00000000000f8930 '_ASMBitLastSetU16'
+ db 000h, 000h, 000h, 000h, 000h, 000h
+_ASMBitLastSetU16: ; 0xf9f30 LB 0x18
+ push bp ; 55 ; 0xf9f30 ASMBitLastSetU16.asm:43
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xf9f31 ASMBitLastSetU16.asm:44
+ mov cx, word [bp+004h] ; 8b 4e 04 ; 0xf9f33 ASMBitLastSetU16.asm:46
+ test cx, cx ; 85 c9 ; 0xf9f36 ASMBitLastSetU16.asm:47
+ je short 09f44h ; 74 0a ; 0xf9f38 ASMBitLastSetU16.asm:48
+ mov ax, strict word 00010h ; b8 10 00 ; 0xf9f3a ASMBitLastSetU16.asm:50
+ sal cx, 1 ; d1 e1 ; 0xf9f3d ASMBitLastSetU16.asm:52
+ jc short 09f46h ; 72 05 ; 0xf9f3f ASMBitLastSetU16.asm:53
+ dec ax ; 48 ; 0xf9f41 ASMBitLastSetU16.asm:54
+ jmp short 09f3dh ; eb f9 ; 0xf9f42 ASMBitLastSetU16.asm:55
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xf9f44 ASMBitLastSetU16.asm:58
+ pop bp ; 5d ; 0xf9f46 ASMBitLastSetU16.asm:60
+ retn ; c3 ; 0xf9f47 ASMBitLastSetU16.asm:61
+
+ ; Padding 0x3ab8 bytes at 0xf9f48
+ times 15032 db 0
+
+section BIOS32 progbits vstart=0xda00 align=1 ; size=0x39d class=CODE group=AUTO
+ ; disGetNextSymbol 0xfda00 LB 0x39d -> off=0x0 cb=0000000000000026 uValue=00000000000f0000 'bios32_service'
+bios32_service: ; 0xfda00 LB 0x26
+ pushfw ; 9c ; 0xfda00 pcibio32.asm:52
+ cmp bl, 000h ; 80 fb 00 ; 0xfda01 pcibio32.asm:54
+ jne short 0da22h ; 75 1c ; 0xfda04 pcibio32.asm:55
+ cmp ax, 05024h ; 3d 24 50 ; 0xfda06 pcibio32.asm:57
+ inc bx ; 43 ; 0xfda09
+ dec cx ; 49 ; 0xfda0a
+ mov AL, strict byte 080h ; b0 80 ; 0xfda0b pcibio32.asm:58
+ jne short 0da20h ; 75 11 ; 0xfda0d pcibio32.asm:59
+ mov bx, strict word 00000h ; bb 00 00 ; 0xfda0f pcibio32.asm:61
+ db 00fh
+ add byte [bx+di-01000h], bh ; 00 b9 00 f0 ; 0xfda13
+ add byte [bx+si], al ; 00 00 ; 0xfda17
+ mov dx, 0da26h ; ba 26 da ; 0xfda19 pcibio32.asm:63
+ add byte [bx+si], al ; 00 00 ; 0xfda1c
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfda1e pcibio32.asm:64
+ popfw ; 9d ; 0xfda20 pcibio32.asm:66
+ retf ; cb ; 0xfda21 pcibio32.asm:67
+ mov AL, strict byte 081h ; b0 81 ; 0xfda22 pcibio32.asm:70
+ jmp short 0da20h ; eb fa ; 0xfda24 pcibio32.asm:71
+ ; disGetNextSymbol 0xfda26 LB 0x377 -> off=0x0 cb=000000000000000d uValue=00000000000f0026 'pcibios32_entry'
+pcibios32_entry: ; 0xfda26 LB 0xd
+ pushfw ; 9c ; 0xfda26 pcibio32.asm:80
+ cld ; fc ; 0xfda27 pcibio32.asm:81
+ push ES ; 06 ; 0xfda28 pcibio32.asm:83
+ pushaw ; 60 ; 0xfda29 pcibio32.asm:84
+ call 0db4ah ; e8 1d 01 ; 0xfda2a pcibio32.asm:85
+ add byte [bx+si], al ; 00 00 ; 0xfda2d
+ popaw ; 61 ; 0xfda2f pcibio32.asm:86
+ pop ES ; 07 ; 0xfda30 pcibio32.asm:87
+ popfw ; 9d ; 0xfda31 pcibio32.asm:89
+ retf ; cb ; 0xfda32 pcibio32.asm:90
+ ; disGetNextSymbol 0xfda33 LB 0x36a -> off=0x0 cb=0000000000000022 uValue=00000000000f0033 'pci32_select_reg_'
+pci32_select_reg_: ; 0xfda33 LB 0x22
+ push bp ; 55 ; 0xfda33 pci32.c:188
+ mov bp, sp ; 89 e5 ; 0xfda34
+ push bx ; 53 ; 0xfda36
+ and dl, 0fch ; 80 e2 fc ; 0xfda37 pci32.c:190
+ mov bx, dx ; 89 d3 ; 0xfda3a
+ mov dx, 00cf8h ; ba f8 0c ; 0xfda3c
+ add byte [bx+si], al ; 00 00 ; 0xfda3f
+ db 00fh, 0b7h, 0c0h
+ ; movzx ax, ax ; 0f b7 c0 ; 0xfda41
+ sal ax, 008h ; c1 e0 08 ; 0xfda44
+ or ax, strict word 00000h ; 0d 00 00 ; 0xfda47
+ add byte [bx+si-03c76h], al ; 00 80 8a c3 ; 0xfda4a
+ out DX, ax ; ef ; 0xfda4e
+ lea sp, [di-004h] ; 8d 65 fc ; 0xfda4f pci32.c:191
+ pop bx ; 5b ; 0xfda52
+ pop bp ; 5d ; 0xfda53
+ retn ; c3 ; 0xfda54
+ ; disGetNextSymbol 0xfda55 LB 0x348 -> off=0x0 cb=00000000000000f7 uValue=00000000000f0055 'pci32_find_device_'
+pci32_find_device_: ; 0xfda55 LB 0xf7
+ push bp ; 55 ; 0xfda55 pci32.c:221
+ mov bp, sp ; 89 e5 ; 0xfda56
+ push cx ; 51 ; 0xfda58
+ push si ; 56 ; 0xfda59
+ push di ; 57 ; 0xfda5a
+ sub sp, strict byte 00014h ; 83 ec 14 ; 0xfda5b
+ push ax ; 50 ; 0xfda5e
+ mov cx, dx ; 89 d1 ; 0xfda5f
+ mov si, bx ; 89 de ; 0xfda61
+ test bx, bx ; 85 db ; 0xfda63 pci32.c:231
+ xor bx, bx ; 31 db ; 0xfda65 pci32.c:238
+ mov byte [di-010h], 000h ; c6 45 f0 00 ; 0xfda67 pci32.c:239
+ test bl, 007h ; f6 c3 07 ; 0xfda6b pci32.c:249
+ jne short 0daa6h ; 75 36 ; 0xfda6e
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfda70 pci32.c:250
+ mov dx, strict word 0000eh ; ba 0e 00 ; 0xfda73
+ add byte [bx+si], al ; 00 00 ; 0xfda76
+ call 0da31h ; e8 b6 ff ; 0xfda78
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfda7d pci32.c:251
+ add byte [bx+si], al ; 00 00 ; 0xfda80
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfda82
+ in AL, DX ; ec ; 0xfda84
+ mov byte [di-014h], al ; 88 45 ec ; 0xfda85
+ cmp AL, strict byte 0ffh ; 3c ff ; 0xfda88 pci32.c:252
+ jne short 0da94h ; 75 08 ; 0xfda8a
+ add bx, strict byte 00008h ; 83 c3 08 ; 0xfda8c pci32.c:253
+ jmp near 0db1ch ; e9 8a 00 ; 0xfda8f pci32.c:254
+ add byte [bx+si], al ; 00 00 ; 0xfda92
+ test byte [di-014h], 080h ; f6 45 ec 80 ; 0xfda94 pci32.c:256
+ je short 0daa1h ; 74 07 ; 0xfda98
+ mov di, strict word 00001h ; bf 01 00 ; 0xfda9a pci32.c:257
+ add byte [bx+si], al ; 00 00 ; 0xfda9d
+ jmp short 0daa6h ; eb 05 ; 0xfda9f pci32.c:258
+ mov di, strict word 00008h ; bf 08 00 ; 0xfdaa1 pci32.c:259
+ add byte [bx+si], al ; 00 00 ; 0xfdaa4
+ mov al, byte [di-014h] ; 8a 45 ec ; 0xfdaa6 pci32.c:270
+ and AL, strict byte 007h ; 24 07 ; 0xfdaa9
+ cmp AL, strict byte 001h ; 3c 01 ; 0xfdaab
+ jne short 0dad5h ; 75 26 ; 0xfdaad
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdaaf
+ mov dx, ax ; 89 c2 ; 0xfdab2
+ sar dx, 008h ; c1 fa 08 ; 0xfdab4
+ test dx, dx ; 85 d2 ; 0xfdab7
+ jne short 0dad5h ; 75 1a ; 0xfdab9
+ mov dx, strict word 0001ah ; ba 1a 00 ; 0xfdabb pci32.c:272
+ add byte [bx+si], al ; 00 00 ; 0xfdabe
+ call 0da31h ; e8 6e ff ; 0xfdac0
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfeh ; ba fe 0c ; 0xfdac5 pci32.c:273
+ add byte [bx+si], al ; 00 00 ; 0xfdac8
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdaca
+ in AL, DX ; ec ; 0xfdacc
+ cmp al, byte [di-010h] ; 3a 45 f0 ; 0xfdacd pci32.c:274
+ jbe short 0dad5h ; 76 03 ; 0xfdad0
+ mov byte [di-010h], al ; 88 45 f0 ; 0xfdad2 pci32.c:275
+ test si, si ; 85 f6 ; 0xfdad5 pci32.c:279
+ je short 0dae0h ; 74 07 ; 0xfdad7
+ mov ax, strict word 00008h ; b8 08 00 ; 0xfdad9
+ add byte [bx+si], al ; 00 00 ; 0xfdadc
+ jmp short 0dae2h ; eb 02 ; 0xfdade
+ xor ax, ax ; 31 c0 ; 0xfdae0
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdae2
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdae5
+ call 0da31h ; e8 46 ff ; 0xfdae8
+ db 0ffh
+ db 0ffh
+ mov dx, 00cfch ; ba fc 0c ; 0xfdaed pci32.c:280
+ add byte [bx+si], al ; 00 00 ; 0xfdaf0
+ in ax, DX ; ed ; 0xfdaf2
+ mov word [di-018h], ax ; 89 45 e8 ; 0xfdaf3
+ mov word [di-020h], strict word 00000h ; c7 45 e0 00 00 ; 0xfdaf6 pci32.c:281
+ add byte [bx+si], al ; 00 00 ; 0xfdafb
+ test si, si ; 85 f6 ; 0xfdafd pci32.c:284
+ je short 0db07h ; 74 06 ; 0xfdaff
+ shr ax, 008h ; c1 e8 08 ; 0xfdb01 pci32.c:285
+ mov word [di-018h], ax ; 89 45 e8 ; 0xfdb04
+ mov ax, word [di-018h] ; 8b 45 e8 ; 0xfdb07 pci32.c:292
+ cmp ax, word [di-024h] ; 3b 45 dc ; 0xfdb0a
+ je short 0db15h ; 74 06 ; 0xfdb0d
+ cmp word [di-020h], strict byte 00000h ; 83 7d e0 00 ; 0xfdb0f pci32.c:293
+ je short 0db1ch ; 74 07 ; 0xfdb13
+ dec cx ; 49 ; 0xfdb15
+ cmp ecx, strict byte 0ffffffffh ; 66 83 f9 ff ; 0xfdb16
+ je short 0db34h ; 74 18 ; 0xfdb1a
+ add bx, di ; 01 fb ; 0xfdb1c pci32.c:301
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb1e pci32.c:302
+ sar ax, 008h ; c1 f8 08 ; 0xfdb21
+ mov word [di-01ch], ax ; 89 45 e4 ; 0xfdb24
+ movzx ax, byte [di-010h] ; 0f b6 45 f0 ; 0xfdb27
+ cmp ax, word [di-01ch] ; 3b 45 e4 ; 0xfdb2b
+ jnl near 0da69h ; 0f 8d 37 ff ; 0xfdb2e
+ db 0ffh
+ jmp word [bp-07dh] ; ff 66 83 ; 0xfdb33
+ stc ; f9 ; 0xfdb36
+ push word [di+005h] ; ff 75 05 ; 0xfdb37
+ db 00fh, 0b7h, 0c3h
+ ; movzx ax, bx ; 0f b7 c3 ; 0xfdb3a
+ jmp short 0db44h ; eb 05 ; 0xfdb3d
+ mov ax, strict word 0ffffh ; b8 ff ff ; 0xfdb3f
+ add byte [bx+si], al ; 00 00 ; 0xfdb42
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdb44 pci32.c:309
+ pop di ; 5f ; 0xfdb47
+ pop si ; 5e ; 0xfdb48
+ pop cx ; 59 ; 0xfdb49
+ pop bp ; 5d ; 0xfdb4a
+ retn ; c3 ; 0xfdb4b
+ ; disGetNextSymbol 0xfdb4c LB 0x251 -> off=0x0 cb=0000000000000251 uValue=00000000000f014c '_pci32_function'
+_pci32_function: ; 0xfdb4c LB 0x251
+ push bp ; 55 ; 0xfdb4c pci32.c:311
+ mov bp, sp ; 89 e5 ; 0xfdb4d
+ push bx ; 53 ; 0xfdb4f
+ push si ; 56 ; 0xfdb50
+ push di ; 57 ; 0xfdb51
+ push ax ; 50 ; 0xfdb52
+ push ax ; 50 ; 0xfdb53
+ and dword [di+024h], strict dword 0658100ffh ; 66 81 65 24 ff 00 81 65 ; 0xfdb54 pci32.c:318
+ sub AL, strict byte 0feh ; 2c fe ; 0xfdb5c
+ inc word [bx+si] ; ff 00 ; 0xfdb5e
+ add byte [bp+di+02445h], cl ; 00 8b 45 24 ; 0xfdb60
+ xor ah, ah ; 30 e4 ; 0xfdb64
+ cmp eax, strict dword 029720003h ; 66 3d 03 00 72 29 ; 0xfdb66
+ jbe near 0dc09h ; 0f 86 99 00 ; 0xfdb6c
+ add byte [bx+si], al ; 00 00 ; 0xfdb70
+ cmp eax, strict dword 0840f000eh ; 66 3d 0e 00 0f 84 ; 0xfdb72
+ test ax, strict word 00001h ; a9 01 00 ; 0xfdb78
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdb7b
+ or byte [bx+si], al ; 08 00 ; 0xfdb7e
+ jc near 0dd83h ; 0f 82 ff 01 ; 0xfdb80
+ add byte [bx+si], al ; 00 00 ; 0xfdb84
+ cmp eax, strict dword 0860f000dh ; 66 3d 0d 00 0f 86 ; 0xfdb86
+ test AL, strict byte 000h ; a8 00 ; 0xfdb8c
+ add byte [bx+si], al ; 00 00 ; 0xfdb8e
+ jmp near 0dd83h ; e9 f0 01 ; 0xfdb90
+ add byte [bx+si], al ; 00 00 ; 0xfdb93
+ cmp eax, strict dword 028740002h ; 66 3d 02 00 74 28 ; 0xfdb95
+ cmp eax, strict dword 0850f0001h ; 66 3d 01 00 0f 85 ; 0xfdb9b
+ loopne 0dba4h ; e0 01 ; 0xfdba1
+ add byte [bx+si], al ; 00 00 ; 0xfdba3
+ mov dword [di+024h], strict dword 0c7660001h ; 66 c7 45 24 01 00 66 c7 ; 0xfdba5 pci32.c:323
+ inc bp ; 45 ; 0xfdbad
+ sbb byte [bx+si], dl ; 18 10 ; 0xfdbae
+ add dh, byte [bx+di] ; 02 31 ; 0xfdbb0
+ sal byte [bp-077h], 045h ; c0 66 89 45 ; 0xfdbb2
+ and bh, al ; 20 c7 ; 0xfdbb6
+ inc bp ; 45 ; 0xfdbb8
+ sbb AL, strict byte 050h ; 1c 50 ; 0xfdbb9
+ inc bx ; 43 ; 0xfdbbb
+ dec cx ; 49 ; 0xfdbbc
+ and cl, ch ; 20 e9 ; 0xfdbbd
+ rol byte [bx+di], CL ; d2 01 ; 0xfdbbf
+ add byte [bx+si], al ; 00 00 ; 0xfdbc1
+ cmp dword [di+01ch], strict byte 0ffffffffh ; 66 83 7d 1c ff ; 0xfdbc3 pci32.c:333
+ jne short 0dbd7h ; 75 0d ; 0xfdbc8
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbca pci32.c:334
+ xor ah, ah ; 30 e4 ; 0xfdbcd
+ or ah, 083h ; 80 cc 83 ; 0xfdbcf
+ jmp near 0dd8bh ; e9 b6 01 ; 0xfdbd2 pci32.c:335
+ add byte [bx+si], al ; 00 00 ; 0xfdbd5
+ xor bx, bx ; 31 db ; 0xfdbd7 pci32.c:337
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdbd9
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdbdd
+ sal ax, 010h ; c1 e0 10 ; 0xfdbe1
+ db 00fh, 0b7h, 04dh, 01ch
+ ; movzx cx, [di+01ch] ; 0f b7 4d 1c ; 0xfdbe4
+ or ax, cx ; 09 c8 ; 0xfdbe8
+ call 0da53h ; e8 66 fe ; 0xfdbea
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdbee
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdbf2
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdbf5 pci32.c:339
+ xor ah, ah ; 30 e4 ; 0xfdbf8
+ or ah, 086h ; 80 cc 86 ; 0xfdbfa
+ jmp near 0dd8bh ; e9 8b 01 ; 0xfdbfd
+ add byte [bx+si], al ; 00 00 ; 0xfdc00
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc02 pci32.c:340
+ jmp near 0dd93h ; e9 8a 01 ; 0xfdc06 pci32.c:345
+ add byte [bx+si], al ; 00 00 ; 0xfdc09
+ db 00fh, 0b7h, 055h, 00ch
+ ; movzx dx, [di+00ch] ; 0f b7 55 0c ; 0xfdc0b pci32.c:347
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdc0f
+ mov bx, strict word 00001h ; bb 01 00 ; 0xfdc12
+ add byte [bx+si], al ; 00 00 ; 0xfdc15
+ call 0da53h ; e8 39 fe ; 0xfdc17
+ db 0ffh
+ jmp word [bp+03dh] ; ff 66 3d ; 0xfdc1b
+ db 0ffh
+ push word [di+00dh] ; ff 75 0d ; 0xfdc1f
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc22 pci32.c:349
+ xor ah, ah ; 30 e4 ; 0xfdc25
+ or ah, 086h ; 80 cc 86 ; 0xfdc27
+ jmp near 0dd8bh ; e9 5e 01 ; 0xfdc2a pci32.c:350
+ add byte [bx+si], al ; 00 00 ; 0xfdc2d
+ mov dword [di+018h], eax ; 66 89 45 18 ; 0xfdc2f pci32.c:352
+ jmp near 0dd93h ; e9 5d 01 ; 0xfdc33 pci32.c:354
+ add byte [bx+si], al ; 00 00 ; 0xfdc36
+ cmp dword [di+008h], strict dword 00d720100h ; 66 81 7d 08 00 01 72 0d ; 0xfdc38 pci32.c:361
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdc40 pci32.c:362
+ xor ah, ah ; 30 e4 ; 0xfdc43
+ or ah, 087h ; 80 cc 87 ; 0xfdc45
+ jmp near 0dd8bh ; e9 40 01 ; 0xfdc48 pci32.c:363
+ add byte [bx+si], al ; 00 00 ; 0xfdc4b
+ db 00fh, 0b7h, 055h, 008h
+ ; movzx dx, [di+008h] ; 0f b7 55 08 ; 0xfdc4d pci32.c:365
+ db 00fh, 0b7h, 045h, 018h
+ ; movzx ax, [di+018h] ; 0f b7 45 18 ; 0xfdc51
+ call 0da31h ; e8 d9 fd ; 0xfdc55
+ db 0ffh
+ dec word [bp+di+02445h] ; ff 8b 45 24 ; 0xfdc59
+ xor ah, ah ; 30 e4 ; 0xfdc5d
+ cmp eax, strict dword 02172000ah ; 66 3d 0a 00 72 21 ; 0xfdc5f
+ jbe short 0dcd6h ; 76 6f ; 0xfdc65
+ cmp eax, strict dword 0840f000dh ; 66 3d 0d 00 0f 84 ; 0xfdc67
+ test ax, strict word 00000h ; a9 00 00 ; 0xfdc6d
+ add byte [bp+03dh], ah ; 00 66 3d ; 0xfdc70
+ or AL, strict byte 000h ; 0c 00 ; 0xfdc73
+ je near 0dcfch ; 0f 84 83 00 ; 0xfdc75
+ add byte [bx+si], al ; 00 00 ; 0xfdc79
+ cmp eax, strict dword 06374000bh ; 66 3d 0b 00 74 63 ; 0xfdc7b
+ jmp near 0dd93h ; e9 0f 01 ; 0xfdc81
+ add byte [bx+si], al ; 00 00 ; 0xfdc84
+ cmp eax, strict dword 02d740009h ; 66 3d 09 00 74 2d ; 0xfdc86
+ cmp eax, strict dword 0850f0008h ; 66 3d 08 00 0f 85 ; 0xfdc8c
+ inc word [bx+si] ; ff 00 ; 0xfdc92
+ add byte [bx+si], al ; 00 00 ; 0xfdc94
+ mov bx, word [di+020h] ; 8b 5d 20 ; 0xfdc96 pci32.c:368
+ xor bl, bl ; 30 db ; 0xfdc99
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdc9b
+ xor ah, ah ; 30 e4 ; 0xfdc9e
+ and AL, strict byte 003h ; 24 03 ; 0xfdca0
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdca2
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdca5
+ add byte [bx+si], al ; 00 00 ; 0xfdca9
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcab
+ in AL, DX ; ec ; 0xfdcad
+ or bx, ax ; 09 c3 ; 0xfdcae
+ mov dword [di+020h], ebx ; 66 89 5d 20 ; 0xfdcb0
+ jmp near 0dd93h ; e9 dc 00 ; 0xfdcb4 pci32.c:369
+ add byte [bx+si], al ; 00 00 ; 0xfdcb7
+ mov ax, word [di+008h] ; 8b 45 08 ; 0xfdcb9 pci32.c:371
+ xor ah, ah ; 30 e4 ; 0xfdcbc
+ and AL, strict byte 002h ; 24 02 ; 0xfdcbe
+ db 00fh, 0b7h, 0d0h
+ ; movzx dx, ax ; 0f b7 d0 ; 0xfdcc0
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcc3
+ add byte [bx+si], al ; 00 00 ; 0xfdcc7
+ db 02bh, 0c0h
+ ; sub ax, ax ; 2b c0 ; 0xfdcc9
+ in eax, DX ; 66 ed ; 0xfdccb
+ mov dword [di+020h], eax ; 66 89 45 20 ; 0xfdccd
+ jmp near 0dd93h ; e9 bf 00 ; 0xfdcd1 pci32.c:372
+ add byte [bx+si], al ; 00 00 ; 0xfdcd4
+ mov dx, 00cfch ; ba fc 0c ; 0xfdcd6 pci32.c:374
+ add byte [bx+si], al ; 00 00 ; 0xfdcd9
+ in ax, DX ; ed ; 0xfdcdb
+ mov word [di+020h], ax ; 89 45 20 ; 0xfdcdc
+ jmp near 0dd93h ; e9 b1 00 ; 0xfdcdf pci32.c:375
+ add byte [bx+si], al ; 00 00 ; 0xfdce2
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdce4 pci32.c:377
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdce7
+ xor dh, dh ; 30 f6 ; 0xfdcea
+ and dl, 003h ; 80 e2 03 ; 0xfdcec
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdcef
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdcf2
+ add byte [bx+si], al ; 00 00 ; 0xfdcf6
+ out DX, AL ; ee ; 0xfdcf8
+ jmp near 0dd93h ; e9 97 00 ; 0xfdcf9 pci32.c:378
+ add byte [bx+si], al ; 00 00 ; 0xfdcfc
+ db 00fh, 0b7h, 045h, 020h
+ ; movzx ax, [di+020h] ; 0f b7 45 20 ; 0xfdcfe pci32.c:380
+ mov dx, word [di+008h] ; 8b 55 08 ; 0xfdd02
+ xor dh, dh ; 30 f6 ; 0xfdd05
+ and dl, 002h ; 80 e2 02 ; 0xfdd07
+ db 00fh, 0b7h, 0d2h
+ ; movzx dx, dx ; 0f b7 d2 ; 0xfdd0a
+ add dx, 00cfch ; 81 c2 fc 0c ; 0xfdd0d
+ add byte [bx+si], al ; 00 00 ; 0xfdd11
+ out DX, eax ; 66 ef ; 0xfdd13
+ jmp near 0dd93h ; e9 7b 00 ; 0xfdd15 pci32.c:381
+ add byte [bx+si], al ; 00 00 ; 0xfdd18
+ mov ax, word [di+020h] ; 8b 45 20 ; 0xfdd1a pci32.c:383
+ mov dx, 00cfch ; ba fc 0c ; 0xfdd1d
+ add byte [bx+si], al ; 00 00 ; 0xfdd20
+ out DX, ax ; ef ; 0xfdd22
+ jmp short 0dd95h ; eb 70 ; 0xfdd23 pci32.c:387
+ db 00fh, 0b7h, 045h, 008h
+ ; movzx ax, [di+008h] ; 0f b7 45 08 ; 0xfdd25 pci32.c:389
+ mov es, [di+028h] ; 8e 45 28 ; 0xfdd29
+ mov [di-010h], es ; 8c 45 f0 ; 0xfdd2c
+ mov bx, ax ; 89 c3 ; 0xfdd2f
+ mov edx, dword [di] ; 66 8b 15 ; 0xfdd31 pci32.c:393
+ xor bl, 000h ; 80 f3 00 ; 0xfdd34
+ add byte [bp+026h], ah ; 00 66 26 ; 0xfdd37
+ cmp dx, word [bx+si] ; 3b 10 ; 0xfdd3a
+ jbe short 0dd50h ; 76 12 ; 0xfdd3c
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd3e pci32.c:394
+ xor ah, ah ; 30 e4 ; 0xfdd41
+ or ah, 089h ; 80 cc 89 ; 0xfdd43
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd46
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd4a pci32.c:395
+ jmp short 0dd76h ; eb 26 ; 0xfdd4e pci32.c:396
+ db 00fh, 0b7h, 0cah
+ ; movzx cx, dx ; 0f b7 ca ; 0xfdd50 pci32.c:397
+ db 066h, 026h, 08bh, 050h, 006h
+ ; mov edx, dword [es:bx+si+006h] ; 66 26 8b 50 06 ; 0xfdd53
+ mov word [di-014h], dx ; 89 55 ec ; 0xfdd58
+ mov di, word [es:bx+si+002h] ; 26 8b 78 02 ; 0xfdd5b
+ mov dx, ds ; 8c da ; 0xfdd5f
+ mov si, 0f1a0h ; be a0 f1 ; 0xfdd61
+ add byte [bx+si], al ; 00 00 ; 0xfdd64
+ mov es, [di-014h] ; 8e 45 ec ; 0xfdd66
+ push DS ; 1e ; 0xfdd69
+ db 066h, 08eh, 0dah
+ ; mov ds, edx ; 66 8e da ; 0xfdd6a
+ rep movsb ; f3 a4 ; 0xfdd6d
+ pop DS ; 1f ; 0xfdd6f
+ mov dword [di+018h], strict dword 0a1660a00h ; 66 c7 45 18 00 0a 66 a1 ; 0xfdd70 pci32.c:399
+ xor bl, 000h ; 80 f3 00 ; 0xfdd78
+ add byte [bp-00fbbh], cl ; 00 8e 45 f0 ; 0xfdd7b
+ db 066h, 026h, 089h, 003h
+ ; mov dword [es:bp+di], eax ; 66 26 89 03 ; 0xfdd7f
+ jmp short 0dd95h ; eb 10 ; 0xfdd83 pci32.c:402
+ mov ax, word [di+024h] ; 8b 45 24 ; 0xfdd85 pci32.c:405
+ xor ah, ah ; 30 e4 ; 0xfdd88
+ or ah, 081h ; 80 cc 81 ; 0xfdd8a
+ mov dword [di+024h], eax ; 66 89 45 24 ; 0xfdd8d
+ or word [di+02ch], strict byte 00001h ; 83 4d 2c 01 ; 0xfdd91 pci32.c:406
+ lea sp, [di-00ch] ; 8d 65 f4 ; 0xfdd95 pci32.c:408
+ pop di ; 5f ; 0xfdd98
+ pop si ; 5e ; 0xfdd99
+ pop bx ; 5b ; 0xfdd9a
+ pop bp ; 5d ; 0xfdd9b
+ retn ; c3 ; 0xfdd9c
+
+ ; Padding 0x3 bytes at 0xfdd9d
+ times 3 db 0
+
+section BIOS32CONST progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32CONST2 progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+section BIOS32_DATA progbits vstart=0xdda0 align=1 ; size=0x0 class=FAR_DATA group=BIOS32_GROUP
+
+ ; Padding 0x260 bytes at 0xfdda0
+ times 608 db 0
+
+section BIOSSEG progbits vstart=0xe000 align=1 ; size=0x2000 class=CODE group=AUTO
+ ; disGetNextSymbol 0xfe000 LB 0x2000 -> off=0x0 cb=0000000000000030 uValue=00000000000f0000 'biosorg_check_before_or_at_0E02Eh'
+biosorg_check_before_or_at_0E02Eh: ; 0xfe000 LB 0x30
+ times 0x2e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe030 LB 0x1fd0 -> off=0x0 cb=0000000000000004 uValue=00000000000f0030 'eoi_both_pics'
+eoi_both_pics: ; 0xfe030 LB 0x4
+ mov AL, strict byte 020h ; b0 20 ; 0xfe030 orgs.asm:238
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe032 orgs.asm:239
+ ; disGetNextSymbol 0xfe034 LB 0x1fcc -> off=0x0 cb=0000000000000005 uValue=00000000000f0034 'eoi_master_pic'
+eoi_master_pic: ; 0xfe034 LB 0x5
+ mov AL, strict byte 020h ; b0 20 ; 0xfe034 orgs.asm:241
+ out strict byte 020h, AL ; e6 20 ; 0xfe036 orgs.asm:242
+ retn ; c3 ; 0xfe038 orgs.asm:243
+ ; disGetNextSymbol 0xfe039 LB 0x1fc7 -> off=0x0 cb=000000000000000b uValue=0000000000000039 'set_int_vects'
+set_int_vects: ; 0xfe039 LB 0xb
+ mov word [bx], ax ; 89 07 ; 0xfe039 orgs.asm:250
+ mov word [bx+002h], dx ; 89 57 02 ; 0xfe03b orgs.asm:251
+ add bx, strict byte 00004h ; 83 c3 04 ; 0xfe03e orgs.asm:252
+ loop 0e039h ; e2 f6 ; 0xfe041 orgs.asm:253
+ retn ; c3 ; 0xfe043 orgs.asm:254
+ ; disGetNextSymbol 0xfe044 LB 0x1fbc -> off=0x0 cb=0000000000000006 uValue=00000000000f0044 'eoi_jmp_post'
+eoi_jmp_post: ; 0xfe044 LB 0x6
+ in AL, strict byte 060h ; e4 60 ; 0xfe044 orgs.asm:262
+ mov AL, strict byte 020h ; b0 20 ; 0xfe046 orgs.asm:263
+ out strict byte 020h, AL ; e6 20 ; 0xfe048 orgs.asm:264
+ ; disGetNextSymbol 0xfe04a LB 0x1fb6 -> off=0x0 cb=0000000000000009 uValue=00000000000f004a 'no_eoi_jmp_post'
+no_eoi_jmp_post: ; 0xfe04a LB 0x9
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe04a orgs.asm:267
+ mov ds, ax ; 8e d8 ; 0xfe04d orgs.asm:268
+ jmp far [word 00067h] ; ff 2e 67 00 ; 0xfe04f orgs.asm:269
+ ; disGetNextSymbol 0xfe053 LB 0x1fad -> off=0x0 cb=0000000000000002 uValue=00000000000f0053 'seg_40_value'
+seg_40_value: ; 0xfe053 LB 0x2
+ inc ax ; 40 ; 0xfe053
+ times 0x1 db 0
+ ; disGetNextSymbol 0xfe055 LB 0x1fab -> off=0x0 cb=0000000000000006 uValue=00000000000f0055 'biosorg_check_before_or_at_0E059h'
+biosorg_check_before_or_at_0E059h: ; 0xfe055 LB 0x6
+ add byte [bx+si], al ; 00 00 ; 0xfe055
+ add byte [bx+si], al ; 00 00 ; 0xfe057
+ pop ax ; 58 ; 0xfe059
+ dec bp ; 4d ; 0xfe05a
+ ; disGetNextSymbol 0xfe05b LB 0x1fa5 -> off=0x0 cb=0000000000000068 uValue=00000000000f005b 'post'
+post: ; 0xfe05b LB 0x68
+ cli ; fa ; 0xfe05b orgs.asm:278
+ jmp short 0e064h ; eb 06 ; 0xfe05c orgs.asm:289
+ mov AL, strict byte 001h ; b0 01 ; 0xfe05e orgs.asm:295
+ out strict byte 092h, AL ; e6 92 ; 0xfe060 orgs.asm:296
+ jmp short 0e062h ; eb fe ; 0xfe062 orgs.asm:297
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe064 orgs.asm:302
+ out strict byte 070h, AL ; e6 70 ; 0xfe066 orgs.asm:303
+ in AL, strict byte 071h ; e4 71 ; 0xfe068 orgs.asm:304
+ xchg ah, al ; 86 c4 ; 0xfe06a orgs.asm:307
+ in AL, strict byte 064h ; e4 64 ; 0xfe06c orgs.asm:311
+ test AL, strict byte 004h ; a8 04 ; 0xfe06e orgs.asm:312
+ je short 0e085h ; 74 13 ; 0xfe070 orgs.asm:313
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe072 orgs.asm:316
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xfe074 orgs.asm:317
+ jne short 0e085h ; 75 0d ; 0xfe076 orgs.asm:318
+ mov ds, [cs:0e053h] ; 2e 8e 1e 53 e0 ; 0xfe078 orgs.asm:324
+ cmp word [word 00072h], 01234h ; 81 3e 72 00 34 12 ; 0xfe07d orgs.asm:325
+ jne short 0e05eh ; 75 d9 ; 0xfe083 orgs.asm:326
+ mov AL, strict byte 00fh ; b0 0f ; 0xfe085 orgs.asm:330
+ out strict byte 070h, AL ; e6 70 ; 0xfe087 orgs.asm:331
+ mov AL, strict byte 000h ; b0 00 ; 0xfe089 orgs.asm:332
+ out strict byte 071h, AL ; e6 71 ; 0xfe08b orgs.asm:333
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe08d orgs.asm:337
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe08f orgs.asm:338
+ je short 0e0a5h ; 74 12 ; 0xfe091 orgs.asm:339
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe093 orgs.asm:340
+ je short 0e0a5h ; 74 0e ; 0xfe095 orgs.asm:341
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfe097 orgs.asm:343
+ out strict byte 00dh, AL ; e6 0d ; 0xfe099 orgs.asm:346
+ out strict byte 0dah, AL ; e6 da ; 0xfe09b orgs.asm:347
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe09d orgs.asm:350
+ out strict byte 0d6h, AL ; e6 d6 ; 0xfe09f orgs.asm:351
+ mov AL, strict byte 000h ; b0 00 ; 0xfe0a1 orgs.asm:352
+ out strict byte 0d4h, AL ; e6 d4 ; 0xfe0a3 orgs.asm:353
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfe0a5 orgs.asm:357
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfe0a7 orgs.asm:358
+ je short 0e0c3h ; 74 18 ; 0xfe0a9 orgs.asm:359
+ cmp AL, strict byte 00dh ; 3c 0d ; 0xfe0ab orgs.asm:361
+ jnc short 0e0c3h ; 73 14 ; 0xfe0ad orgs.asm:362
+ cmp AL, strict byte 009h ; 3c 09 ; 0xfe0af orgs.asm:363
+ jne short 0e0b6h ; 75 03 ; 0xfe0b1 orgs.asm:364
+ jmp near 0e350h ; e9 9a 02 ; 0xfe0b3 orgs.asm:365
+ mov sp, 00400h ; bc 00 04 ; 0xfe0b6 orgs.asm:368
+ cmp AL, strict byte 005h ; 3c 05 ; 0xfe0b9 orgs.asm:370
+ je short 0e044h ; 74 87 ; 0xfe0bb orgs.asm:371
+ cmp AL, strict byte 00ah ; 3c 0a ; 0xfe0bd orgs.asm:373
+ je short 0e04ah ; 74 89 ; 0xfe0bf orgs.asm:374
+ jmp short 0e0c3h ; eb 00 ; 0xfe0c1 orgs.asm:378
+ ; disGetNextSymbol 0xfe0c3 LB 0x1f3d -> off=0x0 cb=00000000000001f3 uValue=00000000000f00c3 'normal_post'
+normal_post: ; 0xfe0c3 LB 0x1f3
+ mov ax, 07800h ; b8 00 78 ; 0xfe0c3 orgs.asm:387
+ db 08bh, 0e0h
+ ; mov sp, ax ; 8b e0 ; 0xfe0c6 orgs.asm:388
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe0c8 orgs.asm:389
+ mov ds, ax ; 8e d8 ; 0xfe0ca orgs.asm:390
+ mov ss, ax ; 8e d0 ; 0xfe0cc orgs.asm:391
+ mov es, ax ; 8e c0 ; 0xfe0ce orgs.asm:395
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0d0 orgs.asm:396
+ cld ; fc ; 0xfe0d2 orgs.asm:397
+ mov cx, 00239h ; b9 39 02 ; 0xfe0d3 orgs.asm:398
+ rep stosw ; f3 ab ; 0xfe0d6 orgs.asm:399
+ inc di ; 47 ; 0xfe0d8 orgs.asm:400
+ inc di ; 47 ; 0xfe0d9 orgs.asm:401
+ mov cx, 005c6h ; b9 c6 05 ; 0xfe0da orgs.asm:402
+ rep stosw ; f3 ab ; 0xfe0dd orgs.asm:403
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0df orgs.asm:407
+ add bx, 01000h ; 81 c3 00 10 ; 0xfe0e1 orgs.asm:409
+ cmp bx, 09000h ; 81 fb 00 90 ; 0xfe0e5 orgs.asm:410
+ jnc short 0e0f6h ; 73 0b ; 0xfe0e9 orgs.asm:411
+ mov es, bx ; 8e c3 ; 0xfe0eb orgs.asm:412
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0ed orgs.asm:413
+ mov cx, 08000h ; b9 00 80 ; 0xfe0ef orgs.asm:414
+ rep stosw ; f3 ab ; 0xfe0f2 orgs.asm:415
+ jmp short 0e0e1h ; eb eb ; 0xfe0f4 orgs.asm:416
+ mov es, bx ; 8e c3 ; 0xfe0f6 orgs.asm:418
+ db 033h, 0ffh
+ ; xor di, di ; 33 ff ; 0xfe0f8 orgs.asm:419
+ mov cx, 07ff8h ; b9 f8 7f ; 0xfe0fa orgs.asm:420
+ rep stosw ; f3 ab ; 0xfe0fd orgs.asm:421
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe0ff orgs.asm:422
+ push CS ; 0e ; 0xfe101 orgs.asm:104
+ pop DS ; 1f ; 0xfe102 orgs.asm:105
+ cld ; fc ; 0xfe103 orgs.asm:106
+ call 01715h ; e8 0e 36 ; 0xfe104 orgs.asm:426
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe107 orgs.asm:433
+ mov ds, bx ; 8e db ; 0xfe109 orgs.asm:434
+ mov cx, strict word 00060h ; b9 60 00 ; 0xfe10b orgs.asm:435
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe10e orgs.asm:436
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe111 orgs.asm:437
+ call 0e039h ; e8 22 ff ; 0xfe114 orgs.asm:438
+ mov bx, 001a0h ; bb a0 01 ; 0xfe117 orgs.asm:443
+ mov cx, strict word 00010h ; b9 10 00 ; 0xfe11a orgs.asm:444
+ call 0e039h ; e8 19 ff ; 0xfe11d orgs.asm:445
+ mov ax, 0027fh ; b8 7f 02 ; 0xfe120 orgs.asm:448
+ mov word [00413h], ax ; a3 13 04 ; 0xfe123 orgs.asm:449
+ mov ax, 0e9dah ; b8 da e9 ; 0xfe126 orgs.asm:95
+ mov word [00018h], ax ; a3 18 00 ; 0xfe129 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe12c orgs.asm:97
+ mov word [0001ah], ax ; a3 1a 00 ; 0xfe12f orgs.asm:98
+ mov ax, 0f84dh ; b8 4d f8 ; 0xfe132 orgs.asm:95
+ mov word [00044h], ax ; a3 44 00 ; 0xfe135 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe138 orgs.asm:97
+ mov word [00046h], ax ; a3 46 00 ; 0xfe13b orgs.asm:98
+ mov ax, 0f841h ; b8 41 f8 ; 0xfe13e orgs.asm:95
+ mov word [00048h], ax ; a3 48 00 ; 0xfe141 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe144 orgs.asm:97
+ mov word [0004ah], ax ; a3 4a 00 ; 0xfe147 orgs.asm:98
+ mov ax, 0f859h ; b8 59 f8 ; 0xfe14a orgs.asm:95
+ mov word [00054h], ax ; a3 54 00 ; 0xfe14d orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe150 orgs.asm:97
+ mov word [00056h], ax ; a3 56 00 ; 0xfe153 orgs.asm:98
+ mov ax, 0efd4h ; b8 d4 ef ; 0xfe156 orgs.asm:95
+ mov word [0005ch], ax ; a3 5c 00 ; 0xfe159 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe15c orgs.asm:97
+ mov word [0005eh], ax ; a3 5e 00 ; 0xfe15f orgs.asm:98
+ mov ax, 0f0a4h ; b8 a4 f0 ; 0xfe162 orgs.asm:95
+ mov word [00060h], ax ; a3 60 00 ; 0xfe165 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe168 orgs.asm:97
+ mov word [00062h], ax ; a3 62 00 ; 0xfe16b orgs.asm:98
+ mov ax, 0e6f2h ; b8 f2 e6 ; 0xfe16e orgs.asm:95
+ mov word [00064h], ax ; a3 64 00 ; 0xfe171 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe174 orgs.asm:97
+ mov word [00066h], ax ; a3 66 00 ; 0xfe177 orgs.asm:98
+ mov ax, 0effbh ; b8 fb ef ; 0xfe17a orgs.asm:95
+ mov word [00070h], ax ; a3 70 00 ; 0xfe17d orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe180 orgs.asm:97
+ mov word [00072h], ax ; a3 72 00 ; 0xfe183 orgs.asm:98
+ call 0e794h ; e8 0b 06 ; 0xfe186 orgs.asm:465
+ mov ax, 0fe6eh ; b8 6e fe ; 0xfe189 orgs.asm:95
+ mov word [00068h], ax ; a3 68 00 ; 0xfe18c orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe18f orgs.asm:97
+ mov word [0006ah], ax ; a3 6a 00 ; 0xfe192 orgs.asm:98
+ mov ax, 0fea5h ; b8 a5 fe ; 0xfe195 orgs.asm:95
+ mov word [00020h], ax ; a3 20 00 ; 0xfe198 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe19b orgs.asm:97
+ mov word [00022h], ax ; a3 22 00 ; 0xfe19e orgs.asm:98
+ mov AL, strict byte 034h ; b0 34 ; 0xfe1a1 orgs.asm:476
+ out strict byte 043h, AL ; e6 43 ; 0xfe1a3 orgs.asm:477
+ mov AL, strict byte 000h ; b0 00 ; 0xfe1a5 orgs.asm:478
+ out strict byte 040h, AL ; e6 40 ; 0xfe1a7 orgs.asm:479
+ out strict byte 040h, AL ; e6 40 ; 0xfe1a9 orgs.asm:480
+ mov ax, 0f065h ; b8 65 f0 ; 0xfe1ab orgs.asm:95
+ mov word [00040h], ax ; a3 40 00 ; 0xfe1ae orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1b1 orgs.asm:97
+ mov word [00042h], ax ; a3 42 00 ; 0xfe1b4 orgs.asm:98
+ mov ax, 0e987h ; b8 87 e9 ; 0xfe1b7 orgs.asm:95
+ mov word [00024h], ax ; a3 24 00 ; 0xfe1ba orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1bd orgs.asm:97
+ mov word [00026h], ax ; a3 26 00 ; 0xfe1c0 orgs.asm:98
+ mov ax, 0e82eh ; b8 2e e8 ; 0xfe1c3 orgs.asm:95
+ mov word [00058h], ax ; a3 58 00 ; 0xfe1c6 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe1c9 orgs.asm:97
+ mov word [0005ah], ax ; a3 5a 00 ; 0xfe1cc orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe1cf orgs.asm:489
+ mov ds, ax ; 8e d8 ; 0xfe1d1 orgs.asm:490
+ mov byte [00417h], AL ; a2 17 04 ; 0xfe1d3 orgs.asm:492
+ mov byte [00418h], AL ; a2 18 04 ; 0xfe1d6 orgs.asm:493
+ mov byte [00419h], AL ; a2 19 04 ; 0xfe1d9 orgs.asm:494
+ mov byte [00471h], AL ; a2 71 04 ; 0xfe1dc orgs.asm:495
+ mov byte [00497h], AL ; a2 97 04 ; 0xfe1df orgs.asm:496
+ mov AL, strict byte 010h ; b0 10 ; 0xfe1e2 orgs.asm:497
+ mov byte [00496h], AL ; a2 96 04 ; 0xfe1e4 orgs.asm:498
+ mov bx, strict word 0001eh ; bb 1e 00 ; 0xfe1e7 orgs.asm:500
+ mov word [0041ah], bx ; 89 1e 1a 04 ; 0xfe1ea orgs.asm:501
+ mov word [0041ch], bx ; 89 1e 1c 04 ; 0xfe1ee orgs.asm:502
+ mov word [00480h], bx ; 89 1e 80 04 ; 0xfe1f2 orgs.asm:503
+ mov bx, strict word 0003eh ; bb 3e 00 ; 0xfe1f6 orgs.asm:504
+ mov word [00482h], bx ; 89 1e 82 04 ; 0xfe1f9 orgs.asm:505
+ mov AL, strict byte 014h ; b0 14 ; 0xfe1fd orgs.asm:508
+ out strict byte 070h, AL ; e6 70 ; 0xfe1ff orgs.asm:509
+ in AL, strict byte 071h ; e4 71 ; 0xfe201 orgs.asm:510
+ mov byte [00410h], AL ; a2 10 04 ; 0xfe203 orgs.asm:511
+ push DS ; 1e ; 0xfe206 orgs.asm:513
+ push CS ; 0e ; 0xfe207 orgs.asm:104
+ pop DS ; 1f ; 0xfe208 orgs.asm:105
+ cld ; fc ; 0xfe209 orgs.asm:106
+ mov ax, 0c000h ; b8 00 c0 ; 0xfe20a orgs.asm:518
+ mov dx, 0c800h ; ba 00 c8 ; 0xfe20d orgs.asm:519
+ call 01600h ; e8 ed 33 ; 0xfe210 orgs.asm:520
+ call 04f76h ; e8 60 6d ; 0xfe213 orgs.asm:523
+ pop DS ; 1f ; 0xfe216 orgs.asm:524
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe217 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe21a orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe21d orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe220 orgs.asm:98
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe223 orgs.asm:528
+ mov ds, ax ; 8e d8 ; 0xfe225 orgs.asm:529
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe227 orgs.asm:530
+ mov CL, strict byte 014h ; b1 14 ; 0xfe229 orgs.asm:531
+ mov dx, 00378h ; ba 78 03 ; 0xfe22b orgs.asm:532
+ call 0ed0ah ; e8 d9 0a ; 0xfe22e orgs.asm:533
+ mov dx, 00278h ; ba 78 02 ; 0xfe231 orgs.asm:534
+ call 0ed0ah ; e8 d3 0a ; 0xfe234 orgs.asm:535
+ push cx ; 51 ; 0xfe237 orgs.asm:203
+ mov CL, strict byte 00eh ; b1 0e ; 0xfe238 orgs.asm:204
+ sal bx, CL ; d3 e3 ; 0xfe23a orgs.asm:205
+ pop cx ; 59 ; 0xfe23c orgs.asm:206
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe23d orgs.asm:537
+ and ax, 03fffh ; 25 ff 3f ; 0xfe240 orgs.asm:538
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe243 orgs.asm:539
+ mov word [00410h], ax ; a3 10 04 ; 0xfe245 orgs.asm:540
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe248 orgs.asm:95
+ mov word [0002ch], ax ; a3 2c 00 ; 0xfe24b orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe24e orgs.asm:97
+ mov word [0002eh], ax ; a3 2e 00 ; 0xfe251 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe254 orgs.asm:95
+ mov word [00030h], ax ; a3 30 00 ; 0xfe257 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe25a orgs.asm:97
+ mov word [00032h], ax ; a3 32 00 ; 0xfe25d orgs.asm:98
+ mov ax, 0e739h ; b8 39 e7 ; 0xfe260 orgs.asm:95
+ mov word [00050h], ax ; a3 50 00 ; 0xfe263 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe266 orgs.asm:97
+ mov word [00052h], ax ; a3 52 00 ; 0xfe269 orgs.asm:98
+ db 033h, 0dbh
+ ; xor bx, bx ; 33 db ; 0xfe26c orgs.asm:546
+ mov CL, strict byte 00ah ; b1 0a ; 0xfe26e orgs.asm:547
+ mov dx, 003f8h ; ba f8 03 ; 0xfe270 orgs.asm:548
+ call 0ed28h ; e8 b2 0a ; 0xfe273 orgs.asm:549
+ mov dx, 002f8h ; ba f8 02 ; 0xfe276 orgs.asm:550
+ call 0ed28h ; e8 ac 0a ; 0xfe279 orgs.asm:551
+ mov dx, 003e8h ; ba e8 03 ; 0xfe27c orgs.asm:552
+ call 0ed28h ; e8 a6 0a ; 0xfe27f orgs.asm:553
+ mov dx, 002e8h ; ba e8 02 ; 0xfe282 orgs.asm:554
+ call 0ed28h ; e8 a0 0a ; 0xfe285 orgs.asm:555
+ push cx ; 51 ; 0xfe288 orgs.asm:203
+ mov CL, strict byte 009h ; b1 09 ; 0xfe289 orgs.asm:204
+ sal bx, CL ; d3 e3 ; 0xfe28b orgs.asm:205
+ pop cx ; 59 ; 0xfe28d orgs.asm:206
+ mov ax, word [00410h] ; a1 10 04 ; 0xfe28e orgs.asm:557
+ and ax, 0f1ffh ; 25 ff f1 ; 0xfe291 orgs.asm:558
+ db 00bh, 0c3h
+ ; or ax, bx ; 0b c3 ; 0xfe294 orgs.asm:559
+ mov word [00410h], ax ; a3 10 04 ; 0xfe296 orgs.asm:560
+ mov ax, 0ff53h ; b8 53 ff ; 0xfe299 orgs.asm:95
+ mov word [00128h], ax ; a3 28 01 ; 0xfe29c orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe29f orgs.asm:97
+ mov word [0012ah], ax ; a3 2a 01 ; 0xfe2a2 orgs.asm:98
+ mov ax, 0f8f1h ; b8 f1 f8 ; 0xfe2a5 orgs.asm:95
+ mov word [001c0h], ax ; a3 c0 01 ; 0xfe2a8 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2ab orgs.asm:97
+ mov word [001c2h], ax ; a3 c2 01 ; 0xfe2ae orgs.asm:98
+ call 0ede3h ; e8 2f 0b ; 0xfe2b1 orgs.asm:566
+ jmp short 0e303h ; eb 4d ; 0xfe2b4 orgs.asm:568
+ ; disGetNextSymbol 0xfe2b6 LB 0x1d4a -> off=0x0 cb=000000000000000d uValue=00000000000f02b6 'biosorg_check_before_or_at_0E2C1h'
+biosorg_check_before_or_at_0E2C1h: ; 0xfe2b6 LB 0xd
+ times 0xb db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe2c3 LB 0x1d3d -> off=0x0 cb=0000000000000007 uValue=00000000000f02c3 'nmi'
+nmi: ; 0xfe2c3 LB 0x7
+ push CS ; 0e ; 0xfe2c3 orgs.asm:104
+ pop DS ; 1f ; 0xfe2c4 orgs.asm:105
+ cld ; fc ; 0xfe2c5 orgs.asm:106
+ call 016ebh ; e8 22 34 ; 0xfe2c6 orgs.asm:577
+ iret ; cf ; 0xfe2c9 orgs.asm:578
+ ; disGetNextSymbol 0xfe2ca LB 0x1d36 -> off=0x0 cb=0000000000000008 uValue=00000000000f02ca 'int75_handler'
+int75_handler: ; 0xfe2ca LB 0x8
+ out strict byte 0f0h, AL ; e6 f0 ; 0xfe2ca orgs.asm:581
+ call 0e030h ; e8 61 fd ; 0xfe2cc orgs.asm:582
+ int 002h ; cd 02 ; 0xfe2cf orgs.asm:583
+ iret ; cf ; 0xfe2d1 orgs.asm:584
+ ; disGetNextSymbol 0xfe2d2 LB 0x1d2e -> off=0x0 cb=00000000000000a7 uValue=00000000000f02d2 'hard_drive_post'
+hard_drive_post: ; 0xfe2d2 LB 0xa7
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe2d2 orgs.asm:589
+ mov ds, ax ; 8e d8 ; 0xfe2d4 orgs.asm:590
+ mov byte [00474h], AL ; a2 74 04 ; 0xfe2d6 orgs.asm:592
+ mov byte [00477h], AL ; a2 77 04 ; 0xfe2d9 orgs.asm:593
+ mov byte [0048ch], AL ; a2 8c 04 ; 0xfe2dc orgs.asm:594
+ mov byte [0048dh], AL ; a2 8d 04 ; 0xfe2df orgs.asm:595
+ mov byte [0048eh], AL ; a2 8e 04 ; 0xfe2e2 orgs.asm:596
+ mov AL, strict byte 0c0h ; b0 c0 ; 0xfe2e5 orgs.asm:597
+ mov byte [00476h], AL ; a2 76 04 ; 0xfe2e7 orgs.asm:598
+ mov ax, 0e3feh ; b8 fe e3 ; 0xfe2ea orgs.asm:95
+ mov word [0004ch], ax ; a3 4c 00 ; 0xfe2ed orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2f0 orgs.asm:97
+ mov word [0004eh], ax ; a3 4e 00 ; 0xfe2f3 orgs.asm:98
+ mov ax, 0f8dfh ; b8 df f8 ; 0xfe2f6 orgs.asm:95
+ mov word [001d8h], ax ; a3 d8 01 ; 0xfe2f9 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe2fc orgs.asm:97
+ mov word [001dah], ax ; a3 da 01 ; 0xfe2ff orgs.asm:98
+ retn ; c3 ; 0xfe302 orgs.asm:603
+ mov ax, 0f8a5h ; b8 a5 f8 ; 0xfe303 orgs.asm:95
+ mov word [001d0h], ax ; a3 d0 01 ; 0xfe306 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe309 orgs.asm:97
+ mov word [001d2h], ax ; a3 d2 01 ; 0xfe30c orgs.asm:98
+ mov ax, 0e2cah ; b8 ca e2 ; 0xfe30f orgs.asm:95
+ mov word [001d4h], ax ; a3 d4 01 ; 0xfe312 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe315 orgs.asm:97
+ mov word [001d6h], ax ; a3 d6 01 ; 0xfe318 orgs.asm:98
+ call 0e76fh ; e8 51 04 ; 0xfe31b orgs.asm:615
+ push CS ; 0e ; 0xfe31e orgs.asm:104
+ pop DS ; 1f ; 0xfe31f orgs.asm:105
+ cld ; fc ; 0xfe320 orgs.asm:106
+ call 01c5eh ; e8 3a 39 ; 0xfe321 orgs.asm:629
+ call 020efh ; e8 c8 3d ; 0xfe324 orgs.asm:630
+ sti ; fb ; 0xfe327 orgs.asm:637
+ call 094cdh ; e8 a2 b1 ; 0xfe328 orgs.asm:638
+ cli ; fa ; 0xfe32b orgs.asm:639
+ call 0830ch ; e8 dd 9f ; 0xfe32c orgs.asm:644
+ call 0ed4ch ; e8 1a 0a ; 0xfe32f orgs.asm:648
+ call 0e2d2h ; e8 9d ff ; 0xfe332 orgs.asm:651
+ push CS ; 0e ; 0xfe335 orgs.asm:104
+ pop DS ; 1f ; 0xfe336 orgs.asm:105
+ cld ; fc ; 0xfe337 orgs.asm:106
+ mov ax, 0c800h ; b8 00 c8 ; 0xfe338 orgs.asm:655
+ mov dx, 0f000h ; ba 00 f0 ; 0xfe33b orgs.asm:656
+ call 01600h ; e8 bf 32 ; 0xfe33e orgs.asm:657
+ call 01739h ; e8 f5 33 ; 0xfe341 orgs.asm:671
+ call 03be1h ; e8 9a 58 ; 0xfe344 orgs.asm:674
+ sti ; fb ; 0xfe347 orgs.asm:677
+ int 019h ; cd 19 ; 0xfe348 orgs.asm:678
+ sti ; fb ; 0xfe34a orgs.asm:680
+ hlt ; f4 ; 0xfe34b orgs.asm:682
+ jmp short 0e34bh ; eb fd ; 0xfe34c orgs.asm:683
+ cli ; fa ; 0xfe34e orgs.asm:684
+ hlt ; f4 ; 0xfe34f orgs.asm:685
+ mov ax, strict word 00040h ; b8 40 00 ; 0xfe350 orgs.asm:694
+ mov ds, ax ; 8e d8 ; 0xfe353 orgs.asm:695
+ mov ss, [word 00069h] ; 8e 16 69 00 ; 0xfe355 orgs.asm:697
+ mov sp, word [word 00067h] ; 8b 26 67 00 ; 0xfe359 orgs.asm:698
+ in AL, strict byte 092h ; e4 92 ; 0xfe35d orgs.asm:700
+ and AL, strict byte 0fdh ; 24 fd ; 0xfe35f orgs.asm:701
+ out strict byte 092h, AL ; e6 92 ; 0xfe361 orgs.asm:702
+ lidt [cs:0eff5h] ; 2e 0f 01 1e f5 ef ; 0xfe363 orgs.asm:704
+ pop DS ; 1f ; 0xfe369 orgs.asm:706
+ pop ES ; 07 ; 0xfe36a orgs.asm:707
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xfe36b orgs.asm:709
+ in AL, strict byte 080h ; e4 80 ; 0xfe36d orgs.asm:711
+ mov byte [bp+00fh], al ; 88 46 0f ; 0xfe36f orgs.asm:712
+ db 03ah, 0e0h
+ ; cmp ah, al ; 3a e0 ; 0xfe372 orgs.asm:714
+ popaw ; 61 ; 0xfe374 orgs.asm:716
+ sti ; fb ; 0xfe375 orgs.asm:717
+ retf 00002h ; ca 02 00 ; 0xfe376 orgs.asm:718
+ ; disGetNextSymbol 0xfe379 LB 0x1c87 -> off=0x0 cb=0000000000000085 uValue=00000000000f0379 'biosorg_check_before_or_at_0E3FCh'
+biosorg_check_before_or_at_0E3FCh: ; 0xfe379 LB 0x85
+ times 0x83 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe3fe LB 0x1c02 -> off=0x0 cb=0000000000000003 uValue=00000000000f03fe 'int13_handler'
+int13_handler: ; 0xfe3fe LB 0x3
+ jmp near 0ec5bh ; e9 5a 08 ; 0xfe3fe orgs.asm:728
+ ; disGetNextSymbol 0xfe401 LB 0x1bff -> off=0x0 cb=00000000000002f1 uValue=00000000000f0401 'rom_fdpt'
+rom_fdpt: ; 0xfe401 LB 0x2f1
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 058h
+ db 04dh
+ ; disGetNextSymbol 0xfe6f2 LB 0x190e -> off=0x0 cb=0000000000000003 uValue=00000000000f06f2 'int19_handler'
+int19_handler: ; 0xfe6f2 LB 0x3
+ jmp near 0f0ach ; e9 b7 09 ; 0xfe6f2 orgs.asm:744
+ ; disGetNextSymbol 0xfe6f5 LB 0x190b -> off=0x0 cb=000000000000000a uValue=00000000000f06f5 'biosorg_check_at_0E6F5h'
+biosorg_check_at_0E6F5h: ; 0xfe6f5 LB 0xa
+ or word [bx+si], ax ; 09 00 ; 0xfe6f5
+ sti ; fb ; 0xfe6f7
+ add byte [bx+di], al ; 00 01 ; 0xfe6f8
+ je short 0e73ch ; 74 40 ; 0xfe6fa
+ times 0x3 db 0
+ ; disGetNextSymbol 0xfe6ff LB 0x1901 -> off=0x0 cb=000000000000002a uValue=00000000000f06ff 'biosorg_check_before_or_at_0E727h'
+biosorg_check_before_or_at_0E727h: ; 0xfe6ff LB 0x2a
+ times 0x28 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe729 LB 0x18d7 -> off=0x0 cb=0000000000000010 uValue=00000000000f0729 'biosorg_check_at_0E729h'
+biosorg_check_at_0E729h: ; 0xfe729 LB 0x10
+ times 0xe db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe739 LB 0x18c7 -> off=0x0 cb=0000000000000036 uValue=00000000000f0739 'biosorg_check_at_0E739h'
+biosorg_check_at_0E739h: ; 0xfe739 LB 0x36
+ push DS ; 1e ; 0xfe739 orgs.asm:817
+ push ES ; 06 ; 0xfe73a orgs.asm:818
+ push ax ; 50 ; 0xfe73b orgs.asm:99
+ push cx ; 51 ; 0xfe73c orgs.asm:100
+ push dx ; 52 ; 0xfe73d orgs.asm:101
+ push bx ; 53 ; 0xfe73e orgs.asm:102
+ push sp ; 54 ; 0xfe73f orgs.asm:103
+ push bp ; 55 ; 0xfe740 orgs.asm:104
+ push si ; 56 ; 0xfe741 orgs.asm:105
+ push di ; 57 ; 0xfe742 orgs.asm:106
+ push CS ; 0e ; 0xfe743 orgs.asm:104
+ pop DS ; 1f ; 0xfe744 orgs.asm:105
+ cld ; fc ; 0xfe745 orgs.asm:106
+ call 064d9h ; e8 90 7d ; 0xfe746 orgs.asm:821
+ pop di ; 5f ; 0xfe749 orgs.asm:116
+ pop si ; 5e ; 0xfe74a orgs.asm:117
+ pop bp ; 5d ; 0xfe74b orgs.asm:118
+ pop bx ; 5b ; 0xfe74c orgs.asm:119
+ pop bx ; 5b ; 0xfe74d orgs.asm:120
+ pop dx ; 5a ; 0xfe74e orgs.asm:121
+ pop cx ; 59 ; 0xfe74f orgs.asm:122
+ pop ax ; 58 ; 0xfe750 orgs.asm:123
+ pop ES ; 07 ; 0xfe751 orgs.asm:823
+ pop DS ; 1f ; 0xfe752 orgs.asm:824
+ iret ; cf ; 0xfe753 orgs.asm:825
+ push DS ; 1e ; 0xfe754 orgs.asm:833
+ push ES ; 06 ; 0xfe755 orgs.asm:834
+ push ax ; 50 ; 0xfe756 orgs.asm:99
+ push cx ; 51 ; 0xfe757 orgs.asm:100
+ push dx ; 52 ; 0xfe758 orgs.asm:101
+ push bx ; 53 ; 0xfe759 orgs.asm:102
+ push sp ; 54 ; 0xfe75a orgs.asm:103
+ push bp ; 55 ; 0xfe75b orgs.asm:104
+ push si ; 56 ; 0xfe75c orgs.asm:105
+ push di ; 57 ; 0xfe75d orgs.asm:106
+ push CS ; 0e ; 0xfe75e orgs.asm:104
+ pop DS ; 1f ; 0xfe75f orgs.asm:105
+ cld ; fc ; 0xfe760 orgs.asm:106
+ call 0168ah ; e8 26 2f ; 0xfe761 orgs.asm:837
+ pop di ; 5f ; 0xfe764 orgs.asm:116
+ pop si ; 5e ; 0xfe765 orgs.asm:117
+ pop bp ; 5d ; 0xfe766 orgs.asm:118
+ pop bx ; 5b ; 0xfe767 orgs.asm:119
+ pop bx ; 5b ; 0xfe768 orgs.asm:120
+ pop dx ; 5a ; 0xfe769 orgs.asm:121
+ pop cx ; 59 ; 0xfe76a orgs.asm:122
+ pop ax ; 58 ; 0xfe76b orgs.asm:123
+ pop ES ; 07 ; 0xfe76c orgs.asm:839
+ pop DS ; 1f ; 0xfe76d orgs.asm:840
+ iret ; cf ; 0xfe76e orgs.asm:841
+ ; disGetNextSymbol 0xfe76f LB 0x1891 -> off=0x0 cb=0000000000000025 uValue=00000000000f076f 'init_pic'
+init_pic: ; 0xfe76f LB 0x25
+ mov AL, strict byte 011h ; b0 11 ; 0xfe76f orgs.asm:846
+ out strict byte 020h, AL ; e6 20 ; 0xfe771 orgs.asm:847
+ out strict byte 0a0h, AL ; e6 a0 ; 0xfe773 orgs.asm:848
+ mov AL, strict byte 008h ; b0 08 ; 0xfe775 orgs.asm:849
+ out strict byte 021h, AL ; e6 21 ; 0xfe777 orgs.asm:850
+ mov AL, strict byte 070h ; b0 70 ; 0xfe779 orgs.asm:851
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe77b orgs.asm:852
+ mov AL, strict byte 004h ; b0 04 ; 0xfe77d orgs.asm:853
+ out strict byte 021h, AL ; e6 21 ; 0xfe77f orgs.asm:854
+ mov AL, strict byte 002h ; b0 02 ; 0xfe781 orgs.asm:855
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe783 orgs.asm:856
+ mov AL, strict byte 001h ; b0 01 ; 0xfe785 orgs.asm:857
+ out strict byte 021h, AL ; e6 21 ; 0xfe787 orgs.asm:858
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe789 orgs.asm:859
+ mov AL, strict byte 0b8h ; b0 b8 ; 0xfe78b orgs.asm:860
+ out strict byte 021h, AL ; e6 21 ; 0xfe78d orgs.asm:861
+ mov AL, strict byte 08fh ; b0 8f ; 0xfe78f orgs.asm:862
+ out strict byte 0a1h, AL ; e6 a1 ; 0xfe791 orgs.asm:863
+ retn ; c3 ; 0xfe793 orgs.asm:864
+ ; disGetNextSymbol 0xfe794 LB 0x186c -> off=0x0 cb=0000000000000051 uValue=00000000000f0794 'ebda_post'
+ebda_post: ; 0xfe794 LB 0x51
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe794 orgs.asm:95
+ mov word [00034h], ax ; a3 34 00 ; 0xfe797 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe79a orgs.asm:97
+ mov word [00036h], ax ; a3 36 00 ; 0xfe79d orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7a0 orgs.asm:95
+ mov word [0003ch], ax ; a3 3c 00 ; 0xfe7a3 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7a6 orgs.asm:97
+ mov word [0003eh], ax ; a3 3e 00 ; 0xfe7a9 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7ac orgs.asm:95
+ mov word [001c8h], ax ; a3 c8 01 ; 0xfe7af orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7b2 orgs.asm:97
+ mov word [001cah], ax ; a3 ca 01 ; 0xfe7b5 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7b8 orgs.asm:95
+ mov word [001cch], ax ; a3 cc 01 ; 0xfe7bb orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7be orgs.asm:97
+ mov word [001ceh], ax ; a3 ce 01 ; 0xfe7c1 orgs.asm:98
+ mov ax, 0e754h ; b8 54 e7 ; 0xfe7c4 orgs.asm:95
+ mov word [001dch], ax ; a3 dc 01 ; 0xfe7c7 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfe7ca orgs.asm:97
+ mov word [001deh], ax ; a3 de 01 ; 0xfe7cd orgs.asm:98
+ mov ax, 09fc0h ; b8 c0 9f ; 0xfe7d0 orgs.asm:876
+ mov ds, ax ; 8e d8 ; 0xfe7d3 orgs.asm:877
+ mov byte [word 00000h], 001h ; c6 06 00 00 01 ; 0xfe7d5 orgs.asm:878
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe7da orgs.asm:880
+ mov ds, ax ; 8e d8 ; 0xfe7dc orgs.asm:881
+ mov word [0040eh], 09fc0h ; c7 06 0e 04 c0 9f ; 0xfe7de orgs.asm:882
+ retn ; c3 ; 0xfe7e4 orgs.asm:883
+ ; disGetNextSymbol 0xfe7e5 LB 0x181b -> off=0x0 cb=0000000000000049 uValue=00000000000f07e5 'biosorg_check_before_or_at_0E82Ch'
+biosorg_check_before_or_at_0E82Ch: ; 0xfe7e5 LB 0x49
+ times 0x47 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe82e LB 0x17d2 -> off=0x0 cb=0000000000000052 uValue=00000000000f082e 'biosorg_check_at_0E82Eh'
+biosorg_check_at_0E82Eh: ; 0xfe82e LB 0x52
+ sti ; fb ; 0xfe82e orgs.asm:894
+ pushfw ; 9c ; 0xfe82f orgs.asm:897
+ push ES ; 06 ; 0xfe830 orgs.asm:898
+ push DS ; 1e ; 0xfe831 orgs.asm:899
+ push ax ; 50 ; 0xfe832 orgs.asm:99
+ push cx ; 51 ; 0xfe833 orgs.asm:100
+ push dx ; 52 ; 0xfe834 orgs.asm:101
+ push bx ; 53 ; 0xfe835 orgs.asm:102
+ push sp ; 54 ; 0xfe836 orgs.asm:103
+ push bp ; 55 ; 0xfe837 orgs.asm:104
+ push si ; 56 ; 0xfe838 orgs.asm:105
+ push di ; 57 ; 0xfe839 orgs.asm:106
+ cmp ah, 000h ; 80 fc 00 ; 0xfe83a orgs.asm:902
+ je short 0e858h ; 74 19 ; 0xfe83d orgs.asm:903
+ cmp ah, 010h ; 80 fc 10 ; 0xfe83f orgs.asm:905
+ je short 0e858h ; 74 14 ; 0xfe842 orgs.asm:906
+ push CS ; 0e ; 0xfe844 orgs.asm:104
+ pop DS ; 1f ; 0xfe845 orgs.asm:105
+ cld ; fc ; 0xfe846 orgs.asm:106
+ call 056e8h ; e8 9e 6e ; 0xfe847 orgs.asm:909
+ pop di ; 5f ; 0xfe84a orgs.asm:116
+ pop si ; 5e ; 0xfe84b orgs.asm:117
+ pop bp ; 5d ; 0xfe84c orgs.asm:118
+ pop bx ; 5b ; 0xfe84d orgs.asm:119
+ pop bx ; 5b ; 0xfe84e orgs.asm:120
+ pop dx ; 5a ; 0xfe84f orgs.asm:121
+ pop cx ; 59 ; 0xfe850 orgs.asm:122
+ pop ax ; 58 ; 0xfe851 orgs.asm:123
+ pop DS ; 1f ; 0xfe852 orgs.asm:911
+ pop ES ; 07 ; 0xfe853 orgs.asm:912
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe854 orgs.asm:913
+ iret ; cf ; 0xfe857 orgs.asm:914
+ mov bx, strict word 00040h ; bb 40 00 ; 0xfe858 orgs.asm:917
+ mov ds, bx ; 8e db ; 0xfe85b orgs.asm:918
+ cli ; fa ; 0xfe85d orgs.asm:920
+ mov bx, word [word 0001ah] ; 8b 1e 1a 00 ; 0xfe85e orgs.asm:921
+ cmp bx, word [word 0001ch] ; 3b 1e 1c 00 ; 0xfe862 orgs.asm:922
+ jne short 0e86ch ; 75 04 ; 0xfe866 orgs.asm:923
+ sti ; fb ; 0xfe868 orgs.asm:924
+ nop ; 90 ; 0xfe869 orgs.asm:925
+ jmp short 0e85dh ; eb f1 ; 0xfe86a orgs.asm:933
+ push CS ; 0e ; 0xfe86c orgs.asm:104
+ pop DS ; 1f ; 0xfe86d orgs.asm:105
+ cld ; fc ; 0xfe86e orgs.asm:106
+ call 056e8h ; e8 76 6e ; 0xfe86f orgs.asm:937
+ pop di ; 5f ; 0xfe872 orgs.asm:116
+ pop si ; 5e ; 0xfe873 orgs.asm:117
+ pop bp ; 5d ; 0xfe874 orgs.asm:118
+ pop bx ; 5b ; 0xfe875 orgs.asm:119
+ pop bx ; 5b ; 0xfe876 orgs.asm:120
+ pop dx ; 5a ; 0xfe877 orgs.asm:121
+ pop cx ; 59 ; 0xfe878 orgs.asm:122
+ pop ax ; 58 ; 0xfe879 orgs.asm:123
+ pop DS ; 1f ; 0xfe87a orgs.asm:939
+ pop ES ; 07 ; 0xfe87b orgs.asm:940
+ add sp, strict byte 00002h ; 83 c4 02 ; 0xfe87c orgs.asm:941
+ iret ; cf ; 0xfe87f orgs.asm:949
+ ; disGetNextSymbol 0xfe880 LB 0x1780 -> off=0x0 cb=0000000000000107 uValue=00000000000f0880 'biosorg_check_before_or_at_0E985h'
+biosorg_check_before_or_at_0E985h: ; 0xfe880 LB 0x107
+ times 0x105 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfe987 LB 0x1679 -> off=0x0 cb=000000000000006e uValue=00000000000f0987 'biosorg_check_at_0E987h'
+biosorg_check_at_0E987h: ; 0xfe987 LB 0x6e
+ cli ; fa ; 0xfe987 orgs.asm:966
+ push ax ; 50 ; 0xfe988 orgs.asm:967
+ mov AL, strict byte 0adh ; b0 ad ; 0xfe989 orgs.asm:968
+ out strict byte 064h, AL ; e6 64 ; 0xfe98b orgs.asm:969
+ in AL, strict byte 060h ; e4 60 ; 0xfe98d orgs.asm:971
+ push DS ; 1e ; 0xfe98f orgs.asm:972
+ push ax ; 50 ; 0xfe990 orgs.asm:99
+ push cx ; 51 ; 0xfe991 orgs.asm:100
+ push dx ; 52 ; 0xfe992 orgs.asm:101
+ push bx ; 53 ; 0xfe993 orgs.asm:102
+ push sp ; 54 ; 0xfe994 orgs.asm:103
+ push bp ; 55 ; 0xfe995 orgs.asm:104
+ push si ; 56 ; 0xfe996 orgs.asm:105
+ push di ; 57 ; 0xfe997 orgs.asm:106
+ cld ; fc ; 0xfe998 orgs.asm:974
+ mov AH, strict byte 04fh ; b4 4f ; 0xfe999 orgs.asm:976
+ stc ; f9 ; 0xfe99b orgs.asm:977
+ int 015h ; cd 15 ; 0xfe99c orgs.asm:978
+ jnc short 0e9c7h ; 73 27 ; 0xfe99e orgs.asm:979
+ sti ; fb ; 0xfe9a0 orgs.asm:981
+ cmp AL, strict byte 0e0h ; 3c e0 ; 0xfe9a1 orgs.asm:984
+ jne short 0e9b0h ; 75 0b ; 0xfe9a3 orgs.asm:985
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9a5 orgs.asm:986
+ mov ds, ax ; 8e d8 ; 0xfe9a7 orgs.asm:987
+ or byte [00496h], 002h ; 80 0e 96 04 02 ; 0xfe9a9 orgs.asm:988
+ jmp short 0e9c7h ; eb 17 ; 0xfe9ae orgs.asm:989
+ cmp AL, strict byte 0e1h ; 3c e1 ; 0xfe9b0 orgs.asm:992
+ jne short 0e9bfh ; 75 0b ; 0xfe9b2 orgs.asm:993
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfe9b4 orgs.asm:994
+ mov ds, ax ; 8e d8 ; 0xfe9b6 orgs.asm:995
+ or byte [00496h], 001h ; 80 0e 96 04 01 ; 0xfe9b8 orgs.asm:996
+ jmp short 0e9c7h ; eb 08 ; 0xfe9bd orgs.asm:997
+ push ES ; 06 ; 0xfe9bf orgs.asm:1000
+ push CS ; 0e ; 0xfe9c0 orgs.asm:104
+ pop DS ; 1f ; 0xfe9c1 orgs.asm:105
+ cld ; fc ; 0xfe9c2 orgs.asm:106
+ call 0525ah ; e8 94 68 ; 0xfe9c3 orgs.asm:1002
+ pop ES ; 07 ; 0xfe9c6 orgs.asm:1003
+ pop di ; 5f ; 0xfe9c7 orgs.asm:116
+ pop si ; 5e ; 0xfe9c8 orgs.asm:117
+ pop bp ; 5d ; 0xfe9c9 orgs.asm:118
+ pop bx ; 5b ; 0xfe9ca orgs.asm:119
+ pop bx ; 5b ; 0xfe9cb orgs.asm:120
+ pop dx ; 5a ; 0xfe9cc orgs.asm:121
+ pop cx ; 59 ; 0xfe9cd orgs.asm:122
+ pop ax ; 58 ; 0xfe9ce orgs.asm:123
+ pop DS ; 1f ; 0xfe9cf orgs.asm:1007
+ cli ; fa ; 0xfe9d0 orgs.asm:1008
+ call 0e034h ; e8 60 f6 ; 0xfe9d1 orgs.asm:1009
+ mov AL, strict byte 0aeh ; b0 ae ; 0xfe9d4 orgs.asm:1011
+ out strict byte 064h, AL ; e6 64 ; 0xfe9d6 orgs.asm:1012
+ pop ax ; 58 ; 0xfe9d8 orgs.asm:1013
+ iret ; cf ; 0xfe9d9 orgs.asm:1014
+ push ax ; 50 ; 0xfe9da orgs.asm:99
+ push cx ; 51 ; 0xfe9db orgs.asm:100
+ push dx ; 52 ; 0xfe9dc orgs.asm:101
+ push bx ; 53 ; 0xfe9dd orgs.asm:102
+ push sp ; 54 ; 0xfe9de orgs.asm:103
+ push bp ; 55 ; 0xfe9df orgs.asm:104
+ push si ; 56 ; 0xfe9e0 orgs.asm:105
+ push di ; 57 ; 0xfe9e1 orgs.asm:106
+ push ES ; 06 ; 0xfe9e2 orgs.asm:1023
+ push DS ; 1e ; 0xfe9e3 orgs.asm:1024
+ push CS ; 0e ; 0xfe9e4 orgs.asm:104
+ pop DS ; 1f ; 0xfe9e5 orgs.asm:105
+ cld ; fc ; 0xfe9e6 orgs.asm:106
+ call 069e7h ; e8 fd 7f ; 0xfe9e7 orgs.asm:1026
+ pop DS ; 1f ; 0xfe9ea orgs.asm:1027
+ pop ES ; 07 ; 0xfe9eb orgs.asm:1028
+ pop di ; 5f ; 0xfe9ec orgs.asm:116
+ pop si ; 5e ; 0xfe9ed orgs.asm:117
+ pop bp ; 5d ; 0xfe9ee orgs.asm:118
+ pop bx ; 5b ; 0xfe9ef orgs.asm:119
+ pop bx ; 5b ; 0xfe9f0 orgs.asm:120
+ pop dx ; 5a ; 0xfe9f1 orgs.asm:121
+ pop cx ; 59 ; 0xfe9f2 orgs.asm:122
+ pop ax ; 58 ; 0xfe9f3 orgs.asm:123
+ iret ; cf ; 0xfe9f4 orgs.asm:1030
+ ; disGetNextSymbol 0xfe9f5 LB 0x160b -> off=0x0 cb=0000000000000264 uValue=00000000000f09f5 'biosorg_check_before_or_at_0EC57h'
+biosorg_check_before_or_at_0EC57h: ; 0xfe9f5 LB 0x264
+ times 0x262 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfec59 LB 0x13a7 -> off=0x0 cb=0000000000000002 uValue=00000000000f0c59 'biosorg_check_at_0EC59h'
+biosorg_check_at_0EC59h: ; 0xfec59 LB 0x2
+ jmp short 0ecc4h ; eb 69 ; 0xfec59 orgs.asm:1037
+ ; disGetNextSymbol 0xfec5b LB 0x13a5 -> off=0x0 cb=000000000000001f uValue=00000000000f0c5b 'int13_relocated'
+int13_relocated: ; 0xfec5b LB 0x1f
+ cmp ah, 04ah ; 80 fc 4a ; 0xfec5b orgs.asm:1046
+ jc short 0ec7ch ; 72 1c ; 0xfec5e orgs.asm:1047
+ cmp ah, 04dh ; 80 fc 4d ; 0xfec60 orgs.asm:1049
+ jnbe short 0ec7ch ; 77 17 ; 0xfec63 orgs.asm:1050
+ push ax ; 50 ; 0xfec65 orgs.asm:99
+ push cx ; 51 ; 0xfec66 orgs.asm:100
+ push dx ; 52 ; 0xfec67 orgs.asm:101
+ push bx ; 53 ; 0xfec68 orgs.asm:102
+ push sp ; 54 ; 0xfec69 orgs.asm:103
+ push bp ; 55 ; 0xfec6a orgs.asm:104
+ push si ; 56 ; 0xfec6b orgs.asm:105
+ push di ; 57 ; 0xfec6c orgs.asm:106
+ push ES ; 06 ; 0xfec6d orgs.asm:1053
+ push DS ; 1e ; 0xfec6e orgs.asm:1054
+ push CS ; 0e ; 0xfec6f orgs.asm:104
+ pop DS ; 1f ; 0xfec70 orgs.asm:105
+ cld ; fc ; 0xfec71 orgs.asm:106
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfec72 orgs.asm:86
+ jmp near 03c24h ; e9 aa 4f ; 0xfec77 orgs.asm:87
+ ; disGetNextSymbol 0xfec7a LB 0x1386 -> off=0x0 cb=000000000000004a uValue=00000000000f0c7a 'jmp_call_ret_int13_out'
+jmp_call_ret_int13_out: ; 0xfec7a LB 0x4a
+ db 0ffh
+ in AL, DX ; ec ; 0xfec7b
+ push ES ; 06 ; 0xfec7c orgs.asm:1062
+ push ax ; 50 ; 0xfec7d orgs.asm:1063
+ push bx ; 53 ; 0xfec7e orgs.asm:1064
+ push cx ; 51 ; 0xfec7f orgs.asm:1065
+ push dx ; 52 ; 0xfec80 orgs.asm:1066
+ call 03bf8h ; e8 74 4f ; 0xfec81 orgs.asm:1069
+ cmp AL, strict byte 000h ; 3c 00 ; 0xfec84 orgs.asm:1070
+ je short 0ecbfh ; 74 37 ; 0xfec86 orgs.asm:1071
+ call 03c0eh ; e8 83 4f ; 0xfec88 orgs.asm:1074
+ pop dx ; 5a ; 0xfec8b orgs.asm:1075
+ push dx ; 52 ; 0xfec8c orgs.asm:1076
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfec8d orgs.asm:1077
+ jne short 0ecabh ; 75 1a ; 0xfec8f orgs.asm:1078
+ pop dx ; 5a ; 0xfec91 orgs.asm:1080
+ pop cx ; 59 ; 0xfec92 orgs.asm:1081
+ pop bx ; 5b ; 0xfec93 orgs.asm:1082
+ pop ax ; 58 ; 0xfec94 orgs.asm:1083
+ pop ES ; 07 ; 0xfec95 orgs.asm:1084
+ push ax ; 50 ; 0xfec96 orgs.asm:99
+ push cx ; 51 ; 0xfec97 orgs.asm:100
+ push dx ; 52 ; 0xfec98 orgs.asm:101
+ push bx ; 53 ; 0xfec99 orgs.asm:102
+ push sp ; 54 ; 0xfec9a orgs.asm:103
+ push bp ; 55 ; 0xfec9b orgs.asm:104
+ push si ; 56 ; 0xfec9c orgs.asm:105
+ push di ; 57 ; 0xfec9d orgs.asm:106
+ push ES ; 06 ; 0xfec9e orgs.asm:1087
+ push DS ; 1e ; 0xfec9f orgs.asm:1088
+ push CS ; 0e ; 0xfeca0 orgs.asm:104
+ pop DS ; 1f ; 0xfeca1 orgs.asm:105
+ cld ; fc ; 0xfeca2 orgs.asm:106
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfeca3 orgs.asm:86
+ jmp near 041fch ; e9 51 55 ; 0xfeca8 orgs.asm:87
+ and dl, 0e0h ; 80 e2 e0 ; 0xfecab orgs.asm:1094
+ db 03ah, 0c2h
+ ; cmp al, dl ; 3a c2 ; 0xfecae orgs.asm:1095
+ jne short 0ecbfh ; 75 0d ; 0xfecb0 orgs.asm:1096
+ pop dx ; 5a ; 0xfecb2 orgs.asm:1098
+ pop cx ; 59 ; 0xfecb3 orgs.asm:1099
+ pop bx ; 5b ; 0xfecb4 orgs.asm:1100
+ pop ax ; 58 ; 0xfecb5 orgs.asm:1101
+ pop ES ; 07 ; 0xfecb6 orgs.asm:1102
+ push ax ; 50 ; 0xfecb7 orgs.asm:1104
+ push cx ; 51 ; 0xfecb8 orgs.asm:1105
+ push dx ; 52 ; 0xfecb9 orgs.asm:1106
+ push bx ; 53 ; 0xfecba orgs.asm:1107
+ db 0feh, 0cah
+ ; dec dl ; fe ca ; 0xfecbb orgs.asm:1109
+ jmp short 0ecc8h ; eb 09 ; 0xfecbd orgs.asm:1110
+ pop dx ; 5a ; 0xfecbf orgs.asm:1113
+ pop cx ; 59 ; 0xfecc0 orgs.asm:1114
+ pop bx ; 5b ; 0xfecc1 orgs.asm:1115
+ pop ax ; 58 ; 0xfecc2 orgs.asm:1116
+ pop ES ; 07 ; 0xfecc3 orgs.asm:1117
+ ; disGetNextSymbol 0xfecc4 LB 0x133c -> off=0x0 cb=0000000000000004 uValue=00000000000f0cc4 'int13_noeltorito'
+int13_noeltorito: ; 0xfecc4 LB 0x4
+ push ax ; 50 ; 0xfecc4 orgs.asm:1120
+ push cx ; 51 ; 0xfecc5 orgs.asm:1121
+ push dx ; 52 ; 0xfecc6 orgs.asm:1122
+ push bx ; 53 ; 0xfecc7 orgs.asm:1123
+ ; disGetNextSymbol 0xfecc8 LB 0x1338 -> off=0x0 cb=0000000000000016 uValue=00000000000f0cc8 'int13_legacy'
+int13_legacy: ; 0xfecc8 LB 0x16
+ push dx ; 52 ; 0xfecc8 orgs.asm:1125
+ push bp ; 55 ; 0xfecc9 orgs.asm:1126
+ push si ; 56 ; 0xfecca orgs.asm:1127
+ push di ; 57 ; 0xfeccb orgs.asm:1128
+ push ES ; 06 ; 0xfeccc orgs.asm:1129
+ push DS ; 1e ; 0xfeccd orgs.asm:1130
+ push CS ; 0e ; 0xfecce orgs.asm:104
+ pop DS ; 1f ; 0xfeccf orgs.asm:105
+ cld ; fc ; 0xfecd0 orgs.asm:106
+ test dl, 080h ; f6 c2 80 ; 0xfecd1 orgs.asm:1135
+ jne short 0ecdeh ; 75 08 ; 0xfecd4 orgs.asm:1136
+ push word [cs:0ec7ah] ; 2e ff 36 7a ec ; 0xfecd6 orgs.asm:86
+ jmp near 031abh ; e9 cd 44 ; 0xfecdb orgs.asm:87
+ ; disGetNextSymbol 0xfecde LB 0x1322 -> off=0x0 cb=0000000000000014 uValue=00000000000f0cde 'int13_notfloppy'
+int13_notfloppy: ; 0xfecde LB 0x14
+ cmp dl, 0e0h ; 80 fa e0 ; 0xfecde orgs.asm:1141
+ jc short 0ecf2h ; 72 0f ; 0xfece1 orgs.asm:1142
+ shr ebx, 010h ; 66 c1 eb 10 ; 0xfece3 orgs.asm:1148
+ push bx ; 53 ; 0xfece7 orgs.asm:1149
+ call 04854h ; e8 69 5b ; 0xfece8 orgs.asm:1150
+ pop bx ; 5b ; 0xfeceb orgs.asm:1151
+ sal ebx, 010h ; 66 c1 e3 10 ; 0xfecec orgs.asm:1152
+ jmp short 0ecffh ; eb 0d ; 0xfecf0 orgs.asm:1154
+ ; disGetNextSymbol 0xfecf2 LB 0x130e -> off=0x0 cb=000000000000000d uValue=00000000000f0cf2 'int13_disk'
+int13_disk: ; 0xfecf2 LB 0xd
+ cmp ah, 040h ; 80 fc 40 ; 0xfecf2 orgs.asm:1158
+ jnbe short 0ecfch ; 77 05 ; 0xfecf5 orgs.asm:1159
+ call 05de5h ; e8 eb 70 ; 0xfecf7 orgs.asm:1160
+ jmp short 0ecffh ; eb 03 ; 0xfecfa orgs.asm:1161
+ call 06231h ; e8 32 75 ; 0xfecfc orgs.asm:1164
+ ; disGetNextSymbol 0xfecff LB 0x1301 -> off=0x0 cb=000000000000000b uValue=00000000000f0cff 'int13_out'
+int13_out: ; 0xfecff LB 0xb
+ pop DS ; 1f ; 0xfecff orgs.asm:1167
+ pop ES ; 07 ; 0xfed00 orgs.asm:1168
+ pop di ; 5f ; 0xfed01 orgs.asm:116
+ pop si ; 5e ; 0xfed02 orgs.asm:117
+ pop bp ; 5d ; 0xfed03 orgs.asm:118
+ pop bx ; 5b ; 0xfed04 orgs.asm:119
+ pop bx ; 5b ; 0xfed05 orgs.asm:120
+ pop dx ; 5a ; 0xfed06 orgs.asm:121
+ pop cx ; 59 ; 0xfed07 orgs.asm:122
+ pop ax ; 58 ; 0xfed08 orgs.asm:123
+ iret ; cf ; 0xfed09 orgs.asm:1170
+ ; disGetNextSymbol 0xfed0a LB 0x12f6 -> off=0x0 cb=000000000000001e uValue=00000000000f0d0a 'detect_parport'
+detect_parport: ; 0xfed0a LB 0x1e
+ push dx ; 52 ; 0xfed0a orgs.asm:1177
+ inc dx ; 42 ; 0xfed0b orgs.asm:1178
+ inc dx ; 42 ; 0xfed0c orgs.asm:1179
+ in AL, DX ; ec ; 0xfed0d orgs.asm:1180
+ and AL, strict byte 0dfh ; 24 df ; 0xfed0e orgs.asm:1181
+ out DX, AL ; ee ; 0xfed10 orgs.asm:1182
+ pop dx ; 5a ; 0xfed11 orgs.asm:1183
+ mov AL, strict byte 0aah ; b0 aa ; 0xfed12 orgs.asm:1184
+ out DX, AL ; ee ; 0xfed14 orgs.asm:1185
+ in AL, DX ; ec ; 0xfed15 orgs.asm:1186
+ cmp AL, strict byte 0aah ; 3c aa ; 0xfed16 orgs.asm:1187
+ jne short 0ed27h ; 75 0d ; 0xfed18 orgs.asm:1188
+ push bx ; 53 ; 0xfed1a orgs.asm:1190
+ sal bx, 1 ; d1 e3 ; 0xfed1b orgs.asm:1191
+ mov word [bx+00408h], dx ; 89 97 08 04 ; 0xfed1d orgs.asm:1192
+ pop bx ; 5b ; 0xfed21 orgs.asm:1193
+ mov byte [bx+00478h], cl ; 88 8f 78 04 ; 0xfed22 orgs.asm:1194
+ inc bx ; 43 ; 0xfed26 orgs.asm:1195
+ retn ; c3 ; 0xfed27 orgs.asm:1197
+ ; disGetNextSymbol 0xfed28 LB 0x12d8 -> off=0x0 cb=0000000000000024 uValue=00000000000f0d28 'detect_serial'
+detect_serial: ; 0xfed28 LB 0x24
+ push dx ; 52 ; 0xfed28 orgs.asm:1204
+ inc dx ; 42 ; 0xfed29 orgs.asm:1205
+ mov AL, strict byte 002h ; b0 02 ; 0xfed2a orgs.asm:1206
+ out DX, AL ; ee ; 0xfed2c orgs.asm:1207
+ in AL, DX ; ec ; 0xfed2d orgs.asm:1208
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed2e orgs.asm:1209
+ jne short 0ed4ah ; 75 18 ; 0xfed30 orgs.asm:1210
+ inc dx ; 42 ; 0xfed32 orgs.asm:1212
+ in AL, DX ; ec ; 0xfed33 orgs.asm:1213
+ cmp AL, strict byte 002h ; 3c 02 ; 0xfed34 orgs.asm:1214
+ jne short 0ed4ah ; 75 12 ; 0xfed36 orgs.asm:1215
+ dec dx ; 4a ; 0xfed38 orgs.asm:1217
+ db 032h, 0c0h
+ ; xor al, al ; 32 c0 ; 0xfed39 orgs.asm:1218
+ pop dx ; 5a ; 0xfed3b orgs.asm:1219
+ push bx ; 53 ; 0xfed3c orgs.asm:1220
+ sal bx, 1 ; d1 e3 ; 0xfed3d orgs.asm:1221
+ mov word [bx+00400h], dx ; 89 97 00 04 ; 0xfed3f orgs.asm:1222
+ pop bx ; 5b ; 0xfed43 orgs.asm:1223
+ mov byte [bx+0047ch], cl ; 88 8f 7c 04 ; 0xfed44 orgs.asm:1224
+ inc bx ; 43 ; 0xfed48 orgs.asm:1225
+ retn ; c3 ; 0xfed49 orgs.asm:1226
+ pop dx ; 5a ; 0xfed4a orgs.asm:1229
+ retn ; c3 ; 0xfed4b orgs.asm:1230
+ ; disGetNextSymbol 0xfed4c LB 0x12b4 -> off=0x0 cb=000000000000008c uValue=00000000000f0d4c 'floppy_post'
+floppy_post: ; 0xfed4c LB 0x8c
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfed4c orgs.asm:1240
+ mov ds, ax ; 8e d8 ; 0xfed4e orgs.asm:1241
+ mov AL, strict byte 000h ; b0 00 ; 0xfed50 orgs.asm:1245
+ mov byte [0043eh], AL ; a2 3e 04 ; 0xfed52 orgs.asm:1246
+ mov byte [0043fh], AL ; a2 3f 04 ; 0xfed55 orgs.asm:1247
+ mov byte [00440h], AL ; a2 40 04 ; 0xfed58 orgs.asm:1248
+ mov byte [00441h], AL ; a2 41 04 ; 0xfed5b orgs.asm:1249
+ mov byte [00442h], AL ; a2 42 04 ; 0xfed5e orgs.asm:1250
+ mov byte [00443h], AL ; a2 43 04 ; 0xfed61 orgs.asm:1251
+ mov byte [00444h], AL ; a2 44 04 ; 0xfed64 orgs.asm:1252
+ mov byte [00445h], AL ; a2 45 04 ; 0xfed67 orgs.asm:1253
+ mov byte [00446h], AL ; a2 46 04 ; 0xfed6a orgs.asm:1254
+ mov byte [00447h], AL ; a2 47 04 ; 0xfed6d orgs.asm:1255
+ mov byte [00448h], AL ; a2 48 04 ; 0xfed70 orgs.asm:1256
+ mov byte [0048bh], AL ; a2 8b 04 ; 0xfed73 orgs.asm:1258
+ mov AL, strict byte 010h ; b0 10 ; 0xfed76 orgs.asm:1260
+ out strict byte 070h, AL ; e6 70 ; 0xfed78 orgs.asm:1261
+ in AL, strict byte 071h ; e4 71 ; 0xfed7a orgs.asm:1262
+ db 08ah, 0e0h
+ ; mov ah, al ; 8a e0 ; 0xfed7c orgs.asm:1263
+ shr al, 1 ; d0 e8 ; 0xfed7e orgs.asm:181
+ shr al, 1 ; d0 e8 ; 0xfed80 orgs.asm:184
+ shr al, 1 ; d0 e8 ; 0xfed82 orgs.asm:187
+ shr al, 1 ; d0 e8 ; 0xfed84 orgs.asm:190
+ je short 0ed8ch ; 74 04 ; 0xfed86 orgs.asm:1268
+ mov BL, strict byte 007h ; b3 07 ; 0xfed88 orgs.asm:1269
+ jmp short 0ed8eh ; eb 02 ; 0xfed8a orgs.asm:1270
+ mov BL, strict byte 000h ; b3 00 ; 0xfed8c orgs.asm:1273
+ db 08ah, 0c4h
+ ; mov al, ah ; 8a c4 ; 0xfed8e orgs.asm:1276
+ and AL, strict byte 00fh ; 24 0f ; 0xfed90 orgs.asm:1277
+ je short 0ed97h ; 74 03 ; 0xfed92 orgs.asm:1278
+ or bl, 070h ; 80 cb 70 ; 0xfed94 orgs.asm:1279
+ mov byte [0048fh], bl ; 88 1e 8f 04 ; 0xfed97 orgs.asm:1281
+ mov AL, strict byte 000h ; b0 00 ; 0xfed9b orgs.asm:1284
+ mov byte [00490h], AL ; a2 90 04 ; 0xfed9d orgs.asm:1285
+ mov byte [00491h], AL ; a2 91 04 ; 0xfeda0 orgs.asm:1286
+ mov byte [00492h], AL ; a2 92 04 ; 0xfeda3 orgs.asm:1287
+ mov byte [00493h], AL ; a2 93 04 ; 0xfeda6 orgs.asm:1288
+ mov byte [00494h], AL ; a2 94 04 ; 0xfeda9 orgs.asm:1289
+ mov byte [00495h], AL ; a2 95 04 ; 0xfedac orgs.asm:1290
+ mov AL, strict byte 002h ; b0 02 ; 0xfedaf orgs.asm:1292
+ out strict byte 00ah, AL ; e6 0a ; 0xfedb1 orgs.asm:1293
+ mov ax, 0efc7h ; b8 c7 ef ; 0xfedb3 orgs.asm:95
+ mov word [00078h], ax ; a3 78 00 ; 0xfedb6 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedb9 orgs.asm:97
+ mov word [0007ah], ax ; a3 7a 00 ; 0xfedbc orgs.asm:98
+ mov ax, 0ec59h ; b8 59 ec ; 0xfedbf orgs.asm:95
+ mov word [00100h], ax ; a3 00 01 ; 0xfedc2 orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedc5 orgs.asm:97
+ mov word [00102h], ax ; a3 02 01 ; 0xfedc8 orgs.asm:98
+ mov ax, 0ef57h ; b8 57 ef ; 0xfedcb orgs.asm:95
+ mov word [00038h], ax ; a3 38 00 ; 0xfedce orgs.asm:96
+ mov ax, 0f000h ; b8 00 f0 ; 0xfedd1 orgs.asm:97
+ mov word [0003ah], ax ; a3 3a 00 ; 0xfedd4 orgs.asm:98
+ retn ; c3 ; 0xfedd7 orgs.asm:1299
+ ; disGetNextSymbol 0xfedd8 LB 0x1228 -> off=0x0 cb=000000000000000b uValue=0000000000000dd8 'bcd_to_bin'
+bcd_to_bin: ; 0xfedd8 LB 0xb
+ push cx ; 51 ; 0xfedd8 orgs.asm:1312
+ mov CL, strict byte 004h ; b1 04 ; 0xfedd9 orgs.asm:1313
+ sal ax, CL ; d3 e0 ; 0xfeddb orgs.asm:1314
+ shr al, CL ; d2 e8 ; 0xfeddd orgs.asm:1315
+ pop cx ; 59 ; 0xfeddf orgs.asm:1316
+ aad 00ah ; d5 0a ; 0xfede0 orgs.asm:1318
+ retn ; c3 ; 0xfede2 orgs.asm:1319
+ ; disGetNextSymbol 0xfede3 LB 0x121d -> off=0x0 cb=000000000000005a uValue=00000000000f0de3 'rtc_post'
+rtc_post: ; 0xfede3 LB 0x5a
+ mov AL, strict byte 000h ; b0 00 ; 0xfede3 orgs.asm:1327
+ out strict byte 070h, AL ; e6 70 ; 0xfede5 orgs.asm:1328
+ in AL, strict byte 071h ; e4 71 ; 0xfede7 orgs.asm:1329
+ call 0edd8h ; e8 ec ff ; 0xfede9 orgs.asm:1330
+ test al, al ; 84 c0 ; 0xfedec orgs.asm:1331
+ db 032h, 0e4h
+ ; xor ah, ah ; 32 e4 ; 0xfedee orgs.asm:1332
+ mov dx, 01234h ; ba 34 12 ; 0xfedf0 orgs.asm:1333
+ mul dx ; f7 e2 ; 0xfedf3 orgs.asm:1334
+ db 08bh, 0c8h
+ ; mov cx, ax ; 8b c8 ; 0xfedf5 orgs.asm:1335
+ mov AL, strict byte 002h ; b0 02 ; 0xfedf7 orgs.asm:1338
+ out strict byte 070h, AL ; e6 70 ; 0xfedf9 orgs.asm:1339
+ in AL, strict byte 071h ; e4 71 ; 0xfedfb orgs.asm:1340
+ call 0edd8h ; e8 d8 ff ; 0xfedfd orgs.asm:1341
+ test al, al ; 84 c0 ; 0xfee00 orgs.asm:1342
+ je short 0ee0fh ; 74 0b ; 0xfee02 orgs.asm:1343
+ add cx, 04463h ; 81 c1 63 44 ; 0xfee04 orgs.asm:1345
+ adc dx, strict byte 00004h ; 83 d2 04 ; 0xfee08 orgs.asm:1346
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee0b orgs.asm:1347
+ jne short 0ee04h ; 75 f5 ; 0xfee0d orgs.asm:1348
+ mov AL, strict byte 004h ; b0 04 ; 0xfee0f orgs.asm:1352
+ out strict byte 070h, AL ; e6 70 ; 0xfee11 orgs.asm:1353
+ in AL, strict byte 071h ; e4 71 ; 0xfee13 orgs.asm:1354
+ call 0edd8h ; e8 c0 ff ; 0xfee15 orgs.asm:1355
+ test al, al ; 84 c0 ; 0xfee18 orgs.asm:1356
+ je short 0ee28h ; 74 0c ; 0xfee1a orgs.asm:1357
+ add cx, 0076ch ; 81 c1 6c 07 ; 0xfee1c orgs.asm:1359
+ adc dx, 00100h ; 81 d2 00 01 ; 0xfee20 orgs.asm:1360
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xfee24 orgs.asm:1361
+ jne short 0ee1ch ; 75 f4 ; 0xfee26 orgs.asm:1362
+ db 08ah, 0cdh
+ ; mov cl, ch ; 8a cd ; 0xfee28 orgs.asm:1365
+ db 08ah, 0eah
+ ; mov ch, dl ; 8a ea ; 0xfee2a orgs.asm:1366
+ db 08ah, 0d6h
+ ; mov dl, dh ; 8a d6 ; 0xfee2c orgs.asm:1367
+ db 032h, 0f6h
+ ; xor dh, dh ; 32 f6 ; 0xfee2e orgs.asm:1368
+ mov word [0046ch], cx ; 89 0e 6c 04 ; 0xfee30 orgs.asm:1369
+ mov word [0046eh], dx ; 89 16 6e 04 ; 0xfee34 orgs.asm:1370
+ mov byte [00470h], dh ; 88 36 70 04 ; 0xfee38 orgs.asm:1371
+ retn ; c3 ; 0xfee3c orgs.asm:1419
+ ; disGetNextSymbol 0xfee3d LB 0x11c3 -> off=0x0 cb=000000000000011a uValue=00000000000f0e3d 'biosorg_check_before_or_at_0EF55h'
+biosorg_check_before_or_at_0EF55h: ; 0xfee3d LB 0x11a
+ times 0x118 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfef57 LB 0x10a9 -> off=0x0 cb=000000000000003b uValue=00000000000f0f57 'int0e_handler'
+int0e_handler: ; 0xfef57 LB 0x3b
+ push ax ; 50 ; 0xfef57 orgs.asm:1430
+ push dx ; 52 ; 0xfef58 orgs.asm:1431
+ mov dx, 003f4h ; ba f4 03 ; 0xfef59 orgs.asm:1432
+ in AL, DX ; ec ; 0xfef5c orgs.asm:1433
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef5d orgs.asm:1434
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef5f orgs.asm:1435
+ je short 0ef81h ; 74 1e ; 0xfef61 orgs.asm:1436
+ mov dx, 003f5h ; ba f5 03 ; 0xfef63 orgs.asm:1437
+ mov AL, strict byte 008h ; b0 08 ; 0xfef66 orgs.asm:1438
+ out DX, AL ; ee ; 0xfef68 orgs.asm:1439
+ mov dx, 003f4h ; ba f4 03 ; 0xfef69 orgs.asm:1441
+ in AL, DX ; ec ; 0xfef6c orgs.asm:1442
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef6d orgs.asm:1443
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef6f orgs.asm:1444
+ jne short 0ef69h ; 75 f6 ; 0xfef71 orgs.asm:1445
+ mov dx, 003f5h ; ba f5 03 ; 0xfef73 orgs.asm:1448
+ in AL, DX ; ec ; 0xfef76 orgs.asm:1449
+ mov dx, 003f4h ; ba f4 03 ; 0xfef77 orgs.asm:1450
+ in AL, DX ; ec ; 0xfef7a orgs.asm:1451
+ and AL, strict byte 0c0h ; 24 c0 ; 0xfef7b orgs.asm:1452
+ cmp AL, strict byte 0c0h ; 3c c0 ; 0xfef7d orgs.asm:1453
+ je short 0ef73h ; 74 f2 ; 0xfef7f orgs.asm:1454
+ push DS ; 1e ; 0xfef81 orgs.asm:1457
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xfef82 orgs.asm:1458
+ mov ds, ax ; 8e d8 ; 0xfef84 orgs.asm:1459
+ call 0e034h ; e8 ab f0 ; 0xfef86 orgs.asm:1460
+ or byte [0043eh], 080h ; 80 0e 3e 04 80 ; 0xfef89 orgs.asm:1462
+ pop DS ; 1f ; 0xfef8e orgs.asm:1463
+ pop dx ; 5a ; 0xfef8f orgs.asm:1464
+ pop ax ; 58 ; 0xfef90 orgs.asm:1465
+ iret ; cf ; 0xfef91 orgs.asm:1466
+ ; disGetNextSymbol 0xfef92 LB 0x106e -> off=0x0 cb=0000000000000035 uValue=00000000000f0f92 'biosorg_check_before_or_at_0EFC5h'
+biosorg_check_before_or_at_0EFC5h: ; 0xfef92 LB 0x35
+ times 0x33 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfefc7 LB 0x1039 -> off=0x0 cb=000000000000000b uValue=00000000000f0fc7 '_diskette_param_table'
+_diskette_param_table: ; 0xfefc7 LB 0xb
+ scasw ; af ; 0xfefc7
+ add ah, byte [di] ; 02 25 ; 0xfefc8
+ add dl, byte [bp+si] ; 02 12 ; 0xfefca
+ db 01bh, 0ffh
+ ; sbb di, di ; 1b ff ; 0xfefcc
+ insb ; 6c ; 0xfefce
+ db 0f6h
+ invd ; 0f 08 ; 0xfefd0
+ ; disGetNextSymbol 0xfefd2 LB 0x102e -> off=0x0 cb=0000000000000002 uValue=00000000000f0fd2 'biosorg_check_at_0EFD2h'
+biosorg_check_at_0EFD2h: ; 0xfefd2 LB 0x2
+ jmp short 0efd4h ; eb 00 ; 0xfefd2 orgs.asm:1493
+ ; disGetNextSymbol 0xfefd4 LB 0x102c -> off=0x0 cb=000000000000001b uValue=00000000000f0fd4 'int17_handler'
+int17_handler: ; 0xfefd4 LB 0x1b
+ push DS ; 1e ; 0xfefd4 orgs.asm:1496
+ push ES ; 06 ; 0xfefd5 orgs.asm:1497
+ push ax ; 50 ; 0xfefd6 orgs.asm:99
+ push cx ; 51 ; 0xfefd7 orgs.asm:100
+ push dx ; 52 ; 0xfefd8 orgs.asm:101
+ push bx ; 53 ; 0xfefd9 orgs.asm:102
+ push sp ; 54 ; 0xfefda orgs.asm:103
+ push bp ; 55 ; 0xfefdb orgs.asm:104
+ push si ; 56 ; 0xfefdc orgs.asm:105
+ push di ; 57 ; 0xfefdd orgs.asm:106
+ push CS ; 0e ; 0xfefde orgs.asm:104
+ pop DS ; 1f ; 0xfefdf orgs.asm:105
+ cld ; fc ; 0xfefe0 orgs.asm:106
+ call 07339h ; e8 55 83 ; 0xfefe1 orgs.asm:1500
+ pop di ; 5f ; 0xfefe4 orgs.asm:116
+ pop si ; 5e ; 0xfefe5 orgs.asm:117
+ pop bp ; 5d ; 0xfefe6 orgs.asm:118
+ pop bx ; 5b ; 0xfefe7 orgs.asm:119
+ pop bx ; 5b ; 0xfefe8 orgs.asm:120
+ pop dx ; 5a ; 0xfefe9 orgs.asm:121
+ pop cx ; 59 ; 0xfefea orgs.asm:122
+ pop ax ; 58 ; 0xfefeb orgs.asm:123
+ pop ES ; 07 ; 0xfefec orgs.asm:1502
+ pop DS ; 1f ; 0xfefed orgs.asm:1503
+ iret ; cf ; 0xfefee orgs.asm:1504
+ ; disGetNextSymbol 0xfefef LB 0x1011 -> off=0x0 cb=0000000000000006 uValue=00000000000f0fef '_pmode_IDT'
+_pmode_IDT: ; 0xfefef LB 0x6
+ db 000h, 000h, 000h, 000h, 00fh, 000h
+ ; disGetNextSymbol 0xfeff5 LB 0x100b -> off=0x0 cb=0000000000000006 uValue=00000000000f0ff5 '_rmode_IDT'
+_rmode_IDT: ; 0xfeff5 LB 0x6
+ db 0ffh, 003h, 000h, 000h, 000h, 000h
+ ; disGetNextSymbol 0xfeffb LB 0x1005 -> off=0x0 cb=0000000000000001 uValue=00000000000f0ffb 'int1c_handler'
+int1c_handler: ; 0xfeffb LB 0x1
+ iret ; cf ; 0xfeffb orgs.asm:1539
+ ; disGetNextSymbol 0xfeffc LB 0x1004 -> off=0x0 cb=0000000000000049 uValue=00000000000f0ffc 'biosorg_check_before_or_at_0F043h'
+biosorg_check_before_or_at_0F043h: ; 0xfeffc LB 0x49
+ times 0x47 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff045 LB 0xfbb -> off=0x0 cb=0000000000000001 uValue=00000000000f1045 'biosorg_check_at_0F045h'
+biosorg_check_at_0F045h: ; 0xff045 LB 0x1
+ iret ; cf ; 0xff045 orgs.asm:1548
+ ; disGetNextSymbol 0xff046 LB 0xfba -> off=0x0 cb=000000000000001f uValue=00000000000f1046 'biosorg_check_before_or_at_0F063h'
+biosorg_check_before_or_at_0F063h: ; 0xff046 LB 0x1f
+ times 0x1d db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff065 LB 0xf9b -> off=0x0 cb=0000000000000001 uValue=00000000000f1065 'int10_handler'
+int10_handler: ; 0xff065 LB 0x1
+ iret ; cf ; 0xff065 orgs.asm:1557
+ ; disGetNextSymbol 0xff066 LB 0xf9a -> off=0x0 cb=000000000000003e uValue=00000000000f1066 'biosorg_check_before_or_at_0F0A2h'
+biosorg_check_before_or_at_0F0A2h: ; 0xff066 LB 0x3e
+ times 0x3c db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff0a4 LB 0xf5c -> off=0x0 cb=0000000000000008 uValue=00000000000f10a4 'biosorg_check_at_0F0A4h'
+biosorg_check_at_0F0A4h: ; 0xff0a4 LB 0x8
+ push CS ; 0e ; 0xff0a4 orgs.asm:104
+ pop DS ; 1f ; 0xff0a5 orgs.asm:105
+ cld ; fc ; 0xff0a6 orgs.asm:106
+ call 01700h ; e8 56 26 ; 0xff0a7 orgs.asm:1572
+ hlt ; f4 ; 0xff0aa orgs.asm:1574
+ iret ; cf ; 0xff0ab orgs.asm:1575
+ ; disGetNextSymbol 0xff0ac LB 0xf54 -> off=0x0 cb=0000000000000095 uValue=00000000000f10ac 'int19_relocated'
+int19_relocated: ; 0xff0ac LB 0x95
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0ac orgs.asm:1586
+ mov ax, word [bp+002h] ; 8b 46 02 ; 0xff0ae orgs.asm:1587
+ cmp ax, 0f000h ; 3d 00 f0 ; 0xff0b1 orgs.asm:1588
+ je short 0f0c3h ; 74 0d ; 0xff0b4 orgs.asm:1589
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff0b6 orgs.asm:1591
+ mov ds, ax ; 8e d8 ; 0xff0b8 orgs.asm:1592
+ mov ax, 01234h ; b8 34 12 ; 0xff0ba orgs.asm:1593
+ mov word [001d8h], ax ; a3 d8 01 ; 0xff0bd orgs.asm:1594
+ jmp near 0e05bh ; e9 98 ef ; 0xff0c0 orgs.asm:1595
+ push CS ; 0e ; 0xff0c3 orgs.asm:104
+ pop DS ; 1f ; 0xff0c4 orgs.asm:105
+ cld ; fc ; 0xff0c5 orgs.asm:106
+ push bp ; 55 ; 0xff0c6 orgs.asm:1602
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff0c7 orgs.asm:1603
+ mov ax, strict word 00001h ; b8 01 00 ; 0xff0c9 orgs.asm:1606
+ push ax ; 50 ; 0xff0cc orgs.asm:1607
+ call 04cfah ; e8 2a 5c ; 0xff0cd orgs.asm:1608
+ inc sp ; 44 ; 0xff0d0 orgs.asm:1609
+ inc sp ; 44 ; 0xff0d1 orgs.asm:1610
+ test ax, ax ; 85 c0 ; 0xff0d2 orgs.asm:1611
+ jne short 0f0fdh ; 75 27 ; 0xff0d4 orgs.asm:1612
+ mov ax, strict word 00002h ; b8 02 00 ; 0xff0d6 orgs.asm:1615
+ push ax ; 50 ; 0xff0d9 orgs.asm:1616
+ call 04cfah ; e8 1d 5c ; 0xff0da orgs.asm:1617
+ inc sp ; 44 ; 0xff0dd orgs.asm:1618
+ inc sp ; 44 ; 0xff0de orgs.asm:1619
+ test ax, ax ; 85 c0 ; 0xff0df orgs.asm:1620
+ jne short 0f0fdh ; 75 1a ; 0xff0e1 orgs.asm:1621
+ mov ax, strict word 00003h ; b8 03 00 ; 0xff0e3 orgs.asm:1624
+ push ax ; 50 ; 0xff0e6 orgs.asm:1625
+ call 04cfah ; e8 10 5c ; 0xff0e7 orgs.asm:1626
+ inc sp ; 44 ; 0xff0ea orgs.asm:1627
+ inc sp ; 44 ; 0xff0eb orgs.asm:1628
+ test ax, ax ; 85 c0 ; 0xff0ec orgs.asm:1629
+ jne short 0f0fdh ; 75 0d ; 0xff0ee orgs.asm:1630
+ mov ax, strict word 00004h ; b8 04 00 ; 0xff0f0 orgs.asm:1633
+ push ax ; 50 ; 0xff0f3 orgs.asm:1634
+ call 04cfah ; e8 03 5c ; 0xff0f4 orgs.asm:1635
+ inc sp ; 44 ; 0xff0f7 orgs.asm:1636
+ inc sp ; 44 ; 0xff0f8 orgs.asm:1637
+ test ax, ax ; 85 c0 ; 0xff0f9 orgs.asm:1638
+ je short 0f0a4h ; 74 a7 ; 0xff0fb orgs.asm:1639
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff0fd orgs.asm:1645
+ sal ax, 1 ; d1 e0 ; 0xff100 orgs.asm:212
+ sal ax, 1 ; d1 e0 ; 0xff102 orgs.asm:215
+ sal ax, 1 ; d1 e0 ; 0xff104 orgs.asm:218
+ sal ax, 1 ; d1 e0 ; 0xff106 orgs.asm:221
+ mov word [bp+002h], ax ; 89 46 02 ; 0xff108 orgs.asm:1647
+ mov ax, word [byte bp+000h] ; 8b 46 00 ; 0xff10b orgs.asm:1648
+ and ax, 0f000h ; 25 00 f0 ; 0xff10e orgs.asm:1657
+ mov word [bp+004h], ax ; 89 46 04 ; 0xff111 orgs.asm:1658
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff114 orgs.asm:1659
+ mov ds, ax ; 8e d8 ; 0xff116 orgs.asm:1660
+ mov es, ax ; 8e c0 ; 0xff118 orgs.asm:1661
+ mov word [byte bp+000h], ax ; 89 46 00 ; 0xff11a orgs.asm:1662
+ mov ax, 0aa55h ; b8 55 aa ; 0xff11d orgs.asm:1663
+ pop bp ; 5d ; 0xff120 orgs.asm:1665
+ iret ; cf ; 0xff121 orgs.asm:1666
+ or cx, word [bp+si] ; 0b 0a ; 0xff122
+ or word [bp+di], cx ; 09 0b ; 0xff124
+ push eax ; 66 50 ; 0xff126 orgs.asm:88
+ mov eax, strict dword 000800000h ; 66 b8 00 00 80 00 ; 0xff128 orgs.asm:89
+ db 08bh, 0c3h
+ ; mov ax, bx ; 8b c3 ; 0xff12e orgs.asm:90
+ sal eax, 008h ; 66 c1 e0 08 ; 0xff130 orgs.asm:91
+ and dl, 0fch ; 80 e2 fc ; 0xff134 orgs.asm:92
+ db 00ah, 0c2h
+ ; or al, dl ; 0a c2 ; 0xff137 orgs.asm:93
+ mov dx, 00cf8h ; ba f8 0c ; 0xff139 orgs.asm:94
+ out DX, eax ; 66 ef ; 0xff13c orgs.asm:95
+ pop eax ; 66 58 ; 0xff13e orgs.asm:96
+ retn ; c3 ; 0xff140 orgs.asm:97
+ ; disGetNextSymbol 0xff141 LB 0xebf -> off=0x0 cb=0000000000000012 uValue=00000000000f1141 'pcibios_init_iomem_bases'
+pcibios_init_iomem_bases: ; 0xff141 LB 0x12
+ push bp ; 55 ; 0xff141 orgs.asm:100
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff142 orgs.asm:101
+ mov eax, strict dword 00124f9fdh ; 66 b8 fd f9 24 01 ; 0xff144 orgs.asm:103
+ mov dx, 00410h ; ba 10 04 ; 0xff14a orgs.asm:104
+ out DX, eax ; 66 ef ; 0xff14d orgs.asm:105
+ db 08bh, 0e5h
+ ; mov sp, bp ; 8b e5 ; 0xff14f orgs.asm:218
+ pop bp ; 5d ; 0xff151 orgs.asm:219
+ retn ; c3 ; 0xff152 orgs.asm:220
+ ; disGetNextSymbol 0xff153 LB 0xead -> off=0x0 cb=000000000000000c uValue=00000000000f1153 'pcibios_init_set_elcr'
+pcibios_init_set_elcr: ; 0xff153 LB 0xc
+ push ax ; 50 ; 0xff153 orgs.asm:223
+ push cx ; 51 ; 0xff154 orgs.asm:224
+ mov dx, 004d0h ; ba d0 04 ; 0xff155 orgs.asm:225
+ test AL, strict byte 008h ; a8 08 ; 0xff158 orgs.asm:226
+ je short 0f15fh ; 74 03 ; 0xff15a orgs.asm:227
+ inc dx ; 42 ; 0xff15c orgs.asm:229
+ and AL, strict byte 007h ; 24 07 ; 0xff15d orgs.asm:230
+ ; disGetNextSymbol 0xff15f LB 0xea1 -> off=0x0 cb=000000000000000d uValue=00000000000f115f 'is_master_pic'
+is_master_pic: ; 0xff15f LB 0xd
+ db 08ah, 0c8h
+ ; mov cl, al ; 8a c8 ; 0xff15f orgs.asm:232
+ mov BL, strict byte 001h ; b3 01 ; 0xff161 orgs.asm:233
+ sal bl, CL ; d2 e3 ; 0xff163 orgs.asm:234
+ in AL, DX ; ec ; 0xff165 orgs.asm:235
+ db 00ah, 0c3h
+ ; or al, bl ; 0a c3 ; 0xff166 orgs.asm:236
+ out DX, AL ; ee ; 0xff168 orgs.asm:237
+ pop cx ; 59 ; 0xff169 orgs.asm:238
+ pop ax ; 58 ; 0xff16a orgs.asm:239
+ retn ; c3 ; 0xff16b orgs.asm:240
+ ; disGetNextSymbol 0xff16c LB 0xe94 -> off=0x0 cb=0000000000000034 uValue=00000000000f116c 'pcibios_init_irqs'
+pcibios_init_irqs: ; 0xff16c LB 0x34
+ push DS ; 1e ; 0xff16c orgs.asm:243
+ push bp ; 55 ; 0xff16d orgs.asm:244
+ mov ax, 0f000h ; b8 00 f0 ; 0xff16e orgs.asm:245
+ mov ds, ax ; 8e d8 ; 0xff171 orgs.asm:246
+ pop bp ; 5d ; 0xff173 orgs.asm:353
+ pop DS ; 1f ; 0xff174 orgs.asm:354
+ retn ; c3 ; 0xff175 orgs.asm:355
+ mov ax, ax ; 89 c0 ; 0xff176
+ mov ax, ax ; 89 c0 ; 0xff178
+ mov ax, ax ; 89 c0 ; 0xff17a
+ mov ax, ax ; 89 c0 ; 0xff17c
+ mov ax, ax ; 89 c0 ; 0xff17e
+ and AL, strict byte 050h ; 24 50 ; 0xff180
+ dec cx ; 49 ; 0xff182
+ push dx ; 52 ; 0xff183
+ add byte [bx+di], al ; 00 01 ; 0xff184
+ add byte [bp+si], al ; 00 02 ; 0xff186
+ add byte [bx+si], cl ; 00 08 ; 0xff188
+ add byte [bx+si], al ; 00 00 ; 0xff18a
+ xchg byte [bx+si+07000h], al ; 86 80 00 70 ; 0xff18c
+ times 0xf db 0
+ db 031h
+ ; disGetNextSymbol 0xff1a0 LB 0xe60 -> off=0x0 cb=00000000000001e0 uValue=00000000000f11a0 '_pci_routing_table'
+_pci_routing_table: ; 0xff1a0 LB 0x1e0
+ db 000h, 008h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 000h, 000h
+ db 000h, 010h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 001h, 000h
+ db 000h, 018h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 002h, 000h
+ db 000h, 020h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 003h, 000h
+ db 000h, 028h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 004h, 000h
+ db 000h, 030h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 005h, 000h
+ db 000h, 038h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 006h, 000h
+ db 000h, 040h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 007h, 000h
+ db 000h, 048h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 008h, 000h
+ db 000h, 050h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 009h, 000h
+ db 000h, 058h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00ah, 000h
+ db 000h, 060h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00bh, 000h
+ db 000h, 068h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 00ch, 000h
+ db 000h, 070h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 00dh, 000h
+ db 000h, 078h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 00eh, 000h
+ db 000h, 080h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 00fh, 000h
+ db 000h, 088h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 010h, 000h
+ db 000h, 090h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 011h, 000h
+ db 000h, 098h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 012h, 000h
+ db 000h, 0a0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 013h, 000h
+ db 000h, 0a8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 014h, 000h
+ db 000h, 0b0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 015h, 000h
+ db 000h, 0b8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 016h, 000h
+ db 000h, 0c0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 017h, 000h
+ db 000h, 0c8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 018h, 000h
+ db 000h, 0d0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 019h, 000h
+ db 000h, 0d8h, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 01ah, 000h
+ db 000h, 0e0h, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 01bh, 000h
+ db 000h, 0e8h, 060h, 0f8h, 0deh, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 01ch, 000h
+ db 000h, 0f0h, 061h, 0f8h, 0deh, 062h, 0f8h, 0deh, 063h, 0f8h, 0deh, 060h, 0f8h, 0deh, 01dh, 000h
+ ; disGetNextSymbol 0xff380 LB 0xc80 -> off=0x0 cb=0000000000000002 uValue=00000000000f1380 '_pci_routing_table_size'
+_pci_routing_table_size: ; 0xff380 LB 0x2
+ loopne 0f383h ; e0 01 ; 0xff380
+ ; disGetNextSymbol 0xff382 LB 0xc7e -> off=0x0 cb=00000000000004bf uValue=00000000000f1382 'biosorg_check_before_or_at_0F83Fh'
+biosorg_check_before_or_at_0F83Fh: ; 0xff382 LB 0x4bf
+ times 0x4bd db 0
+ db 'XM'
+ ; disGetNextSymbol 0xff841 LB 0x7bf -> off=0x0 cb=000000000000000c uValue=00000000000f1841 'int12_handler'
+int12_handler: ; 0xff841 LB 0xc
+ sti ; fb ; 0xff841 orgs.asm:1680
+ push DS ; 1e ; 0xff842 orgs.asm:1681
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff843 orgs.asm:1682
+ mov ds, ax ; 8e d8 ; 0xff846 orgs.asm:1683
+ mov ax, word [00013h] ; a1 13 00 ; 0xff848 orgs.asm:1684
+ pop DS ; 1f ; 0xff84b orgs.asm:1685
+ iret ; cf ; 0xff84c orgs.asm:1686
+ ; disGetNextSymbol 0xff84d LB 0x7b3 -> off=0x0 cb=000000000000000c uValue=00000000000f184d 'int11_handler'
+int11_handler: ; 0xff84d LB 0xc
+ sti ; fb ; 0xff84d orgs.asm:1695
+ push DS ; 1e ; 0xff84e orgs.asm:1696
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff84f orgs.asm:1697
+ mov ds, ax ; 8e d8 ; 0xff852 orgs.asm:1698
+ mov ax, word [00010h] ; a1 10 00 ; 0xff854 orgs.asm:1699
+ pop DS ; 1f ; 0xff857 orgs.asm:1700
+ iret ; cf ; 0xff858 orgs.asm:1701
+ ; disGetNextSymbol 0xff859 LB 0x7a7 -> off=0x0 cb=000000000000002d uValue=00000000000f1859 'int15_handler'
+int15_handler: ; 0xff859 LB 0x2d
+ pushfw ; 9c ; 0xff859 orgs.asm:1730
+ push DS ; 1e ; 0xff85a orgs.asm:1731
+ push ES ; 06 ; 0xff85b orgs.asm:1732
+ push CS ; 0e ; 0xff85c orgs.asm:104
+ pop DS ; 1f ; 0xff85d orgs.asm:105
+ cld ; fc ; 0xff85e orgs.asm:106
+ push ax ; 50 ; 0xff85f orgs.asm:99
+ push cx ; 51 ; 0xff860 orgs.asm:100
+ push dx ; 52 ; 0xff861 orgs.asm:101
+ push bx ; 53 ; 0xff862 orgs.asm:102
+ push sp ; 54 ; 0xff863 orgs.asm:103
+ push bp ; 55 ; 0xff864 orgs.asm:104
+ push si ; 56 ; 0xff865 orgs.asm:105
+ push di ; 57 ; 0xff866 orgs.asm:106
+ cmp ah, 053h ; 80 fc 53 ; 0xff867 orgs.asm:1743
+ je short 0f881h ; 74 15 ; 0xff86a orgs.asm:1744
+ cmp ah, 0c2h ; 80 fc c2 ; 0xff86c orgs.asm:1745
+ je short 0f886h ; 74 15 ; 0xff86f orgs.asm:1746
+ call 066dah ; e8 66 6e ; 0xff871 orgs.asm:1748
+ pop di ; 5f ; 0xff874 orgs.asm:116
+ pop si ; 5e ; 0xff875 orgs.asm:117
+ pop bp ; 5d ; 0xff876 orgs.asm:118
+ pop bx ; 5b ; 0xff877 orgs.asm:119
+ pop bx ; 5b ; 0xff878 orgs.asm:120
+ pop dx ; 5a ; 0xff879 orgs.asm:121
+ pop cx ; 59 ; 0xff87a orgs.asm:122
+ pop ax ; 58 ; 0xff87b orgs.asm:123
+ pop ES ; 07 ; 0xff87c orgs.asm:1754
+ pop DS ; 1f ; 0xff87d orgs.asm:1755
+ popfw ; 9d ; 0xff87e orgs.asm:1756
+ jmp short 0f88bh ; eb 0a ; 0xff87f orgs.asm:1757
+ call 0963eh ; e8 ba 9d ; 0xff881 orgs.asm:1760
+ jmp short 0f874h ; eb ee ; 0xff884 orgs.asm:1761
+ ; disGetNextSymbol 0xff886 LB 0x77a -> off=0x0 cb=0000000000000005 uValue=00000000000f1886 'int15_handler_mouse'
+int15_handler_mouse: ; 0xff886 LB 0x5
+ call 06fb9h ; e8 30 77 ; 0xff886 orgs.asm:1764
+ jmp short 0f874h ; eb e9 ; 0xff889 orgs.asm:1765
+ ; disGetNextSymbol 0xff88b LB 0x775 -> off=0x0 cb=000000000000001a uValue=00000000000f188b 'iret_modify_cf'
+iret_modify_cf: ; 0xff88b LB 0x1a
+ jc short 0f89bh ; 72 0e ; 0xff88b orgs.asm:1782
+ push bp ; 55 ; 0xff88d orgs.asm:1783
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff88e orgs.asm:1784
+ and byte [bp+006h], 0feh ; 80 66 06 fe ; 0xff890 orgs.asm:1785
+ or word [bp+006h], 00200h ; 81 4e 06 00 02 ; 0xff894 orgs.asm:1786
+ pop bp ; 5d ; 0xff899 orgs.asm:1787
+ iret ; cf ; 0xff89a orgs.asm:1788
+ push bp ; 55 ; 0xff89b orgs.asm:1790
+ db 08bh, 0ech
+ ; mov bp, sp ; 8b ec ; 0xff89c orgs.asm:1791
+ or word [bp+006h], 00201h ; 81 4e 06 01 02 ; 0xff89e orgs.asm:1792
+ pop bp ; 5d ; 0xff8a3 orgs.asm:1793
+ iret ; cf ; 0xff8a4 orgs.asm:1794
+ ; disGetNextSymbol 0xff8a5 LB 0x75b -> off=0x0 cb=000000000000003a uValue=00000000000f18a5 'int74_handler'
+int74_handler: ; 0xff8a5 LB 0x3a
+ sti ; fb ; 0xff8a5 orgs.asm:1801
+ push ax ; 50 ; 0xff8a6 orgs.asm:99
+ push cx ; 51 ; 0xff8a7 orgs.asm:100
+ push dx ; 52 ; 0xff8a8 orgs.asm:101
+ push bx ; 53 ; 0xff8a9 orgs.asm:102
+ push sp ; 54 ; 0xff8aa orgs.asm:103
+ push bp ; 55 ; 0xff8ab orgs.asm:104
+ push si ; 56 ; 0xff8ac orgs.asm:105
+ push di ; 57 ; 0xff8ad orgs.asm:106
+ push ES ; 06 ; 0xff8ae orgs.asm:1803
+ push DS ; 1e ; 0xff8af orgs.asm:1804
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8b0 orgs.asm:1805
+ push ax ; 50 ; 0xff8b2 orgs.asm:1806
+ push ax ; 50 ; 0xff8b3 orgs.asm:1807
+ push ax ; 50 ; 0xff8b4 orgs.asm:1808
+ push ax ; 50 ; 0xff8b5 orgs.asm:1809
+ push ax ; 50 ; 0xff8b6 orgs.asm:1810
+ push CS ; 0e ; 0xff8b7 orgs.asm:104
+ pop DS ; 1f ; 0xff8b8 orgs.asm:105
+ cld ; fc ; 0xff8b9 orgs.asm:106
+ call 06f0bh ; e8 4e 76 ; 0xff8ba orgs.asm:1812
+ pop cx ; 59 ; 0xff8bd orgs.asm:1813
+ jcxz 0f8cdh ; e3 0d ; 0xff8be orgs.asm:1814
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff8c0 orgs.asm:1820
+ push ax ; 50 ; 0xff8c2 orgs.asm:1821
+ pop DS ; 1f ; 0xff8c3 orgs.asm:1823
+ push word [0040eh] ; ff 36 0e 04 ; 0xff8c4 orgs.asm:1824
+ pop DS ; 1f ; 0xff8c8 orgs.asm:1825
+ call far [word 00022h] ; ff 1e 22 00 ; 0xff8c9 orgs.asm:1826
+ cli ; fa ; 0xff8cd orgs.asm:1828
+ call 0e030h ; e8 5f e7 ; 0xff8ce orgs.asm:1829
+ add sp, strict byte 00008h ; 83 c4 08 ; 0xff8d1 orgs.asm:1830
+ pop DS ; 1f ; 0xff8d4 orgs.asm:1831
+ pop ES ; 07 ; 0xff8d5 orgs.asm:1832
+ pop di ; 5f ; 0xff8d6 orgs.asm:116
+ pop si ; 5e ; 0xff8d7 orgs.asm:117
+ pop bp ; 5d ; 0xff8d8 orgs.asm:118
+ pop bx ; 5b ; 0xff8d9 orgs.asm:119
+ pop bx ; 5b ; 0xff8da orgs.asm:120
+ pop dx ; 5a ; 0xff8db orgs.asm:121
+ pop cx ; 59 ; 0xff8dc orgs.asm:122
+ pop ax ; 58 ; 0xff8dd orgs.asm:123
+ iret ; cf ; 0xff8de orgs.asm:1834
+ ; disGetNextSymbol 0xff8df LB 0x721 -> off=0x0 cb=0000000000000012 uValue=00000000000f18df 'int76_handler'
+int76_handler: ; 0xff8df LB 0x12
+ push ax ; 50 ; 0xff8df orgs.asm:1841
+ push DS ; 1e ; 0xff8e0 orgs.asm:1842
+ mov ax, strict word 00040h ; b8 40 00 ; 0xff8e1 orgs.asm:1843
+ mov ds, ax ; 8e d8 ; 0xff8e4 orgs.asm:1844
+ mov byte [0008eh], 0ffh ; c6 06 8e 00 ff ; 0xff8e6 orgs.asm:1845
+ call 0e030h ; e8 42 e7 ; 0xff8eb orgs.asm:1846
+ pop DS ; 1f ; 0xff8ee orgs.asm:1847
+ pop ax ; 58 ; 0xff8ef orgs.asm:1848
+ iret ; cf ; 0xff8f0 orgs.asm:1849
+ ; disGetNextSymbol 0xff8f1 LB 0x70f -> off=0x0 cb=000000000000002d uValue=00000000000f18f1 'int70_handler'
+int70_handler: ; 0xff8f1 LB 0x2d
+ push ES ; 06 ; 0xff8f1 orgs.asm:1858
+ push DS ; 1e ; 0xff8f2 orgs.asm:1859
+ push ax ; 50 ; 0xff8f3 orgs.asm:99
+ push cx ; 51 ; 0xff8f4 orgs.asm:100
+ push dx ; 52 ; 0xff8f5 orgs.asm:101
+ push bx ; 53 ; 0xff8f6 orgs.asm:102
+ push sp ; 54 ; 0xff8f7 orgs.asm:103
+ push bp ; 55 ; 0xff8f8 orgs.asm:104
+ push si ; 56 ; 0xff8f9 orgs.asm:105
+ push di ; 57 ; 0xff8fa orgs.asm:106
+ push CS ; 0e ; 0xff8fb orgs.asm:104
+ pop DS ; 1f ; 0xff8fc orgs.asm:105
+ cld ; fc ; 0xff8fd orgs.asm:106
+ call 06bbfh ; e8 be 72 ; 0xff8fe orgs.asm:1862
+ pop di ; 5f ; 0xff901 orgs.asm:116
+ pop si ; 5e ; 0xff902 orgs.asm:117
+ pop bp ; 5d ; 0xff903 orgs.asm:118
+ pop bx ; 5b ; 0xff904 orgs.asm:119
+ pop bx ; 5b ; 0xff905 orgs.asm:120
+ pop dx ; 5a ; 0xff906 orgs.asm:121
+ pop cx ; 59 ; 0xff907 orgs.asm:122
+ pop ax ; 58 ; 0xff908 orgs.asm:123
+ pop DS ; 1f ; 0xff909 orgs.asm:1864
+ pop ES ; 07 ; 0xff90a orgs.asm:1865
+ iret ; cf ; 0xff90b orgs.asm:1866
+ jnbe short 0f913h ; 77 05 ; 0xff90c orgs.asm:1876
+ cmp ax, 000b0h ; 3d b0 00 ; 0xff90e orgs.asm:1877
+ jc short 0f91bh ; 72 08 ; 0xff911 orgs.asm:1878
+ db 033h, 0d2h
+ ; xor dx, dx ; 33 d2 ; 0xff913 orgs.asm:1881
+ db 033h, 0c0h
+ ; xor ax, ax ; 33 c0 ; 0xff915 orgs.asm:1882
+ inc byte [word 00070h] ; fe 06 70 00 ; 0xff917 orgs.asm:1884
+ jmp near 0fec1h ; e9 a3 05 ; 0xff91b orgs.asm:1886
+ ; disGetNextSymbol 0xff91e LB 0x6e2 -> off=0x0 cb=0000000000000150 uValue=00000000000f191e 'biosorg_check_before_or_at_0FA6Ch'
+biosorg_check_before_or_at_0FA6Ch: ; 0xff91e LB 0x150
+ times 0x14e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffa6e LB 0x592 -> off=0x0 cb=0000000000000400 uValue=00000000000f1a6e 'font8x8'
+font8x8: ; 0xffa6e LB 0x400
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
+ db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh, 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
+ db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h, 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch
+ db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch, 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h
+ db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh, 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h
+ db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh, 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h
+ db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h, 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h
+ db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h, 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h
+ db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h, 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h
+ db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h
+ db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h, 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h
+ db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h, 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh
+ db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h
+ db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h, 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h
+ db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h, 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h
+ db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h, 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h
+ db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h, 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h
+ db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h, 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h
+ db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h, 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h
+ db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h, 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h
+ db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h, 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h, 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h, 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h
+ db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h, 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h
+ db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h, 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h
+ db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h, 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h
+ db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h, 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h
+ db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h, 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h
+ db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h
+ db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h, 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h
+ db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h, 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h
+ db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h, 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h
+ db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h, 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h
+ db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h, 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h
+ db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h, 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h
+ db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h, 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h, 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h
+ db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h, 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h
+ db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h, 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h
+ db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h, 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h
+ db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h, 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h
+ db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h, 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h
+ db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h, 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h
+ db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h
+ db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h, 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h
+ db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h, 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h
+ db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh
+ db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h
+ db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h, 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h
+ db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h, 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h
+ db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h, 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h
+ db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h
+ db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h, 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h
+ db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h, 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h
+ db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h, 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh
+ db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h, 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h
+ db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h, 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h
+ db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h, 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h, 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h
+ db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h, 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
+ db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
+ ; disGetNextSymbol 0xffe6e LB 0x192 -> off=0x0 cb=000000000000001b uValue=00000000000f1e6e 'biosorg_check_at_0FE6Eh'
+biosorg_check_at_0FE6Eh: ; 0xffe6e LB 0x1b
+ push ES ; 06 ; 0xffe6e orgs.asm:1920
+ push DS ; 1e ; 0xffe6f orgs.asm:1921
+ push ax ; 50 ; 0xffe70 orgs.asm:99
+ push cx ; 51 ; 0xffe71 orgs.asm:100
+ push dx ; 52 ; 0xffe72 orgs.asm:101
+ push bx ; 53 ; 0xffe73 orgs.asm:102
+ push sp ; 54 ; 0xffe74 orgs.asm:103
+ push bp ; 55 ; 0xffe75 orgs.asm:104
+ push si ; 56 ; 0xffe76 orgs.asm:105
+ push di ; 57 ; 0xffe77 orgs.asm:106
+ push CS ; 0e ; 0xffe78 orgs.asm:104
+ pop DS ; 1f ; 0xffe79 orgs.asm:105
+ cld ; fc ; 0xffe7a orgs.asm:106
+ call 06c67h ; e8 e9 6d ; 0xffe7b orgs.asm:1925
+ pop di ; 5f ; 0xffe7e orgs.asm:116
+ pop si ; 5e ; 0xffe7f orgs.asm:117
+ pop bp ; 5d ; 0xffe80 orgs.asm:118
+ pop bx ; 5b ; 0xffe81 orgs.asm:119
+ pop bx ; 5b ; 0xffe82 orgs.asm:120
+ pop dx ; 5a ; 0xffe83 orgs.asm:121
+ pop cx ; 59 ; 0xffe84 orgs.asm:122
+ pop ax ; 58 ; 0xffe85 orgs.asm:123
+ pop DS ; 1f ; 0xffe86 orgs.asm:1927
+ pop ES ; 07 ; 0xffe87 orgs.asm:1928
+ iret ; cf ; 0xffe88 orgs.asm:1929
+ ; disGetNextSymbol 0xffe89 LB 0x177 -> off=0x0 cb=000000000000001c uValue=00000000000f1e89 'biosorg_check_before_or_at_0FEA3h'
+biosorg_check_before_or_at_0FEA3h: ; 0xffe89 LB 0x1c
+ times 0x1a db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffea5 LB 0x15b -> off=0x0 cb=0000000000000042 uValue=00000000000f1ea5 'int08_handler'
+int08_handler: ; 0xffea5 LB 0x42
+ sti ; fb ; 0xffea5 orgs.asm:1942
+ push ax ; 50 ; 0xffea6 orgs.asm:1943
+ push DS ; 1e ; 0xffea7 orgs.asm:1945
+ push dx ; 52 ; 0xffea8 orgs.asm:1946
+ mov ax, strict word 00040h ; b8 40 00 ; 0xffea9 orgs.asm:1947
+ mov ds, ax ; 8e d8 ; 0xffeac orgs.asm:1948
+ mov ax, word [0006ch] ; a1 6c 00 ; 0xffeae orgs.asm:1954
+ mov dx, word [word 0006eh] ; 8b 16 6e 00 ; 0xffeb1 orgs.asm:1955
+ inc ax ; 40 ; 0xffeb5 orgs.asm:1956
+ jne short 0feb9h ; 75 01 ; 0xffeb6 orgs.asm:1957
+ inc dx ; 42 ; 0xffeb8 orgs.asm:1958
+ cmp dx, strict byte 00018h ; 83 fa 18 ; 0xffeb9 orgs.asm:1967
+ jc short 0fec1h ; 72 03 ; 0xffebc orgs.asm:1968
+ jmp near 0f90ch ; e9 4b fa ; 0xffebe orgs.asm:1969
+ mov word [0006ch], ax ; a3 6c 00 ; 0xffec1 orgs.asm:1981
+ mov word [word 0006eh], dx ; 89 16 6e 00 ; 0xffec4 orgs.asm:1982
+ mov AL, byte [00040h] ; a0 40 00 ; 0xffec8 orgs.asm:1986
+ db 00ah, 0c0h
+ ; or al, al ; 0a c0 ; 0xffecb orgs.asm:1987
+ je short 0feddh ; 74 0e ; 0xffecd orgs.asm:1988
+ db 0feh, 0c8h
+ ; dec al ; fe c8 ; 0xffecf orgs.asm:1989
+ mov byte [00040h], AL ; a2 40 00 ; 0xffed1 orgs.asm:1990
+ jne short 0feddh ; 75 07 ; 0xffed4 orgs.asm:1991
+ mov dx, 003f2h ; ba f2 03 ; 0xffed6 orgs.asm:1993
+ in AL, DX ; ec ; 0xffed9 orgs.asm:1994
+ and AL, strict byte 0cfh ; 24 cf ; 0xffeda orgs.asm:1995
+ out DX, AL ; ee ; 0xffedc orgs.asm:1996
+ int 01ch ; cd 1c ; 0xffedd orgs.asm:1999
+ cli ; fa ; 0xffedf orgs.asm:2001
+ call 0e034h ; e8 51 e1 ; 0xffee0 orgs.asm:2002
+ pop dx ; 5a ; 0xffee3 orgs.asm:2003
+ pop DS ; 1f ; 0xffee4 orgs.asm:2004
+ pop ax ; 58 ; 0xffee5 orgs.asm:2009
+ iret ; cf ; 0xffee6 orgs.asm:2011
+ ; disGetNextSymbol 0xffee7 LB 0x119 -> off=0x0 cb=000000000000000c uValue=00000000000f1ee7 'biosorg_check_before_or_at_0FEF1h'
+biosorg_check_before_or_at_0FEF1h: ; 0xffee7 LB 0xc
+ times 0xa db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffef3 LB 0x10d -> off=0x0 cb=000000000000000d uValue=00000000000f1ef3 'biosorg_check_at_0FEF3h'
+biosorg_check_at_0FEF3h: ; 0xffef3 LB 0xd
+ times 0xb db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfff00 LB 0x100 -> off=0x0 cb=0000000000000019 uValue=00000000000f1f00 'biosorg_check_at_0FF00h'
+biosorg_check_at_0FF00h: ; 0xfff00 LB 0x19
+ dec di ; 4f ; 0xfff00
+ jc short 0ff64h ; 72 61 ; 0xfff01
+ arpl [si+065h], bp ; 63 6c 65 ; 0xfff03
+ and byte [bp+04dh], dl ; 20 56 4d ; 0xfff06
+ and byte [bp+069h], dl ; 20 56 69 ; 0xfff09
+ jc short 0ff82h ; 72 74 ; 0xfff0c
+ jne short 0ff71h ; 75 61 ; 0xfff0e
+ insb ; 6c ; 0xfff10
+ inc dx ; 42 ; 0xfff11
+ outsw ; 6f ; 0xfff12
+ js short 0ff35h ; 78 20 ; 0xfff13
+ inc dx ; 42 ; 0xfff15
+ dec cx ; 49 ; 0xfff16
+ dec di ; 4f ; 0xfff17
+ push bx ; 53 ; 0xfff18
+ ; disGetNextSymbol 0xfff19 LB 0xe7 -> off=0x0 cb=000000000000003a uValue=00000000000f1f19 'biosorg_check_before_or_at_0FF51h'
+biosorg_check_before_or_at_0FF51h: ; 0xfff19 LB 0x3a
+ times 0x38 db 0
+ db 'XM'
+ ; disGetNextSymbol 0xfff53 LB 0xad -> off=0x0 cb=0000000000000001 uValue=00000000000f1f53 'dummy_iret'
+dummy_iret: ; 0xfff53 LB 0x1
+ iret ; cf ; 0xfff53 orgs.asm:2036
+ ; disGetNextSymbol 0xfff54 LB 0xac -> off=0x0 cb=000000000000002c uValue=00000000000f1f54 'biosorg_check_at_0FF54h'
+biosorg_check_at_0FF54h: ; 0xfff54 LB 0x2c
+ iret ; cf ; 0xfff54 orgs.asm:2045
+ mov ax, ax ; 89 c0 ; 0xfff55
+ mov ax, ax ; 89 c0 ; 0xfff57
+ mov ax, ax ; 89 c0 ; 0xfff59
+ mov ax, ax ; 89 c0 ; 0xfff5b
+ mov ax, ax ; 89 c0 ; 0xfff5d
+ cld ; fc ; 0xfff5f
+ pop di ; 5f ; 0xfff60
+ push bx ; 53 ; 0xfff61
+ dec bp ; 4d ; 0xfff62
+ pop di ; 5f ; 0xfff63
+ jnl short 0ff85h ; 7d 1f ; 0xfff64
+ add al, byte [di] ; 02 05 ; 0xfff66
+ inc word [bx+si] ; ff 00 ; 0xfff68
+ add byte [bx+si], al ; 00 00 ; 0xfff6a
+ add byte [bx+si], al ; 00 00 ; 0xfff6c
+ add byte [bx+si], al ; 00 00 ; 0xfff6e
+ pop di ; 5f ; 0xfff70
+ inc sp ; 44 ; 0xfff71
+ dec bp ; 4d ; 0xfff72
+ dec cx ; 49 ; 0xfff73
+ pop di ; 5f ; 0xfff74
+ and ax, strict word 00000h ; 25 00 00 ; 0xfff75
+ add byte [bx+si], dl ; 00 10 ; 0xfff78
+ push CS ; 0e ; 0xfff7a
+ add byte [bx+si], al ; 00 00 ; 0xfff7b
+ add byte [di], ah ; 00 25 ; 0xfff7d
+ times 0x1 db 0
+ ; disGetNextSymbol 0xfff80 LB 0x80 -> off=0x0 cb=0000000000000070 uValue=00000000000f1f80 'biosorg_check_before_or_at_0FFEEh'
+biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70
+ times 0x6e db 0
+ db 'XM'
+ ; disGetNextSymbol 0xffff0 LB 0x10 -> off=0x0 cb=0000000000000010 uValue=00000000000f1ff0 'cpu_reset'
+cpu_reset: ; 0xffff0 LB 0x10
+ jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2055
+ ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000'
+ db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0d1h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
new file mode 100644
index 00000000..9c061b45
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
@@ -0,0 +1 @@
+2a6d3641685368af1d50214fda8e7ba0 *VBoxPcBios8086.rom
diff --git a/src/VBox/Devices/PC/BIOS/ahci.c b/src/VBox/Devices/PC/BIOS/ahci.c
new file mode 100644
index 00000000..f198e894
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ahci.c
@@ -0,0 +1,1047 @@
+/* $Id: ahci.c $ */
+/** @file
+ * AHCI host adapter driver to boot from SATA disks.
+ */
+
+/*
+ * Copyright (C) 2011-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "ebda.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "vds.h"
+
+#if DEBUG_AHCI
+# define DBG_AHCI(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_AHCI(...)
+#endif
+
+/* Number of S/G table entries in EDDS. */
+#define NUM_EDDS_SG 16
+
+
+/**
+ * AHCI PRDT structure.
+ */
+typedef struct
+{
+ uint32_t phys_addr;
+ uint32_t something;
+ uint32_t reserved;
+ uint32_t len;
+} ahci_prdt;
+
+/**
+ * SATA D2H FIS (Device to Host Frame Information Structure).
+ */
+typedef struct {
+ uint8_t fis_type; /* 34h */
+ uint8_t intr; /* Bit 6 indicates interrupt status. */
+ uint8_t status; /* Status register. */
+ uint8_t error; /* Error register. */
+ uint8_t sec_no; /* Sector number register. */
+ uint8_t cyl_lo; /* Cylinder low register. */
+ uint8_t cyl_hi; /* Cylinder high register. */
+ uint8_t dev_hd; /* Device/head register. */
+ uint8_t sec_no_exp; /* Expanded sector number register. */
+ uint8_t cyl_lo_exp; /* Expanded cylinder low register. */
+ uint8_t cyl_hi_exp; /* Expanded cylinder high register. */
+ uint8_t resvd0;
+ uint8_t sec_cn; /* Sector count register. */
+ uint8_t sec_cn_exp; /* Expanded sector count register. */
+ uint16_t resvd1;
+ uint32_t resvd2;
+} fis_d2h;
+
+ct_assert(sizeof(fis_d2h) == 20);
+
+/**
+ * AHCI controller data.
+ */
+typedef struct
+{
+ /** The AHCI command list as defined by chapter 4.2.2 of the Intel AHCI spec.
+ * Because the BIOS doesn't support NCQ only the first command header is defined
+ * to save memory. - Must be aligned on a 1K boundary.
+ */
+ uint32_t aCmdHdr[0x8];
+ /** Align the next structure on a 128 byte boundary. */
+ uint8_t abAlignment1[0x60];
+ /** The command table of one request as defined by chapter 4.2.3 of the Intel AHCI spec.
+ * Must be aligned on 128 byte boundary.
+ */
+ uint8_t abCmd[0x40];
+ /** The ATAPI command region.
+ * Located 40h bytes after the beginning of the CFIS (Command FIS).
+ */
+ uint8_t abAcmd[0x20];
+ /** Align the PRDT structure on a 128 byte boundary. */
+ uint8_t abAlignment2[0x20];
+ /** Physical Region Descriptor Table (PRDT) array. In other
+ * words, a scatter/gather descriptor list.
+ */
+ ahci_prdt aPrdt[16];
+ /** Memory for the received command FIS area as specified by chapter 4.2.1
+ * of the Intel AHCI spec. This area is normally 256 bytes big but to save memory
+ * only the first 96 bytes are used because it is assumed that the controller
+ * never writes to the UFIS or reserved area. - Must be aligned on a 256byte boundary.
+ */
+ uint8_t abFisRecv[0x60];
+ /** Base I/O port for the index/data register pair. */
+ uint16_t iobase;
+ /** Current port which uses the memory to communicate with the controller. */
+ uint8_t cur_port;
+ /** Current PRD index (for pre/post skip). */
+ uint8_t cur_prd;
+ /** Physical address of the sink buffer (for pre/post skip). */
+ uint32_t sink_buf_phys;
+ /** Saved high bits of EAX. */
+ uint16_t saved_eax_hi;
+ /** VDS EDDS DMA buffer descriptor structure. */
+ vds_edds edds;
+ vds_sg edds_more_sg[NUM_EDDS_SG - 1];
+} ahci_t;
+
+/* The AHCI specific data must fit into 1KB (statically allocated). */
+ct_assert(sizeof(ahci_t) <= 1024);
+
+/** PCI configuration fields. */
+#define PCI_CONFIG_CAP 0x34
+
+#define PCI_CAP_ID_SATACR 0x12
+#define VBOX_AHCI_NO_DEVICE 0xffff
+
+#define RT_BIT_32(bit) ((uint32_t)(1L << (bit)))
+
+/** Global register set. */
+#define AHCI_HBA_SIZE 0x100
+
+/// @todo what are the casts good for?
+#define AHCI_REG_CAP ((uint32_t)0x00)
+#define AHCI_REG_GHC ((uint32_t)0x04)
+# define AHCI_GHC_AE RT_BIT_32(31)
+# define AHCI_GHC_IR RT_BIT_32(1)
+# define AHCI_GHC_HR RT_BIT_32(0)
+#define AHCI_REG_IS ((uint32_t)0x08)
+#define AHCI_REG_PI ((uint32_t)0x0c)
+#define AHCI_REG_VS ((uint32_t)0x10)
+
+/** Per port register set. */
+#define AHCI_PORT_SIZE 0x80
+
+#define AHCI_REG_PORT_CLB 0x00
+#define AHCI_REG_PORT_CLBU 0x04
+#define AHCI_REG_PORT_FB 0x08
+#define AHCI_REG_PORT_FBU 0x0c
+#define AHCI_REG_PORT_IS 0x10
+# define AHCI_REG_PORT_IS_DHRS RT_BIT_32(0)
+# define AHCI_REG_PORT_IS_TFES RT_BIT_32(30)
+#define AHCI_REG_PORT_IE 0x14
+#define AHCI_REG_PORT_CMD 0x18
+# define AHCI_REG_PORT_CMD_ST RT_BIT_32(0)
+# define AHCI_REG_PORT_CMD_FRE RT_BIT_32(4)
+# define AHCI_REG_PORT_CMD_FR RT_BIT_32(14)
+# define AHCI_REG_PORT_CMD_CR RT_BIT_32(15)
+#define AHCI_REG_PORT_TFD 0x20
+#define AHCI_REG_PORT_SIG 0x24
+#define AHCI_REG_PORT_SSTS 0x28
+#define AHCI_REG_PORT_SCTL 0x2c
+#define AHCI_REG_PORT_SERR 0x30
+#define AHCI_REG_PORT_SACT 0x34
+#define AHCI_REG_PORT_CI 0x38
+
+/** Returns the absolute register offset from a given port and port register. */
+#define AHCI_PORT_REG(port, reg) (AHCI_HBA_SIZE + (port) * AHCI_PORT_SIZE + (reg))
+
+#define AHCI_REG_IDX 0
+#define AHCI_REG_DATA 4
+
+/** Writes the given value to a AHCI register. */
+#define AHCI_WRITE_REG(iobase, reg, val) \
+ outpd((iobase) + AHCI_REG_IDX, reg); \
+ outpd((iobase) + AHCI_REG_DATA, val)
+
+/** Reads from a AHCI register. */
+#define AHCI_READ_REG(iobase, reg, val) \
+ outpd((iobase) + AHCI_REG_IDX, reg); \
+ (val) = inpd((iobase) + AHCI_REG_DATA)
+
+/** Writes to the given port register. */
+#define VBOXAHCI_PORT_WRITE_REG(iobase, port, reg, val) \
+ AHCI_WRITE_REG((iobase), AHCI_PORT_REG((port), (reg)), val)
+
+/** Reads from the given port register. */
+#define VBOXAHCI_PORT_READ_REG(iobase, port, reg, val) \
+ AHCI_READ_REG((iobase), AHCI_PORT_REG((port), (reg)), val)
+
+#define ATA_CMD_IDENTIFY_DEVICE 0xEC
+#define ATA_CMD_IDENTIFY_PACKET 0xA1
+#define ATA_CMD_PACKET 0xA0
+#define AHCI_CMD_READ_DMA_EXT 0x25
+#define AHCI_CMD_WRITE_DMA_EXT 0x35
+
+
+/* Warning: Destroys high bits of EAX. */
+uint32_t inpd(uint16_t port);
+#pragma aux inpd = \
+ ".386" \
+ "in eax, dx" \
+ "mov dx, ax" \
+ "shr eax, 16" \
+ "xchg ax, dx" \
+ parm [dx] value [dx ax] modify nomemory;
+
+/* Warning: Destroys high bits of EAX. */
+void outpd(uint16_t port, uint32_t val);
+#pragma aux outpd = \
+ ".386" \
+ "xchg ax, cx" \
+ "shl eax, 16" \
+ "mov ax, cx" \
+ "out dx, eax" \
+ parm [dx] [cx ax] modify nomemory;
+
+
+/* Machinery to save/restore high bits of EAX. 32-bit port I/O needs to use
+ * EAX, but saving/restoring EAX around each port access would be inefficient.
+ * Instead, each externally callable routine must save the high bits before
+ * modifying them and restore the high bits before exiting.
+ */
+
+/* Note: Reading high EAX bits destroys them - *must* be restored later. */
+uint16_t eax_hi_rd(void);
+#pragma aux eax_hi_rd = \
+ ".386" \
+ "shr eax, 16" \
+ value [ax] modify nomemory;
+
+void eax_hi_wr(uint16_t);
+#pragma aux eax_hi_wr = \
+ ".386" \
+ "shl eax, 16" \
+ parm [ax] modify nomemory;
+
+void inline high_bits_save(ahci_t __far *ahci)
+{
+ ahci->saved_eax_hi = eax_hi_rd();
+}
+
+void inline high_bits_restore(ahci_t __far *ahci)
+{
+ eax_hi_wr(ahci->saved_eax_hi);
+}
+
+/**
+ * Sets a given set of bits in a register.
+ */
+static void inline ahci_ctrl_set_bits(uint16_t iobase, uint16_t reg, uint32_t mask)
+{
+ outpd(iobase + AHCI_REG_IDX, reg);
+ outpd(iobase + AHCI_REG_DATA, inpd(iobase + AHCI_REG_DATA) | mask);
+}
+
+/**
+ * Clears a given set of bits in a register.
+ */
+static void inline ahci_ctrl_clear_bits(uint16_t iobase, uint16_t reg, uint32_t mask)
+{
+ outpd(iobase + AHCI_REG_IDX, reg);
+ outpd(iobase + AHCI_REG_DATA, inpd(iobase + AHCI_REG_DATA) & ~mask);
+}
+
+/**
+ * Returns whether at least one of the bits in the given mask is set
+ * for a register.
+ */
+static uint8_t inline ahci_ctrl_is_bit_set(uint16_t iobase, uint16_t reg, uint32_t mask)
+{
+ outpd(iobase + AHCI_REG_IDX, reg);
+ return (inpd(iobase + AHCI_REG_DATA) & mask) != 0;
+}
+
+/**
+ * Extracts a range of bits from a register and shifts them
+ * to the right.
+ */
+static uint16_t ahci_ctrl_extract_bits(uint32_t val, uint32_t mask, uint8_t shift)
+{
+ return (val & mask) >> shift;
+}
+
+/**
+ * Converts a segment:offset pair into a 32bit physical address.
+ */
+static uint32_t ahci_addr_to_phys(void __far *ptr)
+{
+ return ((uint32_t)FP_SEG(ptr) << 4) + FP_OFF(ptr);
+}
+
+/**
+ * Issues a command to the SATA controller and waits for completion.
+ */
+static void ahci_port_cmd_sync(ahci_t __far *ahci, uint8_t val)
+{
+ uint16_t io_base;
+ uint8_t port;
+
+ port = ahci->cur_port;
+ io_base = ahci->iobase;
+
+ if (port != 0xff)
+ {
+ /* Prepare the command header. */
+ ahci->aCmdHdr[0] = ((uint32_t)ahci->cur_prd << 16) | RT_BIT_32(7) | val;
+ ahci->aCmdHdr[1] = 0;
+ ahci->aCmdHdr[2] = ahci_addr_to_phys(&ahci->abCmd[0]);
+
+ /* Enable Command and FIS receive engine. */
+ ahci_ctrl_set_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST);
+
+ /* Queue command. */
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CI, 0x1);
+
+ /* Wait for a D2H FIS. */
+ DBG_AHCI("AHCI: Waiting for D2H FIS\n");
+ while (ahci_ctrl_is_bit_set(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_IS),
+ AHCI_REG_PORT_IS_DHRS | AHCI_REG_PORT_IS_TFES) == 0)
+ {
+ // This is where we'd need some kind of a yield functionality...
+ }
+
+ ahci_ctrl_set_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_IS),
+ AHCI_REG_PORT_IS_DHRS); /* Acknowledge received D2H FIS. */
+
+ /* Disable command engine. */
+ ahci_ctrl_clear_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_ST);
+ /* Caller must examine status. */
+ }
+ else
+ DBG_AHCI("AHCI: Invalid port given\n");
+}
+
+/**
+ * Issue command to device.
+ */
+static uint16_t ahci_cmd_data(bio_dsk_t __far *bios_dsk, uint8_t cmd)
+{
+ ahci_t __far *ahci = bios_dsk->ahci_seg :> 0;
+ uint16_t n_sect = bios_dsk->drqp.nsect;
+ uint16_t sectsz = bios_dsk->drqp.sect_sz;
+ fis_d2h __far *d2h;
+
+ _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd));
+
+ /* Prepare the FIS. */
+ ahci->abCmd[0] = 0x27; /* FIS type H2D. */
+ ahci->abCmd[1] = 1 << 7; /* Command update. */
+ ahci->abCmd[2] = cmd;
+ ahci->abCmd[3] = 0;
+
+ ahci->abCmd[4] = bios_dsk->drqp.lba & 0xff;
+ ahci->abCmd[5] = (bios_dsk->drqp.lba >> 8) & 0xff;
+ ahci->abCmd[6] = (bios_dsk->drqp.lba >> 16) & 0xff;
+ ahci->abCmd[7] = RT_BIT_32(6); /* LBA access. */
+
+ ahci->abCmd[8] = (bios_dsk->drqp.lba >> 24) & 0xff;
+ ahci->abCmd[9] = (bios_dsk->drqp.lba >> 32) & 0xff;
+ ahci->abCmd[10] = (bios_dsk->drqp.lba >> 40) & 0xff;
+ ahci->abCmd[11] = 0;
+
+ ahci->abCmd[12] = (uint8_t)(n_sect & 0xff);
+ ahci->abCmd[13] = (uint8_t)((n_sect >> 8) & 0xff);
+
+ /* Lock memory needed for DMA. */
+ ahci->edds.num_avail = NUM_EDDS_SG;
+ DBG_AHCI("AHCI: S/G list for %lu bytes (skip %u)\n",
+ (uint32_t)n_sect * sectsz, bios_dsk->drqp.skip_a);
+ vds_build_sg_list(&ahci->edds, bios_dsk->drqp.buffer, (uint32_t)n_sect * sectsz);
+
+ /* Set up the PRDT. */
+ ahci->aPrdt[ahci->cur_prd].len = ahci->edds.u.sg[0].size - 1;
+ ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->edds.u.sg[0].phys_addr;
+ ++ahci->cur_prd;
+
+ if (bios_dsk->drqp.skip_a) {
+ ahci->aPrdt[ahci->cur_prd].len = bios_dsk->drqp.skip_a - 1;
+ ahci->aPrdt[ahci->cur_prd].phys_addr = ahci->sink_buf_phys;
+ ++ahci->cur_prd;
+ }
+
+#if DEBUG_AHCI
+ {
+ uint16_t prdt_idx;
+
+ for (prdt_idx = 0; prdt_idx < ahci->cur_prd; ++prdt_idx) {
+ DBG_AHCI("S/G entry %u: %5lu bytes @ %08lX\n", prdt_idx,
+ ahci->aPrdt[prdt_idx].len + 1, ahci->aPrdt[prdt_idx].phys_addr);
+ }
+ }
+#endif
+
+ /* Build variable part of first command DWORD (reuses 'cmd'). */
+ if (cmd == AHCI_CMD_WRITE_DMA_EXT)
+ cmd = RT_BIT_32(6); /* Indicate a write to device. */
+ else if (cmd == ATA_CMD_PACKET) {
+ cmd |= RT_BIT_32(5); /* Indicate ATAPI command. */
+ ahci->abCmd[3] |= 1; /* DMA transfers. */
+ } else
+ cmd = 0;
+
+ cmd |= 5; /* Five DWORDs. */
+
+ ahci_port_cmd_sync(ahci, cmd);
+
+ /* Examine operation status. */
+ d2h = (void __far *)&ahci->abFisRecv[0x40];
+ DBG_AHCI("AHCI: ERR=%02x, STAT=%02x, SCNT=%02x\n", d2h->error, d2h->status, d2h->sec_cn);
+
+ /* Unlock the buffer again. */
+ vds_free_sg_list(&ahci->edds);
+ return d2h->error ? 4 : 0;
+}
+
+/**
+ * Deinits the curent active port.
+ */
+static void ahci_port_deinit_current(ahci_t __far *ahci)
+{
+ uint16_t io_base;
+ uint8_t port;
+
+ io_base = ahci->iobase;
+ port = ahci->cur_port;
+
+ if (port != 0xff)
+ {
+ /* Put the port into an idle state. */
+ ahci_ctrl_clear_bits(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST);
+
+ while (ahci_ctrl_is_bit_set(io_base, AHCI_PORT_REG(port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST | AHCI_REG_PORT_CMD_FR | AHCI_REG_PORT_CMD_CR) == 1)
+ {
+ DBG_AHCI("AHCI: Waiting for the port to idle\n");
+ }
+
+ /*
+ * Port idles, set up memory for commands and received FIS and program the
+ * address registers.
+ */
+ /// @todo merge memsets?
+ _fmemset(&ahci->aCmdHdr[0], 0, sizeof(ahci->aCmdHdr));
+ _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd));
+ _fmemset(&ahci->abFisRecv[0], 0, sizeof(ahci->abFisRecv));
+
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_FB, 0);
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_FBU, 0);
+
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CLB, 0);
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_CLBU, 0);
+
+ /* Disable all interrupts. */
+ VBOXAHCI_PORT_WRITE_REG(io_base, port, AHCI_REG_PORT_IE, 0);
+
+ ahci->cur_port = 0xff;
+ }
+}
+
+/**
+ * Brings a port into a minimal state to make device detection possible
+ * or to queue requests.
+ */
+static void ahci_port_init(ahci_t __far *ahci, uint8_t u8Port)
+{
+ /* Deinit any other port first. */
+ ahci_port_deinit_current(ahci);
+
+ /* Put the port into an idle state. */
+ ahci_ctrl_clear_bits(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST);
+
+ while (ahci_ctrl_is_bit_set(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE | AHCI_REG_PORT_CMD_ST | AHCI_REG_PORT_CMD_FR | AHCI_REG_PORT_CMD_CR) == 1)
+ {
+ DBG_AHCI("AHCI: Waiting for the port to idle\n");
+ }
+
+ /*
+ * Port idles, set up memory for commands and received FIS and program the
+ * address registers.
+ */
+ /// @todo just one memset?
+ _fmemset(&ahci->aCmdHdr[0], 0, sizeof(ahci->aCmdHdr));
+ _fmemset(&ahci->abCmd[0], 0, sizeof(ahci->abCmd));
+ _fmemset(&ahci->abFisRecv[0], 0, sizeof(ahci->abFisRecv));
+
+ DBG_AHCI("AHCI: FIS receive area %lx from %x:%x\n",
+ ahci_addr_to_phys(&ahci->abFisRecv), FP_SEG(ahci->abFisRecv), FP_OFF(ahci->abFisRecv));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_FB, ahci_addr_to_phys(&ahci->abFisRecv));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_FBU, 0);
+
+ DBG_AHCI("AHCI: CMD list area %lx\n", ahci_addr_to_phys(&ahci->aCmdHdr));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_CLB, ahci_addr_to_phys(&ahci->aCmdHdr));
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_CLBU, 0);
+
+ /* Disable all interrupts. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_IE, 0);
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_IS, 0xffffffff);
+ /* Clear all errors. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SERR, 0xffffffff);
+
+ ahci->cur_port = u8Port;
+ ahci->cur_prd = 0;
+}
+
+/**
+ * Read sectors from an attached AHCI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ahci_read_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t device_id;
+ uint16_t rc;
+
+ device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_AHCI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ DBG_AHCI("%s: %u sectors @ LBA 0x%llx, device %d, port %d\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.lba,
+ device_id, bios_dsk->ahcidev[device_id].port);
+
+ high_bits_save(bios_dsk->ahci_seg :> 0);
+ ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port);
+ rc = ahci_cmd_data(bios_dsk, AHCI_CMD_READ_DMA_EXT);
+ DBG_AHCI("%s: transferred %lu bytes\n", __func__, ((ahci_t __far *)(bios_dsk->ahci_seg :> 0))->aCmdHdr[1]);
+ bios_dsk->drqp.trsfsectors = bios_dsk->drqp.nsect;
+#ifdef DMA_WORKAROUND
+ rep_movsw(bios_dsk->drqp.buffer, bios_dsk->drqp.buffer, bios_dsk->drqp.nsect * 512 / 2);
+#endif
+ high_bits_restore(bios_dsk->ahci_seg :> 0);
+ return rc;
+}
+
+/**
+ * Write sectors to an attached AHCI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ahci_write_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t device_id;
+ uint16_t rc;
+
+ device_id = VBOX_GET_AHCI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_AHCI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ DBG_AHCI("%s: %u sectors @ LBA 0x%llx, device %d, port %d\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.lba, device_id,
+ bios_dsk->ahcidev[device_id].port);
+
+ high_bits_save(bios_dsk->ahci_seg :> 0);
+ ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port);
+ rc = ahci_cmd_data(bios_dsk, AHCI_CMD_WRITE_DMA_EXT);
+ DBG_AHCI("%s: transferred %lu bytes\n", __func__, ((ahci_t __far *)(bios_dsk->ahci_seg :> 0))->aCmdHdr[1]);
+ bios_dsk->drqp.trsfsectors = bios_dsk->drqp.nsect;
+ high_bits_restore(bios_dsk->ahci_seg :> 0);
+ return rc;
+}
+
+/// @todo move
+#define ATA_DATA_NO 0x00
+#define ATA_DATA_IN 0x01
+#define ATA_DATA_OUT 0x02
+
+uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t skip_b, uint32_t length, uint8_t inout, char __far *buffer)
+{
+ bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ ahci_t __far *ahci;
+
+ /* Data out is currently not supported. */
+ if (inout == ATA_DATA_OUT) {
+ BX_INFO("%s: DATA_OUT not supported yet\n", __func__);
+ return 1;
+ }
+
+ /* The skip length must be even. */
+ if (skip_b & 1) {
+ DBG_AHCI("%s: skip must be even (%04x)\n", __func__, skip_b);
+ return 1;
+ }
+
+ /* Convert to AHCI specific device number. */
+ device_id = VBOX_GET_AHCI_DEVICE(device_id);
+
+ DBG_AHCI("%s: reading %lu bytes, skip %u/%u, device %d, port %d\n", __func__,
+ length, bios_dsk->drqp.skip_b, bios_dsk->drqp.skip_a,
+ device_id, bios_dsk->ahcidev[device_id].port);
+ DBG_AHCI("%s: reading %u %u-byte sectors\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.sect_sz);
+
+ bios_dsk->drqp.lba = length << 8; /// @todo xfer length limit
+ bios_dsk->drqp.buffer = buffer;
+ bios_dsk->drqp.nsect = length / bios_dsk->drqp.sect_sz;
+// bios_dsk->drqp.sect_sz = 2048;
+
+ ahci = bios_dsk->ahci_seg :> 0;
+ high_bits_save(ahci);
+
+ ahci_port_init(bios_dsk->ahci_seg :> 0, bios_dsk->ahcidev[device_id].port);
+
+ /* Copy the ATAPI command where the HBA can fetch it. */
+ _fmemcpy(ahci->abAcmd, cmdbuf, cmdlen);
+
+ /* Reset transferred counts. */
+ /// @todo clear in calling code?
+ bios_dsk->drqp.trsfsectors = 0;
+ bios_dsk->drqp.trsfbytes = 0;
+
+ /* Set up a PRD entry to throw away the beginning of the transfer. */
+ if (bios_dsk->drqp.skip_b) {
+ ahci->aPrdt[0].len = bios_dsk->drqp.skip_b - 1;
+ ahci->aPrdt[0].phys_addr = ahci->sink_buf_phys;
+ ahci->cur_prd++;
+ }
+
+ ahci_cmd_data(bios_dsk, ATA_CMD_PACKET);
+ DBG_AHCI("%s: transferred %lu bytes\n", __func__, ahci->aCmdHdr[1]);
+ bios_dsk->drqp.trsfbytes = ahci->aCmdHdr[1];
+#ifdef DMA_WORKAROUND
+ rep_movsw(bios_dsk->drqp.buffer, bios_dsk->drqp.buffer, bios_dsk->drqp.trsfbytes / 2);
+#endif
+ high_bits_restore(ahci);
+
+ return ahci->aCmdHdr[1] == 0 ? 4 : 0;
+}
+
+/* Wait for the specified number of BIOS timer ticks or data bytes. */
+void wait_ticks_device_init( unsigned wait_ticks, unsigned wait_bytes )
+{
+}
+
+void ahci_port_detect_device(ahci_t __far *ahci, uint8_t u8Port)
+{
+ uint32_t val;
+ bio_dsk_t __far *bios_dsk;
+ volatile uint32_t __far *ticks;
+ uint32_t end_tick;
+ int device_found = 0;
+
+ ahci_port_init(ahci, u8Port);
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ /* Reset connection. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SCTL, 0x01);
+ /*
+ * According to the spec we should wait at least 1msec until the reset
+ * is cleared but this is a virtual controller so we don't have to.
+ */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SCTL, 0);
+
+ /*
+ * We do however have to wait for the device to initialize (the port reset
+ * to complete). That can take up to 10ms according to the SATA spec (device
+ * must send COMINIT within 10ms of COMRESET). We should be generous with
+ * the wait because in the typical case there are no ports without a device
+ * attached.
+ */
+ ticks = MK_FP( 0x40, 0x6C );
+ end_tick = *ticks + 3; /* Wait up to five BIOS ticks, something in 150ms range. */
+
+ while( *ticks < end_tick )
+ {
+ /* If PxSSTS.DET is 3, everything went fine. */
+ VBOXAHCI_PORT_READ_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SSTS, val);
+ if (ahci_ctrl_extract_bits(val, 0xfL, 0) == 3) {
+ device_found = 1;
+ break;
+ }
+ }
+
+ /* Timed out, no device detected. */
+ if (!device_found) {
+ DBG_AHCI("AHCI: Timed out, no device detected on port %d\n", u8Port);
+ return;
+ }
+
+ if (ahci_ctrl_extract_bits(val, 0xfL, 0) == 0x3)
+ {
+ uint8_t abBuffer[0x0200];
+ uint8_t hdcount, devcount_ahci, hd_index;
+ uint8_t cdcount;
+ uint8_t removable;
+
+ /* Clear all errors after the reset. */
+ VBOXAHCI_PORT_WRITE_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SERR, 0xffffffff);
+
+ devcount_ahci = bios_dsk->ahci_devcnt;
+
+ DBG_AHCI("AHCI: Device detected on port %d\n", u8Port);
+
+ /// @todo Merge common HD/CDROM detection code
+ if (devcount_ahci < BX_MAX_AHCI_DEVICES)
+ {
+ /* Device detected, enable FIS receive. */
+ ahci_ctrl_set_bits(ahci->iobase, AHCI_PORT_REG(u8Port, AHCI_REG_PORT_CMD),
+ AHCI_REG_PORT_CMD_FRE);
+
+ /* Check signature to determine device type. */
+ VBOXAHCI_PORT_READ_REG(ahci->iobase, u8Port, AHCI_REG_PORT_SIG, val);
+ if (val == 0x101)
+ {
+ uint64_t sectors;
+ uint16_t cylinders, heads, spt;
+ chs_t lgeo;
+ uint8_t idxCmosChsBase;
+
+ DBG_AHCI("AHCI: Detected hard disk\n");
+
+ /* Identify device. */
+ bios_dsk->drqp.lba = 0;
+ bios_dsk->drqp.buffer = &abBuffer;
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 512;
+ ahci_cmd_data(bios_dsk, ATA_CMD_IDENTIFY_DEVICE);
+
+ /* Calculate index into the generic device table. */
+ hd_index = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+
+ removable = *(abBuffer+0) & 0x80 ? 1 : 0;
+ cylinders = *(uint16_t *)(abBuffer+(1*2)); // word 1
+ heads = *(uint16_t *)(abBuffer+(3*2)); // word 3
+ spt = *(uint16_t *)(abBuffer+(6*2)); // word 6
+ sectors = *(uint32_t *)(abBuffer+(60*2)); // word 60 and word 61
+
+ if (sectors == 0x0FFFFFFF) /* For disks bigger than ~128GB */
+ sectors = *(uint64_t *)(abBuffer+(100*2)); // words 100 to 103
+
+ DBG_AHCI("AHCI: 0x%llx sectors\n", sectors);
+
+ bios_dsk->ahcidev[devcount_ahci].port = u8Port;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_AHCI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_HD;
+ bios_dsk->devices[hd_index].removable = removable;
+ bios_dsk->devices[hd_index].lock = 0;
+ bios_dsk->devices[hd_index].blksize = 512;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_LBA;
+ bios_dsk->devices[hd_index].sectors = sectors;
+
+ bios_dsk->devices[hd_index].pchs.heads = heads;
+ bios_dsk->devices[hd_index].pchs.cylinders = cylinders;
+ bios_dsk->devices[hd_index].pchs.spt = spt;
+
+ /* Get logical CHS geometry. */
+ switch (devcount_ahci)
+ {
+ case 0:
+ idxCmosChsBase = 0x40;
+ break;
+ case 1:
+ idxCmosChsBase = 0x48;
+ break;
+ case 2:
+ idxCmosChsBase = 0x50;
+ break;
+ case 3:
+ idxCmosChsBase = 0x58;
+ break;
+ default:
+ idxCmosChsBase = 0;
+ }
+ if (idxCmosChsBase && inb_cmos(idxCmosChsBase+7))
+ {
+ lgeo.cylinders = inb_cmos(idxCmosChsBase + 0) + (inb_cmos(idxCmosChsBase + 1) << 8);
+ lgeo.heads = inb_cmos(idxCmosChsBase + 2);
+ lgeo.spt = inb_cmos(idxCmosChsBase + 7);
+ }
+ else
+ set_geom_lba(&lgeo, sectors); /* Default EDD-style translated LBA geometry. */
+
+ BX_INFO("AHCI %d-P#%d: PCHS=%u/%u/%u LCHS=%u/%u/%u 0x%llx sectors\n", devcount_ahci,
+ u8Port, cylinders, heads, spt, lgeo.cylinders, lgeo.heads, lgeo.spt,
+ sectors);
+
+ bios_dsk->devices[hd_index].lchs = lgeo;
+
+ /* Store the ID of the disk in the BIOS hdidmap. */
+ hdcount = bios_dsk->hdcount;
+ bios_dsk->hdidmap[hdcount] = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+ hdcount++;
+ bios_dsk->hdcount = hdcount;
+
+ /* Update hdcount in the BDA. */
+ hdcount = read_byte(0x40, 0x75);
+ hdcount++;
+ write_byte(0x40, 0x75, hdcount);
+ }
+ else if (val == 0xeb140101)
+ {
+ DBG_AHCI("AHCI: Detected ATAPI device\n");
+
+ /* Identify packet device. */
+ bios_dsk->drqp.lba = 0;
+ bios_dsk->drqp.buffer = &abBuffer;
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 512;
+ ahci_cmd_data(bios_dsk, ATA_CMD_IDENTIFY_PACKET);
+
+ /* Calculate index into the generic device table. */
+ hd_index = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+
+ removable = *(abBuffer+0) & 0x80 ? 1 : 0;
+
+ bios_dsk->ahcidev[devcount_ahci].port = u8Port;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_AHCI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_CDROM;
+ bios_dsk->devices[hd_index].removable = removable;
+ bios_dsk->devices[hd_index].blksize = 2048;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_NONE;
+
+ /* Store the ID of the device in the BIOS cdidmap. */
+ cdcount = bios_dsk->cdcount;
+ bios_dsk->cdidmap[cdcount] = devcount_ahci + BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES;
+ cdcount++;
+ bios_dsk->cdcount = cdcount;
+ }
+ else
+ DBG_AHCI("AHCI: Ignoring unknown device\n");
+
+ devcount_ahci++;
+ bios_dsk->ahci_devcnt = devcount_ahci;
+ }
+ else
+ DBG_AHCI("AHCI: Reached maximum device count, skipping\n");
+ }
+}
+
+/**
+ * Allocates 1K of conventional memory.
+ */
+static uint16_t ahci_mem_alloc(void)
+{
+ uint16_t base_mem_kb;
+ uint16_t ahci_seg;
+
+ base_mem_kb = read_word(0x00, 0x0413);
+
+ DBG_AHCI("AHCI: %dK of base mem\n", base_mem_kb);
+
+ if (base_mem_kb == 0)
+ return 0;
+
+ base_mem_kb--; /* Allocate one block. */
+ ahci_seg = (((uint32_t)base_mem_kb * 1024) >> 4); /* Calculate start segment. */
+
+ write_word(0x00, 0x0413, base_mem_kb);
+
+ return ahci_seg;
+}
+
+/**
+ * Initializes the AHCI HBA and detects attached devices.
+ */
+static int ahci_hba_init(uint16_t io_base)
+{
+ uint8_t i, cPorts;
+ uint32_t val;
+ uint16_t ebda_seg;
+ uint16_t ahci_seg;
+ bio_dsk_t __far *bios_dsk;
+ ahci_t __far *ahci;
+
+
+ ebda_seg = read_word(0x0040, 0x000E);
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ AHCI_READ_REG(io_base, AHCI_REG_VS, val);
+ DBG_AHCI("AHCI: Controller version: 0x%x (major) 0x%x (minor)\n",
+ ahci_ctrl_extract_bits(val, 0xffff0000, 16),
+ ahci_ctrl_extract_bits(val, 0x0000ffff, 0));
+
+ /* Allocate 1K of base memory. */
+ ahci_seg = ahci_mem_alloc();
+ if (ahci_seg == 0)
+ {
+ DBG_AHCI("AHCI: Could not allocate 1K of memory, can't boot from controller\n");
+ return 0;
+ }
+ DBG_AHCI("AHCI: ahci_seg=%04x, size=%04x, pointer at EBDA:%04x (EBDA size=%04x)\n",
+ ahci_seg, sizeof(ahci_t), (uint16_t)&EbdaData->bdisk.ahci_seg, sizeof(ebda_data_t));
+
+ bios_dsk->ahci_seg = ahci_seg;
+ bios_dsk->ahci_devcnt = 0;
+
+ ahci = ahci_seg :> 0;
+ ahci->cur_port = 0xff;
+ ahci->iobase = io_base;
+
+ /* Physical address of memory used for throwing away ATAPI data when reading 512-byte
+ * blocks from 2048-byte CD sectors.
+ */
+ ahci->sink_buf_phys = 0xCC000; /// @todo find some better place!
+
+ /* Reset the controller. */
+ ahci_ctrl_set_bits(io_base, AHCI_REG_GHC, AHCI_GHC_HR);
+ do
+ {
+ AHCI_READ_REG(io_base, AHCI_REG_GHC, val);
+ } while ((val & AHCI_GHC_HR) != 0);
+
+ AHCI_READ_REG(io_base, AHCI_REG_CAP, val);
+ cPorts = ahci_ctrl_extract_bits(val, 0x1f, 0) + 1; /* Extract number of ports.*/
+
+ DBG_AHCI("AHCI: HBA has %u ports\n", cPorts);
+
+ /* Go through the ports. */
+ i = 0;
+ while (i < 32)
+ {
+ if (ahci_ctrl_is_bit_set(io_base, AHCI_REG_PI, RT_BIT_32(i)) != 0)
+ {
+ DBG_AHCI("AHCI: Port %u is present\n", i);
+ ahci_port_detect_device(ahci_seg :> 0, i);
+ cPorts--;
+ if (cPorts == 0)
+ break;
+ }
+ i++;
+ }
+
+ return 0;
+}
+
+/**
+ * Init the AHCI driver and detect attached disks.
+ */
+void BIOSCALL ahci_init(void)
+{
+ uint16_t busdevfn;
+
+ busdevfn = pci_find_classcode(0x00010601);
+ if (busdevfn != VBOX_AHCI_NO_DEVICE)
+ {
+ uint8_t u8Bus, u8DevFn;
+ uint8_t u8PciCapOff;
+
+ u8Bus = (busdevfn & 0xff00) >> 8;
+ u8DevFn = busdevfn & 0x00ff;
+
+ DBG_AHCI("AHCI HBA at Bus %u DevFn 0x%x (raw 0x%x)\n", u8Bus, u8DevFn, busdevfn);
+
+ /* Examine the capability list and search for the Serial ATA Capability Register. */
+ u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, PCI_CONFIG_CAP);
+
+ while (u8PciCapOff != 0)
+ {
+ uint8_t u8PciCapId = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff);
+
+ DBG_AHCI("Capability ID 0x%x at 0x%x\n", u8PciCapId, u8PciCapOff);
+
+ if (u8PciCapId == PCI_CAP_ID_SATACR)
+ break;
+
+ /* Go on to the next capability. */
+ u8PciCapOff = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff + 1);
+ }
+
+ if (u8PciCapOff != 0)
+ {
+ uint8_t u8Rev;
+
+ DBG_AHCI("AHCI HBA with SATA Capability register at 0x%x\n", u8PciCapOff);
+
+ /* Advance to the stuff behind the id and next capability pointer. */
+ u8PciCapOff += 2;
+
+ u8Rev = pci_read_config_byte(u8Bus, u8DevFn, u8PciCapOff);
+ if (u8Rev == 0x10)
+ {
+ /* Read the SATACR1 register and get the bar and offset of the index/data pair register. */
+ uint8_t u8Bar = 0x00;
+ uint16_t u16Off = 0x00;
+ uint16_t u16BarOff = pci_read_config_word(u8Bus, u8DevFn, u8PciCapOff + 2);
+
+ DBG_AHCI("SATACR1: 0x%x\n", u16BarOff);
+
+ switch (u16BarOff & 0xf)
+ {
+ case 0x04:
+ u8Bar = 0x10;
+ break;
+ case 0x05:
+ u8Bar = 0x14;
+ break;
+ case 0x06:
+ u8Bar = 0x18;
+ break;
+ case 0x07:
+ u8Bar = 0x1c;
+ break;
+ case 0x08:
+ u8Bar = 0x20;
+ break;
+ case 0x09:
+ u8Bar = 0x24;
+ break;
+ case 0x0f:
+ default:
+ /* Reserved or unsupported. */
+ DBG_AHCI("BAR 0x%x unsupported\n", u16BarOff & 0xf);
+ }
+
+ /* Get the offset inside the BAR from bits 4:15. */
+ u16Off = (u16BarOff >> 4) * 4;
+
+ if (u8Bar != 0x00)
+ {
+ uint32_t u32Bar = pci_read_config_dword(u8Bus, u8DevFn, u8Bar);
+
+ DBG_AHCI("BAR at 0x%x : 0x%x\n", u8Bar, u32Bar);
+
+ if ((u32Bar & 0x01) != 0)
+ {
+ int rc;
+ uint16_t u16AhciIoBase = (u32Bar & 0xfff0) + u16Off;
+
+ /* Enable PCI memory, I/O, bus mastering access in command register. */
+ pci_write_config_word(u8Bus, u8DevFn, 4, 0x7);
+
+ DBG_AHCI("I/O base: 0x%x\n", u16AhciIoBase);
+ rc = ahci_hba_init(u16AhciIoBase);
+ }
+ else
+ DBG_AHCI("BAR is MMIO\n");
+ }
+ }
+ else
+ DBG_AHCI("Invalid revision 0x%x\n", u8Rev);
+ }
+ else
+ DBG_AHCI("AHCI HBA with no usable Index/Data register pair!\n");
+ }
+ else
+ DBG_AHCI("No AHCI HBA!\n");
+}
diff --git a/src/VBox/Devices/PC/BIOS/apm.c b/src/VBox/Devices/PC/BIOS/apm.c
new file mode 100644
index 00000000..c7fbf6ea
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/apm.c
@@ -0,0 +1,232 @@
+/* $Id: apm.c $ */
+/** @file
+ * APM BIOS support. Implements APM version 1.2.
+ */
+
+/*
+ * Copyright (C) 2004-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "VBox/bios.h"
+
+#if DEBUG_APM
+# define BX_DEBUG_APM(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_APM(...)
+#endif
+
+/* Implemented in assembly. */
+extern void apm_pm16_entry(void);
+#pragma aux apm_pm16_entry "*"
+
+#if VBOX_BIOS_CPU >= 80386
+extern void apm_pm32_entry(void);
+#pragma aux apm_pm32_entry "*"
+#endif
+
+/* APM function codes. */
+enum apm_func {
+ APM_CHECK = 0x00, /* APM Installation Check */
+ APM_RM_CONN = 0x01, /* APM Real Mode Interface Connect */
+ APM_PM_CONN = 0x02, /* APM Protected Mode 16-bit Interface Connect */
+ APM_32_CONN = 0x03, /* APM Protected Mode 32-bit Interface Connect */
+ APM_DISCONN = 0x04, /* APM Interface Disconnect */
+ APM_IDLE = 0x05, /* CPU Idle */
+ APM_BUSY = 0x06, /* CPU Busy */
+ APM_SET_PWR = 0x07, /* Set Power State */
+ APM_ENBL_PM = 0x08, /* Enable/Disable Power Management */
+ APM_SET_DFL = 0x09, /* Restore APM BIOS Power-On Defaults */
+ APM_STATUS = 0x0A, /* Get Power Status */
+ APM_GET_EVT = 0x0B, /* Get PM Event */
+ APM_GET_PWR = 0x0C, /* Get Power State */
+ APM_DEVPM = 0x0D, /* Enable/Disable Device Power Management */
+ APM_DRV_VER = 0x0E, /* APM Driver Version */
+ APM_ENGAGE = 0x0F, /* Engage/Disengage Power Management */
+ APM_GET_CAP = 0x10 /* Get Capabilities */
+};
+
+enum apm_error {
+ APM_ERR_PM_DISABLED = 0x01, /* Power Management functionality disabled */
+ APM_ERR_RM_INUSE = 0x02, /* Real mode interface connection already established */
+ APM_ERR_NOT_CONN = 0x03, /* Interface not connected */
+ APM_ERR_PM_16_INUSE = 0x05, /* 16-bit protected mode interface connection already established */
+ APM_ERR_NO_PM_16 = 0x06, /* 16-bit protected mode interface not supported */
+ APM_ERR_PM_32_INUSE = 0x07, /* 32-bit protected mode interface connection already established */
+ APM_ERR_NO_PM_32 = 0x08, /* 32-bit protected mode interface not supported */
+ APM_ERR_BAD_DEV_ID = 0x09, /* Unrecognized device ID */
+ APM_ERR_INVAL_PARAM = 0x0A, /* Parameter out of range */
+ APM_ERR_NOT_ENGAGED = 0x0B, /* Interface not engaged */
+ APM_ERR_UNSUPPORTED = 0x0C, /* Function not supported */
+ APM_ERR_NO_RSM_TMR = 0x0D, /* Resume timer disabled */
+ APM_ERR_NO_EVENTS = 0x80 /* No power management events pending */
+};
+
+enum apm_power_state {
+ APM_PS_ENABLED = 0x00, /* APM enabled */
+ APM_PS_STANDBY = 0x01, /* Standby */
+ APM_PS_SUSPEND = 0x02, /* Suspend */
+ APM_PS_OFF = 0x03, /* Suspend */
+};
+
+/// @todo merge with system.c
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define FLAGS r.fl.u.r16.flags
+#define EAX r.gr.u.r32.eax
+#define EBX r.gr.u.r32.ebx
+#define ECX r.gr.u.r32.ecx
+#define EDX r.gr.u.r32.edx
+#define ES r.es
+
+#define APM_BIOS_SEG 0xF000 /* Real-mode APM segment. */
+#define APM_BIOS_SEG_LEN 0xFFF0 /* Length of APM segment. */
+
+/* The APM BIOS interface uses 32-bit registers *only* in the 32-bit
+ * protected mode connect call. Rather than saving/restoring 32-bit
+ * registers all the time, simply set the high words of those registers
+ * when necessary.
+ */
+void set_ebx_hi(uint16_t val);
+#pragma aux set_ebx_hi = \
+ ".386" \
+ "shl ebx, 16" \
+ parm [bx] modify exact [bx] nomemory;
+
+void set_esi_hi(uint16_t val);
+#pragma aux set_esi_hi = \
+ ".386" \
+ "shl esi, 16" \
+ parm [si] modify exact [si] nomemory;
+
+
+/* The APM handler has unique requirements. It must be callable from real and
+ * protected mode, both 16-bit and 32-bit. In protected mode, the caller must
+ * ensures that appropriate selectors are available; these only cover the BIOS
+ * code and data, hence the BIOS Data Area or EBDA cannot be accessed. CMOS is
+ * a good place to store information which needs to be accessible from several
+ * different contexts.
+ *
+ * Note that the 32-bit protected-mode handler only needs to thunk down to the
+ * 16-bit code. There's no need for separate 16-bit and 32-bit implementation.
+ */
+
+/* Output a null-terminated string to a specified port, without the
+ * terminating null character.
+ */
+static void apm_out_str_asm(uint16_t port, const char *s);
+#pragma aux apm_out_str_asm = \
+ "mov al, [bx]" \
+ "next:" \
+ "out dx, al" \
+ "inc bx" \
+ "mov al, [bx]" \
+ "or al, al" \
+ "jnz next" \
+ parm [dx] [bx] modify exact [ax bx] nomemory;
+
+/* Wrapper to avoid unnecessary inlining. */
+void apm_out_str(const char *s, uint16_t port)
+{
+ if (*s)
+ apm_out_str_asm(port, s);
+}
+
+void BIOSCALL apm_function(sys_regs_t r)
+{
+ BX_DEBUG_APM("APM: AX=%04X BX=%04X CX=%04X\n", AX, BX, CX);
+
+ CLEAR_CF(); /* Boldly expect success. */
+ switch (GET_AL()) {
+ case APM_CHECK:
+ AX = 0x0102; /* Version 1.2 */
+ BX = 0x504D; /* 'PM' */
+ CX = 3; /* Bits 0/1: 16-bit/32-bit PM interface */
+ break;
+ case APM_RM_CONN:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ /// @todo change connection state
+ break;
+ case APM_PM_CONN:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ /// @todo change connection state
+ AX = APM_BIOS_SEG; /* 16-bit PM code segment (RM segment base). */
+ BX = (uint16_t)apm_pm16_entry; /* 16-bit PM entry point offset. */
+ CX = APM_BIOS_SEG; /* 16-bit data segment. */
+ SI = APM_BIOS_SEG_LEN; /* 16-bit PM code segment length. */
+ DI = APM_BIOS_SEG_LEN; /* Data segment length. */
+ break;
+#if VBOX_BIOS_CPU >= 80386
+ case APM_32_CONN:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ /// @todo change connection state
+ AX = APM_BIOS_SEG; /* 32-bit PM code segment (RM segment base). */
+ BX = (uint16_t)apm_pm32_entry; /* 32-bit entry point offset. */
+ CX = APM_BIOS_SEG; /* 16-bit code segment. */
+ DX = APM_BIOS_SEG; /* 16-bit data segment. */
+ SI = APM_BIOS_SEG_LEN; /* 32-bit code segment length. */
+ DI = APM_BIOS_SEG_LEN; /* Data segment length. */
+ set_ebx_hi(0);
+ set_esi_hi(APM_BIOS_SEG_LEN); /* 16-bit code segment length. */
+ break;
+#endif
+ case APM_IDLE:
+ int_enable(); /* Simply halt the CPU with interrupts enabled. */
+ halt();
+ break;
+ case APM_SET_PWR:
+ /// @todo validate device ID
+ /// @todo validate current connection state
+ switch (CX) {
+ case APM_PS_STANDBY:
+ apm_out_str("Standby", VBOX_BIOS_SHUTDOWN_PORT);
+ break;
+ case APM_PS_SUSPEND:
+ apm_out_str("Suspend", VBOX_BIOS_SHUTDOWN_PORT);
+ break;
+ case APM_PS_OFF:
+ apm_out_str("Shutdown", VBOX_BIOS_SHUTDOWN_PORT); /* Should not return. */
+ break;
+ default:
+ SET_AH(APM_ERR_INVAL_PARAM);
+ SET_CF();
+ }
+ break;
+ case APM_DRV_VER:
+ AX = 0x0102; /// @todo Not right - must take driver version into account!
+ break;
+ case APM_DISCONN:
+ /// @todo actually perform a disconnect...
+ case APM_BUSY: /* Nothing to do as APM Idle doesn't slow CPU clock. */
+ break;
+ case APM_GET_EVT:
+ /// @todo error should be different if interface not connected + engaged
+ SET_AH(APM_ERR_NO_EVENTS); /* PM events don't happen. */
+ SET_CF();
+ break;
+ default:
+ BX_INFO("APM: Unsupported function AX=%04X BX=%04X called\n", AX, BX);
+ SET_AH(APM_ERR_UNSUPPORTED);
+ SET_CF();
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/apm_pm.asm b/src/VBox/Devices/PC/BIOS/apm_pm.asm
new file mode 100644
index 00000000..7e775528
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/apm_pm.asm
@@ -0,0 +1,209 @@
+; $Id:
+;; @file
+; Protected-mode APM implementation.
+;
+
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+
+include commondefs.inc
+
+;; 16-bit protected mode APM entry point
+
+_TEXT segment public 'CODE'
+
+extern _apm_function:near ; implemented in C code
+
+
+public apm_pm16_entry
+
+SET_DEFAULT_CPU_286
+
+
+; APM function dispatch table
+apm_disp:
+ dw offset apmf_disconnect ; 04h
+ dw offset apmf_idle ; 05h
+ dw offset apmf_busy ; 06h
+ dw offset apmf_set_state ; 07h
+ dw offset apmf_enable ; 08h
+ dw offset apmf_restore ; 09h
+ dw offset apmf_get_status ; 0Ah
+ dw offset apmf_get_event ; 0Bh
+ dw offset apmf_pwr_state ; 0Ch
+ dw offset apmf_dev_pm ; 0Dh
+ dw offset apmf_version ; 0Eh
+ dw offset apmf_engage ; 0Fh
+ dw offset apmf_get_caps ; 10h
+apm_disp_end:
+
+;
+; APM worker routine. Function code in AL; it is assumed that AL >= 4.
+; Caller must preserve BP.
+;
+apm_worker proc near
+
+ sti ; TODO ?? necessary ??
+
+ push ax ; check if function is supported...
+ xor ah, ah
+ sub al, 4
+ mov bp, ax
+ shl bp, 1
+ cmp al, (apm_disp_end - apm_disp) / 2
+ pop ax
+ mov ah, 53h ; put back APM function
+ jae apmw_bad_func ; validate function range
+
+ jmp apm_disp[bp] ; and dispatch
+
+apmf_disconnect: ; function 04h
+ jmp apmw_success
+
+apmf_idle: ; function 05h
+ sti
+ hlt
+ jmp apmw_success
+
+apmf_busy: ; function 06h
+; jmp apmw_success
+
+apmf_set_state: ; function 07h
+; jmp apmw_success
+
+apmf_enable: ; function 08h
+ jmp apmw_success
+
+apmf_restore: ; function 09h
+; jmp apmw_success
+
+apmf_get_status: ; function 0Ah
+ jmp apmw_bad_func
+
+apmf_get_event: ; function 0Bh
+ mov ah, 80h
+ jmp apmw_failure
+
+apmf_pwr_state: ; function 0Ch
+
+apmf_dev_pm: ; function 0Dh
+ jmp apmw_bad_func
+
+apmf_version: ; function 0Eh
+ mov ax, 0102h
+ jmp apmw_success
+
+apmf_engage: ; function 0Fh
+ ; TODO do something?
+ jmp apmw_success
+
+apmf_get_caps: ; function 10h
+ mov bl, 0 ; no batteries
+ mov cx, 0 ; no special caps
+ jmp apmw_success
+
+apmw_success:
+ clc ; successful return
+ ret
+
+apmw_bad_func:
+ mov ah, 09h ; unrecognized device ID - generic
+
+apmw_failure:
+ stc ; error for unsupported functions
+ ret
+
+apm_worker endp
+
+
+;; 16-bit protected mode APM entry point
+
+;; According to the APM spec, only CS (16-bit code selector) is defined.
+;; The data selector can be derived from it.
+
+apm_pm16_entry:
+
+ mov ah, 2 ; mark as originating in 16-bit PM
+
+ ; fall through
+
+apm_pm16_entry_from_32:
+
+ push ds ; save registers
+ push bp
+
+ push cs
+ pop bp
+ add bp, 8 ; calculate data selector
+ mov ds, bp ; load data segment
+
+ call apm_worker ; call APM handler
+
+ pop bp
+ pop ds ; restore registers
+
+ retf ; return to caller - 16-bit return
+ ; even to 32-bit thunk!
+
+_TEXT ends
+
+
+if VBOX_BIOS_CPU ge 80386
+
+.386
+
+BIOS32 segment public 'CODE' use32
+
+public apm_pm32_entry
+
+;; 32-bit protected mode APM entry point and thunk
+
+;; According to the APM spec, only CS (32-bit) is defined. 16-bit code
+;; selector and the data selector can be derived from it.
+
+;; WARNING: To simplify matters, we use 16-bit far return to go from 32-bit
+;; code to 16-bit and back. As a consequence, the 32-bit APM code must lie
+;; below 64K boundary in the 32-bit APM code segment.
+
+apm_pm32_entry:
+
+ push ebp ; ebp is not used by APM
+
+ mov bp, cs ; return address for 16-bit code
+ push bp
+ mov ebp, apm_pm32_back
+ push bp ; Note: 16:16 address!
+
+ push cs
+ pop ebp
+ add ebp, 8 ; calculate 16-bit code selector
+ push bp ; push 16-bit code selector
+
+ mov ebp, apm_pm16_entry_from_32
+ push bp ; push 16-bit offset
+
+ mov ah, 3 ; mark as originating in 32-bit PM
+
+ db 66h ; force a 16-bit return
+ retf ; off to 16-bit code...
+
+apm_pm32_back: ; return here from 16-bit code
+
+ pop ebp ; restore scratch register
+ retf
+
+BIOS32 ends
+
+endif ; 32-bit code
+
+ end
diff --git a/src/VBox/Devices/PC/BIOS/ata.c b/src/VBox/Devices/PC/BIOS/ata.c
new file mode 100644
index 00000000..53529614
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ata.c
@@ -0,0 +1,1204 @@
+/* $Id: ata.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <stdarg.h>
+#include "inlines.h"
+#include "biosint.h"
+#include "ebda.h"
+#include "ata.h"
+
+#if DEBUG_ATA
+# define BX_DEBUG_ATA(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_ATA(...)
+#endif
+
+
+// ---------------------------------------------------------------------------
+// Start of ATA/ATAPI Driver
+// ---------------------------------------------------------------------------
+
+void insw_discard(unsigned nwords, unsigned port);
+#pragma aux insw_discard = \
+ ".286" \
+ "again:" \
+ "in ax,dx" \
+ "loop again" \
+ parm [cx] [dx] modify exact [cx ax] nomemory;
+
+void insd_discard(unsigned ndwords, unsigned port);
+#if VBOX_BIOS_CPU >= 80386
+# pragma aux insd_discard = \
+ ".386" \
+ "push eax" \
+ "again:" \
+ "in eax,dx" \
+ "loop again" \
+ "pop eax" \
+ parm [cx] [dx] modify exact [cx] nomemory;
+#endif
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : initialization
+// ---------------------------------------------------------------------------
+void BIOSCALL ata_init(void)
+{
+ uint8_t channel, device;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ // Channels info init.
+ for (channel=0; channel<BX_MAX_ATA_INTERFACES; channel++) {
+ bios_dsk->channels[channel].iface = ATA_IFACE_NONE;
+ bios_dsk->channels[channel].iobase1 = 0x0;
+ bios_dsk->channels[channel].iobase2 = 0x0;
+ bios_dsk->channels[channel].irq = 0;
+ }
+
+ // Devices info init.
+ for (device=0; device<BX_MAX_ATA_DEVICES; device++) {
+ bios_dsk->devices[device].type = DSK_TYPE_NONE;
+ bios_dsk->devices[device].device = DSK_DEVICE_NONE;
+ bios_dsk->devices[device].removable = 0;
+ bios_dsk->devices[device].lock = 0;
+ bios_dsk->devices[device].mode = ATA_MODE_NONE;
+ bios_dsk->devices[device].blksize = 0x200;
+ bios_dsk->devices[device].translation = GEO_TRANSLATION_NONE;
+ bios_dsk->devices[device].lchs.heads = 0;
+ bios_dsk->devices[device].lchs.cylinders = 0;
+ bios_dsk->devices[device].lchs.spt = 0;
+ bios_dsk->devices[device].pchs.heads = 0;
+ bios_dsk->devices[device].pchs.cylinders = 0;
+ bios_dsk->devices[device].pchs.spt = 0;
+ bios_dsk->devices[device].sectors = 0;
+ }
+
+ // hdidmap and cdidmap init.
+ for (device=0; device<BX_MAX_STORAGE_DEVICES; device++) {
+ bios_dsk->hdidmap[device] = BX_MAX_STORAGE_DEVICES;
+ bios_dsk->cdidmap[device] = BX_MAX_STORAGE_DEVICES;
+ }
+
+ bios_dsk->hdcount = 0;
+ bios_dsk->cdcount = 0;
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : software reset
+// ---------------------------------------------------------------------------
+// ATA-3
+// 8.2.1 Software reset - Device 0
+
+void ata_reset(uint16_t device)
+{
+ uint16_t iobase1, iobase2;
+ uint8_t channel, slave, sn, sc;
+ uint16_t max;
+ uint16_t pdelay;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+
+ // Reset
+
+ // 8.2.1 (a) -- set SRST in DC
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN | ATA_CB_DC_SRST);
+
+ // 8.2.1 (b) -- wait for BSY
+ max=0xff;
+ while(--max>0) {
+ uint8_t status = inb(iobase1+ATA_CB_STAT);
+ if ((status & ATA_CB_STAT_BSY) != 0)
+ break;
+ }
+
+ // 8.2.1 (f) -- clear SRST
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+
+ if (bios_dsk->devices[device].type != DSK_TYPE_NONE) {
+ // 8.2.1 (g) -- check for sc==sn==0x01
+ // select device
+ outb(iobase1+ATA_CB_DH, slave?ATA_CB_DH_DEV1:ATA_CB_DH_DEV0);
+ sc = inb(iobase1+ATA_CB_SC);
+ sn = inb(iobase1+ATA_CB_SN);
+
+ if ( (sc==0x01) && (sn==0x01) ) {
+ // 8.2.1 (h) -- wait for not BSY
+ max=0xffff; /* The ATA specification says that the drive may be busy for up to 30 seconds. */
+ while(--max>0) {
+ uint8_t status = inb(iobase1+ATA_CB_STAT);
+ if ((status & ATA_CB_STAT_BSY) == 0)
+ break;
+ pdelay=0xffff;
+ while (--pdelay>0) {
+ /* nothing */
+ }
+ }
+ }
+ }
+
+ // 8.2.1 (i) -- wait for DRDY
+ max = 0x10; /* Speed up for virtual drives. Disks are immediately ready, CDs never */
+ while(--max>0) {
+ uint8_t status = inb(iobase1+ATA_CB_STAT);
+ if ((status & ATA_CB_STAT_RDY) != 0)
+ break;
+ }
+
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : execute a data-in command
+// ---------------------------------------------------------------------------
+ // returns
+ // 0 : no error
+ // 1 : BUSY bit set
+ // 2 : read error
+ // 3 : expected DRQ=1
+ // 4 : no sectors left to read/verify
+ // 5 : more sectors to read/verify
+ // 6 : no sectors left to write
+ // 7 : more sectors to write
+uint16_t ata_cmd_data_in(bio_dsk_t __far *bios_dsk, uint16_t command, uint16_t count)
+{
+ uint16_t iobase1, iobase2, blksize, mult_blk_cnt;
+ uint16_t cylinder;
+ uint8_t head;
+ uint8_t sector;
+ uint8_t device;
+ uint8_t status, mode;
+ char __far *buffer;
+
+ device = bios_dsk->drqp.dev_id;
+
+ iobase1 = bios_dsk->channels[device / 2].iobase1;
+ iobase2 = bios_dsk->channels[device / 2].iobase2;
+ mode = bios_dsk->devices[device].mode;
+ blksize = bios_dsk->devices[device].blksize;
+ if (blksize == 0) { /* If transfer size is exactly 64K */
+#if VBOX_BIOS_CPU >= 80386
+ if (mode == ATA_MODE_PIO32)
+ blksize = 0x4000;
+ else
+#endif
+ blksize = 0x8000;
+ } else {
+#if VBOX_BIOS_CPU >= 80386
+ if (mode == ATA_MODE_PIO32)
+ blksize >>= 2;
+ else
+#endif
+ blksize >>= 1;
+ }
+
+ status = inb(iobase1 + ATA_CB_STAT);
+ if (status & ATA_CB_STAT_BSY)
+ {
+ BX_DEBUG_ATA("%s: disk busy\n", __func__);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 1;
+ }
+
+ buffer = bios_dsk->drqp.buffer;
+ sector = bios_dsk->drqp.sector;
+ cylinder = bios_dsk->drqp.cylinder;
+ head = bios_dsk->drqp.head;
+
+ // sector will be 0 only on lba access. Convert to lba-chs
+ if (sector == 0) {
+ if (bios_dsk->drqp.lba + count >= 268435456)
+ {
+ sector = (bios_dsk->drqp.lba >> 24) & 0x00ff;
+ cylinder = (bios_dsk->drqp.lba >> 32) & 0xffff;
+ outb(iobase1 + ATA_CB_SC, (count & 0xff00) >> 8);
+ outb(iobase1 + ATA_CB_SN, sector);
+ outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, cylinder >> 8);
+ /* Leave the bottom 24 bits as is, they are treated correctly by the
+ * LBA28 code path. */
+ }
+ sector = bios_dsk->drqp.lba & 0x000000ffL;
+ cylinder = (bios_dsk->drqp.lba >> 8) & 0x0000ffffL;
+ head = ((bios_dsk->drqp.lba >> 24) & 0x0000000fL) | 0x40;
+ }
+
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ outb(iobase1 + ATA_CB_FR, 0x00);
+ outb(iobase1 + ATA_CB_SC, count);
+ outb(iobase1 + ATA_CB_SN, sector);
+ outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, cylinder >> 8);
+ outb(iobase1 + ATA_CB_DH, ((device & 1) ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0) | head );
+ outb(iobase1 + ATA_CB_CMD, command);
+
+ if (command == ATA_CMD_READ_MULTIPLE || command == ATA_CMD_READ_MULTIPLE_EXT) {
+ mult_blk_cnt = count;
+ count = 1;
+ } else {
+ mult_blk_cnt = 1;
+ }
+
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+
+ if (status & ATA_CB_STAT_ERR) {
+ BX_DEBUG_ATA("%s: read error\n", __func__);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 2;
+ } else if ( !(status & ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 3;
+ }
+
+ // FIXME : move seg/off translation here
+
+ int_enable(); // enable higher priority interrupts
+
+ while (1) {
+
+ // adjust if there will be an overrun. 2K max sector size
+ if (FP_OFF(buffer) >= 0xF800)
+ buffer = MK_FP(FP_SEG(buffer) + 0x80, FP_OFF(buffer) - 0x800);
+
+#if VBOX_BIOS_CPU >= 80386
+ if (mode == ATA_MODE_PIO32)
+ buffer = rep_insd(buffer, blksize, iobase1);
+ else
+#endif
+ buffer = rep_insw(buffer, blksize, iobase1);
+ bios_dsk->drqp.trsfsectors += mult_blk_cnt;
+ count--;
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+ if (count == 0) {
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) )
+ != ATA_CB_STAT_RDY ) {
+ BX_DEBUG_ATA("%s: no sectors left (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 4;
+ }
+ break;
+ }
+ else {
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) )
+ != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: more sectors left (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 5;
+ }
+ continue;
+ }
+ }
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 0;
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : device detection
+// ---------------------------------------------------------------------------
+
+void BIOSCALL ata_detect(void)
+{
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+ uint8_t hdcount, cdcount, device, type;
+ uint8_t buffer[0x0200];
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+#if BX_MAX_ATA_INTERFACES > 0
+ bios_dsk->channels[0].iface = ATA_IFACE_ISA;
+ bios_dsk->channels[0].iobase1 = 0x1f0;
+ bios_dsk->channels[0].iobase2 = 0x3f0;
+ bios_dsk->channels[0].irq = 14;
+#endif
+#if BX_MAX_ATA_INTERFACES > 1
+ bios_dsk->channels[1].iface = ATA_IFACE_ISA;
+ bios_dsk->channels[1].iobase1 = 0x170;
+ bios_dsk->channels[1].iobase2 = 0x370;
+ bios_dsk->channels[1].irq = 15;
+#endif
+#if 0 /// @todo - temporarily removed to avoid conflict with AHCI
+#if BX_MAX_ATA_INTERFACES > 2
+ bios_dsk->channels[2].iface = ATA_IFACE_ISA;
+ bios_dsk->channels[2].iobase1 = 0x1e8;
+ bios_dsk->channels[2].iobase2 = 0x3e0;
+ bios_dsk->channels[2].irq = 12;
+#endif
+#if BX_MAX_ATA_INTERFACES > 3
+ bios_dsk->channels[3].iface = ATA_IFACE_ISA;
+ bios_dsk->channels[3].iobase1 = 0x168;
+ bios_dsk->channels[3].iobase2 = 0x360;
+ bios_dsk->channels[3].irq = 11;
+#endif
+#endif
+#if BX_MAX_ATA_INTERFACES > 4
+#error Please fill the ATA interface informations
+#endif
+
+ // Device detection
+ hdcount = cdcount = 0;
+
+ for (device = 0; device < BX_MAX_ATA_DEVICES; device++) {
+ uint16_t iobase1, iobase2;
+ uint8_t channel, slave;
+ uint8_t sc, sn, cl, ch, st;
+
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+
+ // Disable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+
+ // Look for device
+ outb(iobase1+ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0);
+ outb(iobase1+ATA_CB_SC, 0x55);
+ outb(iobase1+ATA_CB_SN, 0xaa);
+ outb(iobase1+ATA_CB_SC, 0xaa);
+ outb(iobase1+ATA_CB_SN, 0x55);
+ outb(iobase1+ATA_CB_SC, 0x55);
+ outb(iobase1+ATA_CB_SN, 0xaa);
+
+ // If we found something
+ sc = inb(iobase1+ATA_CB_SC);
+ sn = inb(iobase1+ATA_CB_SN);
+
+ if ( (sc == 0x55) && (sn == 0xaa) ) {
+ bios_dsk->devices[device].type = DSK_TYPE_UNKNOWN;
+
+ // reset the channel
+ ata_reset(device);
+
+ // check for ATA or ATAPI
+ outb(iobase1+ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0);
+ sc = inb(iobase1+ATA_CB_SC);
+ sn = inb(iobase1+ATA_CB_SN);
+ if ((sc==0x01) && (sn==0x01)) {
+ cl = inb(iobase1+ATA_CB_CL);
+ ch = inb(iobase1+ATA_CB_CH);
+ st = inb(iobase1+ATA_CB_STAT);
+
+ if ((cl==0x14) && (ch==0xeb)) {
+ bios_dsk->devices[device].type = DSK_TYPE_ATAPI;
+ } else if ((cl==0x00) && (ch==0x00) && (st!=0x00)) {
+ bios_dsk->devices[device].type = DSK_TYPE_ATA;
+ } else if ((cl==0xff) && (ch==0xff)) {
+ bios_dsk->devices[device].type = DSK_TYPE_NONE;
+ }
+ }
+ }
+
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+
+ type = bios_dsk->devices[device].type;
+
+ // Now we send a IDENTIFY command to ATA device
+ if (type == DSK_TYPE_ATA) {
+ uint64_t sectors;
+ uint16_t cylinders, heads, spt, blksize;
+ chs_t lgeo;
+ uint8_t chsgeo_base;
+ uint8_t removable, mode;
+
+ //Temporary values to do the transfer
+ bios_dsk->devices[device].device = DSK_DEVICE_HD;
+ bios_dsk->devices[device].mode = ATA_MODE_PIO16;
+ bios_dsk->drqp.buffer = buffer;
+ bios_dsk->drqp.dev_id = device;
+
+ if (ata_cmd_data_in(bios_dsk, ATA_CMD_IDENTIFY_DEVICE, 1) !=0 )
+ BX_PANIC("ata-detect: Failed to detect ATA device\n");
+
+ removable = (*(buffer+0) & 0x80) ? 1 : 0;
+#if VBOX_BIOS_CPU >= 80386
+ mode = *(buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16;
+#else
+ mode = ATA_MODE_PIO16;
+#endif
+ blksize = 512; /* There is no sector size field any more. */
+
+ cylinders = *(uint16_t *)(buffer+(1*2)); // word 1
+ heads = *(uint16_t *)(buffer+(3*2)); // word 3
+ spt = *(uint16_t *)(buffer+(6*2)); // word 6
+
+ sectors = *(uint32_t *)(buffer+(60*2)); // word 60 and word 61
+ if (sectors == 0x0FFFFFFF) /* For disks bigger than ~128GB */
+ sectors = *(uint64_t *)(buffer+(100*2)); // words 100 to 103
+ switch (device)
+ {
+ case 0:
+ chsgeo_base = 0x1e;
+ break;
+ case 1:
+ chsgeo_base = 0x26;
+ break;
+ case 2:
+ chsgeo_base = 0x67;
+ break;
+ case 3:
+ chsgeo_base = 0x70;
+ break;
+ default:
+ chsgeo_base = 0;
+ }
+ if (chsgeo_base)
+ {
+ lgeo.cylinders = inb_cmos(chsgeo_base) + (inb_cmos(chsgeo_base + 1) << 8);
+ lgeo.heads = inb_cmos(chsgeo_base + 2);
+ lgeo.spt = inb_cmos(chsgeo_base + 7);
+ }
+ else
+ set_geom_lba(&lgeo, sectors); /* Default EDD-style translated LBA geometry. */
+
+ BX_INFO("ata%d-%d: PCHS=%u/%u/%u LCHS=%u/%u/%u\n", channel, slave,
+ cylinders, heads, spt, lgeo.cylinders, lgeo.heads, lgeo.spt);
+
+ bios_dsk->devices[device].device = DSK_DEVICE_HD;
+ bios_dsk->devices[device].removable = removable;
+ bios_dsk->devices[device].mode = mode;
+ bios_dsk->devices[device].blksize = blksize;
+ bios_dsk->devices[device].pchs.heads = heads;
+ bios_dsk->devices[device].pchs.cylinders = cylinders;
+ bios_dsk->devices[device].pchs.spt = spt;
+ bios_dsk->devices[device].sectors = sectors;
+ bios_dsk->devices[device].lchs = lgeo;
+ if (device < 2)
+ {
+ uint8_t sum, i;
+ fdpt_t __far *fdpt;
+ void __far * __far *int_vec;
+
+ if (device == 0)
+ fdpt = ebda_seg :> &EbdaData->fdpt0;
+ else
+ fdpt = ebda_seg :> &EbdaData->fdpt1;
+
+#if 0
+ /* Place the FDPT outside of conventional memory. Needed for
+ * 286 XENIX 2.1.3/2.2.1 because it completely wipes out
+ * the EBDA and low memory. Hack!
+ */
+ fdpt = MK_FP(0xE200, 0xf00);
+ fdpt += device;
+#endif
+
+ /* Set the INT 41h or 46h pointer. */
+ int_vec = MK_FP(0, (0x41 + device * 5) * sizeof(void __far *));
+ *int_vec = fdpt;
+
+ /* Update the DPT for drive 0/1 pointed to by Int41/46. This used
+ * to be done at POST time with lots of ugly assembler code, which
+ * isn't worth the effort of converting from AMI to Award CMOS
+ * format. Just do it here. */
+ fdpt->resvd1 = fdpt->resvd2 = 0;
+
+ fdpt->lcyl = lgeo.cylinders;
+ fdpt->lhead = lgeo.heads;
+ fdpt->sig = 0xa0;
+ fdpt->spt = spt;
+ fdpt->cyl = cylinders;
+ fdpt->head = heads;
+ fdpt->lspt = lgeo.spt;
+ sum = 0;
+ for (i = 0; i < 0xf; i++)
+ sum += *((uint8_t __far *)fdpt + i);
+ sum = -sum;
+ fdpt->csum = sum;
+ }
+
+ // fill hdidmap
+ bios_dsk->hdidmap[hdcount] = device;
+ hdcount++;
+ }
+
+ // Now we send an IDENTIFY command to ATAPI device
+ if (type == DSK_TYPE_ATAPI) {
+ uint8_t type, removable, mode;
+ uint16_t blksize;
+
+ // Temporary values to do the transfer
+ bios_dsk->devices[device].device = DSK_DEVICE_CDROM;
+ bios_dsk->devices[device].mode = ATA_MODE_PIO16;
+ bios_dsk->drqp.buffer = buffer;
+ bios_dsk->drqp.dev_id = device;
+
+ if (ata_cmd_data_in(bios_dsk, ATA_CMD_IDENTIFY_PACKET, 1) != 0)
+ BX_PANIC("ata-detect: Failed to detect ATAPI device\n");
+
+ type = *(buffer+1) & 0x1f;
+ removable = (*(buffer+0) & 0x80) ? 1 : 0;
+#if VBOX_BIOS_CPU >= 80386
+ mode = *(buffer+96) ? ATA_MODE_PIO32 : ATA_MODE_PIO16;
+#else
+ mode = ATA_MODE_PIO16;
+#endif
+ blksize = 2048;
+
+ bios_dsk->devices[device].device = type;
+ bios_dsk->devices[device].removable = removable;
+ bios_dsk->devices[device].mode = mode;
+ bios_dsk->devices[device].blksize = blksize;
+
+ // fill cdidmap
+ bios_dsk->cdidmap[cdcount] = device;
+ cdcount++;
+ }
+
+ {
+ uint32_t sizeinmb;
+ uint16_t ataversion;
+ uint8_t version, model[41];
+ int i;
+
+ switch (type) {
+ case DSK_TYPE_ATA:
+ sizeinmb = (bios_dsk->devices[device].sectors >> 11);
+ case DSK_TYPE_ATAPI:
+ // Read ATA/ATAPI version
+ ataversion = ((uint16_t)(*(buffer+161))<<8) | *(buffer+160);
+ for (version = 15; version > 0; version--) {
+ if ((ataversion & (1 << version)) !=0 )
+ break;
+ }
+
+ // Read model name
+ for (i = 0; i < 20; i++ ) {
+ *(model+(i*2)) = *(buffer+(i*2)+54+1);
+ *(model+(i*2)+1) = *(buffer+(i*2)+54);
+ }
+
+ // Reformat
+ *(model+40) = 0x00;
+ for ( i = 39; i > 0; i-- ){
+ if (*(model+i) == 0x20)
+ *(model+i) = 0x00;
+ else
+ break;
+ }
+ break;
+ }
+
+#ifdef VBOXz
+ // we don't want any noisy output for now
+#else /* !VBOX */
+ switch (type) {
+ int c;
+ case DSK_TYPE_ATA:
+ printf("ata%d %s: ", channel, slave ? " slave" : "master");
+ i=0;
+ while(c=*(model+i++))
+ printf("%c", c);
+ printf(" ATA-%d Hard-Disk (%lu MBytes)\n", version, sizeinmb);
+ break;
+ case DSK_TYPE_ATAPI:
+ printf("ata%d %s: ", channel, slave ? " slave" : "master");
+ i=0;
+ while(c=*(model+i++))
+ printf("%c", c);
+ if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM)
+ printf(" ATAPI-%d CD-ROM/DVD-ROM\n", version);
+ else
+ printf(" ATAPI-%d Device\n", version);
+ break;
+ case DSK_TYPE_UNKNOWN:
+ printf("ata%d %s: Unknown device\n", channel , slave ? " slave" : "master");
+ break;
+ }
+#endif /* !VBOX */
+ }
+ }
+
+ // Store the devices counts
+ bios_dsk->hdcount = hdcount;
+ bios_dsk->cdcount = cdcount;
+ write_byte(0x40,0x75, hdcount);
+
+#ifdef VBOX
+ // we don't want any noisy output for now
+#else /* !VBOX */
+ printf("\n");
+#endif /* !VBOX */
+
+ // FIXME : should use bios=cmos|auto|disable bits
+ // FIXME : should know about translation bits
+ // FIXME : move hard_drive_post here
+
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : execute a data-out command
+// ---------------------------------------------------------------------------
+ // returns
+ // 0 : no error
+ // 1 : BUSY bit set
+ // 2 : read error
+ // 3 : expected DRQ=1
+ // 4 : no sectors left to read/verify
+ // 5 : more sectors to read/verify
+ // 6 : no sectors left to write
+ // 7 : more sectors to write
+uint16_t ata_cmd_data_out(bio_dsk_t __far *bios_dsk, uint16_t command, uint16_t count)
+{
+ uint64_t lba;
+ char __far *buffer;
+ uint16_t iobase1, iobase2, blksize;
+ uint16_t cylinder;
+ uint16_t head;
+ uint16_t sector;
+ uint16_t device;
+ uint8_t channel, slave;
+ uint8_t status, mode;
+
+ device = bios_dsk->drqp.dev_id;
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+ mode = bios_dsk->devices[device].mode;
+ blksize = 0x200; // was = bios_dsk->devices[device].blksize;
+#if VBOX_BIOS_CPU >= 80386
+ if (mode == ATA_MODE_PIO32)
+ blksize >>= 2;
+ else
+#endif
+ blksize >>= 1;
+
+ status = inb(iobase1 + ATA_CB_STAT);
+ if (status & ATA_CB_STAT_BSY)
+ {
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 1;
+ }
+
+ lba = bios_dsk->drqp.lba;
+ buffer = bios_dsk->drqp.buffer;
+ sector = bios_dsk->drqp.sector;
+ cylinder = bios_dsk->drqp.cylinder;
+ head = bios_dsk->drqp.head;
+
+ // sector will be 0 only on lba access. Convert to lba-chs
+ if (sector == 0) {
+ if (lba + count >= 268435456)
+ {
+ sector = (lba >> 24) & 0x00ff;
+ cylinder = (lba >> 32) & 0xffff;
+ outb(iobase1 + ATA_CB_SC, (count & 0xff00) >> 8);
+ outb(iobase1 + ATA_CB_SN, sector);
+ outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, cylinder >> 8);
+ /* Leave the bottom 24 bits as is, they are treated correctly by the
+ * LBA28 code path. */
+ lba &= 0xffffff;
+ }
+ sector = (uint16_t) (lba & 0x000000ffL);
+ lba >>= 8;
+ cylinder = (uint16_t) (lba & 0x0000ffffL);
+ lba >>= 16;
+ head = ((uint16_t) (lba & 0x0000000fL)) | 0x40;
+ }
+
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ outb(iobase1 + ATA_CB_FR, 0x00);
+ outb(iobase1 + ATA_CB_SC, count);
+ outb(iobase1 + ATA_CB_SN, sector);
+ outb(iobase1 + ATA_CB_CL, cylinder & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, cylinder >> 8);
+ outb(iobase1 + ATA_CB_DH, (slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0) | (uint8_t) head );
+ outb(iobase1 + ATA_CB_CMD, command);
+
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+
+ if (status & ATA_CB_STAT_ERR) {
+ BX_DEBUG_ATA("%s: write error\n", __func__);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 2;
+ } else if ( !(status & ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 3;
+ }
+
+ // FIXME : move seg/off translation here
+
+ int_enable(); // enable higher priority interrupts
+
+ while (1) {
+
+ // adjust if there will be an overrun. 2K max sector size
+ if (FP_OFF(buffer) >= 0xF800)
+ buffer = MK_FP(FP_SEG(buffer) + 0x80, FP_OFF(buffer) - 0x800);
+
+#if VBOX_BIOS_CPU >= 80386
+ if (mode == ATA_MODE_PIO32)
+ buffer = rep_outsd(buffer, blksize, iobase1);
+ else
+#endif
+ buffer = rep_outsw(buffer, blksize, iobase1);
+
+ bios_dsk->drqp.trsfsectors++;
+ count--;
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+ if (count == 0) {
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) )
+ != ATA_CB_STAT_RDY ) {
+ BX_DEBUG_ATA("%s: no sectors left (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 6;
+ }
+ break;
+ }
+ else {
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) )
+ != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: more sectors left (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 7;
+ }
+ continue;
+ }
+ }
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 0;
+}
+
+
+/**
+ * Read sectors from an attached ATA device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ata_read_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t n_sect;
+ int status;
+ uint8_t device_id;
+
+ device_id = bios_dsk->drqp.dev_id;
+ n_sect = bios_dsk->drqp.nsect;
+
+ if (bios_dsk->drqp.sector) {
+ /* CHS addressing. */
+ bios_dsk->devices[device_id].blksize = n_sect * 0x200;
+ BX_DEBUG_ATA("%s: reading %u sectors (CHS)\n", __func__, n_sect);
+ status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_MULTIPLE, n_sect);
+ bios_dsk->devices[device_id].blksize = 0x200;
+ } else {
+ /* LBA addressing. */
+ if (bios_dsk->drqp.lba + n_sect >= 268435456) {
+ BX_DEBUG_ATA("%s: reading %u sector (LBA,EXT)\n", __func__, n_sect);
+ status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_SECTORS_EXT, n_sect);
+ } else {
+ bios_dsk->devices[device_id].blksize = n_sect * 0x200;
+ BX_DEBUG_ATA("%s: reading %u sector (LBA,MULT)\n", __func__, n_sect);
+ status = ata_cmd_data_in(bios_dsk, ATA_CMD_READ_MULTIPLE, n_sect);
+ bios_dsk->devices[device_id].blksize = 0x200;
+ }
+ }
+ return status;
+}
+
+/**
+ * Write sectors to an attached ATA device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int ata_write_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint16_t n_sect;
+
+ n_sect = bios_dsk->drqp.nsect;
+
+ if (bios_dsk->drqp.sector) {
+ /* CHS addressing. */
+ return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS, n_sect);
+ } else {
+ /* LBA addressing. */
+ if (bios_dsk->drqp.lba + n_sect >= 268435456)
+ return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS_EXT, n_sect);
+ else
+ return ata_cmd_data_out(bios_dsk, ATA_CMD_WRITE_SECTORS, n_sect);
+ }
+}
+
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : execute a packet command
+// ---------------------------------------------------------------------------
+ // returns
+ // 0 : no error
+ // 1 : error in parameters
+ // 2 : BUSY bit set
+ // 3 : error
+ // 4 : not ready
+uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer)
+{
+ uint16_t iobase1, iobase2;
+ uint16_t lcount, lbefore, lafter, count;
+ uint8_t channel, slave;
+ uint8_t status, mode, lmode;
+ uint32_t transfer;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ channel = device / 2;
+ slave = device % 2;
+
+ // Data out is not supported yet
+ if (inout == ATA_DATA_OUT) {
+ BX_INFO("%s: DATA_OUT not supported yet\n", __func__);
+ return 1;
+ }
+
+ // The header length must be even
+ if (header & 1) {
+ BX_DEBUG_ATA("%s: header must be even (%04x)\n", __func__, header);
+ return 1;
+ }
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+ mode = bios_dsk->devices[device].mode;
+ transfer = 0L;
+
+ if (cmdlen < 12)
+ cmdlen = 12;
+ if (cmdlen > 12)
+ cmdlen = 16;
+ cmdlen >>= 1;
+
+ // Reset count of transferred data
+ /// @todo clear in calling code?
+ bios_dsk->drqp.trsfsectors = 0;
+ bios_dsk->drqp.trsfbytes = 0;
+
+ status = inb(iobase1 + ATA_CB_STAT);
+ if (status & ATA_CB_STAT_BSY)
+ return 2;
+
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ // outb(iobase1 + ATA_CB_FR, 0x00);
+ // outb(iobase1 + ATA_CB_SC, 0x00);
+ // outb(iobase1 + ATA_CB_SN, 0x00);
+ outb(iobase1 + ATA_CB_CL, 0xfff0 & 0x00ff);
+ outb(iobase1 + ATA_CB_CH, 0xfff0 >> 8);
+ outb(iobase1 + ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0);
+ outb(iobase1 + ATA_CB_CMD, ATA_CMD_PACKET);
+
+ // Device should ok to receive command
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) ) break;
+ }
+
+ if (status & ATA_CB_STAT_CHK) {
+ BX_DEBUG_ATA("%s: error, status is %02x\n", __func__, status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 3;
+ } else if ( !(status & ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: DRQ not set (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 4;
+ }
+
+ int_enable(); // enable higher priority interrupts
+
+ // Normalize address
+ BX_DEBUG_ATA("acp1 buffer ptr: %04x:%04x wlen %04x\n", FP_SEG(cmdbuf), FP_OFF(cmdbuf), cmdlen);
+ cmdbuf = MK_FP(FP_SEG(cmdbuf) + FP_OFF(cmdbuf) / 16 , FP_OFF(cmdbuf) % 16);
+ // cmdseg += (cmdoff / 16);
+ // cmdoff %= 16;
+
+ // Send command to device
+ rep_outsw(cmdbuf, cmdlen, iobase1);
+
+ if (inout == ATA_DATA_NO) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ }
+ else {
+ while (1) {
+
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) )
+ break;
+ }
+
+ // Check if command completed
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_DRQ) ) ==0 )
+ break;
+
+ if (status & ATA_CB_STAT_CHK) {
+ BX_DEBUG_ATA("%s: error (status %02x)\n", __func__, status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 3;
+ }
+
+ // Device must be ready to send data
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) )
+ != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) {
+ BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 4;
+ }
+
+ // Normalize address
+ BX_DEBUG_ATA("acp2 buffer ptr: %04x:%04x\n", FP_SEG(buffer), FP_OFF(buffer));
+ buffer = MK_FP(FP_SEG(buffer) + FP_OFF(buffer) / 16 , FP_OFF(buffer) % 16);
+ // bufseg += (bufoff / 16);
+ // bufoff %= 16;
+
+ // Get the byte count
+ lcount = ((uint16_t)(inb(iobase1 + ATA_CB_CH))<<8)+inb(iobase1 + ATA_CB_CL);
+
+ // adjust to read what we want
+ if (header>lcount) {
+ lbefore = lcount;
+ header -= lcount;
+ lcount = 0;
+ }
+ else {
+ lbefore = header;
+ header = 0;
+ lcount -= lbefore;
+ }
+
+ if (lcount>length) {
+ lafter = lcount - length;
+ lcount = length;
+ length = 0;
+ }
+ else {
+ lafter = 0;
+ length -= lcount;
+ }
+
+ // Save byte count
+ count = lcount;
+
+ BX_DEBUG_ATA("Trying to read %04x bytes (%04x %04x %04x) ",lbefore+lcount+lafter,lbefore,lcount,lafter);
+ BX_DEBUG_ATA("to 0x%04x:0x%04x\n",FP_SEG(buffer),FP_OFF(buffer));
+
+ // If counts not dividable by 4, use 16bits mode
+ lmode = mode;
+ if (lbefore & 0x03)
+ lmode = ATA_MODE_PIO16;
+ if (lcount & 0x03)
+ lmode = ATA_MODE_PIO16;
+ if (lafter & 0x03)
+ lmode = ATA_MODE_PIO16;
+
+ // adds an extra byte if count are odd. before is always even
+ if (lcount & 0x01) {
+ lcount += 1;
+ if ((lafter > 0) && (lafter & 0x01)) {
+ lafter -= 1;
+ }
+ }
+
+#if VBOX_BIOS_CPU >= 80386
+ if (lmode == ATA_MODE_PIO32) {
+ lcount >>= 2;
+ lbefore >>= 2;
+ lafter >>= 2;
+ } else
+#endif
+ {
+ lcount >>= 1;
+ lbefore >>= 1;
+ lafter >>= 1;
+ }
+
+#if VBOX_BIOS_CPU >= 80386
+ if (lmode == ATA_MODE_PIO32) {
+ if (lbefore)
+ insd_discard(lbefore, iobase1);
+ rep_insd(buffer, lcount, iobase1);
+ if (lafter)
+ insd_discard(lafter, iobase1);
+ } else
+#endif
+ {
+ if (lbefore)
+ insw_discard(lbefore, iobase1);
+ rep_insw(buffer, lcount, iobase1);
+ if (lafter)
+ insw_discard(lafter, iobase1);
+ }
+
+
+ // Compute new buffer address
+ buffer += count;
+
+ // Save transferred bytes count
+ transfer += count;
+ bios_dsk->drqp.trsfbytes = transfer;
+ }
+ }
+
+ // Final check, device must be ready
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) )
+ != ATA_CB_STAT_RDY ) {
+ BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, (unsigned) status);
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 4;
+ }
+
+ // Enable interrupts
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 0;
+}
+
+// ---------------------------------------------------------------------------
+// ATA/ATAPI driver : reset device; intended for ATAPI devices
+// ---------------------------------------------------------------------------
+ // returns
+ // 0 : no error
+ // 1 : error
+uint16_t ata_soft_reset(uint16_t device)
+{
+ uint16_t iobase1, iobase2;
+ uint8_t channel, slave;
+ uint8_t status;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ channel = device / 2;
+ slave = device % 2;
+
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+
+ /* Send a reset command to the device. */
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15 | ATA_CB_DC_NIEN);
+ outb(iobase1 + ATA_CB_DH, slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0);
+ outb(iobase1 + ATA_CB_CMD, ATA_CMD_DEVICE_RESET);
+
+ /* Wait for the device to clear BSY. */
+ while (1) {
+ status = inb(iobase1 + ATA_CB_STAT);
+ if ( !(status & ATA_CB_STAT_BSY) ) break;
+ }
+
+ /* Final check, device must be ready */
+ if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DF | ATA_CB_STAT_DRQ | ATA_CB_STAT_CHK) )
+ != ATA_CB_STAT_RDY ) {
+ BX_DEBUG_ATA("%s: not ready (status %02x)\n", __func__, (unsigned) status);
+ /* Enable interrupts */
+ outb(iobase2 + ATA_CB_DC, ATA_CB_DC_HD15);
+ return 1;
+ }
+
+ /* Enable interrupts */
+ outb(iobase2+ATA_CB_DC, ATA_CB_DC_HD15);
+ return 0;
+}
+
+
+// ---------------------------------------------------------------------------
+// End of ATA/ATAPI Driver
+// ---------------------------------------------------------------------------
diff --git a/src/VBox/Devices/PC/BIOS/ata.h b/src/VBox/Devices/PC/BIOS/ata.h
new file mode 100644
index 00000000..2af0fe38
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ata.h
@@ -0,0 +1,190 @@
+/* $Id: ata.h $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_ata_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_ata_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+#define ATA_DATA_NO 0x00
+#define ATA_DATA_IN 0x01
+#define ATA_DATA_OUT 0x02
+
+#define ATA_IFACE_NONE 0x00
+#define ATA_IFACE_ISA 0x00
+#define ATA_IFACE_PCI 0x01
+
+#define ATA_MODE_NONE 0x00
+#define ATA_MODE_PIO16 0x00
+#if VBOX_BIOS_CPU >= 80386
+# define ATA_MODE_PIO32 0x01
+#endif
+#define ATA_MODE_ISADMA 0x02
+#define ATA_MODE_PCIDMA 0x03
+#define ATA_MODE_USEIRQ 0x10
+
+// Global defines -- ATA register and register bits.
+// command block & control block regs
+#define ATA_CB_DATA 0 // data reg in/out pio_base_addr1+0
+#define ATA_CB_ERR 1 // error in pio_base_addr1+1
+#define ATA_CB_FR 1 // feature reg out pio_base_addr1+1
+#define ATA_CB_SC 2 // sector count in/out pio_base_addr1+2
+#define ATA_CB_SN 3 // sector number in/out pio_base_addr1+3
+#define ATA_CB_CL 4 // cylinder low in/out pio_base_addr1+4
+#define ATA_CB_CH 5 // cylinder high in/out pio_base_addr1+5
+#define ATA_CB_DH 6 // device head in/out pio_base_addr1+6
+#define ATA_CB_STAT 7 // primary status in pio_base_addr1+7
+#define ATA_CB_CMD 7 // command out pio_base_addr1+7
+#define ATA_CB_ASTAT 6 // alternate status in pio_base_addr2+6
+#define ATA_CB_DC 6 // device control out pio_base_addr2+6
+#define ATA_CB_DA 7 // device address in pio_base_addr2+7
+
+#define ATA_CB_ER_ICRC 0x80 // ATA Ultra DMA bad CRC
+#define ATA_CB_ER_BBK 0x80 // ATA bad block
+#define ATA_CB_ER_UNC 0x40 // ATA uncorrected error
+#define ATA_CB_ER_MC 0x20 // ATA media change
+#define ATA_CB_ER_IDNF 0x10 // ATA id not found
+#define ATA_CB_ER_MCR 0x08 // ATA media change request
+#define ATA_CB_ER_ABRT 0x04 // ATA command aborted
+#define ATA_CB_ER_NTK0 0x02 // ATA track 0 not found
+#define ATA_CB_ER_NDAM 0x01 // ATA address mark not found
+
+#define ATA_CB_ER_P_SNSKEY 0xf0 // ATAPI sense key (mask)
+#define ATA_CB_ER_P_MCR 0x08 // ATAPI Media Change Request
+#define ATA_CB_ER_P_ABRT 0x04 // ATAPI command abort
+#define ATA_CB_ER_P_EOM 0x02 // ATAPI End of Media
+#define ATA_CB_ER_P_ILI 0x01 // ATAPI Illegal Length Indication
+
+// ATAPI Interrupt Reason bits in the Sector Count reg (CB_SC)
+#define ATA_CB_SC_P_TAG 0xf8 // ATAPI tag (mask)
+#define ATA_CB_SC_P_REL 0x04 // ATAPI release
+#define ATA_CB_SC_P_IO 0x02 // ATAPI I/O
+#define ATA_CB_SC_P_CD 0x01 // ATAPI C/D
+
+// bits 7-4 of the device/head (CB_DH) reg
+#define ATA_CB_DH_DEV0 0xa0 // select device 0
+#define ATA_CB_DH_DEV1 0xb0 // select device 1
+
+// status reg (CB_STAT and CB_ASTAT) bits
+#define ATA_CB_STAT_BSY 0x80 // busy
+#define ATA_CB_STAT_RDY 0x40 // ready
+#define ATA_CB_STAT_DF 0x20 // device fault
+#define ATA_CB_STAT_WFT 0x20 // write fault (old name)
+#define ATA_CB_STAT_SKC 0x10 // seek complete
+#define ATA_CB_STAT_SERV 0x10 // service
+#define ATA_CB_STAT_DRQ 0x08 // data request
+#define ATA_CB_STAT_CORR 0x04 // corrected
+#define ATA_CB_STAT_IDX 0x02 // index
+#define ATA_CB_STAT_ERR 0x01 // error (ATA)
+#define ATA_CB_STAT_CHK 0x01 // check (ATAPI)
+
+// device control reg (CB_DC) bits
+#define ATA_CB_DC_HD15 0x08 // bit should always be set to one
+#define ATA_CB_DC_SRST 0x04 // soft reset
+#define ATA_CB_DC_NIEN 0x02 // disable interrupts
+
+// Most mandatory and optional ATA commands (from ATA-3),
+#define ATA_CMD_CFA_ERASE_SECTORS 0xC0
+#define ATA_CMD_CFA_REQUEST_EXT_ERR_CODE 0x03
+#define ATA_CMD_CFA_TRANSLATE_SECTOR 0x87
+#define ATA_CMD_CFA_WRITE_MULTIPLE_WO_ERASE 0xCD
+#define ATA_CMD_CFA_WRITE_SECTORS_WO_ERASE 0x38
+#define ATA_CMD_CHECK_POWER_MODE1 0xE5
+#define ATA_CMD_CHECK_POWER_MODE2 0x98
+#define ATA_CMD_DEVICE_RESET 0x08
+#define ATA_CMD_EXECUTE_DEVICE_DIAGNOSTIC 0x90
+#define ATA_CMD_FLUSH_CACHE 0xE7
+#define ATA_CMD_FORMAT_TRACK 0x50
+#define ATA_CMD_IDENTIFY_DEVICE 0xEC
+#define ATA_CMD_IDENTIFY_PACKET 0xA1
+#define ATA_CMD_IDLE1 0xE3
+#define ATA_CMD_IDLE2 0x97
+#define ATA_CMD_IDLE_IMMEDIATE1 0xE1
+#define ATA_CMD_IDLE_IMMEDIATE2 0x95
+#define ATA_CMD_INITIALIZE_DRIVE_PARAMETERS 0x91
+#define ATA_CMD_INITIALIZE_DEVICE_PARAMETERS 0x91
+#define ATA_CMD_NOP 0x00
+#define ATA_CMD_PACKET 0xA0
+#define ATA_CMD_READ_BUFFER 0xE4
+#define ATA_CMD_READ_DMA 0xC8
+#define ATA_CMD_READ_DMA_QUEUED 0xC7
+#define ATA_CMD_READ_MULTIPLE 0xC4
+#define ATA_CMD_READ_SECTORS 0x20
+#define ATA_CMD_READ_SECTORS_EXT 0x24
+#define ATA_CMD_READ_MULTIPLE_EXT 0x29
+#define ATA_CMD_WRITE_MULTIPLE_EXT 0x39
+#define ATA_CMD_READ_VERIFY_SECTORS 0x40
+#define ATA_CMD_RECALIBRATE 0x10
+#define ATA_CMD_SEEK 0x70
+#define ATA_CMD_SET_FEATURES 0xEF
+#define ATA_CMD_SET_MULTIPLE_MODE 0xC6
+#define ATA_CMD_SLEEP1 0xE6
+#define ATA_CMD_SLEEP2 0x99
+#define ATA_CMD_STANDBY1 0xE2
+#define ATA_CMD_STANDBY2 0x96
+#define ATA_CMD_STANDBY_IMMEDIATE1 0xE0
+#define ATA_CMD_STANDBY_IMMEDIATE2 0x94
+#define ATA_CMD_WRITE_BUFFER 0xE8
+#define ATA_CMD_WRITE_DMA 0xCA
+#define ATA_CMD_WRITE_DMA_QUEUED 0xCC
+#define ATA_CMD_WRITE_MULTIPLE 0xC5
+#define ATA_CMD_WRITE_SECTORS 0x30
+#define ATA_CMD_WRITE_SECTORS_EXT 0x34
+#define ATA_CMD_WRITE_VERIFY 0x3C
+
+extern void ata_reset(uint16_t device);
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_ata_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/bios.c b/src/VBox/Devices/PC/BIOS/bios.c
new file mode 100644
index 00000000..15481b08
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/bios.c
@@ -0,0 +1,191 @@
+/* $Id: bios.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+#ifndef VBOX_VERSION_STRING
+#include <VBox/version.h>
+#endif
+
+static const char bios_cvs_version_string[] = "VirtualBox " VBOX_VERSION_STRING;
+
+uint8_t inb_cmos(uint8_t cmos_reg)
+{
+ uint8_t cmos_port = 0x70;
+
+ if (cmos_reg >= 0x80)
+ cmos_port += 2;
+ outb(cmos_port, cmos_reg);
+ return inb(cmos_port + 1);
+}
+
+void outb_cmos(uint8_t cmos_reg, uint8_t val)
+{
+ uint8_t cmos_port = 0x70;
+
+ if (cmos_reg >= 0x80)
+ cmos_port += 2;
+ outb(cmos_port, cmos_reg);
+ outb(cmos_port + 1, val);
+}
+
+void BIOSCALL dummy_isr_function(pusha_regs_t regs, uint16_t es,
+ uint16_t ds, iret_addr_t iret_addr)
+{
+ // Interrupt handler for unexpected hardware interrupts. We have to clear
+ // the PIC because if we don't, the next EOI will clear the wrong interrupt
+ // and all hell will break loose! This routine also masks the unexpected
+ // interrupt so it will generally be called only once for each unexpected
+ // interrupt level.
+ uint8_t isrA, isrB, imr, last_int = 0xFF;
+
+ outb(PIC_MASTER, PIC_CMD_RD_ISR); // Read master ISR
+ isrA = inb(PIC_MASTER);
+ if (isrA) {
+ outb(PIC_SLAVE, PIC_CMD_RD_ISR); // Read slave ISR
+ isrB = inb(PIC_SLAVE);
+ if (isrB) {
+ imr = inb(PIC_SLAVE_MASK);
+ outb(PIC_SLAVE_MASK, imr | isrB ); // Mask this interrupt
+ outb(PIC_SLAVE, PIC_CMD_EOI); // Send EOI on slave PIC
+ } else {
+ imr = inb(PIC_MASTER_MASK);
+ isrA &= 0xFB; // Never mask the cascade interrupt
+ outb(PIC_MASTER_MASK, imr | isrA); // Mask this interrupt
+ }
+ outb(PIC_MASTER, PIC_CMD_EOI); // Send EOI on master PIC
+ last_int = isrA;
+ }
+ write_byte(0x40, 0x6B, last_int); // Write INTR_FLAG
+}
+
+
+void BIOSCALL nmi_handler_msg(void)
+{
+ BX_PANIC("NMI Handler called\n");
+}
+
+void BIOSCALL int18_panic_msg(void)
+{
+ BX_PANIC("INT18: BOOT FAILURE\n");
+}
+
+void BIOSCALL log_bios_start(void)
+{
+#if BX_DEBUG_SERIAL
+ outb(BX_DEBUG_PORT+UART_LCR, 0x03); /* setup for serial logging: 8N1 */
+#endif
+ BX_INFO("%s\n", bios_cvs_version_string);
+}
+
+/* Set video mode. */
+void set_mode(uint8_t mode);
+#pragma aux set_mode = \
+ "mov ah, 0" \
+ "int 10h" \
+ parm [al] modify [ax];
+
+/// @todo restore
+//#undef VBOX
+
+#define BX_PCIBIOS 1
+#define BX_APPNAME "VirtualBox"
+#define BIOS_BUILD_DATE __DATE__
+//--------------------------------------------------------------------------
+// print_bios_banner
+// displays a the bios version
+//--------------------------------------------------------------------------
+void BIOSCALL print_bios_banner(void)
+{
+#ifdef VBOX
+ // Skip the logo if a warm boot is requested.
+ uint16_t warm_boot = read_word(0x0040,0x0072);
+ write_word(0x0040,0x0072, 0);
+ if (warm_boot == 0x1234)
+ {
+ /* Only set text mode. */
+ set_mode(3);
+ return;
+ }
+ /* show graphical logo */
+ show_logo();
+#else /* !VBOX */
+ char *bios_conf;
+
+ /* Avoid using preprocessing directives within macro arguments. */
+ bios_conf =
+#ifdef __WATCOMC__
+ "watcom "
+#endif
+#if BX_APM
+ "apmbios "
+#endif
+#if BX_PCIBIOS
+ "pcibios "
+#endif
+#if BX_ELTORITO_BOOT
+ "eltorito "
+#endif
+#if BX_ROMBIOS32
+ "rombios32 "
+#endif
+ "\n\n";
+
+ printf(BX_APPNAME" BIOS - build: %s\n%s\nOptions: ",
+ BIOS_BUILD_DATE, bios_cvs_version_string);
+ printf(bios_conf, 0);
+#endif /* VBOX */
+}
diff --git a/src/VBox/Devices/PC/BIOS/biosint.h b/src/VBox/Devices/PC/BIOS/biosint.h
new file mode 100644
index 00000000..befd794f
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/biosint.h
@@ -0,0 +1,311 @@
+/* $Id: biosint.h $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_biosint_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_biosint_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* Compile-time assertion macro. */
+#define ct_assert(a) extern int ct_ass_arr[!!(a) == 1];
+
+/* For functions called from assembly code. */
+#define BIOSCALL __cdecl
+
+#define BX_ELTORITO_BOOT 1
+#define BX_PCIBIOS 1
+#define BX_USE_PS2_MOUSE 1
+#define BX_APM 1
+
+#ifndef DEBUG_ATA
+# define DEBUG_ATA 0
+#endif
+#ifdef DEBUG_AHCI
+# define DEBUG_AHCI 0
+#endif
+#ifndef DEBUG_SCSI
+# define DEBUG_SCSI 0
+#endif
+#ifndef DEBUG_CD_BOOT
+# define DEBUG_CD_BOOT 0
+#endif
+#ifndef DEBUG_ELTORITO
+# define DEBUG_ELTORITO 0
+#endif
+#ifndef DEBUG_INT13_HD
+# define DEBUG_INT13_HD 0
+#endif
+#ifndef DEBUG_INT13_FL
+# define DEBUG_INT13_FL 0
+#endif
+#ifndef DEBUG_INT13_CD
+# define DEBUG_INT13_CD 0
+#endif
+#ifndef DEBUG_INT15
+# define DEBUG_INT15 0
+#endif
+#ifndef DEBUG_INT15_MS
+# define DEBUG_INT15_MS 0
+#endif
+#ifndef DEBUG_INT16
+# define DEBUG_INT16 0
+#endif
+#ifndef DEBUG_INT1A
+# define DEBUG_INT1A 0
+#endif
+#ifndef DEBUG_INT74
+# define DEBUG_INT74 0
+#endif
+#ifndef DEBUG_PCI
+# define DEBUG_PCI 0
+#endif
+#ifndef DEBUG_APM
+# define DEBUG_APM 0
+#endif
+#ifndef DEBUG_POST
+# define DEBUG_POST 0
+#endif
+
+#define FP_OFF(p) ((unsigned)(p))
+#define FP_SEG(p) ((unsigned)((unsigned long)(void __far*)(p) >> 16))
+#define MK_FP(s,o) (((unsigned short)(s)):>((void __near *)(o)))
+
+typedef struct {
+ union {
+ struct {
+ uint16_t di, si, bp, sp;
+ uint16_t bx, dx, cx, ax;
+ } r16;
+ struct {
+ uint16_t filler[4];
+ uint8_t bl, bh, dl, dh, cl, ch, al, ah;
+ } r8;
+ } u;
+} pusha_regs_t;
+
+typedef struct {
+ union {
+ struct {
+ uint32_t edi, esi, ebp, esp;
+ uint32_t ebx, edx, ecx, eax;
+ } r32;
+ struct {
+ uint16_t di, filler1, si, filler2, bp, filler3, sp, filler4;
+ uint16_t bx, filler5, dx, filler6, cx, filler7, ax, filler8;
+ } r16;
+ struct {
+ uint32_t filler[4];
+ uint8_t bl, bh;
+ uint16_t filler1;
+ uint8_t dl, dh;
+ uint16_t filler2;
+ uint8_t cl, ch;
+ uint16_t filler3;
+ uint8_t al, ah;
+ uint16_t filler4;
+ } r8;
+ } u;
+} pushad_regs_t;
+
+typedef struct {
+ union {
+ struct {
+ uint16_t flags;
+ } r16;
+ struct {
+ uint8_t flagsl;
+ uint8_t flagsh;
+ } r8;
+ } u;
+} flags_t;
+
+typedef struct {
+ uint16_t ip;
+ uint16_t cs;
+ flags_t flags;
+} iret_addr_t;
+
+typedef struct {
+ uint16_t ds;
+ uint16_t es;
+ pusha_regs_t gr;
+ iret_addr_t ra;
+} disk_regs_t;
+
+typedef struct {
+ pusha_regs_t gr;
+ uint16_t es;
+ uint16_t ds;
+ uint16_t ifl;
+ iret_addr_t ra;
+} kbd_regs_t;
+
+typedef struct {
+ pusha_regs_t gr;
+ uint16_t es;
+ uint16_t ds;
+ flags_t fl;
+} sys_regs_t;
+
+typedef struct {
+ pushad_regs_t gr;
+ uint16_t es;
+ uint16_t ds;
+ flags_t fl;
+} sys32_regs_t;
+
+typedef struct {
+ pusha_regs_t gr;
+ iret_addr_t ra;
+} i1apci_regs_t;
+
+
+#define SetCF(x) x.u.r8.flagsl |= 0x01
+#define SetZF(x) x.u.r8.flagsl |= 0x40
+#define ClearCF(x) x.u.r8.flagsl &= 0xfe
+#define ClearZF(x) x.u.r8.flagsl &= 0xbf
+#define GetCF(x) (x.u.r8.flagsl & 0x01)
+
+#define SET_AL(val8) AX = ((AX & 0xff00) | (val8))
+#define SET_BL(val8) BX = ((BX & 0xff00) | (val8))
+#define SET_CL(val8) CX = ((CX & 0xff00) | (val8))
+#define SET_DL(val8) DX = ((DX & 0xff00) | (val8))
+#define SET_AH(val8) AX = ((AX & 0x00ff) | ((val8) << 8))
+#define SET_BH(val8) BX = ((BX & 0x00ff) | ((val8) << 8))
+#define SET_CH(val8) CX = ((CX & 0x00ff) | ((val8) << 8))
+#define SET_DH(val8) DX = ((DX & 0x00ff) | ((val8) << 8))
+
+#define GET_AL() ( AX & 0x00ff )
+#define GET_BL() ( BX & 0x00ff )
+#define GET_CL() ( CX & 0x00ff )
+#define GET_DL() ( DX & 0x00ff )
+#define GET_AH() ( AX >> 8 )
+#define GET_BH() ( BX >> 8 )
+#define GET_CH() ( CX >> 8 )
+#define GET_DH() ( DX >> 8 )
+
+#define GET_ELDL() ( ELDX & 0x00ff )
+#define GET_ELDH() ( ELDX >> 8 )
+
+#define SET_CF() FLAGS |= 0x0001
+#define CLEAR_CF() FLAGS &= 0xfffe
+#define GET_CF() (FLAGS & 0x0001)
+
+#define SET_ZF() FLAGS |= 0x0040
+#define CLEAR_ZF() FLAGS &= 0xffbf
+#define GET_ZF() (FLAGS & 0x0040)
+
+#define SET_IF() FLAGS |= 0x0200
+
+typedef unsigned short bx_bool;
+
+#define BX_VIRTUAL_PORTS 1 /* normal output to Bochs ports */
+#define BX_DEBUG_SERIAL 0 /* output to COM1 */
+
+#define BIOS_PRINTF_HALT 1
+#define BIOS_PRINTF_SCREEN 2
+#define BIOS_PRINTF_INFO 4
+#define BIOS_PRINTF_DEBUG 8
+#define BIOS_PRINTF_ALL (BIOS_PRINTF_SCREEN | BIOS_PRINTF_INFO)
+#define BIOS_PRINTF_DEBHALT (BIOS_PRINTF_SCREEN | BIOS_PRINTF_INFO | BIOS_PRINTF_HALT)
+
+extern const char bios_prefix_string[];
+extern void bios_printf(uint16_t action, const char *s, ...);
+extern void put_str(uint16_t action, const char __far *s);
+extern void put_str_near(uint16_t action, const char __near *s);
+extern uint8_t inb_cmos(uint8_t cmos_reg);
+extern void outb_cmos(uint8_t cmos_reg, uint8_t val);
+extern uint16_t cdrom_boot(void);
+extern void show_logo(void);
+extern void delay_boot(uint16_t secs);
+extern bx_bool set_enable_a20(bx_bool val);
+
+#define printf(...) bios_printf(BIOS_PRINTF_SCREEN, __VA_ARGS__)
+
+// Defines the output macros.
+// BX_DEBUG goes to INFO port until we can easily choose debug info on a
+// per-device basis. Debug info are sent only in debug mode
+#define DEBUG_ROMBIOS 1
+#if DEBUG_ROMBIOS
+# define BX_DEBUG(...) bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__)
+#else
+# define BX_DEBUG(...)
+#endif
+#ifdef VBOX
+#define BX_INFO(...) do { put_str(BIOS_PRINTF_INFO, bios_prefix_string); bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__); } while (0)
+#else /* !VBOX */
+#define BX_INFO(...) bios_printf(BIOS_PRINTF_INFO, __VA_ARGS__)
+#endif /* !VBOX */
+#define BX_PANIC(...) bios_printf(BIOS_PRINTF_DEBHALT, __VA_ARGS__)
+
+/* Because we don't tell the recompiler when guest physical memory
+ * is written, it can incorrectly cache guest code overwritten by
+ * DMA (bus master or not). We just re-write the memory block to flush
+ * any of its caches. This is not exactly efficient, but works!
+ */
+#define DMA_WORKAROUND 1
+
+/* Random hardware-related definitions. */
+
+#define PIC_MASTER 0x20
+#define PIC_MASTER_MASK 0x21
+#define PIC_SLAVE 0xA0
+#define PIC_SLAVE_MASK 0xA1
+#define PIC_CMD_EOI 0x20
+#define PIC_CMD_RD_ISR 0x0B
+#define PIC_CMD_INIT 0x11
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_biosint_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/boot.c b/src/VBox/Devices/PC/BIOS/boot.c
new file mode 100644
index 00000000..b35e4789
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/boot.c
@@ -0,0 +1,354 @@
+/* $Id: boot.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <string.h>
+#include "inlines.h"
+#include "biosint.h"
+#include "ebda.h"
+
+/* Sanity check the LAN boot segment definition. */
+#if VBOX_LANBOOT_SEG < 0xA000
+#error VBOX_LANBOOT_SEG incorrect!
+#endif
+
+/* PnP header used with LAN boot ROMs. */
+typedef struct {
+ uint32_t sig;
+ uint8_t revision;
+ uint8_t length;
+ uint16_t next_s;
+ uint8_t pad1;
+ uint8_t checksum;
+ uint32_t dev_id;
+ uint16_t mfg_string;
+ uint16_t prod_string;
+ uint8_t base_class;
+ uint8_t subclass;
+ uint8_t interface;
+ uint8_t dev_ind;
+ uint16_t boot_code;
+ uint16_t dv;
+ uint16_t bev;
+ uint16_t pad2;
+ uint16_t sriv;
+} pnp_exp_t;
+
+
+int read_boot_sec(uint8_t bootdrv, uint16_t segment);
+#pragma aux read_boot_sec = \
+ "mov ax,0201h" \
+ "mov dh,0" \
+ "mov cx,1" \
+ "xor bx,bx" \
+ "int 13h" \
+ "mov ax,0" \
+ "sbb ax,0" \
+ parm [dl] [es] modify [ax bx cx dx];
+
+//--------------------------------------------------------------------------
+// print_boot_device
+// displays the boot device
+//--------------------------------------------------------------------------
+
+static const char drivetypes[][10]={"Floppy","Hard Disk","CD-ROM","LAN"};
+
+/// @todo pass inputs as bit flags rather than bytes?
+void print_boot_device(uint8_t cdboot, uint8_t lanboot, uint8_t drive)
+{
+ int i;
+
+ // cdboot contains 0 if lan/floppy/harddisk, 1 otherwise
+ // lanboot contains 0 if floppy/harddisk, 1 otherwise
+ // drive contains real/emulated boot drive
+
+ if(cdboot)i=2; // CD-Rom
+ else if(lanboot)i=3; // LAN
+ else if((drive&0x0080)==0x00)i=0; // Floppy
+ else if((drive&0x0080)==0x80)i=1; // Hard drive
+ else return;
+
+ BX_INFO("Booting from %s...\n",drivetypes[i]);
+}
+
+//--------------------------------------------------------------------------
+// print_boot_failure
+// displays the reason why boot failed
+//--------------------------------------------------------------------------
+/// @todo pass inputs as bit flags rather than bytes?
+void print_boot_failure(uint8_t cdboot, uint8_t lanboot, uint8_t drive,
+ uint8_t reason, uint8_t lastdrive)
+{
+ uint16_t drivenum = drive&0x7f;
+
+ // cdboot: 1 if boot from cd, 0 otherwise
+ // lanboot: 1 if boot from lan, 0 otherwise
+ // drive : drive number
+ // reason: 0 signature check failed, 1 read error
+ // lastdrive: 1 boot drive is the last one in boot sequence
+
+ if (cdboot)
+ BX_INFO("Boot from %s failed\n",drivetypes[2]);
+ else if (lanboot)
+ BX_INFO("Boot from %s failed\n",drivetypes[3]);
+ else if (drive & 0x80)
+ BX_INFO("Boot from %s %d failed\n", drivetypes[1],drivenum);
+ else
+ BX_INFO("Boot from %s %d failed\n", drivetypes[0],drivenum);
+
+ if (lastdrive==1) {
+ if (reason==0)
+ BX_PANIC("No bootable medium found! System halted.\n");
+ else
+ BX_PANIC("Could not read from the boot medium! System halted.\n");
+ }
+}
+
+//--------------------------------------------------------------------------
+// print_cdromboot_failure
+// displays the reason why boot failed
+//--------------------------------------------------------------------------
+void print_cdromboot_failure(uint16_t code)
+{
+ BX_INFO("CDROM boot failure code : %04x\n",code);
+ return;
+}
+
+// returns bootsegment in ax, drive in bl
+uint32_t BIOSCALL int19_function(uint8_t bseqnr)
+{
+ /// @todo common code for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint16_t bootseq;
+ uint8_t bootdrv;
+ uint8_t bootcd;
+ uint8_t bootlan;
+ uint8_t bootchk;
+ uint16_t bootseg;
+ uint16_t status;
+ uint8_t lastdrive=0;
+
+ // if BX_ELTORITO_BOOT is not defined, old behavior
+ // check bit 5 in CMOS reg 0x2d. load either 0x00 or 0x80 into DL
+ // in preparation for the initial INT 13h (0=floppy A:, 0x80=C:)
+ // 0: system boot sequence, first drive C: then A:
+ // 1: system boot sequence, first drive A: then C:
+ // else BX_ELTORITO_BOOT is defined
+ // CMOS regs 0x3D and 0x38 contain the boot sequence:
+ // CMOS reg 0x3D & 0x0f : 1st boot device
+ // CMOS reg 0x3D & 0xf0 : 2nd boot device
+ // CMOS reg 0x38 & 0xf0 : 3rd boot device
+ // CMOS reg 0x3C & 0x0f : 4th boot device
+ // boot device codes:
+ // 0x00 : not defined
+ // 0x01 : first floppy
+ // 0x02 : first harddrive
+ // 0x03 : first cdrom
+ // 0x04 : local area network
+ // else : boot failure
+
+ // Get the boot sequence
+#if BX_ELTORITO_BOOT
+ bootseq=inb_cmos(0x3d);
+ bootseq|=((inb_cmos(0x38) & 0xf0) << 4);
+ bootseq|=((inb_cmos(0x3c) & 0x0f) << 12);
+ if (read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice))
+ bootseq = read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice);
+ /* Boot delay hack. */
+ if (bseqnr == 1)
+ delay_boot((inb_cmos(0x3c) & 0xf0) >> 4); /* Implemented in logo.c */
+
+ if (bseqnr==2) bootseq >>= 4;
+ if (bseqnr==3) bootseq >>= 8;
+ if (bseqnr==4) bootseq >>= 12;
+ if (bootseq<0x10) lastdrive = 1;
+ bootdrv=0x00; bootcd=0;
+ bootlan=0;
+ BX_INFO("Boot : bseqnr=%d, bootseq=%x\r\n",bseqnr, bootseq);
+
+ switch(bootseq & 0x0f) {
+ case 0x01:
+ bootdrv=0x00;
+ bootcd=0;
+ break;
+ case 0x02:
+ {
+ // Get the Boot drive.
+ uint8_t boot_drive = read_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDrive);
+
+ bootdrv = boot_drive + 0x80;
+ bootcd=0;
+ break;
+ }
+ case 0x03:
+ bootdrv=0x00;
+ bootcd=1;
+ break;
+ case 0x04: bootlan=1; break;
+ default: return 0x00000000;
+ }
+#else
+ bootseq=inb_cmos(0x2d);
+
+ if (bseqnr==2) {
+ bootseq ^= 0x20;
+ lastdrive = 1;
+ }
+ bootdrv=0x00; bootcd=0;
+ if((bootseq&0x20)==0) bootdrv=0x80;
+#endif // BX_ELTORITO_BOOT
+
+#if BX_ELTORITO_BOOT
+ // We have to boot from cd
+ if (bootcd != 0) {
+ status = cdrom_boot();
+
+ // If failure
+ if ( (status & 0x00ff) !=0 ) {
+ print_cdromboot_failure(status);
+ print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive);
+ return 0x00000000;
+ }
+
+ bootseg = read_word(ebda_seg,(uint16_t)&EbdaData->cdemu.load_segment);
+ bootdrv = (uint8_t)(status>>8);
+ }
+
+#endif // BX_ELTORITO_BOOT
+
+ // Check for boot from LAN first
+ if (bootlan == 1) {
+ uint8_t __far *fplan;
+
+ fplan = MK_FP(VBOX_LANBOOT_SEG, 0);
+ if (*(uint16_t __far *)fplan == 0xaa55) {
+ pnp_exp_t __far *pnps;
+ uint32_t manuf;
+ void (__far *netboot_entry)(void);
+
+ // This is NOT a generic PnP implementation, but an Etherboot-specific hack.
+ pnps = (void __far *)(fplan + *(uint16_t __far *)(fplan + 0x1a));
+ if (pnps->sig == 0x506e5024/* '$PnP' */) {
+ // Found PnP signature
+ manuf = *(uint32_t __far *)(fplan + pnps->mfg_string);
+ if (manuf == 0x65687445/* 'Ethe' */) {
+ // Found Etherboot ROM
+ print_boot_device(bootcd, bootlan, bootdrv);
+ netboot_entry = (void __far *)(fplan + 6);
+ netboot_entry();
+ }
+ else
+ {
+ //Found Normal Pnp ROM
+ print_boot_device(bootcd, bootlan, bootdrv);
+ int_enable(); /* Disabled as we were invoked via INT instruction. */
+ netboot_entry = (void __far *)(fplan + pnps->bev);
+ netboot_entry();
+ }
+ }
+ }
+
+ // boot from LAN will not return if successful.
+ print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive);
+ return 0x00000000;
+ }
+
+ // We have to boot from harddisk or floppy
+ if (bootcd == 0 && bootlan == 0) {
+ bootseg=0x07c0;
+
+ status = read_boot_sec(bootdrv,bootseg);
+ if (status != 0) {
+ print_boot_failure(bootcd, bootlan, bootdrv, 1, lastdrive);
+ return 0x00000000;
+ }
+ }
+
+ // There is *no* requirement whatsoever for a valid floppy boot sector
+ // to have a 55AAh signature. UNIX boot floppies typically have no such
+ // signature. In general, it is impossible to tell a valid bootsector
+ // from an invalid one.
+ // NB: It is somewhat common for failed OS installs to have the
+ // 0x55AA signature and a valid partition table but zeros in the
+ // rest of the boot sector. We do a quick check by comparing the first
+ // and third word of boot sector; if identical, the boot sector is
+ // extremely unlikely to be valid.
+ if (bootdrv != 0) bootchk = 0;
+ else bootchk = 1; /* disable 0x55AA signature check on drive A: */
+
+#if BX_ELTORITO_BOOT
+ // if boot from cd, no signature check
+ if (bootcd != 0)
+ bootchk = 1;
+#endif // BX_ELTORITO_BOOT
+
+ if (read_word(bootseg,0) == read_word(bootseg,4)
+ || (bootchk == 0 && read_word(bootseg,0x1fe) != 0xaa55))
+ {
+ print_boot_failure(bootcd, bootlan, bootdrv, 0, lastdrive);
+ return 0x00000000;
+ }
+
+#if BX_ELTORITO_BOOT
+ // Print out the boot string
+ print_boot_device(bootcd, bootlan, bootdrv);
+#else // BX_ELTORITO_BOOT
+ print_boot_device(0, bootlan, bootdrv);
+#endif // BX_ELTORITO_BOOT
+
+ // return the boot segment
+ return (((uint32_t)bootdrv) << 16) + bootseg;
+}
+
diff --git a/src/VBox/Devices/PC/BIOS/disk.c b/src/VBox/Devices/PC/BIOS/disk.c
new file mode 100644
index 00000000..8da813ef
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/disk.c
@@ -0,0 +1,640 @@
+/* $Id: disk.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "ebda.h"
+#include "ata.h"
+
+
+#if DEBUG_INT13_HD
+# define BX_DEBUG_INT13_HD(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_HD(...)
+#endif
+
+/* Generic disk read/write routine signature. */
+typedef __fastcall (* dsk_rw_func)(bio_dsk_t __far *bios_dsk);
+
+/* Controller specific disk access routines. Declared as a union to reduce
+ * the need for conditionals when choosing between read/write functions.
+ * Note that we get away with using near pointers, which is nice.
+ */
+typedef union {
+ struct {
+ dsk_rw_func read;
+ dsk_rw_func write;
+ } s;
+ dsk_rw_func a[2];
+} dsk_acc_t;
+
+/* Pointers to HW specific disk access routines. */
+dsk_acc_t dskacc[DSKTYP_CNT] = {
+ [DSK_TYPE_ATA] = { ata_read_sectors, ata_write_sectors },
+#ifdef VBOX_WITH_AHCI
+ [DSK_TYPE_AHCI] = { ahci_read_sectors, ahci_write_sectors },
+#endif
+#ifdef VBOX_WITH_SCSI
+ [DSK_TYPE_SCSI] = { scsi_read_sectors, scsi_write_sectors },
+#endif
+};
+
+
+/// @todo put in a header
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define ELDX r.gr.u.r16.sp
+#define DS r.ds
+#define ES r.es
+#define FLAGS r.ra.flags.u.r16.flags
+
+
+/*
+ * Build translated CHS geometry given a disk size in sectors. Based on
+ * Phoenix EDD 3.0. This is used as a fallback to generate sane logical
+ * geometry in case none was provided in CMOS.
+ */
+void set_geom_lba(chs_t __far *lgeo, uint64_t nsectors64)
+{
+ uint32_t limit = 8257536; /* 1024 * 128 * 63 */
+ uint32_t nsectors;
+ unsigned heads = 255;
+ int i;
+
+ nsectors = (nsectors64 >> 32) ? 0xFFFFFFFFL : (uint32_t)nsectors64;
+ /* Start with ~4GB limit, go down to 504MB. */
+ for (i = 0; i < 4; ++i) {
+ if (nsectors <= limit)
+ heads = (heads + 1) / 2;
+ limit /= 2;
+ }
+
+ lgeo->cylinders = nsectors / (heads * 63UL);
+ if (lgeo->cylinders > 1024)
+ lgeo->cylinders = 1024;
+ lgeo->heads = heads;
+ lgeo->spt = 63; /* Always 63 sectors per track, the maximum. */
+}
+
+int edd_fill_dpt(dpt_t __far *dpt, bio_dsk_t __far *bios_dsk, uint8_t device)
+{
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+
+ /* Check if buffer is large enough. */
+ if (dpt->size < 0x1a)
+ return -1;
+
+ /* Fill in EDD 1.x table. */
+ if (dpt->size >= 0x1a) {
+ uint64_t lba;
+
+ dpt->size = 0x1a;
+ dpt->blksize = bios_dsk->devices[device].blksize;
+
+ if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM) {
+ dpt->infos = 0x74; /* Removable, media change, lockable, max values */
+ dpt->cylinders = 0xffffffff;
+ dpt->heads = 0xffffffff;
+ dpt->spt = 0xffffffff;
+ dpt->sector_count1 = 0xffffffff;
+ dpt->sector_count2 = 0xffffffff;
+ } else {
+ dpt->infos = 0x02; // geometry is valid
+ dpt->cylinders = bios_dsk->devices[device].pchs.cylinders;
+ dpt->heads = bios_dsk->devices[device].pchs.heads;
+ dpt->spt = bios_dsk->devices[device].pchs.spt;
+ lba = bios_dsk->devices[device].sectors;
+ dpt->sector_count1 = lba;
+ dpt->sector_count2 = lba >> 32;
+ }
+ }
+
+ /* Fill in EDD 2.x table. */
+ if (dpt->size >= 0x1e) {
+ uint8_t channel, irq, mode, checksum, i, xlation;
+ uint16_t iobase1, iobase2, options;
+
+ dpt->size = 0x1e;
+ dpt->dpte_segment = ebda_seg;
+ dpt->dpte_offset = (uint16_t)&EbdaData->bdisk.dpte;
+
+ // Fill in dpte
+ channel = device / 2;
+ iobase1 = bios_dsk->channels[channel].iobase1;
+ iobase2 = bios_dsk->channels[channel].iobase2;
+ irq = bios_dsk->channels[channel].irq;
+ mode = bios_dsk->devices[device].mode;
+ xlation = bios_dsk->devices[device].translation;
+
+ options = (xlation == GEO_TRANSLATION_NONE ? 0 : 1 << 3); /* CHS translation */
+ options |= (1 << 4); /* LBA translation */
+ if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM) {
+ options |= (1 << 5); /* Removable device */
+ options |= (1 << 6); /* ATAPI device */
+ }
+#if VBOX_BIOS_CPU >= 80386
+ options |= (mode == ATA_MODE_PIO32 ? 1 : 0 << 7);
+#endif
+ options |= (xlation == GEO_TRANSLATION_LBA ? 1 : 0 << 9);
+ options |= (xlation == GEO_TRANSLATION_RECHS ? 3 : 0 << 9);
+
+ bios_dsk->dpte.iobase1 = iobase1;
+ bios_dsk->dpte.iobase2 = iobase2;
+ bios_dsk->dpte.prefix = (0xe | (device % 2)) << 4;
+ bios_dsk->dpte.unused = 0xcb;
+ bios_dsk->dpte.irq = irq;
+ bios_dsk->dpte.blkcount = 1;
+ bios_dsk->dpte.dma = 0;
+ bios_dsk->dpte.pio = 0;
+ bios_dsk->dpte.options = options;
+ bios_dsk->dpte.reserved = 0;
+ bios_dsk->dpte.revision = 0x11;
+
+ checksum = 0;
+ for (i = 0; i < 15; ++i)
+ checksum += read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.dpte + i);
+ checksum = -checksum;
+ bios_dsk->dpte.checksum = checksum;
+ }
+
+ /* Fill in EDD 3.x table. */
+ if (dpt->size >= 0x42) {
+ uint8_t channel, iface, checksum, i;
+ uint16_t iobase1;
+
+ channel = device / 2;
+ iface = bios_dsk->channels[channel].iface;
+ iobase1 = bios_dsk->channels[channel].iobase1;
+
+ dpt->size = 0x42;
+ dpt->key = 0xbedd;
+ dpt->dpi_length = 0x24;
+ dpt->reserved1 = 0;
+ dpt->reserved2 = 0;
+
+ if (iface == ATA_IFACE_ISA) {
+ dpt->host_bus[0] = 'I';
+ dpt->host_bus[1] = 'S';
+ dpt->host_bus[2] = 'A';
+ dpt->host_bus[3] = ' ';
+ }
+ else {
+ // FIXME PCI
+ }
+ dpt->iface_type[0] = 'A';
+ dpt->iface_type[1] = 'T';
+ dpt->iface_type[2] = 'A';
+ dpt->iface_type[3] = ' ';
+ dpt->iface_type[4] = ' ';
+ dpt->iface_type[5] = ' ';
+ dpt->iface_type[6] = ' ';
+ dpt->iface_type[7] = ' ';
+
+ if (iface == ATA_IFACE_ISA) {
+ ((uint16_t __far *)dpt->iface_path)[0] = iobase1;
+ ((uint16_t __far *)dpt->iface_path)[1] = 0;
+ ((uint32_t __far *)dpt->iface_path)[1] = 0;
+ }
+ else {
+ // FIXME PCI
+ }
+ ((uint16_t __far *)dpt->device_path)[0] = device & 1; // device % 2; @todo: correct?
+ ((uint16_t __far *)dpt->device_path)[1] = 0;
+ ((uint32_t __far *)dpt->device_path)[1] = 0;
+
+ checksum = 0;
+ for (i = 30; i < 64; i++)
+ checksum += ((uint8_t __far *)dpt)[i];
+ checksum = -checksum;
+ dpt->checksum = checksum;
+ }
+ return 0;
+}
+
+void BIOSCALL int13_harddisk(disk_regs_t r)
+{
+ uint32_t lba;
+ uint16_t cylinder, head, sector;
+ uint16_t nlc, nlh, nlspt;
+ uint16_t count;
+ uint8_t device, status;
+ bio_dsk_t __far *bios_dsk;
+
+ BX_DEBUG_INT13_HD("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+
+ SET_IF(); /* INT 13h always returns with interrupts enabled. */
+
+ bios_dsk = read_word(0x0040,0x000E) :> &EbdaData->bdisk;
+ write_byte(0x0040, 0x008e, 0); // clear completion flag
+
+ // basic check : device has to be defined
+ if ( (GET_ELDL() < 0x80) || (GET_ELDL() >= 0x80 + BX_MAX_STORAGE_DEVICES) ) {
+ BX_DEBUG("%s: function %02x, ELDL out of range %02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13_fail;
+ }
+
+ // Get the ata channel
+ device = bios_dsk->hdidmap[GET_ELDL()-0x80];
+
+ // basic check : device has to be valid
+ if (device >= BX_MAX_STORAGE_DEVICES) {
+ BX_DEBUG("%s: function %02x, unmapped device for ELDL=%02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13_fail;
+ }
+
+ switch (GET_AH()) {
+
+ case 0x00: /* disk controller reset */
+#ifdef VBOX_WITH_SCSI
+ /* SCSI controller does not need a reset. */
+ if (!VBOX_IS_SCSI_DEVICE(device))
+#endif
+ ata_reset (device);
+ goto int13_success;
+ break;
+
+ case 0x01: /* read disk status */
+ status = read_byte(0x0040, 0x0074);
+ SET_AH(status);
+ SET_DISK_RET_STATUS(0);
+ /* set CF if error status read */
+ if (status) goto int13_fail_nostatus;
+ else goto int13_success_noah;
+ break;
+
+ case 0x02: // read disk sectors
+ case 0x03: // write disk sectors
+ case 0x04: // verify disk sectors
+
+ count = GET_AL();
+ cylinder = GET_CH();
+ cylinder |= ( ((uint16_t) GET_CL()) << 2) & 0x300;
+ sector = (GET_CL() & 0x3f);
+ head = GET_DH();
+
+ /* Segment and offset are in ES:BX. */
+ if ( (count > 128) || (count == 0) ) {
+ BX_INFO("%s: function %02x, count out of range!\n", __func__, GET_AH());
+ goto int13_fail;
+ }
+
+ /* Get the logical CHS geometry. */
+ nlc = bios_dsk->devices[device].lchs.cylinders;
+ nlh = bios_dsk->devices[device].lchs.heads;
+ nlspt = bios_dsk->devices[device].lchs.spt;
+
+ /* Sanity check the geometry. */
+ if( (cylinder >= nlc) || (head >= nlh) || (sector > nlspt )) {
+ BX_INFO("%s: function %02x, disk %02x, parameters out of range %04x/%04x/%04x!\n", __func__, GET_AH(), GET_DL(), cylinder, head, sector);
+ goto int13_fail;
+ }
+
+ // FIXME verify
+ if ( GET_AH() == 0x04 )
+ goto int13_success;
+
+ /* If required, translate LCHS to LBA and execute command. */
+ /// @todo The IS_SCSI_DEVICE check should be redundant...
+ if (( (bios_dsk->devices[device].pchs.heads != nlh) || (bios_dsk->devices[device].pchs.spt != nlspt)) || VBOX_IS_SCSI_DEVICE(device)) {
+ lba = ((((uint32_t)cylinder * (uint32_t)nlh) + (uint32_t)head) * (uint32_t)nlspt) + (uint32_t)sector - 1;
+ sector = 0; // this forces the command to be lba
+ }
+
+ BX_DEBUG_INT13_HD("%s: %d sectors from lba %lu @ %04x:%04x\n", __func__,
+ count, lba, ES, BX);
+
+ /* Clear the count of transferred sectors/bytes. */
+ bios_dsk->drqp.trsfsectors = 0;
+ bios_dsk->drqp.trsfbytes = 0;
+
+ /* Pass request information to low level disk code. */
+ bios_dsk->drqp.lba = lba;
+ bios_dsk->drqp.buffer = MK_FP(ES, BX);
+ bios_dsk->drqp.nsect = count;
+ bios_dsk->drqp.sect_sz = 512; /// @todo device specific?
+ bios_dsk->drqp.cylinder = cylinder;
+ bios_dsk->drqp.head = head;
+ bios_dsk->drqp.sector = sector;
+ bios_dsk->drqp.dev_id = device;
+
+ status = dskacc[bios_dsk->devices[device].type].a[GET_AH() - 0x02](bios_dsk);
+
+ // Set nb of sector transferred
+ SET_AL(bios_dsk->drqp.trsfsectors);
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, error %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x0c);
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x05: /* format disk track */
+ BX_INFO("format disk track called\n");
+ goto int13_success;
+ break;
+
+ case 0x08: /* read disk drive parameters */
+
+ /* Get the logical geometry from internal table. */
+ nlc = bios_dsk->devices[device].lchs.cylinders;
+ nlh = bios_dsk->devices[device].lchs.heads;
+ nlspt = bios_dsk->devices[device].lchs.spt;
+
+ count = bios_dsk->hdcount;
+ /* Maximum cylinder number is just one less than the number of cylinders. */
+ nlc = nlc - 1; /* 0 based , last sector not used */
+ SET_AL(0);
+ SET_CH(nlc & 0xff);
+ SET_CL(((nlc >> 2) & 0xc0) | (nlspt & 0x3f));
+ SET_DH(nlh - 1);
+ SET_DL(count); /* FIXME returns 0, 1, or n hard drives */
+
+ // FIXME should set ES & DI
+ /// @todo Actually, the above comment is nonsense.
+
+ goto int13_success;
+ break;
+
+ case 0x10: /* check drive ready */
+ // should look at 40:8E also???
+
+ // Read the status from controller
+ status = inb(bios_dsk->channels[device/2].iobase1 + ATA_CB_STAT);
+ if ( (status & ( ATA_CB_STAT_BSY | ATA_CB_STAT_RDY )) == ATA_CB_STAT_RDY ) {
+ goto int13_success;
+ } else {
+ SET_AH(0xAA);
+ goto int13_fail_noah;
+ }
+ break;
+
+ case 0x15: /* read disk drive size */
+
+ /* Get the physical geometry from internal table. */
+ cylinder = bios_dsk->devices[device].pchs.cylinders;
+ head = bios_dsk->devices[device].pchs.heads;
+ sector = bios_dsk->devices[device].pchs.spt;
+
+ /* Calculate sector count seen by old style INT 13h. */
+ lba = (uint32_t)cylinder * head * sector;
+ CX = lba >> 16;
+ DX = lba & 0xffff;
+
+ SET_AH(3); // hard disk accessible
+ goto int13_success_noah;
+ break;
+
+ case 0x09: /* initialize drive parameters */
+ case 0x0c: /* seek to specified cylinder */
+ case 0x0d: /* alternate disk reset */
+ case 0x11: /* recalibrate */
+ case 0x14: /* controller internal diagnostic */
+ BX_INFO("%s: function %02xh unimplemented, returns success\n", __func__, GET_AH());
+ goto int13_success;
+ break;
+
+ case 0x0a: /* read disk sectors with ECC */
+ case 0x0b: /* write disk sectors with ECC */
+ case 0x18: // set media type for format
+ default:
+ BX_INFO("%s: function %02xh unsupported, returns fail\n", __func__, GET_AH());
+ goto int13_fail;
+ break;
+ }
+
+int13_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+int13_fail_noah:
+ SET_DISK_RET_STATUS(GET_AH());
+int13_fail_nostatus:
+ SET_CF(); // error occurred
+ return;
+
+int13_success:
+ SET_AH(0x00); // no error
+int13_success_noah:
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+void BIOSCALL int13_harddisk_ext(disk_regs_t r)
+{
+ uint64_t lba;
+ uint16_t segment, offset;
+ uint8_t device, status;
+ uint16_t count;
+ uint8_t type;
+ bio_dsk_t __far *bios_dsk;
+ int13ext_t __far *i13_ext;
+#if 0
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+ uint16_t npc, nph, npspt;
+ uint16_t size;
+ dpt_t __far *dpt;
+#endif
+
+ bios_dsk = read_word(0x0040,0x000E) :> &EbdaData->bdisk;
+
+ BX_DEBUG_INT13_HD("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x DS=%04x SI=%04x\n",
+ __func__, AX, BX, CX, DX, ES, DS, SI);
+
+ write_byte(0x0040, 0x008e, 0); // clear completion flag
+
+ // basic check : device has to be defined
+ if ( (GET_ELDL() < 0x80) || (GET_ELDL() >= 0x80 + BX_MAX_STORAGE_DEVICES) ) {
+ BX_DEBUG("%s: function %02x, ELDL out of range %02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13x_fail;
+ }
+
+ // Get the ata channel
+ device = bios_dsk->hdidmap[GET_ELDL()-0x80];
+
+ // basic check : device has to be valid
+ if (device >= BX_MAX_STORAGE_DEVICES) {
+ BX_DEBUG("%s: function %02x, unmapped device for ELDL=%02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13x_fail;
+ }
+
+ switch (GET_AH()) {
+ case 0x41: // IBM/MS installation check
+ BX=0xaa55; // install check
+ SET_AH(0x30); // EDD 3.0
+ CX=0x0007; // ext disk access and edd, removable supported
+ goto int13x_success_noah;
+ break;
+
+ case 0x42: // IBM/MS extended read
+ case 0x43: // IBM/MS extended write
+ case 0x44: // IBM/MS verify
+ case 0x47: // IBM/MS extended seek
+
+ /* Get a pointer to the extended structure. */
+ i13_ext = DS :> (int13ext_t *)SI;
+
+ count = i13_ext->count;
+ segment = i13_ext->segment;
+ offset = i13_ext->offset;
+
+ // Get 64 bits lba and check
+ lba = i13_ext->lba2;
+ lba <<= 32;
+ lba |= i13_ext->lba1;
+
+ BX_DEBUG_INT13_HD("%s: %d sectors from LBA 0x%llx @ %04x:%04x\n", __func__,
+ count, lba, segment, offset);
+
+ type = bios_dsk->devices[device].type;
+ if (lba >= bios_dsk->devices[device].sectors) {
+ BX_INFO("%s: function %02x. LBA out of range\n", __func__, GET_AH());
+ goto int13x_fail;
+ }
+
+ /* Don't bother with seek or verify. */
+ if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 ))
+ goto int13x_success;
+
+ /* Clear the count of transferred sectors/bytes. */
+ bios_dsk->drqp.trsfsectors = 0;
+ bios_dsk->drqp.trsfbytes = 0;
+
+ /* Pass request information to low level disk code. */
+ bios_dsk->drqp.lba = lba;
+ bios_dsk->drqp.buffer = MK_FP(segment, offset);
+ bios_dsk->drqp.nsect = count;
+ bios_dsk->drqp.sect_sz = 512; /// @todo device specific?
+ bios_dsk->drqp.sector = 0; /* Indicate LBA. */
+ bios_dsk->drqp.dev_id = device;
+
+ /* Execute the read or write command. */
+ status = dskacc[type].a[GET_AH() - 0x42](bios_dsk);
+ count = bios_dsk->drqp.trsfsectors;
+ i13_ext->count = count;
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, error %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x0c);
+ goto int13x_fail_noah;
+ }
+
+ goto int13x_success;
+ break;
+
+ case 0x45: // IBM/MS lock/unlock drive
+ case 0x49: // IBM/MS extended media change
+ goto int13x_success; // Always success for HD
+ break;
+
+ case 0x46: // IBM/MS eject media
+ SET_AH(0xb2); // Volume Not Removable
+ goto int13x_fail_noah; // Always fail for HD
+ break;
+
+ case 0x48: // IBM/MS get drive parameters
+ if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device))
+ goto int13x_fail;
+ else
+ goto int13x_success;
+ break;
+
+ case 0x4e: // // IBM/MS set hardware configuration
+ // DMA, prefetch, PIO maximum not supported
+ switch (GET_AL()) {
+ case 0x01:
+ case 0x03:
+ case 0x04:
+ case 0x06:
+ goto int13x_success;
+ break;
+ default :
+ goto int13x_fail;
+ }
+ break;
+
+ case 0x50: // IBM/MS send packet command
+ default:
+ BX_INFO("%s: function %02xh unsupported, returns fail\n", __func__, GET_AH());
+ goto int13x_fail;
+ break;
+ }
+
+int13x_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+int13x_fail_noah:
+ SET_DISK_RET_STATUS(GET_AH());
+ SET_CF(); // error occurred
+ return;
+
+int13x_success:
+ SET_AH(0x00); // no error
+int13x_success_noah:
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+/* Avoid saving general registers already saved by caller (PUSHA). */
+#pragma aux int13_harddisk modify [di si cx dx bx];
+#pragma aux int13_harddisk_ext modify [di si cx dx bx];
+
diff --git a/src/VBox/Devices/PC/BIOS/ebda.h b/src/VBox/Devices/PC/BIOS/ebda.h
new file mode 100644
index 00000000..910e7542
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ebda.h
@@ -0,0 +1,382 @@
+/* $Id: ebda.h $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_ebda_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_ebda_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+#include <stdint.h>
+
+/* Must be defined here (EBDA structures depend on these). */
+#define BX_MAX_ATA_INTERFACES 4
+#define BX_MAX_ATA_DEVICES (BX_MAX_ATA_INTERFACES*2)
+
+#define BX_USE_ATADRV 1
+#define BX_ELTORITO_BOOT 1
+
+#ifdef VBOX_WITH_SCSI
+ /* Enough for now */
+ #define BX_MAX_SCSI_DEVICES 4
+ /* A SCSI device starts always at BX_MAX_ATA_DEVICES. */
+ #define VBOX_IS_SCSI_DEVICE(device_id) (device_id >= BX_MAX_ATA_DEVICES)
+ #define VBOX_GET_SCSI_DEVICE(device_id) (device_id - BX_MAX_ATA_DEVICES)
+#else
+ #define BX_MAX_SCSI_DEVICES 0
+#endif
+
+#ifdef VBOX_WITH_AHCI
+ /* Four should be enough for now */
+ #define BX_MAX_AHCI_DEVICES 4
+
+ /* An AHCI device starts always at BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES. */
+ #define VBOX_IS_AHCI_DEVICE(device_id) (device_id >= (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES))
+ #define VBOX_GET_AHCI_DEVICE(device_id) (device_id - (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES))
+#else
+ #define BX_MAX_AHCI_DEVICES 0
+#endif
+
+#define BX_MAX_STORAGE_DEVICES (BX_MAX_ATA_DEVICES + BX_MAX_SCSI_DEVICES + BX_MAX_AHCI_DEVICES)
+
+/* Generic storage device types. These depend on the controller type and
+ * determine which device access routines should be called.
+ */
+enum dsk_type_enm {
+ DSK_TYPE_NONE, /* Unknown device. */
+ DSK_TYPE_UNKNOWN, /* Unknown ATA device. */
+ DSK_TYPE_ATA, /* ATA disk. */
+ DSK_TYPE_ATAPI, /* ATAPI device. */
+ DSK_TYPE_SCSI, /* SCSI disk. */
+ DSK_TYPE_AHCI, /* SATA disk via AHCI. */
+ DSKTYP_CNT /* Number of disk types. */
+};
+
+/* Disk device types. */
+//@todo: Do we really need these?
+#define DSK_DEVICE_NONE 0x00 /* No device attached. */
+#define DSK_DEVICE_HD 0xFF /* Device is a hard disk. */
+#define DSK_DEVICE_CDROM 0x05 /* Device is a CD-ROM. */
+
+/* Geometry translation modes. */
+enum geo_xlat_enm {
+ GEO_TRANSLATION_NONE, /* No geometry translation. */
+ GEO_TRANSLATION_LBA, /* LBA translation. */
+ GEO_TRANSLATION_LARGE, /* Large CHS translation. */
+ GEO_TRANSLATION_RECHS
+};
+
+#if 1 //BX_USE_ATADRV
+
+/* Note: The DPTE and FDPT structures are industry standards and
+ * may not be modified. The other disk-related structures are
+ * internal to the BIOS.
+ */
+
+/* Translated DPT (Device Parameter Table). */
+typedef struct {
+ uint16_t iobase1;
+ uint16_t iobase2;
+ uint8_t prefix;
+ uint8_t unused;
+ uint8_t irq;
+ uint8_t blkcount;
+ uint8_t dma;
+ uint8_t pio;
+ uint16_t options;
+ uint16_t reserved;
+ uint8_t revision;
+ uint8_t checksum;
+} dpte_t;
+
+ct_assert(sizeof(dpte_t) == 16); /* Ensure correct size. */
+
+#pragma pack(0)
+
+/* FDPT - Fixed Disk Parameter Table. PC/AT compatible; note
+ * that this structure is slightly misaligned.
+ */
+typedef struct {
+ uint16_t lcyl;
+ uint8_t lhead;
+ uint8_t sig;
+ uint8_t spt;
+ uint32_t resvd1;
+ uint16_t cyl;
+ uint8_t head;
+ uint16_t resvd2;
+ uint8_t lspt;
+ uint8_t csum;
+} fdpt_t;
+
+#pragma pack()
+
+ct_assert(sizeof(fdpt_t) == 16); /* Ensure correct size. */
+
+
+/* C/H/S geometry information. */
+typedef struct {
+ uint16_t heads; /* Number of heads. */
+ uint16_t cylinders; /* Number of cylinders. */
+ uint16_t spt; /* Number of sectors per track. */
+} chs_t;
+
+/* IDE/ATA specific device information. */
+typedef struct {
+ uint8_t iface; /* ISA or PCI. */
+ uint8_t irq; /* IRQ (on the PIC). */
+ uint16_t iobase1; /* I/O base 1. */
+ uint16_t iobase2; /* I/O base 2. */
+} ata_chan_t;
+
+#ifdef VBOX_WITH_SCSI
+
+/* SCSI specific device information. */
+typedef struct {
+ uint16_t io_base; /* Port base for HBA communication. */
+ uint8_t target_id; /* Target ID. */
+} scsi_dev_t;
+
+#endif
+
+#ifdef VBOX_WITH_AHCI
+
+/* AHCI specific device information. */
+typedef struct {
+ uint8_t port; /* SATA port. */
+} ahci_dev_t;
+
+#endif
+
+/* Generic disk information. */
+typedef struct {
+ uint8_t type; /* Device type (ATA/ATAPI/SCSI/none/unknown). */
+ uint8_t device; /* Detected type of attached device (HD/CD/none). */
+ uint8_t removable; /* Removable device flag. */
+ uint8_t lock; /* Lock count for removable devices. */
+ //@todo: ATA specific - move?
+ uint8_t mode; /* Transfer mode: PIO 16/32 bits - IRQ - ISADMA - PCIDMA. */
+ uint8_t translation; /* Type of geometry translation. */
+ uint16_t blksize; /* Disk block size. */
+ chs_t lchs; /* Logical CHS geometry. */
+ chs_t pchs; /* Physical CHS geometry. */
+ uint64_t sectors; /* Total sector count. */
+} disk_dev_t;
+
+/* A structure for passing disk request information around. This structure
+ * is designed for saving stack space. As BIOS requests cannot be overlapped,
+ * one such structure is sufficient.
+ */
+typedef struct {
+ uint64_t lba; /* Starting LBA. */
+ void __far *buffer; /* Read/write data buffer pointer. */
+ uint8_t dev_id; /* Device ID; index into devices array. */
+ uint16_t nsect; /* Number of sectors to be transferred. */
+ uint16_t sect_sz; /* Size of a sector in bytes. */
+ uint16_t cylinder; /* Starting cylinder (CHS only). */
+ uint16_t head; /* Starting head (CHS only). */
+ uint16_t sector; /* Starting sector (CHS only). */
+ uint16_t trsfsectors; /* Actual sectors transferred. */
+ uint32_t trsfbytes; /* Actual bytes transferred. */
+ uint16_t skip_b; /* Bytes to skip before transfer. */
+ uint16_t skip_a; /* Bytes to skip after transfer. */
+} disk_req_t;
+
+extern uint16_t ahci_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+extern uint16_t scsi_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+extern uint16_t ata_cmd_packet(uint16_t device, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+
+extern uint16_t ata_soft_reset(uint16_t device);
+
+/* All BIOS disk information. Disk-related code in the BIOS should not need
+ * anything outside of this structure.
+ */
+typedef struct {
+ disk_req_t drqp; /* Disk request packet. */
+
+ /* Bus-independent disk device information. */
+ disk_dev_t devices[BX_MAX_STORAGE_DEVICES];
+
+ uint8_t hdcount; /* Total number of BIOS disks. */
+ /* Map between (BIOS disk ID - 0x80) and ATA/SCSI/AHCI disks. */
+ uint8_t hdidmap[BX_MAX_STORAGE_DEVICES];
+
+ uint8_t cdcount; /* Number of CD-ROMs. */
+ /* Map between (BIOS CD-ROM ID - 0xE0) and ATA/SCSI/AHCI devices. */
+ uint8_t cdidmap[BX_MAX_STORAGE_DEVICES];
+
+ /* ATA bus-specific device information. */
+ ata_chan_t channels[BX_MAX_ATA_INTERFACES];
+
+#ifdef VBOX_WITH_SCSI
+ /* SCSI bus-specific device information. */
+ scsi_dev_t scsidev[BX_MAX_SCSI_DEVICES];
+ uint8_t scsi_devcount; /* Number of SCSI devices. */
+#endif
+
+#ifdef VBOX_WITH_AHCI
+ /* SATA (AHCI) bus-specific device information. */
+ ahci_dev_t ahcidev[BX_MAX_AHCI_DEVICES];
+ uint8_t ahci_devcnt; /* Number of SATA devices. */
+ uint16_t ahci_seg; /* Segment of AHCI data block. */
+#endif
+
+ dpte_t dpte; /* Buffer for building a DPTE. */
+} bio_dsk_t;
+
+#if BX_ELTORITO_BOOT
+/* El Torito device emulation state. */
+typedef struct {
+ uint8_t active;
+ uint8_t media;
+ uint8_t emulated_drive;
+ uint8_t controller_index;
+ uint16_t device_spec;
+ uint16_t buffer_segment;
+ uint32_t ilba;
+ uint16_t load_segment;
+ uint16_t sector_count;
+ chs_t vdevice; /* Virtual device geometry. */
+} cdemu_t;
+#endif
+
+// for access to EBDA area
+// The EBDA structure should conform to
+// http://www.frontiernet.net/~fys/rombios.htm document
+// I made the ata and cdemu structs begin at 0x121 in the EBDA seg
+/* MS-DOS KEYB.COM may overwrite the word at offset 0x117 in the EBDA
+ * which contains the keyboard ID for PS/2 BIOSes.
+ */
+typedef struct {
+ uint8_t filler1[0x3D];
+
+ fdpt_t fdpt0; /* FDPTs for the first two ATA disks. */
+ fdpt_t fdpt1;
+
+ uint8_t filler2[0xC4];
+
+ bio_dsk_t bdisk; /* Disk driver data (ATA/SCSI/AHCI). */
+
+#if BX_ELTORITO_BOOT
+ cdemu_t cdemu; /* El Torito floppy/HD emulation data. */
+#endif
+
+ unsigned char uForceBootDrive;
+ unsigned char uForceBootDevice;
+} ebda_data_t;
+
+ct_assert(sizeof(ebda_data_t) < 0x380); /* Must be under 1K in size. */
+
+// the last 16 bytes of the EBDA segment are used for the MPS floating
+// pointer structure (though only if an I/O APIC is present)
+
+#define EbdaData ((ebda_data_t *) 0)
+
+// for access to the int13ext structure
+typedef struct {
+ uint8_t size;
+ uint8_t reserved;
+ uint16_t count;
+ uint16_t offset;
+ uint16_t segment;
+ uint32_t lba1;
+ uint32_t lba2;
+} int13ext_t;
+
+/* Disk Physical Table structure */
+typedef struct {
+ uint16_t size;
+ uint16_t infos;
+ uint32_t cylinders;
+ uint32_t heads;
+ uint32_t spt;
+ uint32_t sector_count1;
+ uint32_t sector_count2;
+ uint16_t blksize;
+ uint16_t dpte_offset;
+ uint16_t dpte_segment;
+ uint16_t key;
+ uint8_t dpi_length;
+ uint8_t reserved1;
+ uint16_t reserved2;
+ uint8_t host_bus[4];
+ uint8_t iface_type[8];
+ uint8_t iface_path[8];
+ uint8_t device_path[8];
+ uint8_t reserved3;
+ uint8_t checksum;
+} dpt_t;
+
+/* Note: Using fastcall reduces stack usage a little. */
+int __fastcall ata_read_sectors(bio_dsk_t __far *bios_dsk);
+int __fastcall ata_write_sectors(bio_dsk_t __far *bios_dsk);
+
+int __fastcall scsi_read_sectors(bio_dsk_t __far *bios_dsk);
+int __fastcall scsi_write_sectors(bio_dsk_t __far *bios_dsk);
+
+int __fastcall ahci_read_sectors(bio_dsk_t __far *bios_dsk);
+int __fastcall ahci_write_sectors(bio_dsk_t __far *bios_dsk);
+
+extern void set_geom_lba(chs_t __far *lgeo, uint64_t nsectors);
+extern int edd_fill_dpt(dpt_t __far *dpt, bio_dsk_t __far *bios_dsk, uint8_t device);
+
+// @todo: put this elsewhere (and change/eliminate?)
+#define SET_DISK_RET_STATUS(status) write_byte(0x0040, 0x0074, status)
+
+#endif
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_ebda_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/eltorito.c b/src/VBox/Devices/PC/BIOS/eltorito.c
new file mode 100644
index 00000000..ff309023
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/eltorito.c
@@ -0,0 +1,1025 @@
+/* $Id: eltorito.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <string.h>
+#include "inlines.h"
+#include "biosint.h"
+#include "ebda.h"
+#include "ata.h"
+
+#if DEBUG_ELTORITO
+# define BX_DEBUG_INT13_ET(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_ET(...)
+#endif
+
+#if DEBUG_INT13_CD
+# define BX_DEBUG_INT13_CD(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_CD(...)
+#endif
+
+#if DEBUG_CD_BOOT
+# define BX_DEBUG_ELTORITO(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_ELTORITO(...)
+#endif
+
+
+/// @todo put in a header
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define ELDX r.gr.u.r16.sp
+#define DS r.ds
+#define ES r.es
+#define FLAGS r.ra.flags.u.r16.flags
+
+#pragma pack(1)
+
+/* READ_10/WRITE_10 CDB padded to 12 bytes for ATAPI. */
+typedef struct {
+ uint16_t command; /* Command. */
+ uint32_t lba; /* LBA, MSB first! */
+ uint8_t pad1; /* Unused. */
+ uint16_t nsect; /* Sector count, MSB first! */
+ uint8_t pad2[3]; /* Unused. */
+} cdb_atapi;
+
+#pragma pack()
+
+ct_assert(sizeof(cdb_atapi) == 12);
+
+/* Generic ATAPI/SCSI CD-ROM access routine signature. */
+typedef uint16_t (* cd_pkt_func)(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t header, uint32_t length, uint8_t inout, char __far *buffer);
+
+/* Pointers to HW specific CD-ROM access routines. */
+cd_pkt_func pktacc[DSKTYP_CNT] = {
+ [DSK_TYPE_ATAPI] = { ata_cmd_packet },
+#ifdef VBOX_WITH_AHCI
+ [DSK_TYPE_AHCI] = { ahci_cmd_packet },
+#endif
+#ifdef VBOX_WITH_SCSI
+ [DSK_TYPE_SCSI] = { scsi_cmd_packet },
+#endif
+};
+
+#if defined(VBOX_WITH_AHCI) || defined(VBOX_WITH_SCSI)
+uint16_t dummy_soft_reset(uint16_t device_id)
+{
+ return 0;
+}
+#endif
+
+/* Generic reset routine signature. */
+typedef uint16_t (* cd_rst_func)(uint16_t device_id);
+
+/* Pointers to HW specific CD-ROM reset routines. */
+cd_rst_func softrst[DSKTYP_CNT] = {
+ [DSK_TYPE_ATAPI] = { ata_soft_reset },
+#ifdef VBOX_WITH_AHCI
+ [DSK_TYPE_AHCI] = { dummy_soft_reset },
+#endif
+#ifdef VBOX_WITH_SCSI
+ [DSK_TYPE_SCSI] = { dummy_soft_reset },
+#endif
+};
+
+
+// ---------------------------------------------------------------------------
+// Start of El-Torito boot functions
+// ---------------------------------------------------------------------------
+
+// !! TODO !! convert EBDA accesses to far pointers
+
+extern int diskette_param_table;
+
+void BIOSCALL cdemu_init(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+
+ // the only important data is this one for now
+ write_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.active, 0x00);
+}
+
+uint8_t BIOSCALL cdemu_isactive(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+
+ return read_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.active);
+}
+
+uint8_t BIOSCALL cdemu_emulated_drive(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+
+ return read_byte(ebda_seg,(uint16_t)&EbdaData->cdemu.emulated_drive);
+}
+
+// ---------------------------------------------------------------------------
+// Start of int13 for eltorito functions
+// ---------------------------------------------------------------------------
+
+void BIOSCALL int13_eltorito(disk_regs_t r)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ cdemu_t __far *cdemu;
+
+ cdemu = ebda_seg :> &EbdaData->cdemu;
+
+
+ BX_DEBUG_INT13_ET("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+ // BX_DEBUG_INT13_ET("%s: SS=%04x DS=%04x ES=%04x DI=%04x SI=%04x\n", __func__, get_SS(), DS, ES, DI, SI);
+
+ switch (GET_AH()) {
+
+ // FIXME ElTorito Various. Not implemented in many real BIOSes.
+ case 0x4a: // ElTorito - Initiate disk emu
+ case 0x4c: // ElTorito - Initiate disk emu and boot
+ case 0x4d: // ElTorito - Return Boot catalog
+ BX_INFO("%s: call with AX=%04x not implemented.\n", __func__, AX);
+ goto int13_fail;
+ break;
+
+ case 0x4b: // ElTorito - Terminate disk emu
+ // FIXME ElTorito Hardcoded
+ /// @todo maybe our cdemu struct should match El Torito to allow memcpy()?
+ write_byte(DS,SI+0x00,0x13);
+ write_byte(DS,SI+0x01,cdemu->media);
+ write_byte(DS,SI+0x02,cdemu->emulated_drive);
+ write_byte(DS,SI+0x03,cdemu->controller_index);
+ write_dword(DS,SI+0x04,cdemu->ilba);
+ write_word(DS,SI+0x08,cdemu->device_spec);
+ write_word(DS,SI+0x0a,cdemu->buffer_segment);
+ write_word(DS,SI+0x0c,cdemu->load_segment);
+ write_word(DS,SI+0x0e,cdemu->sector_count);
+ write_byte(DS,SI+0x10,cdemu->vdevice.cylinders);
+ write_byte(DS,SI+0x11,cdemu->vdevice.spt);
+ write_byte(DS,SI+0x12,cdemu->vdevice.heads);
+
+ // If we have to terminate emulation
+ if(GET_AL() == 0x00) {
+ // FIXME ElTorito Various. Should be handled accordingly to spec
+ cdemu->active = 0; // bye bye
+ }
+
+ goto int13_success;
+ break;
+
+ default:
+ BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH());
+ goto int13_fail;
+ break;
+ }
+
+int13_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+ SET_DISK_RET_STATUS(GET_AH());
+ SET_CF(); // error occurred
+ return;
+
+int13_success:
+ SET_AH(0x00); // no error
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+// ---------------------------------------------------------------------------
+// End of int13 for eltorito functions
+// ---------------------------------------------------------------------------
+
+/* Utility routine to check if a device is a CD-ROM. */
+/// @todo this function is kinda useless as the ATAPI type check is obsolete.
+static uint16_t device_is_cdrom(uint8_t device)
+{
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ if (device >= BX_MAX_STORAGE_DEVICES)
+ return 0;
+
+// if (bios_dsk->devices[device].type != DSK_TYPE_ATAPI)
+// return 0;
+
+ if (bios_dsk->devices[device].device != DSK_DEVICE_CDROM)
+ return 0;
+
+ return 1;
+}
+
+// ---------------------------------------------------------------------------
+// End of ATA/ATAPI generic functions
+// ---------------------------------------------------------------------------
+static const char isotag[]="CD001";
+static const char eltorito[]="EL TORITO SPECIFICATION";
+//
+// Returns ah: emulated drive, al: error code
+//
+uint16_t cdrom_boot(void)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t buffer[2048];
+ cdb_atapi atapicmd;
+ uint32_t lba;
+ uint16_t boot_segment, nbsectors, i, error;
+ uint8_t device;
+ uint8_t read_try;
+ cdemu_t __far *cdemu;
+ bio_dsk_t __far *bios_dsk;
+
+ cdemu = ebda_seg :> &EbdaData->cdemu;
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ /* Find the first CD-ROM. */
+ for (device = 0; device < BX_MAX_STORAGE_DEVICES; ++device) {
+ if (device_is_cdrom(device))
+ break;
+ }
+
+ /* Fail if not found. */
+ if (device >= BX_MAX_STORAGE_DEVICES)
+ return 2;
+
+ /* Read the Boot Record Volume Descriptor (BRVD). */
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(0x11);
+ atapicmd.nsect = swap_16(1);
+
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 2048;
+
+ for (read_try = 0; read_try <= 4; ++read_try)
+ {
+ error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, 2048L, ATA_DATA_IN, &buffer);
+ if (!error)
+ break;
+ }
+ if (error)
+ return 3;
+
+ /* Check for a valid BRVD. */
+ if (buffer[0] != 0)
+ return 4;
+ /// @todo what's wrong with memcmp()?
+ for (i = 0; i < 5; ++i) {
+ if (buffer[1+i] != isotag[i])
+ return 5;
+ }
+ for (i = 0; i < 23; ++i)
+ if (buffer[7+i] != eltorito[i])
+ return 6;
+
+ // ok, now we calculate the Boot catalog address
+ lba = *((uint32_t *)&buffer[0x47]);
+ BX_DEBUG_ELTORITO("BRVD at LBA %lx\n", lba);
+
+ /* Now we read the Boot Catalog. */
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(lba);
+ atapicmd.nsect = swap_16(1);
+
+#if 0 // Not necessary as long as previous values are reused
+ bios_dsk->drqp.nsect = 1;
+ bios_dsk->drqp.sect_sz = 512;
+#endif
+
+ error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, 2048L, ATA_DATA_IN, &buffer);
+ if (error != 0)
+ return 7;
+
+ /// @todo Define a struct for the Boot Catalog, the hardcoded offsets are so dumb...
+
+ /* Check if the Boot Catalog looks valid. */
+ if (buffer[0x00] != 0x01)
+ return 8; // Header
+ if (buffer[0x01] != 0x00)
+ return 9; // Platform
+ if (buffer[0x1E] != 0x55)
+ return 10; // key 1
+ if (buffer[0x1F] != 0xAA)
+ return 10; // key 2
+
+ // Initial/Default Entry
+ if (buffer[0x20] != 0x88)
+ return 11; // Bootable
+
+ cdemu->media = buffer[0x21];
+ if (buffer[0x21] == 0) {
+ // FIXME ElTorito Hardcoded. cdrom is hardcoded as device 0xE0.
+ // Win2000 cd boot needs to know it booted from cd
+ cdemu->emulated_drive = 0xE0;
+ }
+ else if (buffer[0x21] < 4)
+ cdemu->emulated_drive = 0x00;
+ else
+ cdemu->emulated_drive = 0x80;
+
+ cdemu->controller_index = device / 2;
+ cdemu->device_spec = device % 2;
+
+ boot_segment = *((uint16_t *)&buffer[0x22]);
+ if (boot_segment == 0)
+ boot_segment = 0x07C0;
+
+ cdemu->load_segment = boot_segment;
+ cdemu->buffer_segment = 0x0000;
+
+ nbsectors = ((uint16_t *)buffer)[0x26 / 2];
+ cdemu->sector_count = nbsectors;
+
+ /* Sanity check the sector count. In incorrectly mastered CDs, it might
+ * be zero. If it's more than 512K, reject it as well.
+ */
+ if (nbsectors == 0 || nbsectors > 1024)
+ return 12;
+
+ lba = *((uint32_t *)&buffer[0x28]);
+ cdemu->ilba = lba;
+
+ BX_DEBUG_ELTORITO("Emulate drive %02x, type %02x, LBA %lu\n",
+ cdemu->emulated_drive, cdemu->media, cdemu->ilba);
+
+ /* Read the disk image's boot sector into memory. */
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(lba);
+ atapicmd.nsect = swap_16(1 + (nbsectors - 1) / 4);
+
+ bios_dsk->drqp.nsect = 1 + (nbsectors - 1) / 4;
+ bios_dsk->drqp.sect_sz = 512;
+
+ bios_dsk->drqp.skip_a = (2048 - nbsectors * 512) % 2048;
+
+ error = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, nbsectors*512L, ATA_DATA_IN, MK_FP(boot_segment,0));
+
+ bios_dsk->drqp.skip_a = 0;
+
+ if (error != 0)
+ return 13;
+
+ BX_DEBUG_ELTORITO("Emulate drive %02x, type %02x, LBA %lu\n",
+ cdemu->emulated_drive, cdemu->media, cdemu->ilba);
+ /* Set up emulated drive geometry based on the media type. */
+ switch (cdemu->media) {
+ case 0x01: /* 1.2M floppy */
+ cdemu->vdevice.spt = 15;
+ cdemu->vdevice.cylinders = 80;
+ cdemu->vdevice.heads = 2;
+ break;
+ case 0x02: /* 1.44M floppy */
+ cdemu->vdevice.spt = 18;
+ cdemu->vdevice.cylinders = 80;
+ cdemu->vdevice.heads = 2;
+ break;
+ case 0x03: /* 2.88M floppy */
+ cdemu->vdevice.spt = 36;
+ cdemu->vdevice.cylinders = 80;
+ cdemu->vdevice.heads = 2;
+ break;
+ case 0x04: /* Hard disk */
+ cdemu->vdevice.spt = read_byte(boot_segment,446+6)&0x3f;
+ cdemu->vdevice.cylinders = ((read_byte(boot_segment,446+6)&~0x3f)<<2) + read_byte(boot_segment,446+7) + 1;
+ cdemu->vdevice.heads = read_byte(boot_segment,446+5) + 1;
+ break;
+ }
+ BX_DEBUG_ELTORITO("VCHS=%u/%u/%u\n", cdemu->vdevice.cylinders,
+ cdemu->vdevice.heads, cdemu->vdevice.spt);
+
+ if (cdemu->media != 0) {
+ /* Increase BIOS installed number of drives (floppy or fixed). */
+ if (cdemu->emulated_drive == 0x00)
+ write_byte(0x40,0x10,read_byte(0x40,0x10)|0x41);
+ else
+ write_byte(ebda_seg,(uint16_t)&EbdaData->bdisk.hdcount, read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount) + 1);
+ }
+
+ // everything is ok, so from now on, the emulation is active
+ if (cdemu->media != 0)
+ cdemu->active = 0x01;
+
+ // return the boot drive + no error
+ return (cdemu->emulated_drive*0x100)+0;
+}
+
+// ---------------------------------------------------------------------------
+// End of El-Torito boot functions
+// ---------------------------------------------------------------------------
+
+// ---------------------------------------------------------------------------
+// Start of int13 when emulating a device from the cd
+// ---------------------------------------------------------------------------
+
+void BIOSCALL int13_cdemu(disk_regs_t r)
+{
+ /// @todo a macro or a function for getting the EBDA segment
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t device, status;
+ uint16_t vheads, vspt, vcylinders;
+ uint16_t head, sector, cylinder, nbsectors;
+ uint32_t vlba, ilba, slba, elba;
+ uint16_t before, segment, offset;
+ cdb_atapi atapicmd;
+ cdemu_t __far *cdemu;
+ bio_dsk_t __far *bios_dsk;
+ int13ext_t __far *i13x;
+ uint32_t lba;
+ uint16_t count;
+
+ cdemu = ebda_seg :> &EbdaData->cdemu;
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ BX_DEBUG_INT13_ET("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+
+ /* at this point, we are emulating a floppy/harddisk */
+
+ // Recompute the device number
+ device = cdemu->controller_index * 2;
+ device += cdemu->device_spec;
+
+ SET_DISK_RET_STATUS(0x00);
+
+ /* basic checks : emulation should be active, dl should equal the emulated drive */
+ if (!cdemu->active || (cdemu->emulated_drive != GET_DL())) {
+ BX_INFO("%s: function %02x, emulation not active for DL= %02x\n", __func__, GET_AH(), GET_DL());
+ goto int13_fail;
+ }
+
+ switch (GET_AH()) {
+
+ case 0x00: /* disk controller reset */
+ if (pktacc[bios_dsk->devices[device].type])
+ {
+ status = softrst[bios_dsk->devices[device].type](device);
+ }
+ goto int13_success;
+ break;
+ // all those functions return SUCCESS
+ case 0x09: /* initialize drive parameters */
+ case 0x0c: /* seek to specified cylinder */
+ case 0x0d: /* alternate disk reset */ // FIXME ElTorito Various. should really reset ?
+ case 0x10: /* check drive ready */ // FIXME ElTorito Various. should check if ready ?
+ case 0x11: /* recalibrate */
+ case 0x14: /* controller internal diagnostic */
+ case 0x16: /* detect disk change */
+ goto int13_success;
+ break;
+
+ // all those functions return disk write-protected
+ case 0x03: /* write disk sectors */
+ case 0x05: /* format disk track */
+ SET_AH(0x03);
+ goto int13_fail_noah;
+ break;
+
+ case 0x01: /* read disk status */
+ status=read_byte(0x0040, 0x0074);
+ SET_AH(status);
+ SET_DISK_RET_STATUS(0);
+
+ /* set CF if error status read */
+ if (status)
+ goto int13_fail_nostatus;
+ else
+ goto int13_success_noah;
+ break;
+
+ case 0x02: // read disk sectors
+ case 0x04: // verify disk sectors
+ vspt = cdemu->vdevice.spt;
+ vcylinders = cdemu->vdevice.cylinders;
+ vheads = cdemu->vdevice.heads;
+ ilba = cdemu->ilba;
+
+ sector = GET_CL() & 0x003f;
+ cylinder = (GET_CL() & 0x00c0) << 2 | GET_CH();
+ head = GET_DH();
+ nbsectors = GET_AL();
+ segment = ES;
+ offset = BX;
+
+ BX_DEBUG_INT13_ET("%s: read to %04x:%04x @ VCHS %u/%u/%u (%u sectors)\n", __func__,
+ ES, BX, cylinder, head, sector, nbsectors);
+
+ // no sector to read ?
+ if(nbsectors==0)
+ goto int13_success;
+
+ // sanity checks sco openserver needs this!
+ if ((sector > vspt)
+ || (cylinder >= vcylinders)
+ || (head >= vheads)) {
+ goto int13_fail;
+ }
+
+ // After validating the input, verify does nothing
+ if (GET_AH() == 0x04)
+ goto int13_success;
+
+ segment = ES+(BX / 16);
+ offset = BX % 16;
+
+ // calculate the virtual lba inside the image
+ vlba=((((uint32_t)cylinder*(uint32_t)vheads)+(uint32_t)head)*(uint32_t)vspt)+((uint32_t)(sector-1));
+
+ // In advance so we don't lose the count
+ SET_AL(nbsectors);
+
+ // start lba on cd
+ slba = (uint32_t)vlba / 4;
+ before = (uint32_t)vlba % 4;
+
+ // end lba on cd
+ elba = (uint32_t)(vlba + nbsectors - 1) / 4;
+
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(ilba + slba);
+ atapicmd.nsect = swap_16(elba - slba + 1);
+
+ bios_dsk->drqp.nsect = nbsectors;
+ bios_dsk->drqp.sect_sz = 512;
+
+ bios_dsk->drqp.skip_b = before * 512;
+ bios_dsk->drqp.skip_a = ((4 - nbsectors % 4 - before) * 512) % 2048;
+
+ status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, before*512, nbsectors*512L, ATA_DATA_IN, MK_FP(segment,offset));
+
+ bios_dsk->drqp.skip_b = 0;
+ bios_dsk->drqp.skip_a = 0;
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, error %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x02);
+ SET_AL(0);
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x08: /* read disk drive parameters */
+ vspt = cdemu->vdevice.spt;
+ vcylinders = cdemu->vdevice.cylinders - 1;
+ vheads = cdemu->vdevice.heads - 1;
+
+ SET_AL( 0x00 );
+ SET_BL( 0x00 );
+ SET_CH( vcylinders & 0xff );
+ SET_CL((( vcylinders >> 2) & 0xc0) | ( vspt & 0x3f ));
+ SET_DH( vheads );
+ SET_DL( 0x02 ); // FIXME ElTorito Various. should send the real count of drives 1 or 2
+ // FIXME ElTorito Harddisk. should send the HD count
+
+ switch (cdemu->media) {
+ case 0x01: SET_BL( 0x02 ); break; /* 1.2 MB */
+ case 0x02: SET_BL( 0x04 ); break; /* 1.44 MB */
+ case 0x03: SET_BL( 0x05 ); break; /* 2.88 MB */
+ }
+
+ /* Only set the DPT pointer for emulated floppies. */
+ if (cdemu->media < 4) {
+ DI = (uint16_t)&diskette_param_table; /// @todo should this depend on emulated medium?
+ ES = 0xF000; /// @todo how to make this relocatable?
+ }
+ goto int13_success;
+ break;
+
+ case 0x15: /* read disk drive size */
+ // FIXME ElTorito Harddisk. What geometry to send ?
+ SET_AH(0x03);
+ goto int13_success_noah;
+ break;
+
+ case 0x41: // IBM/MS installation check
+ BX = 0xaa55; // install check
+ SET_AH(0x30); // EDD 2.1
+ CX = 0x0007; // ext disk access, removable and edd
+ goto int13_success_noah;
+ break;
+
+ case 0x42: // IBM/MS extended read
+ case 0x44: // IBM/MS verify sectors
+ case 0x47: // IBM/MS extended seek
+
+ /* Load the I13X struct pointer. */
+ i13x = MK_FP(DS, SI);
+
+ count = i13x->count;
+ segment = i13x->segment;
+ offset = i13x->offset;
+
+ // Can't use 64 bits lba
+ lba = i13x->lba2;
+ if (lba != 0L) {
+ BX_PANIC("%s: function %02x. Can't use 64bits lba\n", __func__, GET_AH());
+ goto int13_fail;
+ }
+
+ // Get 32 bits lba
+ lba = i13x->lba1;
+
+ // If verify or seek
+ if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 ))
+ goto int13_success;
+
+ BX_DEBUG_INT13_ET("%s: read %u sectors @ LBA %lu to %04X:%04X\n",
+ __func__, count, lba, segment, offset);
+
+ nbsectors = count;
+ vlba = lba;
+ ilba = cdemu->ilba;
+
+ // start lba on cd
+ slba = (uint32_t)vlba / 4;
+ before = (uint32_t)vlba % 4;
+
+ // end lba on cd
+ elba = (uint32_t)(vlba + nbsectors - 1) / 4;
+
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(ilba + slba);
+ atapicmd.nsect = swap_16(elba - slba + 1);
+
+ bios_dsk->drqp.skip_b = before * 512;
+ bios_dsk->drqp.skip_a = ((4 - nbsectors % 4 - before) * 512) % 2048;
+
+ status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, before*512, nbsectors*512L, ATA_DATA_IN, MK_FP(segment,offset));
+
+ bios_dsk->drqp.skip_b = 0;
+ bios_dsk->drqp.skip_a = 0;
+
+ count = (uint16_t)(bios_dsk->drqp.trsfbytes >> 9);
+ i13x->count = count;
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, status %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x0c);
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x48: // IBM/MS get drive parameters
+ if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device))
+ goto int13_fail;
+ else
+ goto int13_success;
+ break;
+
+ // all those functions return unimplemented
+ case 0x0a: /* read disk sectors with ECC */
+ case 0x0b: /* write disk sectors with ECC */
+ case 0x18: /* set media type for format */
+ case 0x43: // IBM/MS extended write
+ case 0x45: // IBM/MS lock/unlock drive
+ case 0x46: // IBM/MS eject media
+ case 0x49: // IBM/MS extended media change
+ case 0x4e: // ? - set hardware configuration
+ case 0x50: // ? - send packet command
+ default:
+ BX_INFO("%s: function AH=%02x unsupported, returns fail\n", __func__, GET_AH());
+ goto int13_fail;
+ break;
+ }
+
+int13_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+int13_fail_noah:
+ SET_DISK_RET_STATUS(GET_AH());
+int13_fail_nostatus:
+ SET_CF(); // error occurred
+ return;
+
+int13_success:
+ SET_AH(0x00); // no error
+int13_success_noah:
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+// ---------------------------------------------------------------------------
+// Start of int13 for cdrom
+// ---------------------------------------------------------------------------
+
+void BIOSCALL int13_cdrom(uint16_t EHBX, disk_regs_t r)
+{
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+ uint8_t device, status, locks;
+ cdb_atapi atapicmd;
+ uint32_t lba;
+ uint16_t count, segment, offset;
+ bio_dsk_t __far *bios_dsk;
+ int13ext_t __far *i13x;
+
+ bios_dsk = ebda_seg :> &EbdaData->bdisk;
+
+ BX_DEBUG_INT13_CD("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+
+ SET_DISK_RET_STATUS(0x00);
+
+ /* basic check : device should be 0xE0+ */
+ if( (GET_ELDL() < 0xE0) || (GET_ELDL() >= 0xE0 + BX_MAX_STORAGE_DEVICES) ) {
+ BX_DEBUG("%s: function %02x, ELDL out of range %02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13_fail;
+ }
+
+ // Get the ata channel
+ device = bios_dsk->cdidmap[GET_ELDL()-0xE0];
+
+ /* basic check : device has to be valid */
+ if (device >= BX_MAX_STORAGE_DEVICES) {
+ BX_DEBUG("%s: function %02x, unmapped device for ELDL=%02x\n", __func__, GET_AH(), GET_ELDL());
+ goto int13_fail;
+ }
+
+ switch (GET_AH()) {
+
+ // all those functions return SUCCESS
+ case 0x00: /* disk controller reset */
+ case 0x09: /* initialize drive parameters */
+ case 0x0c: /* seek to specified cylinder */
+ case 0x0d: /* alternate disk reset */
+ case 0x10: /* check drive ready */
+ case 0x11: /* recalibrate */
+ case 0x14: /* controller internal diagnostic */
+ case 0x16: /* detect disk change */
+ goto int13_success;
+ break;
+
+ // all those functions return disk write-protected
+ case 0x03: /* write disk sectors */
+ case 0x05: /* format disk track */
+ case 0x43: // IBM/MS extended write
+ SET_AH(0x03);
+ goto int13_fail_noah;
+ break;
+
+ case 0x01: /* read disk status */
+ status = read_byte(0x0040, 0x0074);
+ SET_AH(status);
+ SET_DISK_RET_STATUS(0);
+
+ /* set CF if error status read */
+ if (status)
+ goto int13_fail_nostatus;
+ else
+ goto int13_success_noah;
+ break;
+
+ case 0x15: /* read disk drive size */
+ SET_AH(0x02);
+ goto int13_fail_noah;
+ break;
+
+ case 0x41: // IBM/MS installation check
+ BX = 0xaa55; // install check
+ SET_AH(0x30); // EDD 2.1
+ CX = 0x0007; // ext disk access, removable and edd
+ goto int13_success_noah;
+ break;
+
+ case 0x42: // IBM/MS extended read
+ case 0x44: // IBM/MS verify sectors
+ case 0x47: // IBM/MS extended seek
+
+ /* Load the I13X struct pointer. */
+ i13x = MK_FP(DS, SI);
+
+ count = i13x->count;
+ segment = i13x->segment;
+ offset = i13x->offset;
+
+ // Can't use 64 bits lba
+ lba = i13x->lba2;
+ if (lba != 0L) {
+ BX_PANIC("%s: function %02x. Can't use 64bits lba\n", __func__, GET_AH());
+ goto int13_fail;
+ }
+
+ // Get 32 bits lba
+ lba = i13x->lba1;
+
+ // If verify or seek
+ if (( GET_AH() == 0x44 ) || ( GET_AH() == 0x47 ))
+ goto int13_success;
+
+ BX_DEBUG_INT13_CD("%s: read %u sectors @ LBA %lu to %04X:%04X\n",
+ __func__, count, lba, segment, offset);
+
+ _fmemset(&atapicmd, 0, sizeof(atapicmd));
+ atapicmd.command = 0x28; // READ 10 command
+ atapicmd.lba = swap_32(lba);
+ atapicmd.nsect = swap_16(count);
+
+ bios_dsk->drqp.nsect = count;
+ bios_dsk->drqp.sect_sz = 2048;
+
+ status = pktacc[bios_dsk->devices[device].type](device, 12, (char __far *)&atapicmd, 0, count*2048L, ATA_DATA_IN, MK_FP(segment,offset));
+
+ count = (uint16_t)(bios_dsk->drqp.trsfbytes >> 11);
+ i13x->count = count;
+
+ if (status != 0) {
+ BX_INFO("%s: function %02x, status %02x !\n", __func__, GET_AH(), status);
+ SET_AH(0x0c);
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x45: // IBM/MS lock/unlock drive
+ if (GET_AL() > 2)
+ goto int13_fail;
+
+ locks = bios_dsk->devices[device].lock;
+
+ switch (GET_AL()) {
+ case 0 : // lock
+ if (locks == 0xff) {
+ SET_AH(0xb4);
+ SET_AL(1);
+ goto int13_fail_noah;
+ }
+ bios_dsk->devices[device].lock = ++locks;
+ SET_AL(1);
+ break;
+ case 1 : // unlock
+ if (locks == 0x00) {
+ SET_AH(0xb0);
+ SET_AL(0);
+ goto int13_fail_noah;
+ }
+ bios_dsk->devices[device].lock = --locks;
+ SET_AL(locks==0?0:1);
+ break;
+ case 2 : // status
+ SET_AL(locks==0?0:1);
+ break;
+ }
+ goto int13_success;
+ break;
+
+ case 0x46: // IBM/MS eject media
+ locks = bios_dsk->devices[device].lock;
+
+ if (locks != 0) {
+ SET_AH(0xb1); // media locked
+ goto int13_fail_noah;
+ }
+ // FIXME should handle 0x31 no media in device
+ // FIXME should handle 0xb5 valid request failed
+
+#if 0 /// @todo implement!
+ // Call removable media eject
+ ASM_START
+ push bp
+ mov bp, sp
+
+ mov ah, #0x52
+ int #0x15
+ mov _int13_cdrom.status + 2[bp], ah
+ jnc int13_cdrom_rme_end
+ mov _int13_cdrom.status, #1
+int13_cdrom_rme_end:
+ pop bp
+ ASM_END
+#endif
+
+ if (status != 0) {
+ SET_AH(0xb1); // media locked
+ goto int13_fail_noah;
+ }
+
+ goto int13_success;
+ break;
+
+ case 0x48: // IBM/MS get drive parameters
+ if (edd_fill_dpt(DS :> (dpt_t *)SI, bios_dsk, device))
+ goto int13_fail;
+ else
+ goto int13_success;
+ break;
+
+ case 0x49: // IBM/MS extended media change
+ // always send changed ??
+ SET_AH(06);
+ goto int13_fail_nostatus;
+ break;
+
+ case 0x4e: // // IBM/MS set hardware configuration
+ // DMA, prefetch, PIO maximum not supported
+ switch (GET_AL()) {
+ case 0x01:
+ case 0x03:
+ case 0x04:
+ case 0x06:
+ goto int13_success;
+ break;
+ default :
+ goto int13_fail;
+ }
+ break;
+
+ // all those functions return unimplemented
+ case 0x02: /* read sectors */
+ case 0x04: /* verify sectors */
+ case 0x08: /* read disk drive parameters */
+ case 0x0a: /* read disk sectors with ECC */
+ case 0x0b: /* write disk sectors with ECC */
+ case 0x18: /* set media type for format */
+ case 0x50: // ? - send packet command
+ default:
+ BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH());
+ goto int13_fail;
+ break;
+ }
+
+int13_fail:
+ SET_AH(0x01); // defaults to invalid function in AH or invalid parameter
+int13_fail_noah:
+ SET_DISK_RET_STATUS(GET_AH());
+int13_fail_nostatus:
+ SET_CF(); // error occurred
+ return;
+
+int13_success:
+ SET_AH(0x00); // no error
+int13_success_noah:
+ SET_DISK_RET_STATUS(0x00);
+ CLEAR_CF(); // no error
+ return;
+}
+
+// ---------------------------------------------------------------------------
+// End of int13 for cdrom
+// ---------------------------------------------------------------------------
+
diff --git a/src/VBox/Devices/PC/BIOS/floppy.c b/src/VBox/Devices/PC/BIOS/floppy.c
new file mode 100644
index 00000000..958db2e5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/floppy.c
@@ -0,0 +1,1360 @@
+/* $Id: floppy.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+
+extern uint16_t get_floppy_dpt(uint8_t drive_type);
+
+//////////////////////
+// FLOPPY functions //
+//////////////////////
+
+inline void set_diskette_ret_status(uint8_t value)
+{
+ write_byte(0x0040, 0x0041, value);
+}
+
+void set_diskette_current_cyl(uint8_t drive, uint8_t cyl)
+{
+ if (drive > 1)
+ BX_PANIC("set_diskette_current_cyl: drive > 1\n");
+ write_byte(0x0040, 0x0094+drive, cyl);
+}
+
+#if 1 //BX_SUPPORT_FLOPPY
+
+#if DEBUG_INT13_FL
+# define BX_DEBUG_INT13_FL(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT13_FL(...)
+#endif
+
+#define BX_FLOPPY_ON_CNT 37 /* 2 seconds */
+
+extern int diskette_param_table; /* At a fixed location. */
+
+#ifndef VBOX_WITH_FLOPPY_IRQ_POLLING
+
+/**
+ * Wait for the 7th bit of 0040:003e to be set by int0e_handler.
+ * @returns first 7 bits of byte 0040:003e, interrupts disabled.
+ */
+uint8_t floppy_wait_for_interrupt(void)
+{
+ int_disable();
+ for (;;)
+ {
+ uint8_t val8 = read_byte(0x0040, 0x003e);
+ if (val8 & 0x80)
+ return val8 & ~0x7f;
+ int_enable_hlt_disable();
+ }
+}
+
+/**
+ * Wait for the 7th bit of 0040:003e to be set by int0e_handler or 0040:0040 to
+ * be cleared by the timer, clearing the interrupt flag on success.
+ *
+ * @returns 0 on timeout with interrupts enabled.
+ * All 8 bits at 0040:003e on interrupt with interrupts disabled (i.e.
+ * non-zero), after first clearing the 7th bit at 0040:003e.
+ */
+uint8_t floppy_wait_for_interrupt_or_timeout(void)
+{
+ int_disable();
+ for (;;)
+ {
+ uint8_t val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ int_enable();
+ return 0;
+ }
+
+ val8 = read_byte(0x0040, 0x003e);
+ if (val8 & 0x80) {
+ write_byte(0x0040, 0x003e, val8 & 0x7f);
+ return val8;
+ }
+ int_enable_hlt_disable();
+ }
+}
+
+#endif /* !VBOX_WITH_FLOPPY_IRQ_POLLING */
+
+void floppy_reset_controller(uint16_t drive)
+{
+ uint8_t val8;
+
+ // Reset controller
+ val8 = inb(0x03f2);
+ outb(0x03f2, val8 & ~0x04);
+ outb(0x03f2, val8 | 0x04);
+
+ // Wait for controller to come out of reset
+ do {
+ val8 = inb(0x3f4);
+ } while ( (val8 & 0xc0) != 0x80 );
+
+ // Mark media in drive as unknown
+ val8 = read_byte(0x0040, 0x0090 + drive);
+ val8 &= ~0x10;
+ write_byte(0x0040, 0x90 + drive, val8);
+
+}
+
+void floppy_prepare_controller(uint16_t drive)
+{
+ uint8_t val8, dor, prev_reset;
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+
+ // turn on motor of selected drive, DMA & int enabled, normal operation
+ prev_reset = inb(0x03f2) & 0x04;
+ if (drive)
+ dor = 0x20;
+ else
+ dor = 0x10;
+ dor |= 0x0c;
+ dor |= drive;
+ outb(0x03f2, dor);
+
+ // reset the disk motor timeout value of INT 08
+ write_byte(0x0040,0x0040, BX_FLOPPY_ON_CNT);
+
+ // program data rate
+ val8 = read_byte(0x0040, 0x008b);
+ val8 >>= 6;
+ outb(0x03f7, val8);
+
+ // wait for drive readiness
+ do {
+ val8 = inb(0x3f4);
+ } while ( (val8 & 0xc0) != 0x80 );
+
+ if (prev_reset == 0) {
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = read_byte(0x0040, 0x003e);
+ } while ( (val8 & 0x80) == 0 );
+ val8 &= 0x7f;
+ int_disable();
+#else
+ val8 = floppy_wait_for_interrupt(); /* (7th bit cleared in ret val) */
+#endif
+ write_byte(0x0040, 0x003e, val8);
+ }
+}
+
+bx_bool floppy_media_known(uint16_t drive)
+{
+ uint8_t val8;
+ uint16_t media_state_offset;
+
+ val8 = read_byte(0x0040, 0x003e); // diskette recal status
+ if (drive)
+ val8 >>= 1;
+ val8 &= 0x01;
+ if (val8 == 0)
+ return 0;
+
+ media_state_offset = 0x0090;
+ if (drive)
+ media_state_offset += 1;
+
+ val8 = read_byte(0x0040, media_state_offset);
+ val8 = (val8 >> 4) & 0x01;
+ if (val8 == 0)
+ return 0;
+
+ // checks passed, return KNOWN
+ return 1;
+}
+
+bx_bool floppy_read_id(uint16_t drive)
+{
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ uint8_t val8;
+#endif
+ int i;
+
+ floppy_prepare_controller(drive);
+
+ // send Read ID command (2 bytes) to controller
+ outb(0x03f5, 0x4a); // 4a: Read ID (MFM)
+ outb(0x03f5, drive); // 0=drive0, 1=drive1, head always 0
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+#else
+ floppy_wait_for_interrupt();
+#endif
+
+ // read 7 return status bytes from controller
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0)
+ return 0;
+ else
+ return 1;
+}
+
+bx_bool floppy_drive_recal(uint16_t drive)
+{
+ uint8_t val8;
+ uint16_t curr_cyl_offset;
+
+ floppy_prepare_controller(drive);
+
+ // send Recalibrate command (2 bytes) to controller
+ outb(0x03f5, 0x07); // 07: Recalibrate
+ outb(0x03f5, drive); // 0=drive0, 1=drive1
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0, and calibrated bit
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+#else
+ val8 = floppy_wait_for_interrupt(); /* (7th bit cleared in ret val) */
+
+ // set 40:3e bit 7 to 0, and calibrated bit
+#endif
+ if (drive) {
+ val8 |= 0x02; // Drive 1 calibrated
+ curr_cyl_offset = 0x0095;
+ } else {
+ val8 |= 0x01; // Drive 0 calibrated
+ curr_cyl_offset = 0x0094;
+ }
+ write_byte(0x0040, 0x003e, val8);
+ write_byte(0x0040, curr_cyl_offset, 0); // current cylinder is 0
+
+ return 1;
+}
+
+
+bx_bool floppy_media_sense(uint16_t drive)
+{
+ bx_bool retval;
+ uint16_t media_state_offset;
+ uint8_t drive_type, config_data, media_state;
+
+ if (floppy_drive_recal(drive) == 0)
+ return 0;
+
+ // Try the diskette data rates in the following order:
+ // 1 Mbps -> 500 Kbps -> 300 Kbps -> 250 Kbps
+ // The 1 Mbps rate is only tried for 2.88M drives.
+
+ // ** config_data **
+ // Bitfields for diskette media control:
+ // Bit(s) Description (Table M0028)
+ // 7-6 last data rate set by controller
+ // 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
+ // 5-4 last diskette drive step rate selected
+ // 00=0Ch, 01=0Dh, 10=0Eh, 11=0Ah
+ // 3-2 {data rate at start of operation}
+ // 1-0 reserved
+
+ // ** media_state **
+ // Bitfields for diskette drive media state:
+ // Bit(s) Description (Table M0030)
+ // 7-6 data rate
+ // 00=500kbps, 01=300kbps, 10=250kbps, 11=1Mbps
+ // 5 double stepping required (e.g. 360kB in 1.2MB)
+ // 4 media type established
+ // 3 drive capable of supporting 4MB media
+ // 2-0 on exit from BIOS, contains
+ // 000 trying 360kB in 360kB
+ // 001 trying 360kB in 1.2MB
+ // 010 trying 1.2MB in 1.2MB
+ // 011 360kB in 360kB established
+ // 100 360kB in 1.2MB established
+ // 101 1.2MB in 1.2MB established
+ // 110 reserved
+ // 111 all other formats/drives
+
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ if ( drive_type == 1 ) {
+ // 360K 5.25" drive
+ config_data = 0x00; // 0000 0000
+ media_state = 0x15; // 0001 0101
+ retval = 1;
+ }
+ else if ( drive_type == 2 ) {
+ // 1.2 MB 5.25" drive
+ config_data = 0x00; // 0000 0000
+ media_state = 0x35; // 0011 0101 // need double stepping??? (bit 5)
+ retval = 1;
+ }
+ else if ( drive_type == 3 ) {
+ // 720K 3.5" drive
+ config_data = 0x00; // 0000 0000 ???
+ media_state = 0x17; // 0001 0111
+ retval = 1;
+ }
+ else if ( drive_type == 4 ) {
+ // 1.44 MB 3.5" drive
+ config_data = 0x00; // 0000 0000
+ media_state = 0x17; // 0001 0111
+ retval = 1;
+ }
+ else if ( drive_type == 5 ) {
+ // 2.88 MB 3.5" drive
+ config_data = 0xCC; // 1100 1100
+ media_state = 0xD7; // 1101 0111
+ retval = 1;
+ }
+ // Extended floppy size uses special cmos setting
+ else if ( drive_type == 14 || drive_type == 15 ) {
+ // 15.6 MB 3.5" (fake) || 63.5 MB 3.5" (fake) - report same as 2.88 MB.
+ config_data = 0xCC; // 1100 1100
+ media_state = 0xD7; // 1101 0111
+ retval = 1;
+ }
+ else {
+ // not recognized
+ config_data = 0x00; // 0000 0000
+ media_state = 0x00; // 0000 0000
+ retval = 0;
+ }
+
+ write_byte(0x0040, 0x008B, config_data);
+ while (!floppy_read_id(drive)) {
+ if ((config_data & 0xC0) == 0x80) {
+ // If even 250 Kbps failed, we can't do much
+ break;
+ }
+ switch (config_data & 0xC0) {
+ case 0xC0: // 1 Mbps
+ config_data = config_data & 0x3F | 0x00;
+ break;
+ case 0x00: // 500 Kbps
+ config_data = config_data & 0x3F | 0x40;
+ break;
+ case 0x40: // 300 Kbps
+ config_data = config_data & 0x3F | 0x80;
+ break;
+ }
+ write_byte(0x0040, 0x008B, config_data);
+ }
+
+ if (drive == 0)
+ media_state_offset = 0x0090;
+ else
+ media_state_offset = 0x0091;
+ write_byte(0x0040, 0x008B, config_data);
+ write_byte(0x0040, media_state_offset, media_state);
+
+ return retval;
+}
+
+
+bx_bool floppy_drive_exists(uint16_t drive)
+{
+ uint8_t drive_type;
+
+ // check CMOS to see if drive exists
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ return drive_type != 0;
+}
+
+/// @todo put in a header
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si // not used
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp // not used
+#define ELDX r.gr.u.r16.sp
+#define DS r.ds // not used
+#define ES r.es
+#define FLAGS r.ra.flags.u.r16.flags
+
+void BIOSCALL int13_diskette_function(disk_regs_t r)
+{
+ uint8_t drive, num_sectors, track, sector, head;
+ uint16_t base_address, base_count, base_es;
+ uint8_t page, mode_register, val8, media_state;
+ uint8_t drive_type, num_floppies;
+ uint16_t last_addr;
+ int i;
+
+ BX_DEBUG_INT13_FL("%s: AX=%04x BX=%04x CX=%04x DX=%04x ES=%04x\n", __func__, AX, BX, CX, DX, ES);
+
+ SET_IF(); /* INT 13h always returns with interrupts enabled. */
+
+ switch ( GET_AH() ) {
+ case 0x00: // diskette controller reset
+ BX_DEBUG_INT13_FL("floppy f00\n");
+ drive = GET_ELDL();
+ if (drive > 1) {
+ SET_AH(1); // invalid param
+ set_diskette_ret_status(1);
+ SET_CF();
+ return;
+ }
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ if (drive_type == 0) {
+ SET_AH(0x80); // drive not responding
+ set_diskette_ret_status(0x80);
+ SET_CF();
+ return;
+ }
+
+ // force re-calibration etc.
+ write_byte(0x0040, 0x003e, 0);
+
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ CLEAR_CF(); // successful
+ set_diskette_current_cyl(drive, 0); // current cylinder
+ return;
+
+ case 0x01: // Read Diskette Status
+ CLEAR_CF();
+ val8 = read_byte(0x0000, 0x0441);
+ SET_AH(val8);
+ if (val8) {
+ SET_CF();
+ }
+ return;
+
+ case 0x02: // Read Diskette Sectors
+ case 0x03: // Write Diskette Sectors
+ case 0x04: // Verify Diskette Sectors
+ num_sectors = GET_AL();
+ track = GET_CH();
+ sector = GET_CL();
+ head = GET_DH();
+ drive = GET_ELDL();
+
+ if ( (drive > 1) || (head > 1) ||
+ (num_sectors == 0) || (num_sectors > 72) ) {
+ BX_INFO("%s: drive>1 || head>1 ...\n", __func__);
+ SET_AH(1);
+ set_diskette_ret_status(1);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ BX_DEBUG_INT13_FL("failed (not ready)\n");
+ SET_AH(0x80); // not responding
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ // see if media in drive, and type is known
+ if (floppy_media_known(drive) == 0) {
+ if (floppy_media_sense(drive) == 0) {
+ BX_DEBUG_INT13_FL("media not found\n");
+ SET_AH(0x0C); // Media type not found
+ set_diskette_ret_status(0x0C);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+ }
+
+ if (GET_AH() == 0x02) {
+ // Read Diskette Sectors
+
+ //-----------------------------------
+ // set up DMA controller for transfer
+ //-----------------------------------
+
+ // es:bx = pointer to where to place information from diskette
+ // port 04: DMA-1 base and current address, channel 2
+ // port 05: DMA-1 base and current count, channel 2
+ /// @todo merge/factor out pointer normalization
+ page = (ES >> 12); // upper 4 bits
+ base_es = (ES << 4); // lower 16bits contributed by ES
+ base_address = base_es + BX; // lower 16 bits of address
+ // contributed by ES:BX
+ if ( base_address < base_es ) {
+ // in case of carry, adjust page by 1
+ page++;
+ }
+ base_count = (num_sectors * 512) - 1;
+
+ // check for 64K boundary overrun
+ last_addr = base_address + base_count;
+ if (last_addr < base_address) {
+ SET_AH(0x09);
+ set_diskette_ret_status(0x09);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ BX_DEBUG_INT13_FL("masking DMA-1 c2\n");
+ outb(0x000a, 0x06);
+
+ BX_DEBUG_INT13_FL("clear flip-flop\n");
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0004, base_address);
+ outb(0x0004, base_address>>8);
+ BX_DEBUG_INT13_FL("clear flip-flop\n");
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0005, base_count);
+ outb(0x0005, base_count>>8);
+ BX_DEBUG_INT13_FL("xfer buf %x bytes at %x:%x\n",
+ base_count + 1, page, base_address);
+
+ // port 0b: DMA-1 Mode Register
+ mode_register = 0x46; // single mode, increment, autoinit disable,
+ // transfer type=write, channel 2
+ BX_DEBUG_INT13_FL("setting mode register\n");
+ outb(0x000b, mode_register);
+
+ BX_DEBUG_INT13_FL("setting page register\n");
+ // port 81: DMA-1 Page Register, channel 2
+ outb(0x0081, page);
+
+ BX_DEBUG_INT13_FL("unmasking DMA-1 c2\n");
+ outb(0x000a, 0x02); // unmask channel 2
+
+ //--------------------------------------
+ // set up floppy controller for transfer
+ //--------------------------------------
+ floppy_prepare_controller(drive);
+
+ // send read-normal-data command (9 bytes) to controller
+ outb(0x03f5, 0xe6); // e6: read normal data
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, track);
+ outb(0x03f5, head);
+ outb(0x03f5, sector);
+ outb(0x03f5, 2); // 512 byte sector size
+ outb(0x03f5, sector + num_sectors - 1); // last sector to read on track
+ outb(0x03f5, 0); // Gap length
+ outb(0x03f5, 0xff); // Gap length
+ BX_DEBUG_INT13_FL("read initiated\n");
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1 or timeout (latter isn't armed so it won't happen)
+ do {
+ val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ BX_DEBUG_INT13_FL("failed (not ready)\n");
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+
+#else
+ val8 = floppy_wait_for_interrupt_or_timeout();
+ if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
+ BX_DEBUG_INT13_FL("failed (not ready)\n");
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+#endif
+
+ // check port 3f4 for accessibility to status bytes
+ val8 = inb(0x3f4);
+ if ( (val8 & 0xc0) != 0xc0 )
+ BX_PANIC("%s: ctrl not ready\n", __func__);
+
+ // read 7 return status bytes from controller and store in BDA
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) {
+ BX_DEBUG_INT13_FL("failed (FDC failure)\n");
+ floppy_reset_controller(drive);
+ SET_AH(0x20);
+ set_diskette_ret_status(0x20);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+#ifdef DMA_WORKAROUND
+ rep_movsw(ES :> BX, ES :> BX, num_sectors * 512 / 2);
+#endif
+ BX_DEBUG_INT13_FL("success!\n");
+ // ??? should track be new val from return_status[3] ?
+ set_diskette_current_cyl(drive, track);
+ // AL = number of sectors read (same value as passed)
+ SET_AH(0x00); // success
+ CLEAR_CF(); // success
+ return;
+ } else if (GET_AH() == 0x03) {
+ // Write Diskette Sectors
+
+ //-----------------------------------
+ // set up DMA controller for transfer
+ //-----------------------------------
+
+ // es:bx = pointer to where to place information from diskette
+ // port 04: DMA-1 base and current address, channel 2
+ // port 05: DMA-1 base and current count, channel 2
+ /// @todo merge/factor out pointer normalization
+ page = (ES >> 12); // upper 4 bits
+ base_es = (ES << 4); // lower 16bits contributed by ES
+ base_address = base_es + BX; // lower 16 bits of address
+ // contributed by ES:BX
+ if ( base_address < base_es ) {
+ // in case of carry, adjust page by 1
+ page++;
+ }
+ base_count = (num_sectors * 512) - 1;
+
+ // check for 64K boundary overrun
+ last_addr = base_address + base_count;
+ if (last_addr < base_address) {
+ SET_AH(0x09);
+ set_diskette_ret_status(0x09);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ BX_DEBUG_INT13_FL("masking DMA-1 c2\n");
+ outb(0x000a, 0x06);
+
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0004, base_address);
+ outb(0x0004, base_address>>8);
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0005, base_count);
+ outb(0x0005, base_count>>8);
+ BX_DEBUG_INT13_FL("xfer buf %x bytes at %x:%x\n",
+ base_count, page, base_address);
+
+ // port 0b: DMA-1 Mode Register
+ mode_register = 0x4a; // single mode, increment, autoinit disable,
+ // transfer type=read, channel 2
+ outb(0x000b, mode_register);
+
+ // port 81: DMA-1 Page Register, channel 2
+ outb(0x0081, page);
+
+ BX_DEBUG_INT13_FL("unmasking DMA-1 c2\n");
+ outb(0x000a, 0x02);
+
+ //--------------------------------------
+ // set up floppy controller for transfer
+ //--------------------------------------
+ floppy_prepare_controller(drive);
+
+ // send write-normal-data command (9 bytes) to controller
+ outb(0x03f5, 0xc5); // c5: write normal data
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, track);
+ outb(0x03f5, head);
+ outb(0x03f5, sector);
+ outb(0x03f5, 2); // 512 byte sector size
+ outb(0x03f5, sector + num_sectors - 1); // last sector to write on track
+ outb(0x03f5, 0); // Gap length
+ outb(0x03f5, 0xff); // Gap length
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors written
+ SET_CF(); // error occurred
+ return;
+ }
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop @todo: why??
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+#else
+ val8 = floppy_wait_for_interrupt_or_timeout();
+ if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_AL(0); // no sectors written
+ SET_CF(); // error occurred
+ return;
+ }
+#endif
+
+ // check port 3f4 for accessibility to status bytes
+ val8 = inb(0x3f4);
+ if ( (val8 & 0xc0) != 0xc0 )
+ BX_PANIC("%s: ctrl not ready\n", __func__);
+
+ // read 7 return status bytes from controller and store in BDA
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) {
+ if ((read_byte(0x0040, 0x0042 + 1) & 0x02) != 0) {
+ // diskette not writable.
+ // AH=status code=0x03 (tried to write on write-protected disk)
+ // AL=number of sectors written=0
+ AX = 0x0300;
+ } else {
+ // Some other problem occurred.
+ AX = 0x0100;
+ }
+ SET_CF();
+ return;
+ }
+
+ // ??? should track be new val from return_status[3] ?
+ set_diskette_current_cyl(drive, track);
+ // AL = number of sectors read (same value as passed)
+ SET_AH(0x00); // success
+ CLEAR_CF(); // success
+ return;
+ } else { // if (ah == 0x04)
+ // Verify Diskette Sectors
+
+ // ??? should track be new val from return_status[3] ?
+ set_diskette_current_cyl(drive, track);
+ // AL = number of sectors verified (same value as passed)
+ CLEAR_CF(); // success
+ SET_AH(0x00); // success
+ return;
+ }
+ break;
+
+ case 0x05: // format diskette track
+ BX_DEBUG_INT13_FL("floppy f05\n");
+
+ num_sectors = GET_AL();
+ track = GET_CH();
+ head = GET_DH();
+ drive = GET_ELDL();
+
+ if ((drive > 1) || (head > 1) || (track > 79) ||
+ (num_sectors == 0) || (num_sectors > 18)) {
+ SET_AH(1);
+ set_diskette_ret_status(1);
+ SET_CF(); // error occurred
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ SET_AH(0x80); // drive not responding
+ set_diskette_ret_status(0x80);
+ SET_CF(); // error occurred
+ return;
+ }
+
+ // see if media in drive, and type is known
+ if (floppy_media_known(drive) == 0) {
+ if (floppy_media_sense(drive) == 0) {
+ SET_AH(0x0C); // Media type not found
+ set_diskette_ret_status(0x0C);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+ }
+
+ // set up DMA controller for transfer
+ /// @todo merge/factor out pointer normalization
+ page = (ES >> 12); // upper 4 bits
+ base_es = (ES << 4); // lower 16bits contributed by ES
+ base_address = base_es + BX; // lower 16 bits of address
+ // contributed by ES:BX
+ if ( base_address < base_es ) {
+ // in case of carry, adjust page by 1
+ page++;
+ }
+ base_count = (num_sectors * 4) - 1;
+
+ // check for 64K boundary overrun
+ last_addr = base_address + base_count;
+ if (last_addr < base_address) {
+ SET_AH(0x09);
+ set_diskette_ret_status(0x09);
+ SET_AL(0); // no sectors read
+ SET_CF(); // error occurred
+ return;
+ }
+
+ outb(0x000a, 0x06);
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0004, base_address);
+ outb(0x0004, base_address>>8);
+ outb(0x000c, 0x00); // clear flip-flop
+ outb(0x0005, base_count);
+ outb(0x0005, base_count>>8);
+ mode_register = 0x4a; // single mode, increment, autoinit disable,
+ // transfer type=read, channel 2
+ outb(0x000b, mode_register);
+ // port 81: DMA-1 Page Register, channel 2
+ outb(0x0081, page);
+ outb(0x000a, 0x02);
+
+ // set up floppy controller for transfer
+ floppy_prepare_controller(drive);
+
+ // send seek command to controller
+ outb(0x03f5, 0x0f); // 0f: seek
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, track);
+
+ // send format-track command (6 bytes) to controller
+ outb(0x03f5, 0x4d); // 4d: format track
+ outb(0x03f5, (head << 2) | drive); // HD DR1 DR2
+ outb(0x03f5, 2); // 512 byte sector size
+ outb(0x03f5, num_sectors); // number of sectors per track
+ outb(0x03f5, 0); // Gap length
+ outb(0x03f5, 0xf6); // Fill byte
+
+#ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
+ // turn on interrupts
+ int_enable();
+
+ // wait on 40:3e bit 7 to become 1
+ do {
+ val8 = read_byte(0x0040, 0x0040);
+ if (val8 == 0) {
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_CF(); // error occurred
+ return;
+ }
+ val8 = (read_byte(0x0040, 0x003e) & 0x80);
+ } while ( val8 == 0 );
+
+ val8 = 0; // separate asm from while() loop
+ // turn off interrupts
+ int_disable();
+
+ // set 40:3e bit 7 to 0
+ val8 = read_byte(0x0040, 0x003e);
+ val8 &= 0x7f;
+ write_byte(0x0040, 0x003e, val8);
+#else
+ val8 = floppy_wait_for_interrupt_or_timeout();
+ if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
+ floppy_reset_controller(drive);
+ SET_AH(0x80); // drive not ready (timeout)
+ set_diskette_ret_status(0x80);
+ SET_CF(); // error occurred
+ return;
+ }
+#endif
+
+ // check port 3f4 for accessibility to status bytes
+ val8 = inb(0x3f4);
+ if ( (val8 & 0xc0) != 0xc0 )
+ BX_PANIC("%s: ctrl not ready\n", __func__);
+
+ // read 7 return status bytes from controller and store in BDA
+ for (i = 0; i < 7; ++i)
+ write_byte(0x0040, 0x0042 + i, inb(0x3f5));
+
+ if ((read_byte(0x0040, 0x0042 + 0) & 0xc0) != 0) {
+ if ((read_byte(0x0040, 0x0042 + 1) & 0x02) != 0) {
+ // diskette not writable.
+ // AH=status code=0x03 (tried to write on write-protected disk)
+ // AL=number of sectors written=0
+ AX = 0x0300;
+ SET_CF();
+ return;
+ } else {
+ BX_PANIC("%s: write error\n", __func__);
+ }
+ }
+
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ set_diskette_current_cyl(drive, 0);
+ CLEAR_CF(); // successful
+ return;
+
+
+ case 0x08: // read diskette drive parameters
+ BX_DEBUG_INT13_FL("floppy f08\n");
+ drive = GET_ELDL();
+
+ if (drive > 1) {
+ AX = 0;
+ BX = 0;
+ CX = 0;
+ DX = 0;
+ ES = 0;
+ DI = 0;
+ SET_DL(num_floppies);
+ SET_CF();
+ return;
+ }
+
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ num_floppies = 0;
+ if (drive_type & 0xf0)
+ num_floppies++;
+ if (drive_type & 0x0f)
+ num_floppies++;
+
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+
+ SET_BH(0);
+ SET_BL(drive_type);
+ SET_AH(0);
+ SET_AL(0);
+ SET_DL(num_floppies);
+ SET_DH(1); // max head #
+
+ switch (drive_type) {
+ case 0: // none
+ CX = 0;
+ SET_DH(0); // max head #
+ break;
+
+ case 1: // 360KB, 5.25"
+ CX = 0x2709; // 40 tracks, 9 sectors
+ break;
+
+ case 2: // 1.2MB, 5.25"
+ CX = 0x4f0f; // 80 tracks, 15 sectors
+ break;
+
+ case 3: // 720KB, 3.5"
+ CX = 0x4f09; // 80 tracks, 9 sectors
+ break;
+
+ case 4: // 1.44MB, 3.5"
+ CX = 0x4f12; // 80 tracks, 18 sectors
+ break;
+
+ case 5: // 2.88MB, 3.5"
+ CX = 0x4f24; // 80 tracks, 36 sectors
+ break;
+
+ case 14: // 15.6 MB 3.5" (fake)
+ CX = 0xfe3f; // 255 tracks, 63 sectors
+ break;
+
+ case 15: // 63.5 MB 3.5" (fake)
+ CX = 0xfeff; // 255 tracks, 255 sectors - This works because the cylinder
+ break; // and sectors limits/encoding aren't checked by the BIOS
+ // due to copy protection schemes and such stuff.
+
+ default: // ?
+ BX_PANIC("%s: bad floppy type\n", __func__);
+ }
+
+ /* set es & di to point to 11 byte diskette param table in ROM */
+ ES = 0xF000; /// @todo any way to make this relocatable?
+ DI = get_floppy_dpt(drive_type);
+ CLEAR_CF(); // success
+ /* disk status not changed upon success */
+ return;
+
+ case 0x15: // read diskette drive type
+ BX_DEBUG_INT13_FL("floppy f15\n");
+ drive = GET_ELDL();
+ if (drive > 1) {
+ SET_AH(0); // only 2 drives supported
+ // set_diskette_ret_status here ???
+ SET_CF();
+ return;
+ }
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+ CLEAR_CF(); // successful, not present
+ if (drive_type==0) {
+ SET_AH(0); // drive not present
+ } else if (drive_type > 1) {
+ SET_AH(2); // drive present, supports change line
+ } else {
+ SET_AH(1); // drive present, does not support change line
+ }
+
+ return;
+
+ case 0x16: // get diskette change line status
+ BX_DEBUG_INT13_FL("floppy f16\n");
+ drive = GET_ELDL();
+ if (drive > 1) {
+ SET_AH(0x01); // invalid drive
+ set_diskette_ret_status(0x01);
+ SET_CF();
+ return;
+ }
+
+ SET_AH(0x06); // change line not supported
+ set_diskette_ret_status(0x06);
+ SET_CF();
+ return;
+
+ case 0x17: // set diskette type for format(old)
+ BX_DEBUG_INT13_FL("floppy f17\n");
+ // NOTE: 1.44M diskette not supported by this function, use INT14h/18h instead.
+ // Drive number (0 or 1) values allowed
+ drive = GET_ELDL();
+
+ // Format type (AL)
+ // 00 - NOT USED
+ // 01 - DISKETTE 360K IN 360K DRIVE
+ // 02 - DISKETTE 360K IN 1.2M DRIVE
+ // 03 - DISKETTE 1.2M IN 1.2M DRIVE
+ // 04 - DISKETTE 720K IN 720K DRIVE
+ val8 = GET_AL();
+
+ BX_DEBUG_INT13_FL("floppy f17 - drive: %d, format type: %d\n", drive, val8);
+
+ if (drive > 1) {
+ SET_AH(0x01); // invalid drive
+ set_diskette_ret_status(0x01); // bad parameter
+ SET_CF();
+ return;
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ SET_AH(0x80); // not responding/time out
+ set_diskette_ret_status(0x80);
+ SET_CF();
+ return;
+ }
+
+ // Get current drive state. Set 'base_address' to media status offset address
+ base_address = (drive) ? 0x0091 : 0x0090;
+ media_state = read_byte(0x0040, base_address);
+
+ // Mask out (clear) bits 4-7 (4:media type established, 5:double stepping, 6-7:data rate)
+ media_state &= 0x0f;
+
+ switch (val8) {
+ case 1:
+ // 360K media in 360K drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ break;
+ case 2:
+ // 360K media in 1.2M drive
+ media_state |= 0x70; // 0111 0000 (media type established, double stepping, 300 kbps)
+ break;
+ case 3:
+ // 1.2M media in 1.2M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ break;
+ case 4:
+ // 720K media in 720K drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ break;
+ default:
+ // bad parameter
+ SET_AH(0x01); // invalid format mode parameter
+ set_diskette_ret_status(0x01);
+ SET_CF();
+ return;
+ }
+
+ // Update media status
+ write_byte(0x0040, base_address, media_state);
+ BX_DEBUG_INT13_FL("floppy f17 - media status set to: %02x\n", media_state);
+
+ // return success!
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ CLEAR_CF();
+ return;
+
+ case 0x18: // set diskette type for format(new)
+ BX_DEBUG_INT13_FL("floppy f18\n");
+ // Set Media Type for Format. Verifies that the device supports a specific geometry.
+ // Unlike INT13h/17h, this service supports higher capacity drives (1.44M and 2.88M).
+ // Drive number (0 or 1) values allowed
+ drive = GET_ELDL();
+
+ val8 = GET_CL();
+ num_sectors = val8 & 0x3f; // max sector number per cylinder
+ track = ((val8 >> 6) << 8) + GET_CH(); // max cylinder number (max cylinders - 1)
+
+ BX_DEBUG_INT13_FL("floppy f18 - drive: %d, max cylinder/track number: %d, sectors-per-tracks: %d\n",
+ drive, track, num_sectors);
+
+ if (drive > 1) {
+ SET_AH(0x01); // invalid drive
+ set_diskette_ret_status(0x01);
+ SET_CF();
+ return;
+ }
+
+ // see if drive exists
+ if (floppy_drive_exists(drive) == 0) {
+ SET_AH(0x80); // not responding/time out
+ set_diskette_ret_status(0x80);
+ SET_CF();
+ return;
+ }
+
+ // see if media in drive, and media type is known
+ if (floppy_media_known(drive) == 0) {
+ if (floppy_media_sense(drive) == 0) {
+ SET_AH(0x0C); // drive/media type unknown
+ set_diskette_ret_status(0x0C);
+ SET_CF();
+ return;
+ }
+ }
+
+ /// @todo break out drive type determination
+ drive_type = inb_cmos(0x10);
+ if (drive == 0)
+ drive_type >>= 4;
+ else
+ drive_type &= 0x0f;
+
+ // Get current drive state. Set 'base_address' to media status offset address
+ base_address = (drive) ? 0x0091 : 0x0090;
+ media_state = read_byte(0x0040, base_address);
+
+ // Mask out (clear) bits 4-7 (4:media type established, 5:double stepping, 6-7:data rate)
+ media_state &= 0x0f;
+
+ switch (drive_type) {
+ case 1: // 360KB, 5.25"
+ if (track == 39 && num_sectors == 9)
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+
+ break;
+ case 2: // 1.2MB, 5.25"
+ if (track == 39 && num_sectors == 9) { // 360K disk in 1.2M drive
+ media_state |= 0x70; // 0111 0000 (media type established, double stepping, 300 kbps)
+ } else if (track == 79 && num_sectors == 15) { // 1.2M disk in 1.2M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ }
+ break;
+ case 3: // 720KB, 3.5"
+ if (track == 79 && num_sectors == 9)
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+
+ break;
+ case 4: // 1.44MB, 3.5"
+ if (track == 79) {
+ if (num_sectors == 9) { // 720K disk in 1.44M drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ } else if (num_sectors == 18) { // 1.44M disk in 1.44M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ }
+ }
+ break;
+ case 5: // 2.88MB, 3.5"
+ if (track == 79) {
+ if (num_sectors == 9) { // 720K disk in 2.88M drive
+ media_state |= 0x90; // 1001 0000 (media type established, 250 kbps)
+ } else if (num_sectors == 18) { // 1.44M disk in 2.88M drive
+ media_state |= 0x10; // 0001 0000 (media type established, 500 kbps)
+ } else if (num_sectors == 36) { // 2.88M disk in 2.88M drive
+ media_state |= 0xD0; // 1101 0000 (media type established, 1 Mbps)
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ // Error if bit 4 (media type established) has not just been set above.
+ if (((media_state >> 4) & 0x01) == 0) {
+ // Error - assume requested tracks/sectors-per-track not supported
+ // for current drive type - or drive type is unknown!
+ SET_AH(0x0C);
+ set_diskette_ret_status(0x0C);
+ SET_CF();
+ return;
+ }
+
+ // Update media status
+ write_byte(0x0040, base_address, media_state);
+
+ // set es & di to point to 11 byte diskette param table in ROM
+ ES = 0xF000; /// @todo any way to make this relocatable?
+ DI = get_floppy_dpt(drive_type);
+
+ // return success!
+ SET_AH(0);
+ set_diskette_ret_status(0);
+ CLEAR_CF();
+ return;
+
+ default:
+ BX_INFO("%s: unsupported AH=%02x\n", __func__, GET_AH());
+
+ // if ( (ah==0x20) || ((ah>=0x41) && (ah<=0x49)) || (ah==0x4e) ) {
+ SET_AH(0x01); // ???
+ set_diskette_ret_status(1);
+ SET_CF();
+ return;
+ // }
+ }
+}
+
+#else // #if BX_SUPPORT_FLOPPY
+
+void BIOSCALL int13_diskette_function(disk_regs_t r)
+{
+ uint8_t val8;
+
+ switch ( GET_AH() ) {
+
+ case 0x01: // Read Diskette Status
+ CLEAR_CF();
+ val8 = read_byte(0x0000, 0x0441);
+ SET_AH(val8);
+ if (val8) {
+ SET_CF();
+ }
+ return;
+
+ default:
+ SET_CF();
+ write_byte(0x0000, 0x0441, 0x01);
+ SET_AH(0x01);
+ }
+}
+
+#endif // #if BX_SUPPORT_FLOPPY
+
+/* Avoid saving general registers already saved by caller (PUSHA). */
+#pragma aux int13_diskette_function modify [di si cx dx bx];
diff --git a/src/VBox/Devices/PC/BIOS/floppyt.c b/src/VBox/Devices/PC/BIOS/floppyt.c
new file mode 100644
index 00000000..4b9a2792
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/floppyt.c
@@ -0,0 +1,104 @@
+/* $Id: floppyt.c $ */
+/** @file
+ * Floppy drive tables.
+ */
+
+/*
+ * Copyright (C) 2011-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+/**
+ * Extended DPT (Disk Parameter Table) structure.
+ */
+typedef struct
+{
+ uint8_t spec1; /* First SPECIFY byte. */
+ uint8_t spec2; /* Second SPECIFY byte. */
+ uint8_t mot_wait; /* Motor wait time after operation. */
+ uint8_t ss_code; /* Sector size code. */
+ uint8_t eot; /* End of Track (ID of last sector). */
+ uint8_t gap; /* Gap length. */
+ uint8_t dtl; /* Data length. */
+ uint8_t fmt_gap; /* Gap length for format. */
+ uint8_t fmt_fill; /* Format fill byte. */
+ uint8_t hd_settle; /* Head settle time (msec). */
+ uint8_t mot_start; /* Motor start time (1/8 sec units). */
+ uint8_t max_trk; /* Maximum track number. */
+ uint8_t rate; /* Data transfer rate code. */
+} dpt_ext;
+
+ct_assert(sizeof(dpt_ext) == 13);
+
+/* Motor spin-up wait time in BIOS ticks (~2 seconds). */
+#define MOTOR_WAIT 0x25
+
+/* Data rates as stored in the DPT */
+#define RATE_250K 0x80
+#define RATE_300K 0x40
+#define RATE_500K 0x00
+#define RATE_1M 0xC0
+
+/* In the 13-entry DPT, 7 entries are constant. Use a macro to set those. */
+#define MAKE_DPT_ENTRY(sp1, eot, gap, fgp, mxt, dtr) \
+ { sp1, 2, MOTOR_WAIT, 2, eot, gap, 0xFF, fgp, 0xF6, 15, 8, mxt, dtr }
+
+dpt_ext fd_parm[] = {
+ MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 39, RATE_250K), /* 360K disk/360K drive */
+ MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 39, RATE_300K), /* 360K disk/1.2M drive */
+ MAKE_DPT_ENTRY(0xDF, 15, 0x1B, 0x54, 79, RATE_500K), /* 1.2M disk */
+ MAKE_DPT_ENTRY(0xDF, 9, 0x2A, 0x50, 79, RATE_250K), /* 720K disk */
+ MAKE_DPT_ENTRY(0xAF, 18, 0x1B, 0x6C, 79, RATE_500K), /* 1.44M disk */
+ MAKE_DPT_ENTRY(0xAF, 36, 0x1B, 0x54, 79, RATE_1M), /* 2.88M disk */
+ MAKE_DPT_ENTRY(0xAF, 255, 0x1B, 0x54, 255, RATE_500K) /* Fake mega-disk */
+};
+
+typedef struct {
+ uint8_t type; /* Drive type. */
+ uint8_t dpt_entry; /* Index of entry in fd_parm. */
+} fd_map_entry;
+
+/* Drive types as stored in the CMOS. Must match DevPCBios! */
+#define FDRV_360K 1
+#define FDRV_1_2M 2
+#define FDRV_720K 3
+#define FDRV_1_44M 4
+#define FDRV_2_88M 5
+#define FDRV_15M 14
+#define FDRV_63M 15
+
+/* A table mapping (CMOS) drive types to DPT entries. */
+fd_map_entry fd_map[] = {
+ { FDRV_360K, 0 },
+ { FDRV_1_2M, 2 },
+ { FDRV_720K, 3 },
+ { FDRV_1_44M, 4 },
+ { FDRV_2_88M, 5 },
+ { FDRV_15M, 6 },
+ { FDRV_63M, 6 }
+};
+
+/* Find a DPT corresponding to the given drive type. */
+dpt_ext *get_floppy_dpt(uint8_t drv_typ)
+{
+ int i;
+
+ for (i = 0; i < sizeof(fd_map) / sizeof(fd_map[0]); ++i)
+ if (fd_map[i].type == drv_typ)
+ return &fd_parm[fd_map[i].dpt_entry];
+
+ /* As a fallback, return the 1.44M DPT. */
+ return &fd_parm[5];
+}
diff --git a/src/VBox/Devices/PC/BIOS/font8x8.inc b/src/VBox/Devices/PC/BIOS/font8x8.inc
new file mode 100644
index 00000000..8fee2937
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/font8x8.inc
@@ -0,0 +1,133 @@
+; This font comes from the fntcol16.zip package (c) by Joseph Gil
+; found at ftp://ftp.simtel.net/pub/simtelnet/msdos/screen/fntcol16.zip
+; This font is in the public domain
+
+font8x8:
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 07eh, 081h, 0a5h, 081h, 0bdh, 099h, 081h, 07eh
+ db 07eh, 0ffh, 0dbh, 0ffh, 0c3h, 0e7h, 0ffh, 07eh
+ db 06ch, 0feh, 0feh, 0feh, 07ch, 038h, 010h, 000h
+ db 010h, 038h, 07ch, 0feh, 07ch, 038h, 010h, 000h
+ db 038h, 07ch, 038h, 0feh, 0feh, 07ch, 038h, 07ch
+ db 010h, 010h, 038h, 07ch, 0feh, 07ch, 038h, 07ch
+ db 000h, 000h, 018h, 03ch, 03ch, 018h, 000h, 000h
+ db 0ffh, 0ffh, 0e7h, 0c3h, 0c3h, 0e7h, 0ffh, 0ffh
+ db 000h, 03ch, 066h, 042h, 042h, 066h, 03ch, 000h
+ db 0ffh, 0c3h, 099h, 0bdh, 0bdh, 099h, 0c3h, 0ffh
+ db 00fh, 007h, 00fh, 07dh, 0cch, 0cch, 0cch, 078h
+ db 03ch, 066h, 066h, 066h, 03ch, 018h, 07eh, 018h
+ db 03fh, 033h, 03fh, 030h, 030h, 070h, 0f0h, 0e0h
+ db 07fh, 063h, 07fh, 063h, 063h, 067h, 0e6h, 0c0h
+ db 099h, 05ah, 03ch, 0e7h, 0e7h, 03ch, 05ah, 099h
+ db 080h, 0e0h, 0f8h, 0feh, 0f8h, 0e0h, 080h, 000h
+ db 002h, 00eh, 03eh, 0feh, 03eh, 00eh, 002h, 000h
+ db 018h, 03ch, 07eh, 018h, 018h, 07eh, 03ch, 018h
+ db 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h
+ db 07fh, 0dbh, 0dbh, 07bh, 01bh, 01bh, 01bh, 000h
+ db 03eh, 063h, 038h, 06ch, 06ch, 038h, 0cch, 078h
+ db 000h, 000h, 000h, 000h, 07eh, 07eh, 07eh, 000h
+ db 018h, 03ch, 07eh, 018h, 07eh, 03ch, 018h, 0ffh
+ db 018h, 03ch, 07eh, 018h, 018h, 018h, 018h, 000h
+ db 018h, 018h, 018h, 018h, 07eh, 03ch, 018h, 000h
+ db 000h, 018h, 00ch, 0feh, 00ch, 018h, 000h, 000h
+ db 000h, 030h, 060h, 0feh, 060h, 030h, 000h, 000h
+ db 000h, 000h, 0c0h, 0c0h, 0c0h, 0feh, 000h, 000h
+ db 000h, 024h, 066h, 0ffh, 066h, 024h, 000h, 000h
+ db 000h, 018h, 03ch, 07eh, 0ffh, 0ffh, 000h, 000h
+ db 000h, 0ffh, 0ffh, 07eh, 03ch, 018h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
+ db 030h, 078h, 078h, 030h, 030h, 000h, 030h, 000h
+ db 06ch, 06ch, 06ch, 000h, 000h, 000h, 000h, 000h
+ db 06ch, 06ch, 0feh, 06ch, 0feh, 06ch, 06ch, 000h
+ db 030h, 07ch, 0c0h, 078h, 00ch, 0f8h, 030h, 000h
+ db 000h, 0c6h, 0cch, 018h, 030h, 066h, 0c6h, 000h
+ db 038h, 06ch, 038h, 076h, 0dch, 0cch, 076h, 000h
+ db 060h, 060h, 0c0h, 000h, 000h, 000h, 000h, 000h
+ db 018h, 030h, 060h, 060h, 060h, 030h, 018h, 000h
+ db 060h, 030h, 018h, 018h, 018h, 030h, 060h, 000h
+ db 000h, 066h, 03ch, 0ffh, 03ch, 066h, 000h, 000h
+ db 000h, 030h, 030h, 0fch, 030h, 030h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 060h
+ db 000h, 000h, 000h, 0fch, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h
+ db 006h, 00ch, 018h, 030h, 060h, 0c0h, 080h, 000h
+ db 07ch, 0c6h, 0ceh, 0deh, 0f6h, 0e6h, 07ch, 000h
+ db 030h, 070h, 030h, 030h, 030h, 030h, 0fch, 000h
+ db 078h, 0cch, 00ch, 038h, 060h, 0cch, 0fch, 000h
+ db 078h, 0cch, 00ch, 038h, 00ch, 0cch, 078h, 000h
+ db 01ch, 03ch, 06ch, 0cch, 0feh, 00ch, 01eh, 000h
+ db 0fch, 0c0h, 0f8h, 00ch, 00ch, 0cch, 078h, 000h
+ db 038h, 060h, 0c0h, 0f8h, 0cch, 0cch, 078h, 000h
+ db 0fch, 0cch, 00ch, 018h, 030h, 030h, 030h, 000h
+ db 078h, 0cch, 0cch, 078h, 0cch, 0cch, 078h, 000h
+ db 078h, 0cch, 0cch, 07ch, 00ch, 018h, 070h, 000h
+ db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 000h
+ db 000h, 030h, 030h, 000h, 000h, 030h, 030h, 060h
+ db 018h, 030h, 060h, 0c0h, 060h, 030h, 018h, 000h
+ db 000h, 000h, 0fch, 000h, 000h, 0fch, 000h, 000h
+ db 060h, 030h, 018h, 00ch, 018h, 030h, 060h, 000h
+ db 078h, 0cch, 00ch, 018h, 030h, 000h, 030h, 000h
+ db 07ch, 0c6h, 0deh, 0deh, 0deh, 0c0h, 078h, 000h
+ db 030h, 078h, 0cch, 0cch, 0fch, 0cch, 0cch, 000h
+ db 0fch, 066h, 066h, 07ch, 066h, 066h, 0fch, 000h
+ db 03ch, 066h, 0c0h, 0c0h, 0c0h, 066h, 03ch, 000h
+ db 0f8h, 06ch, 066h, 066h, 066h, 06ch, 0f8h, 000h
+ db 0feh, 062h, 068h, 078h, 068h, 062h, 0feh, 000h
+ db 0feh, 062h, 068h, 078h, 068h, 060h, 0f0h, 000h
+ db 03ch, 066h, 0c0h, 0c0h, 0ceh, 066h, 03eh, 000h
+ db 0cch, 0cch, 0cch, 0fch, 0cch, 0cch, 0cch, 000h
+ db 078h, 030h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 01eh, 00ch, 00ch, 00ch, 0cch, 0cch, 078h, 000h
+ db 0e6h, 066h, 06ch, 078h, 06ch, 066h, 0e6h, 000h
+ db 0f0h, 060h, 060h, 060h, 062h, 066h, 0feh, 000h
+ db 0c6h, 0eeh, 0feh, 0feh, 0d6h, 0c6h, 0c6h, 000h
+ db 0c6h, 0e6h, 0f6h, 0deh, 0ceh, 0c6h, 0c6h, 000h
+ db 038h, 06ch, 0c6h, 0c6h, 0c6h, 06ch, 038h, 000h
+ db 0fch, 066h, 066h, 07ch, 060h, 060h, 0f0h, 000h
+ db 078h, 0cch, 0cch, 0cch, 0dch, 078h, 01ch, 000h
+ db 0fch, 066h, 066h, 07ch, 06ch, 066h, 0e6h, 000h
+ db 078h, 0cch, 0e0h, 070h, 01ch, 0cch, 078h, 000h
+ db 0fch, 0b4h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 0cch, 0cch, 0cch, 0cch, 0cch, 0cch, 0fch, 000h
+ db 0cch, 0cch, 0cch, 0cch, 0cch, 078h, 030h, 000h
+ db 0c6h, 0c6h, 0c6h, 0d6h, 0feh, 0eeh, 0c6h, 000h
+ db 0c6h, 0c6h, 06ch, 038h, 038h, 06ch, 0c6h, 000h
+ db 0cch, 0cch, 0cch, 078h, 030h, 030h, 078h, 000h
+ db 0feh, 0c6h, 08ch, 018h, 032h, 066h, 0feh, 000h
+ db 078h, 060h, 060h, 060h, 060h, 060h, 078h, 000h
+ db 0c0h, 060h, 030h, 018h, 00ch, 006h, 002h, 000h
+ db 078h, 018h, 018h, 018h, 018h, 018h, 078h, 000h
+ db 010h, 038h, 06ch, 0c6h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0ffh
+ db 030h, 030h, 018h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 000h, 078h, 00ch, 07ch, 0cch, 076h, 000h
+ db 0e0h, 060h, 060h, 07ch, 066h, 066h, 0dch, 000h
+ db 000h, 000h, 078h, 0cch, 0c0h, 0cch, 078h, 000h
+ db 01ch, 00ch, 00ch, 07ch, 0cch, 0cch, 076h, 000h
+ db 000h, 000h, 078h, 0cch, 0fch, 0c0h, 078h, 000h
+ db 038h, 06ch, 060h, 0f0h, 060h, 060h, 0f0h, 000h
+ db 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 0e0h, 060h, 06ch, 076h, 066h, 066h, 0e6h, 000h
+ db 030h, 000h, 070h, 030h, 030h, 030h, 078h, 000h
+ db 00ch, 000h, 00ch, 00ch, 00ch, 0cch, 0cch, 078h
+ db 0e0h, 060h, 066h, 06ch, 078h, 06ch, 0e6h, 000h
+ db 070h, 030h, 030h, 030h, 030h, 030h, 078h, 000h
+ db 000h, 000h, 0cch, 0feh, 0feh, 0d6h, 0c6h, 000h
+ db 000h, 000h, 0f8h, 0cch, 0cch, 0cch, 0cch, 000h
+ db 000h, 000h, 078h, 0cch, 0cch, 0cch, 078h, 000h
+ db 000h, 000h, 0dch, 066h, 066h, 07ch, 060h, 0f0h
+ db 000h, 000h, 076h, 0cch, 0cch, 07ch, 00ch, 01eh
+ db 000h, 000h, 0dch, 076h, 066h, 060h, 0f0h, 000h
+ db 000h, 000h, 07ch, 0c0h, 078h, 00ch, 0f8h, 000h
+ db 010h, 030h, 07ch, 030h, 030h, 034h, 018h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 0cch, 076h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 078h, 030h, 000h
+ db 000h, 000h, 0c6h, 0d6h, 0feh, 0feh, 06ch, 000h
+ db 000h, 000h, 0c6h, 06ch, 038h, 06ch, 0c6h, 000h
+ db 000h, 000h, 0cch, 0cch, 0cch, 07ch, 00ch, 0f8h
+ db 000h, 000h, 0fch, 098h, 030h, 064h, 0fch, 000h
+ db 01ch, 030h, 030h, 0e0h, 030h, 030h, 01ch, 000h
+ db 018h, 018h, 018h, 000h, 018h, 018h, 018h, 000h
+ db 0e0h, 030h, 030h, 01ch, 030h, 030h, 0e0h, 000h
+ db 076h, 0dch, 000h, 000h, 000h, 000h, 000h, 000h
+ db 000h, 010h, 038h, 06ch, 0c6h, 0c6h, 0feh, 000h
diff --git a/src/VBox/Devices/PC/BIOS/inlines.h b/src/VBox/Devices/PC/BIOS/inlines.h
new file mode 100644
index 00000000..19983373
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/inlines.h
@@ -0,0 +1,247 @@
+/* $Id: inlines.h $ */
+/** @file
+ * Inline routines for Watcom C.
+ */
+
+/*
+ * Copyright (C) 2010-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_inlines_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_inlines_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+extern unsigned inp(unsigned port);
+extern unsigned outp(unsigned port, unsigned value);
+extern unsigned inpw(unsigned port);
+extern unsigned outpw(unsigned port, unsigned value);
+#pragma intrinsic(inp,outp,inpw,outpw)
+#define inb(p) inp(p)
+#define outb(p, v) outp(p, v)
+#define inw(p) inpw(p)
+#define outw(p, v) outpw(p, v)
+
+/* Far byte/word/dword access routines. */
+
+inline uint8_t read_byte(uint16_t seg, uint16_t offset)
+{
+ return( *(seg:>(uint8_t *)offset) );
+}
+
+inline void write_byte(uint16_t seg, uint16_t offset, uint8_t data)
+{
+ *(seg:>(uint8_t *)offset) = data;
+}
+
+inline uint16_t read_word(uint16_t seg, uint16_t offset)
+{
+ return( *(seg:>(uint16_t *)offset) );
+}
+
+inline void write_word(uint16_t seg, uint16_t offset, uint16_t data)
+{
+ *(seg:>(uint16_t *)offset) = data;
+}
+
+inline uint32_t read_dword(uint16_t seg, uint16_t offset)
+{
+ return( *(seg:>(uint32_t *)offset) );
+}
+
+inline void write_dword(uint16_t seg, uint16_t offset, uint32_t data)
+{
+ *(seg:>(uint32_t *)offset) = data;
+}
+
+
+void int_enable(void);
+#pragma aux int_enable = "sti" modify exact [] nomemory;
+
+void int_disable(void);
+#pragma aux int_disable = "cli" modify exact [] nomemory;
+
+void int_enable_hlt_disable(void);
+#pragma aux int_enable_hlt_disable = \
+ "sti" \
+ "hlt" \
+ "cli" \
+ modify exact [] nomemory;
+
+uint16_t int_query(void);
+#pragma aux int_query = \
+ "pushf" \
+ "pop ax" \
+ value [ax] modify exact [ax] nomemory;
+
+void int_restore(uint16_t old_flags);
+#pragma aux int_restore = \
+ "push ax" \
+ "popf" \
+ parm [ax] modify exact [] nomemory;
+
+void halt(void);
+#pragma aux halt = "hlt" modify exact [] nomemory;
+
+void halt_forever(void);
+#pragma aux halt_forever = \
+ "forever:" \
+ "hlt" \
+ "jmp forever" \
+ modify exact [] nomemory aborts;
+
+#ifdef __386__
+
+void rep_movsb(void __far *d, void __far *s, int nbytes);
+#pragma aux rep_movsb = \
+ "push ds" \
+ "mov ds, dx" \
+ "rep movsb" \
+ "pop ds" \
+ parm [es edi] [dx esi] [ecx];
+
+#else
+
+void rep_movsb(void __far *d, void __far *s, int nbytes);
+#pragma aux rep_movsb = \
+ "push ds" \
+ "mov ds, dx" \
+ "rep movsb" \
+ "pop ds" \
+ parm [es di] [dx si] [cx];
+
+#endif
+
+void rep_movsw(void __far *d, void __far *s, int nwords);
+#pragma aux rep_movsw = \
+ "push ds" \
+ "mov ds, dx" \
+ "rep movsw" \
+ "pop ds" \
+ parm [es di] [dx si] [cx];
+
+#ifndef __386__
+
+char __far *rep_insb(char __far *buffer, unsigned nbytes, unsigned port);
+#pragma aux rep_insb = ".286" "rep insb" parm [es di] [cx] [dx] value [es di] modify exact [cx di];
+
+char __far *rep_insw(char __far *buffer, unsigned nwords, unsigned port);
+#pragma aux rep_insw = ".286" "rep insw" parm [es di] [cx] [dx] value [es di] modify exact [cx di];
+
+# if VBOX_BIOS_CPU >= 80386
+char __far *rep_insd(char __far *buffer, unsigned ndwords, unsigned port);
+# pragma aux rep_insd = ".386" "rep insd" parm [es di] [cx] [dx] value [es di] modify exact [cx di];
+# endif
+
+char __far *rep_outsb(char __far *buffer, unsigned nbytes, unsigned port);
+#pragma aux rep_outsb = ".286" "rep outs dx,byte ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
+
+char __far *rep_outsw(char __far *buffer, unsigned nwords, unsigned port);
+#pragma aux rep_outsw = ".286" "rep outs dx,word ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
+
+# if VBOX_BIOS_CPU >= 80386
+char __far *rep_outsd(char __far *buffer, unsigned ndwords, unsigned port);
+# pragma aux rep_outsd = ".386" "rep outs dx,dword ptr es:[si]" parm [es si] [cx] [dx] value [es si] modify exact [cx si];
+# endif
+
+uint16_t swap_16(uint16_t val);
+#pragma aux swap_16 = "xchg ah,al" parm [ax] value [ax] modify exact [ax] nomemory;
+
+uint32_t swap_32(uint32_t val);
+#pragma aux swap_32 = \
+ "xchg ah, al" \
+ "xchg dh, dl" \
+ "xchg ax, dx" \
+ parm [dx ax] value [dx ax] modify exact [dx ax] nomemory;
+
+uint64_t swap_64(uint64_t val);
+#pragma aux swap_64 = \
+ "xchg ah, al" \
+ "xchg bh, bl" \
+ "xchg ch, cl" \
+ "xchg dh, dl" \
+ "xchg ax, dx" \
+ "xchg bx, cx" \
+ parm [ax bx cx dx] value [ax bx cx dx] modify exact [ax bx cx dx] nomemory;
+
+#endif
+
+#if VBOX_BIOS_CPU >= 80386
+
+/* Warning: msr_read/msr_write destroy high bits of 32-bit registers (EAX, ECX, EDX). */
+
+uint64_t msr_read(uint32_t msr);
+#pragma aux msr_read = \
+ ".586" \
+ "shl ecx, 16" \
+ "mov cx, ax" \
+ "rdmsr" \
+ "xchg eax, edx" \
+ "mov bx, ax" \
+ "shr eax, 16" \
+ "mov cx, dx" \
+ "shr edx, 16" \
+ "xchg dx, cx" \
+ parm [cx ax] value [ax bx cx dx] modify [] nomemory;
+
+void msr_write(uint64_t val, uint32_t msr);
+#pragma aux msr_write = \
+ ".586" \
+ "shl eax, 16" \
+ "mov ax, bx" \
+ "xchg dx, cx" \
+ "shl edx, 16" \
+ "mov dx, cx" \
+ "xchg eax, edx" \
+ "mov cx, di" \
+ "shl ecx, 16" \
+ "mov cx, si" \
+ "wrmsr" \
+ parm [ax bx cx dx] [di si] modify [] nomemory;
+
+/* Warning: eflags_read/eflags_write destroy high bits of 32-bit registers (EDX). */
+uint32_t eflags_read( void );
+#pragma aux eflags_read = \
+ ".386" \
+ "pushfd" \
+ "pop edx" \
+ "mov ax, dx" \
+ "shr edx, 16" \
+ value [dx ax] modify [dx ax];
+
+uint32_t eflags_write( uint32_t e_flags );
+#pragma aux eflags_write = \
+ ".386" \
+ "shl edx, 16" \
+ "mov dx, ax" \
+ "push edx" \
+ "popfd" \
+ parm [dx ax] modify [dx ax];
+
+/* Warning cpuid destroys high bits of 32-bit registers (EAX, EBX, ECX, EDX). */
+void cpuid( uint32_t __far cpu_id[4], uint32_t leaf );
+#pragma aux cpuid = \
+ ".586" \
+ "shl edx, 16" \
+ "mov dx, ax" \
+ "mov eax, edx" \
+ "cpuid" \
+ "mov es:[di+0], eax" \
+ "mov es:[di+4], ebx" \
+ "mov es:[di+8], ecx" \
+ "mov es:[di+12], edx" \
+ parm [es di] [dx ax] modify [bx cx dx]
+
+#endif
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_inlines_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/invop.c b/src/VBox/Devices/PC/BIOS/invop.c
new file mode 100644
index 00000000..cee14a27
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/invop.c
@@ -0,0 +1,350 @@
+/* $Id: invop.c $ */
+/** @file
+ * Real mode invalid opcode handler.
+ */
+
+/*
+ * Copyright (C) 2013-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+//#define EMU_386_LOADALL
+
+/* The layout of 286 LOADALL descriptors. */
+typedef struct tag_ldall_desc {
+ uint16_t base_lo; /* Bits 0-15 of segment base. */
+ uint8_t base_hi; /* Bits 16-13 of segment base. */
+ uint8_t attr; /* Segment attributes. */
+ uint16_t limit; /* Segment limit. */
+} ldall_desc;
+
+/* The 286 LOADALL memory buffer at physical address 800h. From
+ * The Undocumented PC.
+ */
+typedef struct tag_ldall_286 {
+ uint16_t unused1[3];
+ uint16_t msw; /* 806h */
+ uint16_t unused2[7];
+ uint16_t tr; /* 816h */
+ uint16_t flags; /* 818h */
+ uint16_t ip; /* 81Ah */
+ uint16_t ldt; /* 81Ch */
+ uint16_t ds; /* 81Eh */
+ uint16_t ss; /* 820h */
+ uint16_t cs; /* 822h */
+ uint16_t es; /* 824h */
+ uint16_t di; /* 826h */
+ uint16_t si; /* 828h */
+ uint16_t bp; /* 82Ah */
+ uint16_t sp; /* 82Ch */
+ uint16_t bx; /* 82Eh */
+ uint16_t dx; /* 830h */
+ uint16_t cx; /* 832h */
+ uint16_t ax; /* 834h */
+ ldall_desc es_desc; /* 836h */
+ ldall_desc cs_desc; /* 83Ch */
+ ldall_desc ss_desc; /* 842h */
+ ldall_desc ds_desc; /* 848h */
+ ldall_desc gdt_desc; /* 84Eh */
+ ldall_desc ldt_desc; /* 854h */
+ ldall_desc idt_desc; /* 85Ah */
+ ldall_desc tss_desc; /* 860h */
+} ldall_286_s;
+ct_assert(sizeof(ldall_286_s) == 0x66);
+
+#ifdef EMU_386_LOADALL
+
+/* The layout of 386 LOADALL descriptors. */
+typedef struct tag_ldal3_desc {
+ uint32_t attr; /* Segment attributes. */
+ uint32_t base; /* Expanded segment base. */
+ uint32_t limit; /* Expanded segment limit. */
+} ldal3_desc;
+
+/* The 386 LOADALL memory buffer pointed to by ES:EDI.
+ */
+typedef struct tag_ldall_386 {
+ uint32_t cr0; /* 00h */
+ uint32_t eflags; /* 04h */
+ uint32_t eip; /* 08h */
+ uint32_t edi; /* 0Ch */
+ uint32_t esi; /* 10h */
+ uint32_t ebp; /* 14h */
+ uint32_t esp; /* 18h */
+ uint32_t ebx; /* 1Ch */
+ uint32_t edx; /* 20h */
+ uint32_t ecx; /* 24h */
+ uint32_t eax; /* 28h */
+ uint32_t dr6; /* 2Ch */
+ uint32_t dr7; /* 30h */
+ uint32_t tr; /* 34h */
+ uint32_t ldt; /* 38h */
+ uint32_t gs; /* 3Ch */
+ uint32_t fs; /* 40h */
+ uint32_t ds; /* 44h */
+ uint32_t ss; /* 4Ch */
+ uint32_t cs; /* 48h */
+ uint32_t es; /* 50h */
+ ldal3_desc tss_desc; /* 54h */
+ ldal3_desc idt_desc; /* 60h */
+ ldal3_desc gdt_desc; /* 6Ch */
+ ldal3_desc ldt_desc; /* 78h */
+ ldal3_desc gs_desc; /* 84h */
+ ldal3_desc fs_desc; /* 90h */
+ ldal3_desc ds_desc; /* 9Ch */
+ ldal3_desc ss_desc; /* A8h */
+ ldal3_desc cs_desc; /* B4h */
+ ldal3_desc es_desc; /* C0h */
+} ldall_386_s;
+ct_assert(sizeof(ldall_386_s) == 0xCC);
+
+#endif
+
+/*
+ * LOADALL emulation assumptions:
+ * - MSW indicates real mode
+ * - Standard real mode CS and SS is to be used
+ * - Segment values of non-RM segments (if any) do not matter
+ * - Standard segment attributes are used
+ */
+
+/* A wrapper for LIDT. */
+void load_idtr(uint32_t base, uint16_t limit);
+#pragma aux load_idtr = \
+ ".286p" \
+ "mov bx, sp" \
+ "lidt fword ptr ss:[bx]"\
+ parm caller reverse [] modify [bx] exact;
+
+/* A wrapper for LGDT. */
+void load_gdtr(uint32_t base, uint16_t limit);
+#pragma aux load_gdtr = \
+ ".286p" \
+ "mov bx, sp" \
+ "lgdt fword ptr ss:[bx]"\
+ parm caller reverse [] modify [bx] exact;
+
+/* Load DS/ES as real-mode segments. May be overwritten later.
+ * NB: Loads SS with 80h to address the LOADALL buffer. Must
+ * not touch CX!
+ */
+void load_rm_segs(int seg_flags);
+#pragma aux load_rm_segs = \
+ "mov ax, 80h" \
+ "mov ss, ax" \
+ "mov ax, ss:[1Eh]" \
+ "mov ds, ax" \
+ "mov ax, ss:[24h]" \
+ "mov es, ax" \
+ parm [cx] nomemory modify nomemory;
+
+/* Briefly switch to protected mode and load ES and/or DS if necessary.
+ * NB: Trashes high bits of EAX, but that should be safe. Expects flags
+ * in CX.
+ */
+void load_pm_segs(void);
+#pragma aux load_pm_segs = \
+ ".386p" \
+ "smsw ax" \
+ "inc ax" \
+ "lmsw ax" \
+ "mov ax, 8" \
+ "test cx, 1" \
+ "jz skip_es" \
+ "mov es, ax" \
+ "skip_es:" \
+ "test cx, 2" \
+ "jz skip_ds" \
+ "mov bx,ss:[00h]" \
+ "mov ss:[08h], bx" \
+ "mov bx,ss:[02h]" \
+ "mov ss:[0Ah], bx" \
+ "mov bx,ss:[04h]" \
+ "mov ss:[0Ch], bx" \
+ "mov ds, ax" \
+ "skip_ds:" \
+ "mov eax, cr0" \
+ "dec ax" \
+ "mov cr0, eax" \
+ parm nomemory modify nomemory;
+
+/* Complete LOADALL emulation: Restore general-purpose registers, stack
+ * pointer, and CS:IP. NB: The LOADALL instruction stores registers in
+ * the same order as PUSHA. Surprise, surprise!
+ */
+void ldall_finish(void);
+#pragma aux ldall_finish = \
+ ".286" \
+ "mov sp, 26h" \
+ "popa" \
+ "mov sp, ss:[2Ch]" \
+ "sub sp, 6" \
+ "mov ss, ss:[20h]" \
+ "iret" \
+ parm nomemory modify nomemory aborts;
+
+#ifdef EMU_386_LOADALL
+
+/* 386 version of the above. */
+void ldal3_finish(void);
+#pragma aux ldal3_finish = \
+ ".386" \
+ "mov sp, 28h" \
+ "popad" \
+ "mov sp, ss:[18h]" \
+ "sub sp, 6" \
+ "mov ss, ss:[48h]" \
+ "iret" \
+ parm nomemory modify nomemory aborts;
+
+/* 386 version of load_rm_segs.
+ * NB: Must not touch CX!
+ */
+void load_rm_seg3(int seg_flags, uint16_t ss_base);
+#pragma aux load_rm_seg3 = \
+ "mov ss, ax" \
+ "mov ax, ss:[44h]" \
+ "mov ds, ax" \
+ "mov ax, ss:[50h]" \
+ "mov es, ax" \
+ parm [ax] [cx] nomemory modify nomemory;
+
+#endif
+
+#define LOAD_ES 0x01 /* ES needs to be loaded in protected mode. */
+#define LOAD_DS 0x02 /* DS needs to be loaded in protected mode. */
+
+/*
+ * The invalid opcode handler exists to work around fishy application
+ * code and paper over CPU generation differences:
+ *
+ * - Skip redundant LOCK prefixes (allowed on 8086, #UD on 286+).
+ * - Emulate just enough of 286 LOADALL.
+ *
+ */
+void BIOSCALL inv_op_handler(uint16_t ds, uint16_t es, pusha_regs_t gr, volatile iret_addr_t ra)
+{
+ void __far *ins = ra.cs :> ra.ip;
+
+ if (*(uint8_t __far *)ins == 0xF0) {
+ /* LOCK prefix - skip over it and try again. */
+ ++ra.ip;
+ } else if (*(uint16_t __far *)ins == 0x050F) {
+ /* 286 LOADALL. NB: Same opcode as SYSCALL. */
+ ldall_286_s __far *ldbuf = 0 :> 0x800;
+ iret_addr_t __far *ret_addr;
+ uint32_t seg_base;
+ int seg_flags = 0;
+
+ /* One of the challenges is that we must restore SS:SP as well
+ * as CS:IP and FLAGS from the LOADALL buffer. We copy CS/IP/FLAGS
+ * from the buffer just below the SS:SP values from the buffer so
+ * that we can eventually IRET to the desired CS/IP/FLAGS/SS/SP
+ * values in one go.
+ */
+ ret_addr = ldbuf->ss :> (ldbuf->sp - sizeof(iret_addr_t));
+ ret_addr->ip = ldbuf->ip;
+ ret_addr->cs = ldbuf->cs;
+ ret_addr->flags.u.r16.flags = ldbuf->flags;
+
+ /* Examine ES/DS. */
+ seg_base = ldbuf->es_desc.base_lo | (uint32_t)ldbuf->es_desc.base_hi << 16;
+ if (seg_base != (uint32_t)ldbuf->es << 4)
+ seg_flags |= LOAD_ES;
+ seg_base = ldbuf->ds_desc.base_lo | (uint32_t)ldbuf->ds_desc.base_hi << 16;
+ if (seg_base != (uint32_t)ldbuf->ds << 4)
+ seg_flags |= LOAD_DS;
+
+ /* The LOADALL buffer doubles as a tiny GDT. */
+ load_gdtr(0x800, 4 * 8 - 1);
+
+ /* Store the ES base/limit/attributes in the unused words (GDT selector 8). */
+ ldbuf->unused2[0] = ldbuf->es_desc.limit;
+ ldbuf->unused2[1] = ldbuf->es_desc.base_lo;
+ ldbuf->unused2[2] = (ldbuf->es_desc.attr << 8) | ldbuf->es_desc.base_hi;
+ ldbuf->unused2[3] = 0;
+
+ /* Store the DS base/limit/attributes in other unused words. */
+ ldbuf->unused1[0] = ldbuf->ds_desc.limit;
+ ldbuf->unused1[1] = ldbuf->ds_desc.base_lo;
+ ldbuf->unused1[2] = (ldbuf->ds_desc.attr << 8) | ldbuf->ds_desc.base_hi;
+
+ /* Load the IDTR as specified. */
+ seg_base = ldbuf->idt_desc.base_lo | (uint32_t)ldbuf->idt_desc.base_hi << 16;
+ load_idtr(seg_base, ldbuf->idt_desc.limit);
+
+ /* Do the tricky bits now. */
+ load_rm_segs(seg_flags);
+ load_pm_segs();
+ ldall_finish();
+#ifdef EMU_386_LOADALL
+ } else if (*(uint16_t __far *)ins == 0x070F) {
+ /* 386 LOADALL. NB: Same opcode as SYSRET. */
+ ldall_386_s __far *ldbuf = (void __far *)es :> gr.u.r16.di; /* Assume 16-bit value in EDI. */
+ ldall_286_s __far *ldbuf2 = 0 :> 0x800;
+ iret_addr_t __far *ret_addr;
+ uint32_t seg_base;
+ int seg_flags = 0;
+
+ /* NB: BIG FAT ASSUMPTION! Users of 386 LOADALL are assumed to also
+ * have a 286 LOADALL buffer at physical address 800h. We use unused fields
+ * in that buffer for temporary storage.
+ */
+
+ /* Set up return stack. */
+ ret_addr = ldbuf->ss :> (ldbuf->esp - sizeof(iret_addr_t));
+ ret_addr->ip = ldbuf->eip;
+ ret_addr->cs = ldbuf->cs;
+ ret_addr->flags.u.r16.flags = ldbuf->eflags;
+
+ /* Examine ES/DS. */
+ seg_base = ldbuf->es_desc.base;
+ if (seg_base != (uint32_t)ldbuf->es << 4)
+ seg_flags |= LOAD_ES;
+ seg_base = ldbuf->ds_desc.base;
+ if (seg_base != (uint32_t)ldbuf->ds << 4)
+ seg_flags |= LOAD_DS;
+
+ /* The LOADALL buffer doubles as a tiny GDT. */
+ load_gdtr(0x800, 4 * 8 - 1);
+
+ /* Store the ES base/limit/attributes in the unused words (GDT selector 8). */
+ ldbuf2->unused2[0] = ldbuf->es_desc.limit;
+ ldbuf2->unused2[1] = (uint16_t)ldbuf->es_desc.base;
+ ldbuf2->unused2[2] = (ldbuf->es_desc.attr & 0xFF00) | (ldbuf->es_desc.base >> 16);
+ ldbuf2->unused2[3] = 0;
+
+ /* Store the DS base/limit/attributes in other unused words. */
+ ldbuf2->unused1[0] = ldbuf->ds_desc.limit;
+ ldbuf2->unused1[1] = (uint16_t)ldbuf->ds_desc.base;
+ ldbuf2->unused1[2] = (ldbuf->ds_desc.attr & 0xFF00) | (ldbuf->ds_desc.base >> 16);
+
+ /* Load the IDTR as specified. */
+ seg_base = ldbuf->idt_desc.base;
+ load_idtr(seg_base, ldbuf->idt_desc.limit);
+
+ /* Do the tricky bits now. */
+ load_rm_seg3(es, seg_flags);
+ load_pm_segs();
+ ldal3_finish();
+#endif
+ } else {
+ /* There isn't much point in executing the invalid opcode handler
+ * in an endless loop, so halt right here.
+ */
+ int_enable();
+ halt_forever();
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/keyboard.c b/src/VBox/Devices/PC/BIOS/keyboard.c
new file mode 100644
index 00000000..e141b743
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/keyboard.c
@@ -0,0 +1,822 @@
+/* $Id: keyboard.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+
+#if DEBUG_INT16
+# define BX_DEBUG_INT16(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT16(...)
+#endif
+
+extern void post(void);
+#pragma aux post "*";
+
+void jmp_post(void);
+#pragma aux jmp_post = "jmp far ptr post" aborts;
+
+extern void eoi_master_pic(void); /* in assembly code */
+#pragma aux eoi_master_pic "*";
+
+/* Manually save/restore BP around invoking user Ctrl-Break handler.
+ * The handler could conceivably clobber BP and the compiler does not
+ * believe us when we say 'modify [bp]' (BP is considered unalterable).
+ */
+void int_1b(void);
+#pragma aux int_1b = \
+ "push bp" \
+ "int 1Bh" \
+ "pop bp" \
+ value [bp] modify [bp];
+
+
+#define none 0
+#define MAX_SCAN_CODE 0x58
+
+struct {
+ uint16_t normal;
+ uint16_t shift;
+ uint16_t control;
+ uint16_t alt;
+ uint8_t lock_flags;
+} static const scan_to_scanascii[MAX_SCAN_CODE + 1] = {
+ { none, none, none, none, none },
+ { 0x011b, 0x011b, 0x011b, 0x0100, none }, /* escape */
+ { 0x0231, 0x0221, none, 0x7800, none }, /* 1! */
+ { 0x0332, 0x0340, 0x0300, 0x7900, none }, /* 2@ */
+ { 0x0433, 0x0423, none, 0x7a00, none }, /* 3# */
+ { 0x0534, 0x0524, none, 0x7b00, none }, /* 4$ */
+ { 0x0635, 0x0625, none, 0x7c00, none }, /* 5% */
+ { 0x0736, 0x075e, 0x071e, 0x7d00, none }, /* 6^ */
+ { 0x0837, 0x0826, none, 0x7e00, none }, /* 7& */
+ { 0x0938, 0x092a, none, 0x7f00, none }, /* 8* */
+ { 0x0a39, 0x0a28, none, 0x8000, none }, /* 9( */
+ { 0x0b30, 0x0b29, none, 0x8100, none }, /* 0) */
+ { 0x0c2d, 0x0c5f, 0x0c1f, 0x8200, none }, /* -_ */
+ { 0x0d3d, 0x0d2b, none, 0x8300, none }, /* =+ */
+ { 0x0e08, 0x0e08, 0x0e7f, none, none }, /* backspace */
+ { 0x0f09, 0x0f00, none, none, none }, /* tab */
+ { 0x1071, 0x1051, 0x1011, 0x1000, 0x40 }, /* Q */
+ { 0x1177, 0x1157, 0x1117, 0x1100, 0x40 }, /* W */
+ { 0x1265, 0x1245, 0x1205, 0x1200, 0x40 }, /* E */
+ { 0x1372, 0x1352, 0x1312, 0x1300, 0x40 }, /* R */
+ { 0x1474, 0x1454, 0x1414, 0x1400, 0x40 }, /* T */
+ { 0x1579, 0x1559, 0x1519, 0x1500, 0x40 }, /* Y */
+ { 0x1675, 0x1655, 0x1615, 0x1600, 0x40 }, /* U */
+ { 0x1769, 0x1749, 0x1709, 0x1700, 0x40 }, /* I */
+ { 0x186f, 0x184f, 0x180f, 0x1800, 0x40 }, /* O */
+ { 0x1970, 0x1950, 0x1910, 0x1900, 0x40 }, /* P */
+ { 0x1a5b, 0x1a7b, 0x1a1b, none, none }, /* [{ */
+ { 0x1b5d, 0x1b7d, 0x1b1d, none, none }, /* ]} */
+ { 0x1c0d, 0x1c0d, 0x1c0a, none, none }, /* Enter */
+ { none, none, none, none, none }, /* L Ctrl */
+ { 0x1e61, 0x1e41, 0x1e01, 0x1e00, 0x40 }, /* A */
+ { 0x1f73, 0x1f53, 0x1f13, 0x1f00, 0x40 }, /* S */
+ { 0x2064, 0x2044, 0x2004, 0x2000, 0x40 }, /* D */
+ { 0x2166, 0x2146, 0x2106, 0x2100, 0x40 }, /* F */
+ { 0x2267, 0x2247, 0x2207, 0x2200, 0x40 }, /* G */
+ { 0x2368, 0x2348, 0x2308, 0x2300, 0x40 }, /* H */
+ { 0x246a, 0x244a, 0x240a, 0x2400, 0x40 }, /* J */
+ { 0x256b, 0x254b, 0x250b, 0x2500, 0x40 }, /* K */
+ { 0x266c, 0x264c, 0x260c, 0x2600, 0x40 }, /* L */
+ { 0x273b, 0x273a, none, none, none }, /* ;: */
+ { 0x2827, 0x2822, none, none, none }, /* '" */
+ { 0x2960, 0x297e, none, none, none }, /* `~ */
+ { none, none, none, none, none }, /* L shift */
+ { 0x2b5c, 0x2b7c, 0x2b1c, none, none }, /* |\ */
+ { 0x2c7a, 0x2c5a, 0x2c1a, 0x2c00, 0x40 }, /* Z */
+ { 0x2d78, 0x2d58, 0x2d18, 0x2d00, 0x40 }, /* X */
+ { 0x2e63, 0x2e43, 0x2e03, 0x2e00, 0x40 }, /* C */
+ { 0x2f76, 0x2f56, 0x2f16, 0x2f00, 0x40 }, /* V */
+ { 0x3062, 0x3042, 0x3002, 0x3000, 0x40 }, /* B */
+ { 0x316e, 0x314e, 0x310e, 0x3100, 0x40 }, /* N */
+ { 0x326d, 0x324d, 0x320d, 0x3200, 0x40 }, /* M */
+ { 0x332c, 0x333c, none, none, none }, /* ,< */
+ { 0x342e, 0x343e, none, none, none }, /* .> */
+ { 0x352f, 0x353f, none, none, none }, /* /? */
+ { none, none, none, none, none }, /* R Shift */
+ { 0x372a, 0x372a, none, none, none }, /* * */
+ { none, none, none, none, none }, /* L Alt */
+ { 0x3920, 0x3920, 0x3920, 0x3920, none }, /* space */
+ { none, none, none, none, none }, /* caps lock */
+ { 0x3b00, 0x5400, 0x5e00, 0x6800, none }, /* F1 */
+ { 0x3c00, 0x5500, 0x5f00, 0x6900, none }, /* F2 */
+ { 0x3d00, 0x5600, 0x6000, 0x6a00, none }, /* F3 */
+ { 0x3e00, 0x5700, 0x6100, 0x6b00, none }, /* F4 */
+ { 0x3f00, 0x5800, 0x6200, 0x6c00, none }, /* F5 */
+ { 0x4000, 0x5900, 0x6300, 0x6d00, none }, /* F6 */
+ { 0x4100, 0x5a00, 0x6400, 0x6e00, none }, /* F7 */
+ { 0x4200, 0x5b00, 0x6500, 0x6f00, none }, /* F8 */
+ { 0x4300, 0x5c00, 0x6600, 0x7000, none }, /* F9 */
+ { 0x4400, 0x5d00, 0x6700, 0x7100, none }, /* F10 */
+ { none, none, none, none, none }, /* Num Lock */
+ { none, none, none, none, none }, /* Scroll Lock */
+ { 0x4700, 0x4737, 0x7700, none, 0x20 }, /* 7 Home */
+ { 0x4800, 0x4838, none, none, 0x20 }, /* 8 UP */
+ { 0x4900, 0x4939, 0x8400, none, 0x20 }, /* 9 PgUp */
+ { 0x4a2d, 0x4a2d, none, none, none }, /* - */
+ { 0x4b00, 0x4b34, 0x7300, none, 0x20 }, /* 4 Left */
+ { 0x4c00, 0x4c35, none, none, 0x20 }, /* 5 */
+ { 0x4d00, 0x4d36, 0x7400, none, 0x20 }, /* 6 Right */
+ { 0x4e2b, 0x4e2b, none, none, none }, /* + */
+ { 0x4f00, 0x4f31, 0x7500, none, 0x20 }, /* 1 End */
+ { 0x5000, 0x5032, none, none, 0x20 }, /* 2 Down */
+ { 0x5100, 0x5133, 0x7600, none, 0x20 }, /* 3 PgDn */
+ { 0x5200, 0x5230, none, none, 0x20 }, /* 0 Ins */
+ { 0x5300, 0x532e, none, none, 0x20 }, /* Del */
+ { none, none, none, none, none },
+ { none, none, none, none, none },
+ { 0x565c, 0x567c, none, none, none }, /* \| */
+ { 0x8500, 0x8700, 0x8900, 0x8b00, none }, /* F11 */
+ { 0x8600, 0x8800, 0x8a00, 0x8c00, none } /* F12 */
+};
+
+
+/* Keyboard initialization. */
+
+//--------------------------------------------------------------------------
+// keyboard_panic
+//--------------------------------------------------------------------------
+void keyboard_panic(uint16_t status)
+{
+ // If you're getting a 993 keyboard panic here,
+ // please see the comment in keyboard_init
+
+ BX_PANIC("Keyboard error:%u\n",status);
+}
+
+
+//--------------------------------------------------------------------------
+// keyboard_init
+//--------------------------------------------------------------------------
+// this file is based on LinuxBIOS implementation of keyboard.c
+// could convert to #asm to gain space
+void BIOSCALL keyboard_init(void)
+{
+ uint16_t max;
+
+ /* ------------------- controller side ----------------------*/
+ /* send cmd = 0xAA, self test 8042 */
+ outb(0x64, 0xaa);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ( (inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x00);
+ if (max==0x0) keyboard_panic(00);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x01);
+ if (max==0x0) keyboard_panic(01);
+
+ /* read self-test result, 0x55 should be returned from 0x60 */
+ if ((inb(0x60) != 0x55)){
+ keyboard_panic(991);
+ }
+
+ /* send cmd = 0xAB, keyboard interface test */
+ outb(0x64,0xab);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x10);
+ if (max==0x0) keyboard_panic(10);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x11);
+ if (max==0x0) keyboard_panic(11);
+
+ /* read keyboard interface test result, */
+ /* 0x00 should be returned form 0x60 */
+ if ((inb(0x60) != 0x00)) {
+ keyboard_panic(992);
+ }
+
+ /* ------------------- keyboard side ------------------------*/
+ /* reset keyboard and self test (keyboard side) */
+ /* also enables the keyboard interface */
+ outb(0x60, 0xff);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x20);
+ if (max==0x0) keyboard_panic(20);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x21);
+ if (max==0x0) keyboard_panic(21);
+
+ /* keyboard should return ACK */
+ if ((inb(0x60) != 0xfa)) {
+ keyboard_panic(993);
+ }
+
+ /* Wait for reset to complete */
+ while ( (inb(0x64) & 0x01) == 0 ) outb(0x80, 0x31);
+
+ if ((inb(0x60) != 0xaa && inb(0x60) != 0xaa)) {
+ keyboard_panic(994);
+ }
+
+ /* Disable keyboard */
+ outb(0x60, 0xf5);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x40);
+ if (max==0x0) keyboard_panic(40);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x41);
+ if (max==0x0) keyboard_panic(41);
+
+ /* keyboard should return ACK */
+ if ((inb(0x60) != 0xfa)) {
+ keyboard_panic(995);
+ }
+
+ /* Write Keyboard Mode */
+ outb(0x64, 0x60);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x50);
+ if (max==0x0) keyboard_panic(50);
+
+ /* send cmd: scan code convert, disable mouse, enable IRQ 1 */
+ outb(0x60, 0x65);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x60);
+ if (max==0x0) keyboard_panic(60);
+
+ /* Enable keyboard */
+ outb(0x60, 0xf4);
+
+ /* Wait until buffer is empty */
+ max=0xffff;
+ while ((inb(0x64) & 0x02) && (--max>0)) outb(0x80, 0x70);
+ if (max==0x0) keyboard_panic(70);
+
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) ) outb(0x80, 0x71);
+ if (max==0x0) keyboard_panic(70);
+
+ /* keyboard should return ACK */
+ if ((inb(0x60) != 0xfa)) {
+ keyboard_panic(996);
+ }
+
+ /* Enable aux interface */
+ outb(0x64,0xa8);
+
+ /* While we're here, disable the A20 gate. Required for
+ * compatibility with the IBM PC and DOS.
+ */
+ set_enable_a20(0);
+}
+
+
+unsigned int enqueue_key(uint8_t scan_code, uint8_t ascii_code)
+{
+ uint16_t buffer_start, buffer_end, buffer_head, buffer_tail, temp_tail;
+
+#if VBOX_BIOS_CPU >= 80286
+ buffer_start = read_word(0x0040, 0x0080);
+ buffer_end = read_word(0x0040, 0x0082);
+#else
+ buffer_start = 0x001E;
+ buffer_end = 0x003E;
+#endif
+
+ buffer_head = read_word(0x0040, 0x001A);
+ buffer_tail = read_word(0x0040, 0x001C);
+
+ temp_tail = buffer_tail;
+ buffer_tail += 2;
+ if (buffer_tail >= buffer_end)
+ buffer_tail = buffer_start;
+
+ if (buffer_tail == buffer_head)
+ return(0);
+
+ write_byte(0x0040, temp_tail, ascii_code);
+ write_byte(0x0040, temp_tail+1, scan_code);
+ write_word(0x0040, 0x001C, buffer_tail);
+ return(1);
+}
+
+
+/* Keyboard hardware interrupt handler. */
+/// @todo should this be declared as taking arguments at all?
+void BIOSCALL int09_function(uint16_t ES, uint16_t DI, uint16_t SI, uint16_t BP, uint16_t SP,
+ uint16_t BX, uint16_t DX, uint16_t CX, uint16_t AX)
+{
+ uint8_t scancode, asciicode, shift_flags;
+ uint8_t mf2_flags, mf2_state, flag;
+
+ //
+ // DS has been set to F000 before call
+ //
+
+
+ scancode = GET_AL();
+
+ if (scancode == 0) {
+ BX_INFO("KBD: int09 handler: AL=0\n");
+ return;
+ }
+
+ mf2_flags = read_byte(0x0040, 0x18);
+ mf2_state = read_byte(0x0040, 0x96);
+ shift_flags = read_byte(0x0040, 0x17);
+ asciicode = 0;
+
+ switch (scancode) {
+ case 0x3a: /* Caps Lock press */
+ shift_flags ^= 0x40;
+ write_byte(0x0040, 0x17, shift_flags);
+ mf2_flags |= 0x40;
+ write_byte(0x0040, 0x18, mf2_flags);
+ break;
+ case 0xba: /* Caps Lock release */
+ mf2_flags &= ~0x40;
+ write_byte(0x0040, 0x18, mf2_flags);
+ break;
+
+ case 0x2a: /* L Shift press */
+ case 0xaa: /* L Shift release */
+ case 0x36: /* R Shift press */
+ case 0xb6: /* R Shift release */
+ /* If this was an extended (i.e. faked) key, leave flags alone. */
+ if (!(mf2_state & 0x02)) {
+ flag = (scancode & 0x7f) == 0x2a ? 0x02 : 0x01;
+ if (scancode & 0x80)
+ shift_flags &= ~flag;
+ else
+ shift_flags |= flag;
+ write_byte(0x0040, 0x17, shift_flags);
+ }
+ break;
+
+ case 0x1d: /* Ctrl press */
+ if ((mf2_state & 0x01) == 0) {
+ shift_flags |= 0x04;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state |= 0x04;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags |= 0x01;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ }
+ break;
+ case 0x9d: /* Ctrl release */
+ if ((mf2_state & 0x01) == 0) {
+ shift_flags &= ~0x04;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state &= ~0x04;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags &= ~0x01;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ }
+ break;
+
+ case 0x38: /* Alt press */
+ shift_flags |= 0x08;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state |= 0x08;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags |= 0x02;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+ case 0xb8: /* Alt release */
+ shift_flags &= ~0x08;
+ write_byte(0x0040, 0x17, shift_flags);
+ if (mf2_state & 0x02) {
+ mf2_state &= ~0x08;
+ write_byte(0x0040, 0x96, mf2_state);
+ } else {
+ mf2_flags &= ~0x02;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+
+ case 0x45: /* Num Lock/Pause press */
+ if ((mf2_state & 0x03) == 0) {
+ /* Num Lock */
+ mf2_flags |= 0x20;
+ write_byte(0x0040, 0x18, mf2_flags);
+ shift_flags ^= 0x20;
+ write_byte(0x0040, 0x17, shift_flags);
+ } else {
+ /* Pause */
+ mf2_flags |= 0x08; /* Set the suspend flag */
+ write_byte(0x0040, 0x18, mf2_flags);
+
+ /* Enable keyboard and send EOI. */
+ outp(0x64, 0xae);
+ eoi_master_pic();
+
+ while (read_byte(0x0040, 0x18) & 0x08)
+ ; /* Hold on and wait... */
+
+ /// @todo We will send EOI again (and enable keyboard) on the way out; we shouldn't
+ }
+ break;
+ case 0xc5: /* Num Lock/Pause release */
+ if ((mf2_state & 0x03) == 0) {
+ mf2_flags &= ~0x20;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+
+ case 0x46: /* Scroll Lock/Break press */
+ if (mf2_state & 0x02) { /* E0 prefix? */
+ /* Zap the keyboard buffer. */
+ write_word(0x0040, 0x001c, read_word(0x0040, 0x001a));
+
+ write_byte(0x0040, 0x71, 0x80); /* Set break flag */
+ outp(0x64, 0xae); /* Enable keyboard */
+ int_1b(); /* Invoke user handler */
+ enqueue_key(0, 0); /* Dummy key press*/
+ } else {
+ mf2_flags |= 0x10;
+ write_byte(0x0040, 0x18, mf2_flags);
+ shift_flags ^= 0x10;
+ write_byte(0x0040, 0x17, shift_flags);
+ }
+ break;
+
+ case 0xc6: /* Scroll Lock/Break release */
+ if (!(mf2_state & 0x02)) { /* Only if no E0 prefix */
+ mf2_flags &= ~0x10;
+ write_byte(0x0040, 0x18, mf2_flags);
+ }
+ break;
+
+ case 0x54: /* SysRq press */
+ if (!(mf2_flags & 0x04)) { /* If not already down */
+ mf2_flags |= 0x04;
+ write_byte(0x0040, 0x18, mf2_flags);
+ /// @todo EOI/enable kbd/enable interrupts/call INT 15h/8500h
+ }
+ break;
+
+ case 0xd4: /* SysRq release */
+ mf2_flags &= ~0x04;
+ write_byte(0x0040, 0x18, mf2_flags);
+ /// @todo EOI/enable kbd/enable interrupts/call INT 15h/8501h
+ break;
+
+ case 0x53: /* Del press */
+ if ((shift_flags & 0x0c) == 0x0c) {
+ /* Indicate a warm boot. */
+ write_word(0x0040,0x0072, 0x1234);
+ jmp_post();
+ }
+ /* fall through */
+
+ default:
+ /* Check if suspend flag set. */
+ if (mf2_flags & 0x08) {
+ /* Pause had been pressed. Clear suspend flag and do nothing. */
+ mf2_flags &= ~0x08;
+ write_byte(0x0040, 0x18, mf2_flags);
+ return;
+ }
+
+ if (scancode & 0x80) {
+ /* Set ack/resend flags if appropriate. */
+ if (scancode == 0xFA) {
+ flag = read_byte(0x0040, 0x97) | 0x10;
+ write_byte(0x0040, 0x97, flag);
+ } else if (scancode == 0xFE) {
+ flag = read_byte(0x0040, 0x97) | 0x20;
+ write_byte(0x0040, 0x97, flag);
+ }
+ break; /* toss key releases ... */
+ }
+ if (scancode > MAX_SCAN_CODE) {
+ BX_INFO("KBD: int09h_handler(): unknown scancode read: 0x%02x!\n", scancode);
+ return;
+ }
+ if (shift_flags & 0x08) { /* ALT */
+ asciicode = scan_to_scanascii[scancode].alt;
+ scancode = scan_to_scanascii[scancode].alt >> 8;
+ } else if (shift_flags & 0x04) { /* CONTROL */
+ asciicode = scan_to_scanascii[scancode].control;
+ scancode = scan_to_scanascii[scancode].control >> 8;
+ } else if (((mf2_state & 0x02) > 0) && ((scancode >= 0x47) && (scancode <= 0x53))) {
+ /* extended keys handling */
+ asciicode = 0xe0;
+ scancode = scan_to_scanascii[scancode].normal >> 8;
+ } else if (shift_flags & 0x03) { /* LSHIFT + RSHIFT */
+ /* check if lock state should be ignored
+ * because a SHIFT key are pressed */
+
+ if (shift_flags & scan_to_scanascii[scancode].lock_flags) {
+ asciicode = scan_to_scanascii[scancode].normal;
+ scancode = scan_to_scanascii[scancode].normal >> 8;
+ } else {
+ asciicode = scan_to_scanascii[scancode].shift;
+ scancode = scan_to_scanascii[scancode].shift >> 8;
+ }
+ } else {
+ /* check if lock is on */
+ if (shift_flags & scan_to_scanascii[scancode].lock_flags) {
+ asciicode = scan_to_scanascii[scancode].shift;
+ scancode = scan_to_scanascii[scancode].shift >> 8;
+ } else {
+ asciicode = scan_to_scanascii[scancode].normal;
+ scancode = scan_to_scanascii[scancode].normal >> 8;
+ }
+ }
+ if (scancode==0 && asciicode==0) {
+ BX_INFO("KBD: int09h_handler(): scancode & asciicode are zero?\n");
+ }
+ enqueue_key(scancode, asciicode);
+ break;
+ }
+ if ((scancode & 0x7f) != 0x1d) {
+ mf2_state &= ~0x01;
+ }
+ mf2_state &= ~0x02;
+ write_byte(0x0040, 0x96, mf2_state);
+}
+
+unsigned int dequeue_key(uint8_t __far *scan_code, uint8_t __far *ascii_code, unsigned incr)
+{
+ uint16_t buffer_start, buffer_end, buffer_head, buffer_tail;
+ uint8_t acode, scode;
+
+#if VBOX_BIOS_CPU >= 80286
+ buffer_start = read_word(0x0040, 0x0080);
+ buffer_end = read_word(0x0040, 0x0082);
+#else
+ buffer_start = 0x001E;
+ buffer_end = 0x003E;
+#endif
+
+ buffer_head = read_word(0x0040, 0x001a);
+ buffer_tail = read_word(0x0040, 0x001c);
+
+ if (buffer_head != buffer_tail) {
+ acode = read_byte(0x0040, buffer_head);
+ scode = read_byte(0x0040, buffer_head+1);
+ *ascii_code = acode;
+ *scan_code = scode;
+ BX_DEBUG_INT16("dequeue_key: ascii=%02x scan=%02x \n", acode, scode);
+
+ if (incr) {
+ buffer_head += 2;
+ if (buffer_head >= buffer_end)
+ buffer_head = buffer_start;
+ write_word(0x0040, 0x001a, buffer_head);
+ }
+ return(1);
+ }
+ else {
+ return(0);
+ }
+}
+
+
+/// @todo move somewhere else?
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define FLAGS r.ra.flags.u.r16.flags
+#define IFLGS r.ifl
+
+/* Interrupt 16h service implementation. */
+
+void BIOSCALL int16_function(volatile kbd_regs_t r)
+{
+ uint8_t scan_code, ascii_code, shift_flags, led_flags, count;
+ uint16_t kbd_code, max;
+
+ BX_DEBUG_INT16("int16: AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX);
+
+ shift_flags = read_byte(0x0040, 0x17);
+ led_flags = read_byte(0x0040, 0x97);
+ if ((((shift_flags >> 4) & 0x07) ^ (led_flags & 0x07)) != 0) {
+ int_disable(); /// @todo interrupts should be disabled already??
+ outb(0x60, 0xed);
+ while ((inb(0x64) & 0x01) == 0) outb(0x80, 0x21);
+ if ((inb(0x60) == 0xfa)) {
+ led_flags &= 0xc8;
+ led_flags |= ((shift_flags >> 4) & 0x07);
+ outb(0x60, led_flags & 0x07);
+ while ((inb(0x64) & 0x01) == 0)
+ outb(0x80, 0x21);
+ inb(0x60);
+ write_byte(0x0040, 0x97, led_flags);
+ }
+ int_enable();
+ }
+
+ switch (GET_AH()) {
+ case 0x00: /* read keyboard input */
+ if ( !dequeue_key(&scan_code, &ascii_code, 1) ) {
+ BX_PANIC("KBD: int16h: out of keyboard input\n");
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ else if (ascii_code == 0xE0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ break;
+
+ case 0x01: /* check keyboard status */
+ /* Enable interrupts, preserve most flags. Some callers depend on that! */
+ FLAGS = IFLGS;
+ if ( !dequeue_key(&scan_code, &ascii_code, 0) ) {
+ SET_ZF();
+ return;
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ else if (ascii_code == 0xE0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ CLEAR_ZF();
+ break;
+
+ case 0x02: /* get shift flag status */
+ shift_flags = read_byte(0x0040, 0x17);
+ SET_AL(shift_flags);
+ break;
+
+ case 0x05: /* store key-stroke into buffer */
+ if ( !enqueue_key(GET_CH(), GET_CL()) ) {
+ SET_AL(1);
+ }
+ else {
+ SET_AL(0);
+ }
+ break;
+
+ case 0x09: /* GET KEYBOARD FUNCTIONALITY */
+ // bit Bochs Description
+ // 7 0 reserved
+ // 6 0 INT 16/AH=20h-22h supported (122-key keyboard support)
+ // 5 1 INT 16/AH=10h-12h supported (enhanced keyboard support)
+ // 4 1 INT 16/AH=0Ah supported
+ // 3 0 INT 16/AX=0306h supported
+ // 2 0 INT 16/AX=0305h supported
+ // 1 0 INT 16/AX=0304h supported
+ // 0 0 INT 16/AX=0300h supported
+ //
+ SET_AL(0x30);
+ break;
+
+ case 0x0A: /* GET KEYBOARD ID */
+ count = 2;
+ kbd_code = 0x0;
+ /// @todo Might be better to just mask the KB interrupt
+ int_disable();
+ outb(0x60, 0xf2);
+ /* Wait for data */
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) )
+ inb(0x80);
+ if (max>0x0) {
+ if ((inb(0x60) == 0xfa)) {
+ do {
+ max=0xffff;
+ while ( ((inb(0x64) & 0x01) == 0) && (--max>0) )
+ inb(0x80);
+ if (max>0x0) {
+ kbd_code >>= 8;
+ kbd_code |= (inb(0x60) << 8);
+ }
+ } while (--count>0);
+ }
+ }
+ BX=kbd_code;
+ break;
+
+ case 0x10: /* read MF-II keyboard input */
+ if ( !dequeue_key(&scan_code, &ascii_code, 1) ) {
+ BX_PANIC("KBD: int16h: out of keyboard input\n");
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ break;
+
+ case 0x11: /* check MF-II keyboard status */
+ /* Enable interrupts, preserve most flags. Some callers depend on that! */
+ FLAGS = IFLGS;
+ if ( !dequeue_key(&scan_code, &ascii_code, 0) ) {
+ SET_ZF();
+ return;
+ }
+ if (scan_code !=0 && ascii_code == 0xF0)
+ ascii_code = 0;
+ AX = (scan_code << 8) | ascii_code;
+ CLEAR_ZF();
+ break;
+
+ case 0x12: /* get extended keyboard status */
+ shift_flags = read_byte(0x0040, 0x17);
+ SET_AL(shift_flags);
+ shift_flags = read_byte(0x0040, 0x18) & 0x73;
+ shift_flags |= read_byte(0x0040, 0x96) & 0x0c;
+ SET_AH(shift_flags);
+ BX_DEBUG_INT16("int16: func 12 sending %04x\n",AX);
+ break;
+
+ case 0x92: /* keyboard capability check called by DOS 5.0+ keyb */
+ SET_AH(0x80); // function int16 ah=0x10-0x12 supported
+ break;
+
+ case 0xA2: /* 122 keys capability check called by DOS 5.0+ keyb */
+ // don't change AH : function int16 ah=0x20-0x22 NOT supported
+ break;
+
+ /// @todo what's the point of handling this??
+#if 0
+ case 0x6F:
+ if (GET_AL() == 0x08)
+ SET_AH(0x02); // unsupported, aka normal keyboard
+#endif
+
+ default:
+ BX_INFO("KBD: unsupported int 16h function %02x\n", GET_AH());
+ BX_INFO("AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX);
+ }
+ BX_DEBUG_INT16("int16ex: AX=%04x BX=%04x CX=%04x DX=%04x \n", AX, BX, CX, DX);
+}
diff --git a/src/VBox/Devices/PC/BIOS/logo.c b/src/VBox/Devices/PC/BIOS/logo.c
new file mode 100644
index 00000000..9a82ef11
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/logo.c
@@ -0,0 +1,558 @@
+/* $Id: logo.c $ */
+/** @file
+ * Stuff for drawing the BIOS logo.
+ */
+
+/*
+ * Copyright (C) 2004-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "ebda.h"
+
+#define WAIT_HZ 64
+#define WAIT_MS 16
+
+#define F12_SCAN_CODE 0x86
+#define F12_WAIT_TIME (3 * WAIT_HZ) /* 3 seconds. Used only if logo disabled. */
+
+#include <VBox/bioslogo.h>
+
+/**
+ * Set video mode (VGA).
+ * @param mode New video mode.
+ */
+void set_mode(uint8_t mode);
+#pragma aux set_mode = \
+ "mov ah, 0" \
+ "int 10h" \
+ parm [al] modify [ax] nomemory;
+
+
+/**
+ * Set VESA video mode.
+ * @param mode New video mode.
+ */
+uint16_t vesa_set_mode(uint16_t mode);
+#pragma aux vesa_set_mode = \
+ "mov ax, 4F02h" \
+ "int 10h" \
+ parm [bx] modify [ax] nomemory;
+
+/**
+ * Get current VESA video mode.
+ * @param mode New video mode.
+ */
+uint16_t vesa_get_mode(uint16_t __far *mode);
+#pragma aux vesa_get_mode = \
+ "mov ax, 4F03h" \
+ "int 10h" \
+ "mov es:[di], bx" \
+ parm [es di] modify [ax bx] nomemory;
+
+
+/**
+ * Set custom video mode.
+ * @param xres Requested width
+ * @param yres Requested height
+ * @param bpp Requested bits per pixel
+ */
+uint16_t custom_set_mode(uint16_t xres, uint16_t yres, uint8_t bpp);
+#pragma aux custom_set_mode = \
+ "mov ax, 5642h" \
+ "mov bl, 0" \
+ "int 10h" \
+ parm [cx] [dx] [bh] modify [ax] nomemory;
+
+/**
+ * Check for keystroke.
+ * @returns True if keystroke available, False if not.
+ */
+/// @todo INT 16h should already be returning the right value in al; could also use setz
+uint8_t check_for_keystroke(void);
+#pragma aux check_for_keystroke = \
+ "mov ax, 100h" \
+ "int 16h" \
+ "jz no_key" \
+ "mov al, 1" \
+ "jmp done" \
+ "no_key:" \
+ "xor al, al" \
+ "done:" \
+ modify [ax] nomemory;
+
+
+/**
+ * Get keystroke.
+ * @returns BIOS scan code.
+ */
+uint8_t get_keystroke(void);
+#pragma aux get_keystroke = \
+ "xor ax, ax" \
+ "int 16h" \
+ "xchg ah, al" \
+ modify [ax] nomemory;
+
+
+/// @todo This whole business with reprogramming the PIT is rather suspect.
+// The BIOS already has waiting facilities in INT 15h (fn 83h, 86h) which
+// should be utilized instead.
+
+// Set the timer to 16ms ticks (64K / (Hz / (PIT_HZ / 64K)) = count).
+void wait_init(void);
+#pragma aux wait_init = \
+ "mov al, 34h" \
+ "out 43h, al" \
+ "mov al, 0D3h" \
+ "out 40h, al" \
+ "mov al, 048h" \
+ "out 40h, al" \
+ modify [ax] nomemory;
+
+/// @todo using this private interface is not great
+extern void rtc_post(void);
+#pragma aux rtc_post "*";
+
+/* Restore the timer to the default 18.2Hz. Reinitialize the tick
+ * and rollover counts since we've screwed them up by running the
+ * timer at WAIT_HZ for a while.
+ */
+void wait_uninit(void);
+#if VBOX_BIOS_CPU >= 80386
+# pragma aux wait_uninit = \
+ ".386" \
+ "mov al, 34h" \
+ "out 43h, al" \
+ "xor ax, ax" \
+ "out 40h, al" \
+ "out 40h, al" \
+ "pushad" \
+ "push ds" \
+ "mov ds, ax" \
+ "call rtc_post" \
+ "pop ds" \
+ "popad" \
+ modify [ax] nomemory;
+#else
+# pragma aux wait_uninit = \
+ "mov al, 34h" \
+ "out 43h, al" \
+ "xor ax, ax" \
+ "out 40h, al" \
+ "out 40h, al" \
+ "push bp" \
+ "push ds" \
+ "mov ds, ax" \
+ "call rtc_post" \
+ "pop ds" \
+ "pop bp" \
+ modify [ax bx cx dx si di];
+#endif
+
+
+/**
+ * Waits (sleeps) for the given number of ticks.
+ * Checks for keystroke.
+ *
+ * @returns BIOS scan code if available, 0 if not.
+ * @param ticks Number of ticks to sleep.
+ * @param stop_on_key Whether to stop immediately upon keypress.
+ */
+uint8_t wait(uint16_t ticks, uint8_t stop_on_key)
+{
+ long ticks_to_wait, delta;
+ uint16_t old_flags;
+ uint32_t prev_ticks, t;
+ uint8_t scan_code = 0;
+
+ /*
+ * We may or may not be called with interrupts disabled. For the duration
+ * of this function, interrupts must be enabled.
+ */
+ old_flags = int_query();
+ int_enable();
+
+ /*
+ * The 0:046c wraps around at 'midnight' according to a 18.2Hz clock.
+ * We also have to be careful about interrupt storms.
+ */
+ ticks_to_wait = ticks;
+ prev_ticks = read_dword(0x0, 0x46c);
+ do
+ {
+ halt();
+ t = read_dword(0x0, 0x46c);
+ if (t > prev_ticks)
+ {
+ delta = t - prev_ticks; /* The temp var is required or bcc screws up. */
+ ticks_to_wait -= delta;
+ }
+ else if (t < prev_ticks)
+ ticks_to_wait -= t; /* wrapped */
+ prev_ticks = t;
+
+ if (check_for_keystroke())
+ {
+ scan_code = get_keystroke();
+ bios_printf(BIOS_PRINTF_INFO, "Key pressed: %x\n", scan_code);
+ if (stop_on_key)
+ return scan_code;
+ }
+ } while (ticks_to_wait > 0);
+ int_restore(old_flags);
+ return scan_code;
+}
+
+uint8_t read_logo_byte(uint8_t offset)
+{
+ outw(LOGO_IO_PORT, LOGO_CMD_SET_OFFSET | offset);
+ return inb(LOGO_IO_PORT);
+}
+
+uint16_t read_logo_word(uint8_t offset)
+{
+ outw(LOGO_IO_PORT, LOGO_CMD_SET_OFFSET | offset);
+ return inw(LOGO_IO_PORT);
+}
+
+// Hide cursor, clear screen and move cursor to starting position
+void clear_screen(void);
+#pragma aux clear_screen = \
+ "mov ax, 100h" \
+ "mov cx, 1000h" \
+ "int 10h" \
+ "mov ax, 700h" \
+ "mov bh, 7" \
+ "xor cx, cx" \
+ "mov dx, 184Fh" \
+ "int 10h" \
+ "mov ax, 200h" \
+ "xor bx, bx" \
+ "xor dx, dx" \
+ "int 10h" \
+ modify [ax bx cx dx] nomemory;
+
+void print_detected_harddisks(void)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t hd_count;
+ uint8_t hd_curr = 0;
+ uint8_t ide_ctrl_printed = 0;
+ uint8_t sata_ctrl_printed = 0;
+ uint8_t scsi_ctrl_printed = 0;
+ uint8_t device;
+
+ hd_count = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount);
+
+ for (hd_curr = 0; hd_curr < hd_count; hd_curr++)
+ {
+ device = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdidmap[hd_curr]);
+
+#ifdef VBOX_WITH_AHCI
+ if (VBOX_IS_AHCI_DEVICE(device))
+ {
+ if (sata_ctrl_printed == 0)
+ {
+ printf("\n\n AHCI controller:");
+ sata_ctrl_printed = 1;
+ }
+
+ printf("\n %d) Hard disk", hd_curr+1);
+
+ }
+ else
+#endif
+#ifdef VBOX_WITH_SCSI
+ if (VBOX_IS_SCSI_DEVICE(device))
+ {
+ if (scsi_ctrl_printed == 0)
+ {
+ printf("\n\n SCSI controller:");
+ scsi_ctrl_printed = 1;
+ }
+
+ printf("\n %d) Hard disk", hd_curr+1);
+
+ }
+ else
+#endif
+ {
+
+ if ((device < 4) && (ide_ctrl_printed == 0))
+ {
+ printf(" IDE controller:");
+ ide_ctrl_printed = 1;
+ }
+ else if ((device >= 4) && (sata_ctrl_printed == 0))
+ {
+ printf("\n\nAHCI controller:\n");
+ sata_ctrl_printed = 1;
+ }
+
+ printf("\n %d) ", hd_curr+1);
+
+ /*
+ * If actual_device is bigger than or equal 4
+ * this is the next controller and
+ * the positions start at the beginning.
+ */
+ if (device >= 4)
+ device -= 4;
+
+ if (device / 2)
+ printf("Secondary ");
+ else
+ printf("Primary ");
+
+ if (device % 2)
+ printf("Slave");
+ else
+ printf("Master");
+ }
+ }
+
+ if ( (ide_ctrl_printed == 0)
+ && (sata_ctrl_printed == 0)
+ && (scsi_ctrl_printed == 0))
+ printf("No hard disks found");
+
+ printf("\n");
+}
+
+uint8_t get_boot_drive(uint8_t scode)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+
+ /* Check that the scan code is in the range of detected hard disks. */
+ uint8_t hd_count = read_byte(ebda_seg, (uint16_t)&EbdaData->bdisk.hdcount);
+
+ /* The key '1' has scancode 0x02 which represents the first disk */
+ scode -= 2;
+
+ if (scode < hd_count)
+ return scode;
+
+ /* Scancode is higher than number of available devices */
+ return 0xff;
+}
+
+void show_logo(void)
+{
+ uint16_t ebda_seg = read_word(0x0040,0x000E);
+ uint8_t f12_pressed = 0;
+ uint8_t scode;
+ uint16_t tmp, i;
+
+ LOGOHDR *logo_hdr = 0;
+ uint8_t is_fade_in, is_fade_out, uBootMenu;
+ uint16_t logo_time;
+ uint16_t old_mode;
+
+
+ // Set PIT to 64hz.
+ wait_init();
+
+ // Get main signature
+ tmp = read_logo_word((uint8_t)&logo_hdr->u16Signature);
+ if (tmp != 0x66BB)
+ goto done;
+
+ // If there is no VBE, just skip this
+ if (vesa_get_mode(&old_mode) != 0x004f )
+ goto done;
+
+ // Get options
+ is_fade_in = read_logo_byte((uint8_t)&logo_hdr->fu8FadeIn);
+ is_fade_out = read_logo_byte((uint8_t)&logo_hdr->fu8FadeOut);
+ logo_time = read_logo_word((uint8_t)&logo_hdr->u16LogoMillies);
+ uBootMenu = read_logo_byte((uint8_t)&logo_hdr->fu8ShowBootMenu);
+
+ // Is Logo disabled?
+ if (!is_fade_in && !is_fade_out && !logo_time)
+ goto done;
+
+ /* Set video mode using private video BIOS interface. */
+ tmp = custom_set_mode(640, 480, 32);
+ /* If custom mode set failed, fall back to VBE. */
+ if (tmp != 0x4F)
+ vesa_set_mode(0x142);
+
+ if (is_fade_in)
+ {
+ for (i = 0; i <= LOGO_SHOW_STEPS; i++)
+ {
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | i);
+ scode = wait(16 / WAIT_MS, 0);
+ if (scode == F12_SCAN_CODE)
+ {
+ f12_pressed = 1;
+ break;
+ }
+ }
+ }
+ else
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | LOGO_SHOW_STEPS);
+
+ // Wait (interval in milliseconds)
+ if (!f12_pressed)
+ {
+ scode = wait(logo_time / WAIT_MS, 1);
+ if (scode == F12_SCAN_CODE)
+ f12_pressed = 1;
+ }
+
+ // Fade out (only if F12 was not pressed)
+ if (is_fade_out && !f12_pressed)
+ {
+ for (i = LOGO_SHOW_STEPS; i > 0 ; i--)
+ {
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | i);
+ scode = wait(16 / WAIT_MS, 0);
+ if (scode == F12_SCAN_CODE)
+ {
+ f12_pressed = 1;
+ break;
+ }
+ }
+ }
+ else if (!f12_pressed)
+ outw(LOGO_IO_PORT, LOGO_CMD_SHOW_BMP | 0);
+
+done:
+ // Clear forced boot drive setting.
+ write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice, 0);
+
+ // Don't restore previous video mode
+ // The default text mode should be set up. (defect @bugref{1235})
+ set_mode(0x0003);
+
+ // If Setup menu enabled
+ if (uBootMenu)
+ {
+ // If the graphics logo disabled
+ if (!is_fade_in && !is_fade_out && !logo_time)
+ {
+ if (uBootMenu == 2)
+ printf("Press F12 to select boot device.\n");
+
+ // if the user has pressed F12 don't wait here
+ if (!f12_pressed)
+ {
+ // Wait for timeout or keystroke
+ scode = wait(F12_WAIT_TIME, 1);
+ if (scode == F12_SCAN_CODE)
+ f12_pressed = 1;
+ }
+ }
+
+ // If F12 pressed, show boot menu
+ if (f12_pressed)
+ {
+ uint8_t boot_device = 0;
+ uint8_t boot_drive = 0;
+
+ clear_screen();
+
+ // Show menu. Note that some versions of bcc freak out if we split these strings.
+ printf("\nVirtualBox temporary boot device selection\n\nDetected Hard disks:\n\n");
+ print_detected_harddisks();
+ printf("\nOther boot devices:\n f) Floppy\n c) CD-ROM\n l) LAN\n\n b) Continue booting\n");
+
+
+
+ // Wait for keystroke
+ for (;;)
+ {
+ do
+ {
+ scode = wait(WAIT_HZ, 1);
+ } while (scode == 0);
+
+ if (scode == 0x30)
+ {
+ // 'b' ... continue
+ break;
+ }
+
+ // Check if hard disk was selected
+ if ((scode >= 0x02) && (scode <= 0x09))
+ {
+ boot_drive = get_boot_drive(scode);
+
+ /*
+ * 0xff indicates that there is no mapping
+ * from the scan code to a hard drive.
+ * Wait for next keystroke.
+ */
+ if (boot_drive == 0xff)
+ continue;
+
+ write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDrive, boot_drive);
+ boot_device = 0x02;
+ break;
+ }
+
+ switch (scode)
+ {
+ case 0x21:
+ // Floppy
+ boot_device = 0x01;
+ break;
+ case 0x2e:
+ // CD-ROM
+ boot_device = 0x03;
+ break;
+ case 0x26:
+ // LAN
+ boot_device = 0x04;
+ break;
+ }
+
+ if (boot_device != 0)
+ break;
+ }
+
+ write_byte(ebda_seg, (uint16_t)&EbdaData->uForceBootDevice, boot_device);
+
+ // Switch to text mode. Clears screen and enables cursor again.
+ set_mode(0x0003);
+ }
+ }
+
+ // Restore PIT ticks
+ wait_uninit();
+
+ return;
+}
+
+
+void delay_boot(uint16_t secs)
+{
+ uint16_t i;
+
+ if (!secs)
+ return;
+
+ // Set PIT to 1ms ticks
+ wait_init();
+
+ printf("Delaying boot for %d seconds:", secs);
+ for (i = secs; i > 0; i--)
+ {
+ printf(" %d", i);
+ wait(WAIT_HZ, 0);
+ }
+ printf("\n");
+ // Restore PIT ticks
+ wait_uninit();
+}
diff --git a/src/VBox/Devices/PC/BIOS/makefile b/src/VBox/Devices/PC/BIOS/makefile
new file mode 100644
index 00000000..40d0f4ad
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/makefile
@@ -0,0 +1,72 @@
+# Compiler flags:
+# -q no banner
+# -wx max warnings
+# -0 generate 8086 code
+# -ms force small model (default)
+# -s remove runtime stack checks (required)
+# -os optimize for size
+# -zu assume that SS != DS (required)
+# -ecc default to __cdecl calling convention (bad idea)
+#
+!ifdef __UNIX__
+Q=\"
+!else
+Q="
+!endif
+
+CPU = 386
+
+CFLAGS = -q -0 -wx -zu -s -oas -d1+ -ms
+CFLAGS32 = -q -wx -zu -s -oas -d1+ -ms -nt=BIOS32 -nd=BIOS32
+# -oat seems to prevent ENTER/LEAVE generation
+#CFLAGS32 = -q -wx -zu -s -oat -d1+ -ms -nt=BIOS32 -nd=BIOS32
+
+DEFS = -DVBOX -DVBOX_LANBOOT_SEG=0xE200 -DVBOX_VERSION_STRING=$(Q)0.9$(Q) &
+ -DVBOX_WITH_SCSI -DVBOX_BIOS_CPU=80386
+
+AFLAGS = -q -0 -wx
+
+INCLS = -I$(Q)../../../../../include$(Q) -I$(Q) ../../BiosCommonCode$(Q)
+
+OBJS = bios.obj post.obj ata.obj floppy.obj floppyt.obj eltorito.obj &
+ boot.obj keyboard.obj disk.obj serial.obj system.obj invop.obj &
+ timepci.obj logo.obj ps2mouse.obj parallel.obj scsi.obj &
+ apm.obj apm_pm.obj pcibios.obj pciutil.obj vds.obj &
+ print.obj pcibio32.obj pci32.obj orgs.obj
+
+!if $(CPU) > 286
+OBJS += ahci.obj
+DEFS += -DVBOX_WITH_AHCI
+!endif
+
+.c.obj : .autodepend
+ wcc -fo=.obj $(CFLAGS) $(DEFS) $(INCLS) $<
+
+.asm.obj : .autodepend
+ wasm -fo=.obj $(AFLAGS) $(DEFS) $(INCLS) $<
+
+vbxbios.rom : vbxbios.bin
+ biossums $< $@
+
+vbxbios.bin : $(OBJS) $(__MAKEFILES__)
+ wlink name $@ system dos debug all option quiet &
+ option nofarcalls, map, verbose, statics, symfile &
+ output raw offset=0xF0000 order &
+ clname DATA segaddr=0xF000 segment _DATA &
+ clname CODE &
+ segment _TEXT segaddr=0xF000 offset=0x1C00 &
+ segment BIOS32 segaddr=0xF000 offset=0xDB00 &
+ segment BIOSSEG segaddr=0xF000 offset=0xE000 &
+ file { $(OBJS) } &
+ library clibs.lib &
+ disable 1014, 1023, 2120
+
+logo.obj : logo.c .autodepend
+ wcc -fo=.obj $(INCLS) $(CFLAGS) $(DEFS) -DVBOX_PC_BIOS $<
+
+pci32.obj : pci32.c .autodepend
+ wcc386 -fo=.obj $(INCLS) $(DEFS) $(CFLAGS32) $<
+
+clean : .symbolic
+ @rm -f *.obj *.err
+ @rm -f vbxbios.bin vbxbios.rom vbxbios.map vbxbios.sym
diff --git a/src/VBox/Devices/PC/BIOS/notes.txt b/src/VBox/Devices/PC/BIOS/notes.txt
new file mode 100644
index 00000000..2861cb8b
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/notes.txt
@@ -0,0 +1,195 @@
+
+ Notes on BIOS usage
+ -------------------
+
+- DOS (including 6.22/7.1) does not need INT 15h or INT 1Ah. Most other
+ operating systems require INT 15h to detect installed memory.
+
+- OS/2 (WSeB/MCP/ACP) and Windows 98 SE are some of the very few operating
+ systems which use the El Torito floppy emulation.
+
+- NetWare 5.1 is one of the *extremely* few users of El Torito hard disk
+ emulation.
+
+- Keystroke check (INT 16h, fn 01h/11h) always enables interrupts on return.
+ DOS POWER.EXE depends on that in some situations.
+
+- IBM DOS J5.00/V is even worse and does a far jump into INT 16h/11h after
+ pushing garbage on the stack. Using IRET directly may change IOPL, set
+ TF, change direction flag, etc. We have to use or simulate RETF 2 instead.
+
+- MS-DOS 5.0/V setup assumes that INT 13h always returns with interrupts
+ enabled.
+
+- INT 15h also always returns with interrupts enabled (even for unsupported
+ functions).
+
+- MS-DOS 6.2/V is a rare user of the INT 15h keyboard intercept routines.
+
+- Some software uses the model byte at F000:FFFE to determine the system
+ type (PC-DOS 3.0, Norton Utilities 8). Other software first tries INT 15h,
+ fn C0h instead (PC-DOS 3.1, MSD).
+
+- DOS 4.01 (both IBM and Microsoft) calls INT 13h to read from disk with less
+ than 100 bytes of stack space early in the boot sequence. This tends to be
+ a problem especially for the SATA and SCSI code paths.
+
+- Very few guests use the 32-bit PCI BIOS interface. One is OS/2 (but falls
+ back), another is Etherboot.
+
+- OS/2 is the only known guest which can run the 16-bit PCI BIOS in protected
+ mode (but only if the 32-bit PCI BIOS is unavailable).
+
+- NetWare 6.x is the only known guest which uses the PCI BIOS service to read
+ the IRQ routing table.
+
+- Any disk reads which use bus-master DMA (AHCI, IDE BM) must use VDS
+ (Virtual DMA Services) when present. Otherwise any reads/writes when the
+ real mode addresses don't map directly to physical addresses will fail
+ horribly. DOS 6.x with EMM386 is a good testcase (esp. loading drivers
+ into UMBs).
+
+- Many older OSes (especially UNIX based) require the FDPT to contain
+ physical ATA disk geometry; for that reason, disks smaller than ~500MB are
+ easiest to use. Otherwise a "large" BIOS disk option would be required.
+
+- Some really old OSes (Xenix circa 1986-7) do not understand the EBDA idea
+ and clear the memory. For those, the FDPT must be in the BIOS ROM area, or
+ the OS will destroy it (even when it's at 0:300 in the IVT).
+
+- NetWare 2.15 has a similar restriction, the FDPT must explicitly point above
+ segment address C800 or the NetWare AT disk driver abends.
+
+- Windows NT (including XP) uses INT 13h/08h to obtain the DPT for each floppy
+ drive. NT assumes a 13-byte DPT which includes the number of tracks. NT will
+ refuse to read more tracks than the DPT specifies and formats as many tracks
+ as the DPT specifies.
+
+- Windows 98 SE boot CD uses 32-bit registers in real mode and will fail in
+ mysterious ways if BIOS trashes high bits of EAX (and likely others).
+
+- PC DOS 6.x/7.x QCONFIG is a rare user of INT 16h fn 0Ah (read keyboard ID).
+
+- DOS POWER.EXE uses the real mode APM interface, OS/2 APM.SYS uses the 16-bit
+ protected mode APM interface, and Windows 9x uses the 32-bit protected mode
+ APM interface.
+
+- Windows 98 is one of the few APM 1.2 users; Windows 95 uses APM 1.1, while
+ newer systems prefer ACPI.
+
+- QNX4 calls 16-bit protected-mode PCI BIOS in an environment where ESP is
+ 16-bit but SS is a 32-bit stack segment. In such environments, using the
+ ENTER/LEAVE sequence is fatal if the high word of EBP is non-zero (which
+ it will be with QNX 4.25). LEAVE propagates the high word of EBP into ESP
+ with fatal consequences.
+
+- Plan 9 also runs 16-bit code with a 32-bit stack segment, except Plan 9
+ thinks it counts as real mode. Same ENTER/LEAVE problem as above.
+
+- AIX 1.3 is a rare user of INT 15h/89h (switch to protected mode) service.
+
+- IBM OS/2 1.0/1.1 (but not other versions!) attempt to execute a 286 LOADALL
+ instruction. LOADALL must be emulated for OS/2 to work properly. HIMEM.SYS
+ version 2.03 and later also contains 286 LOADALL code but this will not be
+ executed on 386+ processors.
+
+- IBM and Microsoft OS/2 1.0 use CMOS shutdown status 9 to get back from
+ protected mode without having called INT 15h/87h at all. That makes the
+ status 9 handling a public interface (just like codes 5 and 0Ah) which
+ has to be compatible with other BIOS implementations.
+
+- Windows NT 3.5 and 3.51 with MPS HAL requires that INT 15h/E820h return the
+ I/O APIC range as reserved, or not return any ranges at all just below 4GB.
+ Otherwise the NT kernel will crash early during init due to confusion about
+ the top of memory.
+
+- Darwin x86 6.0.2 ISO (darwinx86-602.iso) has a bizarre boot sector (using
+ El Torito hard disk emulation) with the first five bytes being zero. It
+ appears to be valid despite the oddity.
+
+- Darwin 6.0.2 also uses an El Torito emulated hard disk. In addition, if
+ INT 13h/41h succeeds, Darwin uses INT13X to read from the emulated drive.
+
+- Symantec Ghost 11.5 bootable CD also uses El Torito hard disk emulation,
+ uses INT13X without checking for support, and crashes if INT13X is not
+ supported on the emulated drive.
+
+
+ 286 BIOS
+ --------
+
+ For testing purposes, it's quite useful to have a BIOS that can run in a
+classic PC/AT environment with a 286 CPU. This forces various changes, not
+always obvious:
+
+ - C code can be easily compiled to produce 286-compatible object code
+
+ - 32-bit BIOS services such as APM or PCI BIOS are irrelevant
+
+ - PCI cannot be supported because it requires 32-bit port I/O
+
+ - AHCI cannot be supported because it requires 32-bit port I/O and PCI
+
+ - Switching to protected mode must be done using LMSW instead of CR0
+
+ - Switching back to real mode must reset the CPU (currently triple fault)
+ and regain control by setting up the CMOS shutdown status byte
+
+
+
+ Notes on BIOS implementation
+ ----------------------------
+
+- To return values from functions not declared as __interrupt, the arguments
+ may need to be declared volatile (not ideal, but does the job).
+
+- The way the POST code selectively clears or doesn't clear memory
+ is extremely suspect and will need reworking.
+
+- Need to review string routines wrt direction flag (should be OK now).
+
+- Need to review CMOS access wrt interrupts (possible index reg change by
+ an interrupt handler).
+
+- The POST code zeroes the entire BDA, and then various bits zero specific
+ parts of the BDA again. That's a waste of time.
+
+- After a reset, all interrupts are unmasked. Not sure if that's OK.
+
+- BCC mishandles the following (where buf is an uint8_t array):
+ lba=buf[0x2B]*0x1000000+buf[0x2A]*0x10000+buf[0x29]*0x100+buf[0x28];
+ The buf[x]*100 expression should end up being of type signed int, which
+ causes the sign to be incorrectly propagated. BCC incorrectly keeps
+ the type unsigned.
+
+- The PCI BIOS services are implemented in C, compiled twice as 16-bit and
+ 32-bit code. This reduces the development effort and significantly lowers
+ the risk of discrepancies between 16-bit and 32-bit implementation. Care
+ must be taken because the 16-bit implementation can be executed in both
+ real and protected mode.
+
+- APM can be in theory implemented only once for real, 16-bit protected and
+ 32-bit protected mode. Unfortunately this is very inconvenient in C since
+ the default stack size changes between 16-bit and 32-bit callers. Therefore
+ real mode APM (which supports most functions) is implemented in C and
+ protected-mode APM is written in assembler for both 16-bit and 32-bit calls,
+ with a small 32->16 thunk.
+
+- The -of switch can be used to avoid generating ENTER/LEAVE instructions.
+ This appears to be an undocumented and perhaps unintentional side effect.
+
+
+ Code size notes (code as of 7/6/2011):
+
+ The following values are the size of the _TEXT segment, i.e. only C code;
+data defined in C is not included, neither are assembly modules.
+
+ Options: Size (hex):
+ -------- -----------
+ -0 -zu -s -oas -ecc 631A
+ -3 -zu -s -oas -ecc 5C1E
+ -0 -zu -s -oas 578A
+ -3 -zu -s -oas 5452
+
+ Both generating 386 code and using register-based calling convention for
+internal functions brings significant size savings (15% when combined).
diff --git a/src/VBox/Devices/PC/BIOS/orgs.asm b/src/VBox/Devices/PC/BIOS/orgs.asm
new file mode 100644
index 00000000..1706b71d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/orgs.asm
@@ -0,0 +1,2069 @@
+; $Id: orgs.asm $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+
+include commondefs.inc
+
+EBDA_SEG equ 09FC0h ; starts at 639K
+EBDA_SIZE equ 1 ; 1K
+BASE_MEM_IN_K equ (640 - EBDA_SIZE)
+
+CMOS_ADDR equ 070h
+CMOS_DATA equ 071h
+
+
+PIC_CMD_EOI equ 020h
+PIC_MASTER equ 020h
+PIC_SLAVE equ 0A0h
+
+BIOS_FIX_BASE equ 0E000h
+
+if VBOX_BIOS_CPU ge 80286
+SYS_MODEL_ID equ 0FCh ; PC/AT
+else
+SYS_MODEL_ID equ 0FBh ; PC/XT
+endif
+SYS_SUBMODEL_ID equ 0
+BIOS_REVISION equ 1
+
+BIOS_BUILD_DATE equ '06/23/99'
+BIOS_COPYRIGHT equ 'Oracle VM VirtualBox BIOS'
+
+BX_ROMBIOS32 equ 0
+BX_CALL_INT15_4F equ 1
+
+;; Set a fixed BIOS location, with a marker for verification
+BIOSORG macro addr, addr_minus_two
+.errnz (addr - 2 - addr_minus_two) ;; Couldn't convince wasm to accept $ here. Would've save us a lot of bother and ugly SED.
+ BIOSORG_CHECK_BEFORE addr_minus_two
+ org addr - BIOS_FIX_BASE - 2
+ db 'XM'
+ BIOSORG_CHECK addr
+ endm
+
+;; Set an interrupt vector (not very efficient if multiple vectors are
+;; programmed in one go)
+SET_INT_VECTOR macro vec, segm, offs
+ mov ax, offs
+ mov ds:[vec*4], ax
+ mov ax, segm
+ mov ds:[vec*4+2], ax
+endm
+
+; Set up an environment C code expects. DS must point to the BIOS segment
+; and the direction flag must be cleared(!)
+C_SETUP macro
+ push cs
+ pop ds
+ cld
+endm
+
+
+;; External function in separate modules
+extrn _dummy_isr_function:near
+extrn _log_bios_start:near
+extrn _nmi_handler_msg:near
+extrn _int18_panic_msg:near
+extrn _int09_function:near
+extrn _int13_diskette_function:near
+extrn _int13_eltorito:near
+extrn _int13_cdemu:near
+extrn _int13_cdrom:near
+extrn _cdemu_isactive:near
+extrn _cdemu_emulated_drive:near
+extrn _int13_harddisk:near
+extrn _int13_harddisk_ext:near
+extrn _int14_function:near
+extrn _int15_function:near
+extrn _int15_function_mouse:near
+extrn _int16_function:near
+extrn _int17_function:near
+extrn _int19_function:near
+extrn _int1a_function:near
+extrn _pci16_function:near
+extrn _int70_function:near
+extrn _int74_function:near
+extrn _apm_function:near
+extrn _ata_init:near
+extrn _scsi_init:near
+extrn _ata_detect:near
+extrn _cdemu_init:near
+extrn _keyboard_init:near
+extrn _print_bios_banner:near
+extrn _inv_op_handler:near
+extrn rom_scan_:near
+ifdef VBOX_WITH_AHCI
+extrn _ahci_init:near
+endif
+if VBOX_BIOS_CPU ge 80286
+extrn _int15_blkmove:near
+endif
+if VBOX_BIOS_CPU ge 80386
+extrn _int15_function32:near
+extrn _apic_setup:near
+endif
+
+
+;; Symbols referenced from C code
+public _diskette_param_table
+public _pmode_IDT
+public _rmode_IDT
+public post
+public eoi_both_pics
+public rtc_post
+
+;; Additional publics for easier disassembly and debugging
+ifndef DEBUG
+ DEBUG equ 1
+endif
+ifdef DEBUG
+
+public int08_handler
+public int0e_handler
+public int11_handler
+public int12_handler
+public int13_handler
+public int13_relocated
+if VBOX_BIOS_CPU eq 8086
+public jmp_call_ret_int13_out
+endif
+public int15_handler
+public int17_handler
+public int19_handler
+public int19_relocated
+public dummy_iret
+public nmi
+public rom_fdpt
+public cpu_reset
+public normal_post
+public eoi_jmp_post
+public no_eoi_jmp_post
+public eoi_master_pic
+public ebda_post
+public seg_40_value
+public hard_drive_post
+public int13_legacy
+public int70_handler
+public int75_handler
+public int15_handler32
+public int15_handler_mouse
+public iret_modify_cf
+public init_pic
+public floppy_post
+public int13_out
+public int13_disk
+public int13_notfloppy
+public int13_legacy
+public int13_noeltorito
+public int1c_handler
+public int10_handler
+public int74_handler
+public int76_handler
+public detect_parport
+public detect_serial
+public font8x8
+
+endif
+
+;; Keyboard related constants
+KBDC_DISABLE EQU 0ADh
+KBDC_ENABLE EQU 0AEh
+KBC_CMD EQU 64h
+KBC_DATA EQU 60h
+
+
+;; NOTE: The last 8K of the ROM BIOS are peppered with fixed locations which
+;; must be retained for compatibility. As a consequence, some of the space is
+;; going to be wasted, but the gaps should be filled with miscellaneous code
+;; and data when possible.
+
+SET_DEFAULT_CPU_286
+
+BIOSSEG segment 'CODE'
+ assume cs:BIOSSEG
+
+;;
+;; Start of fixed code - eoi_jmp_post is kept near here to allow short jumps.
+;;
+ BIOSORG 0E030h, 0E02Eh
+eoi_both_pics:
+ mov al, PIC_CMD_EOI
+ out PIC_SLAVE, al
+eoi_master_pic:
+ mov al, PIC_CMD_EOI
+ out PIC_MASTER, al
+ ret
+
+ ;; routine to write the pointer in DX:AX to memory starting
+ ;; at DS:BX (repeat CX times)
+ ;; - modifies BX, CX
+set_int_vects proc near
+
+ mov [bx], ax
+ mov [bx+2], dx
+ add bx, 4
+ loop set_int_vects
+ ret
+
+set_int_vects endp
+
+eoi_jmp_post:
+;; Calling eoi_both_pics can't be done because it writes to stack, potentially
+;; corrupting memory. AT BIOS also only clears the master PIC, not both.
+ ;; clear keyboard buffer (and possible interrupt)
+ in al, KBC_DATA
+ mov al, PIC_CMD_EOI
+ out PIC_MASTER, al
+
+no_eoi_jmp_post:
+ mov ax, 40h
+ mov ds, ax
+ jmp dword ptr ds:[67h]
+
+seg_40_value: dw 40h ;; Replaces a push 40; pop ds.
+
+;; --------------------------------------------------------
+;; POST entry point
+;; --------------------------------------------------------
+ BIOSORG 0E05Bh, 0E059h
+post:
+ cli
+
+if VBOX_BIOS_CPU ge 80286
+ ;; Check if in protected (V86) mode. If so, the CPU needs
+ ;; to be reset.
+ .286p
+ smsw ax
+ test ax, 1
+ jz in_real_mode
+ SET_DEFAULT_CPU_286
+else
+ jmp in_real_mode
+endif
+
+ ;; Reset processor to get out of protected mode. Use system
+ ;; port instead of KBC.
+reset_sys:
+ mov al, 1
+ out 92h, al
+ jmp $ ; not strictly necessary in a VM
+
+
+in_real_mode:
+ ;; read the CMOS shutdown status
+ mov al, 0Fh
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+
+ ;; save status
+ xchg ah, al
+
+ ;; Check KBC self-test/shutdown flag. If it is set, we need
+ ;; to check for a reboot attempt.
+ in al, 64h
+ test al, 4 ; clear flag indicates cold boot
+ jz cont_post
+
+ ;; Warm boot, check the shutdown byte.
+ mov al, ah
+ or al, al
+ jnz cont_post
+
+ ;; Warm boot but shutdown byte is zero. This is either a warm
+ ;; boot request or an attempt to reset the system via triple
+ ;; faulting the CPU or similar. Check reboot flag.
+ ;; NB: At this point, registers need not be preserved.
+ mov ds, cs:[seg_40_value]
+ cmp word ptr ds:[72h], 1234h
+ jnz reset_sys ; trigger system reset
+
+cont_post:
+ ;; reset the shutdown status in CMOS
+ mov al, 0Fh
+ out CMOS_ADDR, al
+ mov al, 0
+ out CMOS_DATA, al
+
+ ;; pre-check the shutdown status - shutdown codes 9/A leave
+ ;; the hardware alone
+ mov al, ah
+ cmp al, 09h
+ jz check_shutdown
+ cmp al, 0Ah
+ jz check_shutdown
+
+ xor al, al
+
+ ;; reset the DMA controllers
+ out 00Dh, al
+ out 0DAh, al
+
+ ;; then initialize the DMA controllers
+ mov al, 0C0h
+ out 0D6h, al ; enable channel 4 cascade
+ mov al, 0
+ out 0D4h, al ; unmask channel 4
+
+check_shutdown:
+ ;; examine the shutdown status code
+ mov al, ah
+ cmp al, 0
+ jz normal_post
+
+ cmp al, 0Dh
+ jae normal_post
+ cmp al, 9
+ jne check_next_std
+ jmp return_blkmove
+check_next_std:
+
+ mov sp, 400h
+ ;; 05h = EOI + jump through 40:67
+ cmp al, 5
+ je eoi_jmp_post
+ ;; 0ah = jump through 40:67 (no EOI) ;ba x 1 %fe05b ; ba x 1 %18b81
+ cmp al, 0ah
+ je no_eoi_jmp_post
+
+ ;; any other shutdown status values are ignored
+ ;; OpenSolaris sets the status to 0Ah in some cases?
+ jmp normal_post
+
+normal_post:
+ ;; shutdown code 0: normal startup
+
+ ;; Set up the stack top at 0:7800h. The stack should not be
+ ;; located above 0:7C00h; that conflicts with PXE, which
+ ;; considers anything above that address to be fair game.
+ ;; The traditional locations are 30:100 (PC) or 0:400 (PC/AT).
+ mov ax, 7800h
+ mov sp, ax
+ xor ax, ax
+ mov ds, ax
+ mov ss, ax
+
+ ;; clear the bottom of memory except for the word at 40:72
+ ;; TODO: Why not clear all of it? What's the point?
+ mov es, ax
+ xor di, di
+ cld
+ mov cx, 0472h / 2
+ rep stosw
+ inc di
+ inc di
+ mov cx, (1000h - 0472h - 2) / 2
+ rep stosw
+
+ ;; clear the remaining base memory except for the top
+ ;; of the EBDA (the MP table is planted there)
+ xor bx, bx
+memory_zero_loop:
+ add bx, 1000h
+ cmp bx, 9000h
+ jae memory_cleared
+ mov es, bx
+ xor di, di
+ mov cx, 8000h ; 32K words
+ rep stosw
+ jmp memory_zero_loop
+memory_cleared:
+ mov es, bx
+ xor di, di
+ mov cx, 7FF8h ; all but the last 16 bytes
+ rep stosw
+ xor bx, bx
+
+
+ C_SETUP
+ call _log_bios_start
+
+if VBOX_BIOS_CPU ge 80386
+ call pmode_setup
+endif
+
+ ;; set all interrupts in 00h-5Fh range to default handler
+ xor bx, bx
+ mov ds, bx
+ mov cx, 60h ; leave the rest as zeros
+ mov ax, dummy_iret
+ mov dx, BIOSSEG
+ call set_int_vects
+
+ ;; also set 68h-77h to default handler; note that the
+ ;; 60h-67h range must contain zeros for certain programs
+ ;; to function correctly
+ mov bx, 68h * 4
+ mov cx, 10h
+ call set_int_vects
+
+ ;; base memory in K to 40:13
+ mov ax, BASE_MEM_IN_K
+ mov ds:[413h], ax
+
+ ;; manufacturing test at 40:12
+ ;; zeroed out above
+
+ ;; set up various service vectors
+ ;; TODO: This should use the table at FEF3h instead
+ SET_INT_VECTOR 06h, BIOSSEG, int06_handler
+ SET_INT_VECTOR 11h, BIOSSEG, int11_handler
+ SET_INT_VECTOR 12h, BIOSSEG, int12_handler
+ SET_INT_VECTOR 15h, BIOSSEG, int15_handler
+ SET_INT_VECTOR 17h, BIOSSEG, int17_handler
+ SET_INT_VECTOR 18h, BIOSSEG, int18_handler
+ SET_INT_VECTOR 19h, BIOSSEG, int19_handler
+ SET_INT_VECTOR 1Ch, BIOSSEG, int1c_handler
+
+ call ebda_post
+
+ ;; Initialize PCI devices. This can and should be done early.
+if VBOX_BIOS_CPU ge 80386 ; (Impossible to do on 16-bit CPUs.)
+ call pcibios_init_iomem_bases
+ call pcibios_init_irqs
+endif
+ SET_INT_VECTOR 1Ah, BIOSSEG, int1a_handler
+
+ ;; PIT setup
+ SET_INT_VECTOR 08h, BIOSSEG, int08_handler
+ mov al, 34h ; timer 0, binary, 16-bit, mode 2
+ out 43h, al
+ mov al, 0 ; max count -> ~18.2 Hz
+ out 40h, al
+ out 40h, al
+
+ ;; video setup - must be done before POSTing VGA ROM
+ SET_INT_VECTOR 10h, BIOSSEG, int10_handler
+
+ ;; keyboard setup
+ SET_INT_VECTOR 09h, BIOSSEG, int09_handler
+ SET_INT_VECTOR 16h, BIOSSEG, int16_handler
+
+ xor ax, ax
+ mov ds, ax
+ ;; TODO: What's the point? The BDA is zeroed already?!
+ mov ds:[417h], al ; keyboard shift flags, set 1
+ mov ds:[418h], al ; keyboard shift flags, set 2
+ mov ds:[419h], al ; keyboard Alt-numpad work area
+ mov ds:[471h], al ; keyboard Ctrl-Break flag
+ mov ds:[497h], al ; keyboard status flags 4
+ mov al, 10h
+ mov ds:[496h], al ; keyboard status flags 3
+
+ mov bx, 1Eh
+ mov ds:[41Ah], bx ; keyboard buffer head
+ mov ds:[41Ch], bx ; keyboard buffer tail
+ mov ds:[480h], bx ; keyboard buffer start
+ mov bx, 3Eh
+ mov ds:[482h], bx ; keyboard buffer end
+
+ ;; store CMOS equipment byte in BDA
+ mov al, 14h
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+ mov ds:[410h], al
+
+ push ds
+ C_SETUP
+
+ ;; Scan for video ROMs in the C000-C800 range. This is done
+ ;; early so that errors are displayed on the screen.
+ mov ax, 0C000h
+ mov dx, 0C800h
+ call rom_scan_
+
+ ;; Initialize the keyboard
+ call _keyboard_init
+ pop ds
+
+ ;; parallel setup
+ SET_INT_VECTOR 0Fh, BIOSSEG, dummy_iret
+ xor ax, ax
+ mov ds, ax
+ xor bx, bx
+ mov cl, 14h ; timeout value
+ mov dx, 378h ; parallel port 1
+ call detect_parport
+ mov dx, 278h ; parallel port 2
+ call detect_parport
+ DO_shl bx, 0Eh
+ mov ax, ds:[410h] ; equipment word
+ and ax, 3FFFh
+ or ax, bx ; set number of parallel ports
+ mov ds:[410h], ax ; store in BDA
+
+ ;; Serial setup
+ SET_INT_VECTOR 0Bh, BIOSSEG, dummy_isr ; IRQ 3
+ SET_INT_VECTOR 0Ch, BIOSSEG, dummy_isr ; IRQ 4
+ SET_INT_VECTOR 14h, BIOSSEG, int14_handler
+ xor bx, bx
+ mov cl, 0Ah ; timeout value
+ mov dx, 3F8h ; first serial address
+ call detect_serial
+ mov dx, 2F8h ; second serial address
+ call detect_serial
+ mov dx, 3E8h ; third serial address
+ call detect_serial
+ mov dx, 2E8h ; fourth serial address
+ call detect_serial
+ DO_shl bx, 9
+ mov ax, ds:[410h] ; equipment word
+ and ax, 0F1FFh ; bits 9-11 determine serial ports
+ or ax, bx
+ mov ds:[410h], ax
+
+ ;; CMOS RTC
+ SET_INT_VECTOR 4Ah, BIOSSEG, dummy_iret ; TODO: redundant?
+ SET_INT_VECTOR 70h, BIOSSEG, int70_handler
+ ;; BIOS DATA AREA 4CEh ???
+ call rtc_post
+
+ jmp norm_post_cont
+
+
+;; --------------------------------------------------------
+;; NMI handler
+;; --------------------------------------------------------
+ BIOSORG 0E2C3h, 0E2C1h
+nmi:
+ C_SETUP
+ call _nmi_handler_msg
+ iret
+
+int75_handler:
+ out 0F0h, al ; clear IRQ13
+ call eoi_both_pics
+ int 2 ; emulate legacy NMI
+ iret
+
+
+hard_drive_post proc near
+
+ xor ax, ax
+ mov ds, ax
+ ;; TODO: Didn't we just clear the entire EBDA?
+ mov ds:[474h], al ; last HD operation status
+ mov ds:[477h], al ; HD port offset (XT only???)
+ mov ds:[48Ch], al ; HD status register
+ mov ds:[48Dh], al ; HD error register
+ mov ds:[48Eh], al ; HD task complete flag
+ mov al, 0C0h
+ mov ds:[476h], al ; HD control byte
+ ;; set up hard disk interrupt vectors
+ SET_INT_VECTOR 13h, BIOSSEG, int13_handler
+ SET_INT_VECTOR 76h, BIOSSEG, int76_handler
+ ;; The ATA init code sets up INT 41h/46h FDPT pointers
+ ret
+
+hard_drive_post endp
+
+
+norm_post_cont:
+ ;; PS/2 mouse setup
+ SET_INT_VECTOR 74h, BIOSSEG, int74_handler
+
+ ;; IRQ 13h (FPU exception) setup
+ SET_INT_VECTOR 75h, BIOSSEG, int75_handler
+
+ call init_pic
+
+ C_SETUP
+
+if VBOX_BIOS_CPU ge 80386
+ ;; Set up local APIC
+ .386
+ pushad
+ call _apic_setup
+ popad
+ SET_DEFAULT_CPU_286
+endif
+
+ ;; ATA/ATAPI driver setup
+ call _ata_init
+ call _ata_detect
+
+ifdef VBOX_WITH_AHCI
+ ; AHCI driver setup
+ ;; TODO: AHCI initialization needs timer, but enabling
+ ;; interrupts elsewhere may be risky. Just do it around
+ ;; the AHCI init.
+ sti
+ call _ahci_init
+ cli
+endif
+
+ifdef VBOX_WITH_SCSI
+ ; SCSI driver setup
+ call _scsi_init
+endif
+
+ ;; floppy setup
+ call floppy_post
+
+ ;; hard drive setup
+ call hard_drive_post
+
+ C_SETUP ; in case assembly code changed things
+ ;; Scan for additional ROMs in the C800-EFFF range
+ mov ax, 0C800h
+ mov dx, 0F000h
+ call rom_scan_
+
+if VBOX_BIOS_CPU ge 80386
+ ;; The POST code does not bother preserving high bits of the
+ ;; 32-bit registers. Now is a good time to clear them so that
+ ;; there's no garbage left in high bits.
+ .386
+ xor eax, eax
+ xor ebx, ebx
+ xor ecx, ecx
+ xor edx, edx
+ .286
+endif
+
+ call _print_bios_banner
+
+ ;; El Torito floppy/hard disk emulation
+ call _cdemu_init
+
+ ; TODO: what's the point of enabling interrupts here??
+ sti ; enable interrupts
+ int 19h
+ ;; does not return here
+ sti
+wait_forever:
+ hlt
+ jmp wait_forever
+ cli
+ hlt
+
+
+;;
+;; Return from block move (shutdown code 09h). Care must be taken to disturb
+;; register and memory state as little as possible.
+;;
+return_blkmove:
+ .286p
+ mov ax, 40h
+ mov ds, ax
+ ;; restore user stack
+ mov ss, ds:[69h]
+ mov sp, ds:[67h]
+ ;; reset A20 gate
+ in al, 92h
+ and al, 0FDh
+ out 92h, al
+ ;; ensure proper real mode IDT
+ lidt fword ptr cs:_rmode_IDT
+ ;; restore user segments
+ pop ds
+ pop es
+ ;; set up BP
+ mov bp, sp
+ ;; restore status code
+ in al, 80h
+ mov [bp+15], al
+ ;; set ZF/CF
+ cmp ah,al ; AH is zero here!
+ ;; restore registers and return
+ popa
+ sti
+ retf 2
+ SET_DEFAULT_CPU_286
+
+
+;; --------------------------------------------------------
+;; INT 13h handler - Disk services
+;; --------------------------------------------------------
+ BIOSORG 0E3FEh, 0E3FCh
+
+int13_handler:
+ jmp int13_relocated
+
+
+;; --------------------------------------------------------
+;; Fixed Disk Parameter Table
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0E401h ; fixed wrt preceding
+
+rom_fdpt:
+
+;; --------------------------------------------------------
+;; INT 19h handler - Boot load service
+;; --------------------------------------------------------
+ BIOSORG 0E6F2h, 0E6F0h
+
+int19_handler:
+ jmp int19_relocated
+
+
+
+;; --------------------------------------------------------
+;; System BIOS Configuration Table
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0E6F5h ; fixed wrt preceding
+; must match BIOS_CONFIG_TABLE
+bios_cfg_table:
+ dw 9 ; table size in bytes
+ db SYS_MODEL_ID
+ db SYS_SUBMODEL_ID
+ db BIOS_REVISION
+ ; Feature byte 1
+ ; b7: 1=DMA channel 3 used by hard disk
+ ; b6: 1=2 interrupt controllers present
+ ; b5: 1=RTC present
+ ; b4: 1=BIOS calls int 15h/4Fh for every key
+ ; b3: 1=wait for extern event supported (Int 15h/41h)
+ ; b2: 1=extended BIOS data area used
+ ; b1: 0=AT or ESDI bus, 1=MicroChannel
+ ; b0: 1=Dual bus (MicroChannel + ISA)
+ifdef BX_CALL_INT15_4F
+ db 74h; or USE_EBDA
+else
+ db 64h; or USE_EBDA
+endif
+ ; Feature byte 2
+ ; b7: 1=32-bit DMA supported
+ ; b6: 1=int16h, function 9 supported
+ ; b5: 1=int15h/C6h (get POS data) supported
+ ; b4: 1=int15h/C7h (get mem map info) supported
+ ; b3: 1=int15h/C8h (en/dis CPU) supported
+ ; b2: 1=non-8042 kb controller
+ ; b1: 1=data streaming supported
+ ; b0: reserved
+ db 40h
+ ; Feature byte 3
+ ; b7: not used
+ ; b6: reserved
+ ; b5: reserved
+ ; b4: POST supports ROM-to-RAM enable/disable
+ ; b3: SCSI on system board
+ ; b2: info panel installed
+ ; b1: Initial Machine Load (IML) system - BIOS on disk
+ ; b0: SCSI supported in IML
+ db 0
+ ; Feature byte 4
+ ; b7: IBM private
+ ; b6: EEPROM present
+ ; b5-3: ABIOS presence (011 = not supported)
+ ; b2: private
+ ; b1: memory split above 16Mb supported
+ ; b0: POSTEXT directly supported by POST
+ db 0
+ ; Feature byte 5 (IBM)
+ ; b1: enhanced mouse
+ ; b0: flash EPROM
+ db 0
+
+
+;; --------------------------------------------------------
+;; Baud Rate Generator Table
+;; --------------------------------------------------------
+ BIOSORG 0E729h, 0E727h
+
+
+;; --------------------------------------------------------
+;; INT 14h handler - Serial Communication Service
+;; --------------------------------------------------------
+ BIOSORG 0E739h, 0E737h
+int14_handler:
+ push ds
+ push es
+ DO_pusha
+ C_SETUP
+ call _int14_function
+ DO_popa
+ pop es
+ pop ds
+ iret
+
+
+
+;;
+;; Handler for unexpected hardware interrupts
+;;
+dummy_isr:
+ push ds
+ push es
+ DO_pusha
+ C_SETUP
+ call _dummy_isr_function
+ DO_popa
+ pop es
+ pop ds
+ iret
+
+
+init_pic proc near
+
+ mov al, 11h ; send init commands
+ out PIC_MASTER, al
+ out PIC_SLAVE, al
+ mov al, 08h ; base 08h
+ out PIC_MASTER+1, al
+ mov al, 70h ; base 70h
+ out PIC_SLAVE+1, al
+ mov al, 04h ; master PIC
+ out PIC_MASTER+1, al
+ mov al, 02h ; slave PIC
+ out PIC_SLAVE+1, al
+ mov al, 01h
+ out PIC_MASTER+1, al
+ out PIC_SLAVE+1, al
+ mov al, 0B8h ; unmask IRQs 0/1/2/6
+ out PIC_MASTER+1, al
+ mov al, 08Fh
+ out PIC_SLAVE+1, al ; unmask IRQs 12/13/14
+ ret
+
+init_pic endp
+
+ebda_post proc near
+
+ SET_INT_VECTOR 0Dh, BIOSSEG, dummy_isr ; IRQ 5
+ SET_INT_VECTOR 0Fh, BIOSSEG, dummy_isr ; IRQ 7
+ SET_INT_VECTOR 72h, BIOSSEG, dummy_isr ; IRQ 10
+ SET_INT_VECTOR 73h, BIOSSEG, dummy_isr ; IRQ 11
+ SET_INT_VECTOR 77h, BIOSSEG, dummy_isr ; IRQ 15
+
+ mov ax, EBDA_SEG
+ mov ds, ax
+ mov byte ptr ds:[0], EBDA_SIZE
+ ;; store EBDA seg in 40:0E
+ xor ax, ax
+ mov ds, ax
+ mov word ptr ds:[40Eh], EBDA_SEG
+ ret
+
+ebda_post endp
+
+
+
+;; --------------------------------------------------------
+;; INT 16h handler - Keyboard service
+;; --------------------------------------------------------
+ BIOSORG 0E82Eh, 0E82Ch
+int16_handler:
+ sti
+ ;; Flags are saved *after* enabling interrupts, and with
+ ;; implicitly cleared TF. Software may depend on that.
+ pushf
+ push es
+ push ds
+ DO_pusha
+
+ cmp ah, 0
+ je int16_F00
+
+ cmp ah, 10h
+ je int16_F00
+
+ C_SETUP
+ call _int16_function
+ DO_popa
+ pop ds
+ pop es
+ add sp, 2 ; Skip saved flags
+ iret
+
+int16_F00:
+ mov bx, 40h ; TODO: why 40h here and 0 elsewhere?
+ mov ds, bx
+int16_wait_for_key:
+ cli
+ mov bx, ds:[1Ah]
+ cmp bx, ds:[1Ch]
+ jne int16_key_found
+ sti
+ nop
+; TODO: review/enable?
+if 0
+ push ax
+ mov ax, 9002h
+ int 15h
+ pop ax
+endif
+ jmp int16_wait_for_key
+
+int16_key_found:
+ C_SETUP
+ call _int16_function
+ DO_popa
+ pop ds
+ pop es
+ add sp, 2 ; Skip saved flags
+; TODO: review/enable? If so, flags should be restored here?
+if 0
+ push ax
+ mov ax, 9202h
+ int 15h
+ pop ax
+endif
+ iret
+
+
+if VBOX_BIOS_CPU ge 80386
+;; Quick and dirty protected mode entry/exit routines
+include pmode.inc
+
+;; Initialization code which needs to run in protected mode (LAPIC etc.)
+include pmsetup.inc
+endif
+
+
+;; --------------------------------------------------------
+;; INT 09h handler - Keyboard ISR (IRQ 1)
+;; --------------------------------------------------------
+ BIOSORG 0E987h, 0E985h
+int09_handler:
+ cli ; TODO: why? they're off already!
+ push ax
+ mov al, KBDC_DISABLE
+ out KBC_CMD, al
+
+ in al, KBC_DATA
+ push ds
+ DO_pusha
+ cld ; Before INT 15h (and any C code)
+ifdef BX_CALL_INT15_4F
+ mov ah, 4Fh
+ stc
+ int 15h ; keyboard intercept
+ jnc int09_done
+endif
+ sti ; Only after calling INT 15h
+
+ ;; check for extended key
+ cmp al, 0E0h
+ jne int09_check_pause
+ xor ax, ax
+ mov ds, ax
+ or byte ptr ds:[496h], 2 ; mf2_state |= 0x02
+ jmp int09_done
+
+int09_check_pause:
+ cmp al, 0E1h ; pause key?
+ jne int09_process_key
+ xor ax, ax
+ mov ds, ax
+ or byte ptr ds:[496h], 1 ; mf2_state | 0x01
+ jmp int09_done
+
+int09_process_key:
+ push es
+ C_SETUP
+ call _int09_function
+ pop es
+
+int09_done:
+ DO_popa
+ pop ds
+ cli
+ call eoi_master_pic
+
+ mov al, KBDC_ENABLE
+ out KBC_CMD, al
+ pop ax
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 06h handler - Invalid Opcode Exception
+;; --------------------------------------------------------
+
+int06_handler:
+ DO_pusha
+ push es
+ push ds
+ C_SETUP
+ call _inv_op_handler
+ pop ds
+ pop es
+ DO_popa
+ iret
+
+;; --------------------------------------------------------
+;; INT 13h handler - Diskette service
+;; --------------------------------------------------------
+ BIOSORG 0EC59h, 0EC57h
+int13_diskette:
+ jmp int13_noeltorito
+
+
+
+;; --------------------------------------------------------
+;; INT 13h handler - Disk service
+;; --------------------------------------------------------
+int13_relocated:
+ ;; check for an El-Torito function
+ cmp ah, 4Ah
+ jb int13_not_eltorito
+
+ cmp ah, 4Dh
+ ja int13_not_eltorito
+
+ DO_pusha
+ push es
+ push ds
+ C_SETUP ; TODO: setup C envrionment only once?
+ DO_JMP_CALL_EX _int13_eltorito, int13_out, jmp_call_ret_int13_out ; ELDX not used
+if VBOX_BIOS_CPU eq 8086
+jmp_call_ret_int13_out: dw offset int13_out
+endif
+
+int13_not_eltorito:
+ push es
+ push ax ; TODO: better register save/restore
+ push bx
+ push cx
+ push dx
+
+ ;; check if emulation is active
+ call _cdemu_isactive
+ cmp al, 0
+ je int13_cdemu_inactive
+
+ ;; check if access to the emulated drive
+ call _cdemu_emulated_drive
+ pop dx ; recover dx (destroyed by C code)
+ push dx
+ cmp al, dl ; INT 13h on emulated drive
+ jne int13_nocdemu
+
+ pop dx
+ pop cx
+ pop bx
+ pop ax
+ pop es
+
+ DO_pusha
+ push es
+ push ds
+ C_SETUP ; TODO: setup environment only once?
+
+ DO_JMP_CALL_EX _int13_cdemu, int13_out, jmp_call_ret_int13_out ; ELDX not used
+
+int13_nocdemu:
+ and dl, 0E0h ; mask to get device class
+ cmp al, dl
+ jne int13_cdemu_inactive
+
+ pop dx
+ pop cx
+ pop bx
+ pop ax
+ pop es
+
+ push ax
+ push cx
+ push dx
+ push bx
+
+ dec dl ; real drive is dl - 1
+ jmp int13_legacy
+
+int13_cdemu_inactive:
+ pop dx
+ pop cx
+ pop bx
+ pop ax
+ pop es
+
+int13_noeltorito:
+ push ax
+ push cx
+ push dx
+ push bx
+int13_legacy:
+ push dx ; push eltorito dx in place of sp
+ push bp
+ push si
+ push di
+ push es
+ push ds
+ C_SETUP ; TODO: setup environment only once?
+
+ ;; now the registers can be restored with
+ ;; pop ds; pop es; DO_popa; iret
+ test dl, 80h ; non-removable?
+ jnz int13_notfloppy
+
+ DO_JMP_CALL_EX _int13_diskette_function, int13_out, jmp_call_ret_int13_out
+
+int13_notfloppy:
+ cmp dl, 0E0h
+ jb int13_notcdrom
+
+ ;; ebx may be modified, save here
+ ;; TODO: check/review 32-bit register use
+ ;; @todo figure if 80286/8086 variant is applicable.
+ .386
+ shr ebx, 16
+ push bx
+ call _int13_cdrom
+ pop bx
+ shl ebx, 16
+ SET_DEFAULT_CPU_286
+ jmp int13_out
+
+int13_notcdrom:
+int13_disk:
+ cmp ah,40h
+ ja int13x
+ call _int13_harddisk
+ jmp int13_out
+
+int13x:
+ call _int13_harddisk_ext
+
+int13_out:
+ pop ds
+ pop es
+ DO_popa
+ iret
+
+
+
+; parallel port detection: port in dx, index in bx, timeout in cl
+detect_parport proc near
+
+ push dx
+ inc dx
+ inc dx
+ in al, dx
+ and al, 0DFh ; clear input mode
+ out dx, al
+ pop dx
+ mov al, 0AAh
+ out dx, al
+ in al, dx
+ cmp al, 0AAh
+ jne no_parport
+
+ push bx
+ shl bx, 1
+ mov [bx+408h], dx ; parallel I/O address
+ pop bx
+ mov [bx+478h], cl ; parallel printer timeout
+ inc bx
+no_parport:
+ ret
+
+detect_parport endp
+
+; setial port detection: port in dx, index in bx, timeout in cl
+detect_serial proc near
+
+ push dx
+ inc dx
+ mov al, 2
+ out dx, al
+ in al, dx
+ cmp al, 2
+ jne no_serial
+
+ inc dx
+ in al, dx
+ cmp al, 2
+ jne no_serial
+
+ dec dx
+ xor al, al
+ pop dx
+ push bx
+ shl bx, 1
+ mov [bx+400h], dx ; serial I/O address
+ pop bx
+ mov [bx+47Ch], cl ; serial timeout
+ inc bx
+ ret
+
+no_serial:
+ pop dx
+ ret
+
+detect_serial endp
+
+
+;;
+;; POST: Floppy drive
+;;
+floppy_post proc near
+
+ xor ax, ax
+ mov ds, ax
+
+ ;; TODO: This code is really stupid. Zeroing the BDA byte
+ ;; by byte is dumb, and it's been already zeroed elsewhere!
+ mov al, 0
+ mov ds:[43Eh], al ; drive 0/1 uncalibrated, no IRQ
+ mov ds:[43Fh], al ; motor status
+ mov ds:[440h], al ; motor timeout counter
+ mov ds:[441h], al ; controller status return code
+ mov ds:[442h], al ; hd/floppy ctlr status register
+ mov ds:[443h], al ; controller status register 1
+ mov ds:[444h], al ; controller status register 2
+ mov ds:[445h], al ; cylinder number
+ mov ds:[446h], al ; head number
+ mov ds:[447h], al ; sector number
+ mov ds:[448h], al ; bytes written
+
+ mov ds:[48Bh], al ; configuration data
+
+ mov al, 10h ; floppy drive type
+ out CMOS_ADDR, al
+ in al, CMOS_DATA
+ mov ah, al ; save drive type byte
+
+look_drive0:
+ ; TODO: pre-init bl to reduce jumps
+ DO_shr al, 4 ; drive 0 in high nibble
+ jz f0_missing ; jump if no drive
+ mov bl, 7 ; drv0 determined, multi-rate, chgline
+ jmp look_drive1
+
+f0_missing:
+ mov bl, 0 ; no drive 0
+
+look_drive1:
+ mov al, ah ; restore CMOS data
+ and al, 0Fh ; drive 1 in low nibble
+ jz f1_missing
+ or bl, 70h ; drv1 determined, multi-rate, chgline
+f1_missing:
+ mov ds:[48Fh], bl ; store in BDA
+
+ ;; TODO: See above. Dumb *and* redundant!
+ mov al, 0
+ mov ds:[490h], al ; drv0 media state
+ mov ds:[491h], al ; drv1 media state
+ mov ds:[492h], al ; drv0 operational state
+ mov ds:[493h], al ; drv1 operational state
+ mov ds:[494h], al ; drv0 current cylinder
+ mov ds:[495h], al ; drv1 current cylinder
+
+ mov al, 2
+ out 0Ah, al ; unmask DMA channel 2
+
+ SET_INT_VECTOR 1Eh, BIOSSEG, _diskette_param_table
+ SET_INT_VECTOR 40h, BIOSSEG, int13_diskette
+ SET_INT_VECTOR 0Eh, BIOSSEG, int0e_handler ; IRQ 6
+
+ ret
+
+floppy_post endp
+
+
+bcd_to_bin proc near
+
+ ;; in : AL in packed BCD format
+ ;; out: AL in binary, AH always 0
+if VBOX_BIOS_CPU ge 80186
+ shl ax, 4
+ shr al, 4
+else
+ push cx
+ mov cl, 4
+ shl ax, cl
+ shr al, cl
+ pop cx
+endif
+ aad
+ ret
+
+bcd_to_bin endp
+
+rtc_post proc near
+
+if VBOX_BIOS_CPU lt 80386 ;; @todo fix loopy code below
+ ;; get RTC seconds
+ mov al, 0
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC seconds, in BCD
+ call bcd_to_bin ; ax now has seconds in binary
+ test al, al
+ xor ah, ah
+ mov dx, 0x1234 ; 18206507*0x100/1000000 = 0x1234 (4660.865792)
+ mul dx
+ mov cx, ax ; tick count in dx:cx
+
+ ;; get RTC minutes
+ mov al, 2
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC minutes, in BCD
+ call bcd_to_bin ; eax now has minutes in binary
+ test al, al
+ jz rtc_post_hours
+rtc_pos_min_loop: ; 18206507*60*0x100/1000000 = 0x44463 (279651.94752)
+ add cx, 0x4463
+ adc dx, 0x0004
+ dec al
+ jnz rtc_pos_min_loop
+
+ ;; get RTC hours
+rtc_post_hours:
+ mov al, 4
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC hours, in BCD
+ call bcd_to_bin ; eax now has hours in binary
+ test al, al
+ jz rtc_pos_shift
+rtc_pos_hour_loop: ; 18206507*3600*0x100/1000000 = 0x100076C (16779116.8512)
+ add cx, 0x076C
+ adc dx, 0x0100
+ dec al
+ jnz rtc_pos_hour_loop
+
+rtc_pos_shift:
+ mov cl, ch
+ mov ch, dl
+ mov dl, dh
+ xor dh, dh
+ mov ds:[46Ch], cx ; timer tick count
+ mov ds:[46Ch+2], dx ; timer tick count
+ mov ds:[470h], dh ; rollover flag
+
+else
+ .386
+ ;; get RTC seconds
+ xor eax, eax
+ mov al, 0
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC seconds, in BCD
+ call bcd_to_bin ; eax now has seconds in binary
+ mov edx, 18206507
+ mul edx
+ mov ebx, 1000000
+ xor edx, edx
+ div ebx
+ mov ecx, eax ; total ticks in ecx
+
+ ;; get RTC minutes
+ xor eax, eax
+ mov al, 2
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC minutes, in BCD
+ call bcd_to_bin ; eax now has minutes in binary
+ mov edx, 10923904
+ mul edx
+ mov ebx, 10000
+ xor edx, edx
+ div ebx
+ add ecx, eax ; add to total ticks
+
+ ;; get RTC hours
+ xor eax, eax
+ mov al, 4
+ out CMOS_ADDR, al
+ in al, CMOS_DATA ; RTC hours, in BCD
+ call bcd_to_bin ; eax now has hours in binary
+ mov edx, 65543427
+ mul edx
+ mov ebx, 1000
+ xor edx, edx
+ div ebx
+ add ecx, eax ; add to total ticks
+
+ mov ds:[46Ch], ecx ; timer tick count
+ xor al, al ; TODO: redundant?
+ mov ds:[470h], al ; rollover flag
+ .286
+endif
+ ret
+
+rtc_post endp
+
+
+
+;; --------------------------------------------------------
+;; INT 0Eh handler - Diskette IRQ 6 ISR
+;; --------------------------------------------------------
+ BIOSORG 0EF57h, 0EF55h
+int0e_handler:
+ push ax
+ push dx
+ mov dx, 3F4h
+ in al, dx
+ and al, 0C0h
+ cmp al, 0C0h
+ je int0e_normal
+ mov dx, 3F5h
+ mov al, 08h ; sense interrupt
+ out dx, al
+int0e_loop1:
+ mov dx, 3F4h ; TODO: move out of the loop?
+ in al, dx
+ and al, 0C0h
+ cmp al, 0C0h
+ jne int0e_loop1
+
+int0e_loop2:
+ mov dx, 3F5h ; TODO: inc/dec dx instead
+ in al, dx
+ mov dx, 3F4h
+ in al, dx
+ and al, 0C0h
+ cmp al, 0C0h
+ je int0e_loop2
+
+int0e_normal:
+ push ds
+ xor ax, ax
+ mov ds, ax
+ call eoi_master_pic
+ ; indicate that an interrupt occurred
+ or byte ptr ds:[43Eh], 80h
+ pop ds
+ pop dx
+ pop ax
+ iret
+
+
+;; --------------------------------------------------------
+;; Diskette Parameter Table
+;; --------------------------------------------------------
+ BIOSORG 0EFC7h, 0EFC5h
+_diskette_param_table:
+ db 0AFh
+ db 2 ; HLT=1, DMA mode
+ db 025h
+ db 2
+ db 18 ; SPT (good for 1.44MB media)
+ db 01Bh
+ db 0FFh
+ db 06Ch
+ db 0F6h ; format filler
+ db 15
+ db 8
+
+
+
+;; --------------------------------------------------------
+;; INT 17h handler - Printer service
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0EFD2h ; fixed WRT preceding code
+
+ jmp int17_handler ; NT floppy boot workaround
+ ; see @bugref{6481}
+int17_handler:
+ push ds
+ push es
+ DO_pusha
+ C_SETUP
+ call _int17_function
+ DO_popa
+ pop es
+ pop ds
+ iret
+
+
+
+;; Protected mode IDT descriptor
+;;
+;; The limit is 0 to cause a shutdown if an exception occurs
+;; in protected mode. TODO: Is that what we really want?
+;;
+;; Set base to F0000 to correspond to beginning of BIOS,
+;; in case an IDT is defined later.
+
+_pmode_IDT:
+ dw 0 ; limit 15:0
+ dw 0 ; base 15:0
+ dw 0Fh ; base 23:16
+
+
+;; Real mode IDT descriptor
+;;
+;; Set to typical real-mode values.
+;; base = 000000
+;; limit = 03ff
+
+_rmode_IDT:
+ dw 3FFh ; limit 15:00
+ dw 0 ; base 15:00
+ dw 0 ; base 23:16
+
+
+;;
+;; INT 1Ch
+;;
+;; TODO: Why does this need a special handler?
+int1c_handler: ;; user timer tick
+ iret
+
+
+
+;; --------------------------------------------------------
+;; INT 10h functions 0-Fh entry point
+;; --------------------------------------------------------
+ BIOSORG 0F045h, 0F043h
+i10f0f_entry:
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 10h handler - MDA/CGA video
+;; --------------------------------------------------------
+ BIOSORG 0F065h, 0F063h
+int10_handler:
+ ;; do nothing - assumes VGA
+ iret
+
+
+;; --------------------------------------------------------
+;; MDA/CGA Video Parameter Table (INT 1Dh)
+;; --------------------------------------------------------
+ BIOSORG 0F0A4h, 0F0A2h
+mdacga_vpt:
+
+
+;;
+;; INT 18h - boot failure
+;;
+int18_handler:
+ C_SETUP
+ call _int18_panic_msg
+ ;; TODO: handle failure better?
+ hlt
+ iret
+
+;;
+;; INT 19h - boot service - relocated
+;;
+int19_relocated:
+; If an already booted OS calls int 0x19 to reboot, it is not sufficient
+; just to try booting from the configured drives. All BIOS variables and
+; interrupt vectors need to be reset, otherwise strange things may happen.
+; The approach used is faking a warm reboot (which just skips showing the
+; logo), which is a bit more than what we need, but hey, it's fast.
+ mov bp, sp
+ mov ax, [bp+2] ; TODO: redundant? address via sp?
+ cmp ax, BIOSSEG ; check caller's segment
+ jz bios_initiated_boot
+
+ xor ax, ax
+ mov ds, ax
+ mov ax, 1234h
+ mov ds:[472], ax
+ jmp post
+
+bios_initiated_boot:
+ ;; The C worker function returns the boot drive in bl and
+ ;; the boot segment in ax. In case of failure, the boot
+ ;; segment will be zero.
+ C_SETUP ; TODO: Here? Now?
+ push bp
+ mov bp, sp
+
+ ;; 1st boot device
+ mov ax, 1
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, try next device
+ jnz boot_setup
+
+ ;; 2nd boot device
+ mov ax, 2
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, try next device
+ jnz boot_setup
+
+ ; 3rd boot device
+ mov ax, 3
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, try next device
+ jnz boot_setup
+
+ ; 4th boot device
+ mov ax, 4
+ push ax
+ call _int19_function
+ inc sp
+ inc sp
+ test ax, ax ; if 0, invoke INT 18h
+ jz int18_handler
+
+boot_setup:
+; TODO: the drive should be in dl already??
+;; mov dl, bl ; tell guest OS what boot drive is
+if VBOX_BIOS_CPU lt 80386
+ mov [bp], ax
+ DO_shl ax, 4
+ mov [bp+2], ax ; set ip
+ mov ax, [bp]
+else
+ .386 ; NB: We're getting garbage into high eax bits
+ shl eax, 4 ; convert seg to ip
+ mov [bp+2], ax ; set ip
+
+ shr eax, 4 ; get cs back
+ .286
+endif
+ and ax, BIOSSEG ; remove what went in ip
+ mov [bp+4], ax ; set cs
+ xor ax, ax
+ mov ds, ax
+ mov es, ax
+ mov [bp], ax ; TODO: what's this?!
+ mov ax, 0AA55h ; set ok flag ; TODO: and this?
+
+ pop bp ; TODO: why'd we just zero it??
+ iret ; beam me up scotty
+
+;; PCI BIOS
+
+include pcibios.inc
+include pirq.inc
+
+
+;; --------------------------------------------------------
+;; INT 12h handler - Memory size
+;; --------------------------------------------------------
+ BIOSORG 0F841h, 0F83Fh
+int12_handler:
+ ;; Don't touch - fixed size!
+ sti
+ push ds
+ mov ax, 40h
+ mov ds, ax
+ mov ax, ds:[13h]
+ pop ds
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 11h handler - Equipment list service
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0F84Dh ; fixed wrt preceding code
+int11_handler:
+ ;; Don't touch - fixed size!
+ sti
+ push ds
+ mov ax, 40h
+ mov ds, ax
+ mov ax, ds:[10h]
+ pop ds
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 15h handler - System services
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0F859h ; fixed wrt preceding code
+int15_handler:
+
+if VBOX_BIOS_CPU ge 80286
+ cmp ah, 87h
+ jne not_blkmove
+
+ ;; INT 15h/87h has semi-public interface because software
+ ;; may use CMOS shutdown status code 9 for its own purposes.
+ ;; The stack layout has to match.
+ pusha
+ push es
+ push ds
+ C_SETUP
+ call _int15_blkmove
+ pop ds
+ pop es
+ popa
+ iret
+not_blkmove:
+
+endif
+
+ pushf
+ push ds
+ push es
+ C_SETUP
+if VBOX_BIOS_CPU ge 80386
+ ;; int15_function32 exists in 386+ BIOS only, but INT 15h is
+ ;; not 386-specific
+ cmp ah, 0E8h
+ je int15_handler32
+ cmp ah, 0d0h
+ je int15_handler32
+endif
+ DO_pusha
+ cmp ah, 53h ; APM function?
+ je apm_call
+ cmp ah, 0C2h ; PS/2 mouse function?
+ je int15_handler_mouse
+
+ call _int15_function
+int15_handler_popa_ret:
+ DO_popa
+if VBOX_BIOS_CPU ge 80386
+int15_handler32_ret:
+endif
+ pop es
+ pop ds
+ popf
+ jmp iret_modify_cf
+
+apm_call:
+ call _apm_function
+ jmp int15_handler_popa_ret
+
+int15_handler_mouse:
+ call _int15_function_mouse
+ jmp int15_handler_popa_ret
+
+if VBOX_BIOS_CPU ge 80386
+int15_handler32:
+ ;; need to save/restore 32-bit registers
+ .386
+ pushad
+ call _int15_function32
+ popad
+ .286
+ jmp int15_handler32_ret
+endif
+
+;;
+;; Perform an IRET but retain the current carry flag value
+;;
+iret_modify_cf:
+ jc carry_set
+ push bp
+ mov bp, sp
+ and byte ptr [bp + 6], 0FEh
+ or word ptr [bp + 6], 0200h
+ pop bp
+ iret
+carry_set:
+ push bp
+ mov bp, sp
+ or word ptr [bp + 6], 0201h
+ pop bp
+ iret
+
+;;
+;; INT 74h handler - PS/2 mouse (IRQ 12)
+;;
+int74_handler proc
+
+ sti
+ DO_pusha
+ push es
+ push ds
+ xor ax, ax
+ push ax ; placeholder for status
+ push ax ; placeholder for X
+ push ax ; placeholder for Y
+ push ax ; placeholder for Z
+ push ax ; placeholder for make_far_call bool
+ C_SETUP
+ call _int74_function
+ pop cx ; pop make_far_call flag
+ jcxz int74_done
+
+ ;; make far call to EBDA:0022
+if VBOX_BIOS_CPU ge 80186
+ push 0
+else
+ xor ax, ax
+ push ax
+endif
+ pop ds
+ push ds:[40Eh]
+ pop ds
+ call far ptr ds:[22h]
+int74_done:
+ cli
+ call eoi_both_pics
+ add sp, 8 ; remove status, X, Y, Z
+ pop ds
+ pop es
+ DO_popa
+ iret
+
+int74_handler endp
+
+int76_handler proc
+
+ ;; record completion in BIOS task complete flag
+ push ax
+ push ds
+ mov ax, 40h
+ mov ds, ax
+ mov byte ptr ds:[8Eh], 0FFh
+ call eoi_both_pics
+ pop ds
+ pop ax
+ iret
+
+int76_handler endp
+
+
+;;
+;; IRQ 8 handler (RTC)
+;;
+int70_handler:
+ push es
+ push ds
+ DO_pusha
+ C_SETUP
+ call _int70_function
+ DO_popa
+ pop ds
+ pop es
+ iret
+
+
+
+if VBOX_BIOS_CPU lt 80386
+;
+; We're tight on space down below in the int08_handler, so put
+; the 16-bit rollover code here.
+;
+int08_maybe_rollover:
+ ja int08_rollover
+ cmp ax, 00B0h
+ jb int08_rollover_store
+ ;; there has been a midnight rollover
+int08_rollover:
+ xor dx, dx
+ xor ax, ax
+
+ inc byte ptr ds:[70h] ; increment rollover flag
+int08_rollover_store:
+ jmp int08_store_ticks
+endif
+
+
+;; --------------------------------------------------------
+;; 8x8 font (first 128 characters)
+;; --------------------------------------------------------
+ BIOSORG 0FA6Eh, 0FA6Ch
+include font8x8.inc
+
+
+;; --------------------------------------------------------
+;; INT 1Ah handler - Time of the day + PCI BIOS
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0FE6Eh ; fixed wrt preceding table
+int1a_handler:
+if VBOX_BIOS_CPU ge 80386
+ cmp ah, 0B1h
+ jne int1a_normal
+
+ push es
+ push ds
+ C_SETUP
+ .386
+ pushad
+ call _pci16_function
+ popad
+ .286
+ pop ds
+ pop es
+ iret
+endif
+
+int1a_normal:
+ push es
+ push ds
+ DO_pusha
+ C_SETUP
+int1a_callfunction:
+ call _int1a_function
+ DO_popa
+ pop ds
+ pop es
+ iret
+
+
+;; --------------------------------------------------------
+;; Timer tick - IRQ 0 handler
+;; --------------------------------------------------------
+ BIOSORG 0FEA5h, 0FEA3h
+int08_handler:
+if VBOX_BIOS_CPU ge 80386
+ .386
+ sti
+ push eax
+else
+ sti
+ push ax
+endif
+ push ds
+ push dx
+ mov ax, 40h
+ mov ds, ax
+
+if VBOX_BIOS_CPU ge 80386
+ mov eax, ds:[6Ch] ; get ticks dword
+ inc eax
+else
+ mov ax, ds:[6Ch] ; get ticks dword
+ mov dx, ds:[6Ch+2]
+ inc ax ; inc+jz+inc saves two bytes over add+adc.
+ jnz int08_compare
+ inc dx
+int08_compare:
+endif
+
+ ;; compare eax to one day's worth of ticks (at 18.2 Hz)
+if VBOX_BIOS_CPU ge 80386
+ cmp eax, 1800B0h
+ jb int08_store_ticks
+else
+ cmp dx, 18h
+ jb int08_store_ticks
+ jmp int08_maybe_rollover
+endif
+
+if VBOX_BIOS_CPU ge 80386
+ ;; there has been a midnight rollover
+ xor eax, eax
+ inc byte ptr ds:[70h] ; increment rollover flag
+
+int08_store_ticks:
+ mov ds:[6Ch], eax
+else
+int08_store_ticks:
+ mov ds:[6Ch], ax
+ mov ds:[6Ch+2], dx
+endif
+
+ ;; time to turn off floppy drive motor(s)?
+ mov al, ds:[40h]
+ or al, al
+ jz int08_floppy_off
+ dec al
+ mov ds:[40h], al
+ jnz int08_floppy_off
+ ;; turn motor(s) off
+ mov dx, 03F2h
+ in al, dx
+ and al, 0CFh
+ out dx, al
+int08_floppy_off:
+
+ int 1Ch ; call the user timer handler
+
+ cli
+ call eoi_master_pic
+ pop dx
+ pop ds
+if VBOX_BIOS_CPU ge 80386
+ pop eax
+ .286
+else
+ pop ax
+endif
+ iret
+
+
+;; --------------------------------------------------------
+;; Initial interrupt vector offsets for POST
+;; --------------------------------------------------------
+ BIOSORG 0FEF3h, 0FEF1h
+vector_table:
+
+
+
+;; --------------------------------------------------------
+;; BIOS copyright string
+;; --------------------------------------------------------
+ BIOSORG 0FF00h, 0FEFEh
+bios_string:
+ db BIOS_COPYRIGHT
+
+
+;; --------------------------------------------------------
+;; IRET - default interrupt handler
+;; --------------------------------------------------------
+ BIOSORG 0FF53h, 0FF51h
+
+dummy_iret:
+ iret
+
+
+;; --------------------------------------------------------
+;; INT 05h - Print Screen service
+;; --------------------------------------------------------
+ BIOSORG_CHECK 0FF54h ; fixed wrt preceding
+int05_handler:
+ ;; Not implemented
+ iret
+
+include smidmi.inc
+
+;; --------------------------------------------------------
+;; Processor reset entry point
+;; --------------------------------------------------------
+ BIOSORG 0FFF0h, 0FFEEh
+cpu_reset:
+ ;; This is where the CPU starts executing after a reset
+ jmp far ptr post
+
+ ;; BIOS build date
+ db BIOS_BUILD_DATE
+ db 0 ; padding
+ ;; System model ID
+ db SYS_MODEL_ID
+ ;; Checksum byte
+ db 0FFh
+
+
+BIOSSEG ends
+
+ end
+
diff --git a/src/VBox/Devices/PC/BIOS/parallel.c b/src/VBox/Devices/PC/BIOS/parallel.c
new file mode 100644
index 00000000..9dfd289f
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/parallel.c
@@ -0,0 +1,91 @@
+/* $Id: parallel.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+void BIOSCALL int17_function(pusha_regs_t regs, uint16_t es, uint16_t ds, volatile iret_addr_t iret_addr)
+{
+ uint16_t addr,timeout;
+ uint8_t val8;
+
+ int_enable();
+
+ addr = read_word(0x0040, (regs.u.r16.dx << 1) + 8);
+ if ((regs.u.r8.ah < 3) && (regs.u.r16.dx < 3) && (addr > 0)) {
+ timeout = read_byte(0x0040, 0x0078 + regs.u.r16.dx) << 8;
+ if (regs.u.r8.ah == 0) {
+ outb(addr, regs.u.r8.al);
+ val8 = inb(addr+2);
+ outb(addr+2, val8 | 0x01); // send strobe
+ outb(addr+2, val8 & ~0x01);
+ while (((inb(addr+1) & 0x40) == 0x40) && (timeout)) {
+ timeout--;
+ }
+ }
+ if (regs.u.r8.ah == 1) {
+ val8 = inb(addr+2);
+ outb(addr+2, val8 & ~0x04); // send init
+ outb(addr+2, val8 | 0x04);
+ }
+ val8 = inb(addr+1);
+ regs.u.r8.ah = (val8 ^ 0x48);
+ if (!timeout) regs.u.r8.ah |= 0x01;
+ ClearCF(iret_addr.flags);
+ } else {
+ SetCF(iret_addr.flags); // Unsupported
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/pci32.c b/src/VBox/Devices/PC/BIOS/pci32.c
new file mode 100644
index 00000000..eb05df64
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pci32.c
@@ -0,0 +1,22 @@
+/* $Id: pci32.c $ */
+/** @file
+ * 32-bit PCI BIOS wrapper.
+ */
+
+/*
+ * Copyright (C) 2004-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef __386__
+#error This file must be compiled as 32-bit!
+#endif
+
+#include "pcibios.c"
diff --git a/src/VBox/Devices/PC/BIOS/pcibio32.asm b/src/VBox/Devices/PC/BIOS/pcibio32.asm
new file mode 100644
index 00000000..b423c588
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibio32.asm
@@ -0,0 +1,98 @@
+; $Id: pcibio32.asm $
+;; @file
+; BIOS32 service directory and 32-bit PCI BIOS entry point
+;
+
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+
+
+; Public symbols for debugging only
+public pcibios32_entry
+public bios32_service
+
+; The BIOS32 service directory header must be located in the E0000h-FFFF0h
+; range on a paragraph boundary. Note that the actual 32-bit code need not
+; be located below 1MB at all.
+
+_DATA segment public 'DATA'
+
+align 16
+bios32_directory:
+ db '_32_' ; ASCII signature
+ dw bios32_service ; Entry point address...
+ dw 000Fh ; ...hardcoded to F000 segment
+ db 0 ; Revision
+ db 1 ; Length in paras - must be 1
+ db 0 ; Checksum calculated later
+ db 5 dup(0) ; Unused, must be zero
+
+_DATA ends
+
+.386
+
+extrn _pci32_function:near
+
+BIOS32 segment public 'CODE' use32
+
+;
+; The BIOS32 Service Directory - must be less than 4K in size (easy!).
+;
+bios32_service proc far
+
+ pushfd
+
+ cmp bl, 0 ; Only function 0 supported
+ jnz b32_bad_func
+
+ cmp eax, 'ICP$' ; "$PCI"
+ mov al, 80h ; Unknown service
+ jnz b32_done
+
+ mov ebx, 000f0000h ; Base address (linear)
+ mov ecx, 0f000h ; Length of service
+ mov edx, pcibios32_entry ; Entry point offset from base
+ xor al, al ; Indicate success
+b32_done:
+ popfd
+ retf
+
+b32_bad_func:
+ mov al, 81h ; Unsupported function
+ jmp b32_done
+
+bios32_service endp
+
+;
+; The 32-bit PCI BIOS entry point - simply calls into C code.
+;
+pcibios32_entry proc far
+
+ pushfd ; Preserve flags
+ cld ; Just in case...
+
+ push es ; Call into C implementation
+ pushad
+ call _pci32_function
+ popad
+ pop es
+
+ popfd ; Restore flags and return
+ retf
+
+pcibios32_entry endp
+
+
+BIOS32 ends
+
+ end
+
diff --git a/src/VBox/Devices/PC/BIOS/pcibios.c b/src/VBox/Devices/PC/BIOS/pcibios.c
new file mode 100644
index 00000000..7c33da8e
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibios.c
@@ -0,0 +1,408 @@
+/* $Id: pcibios.c $ */
+/** @file
+ * PCI BIOS support.
+ */
+
+/*
+ * Copyright (C) 2004-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_PCI
+# define BX_DEBUG_PCI(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_PCI(...)
+#endif
+
+/* PCI function codes. */
+enum pci_func {
+ PCI_BIOS_PRESENT = 0x01, /* PCI BIOS presence check. */
+ FIND_PCI_DEVICE = 0x02, /* Find PCI device by ID. */
+ FIND_PCI_CLASS_CODE = 0x03, /* Find PCI device by class. */
+ GEN_SPECIAL_CYCLE = 0x06, /* Generate special cycle. */
+ READ_CONFIG_BYTE = 0x08, /* Read a byte from PCI config space. */
+ READ_CONFIG_WORD = 0x09, /* Read a word from PCI config space. */
+ READ_CONFIG_DWORD = 0x0A, /* Read a dword from PCI config space. */
+ WRITE_CONFIG_BYTE = 0x0B, /* Write a byte to PCI config space. */
+ WRITE_CONFIG_WORD = 0x0C, /* Write a word to PCI config space. */
+ WRITE_CONFIG_DWORD = 0x0D, /* Write a dword to PCI config space. */
+ GET_IRQ_ROUTING = 0x0E, /* Get IRQ routing table. */
+ SET_PCI_HW_INT = 0x0F, /* Set PCI hardware interrupt. */
+};
+
+enum pci_error {
+ SUCCESSFUL = 0x00, /* Success. */
+ FUNC_NOT_SUPPORTED = 0x81, /* Unsupported function. */
+ BAD_VENDOR_ID = 0x83, /* Bad vendor ID (all bits set) passed. */
+ DEVICE_NOT_FOUND = 0x86, /* No matching device found. */
+ BAD_REGISTER_NUMBER = 0x87, /* Register number out of range. */
+ SET_FAILED = 0x88, /* Failed to set PCI interrupt. */
+ BUFFER_TOO_SMALL = 0x89 /* Routing table buffer insufficient. */
+};
+
+/// @todo merge with system.c
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define EAX r.gr.u.r32.eax
+#define EBX r.gr.u.r32.ebx
+#define ECX r.gr.u.r32.ecx
+#define EDX r.gr.u.r32.edx
+#define ES r.es
+
+/* The 16-bit PCI BIOS service must be callable from both real and protected
+ * mode. In protected mode, the caller must set the CS selector base to F0000h
+ * (but the CS selector value is not specified!). The caller does not always
+ * provide a DS which covers the BIOS segment.
+ *
+ * Unlike APM, there are no provisions for the 32-bit PCI BIOS interface
+ * calling the 16-bit implementation.
+ *
+ * The PCI Firmware Specification requires that the PCI BIOS service is called
+ * with at least 1,024 bytes of stack space available, that interrupts are not
+ * enabled during execution, and that the routines are re-entrant.
+ *
+ * Implementation notes:
+ * - The PCI BIOS interface already uses certain 32-bit registers even in
+ * 16-bit mode. To simplify matters, all 32-bit GPRs are saved/restored and
+ * may be used by helper routines (notably for 32-bit port I/O).
+ */
+
+#define PCI_CFG_ADDR 0xCF8
+#define PCI_CFG_DATA 0xCFC
+
+#ifdef __386__
+
+#define PCIxx(x) pci32_##x
+
+/* The stack layout is different in 32-bit mode. */
+typedef struct {
+ pushad_regs_t gr;
+ uint32_t es;
+ uint32_t flags;
+} pci_regs_t;
+
+#define FLAGS r.flags
+
+/* In 32-bit mode, don't do any output; not technically impossible but needs
+ * a lot of extra code.
+ */
+#undef BX_INFO
+#define BX_INFO(...)
+#undef BX_DEBUG_PCI
+#define BX_DEBUG_PCI(...)
+
+#else
+
+#define PCIxx(x) pci16_##x
+
+typedef struct {
+ pushad_regs_t gr;
+ uint16_t ds;
+ uint16_t es;
+ iret_addr_t ra;
+} pci_regs_t;
+
+#define FLAGS r.ra.flags.u.r16.flags
+
+#endif
+
+#ifdef __386__
+
+/* 32-bit code can just use the compiler intrinsics. */
+extern unsigned inpd(unsigned port);
+extern unsigned outpd(unsigned port, unsigned value);
+#pragma intrinsic(inpd,outpd)
+
+#else
+
+/// @todo merge with AHCI code
+
+/* Warning: Destroys high bits of EAX. */
+uint32_t inpd(uint16_t port);
+#pragma aux inpd = \
+ ".386" \
+ "in eax, dx" \
+ "mov dx, ax" \
+ "shr eax, 16" \
+ "xchg ax, dx" \
+ parm [dx] value [dx ax] modify nomemory;
+
+/* Warning: Destroys high bits of EAX. */
+void outpd(uint16_t port, uint32_t val);
+#pragma aux outpd = \
+ ".386" \
+ "xchg ax, cx" \
+ "shl eax, 16" \
+ "mov ax, cx" \
+ "out dx, eax" \
+ parm [dx] [cx ax] modify nomemory;
+
+#endif
+
+/* PCI IRQ routing expansion buffer descriptor. */
+typedef struct {
+ uint16_t buf_size;
+ uint8_t __far *buf_ptr;
+} pci_route_buf;
+
+/* Defined in assembler module .*/
+extern char pci_routing_table[];
+extern uint16_t pci_routing_table_size;
+
+/* Write the CONFIG_ADDRESS register to prepare for data access. Requires
+ * the register offset to be DWORD aligned (low two bits clear). Warning:
+ * destroys high bits of EAX.
+ */
+void pci16_w_addr(uint16_t bus_dev_fn, uint16_t ofs, uint16_t cfg_addr);
+#pragma aux pci16_w_addr = \
+ ".386" \
+ "movzx eax, ax" \
+ "shl eax, 8" \
+ "or eax, 80000000h" \
+ "mov al, bl" \
+ "out dx, eax" \
+ parm [ax] [bx] [dx] modify exact [ax] nomemory;
+
+
+/* Select a PCI configuration register given its offset and bus/dev/fn.
+ * This is largely a wrapper to avoid excessive inlining.
+ */
+void PCIxx(select_reg)(uint16_t bus_dev_fn, uint16_t ofs)
+{
+ pci16_w_addr(bus_dev_fn, ofs & ~3, PCI_CFG_ADDR);
+}
+
+/* Selected configuration space offsets. */
+#define PCI_VEN_ID 0x00
+#define PCI_DEV_ID 0x02
+#define PCI_REV_ID 0x08
+#define PCI_CLASS_CODE 0x09
+#define PCI_HEADER_TYPE 0x0E
+#define PCI_BRIDGE_SUBORD 0x1A
+
+/* To avoid problems with 16-bit code, we reserve the last possible
+ * bus/dev/fn combination (65,535). Upon reaching this location, the
+ * probing will end.
+ */
+#define BUSDEVFN_NOT_FOUND 0xFFFF
+
+/* In the search algorithm, we decrement the device index every time
+ * a matching device is found. If the requested device is indeed found,
+ * the index will have decremented down to -1/0xFFFF.
+ */
+#define INDEX_DEV_FOUND 0xFFFF
+
+/* Find a specified PCI device, either by vendor+device ID or class.
+ * If index is non-zero, the n-th device will be located.
+ *
+ * Note: This function is somewhat performance critical; since it may
+ * generate a high number of port I/O accesses, it can take a significant
+ * amount of time in cases where the caller is looking for a number of
+ * non-present devices.
+ */
+uint16_t PCIxx(find_device)(uint32_t search_item, uint16_t index, int search_class)
+{
+ uint32_t data;
+ uint16_t bus_dev_fn;
+ uint8_t max_bus;
+ uint8_t hdr_type;
+ uint8_t subordinate;
+ int step;
+ int found;
+
+ if (search_class) {
+ BX_DEBUG_PCI("PCI: Find class %08lX index %u\n",
+ search_item, index);
+ } else
+ BX_DEBUG_PCI("PCI: Find device %04X:%04X index %u\n",
+ (uint16_t)search_item, (uint16_t)(search_item >> 16), index);
+
+ bus_dev_fn = 0; /* Start at the beginning. */
+ max_bus = 0; /* Initially assume primary bus only. */
+
+ do {
+ /* For the first function of a device, read the device's header type.
+ * If the header type has all bits set, there's no device. A PCI
+ * multi-function device must implement function 0 and the header type
+ * will be something other than 0xFF. If the header type has the high
+ * bit clear, there is a device but it's not multi-function, so we can
+ * skip probing the next 7 sub-functions.
+ */
+ if ((bus_dev_fn & 7) == 0) {
+ PCIxx(select_reg)(bus_dev_fn, PCI_HEADER_TYPE);
+ hdr_type = inp(PCI_CFG_DATA + (PCI_HEADER_TYPE & 3));
+ if (hdr_type == 0xFF) {
+ bus_dev_fn += 8; /* Skip to next device. */
+ continue;
+ }
+ if (hdr_type & 0x80)
+ step = 1; /* MFD - try every sub-function. */
+ else
+ step = 8; /* No MFD, go to next device after probing. */
+ }
+
+ /* If the header type indicates a bus, we're interested. The secondary
+ * and subordinate bus numbers will indicate which buses are present;
+ * thus we can determine the highest bus number. In the common case,
+ * there will be only the primary bus (i.e. bus 0) and we can avoid
+ * looking at the remaining 255 theoretically present buses. This check
+ * only needs to be done on the primary bus, since bridges must report
+ * all bridges potentially behind them.
+ */
+ if ((hdr_type & 7) == 1 && (bus_dev_fn >> 8) == 0) {
+ /* Read the subordinate (last) bridge number. */
+ PCIxx(select_reg)(bus_dev_fn, PCI_BRIDGE_SUBORD);
+ subordinate = inp(PCI_CFG_DATA + (PCI_BRIDGE_SUBORD & 3));
+ if (subordinate > max_bus)
+ max_bus = subordinate;
+ }
+
+ /* Select the appropriate register. */
+ PCIxx(select_reg)(bus_dev_fn, search_class ? PCI_REV_ID : PCI_VEN_ID);
+ data = inpd(PCI_CFG_DATA);
+ found = 0;
+
+ /* Only 3 bytes are compared for class searches. */
+ if (search_class)
+ data >>= 8;
+
+#if 0
+ BX_DEBUG_PCI("PCI: Data is %08lX @ %02X:%%02X:%01X\n", data,
+ bus_dev_fn >> 8, bus_dev_fn >> 3 & 31, bus_dev_fn & 7);
+#endif
+
+ if (data == search_item)
+ found = 1;
+
+ /* If device was found but index is non-zero, decrement index and
+ * continue looking. If requested device was found, index will be -1!
+ */
+ if (found && !index--)
+ break;
+
+ bus_dev_fn += step;
+ } while ((bus_dev_fn >> 8) <= max_bus);
+
+ if (index == INDEX_DEV_FOUND)
+ BX_DEBUG_PCI("PCI: Device found (%02X:%%02X:%01X)\n", bus_dev_fn >> 8,
+ bus_dev_fn >> 3 & 31, bus_dev_fn & 7);
+
+ return index == INDEX_DEV_FOUND ? bus_dev_fn : BUSDEVFN_NOT_FOUND;
+}
+
+void BIOSCALL PCIxx(function)(volatile pci_regs_t r)
+{
+ pci_route_buf __far *route_buf;
+ uint16_t device;
+
+ BX_DEBUG_PCI("PCI: AX=%04X BX=%04X CX=%04X DI=%04X\n", AX, BX, CX, DI);
+
+ SET_AH(SUCCESSFUL); /* Assume success. */
+ CLEAR_CF();
+
+ switch (GET_AL()) {
+ case PCI_BIOS_PRESENT:
+ AX = 0x0001; /* Configuration mechanism #1 supported. */
+ BX = 0x0210; /* Version 2.1. */
+ /// @todo return true max bus # in CL
+ CX = 0; /* Maximum bus number. */
+ EDX = 'P' | ('C' << 8) | ((uint32_t)'I' << 16) | ((uint32_t)' ' << 24);
+ break;
+ case FIND_PCI_DEVICE:
+ /* Vendor ID FFFFh is reserved so that non-present devices can
+ * be easily detected.
+ */
+ if (DX == 0xFFFF) {
+ SET_AH(BAD_VENDOR_ID);
+ SET_CF();
+ } else {
+ device = PCIxx(find_device)(DX | (uint32_t)CX << 16, SI, 0);
+ if (device == BUSDEVFN_NOT_FOUND) {
+ SET_AH(DEVICE_NOT_FOUND);
+ SET_CF();
+ } else {
+ BX = device;
+ }
+ }
+ break;
+ case FIND_PCI_CLASS_CODE:
+ device = PCIxx(find_device)(ECX, SI, 1);
+ if (device == BUSDEVFN_NOT_FOUND) {
+ SET_AH(DEVICE_NOT_FOUND);
+ SET_CF();
+ } else {
+ BX = device;
+ }
+ break;
+ case READ_CONFIG_BYTE:
+ case READ_CONFIG_WORD:
+ case READ_CONFIG_DWORD:
+ case WRITE_CONFIG_BYTE:
+ case WRITE_CONFIG_WORD:
+ case WRITE_CONFIG_DWORD:
+ if (DI >= 256) {
+ SET_AH(BAD_REGISTER_NUMBER);
+ SET_CF();
+ } else {
+ PCIxx(select_reg)(BX, DI);
+ switch (GET_AL()) {
+ case READ_CONFIG_BYTE:
+ SET_CL(inp(PCI_CFG_DATA + (DI & 3)));
+ break;
+ case READ_CONFIG_WORD:
+ CX = inpw(PCI_CFG_DATA + (DI & 2));
+ break;
+ case READ_CONFIG_DWORD:
+ ECX = inpd(PCI_CFG_DATA);
+ break;
+ case WRITE_CONFIG_BYTE:
+ outp(PCI_CFG_DATA + (DI & 3), GET_CL());
+ break;
+ case WRITE_CONFIG_WORD:
+ outpw(PCI_CFG_DATA + (DI & 2), CX);
+ break;
+ case WRITE_CONFIG_DWORD:
+ outpd(PCI_CFG_DATA, ECX);
+ break;
+ }
+ }
+ break;
+ case GET_IRQ_ROUTING:
+ route_buf = ES :> (void *)DI;
+ BX_DEBUG_PCI("PCI: Route Buf %04X:%04X size %04X, need %04X (at %04X:%04X)\n",
+ FP_SEG(route_buf->buf_ptr), FP_OFF(route_buf->buf_ptr),
+ route_buf->buf_size, pci_routing_table_size, ES, DI);
+ if (pci_routing_table_size > route_buf->buf_size) {
+ SET_AH(BUFFER_TOO_SMALL);
+ SET_CF();
+ } else {
+ rep_movsb(route_buf->buf_ptr, pci_routing_table, pci_routing_table_size);
+ /* IRQs 9 and 11 are PCI only. */
+ BX = (1 << 9) | (1 << 11);
+ }
+ route_buf->buf_size = pci_routing_table_size;
+ break;
+ default:
+ BX_INFO("PCI: Unsupported function AX=%04X BX=%04X called\n", AX, BX);
+ SET_AH(FUNC_NOT_SUPPORTED);
+ SET_CF();
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/pcibios.inc b/src/VBox/Devices/PC/BIOS/pcibios.inc
new file mode 100644
index 00000000..a3a2e6a9
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcibios.inc
@@ -0,0 +1,362 @@
+; $Id: pcibios.inc $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+
+include pcicfg.inc
+
+if BX_PCIBIOS
+
+ifdef DEBUG
+
+; Publics for easier debugging and disassembly
+
+public pcibios_init_iomem_bases
+public pci_init_io_loop1
+public pci_init_io_loop2
+public init_io_base
+public next_pci_base
+public enable_iomem_space
+public next_pci_dev
+public pcibios_init_set_elcr
+public is_master_pic
+public pcibios_init_irqs
+public pci_init_irq_loop1
+public pci_init_irq_loop2
+public pci_test_int_pin
+public pirq_found
+public next_pci_func
+public next_pir_entry
+public pci_init_end
+
+endif
+
+.386
+
+if not BX_ROMBIOS32
+pci_irq_list:
+ db 11, 10, 9, 11
+
+pcibios_init_sel_reg:
+ push eax
+ mov eax, 800000h
+ mov ax, bx
+ shl eax, 8
+ and dl, 0FCh
+ or al, dl
+ mov dx, PCI_CFG1
+ out dx, eax
+ pop eax
+ ret
+
+pcibios_init_iomem_bases:
+ push bp
+ mov bp, sp
+ifdef VBOX
+ mov eax,19200509
+ mov dx,410h
+ out dx, eax
+else
+; This incomplete PCI resource setup code is less functional than the PCI
+; resource assignment created by the fake PCI BIOS and is therefore disabled.
+; Blindly enabling everything on the root bus (including bus mastering!) can
+; only be called buggy. It causes the trouble with AMD PCNet which it then
+; tries to work around, but that still contains a race.
+ mov eax, 0E0000000h ; base for memory init
+ push eax
+ mov ax, 0D000h ; base for i/o init
+ push ax
+ mov ax, 010h ; start at base address #0
+ push ax
+ mov bx, 8
+pci_init_io_loop1:
+ mov dl, 0
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in ax, dx
+ cmp ax, 0FFFFh
+ jz next_pci_dev
+
+ifndef VBOX ; This currently breaks restoring a previously saved state.
+ mov dl, 4 ; disable i/o and memory space access
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in al, dx
+ and al, 0FCh
+ out dx, al
+pci_init_io_loop2:
+ mov dl, [bp-8]
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in eax, dx
+ test al, 1
+ jnz init_io_base
+
+ mov ecx, eax
+ mov eax, 0FFFFFFFFh
+ out dx, eax
+ in eax, dx
+ cmp eax, ecx
+ je next_pci_base
+ xor eax, 0FFFFFFFFh
+ mov ecx, eax
+ mov eax, [bp-4]
+ out dx, eax
+ add eax, ecx ; calculate next free mem base
+ add eax, 01000000h
+ and eax, 0FF000000h
+ mov [bp-4], eax
+ jmp next_pci_base
+
+init_io_base:
+ mov cx, ax
+ mov ax, 0FFFFh
+ out dx, eax
+ in eax, dx
+ cmp ax, cx
+ je next_pci_base
+
+ xor ax, 0FFFEh
+ mov cx, ax
+ mov ax, [bp-6]
+ out dx, eax
+ add ax, cx ; calculate next free i/o base
+ add ax, 00100h
+ and ax, 0FF00h
+ mov [bp-6], ax
+next_pci_base:
+ mov al, [bp-8]
+ add al, 4
+ cmp al, 28h
+ je enable_iomem_space
+
+ mov byte ptr[bp-8], al
+ jmp pci_init_io_loop2
+endif ; !VBOX
+
+enable_iomem_space:
+ mov dl, 4 ;; enable i/o and memory space access if available
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in al, dx
+ or al, 7
+ out dx, al
+ifdef VBOX
+ mov dl, 0 ; check if PCI device is AMD PCNet
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in eax, dx
+ cmp eax, 020001022h
+ jne next_pci_dev
+
+ mov dl, 10h ; get I/O address
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in ax, dx
+ and ax, 0FFFCh
+ mov cx, ax
+ mov dx, cx
+ add dx, 14h ; reset register if PCNet is in word I/O mode
+ in ax, dx ; reset is performed by reading the reset register
+ mov dx, cx
+ add dx, 18h ; reset register if PCNet is in word I/O mode
+ in eax, dx ; reset is performed by reading the reset register
+endif ; VBOX
+next_pci_dev:
+ mov byte ptr[bp-8], 10h
+ inc bx
+ cmp bx, 0100h
+ jne pci_init_io_loop1
+endif ; !VBOX
+ mov sp, bp
+ pop bp
+ ret
+
+pcibios_init_set_elcr:
+ push ax
+ push cx
+ mov dx, 04D0h
+ test al, 8
+ jz is_master_pic
+
+ inc dx
+ and al, 7
+is_master_pic:
+ mov cl, al
+ mov bl, 1
+ shl bl, cl
+ in al, dx
+ or al, bl
+ out dx, al
+ pop cx
+ pop ax
+ ret
+
+pcibios_init_irqs:
+ push ds
+ push bp
+ mov ax, 0F000h
+ mov ds, ax
+ifndef VBOX
+; this code works OK, but it's unnecessary effort since the fake PCI BIOS
+; already configured the IRQ lines and the ELCR correctly
+ mov dx, 04D0h ;; reset ELCR1 + ELCR2
+ mov al, 0
+ out dx, al
+ inc dx
+ out dx, al
+ mov si, pci_routing_table_structure
+ mov bh, [si+8]
+ mov bl, [si+9]
+ mov dl, 0
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in eax, dx
+ cmp eax, [si+12] ;; check irq router
+ jne pci_init_end
+
+ mov dl, [si+34]
+ call pcibios_init_sel_reg
+ push bx ;; save irq router bus + devfunc
+ mov dx, PCI_CFG2
+ mov ax, 8080h
+ out dx, ax ;; reset PIRQ route control
+ add dx, 2
+ out dx, ax
+ mov ax, [si+6]
+ sub ax, 20h
+ shr ax, 4
+ mov cx, ax
+ add si, 20h ;; set pointer to 1st entry
+ mov bp, sp
+ mov ax, pci_irq_list
+ push ax
+ xor ax, ax
+ push ax
+pci_init_irq_loop1:
+ mov bh, [si]
+ mov bl, [si+1]
+pci_init_irq_loop2:
+ mov dl, 0
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ in ax, dx
+ cmp ax, 0FFFFh
+ jnz pci_test_int_pin
+
+ test bl, 7
+ jz next_pir_entry
+
+ jmp next_pci_func
+
+pci_test_int_pin:
+ mov dl, 3Ch
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2 + 1 ; access config space at 3Dh
+ in al, dx
+ and al, 7
+ jz next_pci_func
+
+ dec al ;; determine pirq reg
+ mov dl, 3
+ mul dl
+ add al, 2
+ xor ah, ah
+ mov bx, ax
+ mov al, [si+bx]
+ mov dl, al
+ mov bx, [bp]
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ and al, 3
+ add dl, al
+ in al, dx
+ cmp al, 80h
+ jb pirq_found
+
+ mov bx, [bp-2] ;; pci irq list pointer
+ mov al, [bx]
+ out dx, al
+ inc bx
+ mov [bp-2], bx
+ call pcibios_init_set_elcr
+pirq_found:
+ mov bh, [si]
+ mov bl, [si+1]
+ add bl, [bp-3] ;; pci function number
+ mov dl, 3Ch
+ call pcibios_init_sel_reg
+ mov dx, PCI_CFG2
+ out dx, al
+next_pci_func:
+ inc byte ptr[bp-3]
+ inc bl
+ test bl, 7
+ jnz pci_init_irq_loop2
+
+next_pir_entry:
+ add si, 10h
+ mov byte ptr[bp-3], 0
+ loop pci_init_irq_loop1
+
+ mov sp, bp
+ pop bx
+pci_init_end:
+endif
+ pop bp
+ pop ds
+ ret
+
+endif ; !BX_ROMBIOS32
+
+endif ; BX_PCIBIOS
+
+SET_DEFAULT_CPU_286
+
diff --git a/src/VBox/Devices/PC/BIOS/pcicfg.inc b/src/VBox/Devices/PC/BIOS/pcicfg.inc
new file mode 100644
index 00000000..83e2c2d5
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pcicfg.inc
@@ -0,0 +1,6 @@
+
+BX_PCIBIOS equ 1 ; Enable PCI BIOS
+
+PCI_CFG1 equ 0CF8h
+PCI_CFG2 equ 0CFCh
+
diff --git a/src/VBox/Devices/PC/BIOS/pciutil.c b/src/VBox/Devices/PC/BIOS/pciutil.c
new file mode 100644
index 00000000..49ff0877
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pciutil.c
@@ -0,0 +1,186 @@
+/* $Id: pciutil.c $ */
+/** @file
+ * Utility routines for calling the PCI BIOS.
+ */
+
+/*
+ * Copyright (C) 2011-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+/** PCI BIOS functions. */
+#define PCIBIOS_ID 0xb1
+#define PCIBIOS_PCI_BIOS_PRESENT 0x01
+#define PCIBIOS_FIND_PCI_DEVICE 0x02
+#define PCIBIOS_FIND_CLASS_CODE 0x03
+#define PCIBIOS_GENERATE_SPECIAL_CYCLE 0x06
+#define PCIBIOS_READ_CONFIG_BYTE 0x08
+#define PCIBIOS_READ_CONFIG_WORD 0x09
+#define PCIBIOS_READ_CONFIG_DWORD 0x0a
+#define PCIBIOS_WRITE_CONFIG_BYTE 0x0b
+#define PCIBIOS_WRITE_CONFIG_WORD 0x0c
+#define PCIBIOS_WRITE_CONFIG_DWORD 0x0d
+#define PCIBIOS_GET_IRQ_ROUTING_OPTIONS 0x0e
+#define PCIBIOS_SET_PCI_IRQ 0x0f
+
+/** Status codes. */
+#define SUCCESSFUL 0x00
+#define FUNC_NOT_SUPPORTED 0x81
+#define BAD_VENDOR_ID 0x83
+#define DEVICE_NOT_FOUND 0x86
+#define BAD_REGISTER_NUMBER 0x87
+#define SET_FAILED 0x88
+#define BUFFER_TOO_SMALL 0x89
+
+
+#if VBOX_BIOS_CPU >= 80386
+/* Warning: Destroys high bits of ECX. */
+uint16_t pci_find_class(uint16_t op, uint32_t dev_class, uint16_t index);
+# pragma aux pci_find_class = \
+ ".386" \
+ "shl ecx, 16" \
+ "mov cx, dx" \
+ "int 0x1a" \
+ "cmp ah, 0" \
+ "je found" \
+ "mov bx, 0xffff" \
+ "found:" \
+ parm [ax] [cx dx] [si] value [bx];
+#endif
+
+uint16_t pci_find_dev(uint16_t op, uint16_t dev_id, uint16_t ven_id, uint16_t index);
+#pragma aux pci_find_dev = \
+ "int 0x1a" \
+ "cmp ah, 0" \
+ "je found" \
+ "mov bx, 0xffff" \
+ "found:" \
+ parm [ax] [cx] [dx] [si] value [bx];
+
+uint8_t pci_read_cfgb(uint16_t op, uint16_t bus_dev_fn, uint16_t reg);
+#pragma aux pci_read_cfgb = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] value [cl];
+
+uint16_t pci_read_cfgw(uint16_t op, uint16_t bus_dev_fn, uint16_t reg);
+#pragma aux pci_read_cfgw = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] value [cx];
+
+#if VBOX_BIOS_CPU >= 80386
+/* Warning: Destroys high bits of ECX. */
+uint32_t pci_read_cfgd(uint16_t op, uint16_t bus_dev_fn, uint16_t reg);
+# pragma aux pci_read_cfgd = \
+ ".386" \
+ "int 0x1a" \
+ "mov ax, cx" \
+ "shr ecx, 16" \
+ parm [ax] [bx] [di] value [cx ax];
+#endif
+
+uint8_t pci_write_cfgb(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint8_t val);
+#pragma aux pci_write_cfgb = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] [cl];
+
+uint8_t pci_write_cfgw(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint16_t val);
+#pragma aux pci_write_cfgw = \
+ "int 0x1a" \
+ parm [ax] [bx] [di] [cx];
+
+#if VBOX_BIOS_CPU >= 80386
+/* Warning: Destroys high bits of ECX. */
+uint8_t pci_write_cfgd(uint16_t op, uint16_t bus_dev_fn, uint16_t reg, uint32_t val);
+# pragma aux pci_write_cfgd = \
+ ".386" \
+ "xchg cx, dx" \
+ "shl ecx, 16" \
+ "mov cx, dx" \
+ "int 0x1a" \
+ parm [ax] [bx] [di] [dx cx];
+#endif
+
+
+/**
+ * Returns the bus/device/function of a PCI device with
+ * the given class code.
+ *
+ * @returns bus/device/fn in a 16-bit integer where
+ * where the upper byte contains the bus number
+ * and lower one the device and function number.
+ * 0xffff if no device was found.
+ * @param dev_class The PCI class code to search for.
+ */
+uint16_t pci_find_classcode(uint32_t dev_class)
+{
+#if VBOX_BIOS_CPU >= 80386
+ return pci_find_class((PCIBIOS_ID << 8) | PCIBIOS_FIND_CLASS_CODE, dev_class, 0);
+#else
+ return UINT16_C(0xffff);
+#endif
+}
+
+/**
+ * Returns the bus/device/function of a PCI device with
+ * the given vendor and device id.
+ *
+ * @returns bus/device/fn in one 16bit integer where
+ * where the upper byte contains the bus number
+ * and lower one the device and function number.
+ * 0xffff if no device was found.
+ * @param v_id The vendor ID.
+ * @param d_id The device ID.
+ */
+uint16_t pci_find_device(uint16_t v_id, uint16_t d_id)
+{
+ return pci_find_dev((PCIBIOS_ID << 8) | PCIBIOS_FIND_PCI_DEVICE, d_id, v_id, 0);
+}
+
+uint32_t pci_read_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg)
+{
+ return pci_read_cfgb((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_BYTE, (bus << 8) | dev_fn, reg);
+}
+
+uint32_t pci_read_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg)
+{
+ return pci_read_cfgw((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_WORD, (bus << 8) | dev_fn, reg);
+}
+
+uint32_t pci_read_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg)
+{
+#if VBOX_BIOS_CPU >= 80386
+ return pci_read_cfgd((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_DWORD, (bus << 8) | dev_fn, reg);
+#else
+ return pci_read_cfgw((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_WORD, (bus << 8) | dev_fn, reg)
+ || ((uint32_t)pci_read_cfgw((PCIBIOS_ID << 8) | PCIBIOS_READ_CONFIG_WORD, (bus << 8) | dev_fn, reg + 2) << 16);
+#endif
+}
+
+void pci_write_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint16_t val)
+{
+ pci_write_cfgw((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_WORD, (bus << 8) | dev_fn, reg, val);
+}
+
+#if 0 /* Disabled to save space because they are not needed. Might become useful in the future. */
+void pci_write_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint8_t val)
+{
+ pci_write_cfgb((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_BYTE, (bus << 8) | dev_fn, reg, val);
+}
+
+void pci_write_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint32_t val)
+{
+ pci_write_cfgd((PCIBIOS_ID << 8) | PCIBIOS_WRITE_CONFIG_DWORD, (bus << 8) | dev_fn, reg, val);
+}
+#endif /* 0 */
diff --git a/src/VBox/Devices/PC/BIOS/pciutil.h b/src/VBox/Devices/PC/BIOS/pciutil.h
new file mode 100644
index 00000000..ad50ed82
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pciutil.h
@@ -0,0 +1,37 @@
+/* $Id: pciutil.h $ */
+/** @file
+ * Utility routines for calling the PCI BIOS.
+ */
+
+/*
+ * Copyright (C) 2011-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+extern uint16_t pci_find_device(uint16_t v_id, uint16_t d_id);
+/* Warning: pci_find_classcode destroys the high bits of ECX. */
+extern uint16_t pci_find_classcode(uint32_t dev_class);
+extern uint32_t pci_read_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg);
+extern uint32_t pci_read_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg);
+/* Warning: pci_read_config_dword destroys the high bits of ECX. */
+extern uint32_t pci_read_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg);
+extern void pci_write_config_byte(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint8_t val);
+extern void pci_write_config_word(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint16_t val);
+/* Warning: pci_write_config_dword destroys the high bits of ECX. */
+extern void pci_write_config_dword(uint8_t bus, uint8_t dev_fn, uint8_t reg, uint32_t val);
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_pciutil_h */
+
diff --git a/src/VBox/Devices/PC/BIOS/pirq.inc b/src/VBox/Devices/PC/BIOS/pirq.inc
new file mode 100644
index 00000000..7dd4040f
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pirq.inc
@@ -0,0 +1,477 @@
+; $Id: pirq.inc $
+;; @file
+; ???
+;
+
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+
+if BX_PCIBIOS
+public _pci_routing_table
+public _pci_routing_table_size
+
+align 16
+pci_routing_table_structure:
+ db '$PIR' ;; "$PIR" signature
+ db 0, 1 ;; version
+ifdef VBOX
+ dw 32 + (30 * 16) ;; table size
+else ; !VBOX
+ dw 32 + (6 * 16) ;; table size
+endif ; !VBOX
+ db 0 ;; PCI interrupt router bus
+ db 8 ;; PCI interrupt router DevFunc
+ dw 0000h ;; PCI exclusive IRQs
+ dw 8086h ;; compatible PCI interrupt router vendor ID
+ dw 7000h ;; compatible PCI interrupt router device ID
+ dw 0,0 ;; Miniport data
+ db 0,0,0,0,0,0,0,0,0,0,0 ;; reserved
+ifdef VBOX
+ db 0 ;; checksum (set by biossums)
+else ; !VBOX
+ db 7 ;; checksum
+endif ; !VBOX
+_pci_routing_table:
+pci_routing_table:
+ ;; first slot entry PCI-to-ISA (embedded)
+ db 0 ;; pci bus number
+ db 008h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#: pointer into PCI2ISA config space
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 0 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; second slot entry: 1st PCI slot
+ db 0 ;; pci bus number
+ db 010h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 1 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; third slot entry: 2nd PCI slot
+ db 0 ;; pci bus number
+ db 018h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 2 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 4th slot entry: 3rd PCI slot
+ db 0 ;; pci bus number
+ db 020h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 3 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 5th slot entry: 4th PCI slot
+ db 0 ;; pci bus number
+ db 028h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 4 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 6th slot entry: 5th PCI slot
+ db 0 ;; pci bus number
+ db 030h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 5 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ifdef VBOX
+ ;; 7th slot entry: 6th PCI slot
+ db 0 ;; pci bus number
+ db 038h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 6 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 8th slot entry: 7th PCI slot
+ db 0 ;; pci bus number
+ db 040h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 7 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 9th slot entry: 8th PCI slot
+ db 0 ;; pci bus number
+ db 048h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 8 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 10th slot entry: 9th PCI slot
+ db 0 ;; pci bus number
+ db 050h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 9 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 11th slot entry: 10th PCI slot
+ db 0 ;; pci bus number
+ db 058h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 10 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 12th slot entry: 11th PCI slot
+ db 0 ;; pci bus number
+ db 60h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 11 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 13th slot entry: 12th PCI slot
+ db 0 ;; pci bus number
+ db 068h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 12 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 14th slot entry: 13th PCI slot
+ db 0 ;; pci bus number
+ db 070h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 13 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 15th slot entry: 14th PCI slot
+ db 0 ;; pci bus number
+ db 078h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 14 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 16th slot entry: 15th PCI slot
+ db 0 ;; pci bus number
+ db 080h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 15 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 17th slot entry: 16th PCI slot
+ db 0 ;; pci bus number
+ db 088h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 16 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 18th slot entry: 17th PCI slot
+ db 0 ;; pci bus number
+ db 090h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 17 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 19th slot entry: 18th PCI slot
+ db 0 ;; pci bus number
+ db 098h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 18 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 20th slot entry: 19th PCI slot
+ db 0 ;; pci bus number
+ db 0A0h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 19 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 21st slot entry: 20th PCI slot
+ db 0 ;; pci bus number
+ db 0A8h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 20 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 22nd slot entry: 21st PCI slot
+ db 0 ;; pci bus number
+ db 0B0h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 21 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 23rd slot entry: 22nd PCI slot
+ db 0 ;; pci bus number
+ db 0B8h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 22 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 24th slot entry: 23rd PCI slot
+ db 0 ;; pci bus number
+ db 0C0h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 23 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 25th slot entry: 24th PCI slot
+ db 0 ;; pci bus number
+ db 0C8h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 24 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 26th slot entry: 25th PCI slot
+ db 0 ;; pci bus number
+ db 0D0h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 25 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 27th slot entry: 26th PCI slot
+ db 0 ;; pci bus number
+ db 0D8h ;; pci device number (bit 7-3)
+ db 62h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 63h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 60h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 61h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 26 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 28th slot entry: 27th PCI slot
+ db 0 ;; pci bus number
+ db 0E0h ;; pci device number (bit 7-3)
+ db 63h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 60h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 61h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 62h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 27 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 29th slot entry: 28th PCI slot
+ db 0 ;; pci bus number
+ db 0E8h ;; pci device number (bit 7-3)
+ db 60h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 61h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 62h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 63h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 28 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+ ;; 30th slot entry: 29th PCI slot
+ db 0 ;; pci bus number
+ db 0F0h ;; pci device number (bit 7-3)
+ db 61h ;; link value INTA#
+ dw 0DEF8h ;; IRQ bitmap INTA#
+ db 62h ;; link value INTB#
+ dw 0DEF8h ;; IRQ bitmap INTB#
+ db 63h ;; link value INTC#
+ dw 0DEF8h ;; IRQ bitmap INTC#
+ db 60h ;; link value INTD#
+ dw 0DEF8h ;; IRQ bitmap INTD#
+ db 29 ;; physical slot (0 = embedded)
+ db 0 ;; reserved
+endif ; VBOX
+pci_routing_table_end:
+;; Size of the table
+_pci_routing_table_size dw pci_routing_table_end - pci_routing_table
+
+endif ; BX_PCIBIOS
diff --git a/src/VBox/Devices/PC/BIOS/pmode.inc b/src/VBox/Devices/PC/BIOS/pmode.inc
new file mode 100644
index 00000000..fba20b8d
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pmode.inc
@@ -0,0 +1,81 @@
+; $Id: pmode.inc $
+;; @file
+; Enter and exit a minimal protected-mode environment.
+;
+
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;; Caveats: May only be called from the F000 segment (16-bit). Does not
+;; switch stacks. Must be run with disabled interrupts(!), any exceptions
+;; will cause a crash. On return from pmode_enter, DS contains a selector
+;; which can address the entire 4GB address space.
+
+public pmode_enter
+public pmode_exit
+public pmbios_gdt_desc
+public pmbios_gdt
+
+pmode_enter proc near
+
+ push cs
+ pop ds
+ .386p
+ lgdt fword ptr [pmbios_gdt_desc]
+ mov eax, cr0
+ or al, 1
+ mov cr0, eax
+; jmp far ptr 20h:really_enter_pm
+ db 0EAh
+ dw really_enter_pm
+ dw 20h
+really_enter_pm:
+ mov ax, 18h
+ mov ds, ax
+ ret
+
+pmode_enter endp
+
+
+pmode_exit proc near
+
+ mov ax, 40h ; Ensure RM limit/attributes
+ mov ds, ax ; (where base = selector << 4)
+
+ mov eax, cr0
+ and al, 0FEh
+ mov cr0, eax
+ SET_DEFAULT_CPU_286
+ jmp far ptr really_exit_pm
+really_exit_pm:
+ ret
+
+pmode_exit endp
+
+
+
+pmbios_gdt_desc:
+ dw 40h + 7 ; last selector plus 8 - 1
+ dw pmbios_gdt
+ dw 000Fh
+
+pmbios_gdt:
+ dw 0, 0, 0, 0
+ dw 0, 0, 0, 0
+ dw 0ffffh, 0, 9b00h, 00cfh ; 32-bit code (0x10)
+ dw 0ffffh, 0, 9300h, 00cfh ; 32-bit data (0x18)
+ dw 0ffffh, 0, 9b0fh, 0000h ; 16-bit code, base=0xf0000
+ dw 0ffffh, 0, 9300h, 0000h ; 16-bit data, base=0x0
+ dw 0, 0, 0, 0
+ dw 0, 0, 0, 0
+ dw 0ffffh, 400h, 9300h, 0000h ; 16-bit data, base=0x40
+
diff --git a/src/VBox/Devices/PC/BIOS/pmsetup.inc b/src/VBox/Devices/PC/BIOS/pmsetup.inc
new file mode 100644
index 00000000..383b0709
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/pmsetup.inc
@@ -0,0 +1,65 @@
+; $Id: pmsetup.inc $
+;; @file
+; Initial system setup which needs to run in protected mode.
+;
+
+;
+; Copyright (C) 2004-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+SVR equ 0FEE000F0h
+LVT_LINT0 equ 0FEE00350h
+LVT_LINT1 equ 0FEE00360h
+
+public pmode_setup
+
+;; Enable the local APIC and program LINT0/LINT1 entries. Without that,
+;; virtual wire interrupts could not be delivered. Note that the APIC must
+;; be enabled first because when disabled, all LVTs are forced masked.
+
+pmode_setup proc near
+
+ .386
+ push eax
+ push esi
+ pushf
+ cli ; Interrupts would kill us!
+ call pmode_enter
+
+ mov eax, cr0 ; Clear CR0.CD and CR0.NW
+ and eax, 09FFFFFFFh
+ mov cr0, eax
+
+ mov esi, SVR ; Program the SVR -- enable the APIC,
+ mov eax, 010Fh ; set spurious interrupt vector to 15
+ mov [esi], eax
+
+ mov esi, LVT_LINT0 ; Program LINT0 to ExtINT and unmask
+ mov eax, [esi]
+ and eax, 0FFFE00FFh
+ or ah, 7
+ mov [esi], eax
+
+ mov esi, LVT_LINT1 ; Program LINT1 to NMI and unmask
+ mov eax, [esi]
+ and eax, 0FFFE00FFh
+ or ah, 4
+ mov [esi], eax
+
+ call pmode_exit
+ popf
+ pop esi
+ pop eax
+ SET_DEFAULT_CPU_286
+ ret
+
+pmode_setup endp
+
diff --git a/src/VBox/Devices/PC/BIOS/post.c b/src/VBox/Devices/PC/BIOS/post.c
new file mode 100644
index 00000000..f7834d2c
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/post.c
@@ -0,0 +1,183 @@
+/* $Id: post.c $ */
+/** @file
+ * BIOS POST routines. Used only during initialization.
+ */
+
+/*
+ * Copyright (C) 2004-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_POST
+# define DPRINT(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define DPRINT(...)
+#endif
+
+/* In general, checksumming ROMs in a VM just wastes time. */
+//#define CHECKSUM_ROMS
+
+/* The format of a ROM is as follows:
+ *
+ * ------------------------------
+ * 0 | AA55h signature (word) |
+ * ------------------------------
+ * 2 | Size in 512B blocks (byte) |
+ * ------------------------------
+ * 3 | Start of executable code |
+ * | ....... |
+ * end | |
+ * ------------------------------
+ */
+
+typedef struct rom_hdr_tag {
+ uint16_t signature;
+ uint8_t num_blks;
+ uint8_t code;
+} rom_hdr;
+
+
+/* Calculate the checksum of a ROM. Note that the ROM might be
+ * larger than 64K.
+ */
+static inline uint8_t rom_checksum(uint8_t __far *rom, uint8_t blocks)
+{
+ uint8_t sum = 0;
+
+#ifdef CHECKSUM_ROMS
+ while (blocks--) {
+ int i;
+
+ for (i = 0; i < 512; ++i)
+ sum += rom[i];
+ /* Add 512 bytes (32 paragraphs) to segment. */
+ rom = MK_FP(FP_SEG(rom) + (512 >> 4), 0);
+ }
+#endif
+ return sum;
+}
+
+/* Scan for ROMs in the given range and execute their POST code. */
+void rom_scan(uint16_t start_seg, uint16_t end_seg)
+{
+ rom_hdr __far *rom;
+ uint8_t rom_blks;
+
+ DPRINT("Scanning for ROMs in %04X-%04X range\n", start_seg, end_seg);
+
+ while (start_seg < end_seg) {
+ rom = MK_FP(start_seg, 0);
+ /* Check for the ROM signature. */
+ if (rom->signature == 0xAA55) {
+ DPRINT("Found ROM at segment %04X\n", start_seg);
+ if (!rom_checksum((void __far *)rom, rom->num_blks)) {
+ void (__far * rom_init)(void);
+
+ /* Checksum good, initialize ROM. */
+ rom_init = (void __far *)&rom->code;
+ rom_init();
+ int_disable();
+ DPRINT("ROM initialized\n");
+
+ /* Continue scanning past the end of this ROM. */
+ rom_blks = (rom->num_blks + 3) & ~3; /* 4 blocks = 2K */
+ start_seg += rom_blks / 4;
+ }
+ } else {
+ /* Scanning is done in 2K steps. */
+ start_seg += 2048 >> 4;
+ }
+ }
+}
+
+#if VBOX_BIOS_CPU >= 80386
+
+/* NB: The CPUID detection is generic but currently not used elsewhere. */
+
+/* Check CPUID availability. */
+int is_cpuid_supported( void )
+{
+ uint32_t old_flags, new_flags;
+
+ old_flags = eflags_read();
+ new_flags = old_flags ^ (1L << 21); /* Toggle CPUID bit. */
+ eflags_write( new_flags );
+ new_flags = eflags_read();
+ return( old_flags != new_flags ); /* Supported if bit changed. */
+}
+
+#define APICMODE_DISABLED 0
+#define APICMODE_APIC 1
+#define APICMODE_X2APIC 2
+
+#define APIC_BASE_MSR 0x1B
+#define APICBASE_X2APIC 0x400 /* bit 10 */
+#define APICBASE_ENABLE 0x800 /* bit 11 */
+
+/*
+ * Set up APIC/x2APIC. See also DevPcBios.cpp.
+ *
+ * NB: Virtual wire compatibility is set up earlier in 32-bit protected
+ * mode assembler (because it needs to access MMIO just under 4GB).
+ * Switching to x2APIC mode or disabling the APIC is done through an MSR
+ * and needs no 32-bit addressing. Going to x2APIC mode does not lose the
+ * existing virtual wire setup.
+ *
+ * NB: This code does not assume that there is a local APIC. It is necessary
+ * to check CPUID whether APIC is present; the CPUID instruction might not be
+ * available either.
+ *
+ * NB: Destroys high bits of 32-bit registers.
+ */
+void BIOSCALL apic_setup(void)
+{
+ uint64_t base_msr;
+ uint16_t mask_set;
+ uint16_t mask_clr;
+ uint8_t apic_mode;
+ uint32_t cpu_id[4];
+
+ /* If there's no CPUID, there's certainly no APIC. */
+ if (!is_cpuid_supported()) {
+ return;
+ }
+
+ /* Check EDX bit 9 */
+ cpuid(&cpu_id, 1);
+ BX_DEBUG("CPUID EDX: 0x%lx\n", cpu_id[3]);
+ if ((cpu_id[3] & (1 << 9)) == 0) {
+ return; /* No local APIC, nothing to do. */
+ }
+
+ /* APIC mode at offset 78h in CMOS NVRAM. */
+ apic_mode = inb_cmos(0x78);
+
+ mask_set = mask_clr = 0;
+ if (apic_mode == APICMODE_X2APIC)
+ mask_set = APICBASE_X2APIC;
+ else if (apic_mode == APICMODE_DISABLED)
+ mask_clr = APICBASE_ENABLE;
+ else
+ ; /* Any other setting leaves things alone. */
+
+ if (mask_set || mask_clr) {
+ base_msr = msr_read(APIC_BASE_MSR);
+ base_msr &= ~(uint64_t)mask_clr;
+ base_msr |= mask_set;
+ msr_write(base_msr, APIC_BASE_MSR);
+ }
+}
+
+#endif
diff --git a/src/VBox/Devices/PC/BIOS/print.c b/src/VBox/Devices/PC/BIOS/print.c
new file mode 100644
index 00000000..f8eb32c7
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/print.c
@@ -0,0 +1,296 @@
+/* $Id: print.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include <stdarg.h>
+#include "inlines.h"
+#include "biosint.h"
+
+// Debug printf support
+
+/* Redirect INFO output to backdoor logging port. */
+#define INFO_PORT 0x504
+#define DEBUG_PORT 0x403
+
+const char bios_prefix_string[] = "BIOS: ";
+
+void wrch(uint8_t c);
+#pragma aux wrch = "mov ah, 0eh" "int 10h" parm [al] modify exact [ax bx];
+
+void send(uint16_t action, uint8_t c)
+{
+#if BX_DEBUG_SERIAL
+ if (c == '\n')
+ uart_tx_byte(BX_DEBUG_PORT, '\r');
+ uart_tx_byte(BX_DEBUG_PORT, c);
+#endif
+#if BX_VIRTUAL_PORTS
+ if (action & BIOS_PRINTF_DEBUG)
+ outb(DEBUG_PORT, c);
+ if (action & BIOS_PRINTF_INFO)
+ outb(INFO_PORT, c);
+#endif
+ if (action & BIOS_PRINTF_SCREEN) {
+ if (c == '\n')
+ wrch('\r');
+ wrch(c);
+ }
+}
+
+void put_int(uint16_t action, short val, short width, bx_bool neg)
+{
+ short nval = val / 10;
+ if (nval)
+ put_int(action, nval, width - 1, neg);
+ else {
+ while (--width > 0)
+ send(action, ' ');
+ if (neg)
+ send(action, '-');
+ }
+ send(action, val - (nval * 10) + '0');
+}
+
+void put_uint(uint16_t action, unsigned short val, short width, bx_bool neg)
+{
+ unsigned short nval = val / 10;
+ if (nval)
+ put_uint(action, nval, width - 1, neg);
+ else {
+ while (--width > 0)
+ send(action, ' ');
+ if (neg)
+ send(action, '-');
+ }
+ send(action, val - (nval * 10) + '0');
+}
+
+void put_luint(uint16_t action, unsigned long val, short width, bx_bool neg)
+{
+ unsigned long nval = val / 10;
+ if (nval)
+ put_luint(action, nval, width - 1, neg);
+ else {
+ while (--width > 0)
+ send(action, ' ');
+ if (neg)
+ send(action, '-');
+ }
+ send(action, val - (nval * 10) + '0');
+}
+
+void put_str(uint16_t action, const char __far *s)
+{
+ uint8_t c;
+
+ while (c = *s) {
+ send(action, c);
+ s++;
+ }
+}
+
+void put_str_near(uint16_t action, const char __near *s)
+{
+ uint8_t c;
+
+ while (c = *s) {
+ send(action, c);
+ s++;
+ }
+}
+
+
+//--------------------------------------------------------------------------
+// bios_printf()
+// A compact variable argument printf function.
+//
+// Supports %[format_width][length]format
+// where format can be x,X,u,d,s,S,c
+// and the optional length modifier is l (ell, long 32-bit) or ll
+// (long long, 64-bit).
+// Only x,X work with ll
+//--------------------------------------------------------------------------
+void bios_printf(uint16_t action, const char *s, ...)
+{
+ uint8_t c;
+ bx_bool in_format;
+ int i;
+ uint16_t arg, nibble, hibyte, format_width, hexadd;
+ va_list args;
+
+ va_start( args, s );
+
+ in_format = 0;
+ format_width = 0;
+
+ if ((action & BIOS_PRINTF_DEBHALT) == BIOS_PRINTF_DEBHALT) {
+ bios_printf (BIOS_PRINTF_SCREEN, "FATAL: ");
+ }
+
+ while (c = *s) {
+ if ( c == '%' ) {
+ in_format = 1;
+ format_width = 0;
+ }
+ else if (in_format) {
+ if ( (c>='0') && (c<='9') ) {
+ format_width = (format_width * 10) + (c - '0');
+ }
+ else {
+ arg = va_arg( args, uint16_t );
+ if (c == 'x' || c == 'X') {
+ if (format_width == 0)
+ format_width = 4;
+ if (c == 'x')
+ hexadd = 'a';
+ else
+ hexadd = 'A';
+ for (i=format_width-1; i>=0; i--) {
+ nibble = (arg >> (4 * i)) & 0x000f;
+ send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd));
+ }
+ }
+ else if (c == 'u') {
+ put_uint(action, arg, format_width, 0);
+ }
+ else if (c == 'l' && s[1] == 'l') {
+ uint64_t llval;
+ uint16_t __far *cp16;
+
+ s += 2;
+ c = *s;
+ cp16 = (uint16_t __far *)&llval;
+ cp16[0] = arg;
+ cp16[1] = va_arg( args, uint16_t );
+ cp16[2] = va_arg( args, uint16_t );
+ cp16[3] = va_arg( args, uint16_t );
+ if (c == 'x' || c == 'X') {
+ if (format_width == 0)
+ format_width = 16;
+ if (c == 'x')
+ hexadd = 'a';
+ else
+ hexadd = 'A';
+ for (i=format_width-1; i>=0; i--) {
+ nibble = (llval >> (i * 4)) & 0x000f;
+ send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd));
+ }
+ } else {
+ BX_PANIC("bios_printf: unknown %ll format\n");
+ }
+ }
+ else if (c == 'l') {
+ s++;
+ c = *s; /* is it ld,lx,lu? */
+ hibyte = va_arg( args, uint16_t );
+ if (c == 'd') {
+ if (hibyte & 0x8000)
+ put_luint(action, 0L-(((uint32_t) hibyte << 16) | arg), format_width-1, 1);
+ else
+ put_luint(action, ((uint32_t) hibyte << 16) | arg, format_width, 0);
+ }
+ else if (c == 'u') {
+ put_luint(action, ((uint32_t) hibyte << 16) | arg, format_width, 0);
+ }
+ else if (c == 'x' || c == 'X')
+ {
+ if (format_width == 0)
+ format_width = 8;
+ if (c == 'x')
+ hexadd = 'a';
+ else
+ hexadd = 'A';
+ for (i=format_width-1; i>=0; i--) {
+ nibble = ((((uint32_t)hibyte << 16) | arg) >> (4 * i)) & 0x000f;
+ send (action, (nibble<=9)? (nibble+'0') : (nibble-10+hexadd));
+ }
+ }
+ }
+ else if (c == 'd') {
+ if (arg & 0x8000)
+ put_int(action, -arg, format_width - 1, 1);
+ else
+ put_int(action, arg, format_width, 0);
+ }
+ else if (c == 's') {
+ put_str(action, (char *)arg);
+ }
+ else if (c == 'S') {
+ hibyte = arg;
+ arg = va_arg( args, uint16_t );
+ put_str(action, hibyte :> (char *)arg);
+ }
+ else if (c == 'c') {
+ send(action, arg);
+ }
+ else
+ BX_PANIC("bios_printf: unknown format\n");
+ in_format = 0;
+ }
+ }
+ else {
+ send(action, c);
+ }
+ ++s;
+ }
+ va_end( args );
+ if (action & BIOS_PRINTF_HALT) {
+ // freeze in a busy loop.
+ int_disable();
+ halt_forever();
+ }
+}
+
+// End of printf support
diff --git a/src/VBox/Devices/PC/BIOS/ps2mouse.c b/src/VBox/Devices/PC/BIOS/ps2mouse.c
new file mode 100644
index 00000000..6b485f68
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/ps2mouse.c
@@ -0,0 +1,452 @@
+/* $Id: ps2mouse.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+
+#if DEBUG_INT15_MS
+# define BX_DEBUG_INT15_MS(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT15_MS(...)
+#endif
+
+#if DEBUG_INT74
+# define BX_DEBUG_INT74(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT74(...)
+#endif
+
+#if BX_USE_PS2_MOUSE
+
+static const char panic_msg_keyb_buffer_full[] = "%s: keyboard input buffer full\n";
+
+uint8_t send_to_mouse_ctrl(uint8_t sendbyte)
+{
+ BX_DEBUG_INT15_MS("send %02x to mouse:\n", sendbyte);
+ // wait for chance to write to ctrl
+ if (inb(0x64) & 0x02)
+ BX_PANIC(panic_msg_keyb_buffer_full,"sendmouse");
+ outb(0x64, 0xD4);
+ outb(0x60, sendbyte);
+ return(0);
+}
+
+
+uint8_t get_mouse_data(uint8_t __far *data)
+{
+ int retries = 10000; /* ~150ms timeout */
+ uint8_t response;
+
+ while ((inb(0x64) & 0x21) != 0x21 && retries)
+ {
+ /* Wait until the 15us refresh counter toggles. */
+ response = inb(0x61) & 0x10;
+ while((inb(0x61) & 0x10) == response)
+ ;
+ --retries;
+ }
+
+ if (!retries)
+ return(1);
+
+ response = inb(0x60);
+ *data = response;
+ return(0);
+}
+
+void set_kbd_command_byte(uint8_t command_byte)
+{
+ if (inb(0x64) & 0x02)
+ BX_PANIC(panic_msg_keyb_buffer_full,"setkbdcomm");
+
+ outb(0x64, 0x60); // write command byte
+ outb(0x60, command_byte);
+}
+
+
+void BIOSCALL int74_function(volatile uint16_t make_farcall, volatile uint16_t Z,
+ volatile uint16_t Y, volatile uint16_t X, volatile uint16_t status)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t in_byte, index, package_count;
+ uint8_t mouse_flags_1, mouse_flags_2;
+
+ BX_DEBUG_INT74("entering int74_function\n");
+ make_farcall = 0;
+
+ in_byte = inb(0x64);
+ if ( (in_byte & 0x21) != 0x21 ) {
+ return;
+ }
+ in_byte = inb(0x60);
+ BX_DEBUG_INT74("int74: read byte %02x\n", in_byte);
+
+ mouse_flags_1 = read_byte(ebda_seg, 0x0026);
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+
+ if ( (mouse_flags_2 & 0x80) != 0x80 ) {
+ return;
+ }
+
+ package_count = mouse_flags_2 & 0x07;
+ index = mouse_flags_1 & 0x07;
+ write_byte(ebda_seg, 0x28 + index, in_byte);
+
+ if ( index >= package_count ) {
+ BX_DEBUG_INT74("int74_function: make_farcall=1\n");
+ status = read_byte(ebda_seg, 0x0028 + 0);
+ X = read_byte(ebda_seg, 0x0028 + 1);
+ Y = read_byte(ebda_seg, 0x0028 + 2);
+ Z = 0;
+ mouse_flags_1 = 0;
+ // check if far call handler installed
+ if (mouse_flags_2 & 0x80)
+ make_farcall = 1;
+ }
+ else {
+ mouse_flags_1++;
+ }
+ write_byte(ebda_seg, 0x0026, mouse_flags_1);
+}
+
+void BIOSCALL int15_function_mouse(pusha_regs_t regs, uint16_t ES, uint16_t DS, volatile uint16_t FLAGS)
+{
+ uint16_t ebda_seg=read_word(0x0040,0x000E);
+ uint8_t mouse_flags_1, mouse_flags_2;
+ uint16_t mouse_driver_seg;
+ uint16_t mouse_driver_offset;
+ uint8_t mouse_cmd;
+ uint8_t ret, mouse_data1, mouse_data2, mouse_data3;
+
+ BX_DEBUG_INT15_MS("int15 AX=%04x\n",regs.u.r16.ax);
+
+ // Return Codes status in AH
+ // =========================
+ // 00: success
+ // 01: invalid subfunction (AL > 7)
+ // 02: invalid input value (out of allowable range)
+ // 03: interface error
+ // 04: resend command received from mouse controller,
+ // device driver should attempt command again
+ // 05: cannot enable mouse, since no far call has been installed
+ // 80/86: mouse service not implemented
+
+ if (regs.u.r8.al > 7) {
+ BX_DEBUG_INT15_MS("unsupported subfn\n");
+ // invalid function
+ SET_CF();
+ regs.u.r8.ah = 1;
+ return;
+ }
+
+ // Valid subfn; disable AUX input and IRQ12, assume no error
+ set_kbd_command_byte(0x65);
+ CLEAR_CF();
+ regs.u.r8.ah = 0;
+
+ switch (regs.u.r8.al) {
+ case 0: // Disable/Enable Mouse
+ BX_DEBUG_INT15_MS("case 0: ");
+ if (regs.u.r8.bh > 1) {
+ BX_DEBUG_INT15_MS("INT 15h C2 AL=0, BH=%02x\n", (unsigned) regs.u.r8.bh);
+ // invalid subfunction
+ SET_CF();
+ regs.u.r8.ah = 1;
+ break;
+ }
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+ if ( (mouse_flags_2 & 0x80) == 0 ) {
+ BX_DEBUG_INT15_MS("INT 15h C2 Enable/Disable Mouse, no far call handler\n");
+ SET_CF();
+ regs.u.r8.ah = 5; // no far call installed
+ break;
+ }
+ if (regs.u.r8.bh == 0) {
+ BX_DEBUG_INT15_MS("Disable Mouse\n");
+ mouse_cmd = 0xF5; // disable mouse command
+ } else {
+ BX_DEBUG_INT15_MS("Enable Mouse\n");
+ mouse_cmd = 0xF4; // enable mouse command
+ }
+
+ ret = send_to_mouse_ctrl(mouse_cmd); // disable mouse command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if ( (ret == 0) || (mouse_data1 == 0xFA) ) {
+ // success
+ break;
+ }
+ }
+
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ break;
+
+ case 5: // Initialize Mouse
+ // Valid package sizes are 1 to 8
+ if ( (regs.u.r8.bh < 1) || (regs.u.r8.bh > 8) ) {
+ SET_CF();
+ regs.u.r8.ah = 2; // invalid input
+ break;
+ }
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+ mouse_flags_2 = (mouse_flags_2 & 0xf8) | (regs.u.r8.bh - 1);
+ write_byte(ebda_seg, 0x0027, mouse_flags_2);
+ // fall through!
+
+ case 1: // Reset Mouse
+ BX_DEBUG_INT15_MS("case 1 or 5:\n");
+ // clear current package byte index
+ mouse_flags_1 = read_byte(ebda_seg, 0x0026);
+ mouse_flags_1 = mouse_flags_1 & 0xf8;
+ write_byte(ebda_seg, 0x0026, mouse_flags_1);
+ ret = send_to_mouse_ctrl(0xFF); // reset mouse command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data3);
+ // if no mouse attached, it will return RESEND
+ if (mouse_data3 == 0xfe) {
+ SET_CF();
+ regs.u.r8.ah = 4; // resend
+ break;
+ }
+ if (mouse_data3 != 0xfa)
+ BX_PANIC("Mouse reset returned %02x (should be ack)\n", (unsigned)mouse_data3);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data1);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data2);
+ if ( ret == 0 ) {
+ // success
+ regs.u.r8.bl = mouse_data1;
+ regs.u.r8.bh = mouse_data2;
+ break;
+ }
+ }
+ }
+ }
+
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ break;
+
+ case 2: // Set Sample Rate
+ BX_DEBUG_INT15_MS("case 2:\n");
+ switch (regs.u.r8.bh) {
+ case 0: mouse_data1 = 10; break; // 10 reports/sec
+ case 1: mouse_data1 = 20; break; // 20 reports/sec
+ case 2: mouse_data1 = 40; break; // 40 reports/sec
+ case 3: mouse_data1 = 60; break; // 60 reports/sec
+ case 4: mouse_data1 = 80; break; // 80 reports/sec
+ case 5: mouse_data1 = 100; break; // 100 reports/sec (default)
+ case 6: mouse_data1 = 200; break; // 200 reports/sec
+ default: mouse_data1 = 0;
+ }
+ if (mouse_data1 > 0) {
+ ret = send_to_mouse_ctrl(0xF3); // set sample rate command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data2);
+ ret = send_to_mouse_ctrl(mouse_data1);
+ ret = get_mouse_data(&mouse_data2);
+ // success
+ } else {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ } else {
+ // invalid input
+ SET_CF();
+ regs.u.r8.ah = 2;
+ }
+ break;
+
+ case 3: // Set Resolution
+ BX_DEBUG_INT15_MS("case 3:\n");
+ // BX:
+ // 0 = 25 dpi, 1 count per millimeter
+ // 1 = 50 dpi, 2 counts per millimeter
+ // 2 = 100 dpi, 4 counts per millimeter
+ // 3 = 200 dpi, 8 counts per millimeter
+ if (regs.u.r8.bh < 4) {
+ ret = send_to_mouse_ctrl(0xE8); // set resolution command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if (mouse_data1 != 0xfa)
+ BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1);
+ ret = send_to_mouse_ctrl(regs.u.r8.bh);
+ ret = get_mouse_data(&mouse_data1);
+ if (mouse_data1 != 0xfa)
+ BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1);
+ // success
+ } else {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ } else {
+ // invalid input
+ SET_CF();
+ regs.u.r8.ah = 2;
+ }
+ break;
+
+ case 4: // Get Device ID
+ BX_DEBUG_INT15_MS("case 4:\n");
+ ret = send_to_mouse_ctrl(0xF2); // get mouse ID command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ ret = get_mouse_data(&mouse_data2);
+ regs.u.r8.bh = mouse_data2;
+ // success
+ } else {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ break;
+
+ case 6: // Return Status & Set Scaling Factor...
+ BX_DEBUG_INT15_MS("case 6:\n");
+ switch (regs.u.r8.bh) {
+ case 0: // Return Status
+ ret = send_to_mouse_ctrl(0xE9); // get mouse info command
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if (mouse_data1 != 0xfa)
+ BX_PANIC("Mouse status returned %02x (should be ack)\n", (unsigned)mouse_data1);
+ if (ret == 0) {
+ ret = get_mouse_data(&mouse_data1);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data2);
+ if ( ret == 0 ) {
+ ret = get_mouse_data(&mouse_data3);
+ if ( ret == 0 ) {
+ regs.u.r8.bl = mouse_data1;
+ regs.u.r8.cl = mouse_data2;
+ regs.u.r8.dl = mouse_data3;
+ // success
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ break;
+
+ case 1: // Set Scaling Factor to 1:1
+ case 2: // Set Scaling Factor to 2:1
+ if (regs.u.r8.bh == 1) {
+ ret = send_to_mouse_ctrl(0xE6);
+ } else {
+ ret = send_to_mouse_ctrl(0xE7);
+ }
+ if (ret == 0) {
+ get_mouse_data(&mouse_data1);
+ ret = (mouse_data1 != 0xFA);
+ }
+ if (ret != 0) {
+ // interface error
+ SET_CF();
+ regs.u.r8.ah = 3;
+ }
+ break;
+
+ default:
+ BX_PANIC("INT 15h C2 AL=6, BH=%02x\n", (unsigned) regs.u.r8.bh);
+ // invalid subfunction
+ SET_CF();
+ regs.u.r8.ah = 1;
+ }
+ break;
+
+ case 7: // Set Mouse Handler Address
+ BX_DEBUG_INT15_MS("case 7:\n");
+ mouse_driver_seg = ES;
+ mouse_driver_offset = regs.u.r16.bx;
+ write_word(ebda_seg, 0x0022, mouse_driver_offset);
+ write_word(ebda_seg, 0x0024, mouse_driver_seg);
+ mouse_flags_2 = read_byte(ebda_seg, 0x0027);
+ if (mouse_driver_offset == 0 && mouse_driver_seg == 0) {
+ /* remove handler */
+ if ( (mouse_flags_2 & 0x80) != 0 ) {
+ mouse_flags_2 &= ~0x80;
+ }
+ }
+ else {
+ /* install handler */
+ mouse_flags_2 |= 0x80;
+ }
+ write_byte(ebda_seg, 0x0027, mouse_flags_2);
+ break;
+
+ default:
+ BX_PANIC("INT 15h C2 default case entered\n");
+ // invalid subfunction
+ SET_CF();
+ regs.u.r8.ah = 1;
+ }
+ BX_DEBUG_INT15_MS("returning cf = %u, ah = %02x\n", (unsigned)GET_CF(), (unsigned)regs.u.r8.ah);
+ // Re-enable AUX input and IRQ12
+ set_kbd_command_byte(0x47);
+}
+#endif // BX_USE_PS2_MOUSE
diff --git a/src/VBox/Devices/PC/BIOS/scsi.c b/src/VBox/Devices/PC/BIOS/scsi.c
new file mode 100644
index 00000000..74d2b043
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/scsi.c
@@ -0,0 +1,700 @@
+/* $Id: scsi.c $ */
+/** @file
+ * SCSI host adapter driver to boot from SCSI disks
+ */
+
+/*
+ * Copyright (C) 2004-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "biosint.h"
+#include "inlines.h"
+#include "pciutil.h"
+#include "ebda.h"
+
+
+#if DEBUG_SCSI
+# define DBG_SCSI(...) BX_INFO(__VA_ARGS__)
+#else
+# define DBG_SCSI(...)
+#endif
+
+#define VBSCSI_BUSY (1 << 0)
+#define VBSCSI_ERROR (1 << 1)
+
+/* The I/O port of the BusLogic SCSI adapter. */
+#define BUSLOGIC_BIOS_IO_PORT 0x430
+/* The I/O port of the LsiLogic SCSI adapter. */
+#define LSILOGIC_BIOS_IO_PORT 0x434
+/* The I/O port of the LsiLogic SAS adapter. */
+#define LSILOGIC_SAS_BIOS_IO_PORT 0x438
+
+#define VBSCSI_REGISTER_STATUS 0
+#define VBSCSI_REGISTER_COMMAND 0
+#define VBSCSI_REGISTER_DATA_IN 1
+#define VBSCSI_REGISTER_IDENTIFY 2
+#define VBSCSI_REGISTER_RESET 3
+#define VBSCSI_REGISTER_DEVSTAT 3
+
+#define VBSCSI_MAX_DEVICES 16 /* Maximum number of devices a SCSI device can have. */
+
+/* Command opcodes. */
+#define SCSI_SERVICE_ACT 0x9e
+#define SCSI_INQUIRY 0x12
+#define SCSI_READ_CAP_10 0x25
+#define SCSI_READ_10 0x28
+#define SCSI_WRITE_10 0x2a
+#define SCSI_READ_CAP_16 0x10 /* Not an opcode by itself, sub-action for the "Service Action" */
+#define SCSI_READ_16 0x88
+#define SCSI_WRITE_16 0x8a
+
+/* Data transfer direction. */
+#define SCSI_TXDIR_FROM_DEVICE 0
+#define SCSI_TXDIR_TO_DEVICE 1
+
+#pragma pack(1)
+
+/* READ_10/WRITE_10 CDB layout. */
+typedef struct {
+ uint16_t command; /* Command. */
+ uint32_t lba; /* LBA, MSB first! */
+ uint8_t pad1; /* Unused. */
+ uint16_t nsect; /* Sector count, MSB first! */
+ uint8_t pad2; /* Unused. */
+} cdb_rw10;
+
+/* READ_16/WRITE_16 CDB layout. */
+typedef struct {
+ uint16_t command; /* Command. */
+ uint64_t lba; /* LBA, MSB first! */
+ uint32_t nsect32; /* Sector count, MSB first! */
+ uint8_t pad1; /* Unused. */
+ uint8_t pad2; /* Unused. */
+} cdb_rw16;
+
+#pragma pack()
+
+ct_assert(sizeof(cdb_rw10) == 10);
+ct_assert(sizeof(cdb_rw16) == 16);
+
+void insb_discard(unsigned nbytes, unsigned port);
+#pragma aux insb_discard = \
+ ".286" \
+ "again:" \
+ "in al,dx" \
+ "loop again" \
+ parm [cx] [dx] modify exact [cx ax] nomemory;
+
+
+int scsi_cmd_data_in(uint16_t io_base, uint8_t target_id, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ /* Check that the adapter is ready. */
+ uint8_t status, sizes;
+ uint16_t i;
+
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ sizes = ((length >> 12) & 0xF0) | ((cbCDB == 16) ? 0 : cbCDB);
+ outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_FROM_DEVICE); /* Write the transfer direction. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write CDB size and top bufsize bits. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, length); /* Write the buffer size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, (length >> 8));
+ for (i = 0; i < cbCDB; i++) /* Write the CDB. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, aCDB[i]);
+
+ /* Now wait for the command to complete. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* If any error occurred, inform the caller and don't bother reading the data. */
+ if (status & VBSCSI_ERROR) {
+ outb(io_base + VBSCSI_REGISTER_RESET, 0);
+
+ status = inb(io_base + VBSCSI_REGISTER_DEVSTAT);
+ DBG_SCSI("%s: read failed, device status %02X\n", __func__, status);
+ return 4; /* Sector not found */
+ }
+
+ /* Read in the data. The transfer length may be exactly 64K or more,
+ * which needs a bit of care when we're using 16-bit 'rep ins'.
+ */
+ while (length > 32768) {
+ DBG_SCSI("%s: reading 32K to %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN);
+ length -= 32768;
+ buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer);
+ }
+
+ DBG_SCSI("%s: reading %ld bytes to %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ return 0;
+}
+
+int scsi_cmd_data_out(uint16_t io_base, uint8_t target_id, uint8_t __far *aCDB,
+ uint8_t cbCDB, uint8_t __far *buffer, uint32_t length)
+{
+ /* Check that the adapter is ready. */
+ uint8_t status, sizes;
+ uint16_t i;
+
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+
+ sizes = ((length >> 12) & 0xF0) | ((cbCDB == 16) ? 0 : cbCDB);
+ outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_TO_DEVICE); /* Write the transfer direction. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write CDB size and top bufsize bits. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, length); /* Write the buffer size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, (length >> 8));
+ for (i = 0; i < cbCDB; i++) /* Write the CDB. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, aCDB[i]);
+
+ /* Write out the data. The transfer length may be exactly 64K or more,
+ * which needs a bit of care when we're using 16-bit 'rep outs'.
+ */
+ while (length > 32768) {
+ DBG_SCSI("%s: writing 32K from %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer));
+ rep_outsb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN);
+ length -= 32768;
+ buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer);
+ }
+
+ DBG_SCSI("%s: writing %ld bytes from %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer));
+ rep_outsb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ /* Now wait for the command to complete. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* If any error occurred, inform the caller. */
+ if (status & VBSCSI_ERROR) {
+ outb(io_base + VBSCSI_REGISTER_RESET, 0);
+
+ status = inb(io_base + VBSCSI_REGISTER_DEVSTAT);
+ DBG_SCSI("%s: write failed, device status %02X\n", __func__, status);
+ return 4; /* Sector not found */
+ }
+
+ return 0;
+}
+
+/**
+ * Read sectors from an attached SCSI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int scsi_read_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint8_t rc;
+ cdb_rw16 cdb;
+ uint32_t count;
+ uint16_t io_base;
+ uint8_t target_id;
+ uint8_t device_id;
+
+ device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_SCSI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ count = bios_dsk->drqp.nsect;
+
+ /* Prepare a CDB. */
+ cdb.command = SCSI_READ_16;
+ cdb.lba = swap_64(bios_dsk->drqp.lba);
+ cdb.pad1 = 0;
+ cdb.nsect32 = swap_32(count);
+ cdb.pad2 = 0;
+
+
+ io_base = bios_dsk->scsidev[device_id].io_base;
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ DBG_SCSI("%s: reading %u sectors, device %d, target %d\n", __func__,
+ count, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = scsi_cmd_data_in(io_base, target_id, (void __far *)&cdb, 16,
+ bios_dsk->drqp.buffer, (count * 512L));
+
+ if (!rc)
+ {
+ bios_dsk->drqp.trsfsectors = count;
+ bios_dsk->drqp.trsfbytes = count * 512L;
+ }
+ DBG_SCSI("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect);
+
+ return rc;
+}
+
+/**
+ * Write sectors to an attached SCSI device.
+ *
+ * @returns status code.
+ * @param bios_dsk Pointer to disk request packet (in the
+ * EBDA).
+ */
+int scsi_write_sectors(bio_dsk_t __far *bios_dsk)
+{
+ uint8_t rc;
+ cdb_rw16 cdb;
+ uint32_t count;
+ uint16_t io_base;
+ uint8_t target_id;
+ uint8_t device_id;
+
+ device_id = VBOX_GET_SCSI_DEVICE(bios_dsk->drqp.dev_id);
+ if (device_id > BX_MAX_SCSI_DEVICES)
+ BX_PANIC("%s: device_id out of range %d\n", __func__, device_id);
+
+ count = bios_dsk->drqp.nsect;
+
+ /* Prepare a CDB. */
+ cdb.command = SCSI_WRITE_16;
+ cdb.lba = swap_64(bios_dsk->drqp.lba);
+ cdb.pad1 = 0;
+ cdb.nsect32 = swap_32(count);
+ cdb.pad2 = 0;
+
+ io_base = bios_dsk->scsidev[device_id].io_base;
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ DBG_SCSI("%s: writing %u sectors, device %d, target %d\n", __func__,
+ count, device_id, bios_dsk->scsidev[device_id].target_id);
+
+ rc = scsi_cmd_data_out(io_base, target_id, (void __far *)&cdb, 16,
+ bios_dsk->drqp.buffer, (count * 512L));
+
+ if (!rc)
+ {
+ bios_dsk->drqp.trsfsectors = count;
+ bios_dsk->drqp.trsfbytes = (count * 512L);
+ }
+ DBG_SCSI("%s: transferred %u sectors\n", __func__, bios_dsk->drqp.nsect);
+
+ return rc;
+}
+
+
+/// @todo move
+#define ATA_DATA_NO 0x00
+#define ATA_DATA_IN 0x01
+#define ATA_DATA_OUT 0x02
+
+/**
+ * Perform a "packet style" read with supplied CDB.
+ *
+ * @returns status code.
+ * @param device_id ID of the device to access.
+ * @param cmdlen Length of the CDB.
+ * @param cmdbuf The CDB buffer.
+ * @param before How much to skip before reading into the provided data buffer.
+ * @param length How much to transfer.
+ * @param inout Read/Write direction indicator.
+ * @param buffer Data buffer to store the data from the device in.
+ */
+uint16_t scsi_cmd_packet(uint16_t device_id, uint8_t cmdlen, char __far *cmdbuf,
+ uint16_t before, uint32_t length, uint8_t inout, char __far *buffer)
+{
+ bio_dsk_t __far *bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+ uint32_t read_len;
+ uint8_t status, sizes;
+ uint16_t i;
+ uint16_t io_base;
+ uint8_t target_id;
+
+ /* Data out is currently not supported. */
+ if (inout == ATA_DATA_OUT) {
+ BX_INFO("%s: DATA_OUT not supported yet\n", __func__);
+ return 1;
+ }
+
+ /* Convert to SCSI specific device number. */
+ device_id = VBOX_GET_SCSI_DEVICE(device_id);
+
+ DBG_SCSI("%s: reading %lu bytes, skip %u/%u, device %d, target %d\n", __func__,
+ length, bios_dsk->drqp.skip_b, bios_dsk->drqp.skip_a,
+ device_id, bios_dsk->scsidev[device_id].target_id);
+ DBG_SCSI("%s: reading %u %u-byte sectors\n", __func__,
+ bios_dsk->drqp.nsect, bios_dsk->drqp.sect_sz);
+
+ cmdlen -= 2; /* ATAPI uses 12-byte command packets for a READ 10. */
+
+ io_base = bios_dsk->scsidev[device_id].io_base;
+ target_id = bios_dsk->scsidev[device_id].target_id;
+
+ /* Wait until the adapter is ready. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* On the SCSI level, we have to transfer whole sectors. */
+ /* NB: With proper residual length support, this should not be necessary; we should
+ * be able to avoid transferring the 'after' part of the sector.
+ */
+ read_len = length + before + bios_dsk->drqp.skip_a;
+
+ sizes = (((read_len) >> 12) & 0xF0) | cmdlen;
+ outb(io_base + VBSCSI_REGISTER_COMMAND, target_id); /* Write the target ID. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, SCSI_TXDIR_FROM_DEVICE); /* Write the transfer direction. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, sizes); /* Write the CDB size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, read_len); /* Write the buffer size. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, (read_len) >> 8);
+ for (i = 0; i < cmdlen; i++) /* Write the CDB. */
+ outb(io_base + VBSCSI_REGISTER_COMMAND, cmdbuf[i]);
+
+ /* Now wait for the command to complete. */
+ do
+ status = inb(io_base + VBSCSI_REGISTER_STATUS);
+ while (status & VBSCSI_BUSY);
+
+ /* If any error occurred, inform the caller and don't bother reading the data. */
+ if (status & VBSCSI_ERROR) {
+ outb(io_base + VBSCSI_REGISTER_RESET, 0);
+
+ status = inb(io_base + VBSCSI_REGISTER_DEVSTAT);
+ DBG_SCSI("%s: read failed, device status %02X\n", __func__, status);
+ return 3;
+ }
+
+ /* Transfer the data read from the device. */
+
+ if (before) /* If necessary, throw away data which needs to be skipped. */
+ insb_discard(before, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ bios_dsk->drqp.trsfbytes = length;
+
+ /* The requested length may be exactly 64K or more, which needs
+ * a bit of care when we're using 16-bit 'rep ins'.
+ */
+ while (length > 32768) {
+ DBG_SCSI("%s: reading 32K to %X:%X\n", __func__, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, 32768, io_base + VBSCSI_REGISTER_DATA_IN);
+ length -= 32768;
+ buffer = (FP_SEG(buffer) + (32768 >> 4)) :> FP_OFF(buffer);
+ }
+
+ DBG_SCSI("%s: reading %ld bytes to %X:%X\n", __func__, length, FP_SEG(buffer), FP_OFF(buffer));
+ rep_insb(buffer, length, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ if (bios_dsk->drqp.skip_a) /* If necessary, throw away more data. */
+ insb_discard(bios_dsk->drqp.skip_a, io_base + VBSCSI_REGISTER_DATA_IN);
+
+ return 0;
+}
+
+/**
+ * Enumerate attached devices.
+ *
+ * @returns nothing.
+ * @param io_base The I/O base port of the controller.
+ */
+void scsi_enumerate_attached_devices(uint16_t io_base)
+{
+ int i;
+ uint8_t buffer[0x0200];
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ /* Go through target devices. */
+ for (i = 0; i < VBSCSI_MAX_DEVICES; i++)
+ {
+ uint8_t rc;
+ uint8_t aCDB[16];
+ uint8_t hd_index, devcount_scsi;
+
+ aCDB[0] = SCSI_INQUIRY;
+ aCDB[1] = 0;
+ aCDB[2] = 0;
+ aCDB[3] = 0;
+ aCDB[4] = 5; /* Allocation length. */
+ aCDB[5] = 0;
+
+ rc = scsi_cmd_data_in(io_base, i, aCDB, 6, buffer, 5);
+ if (rc != 0)
+ BX_PANIC("%s: SCSI_INQUIRY failed\n", __func__);
+
+ devcount_scsi = bios_dsk->scsi_devcount;
+
+ /* Check the attached device. */
+ if ( ((buffer[0] & 0xe0) == 0)
+ && ((buffer[0] & 0x1f) == 0x00))
+ {
+ DBG_SCSI("%s: Disk detected at %d\n", __func__, i);
+
+ /* We add the disk only if the maximum is not reached yet. */
+ if (devcount_scsi < BX_MAX_SCSI_DEVICES)
+ {
+ uint64_t sectors, t;
+ uint32_t sector_size, cylinders;
+ uint16_t heads, sectors_per_track;
+ uint8_t hdcount;
+ uint8_t cmos_base;
+
+ /* Issue a read capacity command now. */
+ _fmemset(aCDB, 0, sizeof(aCDB));
+ aCDB[0] = SCSI_SERVICE_ACT;
+ aCDB[1] = SCSI_READ_CAP_16;
+ aCDB[13] = 32; /* Allocation length. */
+
+ rc = scsi_cmd_data_in(io_base, i, aCDB, 16, buffer, 32);
+ if (rc != 0)
+ BX_PANIC("%s: SCSI_READ_CAPACITY failed\n", __func__);
+
+ /* The value returned is the last addressable LBA, not
+ * the size, which what "+ 1" is for.
+ */
+ sectors = swap_64(*(uint64_t *)buffer) + 1;
+
+ sector_size = ((uint32_t)buffer[8] << 24)
+ | ((uint32_t)buffer[9] << 16)
+ | ((uint32_t)buffer[10] << 8)
+ | ((uint32_t)buffer[11]);
+
+ /* We only support the disk if sector size is 512 bytes. */
+ if (sector_size != 512)
+ {
+ /* Leave a log entry. */
+ BX_INFO("Disk %d has an unsupported sector size of %u\n", i, sector_size);
+ continue;
+ }
+
+ /* Get logical CHS geometry. */
+ switch (devcount_scsi)
+ {
+ case 0:
+ cmos_base = 0x90;
+ break;
+ case 1:
+ cmos_base = 0x98;
+ break;
+ case 2:
+ cmos_base = 0xA0;
+ break;
+ case 3:
+ cmos_base = 0xA8;
+ break;
+ default:
+ cmos_base = 0;
+ }
+
+ if (cmos_base && inb_cmos(cmos_base + 7))
+ {
+ /* If provided, grab the logical geometry from CMOS. */
+ cylinders = inb_cmos(cmos_base + 0) + (inb_cmos(cmos_base + 1) << 8);
+ heads = inb_cmos(cmos_base + 2);
+ sectors_per_track = inb_cmos(cmos_base + 7);
+ }
+ else
+ {
+ /* Calculate default logical geometry. NB: Very different
+ * from default ATA/SATA logical geometry!
+ */
+ if (sectors >= (uint32_t)4 * 1024 * 1024)
+ {
+ heads = 255;
+ sectors_per_track = 63;
+ /* Approximate x / (255 * 63) using shifts */
+ t = (sectors >> 6) + (sectors >> 12);
+ cylinders = (t >> 8) + (t >> 16);
+ }
+ else if (sectors >= (uint32_t)2 * 1024 * 1024)
+ {
+ heads = 128;
+ sectors_per_track = 32;
+ cylinders = sectors >> 12;
+ }
+ else
+ {
+ heads = 64;
+ sectors_per_track = 32;
+ cylinders = sectors >> 11;
+ }
+ }
+
+ /* Calculate index into the generic disk table. */
+ hd_index = devcount_scsi + BX_MAX_ATA_DEVICES;
+
+ bios_dsk->scsidev[devcount_scsi].io_base = io_base;
+ bios_dsk->scsidev[devcount_scsi].target_id = i;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_SCSI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_HD;
+ bios_dsk->devices[hd_index].removable = 0;
+ bios_dsk->devices[hd_index].lock = 0;
+ bios_dsk->devices[hd_index].blksize = sector_size;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_LBA;
+
+ /* Write LCHS/PCHS values. */
+ bios_dsk->devices[hd_index].lchs.heads = heads;
+ bios_dsk->devices[hd_index].lchs.spt = sectors_per_track;
+ bios_dsk->devices[hd_index].pchs.heads = heads;
+ bios_dsk->devices[hd_index].pchs.spt = sectors_per_track;
+
+ if (cylinders > 1024) {
+ bios_dsk->devices[hd_index].lchs.cylinders = 1024;
+ bios_dsk->devices[hd_index].pchs.cylinders = 1024;
+ } else {
+ bios_dsk->devices[hd_index].lchs.cylinders = (uint16_t)cylinders;
+ bios_dsk->devices[hd_index].pchs.cylinders = (uint16_t)cylinders;
+ }
+
+ BX_INFO("SCSI %d-ID#%d: LCHS=%lu/%u/%u 0x%llx sectors\n", devcount_scsi,
+ i, (uint32_t)cylinders, heads, sectors_per_track, sectors);
+
+ bios_dsk->devices[hd_index].sectors = sectors;
+
+ /* Store the id of the disk in the ata hdidmap. */
+ hdcount = bios_dsk->hdcount;
+ bios_dsk->hdidmap[hdcount] = devcount_scsi + BX_MAX_ATA_DEVICES;
+ hdcount++;
+ bios_dsk->hdcount = hdcount;
+
+ /* Update hdcount in the BDA. */
+ hdcount = read_byte(0x40, 0x75);
+ hdcount++;
+ write_byte(0x40, 0x75, hdcount);
+
+ devcount_scsi++;
+ }
+ else
+ {
+ /* We reached the maximum of SCSI disks we can boot from. We can quit detecting. */
+ break;
+ }
+ }
+ else if ( ((buffer[0] & 0xe0) == 0)
+ && ((buffer[0] & 0x1f) == 0x05))
+ {
+ uint8_t cdcount;
+ uint8_t removable;
+
+ BX_INFO("SCSI %d-ID#%d: CD/DVD-ROM\n", devcount_scsi, i);
+
+ /* Calculate index into the generic device table. */
+ hd_index = devcount_scsi + BX_MAX_ATA_DEVICES;
+
+ removable = buffer[1] & 0x80 ? 1 : 0;
+
+ bios_dsk->scsidev[devcount_scsi].io_base = io_base;
+ bios_dsk->scsidev[devcount_scsi].target_id = i;
+ bios_dsk->devices[hd_index].type = DSK_TYPE_SCSI;
+ bios_dsk->devices[hd_index].device = DSK_DEVICE_CDROM;
+ bios_dsk->devices[hd_index].removable = removable;
+ bios_dsk->devices[hd_index].blksize = 2048;
+ bios_dsk->devices[hd_index].translation = GEO_TRANSLATION_NONE;
+
+ /* Store the ID of the device in the BIOS cdidmap. */
+ cdcount = bios_dsk->cdcount;
+ bios_dsk->cdidmap[cdcount] = devcount_scsi + BX_MAX_ATA_DEVICES;
+ cdcount++;
+ bios_dsk->cdcount = cdcount;
+
+ devcount_scsi++;
+ }
+ else
+ DBG_SCSI("%s: No supported device detected at %d\n", __func__, i);
+
+ bios_dsk->scsi_devcount = devcount_scsi;
+ }
+}
+
+void scsi_pci_init(uint16_t vendor_id, uint16_t device_id)
+{
+ uint16_t bus_dev_fn;
+
+ bus_dev_fn = pci_find_device(vendor_id, device_id);
+ if (bus_dev_fn == -1) {
+ DBG_SCSI("%s: Adapter %x:%x not found, how come?!\n", __func__, vendor_id, device_id);
+ return;
+ }
+
+ DBG_SCSI("%s: Adapter %x:%x found at %x, enabling BM\n", __func__, vendor_id, device_id, bus_dev_fn);
+ /* Enable PCI memory, I/O, bus mastering access in command register. */
+ pci_write_config_word(bus_dev_fn >> 8, (uint8_t)bus_dev_fn, 4, 0x7);
+}
+
+/**
+ * Init the SCSI driver and detect attached disks.
+ */
+void BIOSCALL scsi_init(void)
+{
+ uint8_t identifier;
+ bio_dsk_t __far *bios_dsk;
+
+ bios_dsk = read_word(0x0040, 0x000E) :> &EbdaData->bdisk;
+
+ bios_dsk->scsi_devcount = 0;
+
+ identifier = 0;
+
+ /* Detect the BusLogic adapter. */
+ outb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55);
+ identifier = inb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY);
+
+ if (identifier == 0x55)
+ {
+ /* Detected - Enumerate attached devices. */
+ DBG_SCSI("%s: BusLogic SCSI adapter detected\n", __func__);
+ outb(BUSLOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0);
+ scsi_enumerate_attached_devices(BUSLOGIC_BIOS_IO_PORT);
+ scsi_pci_init(0x104B, 0x1040);
+ }
+ else
+ {
+ DBG_SCSI("%s: BusLogic SCSI adapter not detected\n", __func__);
+ }
+
+ /* Detect the LSI Logic parallel SCSI adapter. */
+ outb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55);
+ identifier = inb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY);
+
+ if (identifier == 0x55)
+ {
+ /* Detected - Enumerate attached devices. */
+ DBG_SCSI("%s: LSI Logic SCSI adapter detected\n", __func__);
+ outb(LSILOGIC_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0);
+ scsi_enumerate_attached_devices(LSILOGIC_BIOS_IO_PORT);
+ scsi_pci_init(0x1000, 0x0030);
+ }
+ else
+ {
+ DBG_SCSI("%s: LSI Logic SCSI adapter not detected\n", __func__);
+ }
+
+ /* Detect the LSI Logic SAS adapter. */
+ outb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY, 0x55);
+ identifier = inb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_IDENTIFY);
+
+ if (identifier == 0x55)
+ {
+ /* Detected - Enumerate attached devices. */
+ DBG_SCSI("%s: LSI Logic SAS adapter detected\n", __func__);
+ outb(LSILOGIC_SAS_BIOS_IO_PORT+VBSCSI_REGISTER_RESET, 0);
+ scsi_enumerate_attached_devices(LSILOGIC_SAS_BIOS_IO_PORT);
+ scsi_pci_init(0x1000, 0x0054);
+ }
+ else
+ {
+ DBG_SCSI("%s: LSI Logic SAS adapter not detected\n", __func__);
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/serial.c b/src/VBox/Devices/PC/BIOS/serial.c
new file mode 100644
index 00000000..b240a897
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/serial.c
@@ -0,0 +1,128 @@
+/* $Id: serial.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "inlines.h"
+#include "biosint.h"
+
+void BIOSCALL int14_function(pusha_regs_t regs, uint16_t es, uint16_t ds, volatile iret_addr_t iret_addr)
+{
+ uint16_t addr, timer, val16;
+ uint8_t timeout;
+
+ int_enable();
+
+ addr = read_word(0x0040, (regs.u.r16.dx << 1));
+ timeout = read_byte(0x0040, 0x007C + regs.u.r16.dx);
+ if ((regs.u.r16.dx < 4) && (addr > 0)) {
+ switch (regs.u.r8.ah) {
+ case 0:
+ outb(addr+3, inb(addr+3) | 0x80);
+ if ((regs.u.r8.al & 0xE0) == 0) {
+ outb(addr, 0x17);
+ outb(addr+1, 0x04);
+ } else {
+ val16 = 0x600 >> ((regs.u.r8.al & 0xE0) >> 5);
+ outb(addr, val16 & 0xFF);
+ outb(addr+1, val16 >> 8);
+ }
+ outb(addr+3, regs.u.r8.al & 0x1F);
+ regs.u.r8.ah = inb(addr+5);
+ regs.u.r8.al = inb(addr+6);
+ ClearCF(iret_addr.flags);
+ break;
+ case 1:
+ timer = read_word(0x0040, 0x006C);
+ while (((inb(addr+5) & 0x60) != 0x60) && (timeout)) {
+ val16 = read_word(0x0040, 0x006C);
+ if (val16 != timer) {
+ timer = val16;
+ timeout--;
+ }
+ }
+ if (timeout) outb(addr, regs.u.r8.al);
+ regs.u.r8.ah = inb(addr+5);
+ if (!timeout) regs.u.r8.ah |= 0x80;
+ ClearCF(iret_addr.flags);
+ break;
+ case 2:
+ timer = read_word(0x0040, 0x006C);
+ while (((inb(addr+5) & 0x01) == 0) && (timeout)) {
+ val16 = read_word(0x0040, 0x006C);
+ if (val16 != timer) {
+ timer = val16;
+ timeout--;
+ }
+ }
+ if (timeout) {
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = inb(addr);
+ } else {
+ regs.u.r8.ah = inb(addr+5);
+ }
+ ClearCF(iret_addr.flags);
+ break;
+ case 3:
+ regs.u.r8.ah = inb(addr+5);
+ regs.u.r8.al = inb(addr+6);
+ ClearCF(iret_addr.flags);
+ break;
+ default:
+ SetCF(iret_addr.flags); // Unsupported
+ }
+ } else {
+ SetCF(iret_addr.flags); // Unsupported
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/smidmi.inc b/src/VBox/Devices/PC/BIOS/smidmi.inc
new file mode 100644
index 00000000..5ad67c67
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/smidmi.inc
@@ -0,0 +1,70 @@
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+; --------------------------------------------------------------------
+;
+; This code is based on:
+;
+; ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+;
+; Copyright (C) 2002 MandrakeSoft S.A.
+;
+; MandrakeSoft S.A.
+; 43, rue d'Aboukir
+; 75002 Paris - France
+; http://www.linux-mandrake.com/
+; http://www.mandrakesoft.com/
+;
+; This library is free software; you can redistribute it and/or
+; modify it under the terms of the GNU Lesser General Public
+; License as published by the Free Software Foundation; either
+; version 2 of the License, or (at your option) any later version.
+;
+; This library is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+; Lesser General Public License for more details.
+;
+; You should have received a copy of the GNU Lesser General Public
+; License along with this library; if not, write to the Free Software
+; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+;
+;
+
+; Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+; other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+; the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+; a choice of LGPL license versions is made available with the language indicating
+; that LGPLv2 or any later version may be used, or where a choice of which version
+; of the LGPL is applied is otherwise unspecified.
+
+include vbdmismi.inc
+
+; org 0xff30
+align 16
+ ;; The SMBIOS header
+ db '_SM_' ; signature
+ db 0 ; checksum (set by biossums)
+ db 01Fh ; EPS length, defined by standard
+ db VBOX_SMBIOS_MAJOR_VER ; SMBIOS major version
+ db VBOX_SMBIOS_MINOR_VER ; SMBIOS minor version
+ dw VBOX_SMBIOS_MAXSS ; Maximum structure size
+ db 0 ; Entry point revision
+ db 0, 0, 0, 0, 0 ; 16 bytes total
+
+ ;; The DMI header
+ db '_DMI_' ; signature
+ db 0 ; checksum (set by biossums)
+ dw 0 ; DMI tables length (set by DevPcBios)
+ dd VBOX_DMI_TABLE_BASE ; DMI tables base
+ dw 0 ; DMI tables entries (set by DevPcBios)
+ db VBOX_DMI_TABLE_VER ; DMI version
+ db 0 ; Just for alignment (16 bytes total)
+
diff --git a/src/VBox/Devices/PC/BIOS/system.c b/src/VBox/Devices/PC/BIOS/system.c
new file mode 100644
index 00000000..d1cb66af
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/system.c
@@ -0,0 +1,941 @@
+/* $Id: system.c $ */
+/** @file
+ * PC BIOS - ???
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_INT15
+# define BX_DEBUG_INT15(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT15(...)
+#endif
+
+
+#define UNSUPPORTED_FUNCTION 0x86 /* Specific to INT 15h. */
+
+#define BIOS_CONFIG_TABLE 0xe6f5 /** @todo configurable? put elsewhere? */
+
+#define ACPI_DATA_SIZE 0x00010000L /** @todo configurable? put elsewhere? */
+
+extern int pmode_IDT;
+extern int rmode_IDT;
+
+uint16_t read_ss(void);
+#pragma aux read_ss = "mov ax, ss" modify exact [ax] nomemory;
+
+#if VBOX_BIOS_CPU >= 80386
+
+/* The 386+ code uses CR0 to switch to/from protected mode.
+ * Quite straightforward.
+ */
+
+void pm_stack_save(uint16_t cx, uint16_t es, uint16_t si);
+#pragma aux pm_stack_save = \
+ ".386" \
+ "push ds" \
+ "push eax" \
+ "xor ax, ax" \
+ "mov ds, ax" \
+ "mov ds:[467h], sp" \
+ "mov ds:[469h], ss" \
+ parm [cx] [es] [si] modify nomemory;
+
+/* Uses position independent code to build a far return... because it was
+ * too hard to figure out how to code the far call in inline assembler.
+ *
+ * NB: It would be lovely to do 'add [sp],N' instead of 'pop ax; add ax,M;
+ * push ax'. Unfortunately the former cannot be encoded, though 'add [esp],N'
+ * can be on 386 and later -- but it may be unwise to assume that the high
+ * bits of ESP are all zero.
+ */
+void pm_enter(void);
+#pragma aux pm_enter = \
+ ".386p" \
+ "lgdt fword ptr es:[si+8]" \
+ "lidt fword ptr cs:pmode_IDT" \
+ "push 20h" \
+ "call pentry" \
+ "pentry:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "mov eax, cr0" \
+ "or al, 1" \
+ "mov cr0, eax" \
+ "retf" \
+ "pm_pm:" \
+ "mov ax, 10h" \
+ "mov ds, ax" \
+ "add al, 08h" \
+ "mov es, ax" \
+ "add al, 10h" \
+ "mov ss, ax" \
+ modify nomemory;
+
+/* Restore segment limits to real mode compatible values and
+ * return to real mode.
+ */
+void pm_exit(void);
+#pragma aux pm_exit = \
+ ".386p" \
+ "mov ax, 28h" \
+ "mov ds, ax" \
+ "mov es, ax" \
+ "push 0F000h" \
+ "call pexit" \
+ "pexit:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "mov eax, cr0" \
+ "and al, 0FEh" \
+ "mov cr0, eax" \
+ "retf" \
+ "real_mode:" \
+ "lidt fword ptr cs:rmode_IDT" \
+ modify nomemory;
+
+/* Restore stack and reload segment registers in real mode to ensure
+ * real mode compatible selector+base.
+ */
+void pm_stack_restore(void);
+#pragma aux pm_stack_restore = \
+ ".386" \
+ "xor ax, ax" \
+ "mov ds, ax" \
+ "mov es, ax" \
+ "lss sp, ds:[467h]" \
+ "pop eax" \
+ "pop ds" \
+ modify nomemory;
+
+#elif VBOX_BIOS_CPU >= 80286
+
+/* The 286 code uses LMSW to switch to protected mode but it has to reset
+ * the CPU to get back to real mode. Ugly! See return_blkmove in orgs.asm
+ * for the other matching half.
+ */
+void pm_stack_save(uint16_t cx, uint16_t es, uint16_t si, uint16_t frame);
+#pragma aux pm_stack_save = \
+ "xor ax, ax" \
+ "mov ds, ax" \
+ "mov ds:[467h], bx" \
+ "mov ds:[469h], ss" \
+ parm [cx] [es] [si] [bx] modify nomemory;
+
+/* Uses position independent code... because it was too hard to figure
+ * out how to code the far call in inline assembler.
+ */
+void pm_enter(void);
+#pragma aux pm_enter = \
+ ".286p" \
+ "lgdt fword ptr es:[si+8]" \
+ "lidt fword ptr cs:pmode_IDT" \
+ "push 20h" \
+ "call pentry" \
+ "pentry:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "smsw ax" \
+ "or al, 1" \
+ "lmsw ax" \
+ "retf" \
+ "pm_pm:" \
+ "mov ax, 10h" \
+ "mov ds, ax" \
+ "add al, 08h" \
+ "mov es, ax" \
+ "add al, 10h" \
+ "mov ss, ax" \
+ modify nomemory;
+
+/* Set up shutdown status and reset the CPU. The POST code
+ * will regain control. Port 80h is written with status.
+ * Code 9 is written to CMOS shutdown status byte (0Fh).
+ * CPU is triple faulted. .
+ */
+void pm_exit(void);
+#pragma aux pm_exit = \
+ "xor ax, ax" \
+ "out 80h, al" \
+ "mov al, 0Fh" \
+ "out 70h, al" \
+ "mov al, 09h" \
+ "out 71h, al" \
+ ".286p" \
+ "lidt fword ptr cs:pmode_IDT" \
+ "int 3" \
+ modify nomemory;
+
+/* Dummy. Actually done in return_blkmove. */
+void pm_stack_restore(void);
+#pragma aux pm_stack_restore = \
+ "rm_return:" \
+ modify nomemory;
+
+#endif
+
+/* NB: CX is set earlier in pm_stack_save */
+void pm_copy(void);
+#pragma aux pm_copy = \
+ "xor si, si" \
+ "xor di, di" \
+ "cld" \
+ "rep movsw" \
+ modify [si di cx] nomemory;
+
+/* The pm_switch has a few crucial differences from pm_enter, hence
+ * it is replicated here. Uses LMSW to avoid trashing high word of eax.
+ */
+void pm_switch(uint16_t reg_si);
+#pragma aux pm_switch = \
+ ".286p" \
+ "lgdt fword ptr es:[si+08h]" \
+ "lidt fword ptr es:[si+10h]" \
+ "push 38h" \
+ "call pentry" \
+ "pentry:" \
+ "pop ax" \
+ "add ax, 0Eh" \
+ "push ax" \
+ "smsw ax" \
+ "or al, 1" \
+ "lmsw ax" \
+ "retf" \
+ "pm_pm:" \
+ "mov ax, 18h" \
+ "mov ds, ax" \
+ "add al, 08h" \
+ "mov es, ax" \
+ "add al, 08h" \
+ "mov ss, ax" \
+ parm [si] modify nomemory;
+
+/* Return to caller - we do not use IRET because we should not enable
+ * interrupts. Note that AH must be zero on exit.
+ * WARNING: Needs to be adapted if calling sequence is modified!
+ */
+void pm_unwind(uint16_t args);
+#pragma aux pm_unwind = \
+ ".286" \
+ "mov sp, ax" \
+ "popa" \
+ "add sp, 6" \
+ "pop cx" \
+ "pop ax" \
+ "pop ax" \
+ "mov ax, 30h" \
+ "push ax" \
+ "push cx" \
+ "retf" \
+ parm [ax] modify nomemory aborts;
+
+/// @todo This method is silly. The RTC should be programmed to fire an interrupt
+// instead of hogging the CPU with inaccurate code.
+void timer_wait(uint32_t usec_wait)
+{
+ uint32_t cycles;
+ uint8_t old_val;
+ uint8_t cur_val;
+
+ /* We wait in 15 usec increments. */
+ cycles = usec_wait / 15;
+
+ old_val = inp(0x61) & 0x10;
+ while (cycles--) {
+ /* Wait 15us. */
+ do {
+ cur_val = inp(0x61) & 0x10;
+ } while (cur_val != old_val);
+ old_val = cur_val;
+ }
+}
+
+bx_bool set_enable_a20(bx_bool val)
+{
+ uint8_t oldval;
+
+ // Use PS/2 System Control port A to set A20 enable
+
+ // get current setting first
+ oldval = inb(0x92);
+
+ // change A20 status
+ if (val)
+ outb(0x92, oldval | 0x02);
+ else
+ outb(0x92, oldval & 0xfd);
+
+ return((oldval & 0x02) != 0);
+}
+
+/// @todo move elsewhere?
+#define AX r.gr.u.r16.ax
+#define BX r.gr.u.r16.bx
+#define CX r.gr.u.r16.cx
+#define DX r.gr.u.r16.dx
+#define SI r.gr.u.r16.si
+#define DI r.gr.u.r16.di
+#define BP r.gr.u.r16.bp
+#define SP r.gr.u.r16.sp
+#define FLAGS r.fl.u.r16.flags
+#define EAX r.gr.u.r32.eax
+#define EBX r.gr.u.r32.ebx
+#define ECX r.gr.u.r32.ecx
+#define EDX r.gr.u.r32.edx
+#define ESI r.gr.u.r32.esi
+#define EDI r.gr.u.r32.edi
+#define ES r.es
+
+
+void BIOSCALL int15_function(sys_regs_t r)
+{
+ uint16_t bRegister;
+ uint8_t irqDisable;
+
+ BX_DEBUG_INT15("int15 AX=%04x\n",AX);
+
+ switch (GET_AH()) {
+ case 0x00: /* assorted functions */
+ if (GET_AL() != 0xc0)
+ goto undecoded;
+ /* GRUB calls int15 with ax=0x00c0 to get the ROM configuration table,
+ * which we don't support, but logging that event is annoying. In fact
+ * it is likely that they just misread some specs, because there is a
+ * int15 BIOS function AH=0xc0 which sounds quite similar to what GRUB
+ * wants to achieve. */
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+ case 0x24: /* A20 Control */
+ switch (GET_AL()) {
+ case 0x00:
+ set_enable_a20(0);
+ CLEAR_CF();
+ SET_AH(0);
+ break;
+ case 0x01:
+ set_enable_a20(1);
+ CLEAR_CF();
+ SET_AH(0);
+ break;
+ case 0x02:
+ SET_AL( (inb(0x92) >> 1) & 0x01 );
+ CLEAR_CF();
+ SET_AH(0);
+ break;
+ case 0x03:
+ CLEAR_CF();
+ SET_AH(0);
+ BX = 3;
+ break;
+ default:
+ BX_INFO("int15: Func 24h, subfunc %02xh, A20 gate control not supported\n", (unsigned) GET_AL());
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ }
+ break;
+
+ /* These are here just to avoid warnings being logged. */
+ case 0x22: /* Locate ROM BASIC (tough when we don't have any.) */
+ case 0x41: /* PC Convertible, wait for external events. */
+ case 0xC7: /* PS/2, get memory map. */
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+
+ /// @todo Why does this need special handling? All we need is to set CF
+ // but not handle this as an unknown function (regardless of CPU type).
+ case 0x4f:
+ /* keyboard intercept */
+#if VBOX_BIOS_CPU >= 80286
+ // nop
+#else
+ SET_AH(UNSUPPORTED_FUNCTION);
+#endif
+ SET_CF();
+ break;
+
+ case 0x52: // removable media eject
+ CLEAR_CF();
+ SET_AH(0); // "ok ejection may proceed"
+ break;
+
+ case 0x83: {
+ if( GET_AL() == 0 ) {
+ // Set Interval requested.
+ if( ( read_byte( 0x40, 0xA0 ) & 1 ) == 0 ) {
+ // Interval not already set.
+ write_byte( 0x40, 0xA0, 1 ); // Set status byte.
+ write_word( 0x40, 0x98, ES ); // Byte location, segment
+ write_word( 0x40, 0x9A, BX ); // Byte location, offset
+ write_word( 0x40, 0x9C, DX ); // Low word, delay
+ write_word( 0x40, 0x9E, CX ); // High word, delay.
+ CLEAR_CF( );
+ irqDisable = inb( 0xA1 );
+ outb( 0xA1, irqDisable & 0xFE );
+ bRegister = inb_cmos( 0xB ); // Unmask IRQ8 so INT70 will get through.
+ outb_cmos( 0xB, bRegister | 0x40 ); // Turn on the Periodic Interrupt timer
+ } else {
+ // Interval already set.
+ BX_DEBUG_INT15("int15: Func 83h, failed, already waiting.\n" );
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ }
+ } else if( GET_AL() == 1 ) {
+ // Clear Interval requested
+ write_byte( 0x40, 0xA0, 0 ); // Clear status byte
+ CLEAR_CF( );
+ bRegister = inb_cmos( 0xB );
+ outb_cmos( 0xB, bRegister & ~0x40 ); // Turn off the Periodic Interrupt timer
+ } else {
+ BX_DEBUG_INT15("int15: Func 83h, failed.\n" );
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ SET_AL(GET_AL() - 1);
+ }
+
+ break;
+ }
+
+ case 0x86:
+ // Wait for CX:DX microseconds. currently using the
+ // refresh request port 0x61 bit4, toggling every 15usec
+ int_enable();
+ timer_wait(((uint32_t)CX << 16) | DX);
+ break;
+
+ case 0x88:
+ // Get the amount of extended memory (above 1M)
+#if VBOX_BIOS_CPU >= 80286
+ AX = (inb_cmos(0x31) << 8) | inb_cmos(0x30);
+
+#if VBOX_BIOS_CPU >= 80386
+ // According to Ralf Brown's interrupt the limit should be 15M,
+ // but real machines mostly return max. 63M.
+ if(AX > 0xffc0)
+ AX = 0xffc0;
+#else
+ // An AT compatible cannot have more than 15M extended memory.
+ // If more is reported, some software (e.g. Windows 3.1) gets
+ // quite upset.
+ if(AX > 0x3c00)
+ AX = 0x3c00;
+#endif
+
+ CLEAR_CF();
+#else
+ SET_AH(UNSUPPORTED_FUNCTION);
+ SET_CF();
+#endif
+ break;
+
+ case 0x89:
+ // Switch to Protected Mode.
+ // ES:DI points to user-supplied GDT
+ // BH/BL contains starting interrupt numbers for PIC0/PIC1
+ // This subfunction does not return!
+
+ // turn off interrupts
+ int_disable(); /// @todo aren't they off already?
+
+ set_enable_a20(1); // enable A20 line; we're supposed to fail if that fails
+
+ // Initialize CS descriptor for BIOS
+ write_word(ES, SI+0x38+0, 0xffff);// limit 15:00 = normal 64K limit
+ write_word(ES, SI+0x38+2, 0x0000);// base 15:00
+ write_byte(ES, SI+0x38+4, 0x000f);// base 23:16 (hardcoded to f000:0000)
+ write_byte(ES, SI+0x38+5, 0x9b); // access
+ write_word(ES, SI+0x38+6, 0x0000);// base 31:24/reserved/limit 19:16
+
+ /* Reprogram the PICs. */
+ outb(PIC_MASTER, PIC_CMD_INIT);
+ outb(PIC_SLAVE, PIC_CMD_INIT);
+ outb(PIC_MASTER + 1, GET_BH());
+ outb(PIC_SLAVE + 1, GET_BL());
+ outb(PIC_MASTER + 1, 4);
+ outb(PIC_SLAVE + 1, 2);
+ outb(PIC_MASTER + 1, 1);
+ outb(PIC_SLAVE + 1, 1);
+ /* Mask all IRQs, user must re-enable. */
+ outb(PIC_MASTER_MASK, 0xff);
+ outb(PIC_SLAVE_MASK, 0xff);
+
+ pm_switch(SI);
+ pm_unwind((uint16_t)&r);
+
+ break;
+
+ case 0x90:
+ /* Device busy interrupt. Called by Int 16h when no key available */
+ break;
+
+ case 0x91:
+ /* Interrupt complete. Called by Int 16h when key becomes available */
+ break;
+
+ case 0xbf:
+ BX_INFO("*** int 15h function AH=bf not yet supported!\n");
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+
+ case 0xC0:
+ CLEAR_CF();
+ SET_AH(0);
+ BX = BIOS_CONFIG_TABLE;
+ ES = 0xF000;
+ break;
+
+ case 0xc1:
+ ES = read_word(0x0040, 0x000E);
+ CLEAR_CF();
+ break;
+
+ case 0xd8:
+ bios_printf(BIOS_PRINTF_DEBUG, "EISA BIOS not present\n");
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+
+ /* Make the BIOS warning for pretty much every Linux kernel start
+ * disappear - it calls with ax=0xe980 to figure out SMI info. */
+ case 0xe9: /* SMI functions (SpeedStep and similar things) */
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+ case 0xec: /* AMD64 target operating mode callback */
+ if (GET_AL() != 0)
+ goto undecoded;
+ SET_AH(0);
+ if (GET_BL() >= 1 && GET_BL() <= 3)
+ CLEAR_CF(); /* Accepted value. */
+ else
+ SET_CF(); /* Reserved, error. */
+ break;
+undecoded:
+ default:
+ BX_INFO("*** int 15h function AX=%04x, BX=%04x not yet supported!\n",
+ (unsigned) AX, (unsigned) BX);
+ SET_CF();
+ SET_AH(UNSUPPORTED_FUNCTION);
+ break;
+ }
+}
+
+#if VBOX_BIOS_CPU >= 80386
+
+typedef struct {
+ uint32_t start;
+ uint32_t xstart;
+ uint32_t len;
+ uint32_t xlen;
+ uint32_t type;
+} mem_range_t;
+
+void set_e820_range(uint16_t reg_ES, uint16_t reg_DI, uint32_t start, uint32_t end,
+ uint8_t extra_start, uint8_t extra_end, uint16_t type)
+{
+ mem_range_t __far *range;
+
+ range = reg_ES :> (mem_range_t *)reg_DI;
+ range->start = start;
+ range->xstart = extra_start;
+ end -= start;
+ extra_end -= extra_start;
+ range->len = end;
+ range->xlen = extra_end;
+ range->type = type;
+}
+
+void BIOSCALL int15_function32(sys32_regs_t r)
+{
+ uint32_t extended_memory_size=0; // 64bits long
+ uint32_t extra_lowbits_memory_size=0;
+ uint8_t extra_highbits_memory_size=0;
+ uint32_t mcfgStart, mcfgSize;
+
+ BX_DEBUG_INT15("int15 AX=%04x\n",AX);
+
+ switch (GET_AH()) {
+ case 0xd0:
+ if (GET_AL() != 0x4f)
+ goto int15_unimplemented;
+ if (EBX == 0x50524f43 && ECX == 0x4d4f4445 && ESI == 0 && EDI == 0)
+ {
+ CLEAR_CF();
+ ESI = EBX;
+ EDI = ECX;
+ EAX = 0x49413332;
+ }
+ else
+ goto int15_unimplemented;
+ break;
+
+ case 0xe8:
+ switch(GET_AL()) {
+ case 0x20: // coded by osmaker aka K.J.
+ if(EDX == 0x534D4150) {
+ extended_memory_size = inb_cmos(0x35);
+ extended_memory_size <<= 8;
+ extended_memory_size |= inb_cmos(0x34);
+ extended_memory_size *= 64;
+#ifndef VBOX /* The following excludes 0xf0000000 thru 0xffffffff. Trust DevPcBios.cpp to get this right. */
+ // greater than EFF00000???
+ if(extended_memory_size > 0x3bc000) {
+ extended_memory_size = 0x3bc000; // everything after this is reserved memory until we get to 0x100000000
+ }
+#endif /* !VBOX */
+ extended_memory_size *= 1024;
+ extended_memory_size += (16L * 1024 * 1024);
+
+ if(extended_memory_size <= (16L * 1024 * 1024)) {
+ extended_memory_size = inb_cmos(0x31);
+ extended_memory_size <<= 8;
+ extended_memory_size |= inb_cmos(0x30);
+ extended_memory_size *= 1024;
+ extended_memory_size += (1L * 1024 * 1024);
+ }
+
+#ifdef VBOX /* We've already used the CMOS entries for SATA.
+ BTW. This is the amount of memory above 4GB measured in 64KB units. */
+ extra_lowbits_memory_size = inb_cmos(0x62);
+ extra_lowbits_memory_size <<= 8;
+ extra_lowbits_memory_size |= inb_cmos(0x61);
+ extra_lowbits_memory_size <<= 16;
+ extra_highbits_memory_size = inb_cmos(0x63);
+ /* 0x64 and 0x65 can be used if we need to dig 1 TB or more at a later point. */
+#else
+ extra_lowbits_memory_size = inb_cmos(0x5c);
+ extra_lowbits_memory_size <<= 8;
+ extra_lowbits_memory_size |= inb_cmos(0x5b);
+ extra_lowbits_memory_size *= 64;
+ extra_lowbits_memory_size *= 1024;
+ extra_highbits_memory_size = inb_cmos(0x5d);
+#endif /* !VBOX */
+
+ mcfgStart = 0;
+ mcfgSize = 0;
+
+ switch(BX)
+ {
+ case 0:
+ set_e820_range(ES, DI,
+#ifndef VBOX /** @todo Upstream suggests the following, needs checking. (see next as well) */
+ 0x0000000L, 0x0009f000L, 0, 0, 1);
+#else
+ 0x0000000L, 0x0009fc00L, 0, 0, 1);
+#endif
+ EBX = 1;
+ break;
+ case 1:
+ set_e820_range(ES, DI,
+#ifndef VBOX /** @todo Upstream suggests the following, needs checking. (see next as well) */
+ 0x0009f000L, 0x000a0000L, 0, 0, 2);
+#else
+ 0x0009fc00L, 0x000a0000L, 0, 0, 2);
+#endif
+ EBX = 2;
+ break;
+ case 2:
+#ifdef VBOX
+ /* Mark the BIOS as reserved. VBox doesn't currently
+ * use the 0xe0000-0xeffff area. It does use the
+ * 0xd0000-0xdffff area for the BIOS logo, but it's
+ * not worth marking it as reserved. (this is not
+ * true anymore because the VGA adapter handles the logo stuff)
+ * The whole 0xe0000-0xfffff can be used for the BIOS.
+ * Note that various
+ * Windows versions don't accept (read: in debug builds
+ * they trigger the "Too many similar traps" assertion)
+ * a single reserved range from 0xd0000 to 0xffffff.
+ * A 128K area starting from 0xd0000 works. */
+ set_e820_range(ES, DI,
+ 0x000f0000L, 0x00100000L, 0, 0, 2);
+#else /* !VBOX */
+ set_e820_range(ES, DI,
+ 0x000e8000L, 0x00100000L, 0, 0, 2);
+#endif /* !VBOX */
+ EBX = 3;
+ break;
+ case 3:
+#if BX_ROMBIOS32 || defined(VBOX)
+ set_e820_range(ES, DI,
+ 0x00100000L,
+ extended_memory_size - ACPI_DATA_SIZE, 0, 0, 1);
+ EBX = 4;
+#else
+ set_e820_range(ES, DI,
+ 0x00100000L,
+ extended_memory_size, 1);
+ EBX = 5;
+#endif
+ break;
+ case 4:
+ set_e820_range(ES, DI,
+ extended_memory_size - ACPI_DATA_SIZE,
+ extended_memory_size, 0, 0, 3); // ACPI RAM
+ EBX = 5;
+ break;
+ case 5:
+ set_e820_range(ES, DI,
+ 0xfec00000,
+ 0xfec00000 + 0x1000, 0, 0, 2); // I/O APIC
+ EBX = 6;
+ break;
+ case 6:
+ set_e820_range(ES, DI,
+ 0xfee00000,
+ 0xfee00000 + 0x1000, 0, 0, 2); // Local APIC
+ EBX = 7;
+ break;
+ case 7:
+ /* 256KB BIOS area at the end of 4 GB */
+#ifdef VBOX
+ /* We don't set the end to 1GB here and rely on the 32-bit
+ unsigned wrap around effect (0-0xfffc0000L). */
+#endif
+ set_e820_range(ES, DI,
+ 0xfffc0000L, 0x00000000L, 0, 0, 2);
+ if (mcfgStart != 0)
+ EBX = 8;
+ else
+ {
+ if (extra_highbits_memory_size || extra_lowbits_memory_size)
+ EBX = 9;
+ else
+ EBX = 0;
+ }
+ break;
+ case 8:
+ /* PCI MMIO config space (MCFG) */
+ set_e820_range(ES, DI,
+ mcfgStart, mcfgStart + mcfgSize, 0, 0, 2);
+
+ if (extra_highbits_memory_size || extra_lowbits_memory_size)
+ EBX = 9;
+ else
+ EBX = 0;
+ break;
+ case 9:
+#ifdef VBOX /* Don't succeeded if no memory above 4 GB. */
+ /* Mapping of memory above 4 GB if present.
+ Note1: set_e820_range needs do no borrowing in the
+ subtraction because of the nice numbers.
+ Note2* works only up to 1TB because of uint8_t for
+ the upper bits!*/
+ if (extra_highbits_memory_size || extra_lowbits_memory_size)
+ {
+ set_e820_range(ES, DI,
+ 0x00000000L, extra_lowbits_memory_size,
+ 1 /*x4GB*/, extra_highbits_memory_size + 1 /*x4GB*/, 1);
+ EBX = 0;
+ }
+ break;
+ /* fall thru */
+#else /* !VBOX */
+ /* Mapping of memory above 4 GB */
+ set_e820_range(ES, DI, 0x00000000L,
+ extra_lowbits_memory_size, 1, extra_highbits_memory_size
+ + 1, 1);
+ EBX = 0;
+ break;
+#endif /* !VBOX */
+ default: /* AX=E820, DX=534D4150, BX unrecognized */
+ goto int15_unimplemented;
+ break;
+ }
+ EAX = 0x534D4150;
+ ECX = 0x14;
+ CLEAR_CF();
+ } else {
+ // if DX != 0x534D4150)
+ goto int15_unimplemented;
+ }
+ break;
+
+ case 0x01:
+ // do we have any reason to fail here ?
+ CLEAR_CF();
+
+ // my real system sets ax and bx to 0
+ // this is confirmed by Ralph Brown list
+ // but syslinux v1.48 is known to behave
+ // strangely if ax is set to 0
+ // regs.u.r16.ax = 0;
+ // regs.u.r16.bx = 0;
+
+ // Get the amount of extended memory (above 1M)
+ CX = (inb_cmos(0x31) << 8) | inb_cmos(0x30);
+
+ // limit to 15M
+ if(CX > 0x3c00)
+ CX = 0x3c00;
+
+ // Get the amount of extended memory above 16M in 64k blocks
+ DX = (inb_cmos(0x35) << 8) | inb_cmos(0x34);
+
+ // Set configured memory equal to extended memory
+ AX = CX;
+ BX = DX;
+ break;
+ default: /* AH=0xE8?? but not implemented */
+ goto int15_unimplemented;
+ }
+ break;
+ int15_unimplemented:
+ // fall into the default case
+ default:
+ BX_INFO("*** int 15h function AX=%04x, BX=%04x not yet supported!\n",
+ (unsigned) AX, (unsigned) BX);
+ SET_CF();
+ SET_AL(UNSUPPORTED_FUNCTION);
+ break;
+ }
+}
+#endif /* VBOX_BIOS_CPU >= 80386 */
+
+#if VBOX_BIOS_CPU >= 80286
+
+#undef FLAGS
+#define FLAGS r.ra.flags.u.r16.flags
+
+/* Function 0x87 handled separately due to specific stack layout requirements. */
+void BIOSCALL int15_blkmove(disk_regs_t r)
+{
+ uint16_t base15_00;
+ uint8_t base23_16;
+ uint16_t ss;
+
+ // +++ should probably have descriptor checks
+ // +++ should have exception handlers
+
+ // turn off interrupts
+ int_disable(); /// @todo aren't they disabled already?
+
+ set_enable_a20(1); // enable A20 line
+
+ // 128K max of transfer on 386+ ???
+ // source == destination ???
+
+ // ES:SI points to descriptor table
+ // offset use initially comments
+ // ==============================================
+ // 00..07 Unused zeros Null descriptor
+ // 08..0f scratch zeros work area used by BIOS
+ // 10..17 source ssssssss source of data
+ // 18..1f dest dddddddd destination of data
+ // 20..27 CS zeros filled in by BIOS
+ // 28..2f SS zeros filled in by BIOS
+
+ //es:si
+ //eeee0
+ //0ssss
+ //-----
+
+ // check for access rights of source & dest here
+
+ // Initialize GDT descriptor
+ base15_00 = (ES << 4) + SI;
+ base23_16 = ES >> 12;
+ if (base15_00 < (ES<<4))
+ base23_16++;
+ write_word(ES, SI+0x08+0, 47); // limit 15:00 = 6 * 8bytes/descriptor
+ write_word(ES, SI+0x08+2, base15_00);// base 15:00
+ write_byte(ES, SI+0x08+4, base23_16);// base 23:16
+ write_byte(ES, SI+0x08+5, 0x93); // access
+ write_word(ES, SI+0x08+6, 0x0000); // base 31:24/reserved/limit 19:16
+
+ // Initialize CS descriptor
+ write_word(ES, SI+0x20+0, 0xffff);// limit 15:00 = normal 64K limit
+ write_word(ES, SI+0x20+2, 0x0000);// base 15:00
+ write_byte(ES, SI+0x20+4, 0x000f);// base 23:16
+ write_byte(ES, SI+0x20+5, 0x9b); // access
+ write_word(ES, SI+0x20+6, 0x0000);// base 31:24/reserved/limit 19:16
+
+ // Initialize SS descriptor
+ ss = read_ss();
+ base15_00 = ss << 4;
+ base23_16 = ss >> 12;
+ write_word(ES, SI+0x28+0, 0xffff); // limit 15:00 = normal 64K limit
+ write_word(ES, SI+0x28+2, base15_00);// base 15:00
+ write_byte(ES, SI+0x28+4, base23_16);// base 23:16
+ write_byte(ES, SI+0x28+5, 0x93); // access
+ write_word(ES, SI+0x28+6, 0x0000); // base 31:24/reserved/limit 19:16
+
+#if VBOX_BIOS_CPU >= 80386
+ /* Not taking the address of the parameter allows the code generator
+ * produce slightly better code for some unknown reason.
+ */
+ pm_stack_save(CX, ES, SI);
+#else
+ pm_stack_save(CX, ES, SI, FP_OFF(&r));
+#endif
+ pm_enter();
+ pm_copy();
+ pm_exit();
+ pm_stack_restore();
+
+ set_enable_a20(0); // unconditionally disable A20 line
+
+ // turn interrupts back on
+ int_enable();
+
+ SET_AH(0);
+ CLEAR_CF();
+}
+#endif /* VBOX_BIOS_CPU >= 80286 */
diff --git a/src/VBox/Devices/PC/BIOS/timepci.c b/src/VBox/Devices/PC/BIOS/timepci.c
new file mode 100644
index 00000000..f6b75645
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/timepci.c
@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+ *
+ * This code is based on:
+ *
+ * ROM BIOS for use with Bochs/Plex86/QEMU emulation environment
+ *
+ * Copyright (C) 2002 MandrakeSoft S.A.
+ *
+ * MandrakeSoft S.A.
+ * 43, rue d'Aboukir
+ * 75002 Paris - France
+ * http://www.linux-mandrake.com/
+ * http://www.mandrakesoft.com/
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/*
+ * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
+ * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
+ * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
+ * a choice of LGPL license versions is made available with the language indicating
+ * that LGPLv2 or any later version may be used, or where a choice of which version
+ * of the LGPL is applied is otherwise unspecified.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "inlines.h"
+
+#if DEBUG_INT1A
+# define BX_DEBUG_INT1A(...) BX_DEBUG(__VA_ARGS__)
+#else
+# define BX_DEBUG_INT1A(...)
+#endif
+
+// for access to RAM area which is used by interrupt vectors
+// and BIOS Data Area
+
+typedef struct {
+ uint8_t filler1[0x400];
+ uint8_t filler2[0x6c];
+ uint16_t ticks_low;
+ uint16_t ticks_high;
+ uint8_t midnight_flag;
+} bios_data_t;
+
+#define BiosData ((bios_data_t __far *) 0)
+
+void init_rtc(void)
+{
+ outb_cmos(0x0a, 0x26);
+ outb_cmos(0x0b, 0x02);
+ inb_cmos(0x0c);
+ inb_cmos(0x0d);
+}
+
+bx_bool rtc_updating(void)
+{
+ // This function checks to see if the update-in-progress bit
+ // is set in CMOS Status Register A. If not, it returns 0.
+ // If it is set, it tries to wait until there is a transition
+ // to 0, and will return 0 if such a transition occurs. A 1
+ // is returned only after timing out. The maximum period
+ // that this bit should be set is constrained to 244useconds.
+ // The count I use below guarantees coverage or more than
+ // this time, with any reasonable IPS setting.
+
+ uint16_t iter;
+
+ iter = 25000;
+ while (--iter != 0) {
+ if ( (inb_cmos(0x0a) & 0x80) == 0 )
+ return 0;
+ }
+ return 1; // update-in-progress never transitioned to 0
+}
+
+
+extern void eoi_both_pics(void); /* in assembly code */
+#pragma aux eoi_both_pics "*";
+
+void call_int_4a(void);
+#pragma aux call_int_4a = "int 4Ah";
+
+void BIOSCALL int70_function(pusha_regs_t regs, uint16_t ds, uint16_t es, iret_addr_t iret_addr)
+{
+ // INT 70h: IRQ 8 - CMOS RTC interrupt from periodic or alarm modes
+ uint8_t registerB = 0, registerC = 0;
+
+ // Check which modes are enabled and have occurred.
+ registerB = inb_cmos( 0xB );
+ registerC = inb_cmos( 0xC );
+
+ if( ( registerB & 0x60 ) != 0 ) {
+ if( ( registerC & 0x20 ) != 0 ) {
+ // Handle Alarm Interrupt.
+ int_enable();
+ call_int_4a();
+ int_disable();
+ }
+ if( ( registerC & 0x40 ) != 0 ) {
+ // Handle Periodic Interrupt.
+
+ if( read_byte( 0x40, 0xA0 ) != 0 ) {
+ // Wait Interval (Int 15, AH=83) active.
+ uint32_t time;
+
+ time = read_dword( 0x40, 0x9C ); // Time left in microseconds.
+ if( time < 0x3D1 ) {
+ // Done waiting.
+ uint16_t segment, offset;
+
+ segment = read_word( 0x40, 0x98 );
+ offset = read_word( 0x40, 0x9A );
+ write_byte( 0x40, 0xA0, 0 ); // Turn of status byte.
+ outb_cmos( 0xB, registerB & 0x37 ); // Clear the Periodic Interrupt.
+ write_byte( segment, offset, read_byte(segment, offset) | 0x80 ); // Write to specified flag byte.
+ } else {
+ // Continue waiting.
+ time -= 0x3D1;
+ write_dword( 0x40, 0x9C, time );
+ }
+ }
+ }
+ }
+ eoi_both_pics();
+}
+
+/// @todo the coding style WRT register access is totally inconsistent
+// in the following routines
+
+void BIOSCALL int1a_function(pusha_regs_t regs, uint16_t ds, uint16_t es, iret_addr_t iret_addr)
+{
+ uint8_t val8;
+
+ BX_DEBUG_INT1A("int1a: AX=%04x BX=%04x CX=%04x DX=%04x DS=%04x\n",
+ regs.u.r16.ax, regs.u.r16.bx, regs.u.r16.cx, regs.u.r16.dx, ds);
+ int_enable();
+
+ switch (regs.u.r8.ah) {
+ case 0: // get current clock count
+ int_disable();
+ regs.u.r16.cx = BiosData->ticks_high;
+ regs.u.r16.dx = BiosData->ticks_low;
+ regs.u.r8.al = BiosData->midnight_flag;
+ BiosData->midnight_flag = 0; // reset flag
+ int_enable();
+ // AH already 0
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 1: // Set Current Clock Count
+ int_disable();
+ BiosData->ticks_high = regs.u.r16.cx;
+ BiosData->ticks_low = regs.u.r16.dx;
+ BiosData->midnight_flag = 0; // reset flag
+ int_enable();
+ regs.u.r8.ah = 0;
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 2: // Read CMOS Time
+ if (rtc_updating()) {
+ SetCF(iret_addr.flags);
+ break;
+ }
+
+ regs.u.r8.dh = inb_cmos(0x00); // Seconds
+ regs.u.r8.cl = inb_cmos(0x02); // Minutes
+ regs.u.r8.ch = inb_cmos(0x04); // Hours
+ regs.u.r8.dl = inb_cmos(0x0b) & 0x01; // Stat Reg B
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = regs.u.r8.ch;
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 3: // Set CMOS Time
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3
+ // before 1111 1101 0111 1101 0000 0000
+ // after 0110 0010 0110 0010 0000 0010
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = ((RegB & 01100000b) | 00000010b)
+ if (rtc_updating()) {
+ init_rtc();
+ // fall through as if an update were not in progress
+ }
+ outb_cmos(0x00, regs.u.r8.dh); // Seconds
+ outb_cmos(0x02, regs.u.r8.cl); // Minutes
+ outb_cmos(0x04, regs.u.r8.ch); // Hours
+ // Set Daylight Savings time enabled bit to requested value
+ val8 = (inb_cmos(0x0b) & 0x60) | 0x02 | (regs.u.r8.dl & 0x01);
+ // (reg B already selected)
+ outb_cmos(0x0b, val8);
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = val8; // val last written to Reg B
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 4: // Read CMOS Date
+ regs.u.r8.ah = 0;
+ if (rtc_updating()) {
+ SetCF(iret_addr.flags);
+ break;
+ }
+ regs.u.r8.cl = inb_cmos(0x09); // Year
+ regs.u.r8.dh = inb_cmos(0x08); // Month
+ regs.u.r8.dl = inb_cmos(0x07); // Day of Month
+ regs.u.r8.ch = inb_cmos(0x32); // Century
+ regs.u.r8.al = regs.u.r8.ch;
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 5: // Set CMOS Date
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3 try#4
+ // before 1111 1101 0111 1101 0000 0010 0000 0000
+ // after 0110 1101 0111 1101 0000 0010 0000 0000
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = (RegB & 01111111b)
+ if (rtc_updating()) {
+ init_rtc();
+ SetCF(iret_addr.flags);
+ break;
+ }
+ outb_cmos(0x09, regs.u.r8.cl); // Year
+ outb_cmos(0x08, regs.u.r8.dh); // Month
+ outb_cmos(0x07, regs.u.r8.dl); // Day of Month
+ outb_cmos(0x32, regs.u.r8.ch); // Century
+ val8 = inb_cmos(0x0b) & 0x7f; // clear halt-clock bit
+ outb_cmos(0x0b, val8);
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = val8; // AL = val last written to Reg B
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 6: // Set Alarm Time in CMOS
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3
+ // before 1101 1111 0101 1111 0000 0000
+ // after 0110 1111 0111 1111 0010 0000
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = ((RegB & 01111111b) | 00100000b)
+ val8 = inb_cmos(0x0b); // Get Status Reg B
+ regs.u.r16.ax = 0;
+ if (val8 & 0x20) {
+ // Alarm interrupt enabled already
+ SetCF(iret_addr.flags); // Error: alarm in use
+ break;
+ }
+ if (rtc_updating()) {
+ init_rtc();
+ // fall through as if an update were not in progress
+ }
+ outb_cmos(0x01, regs.u.r8.dh); // Seconds alarm
+ outb_cmos(0x03, regs.u.r8.cl); // Minutes alarm
+ outb_cmos(0x05, regs.u.r8.ch); // Hours alarm
+ outb(0xa1, inb(0xa1) & 0xfe); // enable IRQ 8
+ // enable Status Reg B alarm bit, clear halt clock bit
+ outb_cmos(0x0b, (val8 & 0x7f) | 0x20);
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ case 7: // Turn off Alarm
+ // Using a debugger, I notice the following masking/setting
+ // of bits in Status Register B, by setting Reg B to
+ // a few values and getting its value after INT 1A was called.
+ //
+ // try#1 try#2 try#3 try#4
+ // before 1111 1101 0111 1101 0010 0000 0010 0010
+ // after 0100 0101 0101 0101 0000 0000 0000 0010
+ //
+ // Bit4 in try#1 flipped in hardware (forced low) due to bit7=1
+ // My assumption: RegB = (RegB & 01010111b)
+ val8 = inb_cmos(0x0b); // Get Status Reg B
+ // clear clock-halt bit, disable alarm bit
+ outb_cmos(0x0b, val8 & 0x57); // disable alarm bit
+ regs.u.r8.ah = 0;
+ regs.u.r8.al = val8; // val last written to Reg B
+ ClearCF(iret_addr.flags); // OK
+ break;
+
+ default:
+ BX_DEBUG_INT1A("int1a: AX=%04x unsupported\n", regs.u.r16.ax);
+ SetCF(iret_addr.flags); // Unsupported
+ }
+}
diff --git a/src/VBox/Devices/PC/BIOS/vbdmismi.inc b/src/VBox/Devices/PC/BIOS/vbdmismi.inc
new file mode 100644
index 00000000..67e22f19
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vbdmismi.inc
@@ -0,0 +1,27 @@
+; $Id: vbdmismi.inc $
+;; @file
+; DMI and SMBIOS definitions for VBox.
+;
+
+;
+; Copyright (C) 2006-2019 Oracle Corporation
+;
+; This file is part of VirtualBox Open Source Edition (OSE), as
+; available from http://www.virtualbox.org. This file is free software;
+; you can redistribute it and/or modify it under the terms of the GNU
+; General Public License (GPL) as published by the Free Software
+; Foundation, in version 2 as it comes in the "COPYING" file of the
+; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+;
+
+;; TODO: make dynamic
+
+VBOX_DMI_TABLE_BASE equ 0E1000h
+VBOX_DMI_TABLE_VER equ 25h
+VBOX_DMI_TABLE_SIZE equ 352
+
+VBOX_SMBIOS_MAJOR_VER equ 2
+VBOX_SMBIOS_MINOR_VER equ 5
+VBOX_SMBIOS_MAXSS equ 0FFh
+
diff --git a/src/VBox/Devices/PC/BIOS/vds.c b/src/VBox/Devices/PC/BIOS/vds.c
new file mode 100644
index 00000000..e4dab0d3
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vds.c
@@ -0,0 +1,118 @@
+/* $Id: vds.c $ */
+/** @file
+ * Utility routines for calling the Virtual DMA Services.
+ */
+
+/*
+ * Copyright (C) 2011-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+
+#include <stdint.h>
+#include "biosint.h"
+#include "vds.h"
+
+typedef struct {
+ uint8_t major; /* VDS spec major version number. */
+ uint8_t minor; /* VDS spec minor version number. */
+ uint16_t flags; /* Capabilities/status flags. */
+ uint16_t prod_no; /* Product number. */
+ uint16_t prod_rev; /* Product revision number. */
+ uint32_t max_buf; /* Maximum buffer size supported. */
+} vds_ver;
+
+int vds_is_present( void )
+{
+ uint8_t __far *vds_flags;
+
+ vds_flags = MK_FP( 0x40, VDS_FLAGS_OFS );
+ return( !!(*vds_flags & VDS_PRESENT) );
+}
+
+int vds_lock_sg( vds_edds __far *edds );
+#pragma aux vds_lock_sg = \
+ "mov ax, 8105h" \
+ "mov dx, 0" \
+ "int 4Bh" \
+ "jc error" \
+ "xor al, al" \
+ "error:" \
+ "cbw" \
+ parm [es di] value [ax];
+
+int vds_unlock_sg( vds_edds __far *edds );
+#pragma aux vds_unlock_sg = \
+ "mov ax, 8106h" \
+ "mov dx, 0" \
+ "int 4Bh" \
+ "jc error" \
+ "xor al, al" \
+ "error:" \
+ "cbw" \
+ parm [es di] value [ax];
+
+
+/*
+ * Convert a real mode 16:16 segmented address to a simple 32-bit
+ * linear address.
+ */
+uint32_t vds_real_to_lin( void __far *ptr )
+{
+ return( ((uint32_t)FP_SEG( ptr ) << 4) + FP_OFF( ptr ) );
+}
+
+/*
+ * Build a VDS-style scatter/gather list, regardless of whether VDS is
+ * present or not. This routine either calls VDS to do the work or
+ * trivially creates the list if no remapping is needed.
+ */
+int vds_build_sg_list( vds_edds __far *edds, void __far *buf, uint32_t len )
+{
+ int rc;
+
+ /* NB: The num_avail field in the EDDS must be set correctly! */
+ edds->region_size = len;
+ edds->offset = vds_real_to_lin( buf );
+ edds->seg_sel = 0; /* Indicates a linear address. */
+ if( vds_is_present() ) {
+ /* VDS is present, use it. */
+ rc = vds_lock_sg( edds );
+ } else {
+ /* No VDS, do it ourselves with one S/G entry. */
+ edds->num_used = 1;
+ edds->u.sg[0].phys_addr = edds->offset;
+ edds->u.sg[0].size = len;
+ rc = VDS_SUCCESS;
+ }
+ return( rc );
+}
+
+/*
+ * Free a VDS-style scatter/gather list, regardless of whether VDS
+ * is present or not.
+ */
+int vds_free_sg_list( vds_edds __far *edds )
+{
+ int rc;
+
+ if( vds_is_present() ) {
+ /* VDS is present, use it. */
+ rc = vds_unlock_sg( edds );
+ } else {
+ /* No VDS, not much to do. */
+ /* We could check here if the EDDS had in fact been built by us.
+ * But if VDS really went away, what can we do about it anyway?
+ */
+ rc = VDS_SUCCESS;
+ }
+ edds->num_used = 0;
+ return( rc );
+}
diff --git a/src/VBox/Devices/PC/BIOS/vds.h b/src/VBox/Devices/PC/BIOS/vds.h
new file mode 100644
index 00000000..e003448c
--- /dev/null
+++ b/src/VBox/Devices/PC/BIOS/vds.h
@@ -0,0 +1,122 @@
+/* $Id: vds.h $ */
+/** @file
+ * Utility routines for calling the Virtual DMA Services.
+ */
+
+/*
+ * Copyright (C) 2006-2019 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef VBOX_INCLUDED_SRC_PC_BIOS_vds_h
+#define VBOX_INCLUDED_SRC_PC_BIOS_vds_h
+#ifndef RT_WITHOUT_PRAGMA_ONCE
+# pragma once
+#endif
+
+/* Virtual DMA Services (VDS) */
+
+#define VDS_FLAGS_OFS 0x7B /* Offset of VDS flag byte in BDA. */
+#define VDS_PRESENT 0x20 /* The VDS present bit. */
+
+/** The DMA descriptor data structure. */
+typedef struct
+{
+ uint32_t region_size; /* Region size in bytes. */
+ uint32_t offset; /* Offset. */
+ uint16_t seg_sel; /* Segment selector. */
+ uint16_t buf_id; /* Buffer ID. */
+ uint32_t phys_addr; /* Physical address. */
+} vds_dds;
+
+
+/** Scatter/gather descriptor entry. */
+typedef struct
+{
+ uint32_t phys_addr; /* Physical address. */
+ uint32_t size; /* Entry size. */
+} vds_sg;
+
+/** The extended DDS for scatter/gather.
+ * Note that the EDDS contains either S/G descriptors or x86-style PTEs.
+ */
+typedef struct
+{
+ uint32_t region_size; /* Region size in bytes. */
+ uint32_t offset; /* Offset. */
+ uint16_t seg_sel; /* Segment or selector. */
+ uint16_t resvd; /* Reserved. */
+ uint16_t num_avail; /* Number of entries available. */
+ uint16_t num_used; /* Number of entries used. */
+ union
+ {
+ vds_sg sg[1]; /* S/G entry array. */
+ uint32_t pte[1]; /* Page table entry array. */
+ } u;
+} vds_edds;
+
+
+/* VDS services */
+
+#define VDS_SERVICE 0x81
+
+#define VDS_GET_VERSION 0x02 /* Get version */
+#define VDS_LOCK_BUFFER 0x03 /* Lock DMA buffer region */
+#define VDS_UNLOCK_BUFFER 0x04 /* Unlock DMA buffer region */
+#define VDS_SG_LOCK 0x05 /* Scatter/gather lock region */
+#define VDS_SG_UNLOCK 0x06 /* Scatter/gather unlock region */
+#define VDS_REQUEST_BUFFER 0x07 /* Request DMA buffer */
+#define VDS_RELEASE_BUFFER 0x08 /* Release DMA buffer */
+#define VDS_BUFFER_COPYIN 0x09 /* Copy into DMA buffer */
+#define VDS_BUFFER_COPYOUT 0x0A /* Copy out of DMA buffer */
+#define VDS_DISABLE_DMA_XLAT 0x0B /* Disable DMA translation */
+#define VDS_ENABLE_DMA_XLAT 0x0C /* Enable DMA translation */
+
+/* VDS error codes */
+
+#define VDS_SUCCESS 0x00 /* No error */
+#define VDS_ERR_NOT_CONTIG 0x01 /* Region not contiguous */
+#define VDS_ERR_BOUNDRY_CROSS 0x02 /* Rgn crossed phys align boundary */
+#define VDS_ERR_CANT_LOCK 0x03 /* Unable to lock pages */
+#define VDS_ERR_NO_BUF 0x04 /* No buffer available */
+#define VDS_ERR_RGN_TOO_BIG 0x05 /* Region too large for buffer */
+#define VDS_ERR_BUF_IN_USE 0x06 /* Buffer currently in use */
+#define VDS_ERR_RGN_INVALID 0x07 /* Invalid memory region */
+#define VDS_ERR_RGN_NOT_LOCKED 0x08 /* Region was not locked */
+#define VDS_ERR_TOO_MANY_PAGES 0x09 /* Num pages greater than table len */
+#define VDS_ERR_INVALID_ID 0x0A /* Invalid buffer ID */
+#define VDS_ERR_BNDRY_VIOL 0x0B /* Buffer boundary violated */
+#define VDS_ERR_INVAL_DMACHN 0x0C /* Invalid DMA channel number */
+#define VDS_ERR_COUNT_OVRFLO 0x0D /* Disable count overflow */
+#define VDS_ERR_COUNT_UNDRFLO 0x0E /* Disable count underflow */
+#define VDS_ERR_UNSUPP_FUNC 0x0F /* Function not supported */
+#define VDS_ERR_BAD_FLAG 0x10 /* Reserved flag bits set in DX */
+
+/* VDS option flags */
+
+#define VDSF_AUTOCOPY 0x02 /* Automatic copy to/from buffer */
+#define VDSF_NOALLOC 0x04 /* Disable auto buffer allocation */
+#define VDSF_NOREMAP 0x08 /* Disable auto remap feature */
+#define VDSF_NO64K 0x10 /* Region can't cross 64K boundary */
+#define VDSF_NO128K 0x20 /* Region can't cross 128K boundary */
+#define VDSF_COPYTBL 0x40 /* Copy page table for S/G remap */
+#define VDSF_NPOK 0x80 /* Allow non-present pages for S/G */
+
+/* Higher level routines for utilizing VDS. */
+
+int vds_build_sg_list( vds_edds __far *edds, void __far *buf, uint32_t len );
+int vds_free_sg_list( vds_edds __far *edds );
+
+/* Helper for translating 16:16 real mode addresses to 32-bit linear. */
+
+uint32_t vds_real_to_lin( void __far *ptr );
+
+#endif /* !VBOX_INCLUDED_SRC_PC_BIOS_vds_h */
+